Telekinetic Gloves (#18205)

* TK gloves

* fixes

* spans

* research

---------

Co-authored-by: Cameron Lennox <killer65311@gmail.com>
This commit is contained in:
Will
2025-08-16 15:19:11 -04:00
committed by GitHub
co-authored by Cameron Lennox
parent b7cd21512b
commit c229f88c3a
8 changed files with 121 additions and 5 deletions
@@ -0,0 +1,71 @@
/obj/item/clothing/gloves/telekinetic
desc = "Gloves with a built in telekinesis module, allows for remote interaction with small objects."
name = "kinesis assistance module"
icon_state = "regen"
item_state = "graygloves"
var/use_power_amount = 12
origin_tech = list(TECH_ENGINEERING = 4, TECH_BLUESPACE = 4)
/obj/item/clothing/gloves/telekinetic/Initialize(mapload)
. = ..()
cell = new /obj/item/cell/device(src)
/obj/item/clothing/gloves/telekinetic/proc/has_grip_power()
if(cell && cell.charge >= use_power_amount)
return TRUE
return FALSE
/obj/item/clothing/gloves/telekinetic/proc/use_grip_power(var/mob/user,var/play_sound)
if(cell)
cell.checked_use(use_power_amount)
if(play_sound)
if(cell.charge < use_power_amount)
to_chat(user,span_danger("\The [src] bwoop as it runs out of power."))
playsound(src,'sound/machines/synth_no.ogg')
else
playsound(src,'sound/machines/generator/generator_end.ogg',70,1)
/obj/item/clothing/gloves/telekinetic/attack_hand(mob/user as mob)
if(user.get_inactive_hand() == src)
if(cell)
cell.update_icon()
user.put_in_hands(cell)
cell = null
to_chat(user, span_notice("You remove the cell from the [src]."))
playsound(src, 'sound/machines/button.ogg', 30, 1, 0)
return
..()
else
return ..()
/obj/item/clothing/gloves/telekinetic/attackby(obj/item/W, mob/user as mob)
if(istype(W, /obj/item/cell))
if(istype(W, /obj/item/cell/device))
if(!cell)
user.drop_item()
W.loc = src
cell = W
to_chat(user, span_notice("You install a cell in \the [src]."))
playsound(src, 'sound/machines/button.ogg', 30, 1, 0)
else
to_chat(user, span_warning("\The [src] already has a cell."))
else
to_chat(user, span_warning("\The [src] cannot use that type of cell."))
else
..()
/obj/item/clothing/gloves/telekinetic/examine(mob/user)
. = ..()
if(cell)
. += span_info("\The [src] has a \the [cell] attached.")
if(cell.charge <= cell.maxcharge*0.25)
. += span_warning("It appears to have a low amount of power remaining.")
else if(cell.charge > cell.maxcharge*0.25 && cell.charge <= cell.maxcharge*0.5)
. += span_notice("It appears to have an average amount of power remaining.")
else if(cell.charge > cell.maxcharge*0.5 && cell.charge <= cell.maxcharge*0.75)
. += span_info("It appears to have an above average amount of power remaining.")
else if(cell.charge > cell.maxcharge*0.75 && cell.charge <= cell.maxcharge)
. += span_info("It appears to have a high amount of power remaining.")
else
. += span_warning("\The [src] has an empty powercell slot.")
@@ -874,3 +874,15 @@
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/telekinetic_gloves
name = "Kinesis Assistance Module"
id = "tk_gloves"
// req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_BLUESPACE = 4)
build_type = PROTOLATHE
materials = list(MAT_VERDANTIUM = 1000, MAT_SILVER = 300, MAT_PLASTEEL = 1000)
build_path = /obj/item/clothing/gloves/telekinetic
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
@@ -103,3 +103,14 @@
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS)
announce_channels = list(CHANNEL_SCIENCE)
/datum/techweb_node/telekinetics
id = TECHWEB_NODE_TELEKINETIC_RESEARCH
display_name = "Applied Telekinetics Research"
description = "Altering the physical behavior of objects to allow remote interaction and movement."
prereq_ids = list(TECHWEB_NODE_APPLIED_BLUESPACE,TECHWEB_NODE_CYBER_IMPLANTS)
design_ids = list(
"tk_gloves",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS)
announce_channels = list(CHANNEL_SCIENCE)