From 5915d7b3f356d7c510c9d019a69b160e5cf1f6e7 Mon Sep 17 00:00:00 2001 From: UltraBigRat <111320234+UltraBigRat@users.noreply.github.com> Date: Mon, 25 Aug 2025 15:36:59 +0300 Subject: [PATCH] The Traitorous Hardsuitening (#21225) * Added empty versions of most hardsuits as regular uplink items. Most regular combat ones costing 8 BC/TC same as NT hardsuit, with some exceptions like breachers and vaurca hardsuits costing 10 TC. * Added combat actuator module to the uplink. * Added BC costs to utility modules in the uplink. * Hardsuit thermals module cost upped to the cost of regular thermals. Feedback thread: https://forums.aurorastation.org/topic/22611-the-traitorous-hardsuitening/#comment-182136 Overall hopefully will make hardsuits easier to get for solo antags, since they can usually only be bought as part of 35 TC group bundles. These are also unequipped versions so all modules have to be bought yourself. Should also help provide for those factions that don't otherwise have faction-specific armor outside of paper-thin voidsuits, like Einstein Engines. Vast majority of our hardsuits and the ones here are just reskins of the regular combat hardsuit, with heavy armor stats. The ones that have higher armor which here are the Breacher, Redsnout and Vaurca suits have been set to 10 TC to allow buying them with solo group loadouts that are the only source of their faction equipment. They are relatively powerful suits, but I hope we can trust people to not abuse them, and if we cant they can always be made pricier or removed. Screenshot 2025-08-21 212603 --------- Signed-off-by: UltraBigRat <111320234+UltraBigRat@users.noreply.github.com> Co-authored-by: Big Rat Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com> --- aurorastation.dme | 2 +- code/datums/uplink/hardsuit_modules.dm | 58 ------- code/datums/uplink/hardsuits_and_modules.dm | 152 ++++++++++++++++++ code/datums/uplink/uplink_categories.dm | 2 +- .../clothing/spacesuits/rig/suits/merc.dm | 6 + html/changelogs/traitoroushardsuitening.yml | 60 +++++++ 6 files changed, 220 insertions(+), 60 deletions(-) delete mode 100644 code/datums/uplink/hardsuit_modules.dm create mode 100644 code/datums/uplink/hardsuits_and_modules.dm create mode 100644 html/changelogs/traitoroushardsuitening.yml diff --git a/aurorastation.dme b/aurorastation.dme index 1d1f4fbf93a..2fa390aa9ac 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -594,7 +594,7 @@ #include "code\datums\uplink\exosuit_equipment.dm" #include "code\datums\uplink\gear loadout.dm" #include "code\datums\uplink\grenades.dm" -#include "code\datums\uplink\hardsuit_modules.dm" +#include "code\datums\uplink\hardsuits_and_modules.dm" #include "code\datums\uplink\highly visible and dangerous weapons.dm" #include "code\datums\uplink\implants.dm" #include "code\datums\uplink\martial_arts.dm" diff --git a/code/datums/uplink/hardsuit_modules.dm b/code/datums/uplink/hardsuit_modules.dm deleted file mode 100644 index 82535352f1b..00000000000 --- a/code/datums/uplink/hardsuit_modules.dm +++ /dev/null @@ -1,58 +0,0 @@ -/******************* -* Hardsuit Modules * -*******************/ -/datum/uplink_item/item/hardsuit_modules - category = /datum/uplink_category/hardsuit_modules - -/datum/uplink_item/item/hardsuit_modules/thermal - name = "Thermal Scanner" - telecrystal_cost = 1 - path = /obj/item/rig_module/vision/thermal - -/datum/uplink_item/item/hardsuit_modules/energy_net - name = "Net Projector" - telecrystal_cost = 3 - path = /obj/item/rig_module/fabricator/energy_net - -/datum/uplink_item/item/hardsuit_modules/ewar_voice - name = "Electrowarfare Suite and Voice Synthesiser" - telecrystal_cost = 1 - path = /obj/item/storage/box/syndie_kit/ewar_voice - -/datum/uplink_item/item/hardsuit_modules/maneuvering_jets - name = "Maneuvering Jets" - telecrystal_cost = 1 - path = /obj/item/rig_module/maneuvering_jets - -/datum/uplink_item/item/hardsuit_modules/egun - name = "Mounted Energy Gun" - telecrystal_cost = 6 - path = /obj/item/rig_module/mounted/egun - -/datum/uplink_item/item/hardsuit_modules/power_sink - name = "Power Sink" - telecrystal_cost = 2 - path = /obj/item/rig_module/power_sink - -/datum/uplink_item/item/hardsuit_modules/laser_canon - name = "Mounted Laser Cannon" - telecrystal_cost = 8 - path = /obj/item/rig_module/mounted - -/datum/uplink_item/item/tools/rig_cooling_unit - name = "mounted suit cooling unit" - telecrystal_cost = 1 - path = /obj/item/rig_module/cooling_unit - desc = "A mounted suit cooling unit for use with hardsuits." - -/datum/uplink_item/item/hardsuit_modules/recharger - name = "Mounted Weapon Recharge Module" - telecrystal_cost = 6 - path = /obj/item/rig_module/recharger - desc = "A mounted system for recharging energy weapons." - -/datum/uplink_item/item/hardsuit_modules/ai_container - name = "Integrated Intelligence System" - telecrystal_cost = 1 - path = /obj/item/rig_module/ai_container - desc = "A hardsuit module which allows for a support intelligence to be installed." diff --git a/code/datums/uplink/hardsuits_and_modules.dm b/code/datums/uplink/hardsuits_and_modules.dm new file mode 100644 index 00000000000..53a941a4da9 --- /dev/null +++ b/code/datums/uplink/hardsuits_and_modules.dm @@ -0,0 +1,152 @@ +/******************* +* Hardsuit Modules * +*******************/ +/datum/uplink_item/item/hardsuit_modules + category = /datum/uplink_category/hardsuit_modules + +/datum/uplink_item/item/hardsuit_modules/thermal + name = "Thermal Scanner" + telecrystal_cost = 2 + path = /obj/item/rig_module/vision/thermal + +/datum/uplink_item/item/hardsuit_modules/energy_net + name = "Net Projector" + telecrystal_cost = 3 + path = /obj/item/rig_module/fabricator/energy_net + +/datum/uplink_item/item/hardsuit_modules/ewar_voice + name = "Electrowarfare Suite and Voice Synthesiser" + telecrystal_cost = 1 + bluecrystal_cost = 1 // Voice changer and partial agent id as a module + path = /obj/item/storage/box/syndie_kit/ewar_voice + +/datum/uplink_item/item/hardsuit_modules/maneuvering_jets + name = "Maneuvering Jets" + telecrystal_cost = 1 + bluecrystal_cost = 1 + path = /obj/item/rig_module/maneuvering_jets + +/datum/uplink_item/item/hardsuit_modules/egun + name = "Mounted Energy Gun" + telecrystal_cost = 6 + path = /obj/item/rig_module/mounted/egun + +/datum/uplink_item/item/hardsuit_modules/power_sink + name = "Power Sink" + telecrystal_cost = 2 + path = /obj/item/rig_module/power_sink + +/datum/uplink_item/item/hardsuit_modules/laser_canon + name = "Mounted Laser Cannon" + telecrystal_cost = 8 + path = /obj/item/rig_module/mounted + +/datum/uplink_item/item/tools/rig_cooling_unit + name = "mounted suit cooling unit" + telecrystal_cost = 1 + bluecrystal_cost = 1 // Just EVA stuff for IPCs + path = /obj/item/rig_module/cooling_unit + desc = "A mounted suit cooling unit for use with hardsuits." + +/datum/uplink_item/item/hardsuit_modules/recharger + name = "Mounted Weapon Recharge Module" + telecrystal_cost = 6 + path = /obj/item/rig_module/recharger + desc = "A mounted system for recharging energy weapons." + +/datum/uplink_item/item/hardsuit_modules/ai_container + name = "Integrated Intelligence System" + telecrystal_cost = 1 + bluecrystal_cost = 1 // Niche utility item. + path = /obj/item/rig_module/ai_container + desc = "A hardsuit module which allows for a support intelligence to be installed." + +/datum/uplink_item/item/hardsuit_modules/combat_actuators // These come stock with pretty much all equipped suits. + name = "Combat Actuators" + telecrystal_cost = 3 + path = /obj/item/rig_module/actuators/combat + desc = "Actuators that allow a hardsuit to jump long distances, and to fall safely." + +/datum/uplink_item/item/hardsuit_modules/suit/scc // These are all empty suits with heavy armor stats, that essentially are overall reskins of each other. With sometimes some minor differences. + name = "SCC Combat Hardsuit" + telecrystal_cost = 8 + bluecrystal_cost = 8 + path = /obj/item/rig/combat + desc = "A sleek and dangerous hardsuit for active combat. This one is a Stellar Corporate Conglomerate design in color scheme and make. Only wearable by humans and skrell." + +/datum/uplink_item/item/hardsuit_modules/suit/sol + name = "Solarian Vampire Hardsuit" + telecrystal_cost = 8 + bluecrystal_cost = 8 + path = /obj/item/rig/military + desc = "A Zavodskoi-manufactured hardsuit designed for the Solarian Armed Forces, the Type-9 \"Vampire\" is the suit issued to Alliance military specialists and team leaders. Only wearable by humans." + +/datum/uplink_item/item/hardsuit_modules/suit/coalition + name = "Coalition Gunslinger Hardsuit" + telecrystal_cost = 8 + bluecrystal_cost = 8 + path = /obj/item/rig/gunslinger + desc = "A favorite of the Frontier Rangers, the Gunslinger suit is a Xanan-designed hardsuit meant to provide the user absolute situational awareness, while remaining sturdy under fire. Only wearable by humans, tajara, skrell and non-industrial IPCs." + +/datum/uplink_item/item/hardsuit_modules/suit/eridani + name = "Eridani Strike Hardsuit" + telecrystal_cost = 8 + bluecrystal_cost = 8 + path = /obj/item/rig/strike + desc = "An expensive hardsuit utilized by Eridani security contractors to field heavy weapons and coordinate non-lethal takedowns directly. Usually seen spearheading police raids. Only wearable by humans." + +/datum/uplink_item/item/hardsuit_modules/suit/elyra + name = "Elyran Battlesuit" + telecrystal_cost = 8 + bluecrystal_cost = 8 + path = /obj/item/rig/elyran + desc = "An advanced Elyran hardsuit specialized in scorched earth tactics. Only wearable by humans." + +/datum/uplink_item/item/hardsuit_modules/suit/dominia + name = "Dominian Jinxiang Hardsuit" + telecrystal_cost = 8 + bluecrystal_cost = 8 + path = /obj/item/rig/jinxiang + desc = "An off-shoot of the core Bunker Suit design, utilized by the Imperial Dominian military and painted accordingly. This is a powerful suit specializing in melee confrontations. Only wearable by humans and unathi." + +/datum/uplink_item/item/hardsuit_modules/suit/tcaf + name = "TCAF Legionnaire Hardsuit" + telecrystal_cost = 8 + bluecrystal_cost = 8 + path = /obj/item/rig/combat/legionnaire + desc = "An armored combat hardsuit in the blue colors of the Tau Ceti Armed Forces. The red shoulder pad dignifying the individual as a member of rank. \ + Its golden visor reflecting the shining liberty the TCAF stands for. Only wearable by humans, Zeng-hu IPCs and Bishop IPCs." + +/datum/uplink_item/item/hardsuit_modules/suit/xanu + name = "Xanan dNAXS-52 Hardsuit" + telecrystal_cost = 8 + bluecrystal_cost = 8 + path = /obj/item/rig/xanu + desc = "The dNAXS-52 combat hardsuit is designed for the All-Xanu Spacefleet's interstellar infantry. It is specially designed for boarding operations, close quarters combat, and demolitions. Only wearable by humans and non-industrial IPCs." + +/datum/uplink_item/item/hardsuit_modules/suit/crimson + name = "Crimson Hardsuit" + telecrystal_cost = 8 + bluecrystal_cost = 8 + path = /obj/item/rig/merc/trulyempty + desc = "A blood-red hardsuit featuring some fairly illegal technology. Made by Hammertail, and popular on the black market. Only wearable by humans, unathi, skrell, tajara and non-industrial IPCs." + +/datum/uplink_item/item/hardsuit_modules/suit/einstein + name = "Einstein Engines Paragon Hardsuit" + telecrystal_cost = 8 + bluecrystal_cost = 8 + path = /obj/item/rig/merc/einstein/empty + desc = "A back mounted control mechanism of an Einstein Engines hardsuit. This model is issued to the leaders of security teams within the corporation. Wearable only by humans, industrial, zeng-hu and bishop IPCs." + +/datum/uplink_item/item/hardsuit_modules/suit/qukala + name = "Qukala Assault Hardsuit" + telecrystal_cost = 8 + bluecrystal_cost = 8 + path = /obj/item/rig/skrell + desc = "A Nralakk-manufactured combat hardsuit, designed for use by elite operatives of the Qukala. Due to their expense and classified design, these suits are rarely seen outside of Qukala hands. Only wearable by skrell." + +/datum/uplink_item/item/hardsuit_modules/suit/vaurca + name = "Vaurca Combat Exoskeleton" + 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." diff --git a/code/datums/uplink/uplink_categories.dm b/code/datums/uplink/uplink_categories.dm index 29cc28a0e87..edee2fcdbe8 100644 --- a/code/datums/uplink/uplink_categories.dm +++ b/code/datums/uplink/uplink_categories.dm @@ -52,7 +52,7 @@ name = "Medical" /datum/uplink_category/hardsuit_modules - name = "Hardsuit Modules" + name = "Hardsuits and Modules" /datum/uplink_category/services name = "Services" diff --git a/code/modules/clothing/spacesuits/rig/suits/merc.dm b/code/modules/clothing/spacesuits/rig/suits/merc.dm index c3bbe4c5cbb..763552fa811 100644 --- a/code/modules/clothing/spacesuits/rig/suits/merc.dm +++ b/code/modules/clothing/spacesuits/rig/suits/merc.dm @@ -52,6 +52,9 @@ /obj/item/rig_module/actuators/combat // What the dude above me said. ) +/obj/item/rig/merc/trulyempty + initial_modules = list() + /obj/item/rig/merc/ninja initial_modules = list( /obj/item/rig_module/mounted, @@ -155,3 +158,6 @@ /obj/item/rig_module/ai_container, /obj/item/rig_module/chem_dispenser/combat ) + +/obj/item/rig/merc/einstein/empty + initial_modules = list() diff --git a/html/changelogs/traitoroushardsuitening.yml b/html/changelogs/traitoroushardsuitening.yml new file mode 100644 index 00000000000..0bd1c63e249 --- /dev/null +++ b/html/changelogs/traitoroushardsuitening.yml @@ -0,0 +1,60 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# - (fixes bugs) +# wip +# - (work in progress) +# qol +# - (quality of life) +# soundadd +# - (adds a sound) +# sounddel +# - (removes a sound) +# rscadd +# - (adds a feature) +# rscdel +# - (removes a feature) +# imageadd +# - (adds an image or sprite) +# imagedel +# - (removes an image or sprite) +# spellcheck +# - (fixes spelling or grammar) +# experiment +# - (experimental change) +# balance +# - (balance changes) +# code_imp +# - (misc internal code change) +# refactor +# - (refactors code) +# config +# - (makes a change to the config files) +# admin +# - (makes changes to administrator tools) +# server +# - (miscellaneous changes to server) +################################# + +# Your name. +author: UltraBigRat + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Adds empty versions of most hardsuits to be buyable in the uplink." + - rscadd: "Combat Actuator module to the uplink, slight price rebalances to uplink modules." + - rscadd: "Changed hardsuit modules section of the uplink, into Hardsuits and Modules."