diff --git a/code/datums/uplink/ninja_modules.dm b/code/datums/uplink/ninja_modules.dm index 7440408a49d..f988d94ff64 100644 --- a/code/datums/uplink/ninja_modules.dm +++ b/code/datums/uplink/ninja_modules.dm @@ -50,7 +50,7 @@ name = "EMAG Hand Module" desc = "A module that allows the user to apply an EMAG effect to the targeted item." item_cost = 5 - path = /obj/item/rig_module/emag_hand + path = /obj/item/rig_module/device/emag_hand /datum/uplink_item/item/ninja_modules/chem_injector name = "Chemical Injector" diff --git a/code/modules/clothing/spacesuits/rig/modules/ninja.dm b/code/modules/clothing/spacesuits/rig/modules/ninja.dm index df856d5968a..fe051d0240b 100644 --- a/code/modules/clothing/spacesuits/rig/modules/ninja.dm +++ b/code/modules/clothing/spacesuits/rig/modules/ninja.dm @@ -269,50 +269,13 @@ /obj/item/rig_module/emergency_powergenerator/proc/reset_cooldown() cooldown = 0 -/obj/item/rig_module/emag_hand - name = "EMAG integrated hand" - desc = "A complex uprade that allows the user to touch things with their hand and apply an EMAG effect. High power cost." +/obj/item/rig_module/device/emag_hand + name = "integrated cryptographic sequencer" + desc = "A complex uprade that allows the user to apply an EMAG effect to certain objects. High power cost." use_power_cost = 100 - usable = 0 - toggleable = 1 - activates_on_touch = 1 - disruptive = 0 - - activate_string = "Enable EMAG" - deactivate_string = "Disable EMAG" - - interface_name = "enable EMAG" - interface_desc = "A complex uprade that allows the user to touch things with their hand and apply an EMAG effect. High power cost." - var/atom/interfaced_with module_cooldown = 4800 -/obj/item/rig_module/emag_hand/activate() - if(!..()) - return + interface_name = "integrated cryptographic sequencer" + interface_desc = "A complex uprade that allows the user to apply an EMAG effect to certain objects. High power cost." -/obj/item/rig_module/emag_hand/deactivate() - if(!..()) - return - -/obj/item/rig_module/emag_hand/engage(atom/target) - - if(!..()) - return 0 - - if(interfaced_with) - return 0 - - if(!target) - return 1 - - if(!target.Adjacent(holder.wearer)) - return 0 - - holder.wearer << "You stick your hand on [target] shorting out some of its circuits!" - interfaced_with = target - target.emag_act(user, src) - addtimer(CALLBACK(src, /obj/item/rig_module/emag_hand/proc/reset_interface, 2)) - return 1 - -/obj/item/rig_module/emag_hand/proc/reset_interface() - interfaced_with = null + device_type = /obj/item/weapon/robot_emag \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/rig/modules/utility.dm b/code/modules/clothing/spacesuits/rig/modules/utility.dm index 2e307327807..ec17d7c20a9 100644 --- a/code/modules/clothing/spacesuits/rig/modules/utility.dm +++ b/code/modules/clothing/spacesuits/rig/modules/utility.dm @@ -635,3 +635,29 @@ H.forceMove(leapEnd) return 1 + +/obj/item/rig_module/cooling_unit + name = "mounted cooling unit" + toggleable = 1 + origin_tech = list(TECH_MAGNET = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3) + interface_name = "mounted cooling unit" + interface_desc = "A heat sink with liquid cooled radiator." + icon_state = "suitcooler" + var/charge_consumption = 1 + var/max_cooling = 12 + var/thermostat = T20C + +/obj/item/rig_module/cooling_unit/process() + if(!active) + return passive_power_cost + + var/mob/living/carbon/human/H = holder.wearer + + var/temp_adj = min(H.bodytemperature - thermostat, max_cooling) + + if (temp_adj < 0.5) + return passive_power_cost + + H.bodytemperature -= temp_adj + active_power_cost = round((temp_adj/max_cooling)*charge_consumption) + return active_power_cost \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/rig/rig_attackby.dm b/code/modules/clothing/spacesuits/rig/rig_attackby.dm index 0f71ca33bae..817f6dc6c67 100644 --- a/code/modules/clothing/spacesuits/rig/rig_attackby.dm +++ b/code/modules/clothing/spacesuits/rig/rig_attackby.dm @@ -169,6 +169,16 @@ installed_modules -= removed update_icon() + else if(istype(W,/obj/item/stack/nanopaste)) //EMP repair + var/obj/item/stack/S = W + if(malfunctioning || malfunction_delay) + if(S.use(1)) + to_chat(user, "You pour some of \the [S] over \the [src]'s control circuitry.") + malfunctioning = 0 + malfunction_delay = 0 + else + to_chat(user, "\The [S] is empty!") + return // If we've gotten this far, all we have left to do before we pass off to root procs diff --git a/code/modules/clothing/spacesuits/rig/rig_pieces.dm b/code/modules/clothing/spacesuits/rig/rig_pieces.dm index 871ecad2f01..64c71ad4624 100644 --- a/code/modules/clothing/spacesuits/rig/rig_pieces.dm +++ b/code/modules/clothing/spacesuits/rig/rig_pieces.dm @@ -16,7 +16,7 @@ "Skrell" = 'icons/mob/species/skrell/helmet.dmi', "Unathi" = 'icons/mob/species/unathi/helmet.dmi' ) - species_restricted = list("exclude","Diona","Xenomorph","Vaurca","Golem") + species_restricted = list("exclude","Diona","Xenomorph","Vaurca","Golem", "Vox") /obj/item/clothing/gloves/rig name = "gauntlets" @@ -51,7 +51,7 @@ resilience = 0.2 can_breach = 1 sprite_sheets = list("Tajara" = 'icons/mob/species/tajaran/suit.dmi',"Unathi" = 'icons/mob/species/unathi/suit.dmi') - species_restricted = list("exclude","Diona","Xenomorph","Vaurca","Golem") + species_restricted = list("exclude","Diona","Xenomorph","Vaurca","Golem", "Vox") supporting_limbs = list() //TODO: move this to modules diff --git a/code/modules/research/mechfab_designs.dm b/code/modules/research/mechfab_designs.dm index f31d9ecbb10..fd70777dd8e 100644 --- a/code/modules/research/mechfab_designs.dm +++ b/code/modules/research/mechfab_designs.dm @@ -788,3 +788,11 @@ req_tech = list(TECH_MATERIAL = 3, TECH_POWER = 4, TECH_COMBAT = 4, TECH_MAGNET = 3) materials = list(DEFAULT_WALL_MATERIAL= 7000, "glass"= 2250, "uranium"= 3250, "gold"= 2500) build_path = /obj/item/rig_module/mounted/egun + +/datum/design/hardsuitmodules/cooling_module + name = "mounted cooling unit" + desc = "A heat sink with liquid cooled radiator." + id = "cooling_module" + req_tech = list(TECH_MATERIAL = 2, TECH_POWER = 3, TECH_ENGINEERING = 3) + materials = list(DEFAULT_WALL_MATERIAL= 7000, "glass"= 5500) + build_path = /obj/item/rig_module/cooling_unit \ No newline at end of file diff --git a/html/changelogs/alberyk-rig.yml b/html/changelogs/alberyk-rig.yml new file mode 100644 index 00000000000..31383cda7fd --- /dev/null +++ b/html/changelogs/alberyk-rig.yml @@ -0,0 +1,7 @@ +author: Alberyk +delete-after: True + +changes: + - rscadd: "You can now repair emp affected hardsuits with Nanopaste." + - rscadd: "Added a hardsuit mounted cooling module, printable from robotics." + - bugfix: "The mounted emag module should work properly now." diff --git a/icons/mob/species/tajaran/suit.dmi b/icons/mob/species/tajaran/suit.dmi index 46a8df8b916..b1cfbd5ec5b 100644 Binary files a/icons/mob/species/tajaran/suit.dmi and b/icons/mob/species/tajaran/suit.dmi differ diff --git a/icons/obj/rig_modules.dmi b/icons/obj/rig_modules.dmi index 7c3d046069b..3aace212773 100644 Binary files a/icons/obj/rig_modules.dmi and b/icons/obj/rig_modules.dmi differ