From e8d1eedc11b8771fd4e516ee345bd926f61c2f40 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Mon, 18 May 2026 15:21:13 -0400 Subject: [PATCH] Zavod Heavy Hardsuit (#22397) This PR adds a new very menacing Zavodskoi hardsuit for the uplink. image image ### Asset Licenses The following assets that **have not** been created by myself are included in this PR: | Path | Original Author | License | | icons/obj/item/clothing/rig/zavodheavy.dmi | rem_ratsuken (discord) | CC-BY-SA-3.0 | --- code/datums/uplink/hardsuits_and_modules.dm | 8 +++ .../clothing/spacesuits/rig/suits/combat.dm | 68 +++++++++++++++++- .../hellfirejag-zavod-heavy-hardsuit.yml | 4 ++ icons/obj/item/clothing/rig/zavodheavy.dmi | Bin 0 -> 6349 bytes 4 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 html/changelogs/hellfirejag-zavod-heavy-hardsuit.yml create mode 100644 icons/obj/item/clothing/rig/zavodheavy.dmi diff --git a/code/datums/uplink/hardsuits_and_modules.dm b/code/datums/uplink/hardsuits_and_modules.dm index 9ae7a021802..b2458049dd3 100644 --- a/code/datums/uplink/hardsuits_and_modules.dm +++ b/code/datums/uplink/hardsuits_and_modules.dm @@ -227,3 +227,11 @@ telecrystal_cost = 10 path = /obj/item/rig/vaurca/minimal desc = "An ancient piece of equipment from a bygone age, This highly advanced Vaurcan technology rarely sees use outside of a battlefield. Only wearable by vaurca." + +/datum/uplink_item/item/hardsuit_modules/suit/zavod_heavy + name = "Zavodskoi Reaper Hardsuit" + telecrystal_cost = 8 + bluecrystal_cost = 8 + path = /obj/item/rig/combat/zavod_heavy + desc = "A heavily armored hardsuit manufactured and used by Zavodskoi operatives, the K2-98Z \"Reaper\" is employed by Zavodskoi's elite asset protection, as well as in corporate-sponsored police forces. " \ + + "Only wearable by humans." diff --git a/code/modules/clothing/spacesuits/rig/suits/combat.dm b/code/modules/clothing/spacesuits/rig/suits/combat.dm index 2c5b3d6e9b3..f05069fa3e3 100644 --- a/code/modules/clothing/spacesuits/rig/suits/combat.dm +++ b/code/modules/clothing/spacesuits/rig/suits/combat.dm @@ -31,7 +31,6 @@ light_overlay = "helmet_light_dual_cyan" /obj/item/rig/combat/equipped - initial_modules = list( /obj/item/rig_module/mounted, /obj/item/rig_module/vision/thermal, @@ -634,3 +633,70 @@ /obj/item/rig_module/cooling_unit, /obj/item/rig_module/recharger ) + +/obj/item/rig/combat/zavod_heavy + name = "reaper hardsuit control module" + desc = "A heavily armored hardsuit manufactured and used by Zavodskoi operatives, the K2-98Z \"Reaper\" is employed by Zavodskoi's elite asset protection, as well as in corporate-sponsored police forces." + desc_extended = "Borrowing design cues from their other popular hardsuits, such as those within the Solarian military, the Reaper was originally commissioned by the police chief in Rahe, " \ + + "Vysoka for usage by point men in door-kicking operations and other close quarters assignments. " \ + + "Corporate campaigns have all but normalized the motto \"Fear The Reaper\" as an attempt to increase sales—an attempt that was wildly successful. " \ + + "Nowadays, they see extensive use in high-risk cargo vessels, with specialists directly attached to Zavodskoi VIPs, and joint operations with the Stellar Corporate Conglomerate." + icon = 'icons/obj/item/clothing/rig/zavodheavy.dmi' + icon_state = "zavod_heavy" + icon_supported_species_tags = null + suit_type = "reaper hardsuit" + allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/handcuffs) + species_restricted = list(BODYTYPE_HUMAN) + chest_type = /obj/item/clothing/suit/space/rig/zavod_heavy + helm_type = /obj/item/clothing/head/helmet/space/rig/combat/zavod_heavy + allowed_module_types = MODULE_GENERAL | MODULE_LIGHT_COMBAT | MODULE_HEAVY_COMBAT | MODULE_SPECIAL | MODULE_MEDICAL | MODULE_UTILITY + +/obj/item/rig/combat/zavod_heavy/equipped + initial_modules = list( + /obj/item/rig_module/actuators/combat, + /obj/item/rig_module/chem_dispenser/combat, + /obj/item/rig_module/grenade_launcher/frag, + /obj/item/rig_module/vision/nvg + ) + +/obj/item/clothing/suit/space/rig/zavod_heavy + var/lights_active = FALSE + +/obj/item/clothing/suit/space/rig/zavod_heavy/get_mob_overlay(mob/living/carbon/human/H, mob_icon, mob_state, slot) + var/image/I = ..() + if(slot != slot_wear_suit_str) + return I + + var/obj/item/rig/rigcontroller = H.get_equipped_item(slot_back) + if(!istype(rigcontroller, /obj/item/rig) || rigcontroller.offline) + // Turn off the suit lights + if (lights_active) + set_light_on(FALSE) + lights_active = FALSE + return I + + if (!lights_active && !rigcontroller.sealing) + set_light_range_power_color(0.3, 0.2, "#ff0800") + set_light_on(TRUE) + lights_active = TRUE + + var/image/emissive_overlay = emissive_appearance(mob_icon, "zavod_heavy_sealed_su-emissive") + I.AddOverlays(emissive_overlay) + return I + +/obj/item/clothing/head/helmet/space/rig/combat/zavod_heavy + light_overlay = "helmet_light" + light_color = "#ff0800" + +/obj/item/clothing/head/helmet/space/rig/combat/zavod_heavy/get_mob_overlay(mob/living/carbon/human/H, mob_icon, mob_state, slot) + var/image/I = ..() + if(slot != slot_head_str) + return I + + var/obj/item/rig/rigcontroller = H.get_equipped_item(slot_back) + if(!istype(rigcontroller, /obj/item/rig) || rigcontroller.offline) + return I + + var/image/emissive_overlay = emissive_appearance(mob_icon, "zavod_heavy_sealed_he-emissive") + I.AddOverlays(emissive_overlay) + return I diff --git a/html/changelogs/hellfirejag-zavod-heavy-hardsuit.yml b/html/changelogs/hellfirejag-zavod-heavy-hardsuit.yml new file mode 100644 index 00000000000..be2465e7c87 --- /dev/null +++ b/html/changelogs/hellfirejag-zavod-heavy-hardsuit.yml @@ -0,0 +1,4 @@ +author: Hellfirejag and Remratsuken +delete-after: True +changes: + - rscadd: "Added a new Zavodskoi Heavy Hardsuit to the uplink." diff --git a/icons/obj/item/clothing/rig/zavodheavy.dmi b/icons/obj/item/clothing/rig/zavodheavy.dmi new file mode 100644 index 0000000000000000000000000000000000000000..16b06b3797298db1580f14704c24929ec25b77f3 GIT binary patch literal 6349 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