CMO's very own modsuit - 'Salvation' (#31941)

* sprites and theme

* searchlight module

* suit storages

* trader spawner

* actual plating item

* misc updates

* species sprite hell

* linter

* module description

* Now protects contents from radiation

* CBRN module

* removes extra comment

* nerfs default rad protection to 75%

* clothing icon changes

* linter.

* removes searchlight module

* komrad request - removes fireproof, keeps high fire resistance

* fixes backside sprite
This commit is contained in:
MixityMaxity
2026-05-10 08:06:54 +00:00
committed by GitHub
parent 518140e03c
commit 483d62b942
20 changed files with 128 additions and 2 deletions
+4
View File
@@ -93,6 +93,10 @@
theme = /datum/mod_theme/research
materials = list(MAT_METAL = 6000, MAT_GLASS = 1000, MAT_URANIUM = 2000, MAT_PLASMA = 1000)
/obj/item/mod/construction/plating/salvation
theme = /datum/mod_theme/salvation
materials = list(MAT_METAL = 6000, MAT_GLASS = 1000, MAT_URANIUM = 2000, MAT_PLASMA = 1000)
#define START_STEP "start"
#define CORE_STEP "core"
#define SCREWED_CORE_STEP "screwed_core"
+62
View File
@@ -558,6 +558,68 @@
/obj/item/mod/armor/mod_theme_rescue
armor = list(MELEE = 20, BULLET = 20, LASER = 5, ENERGY = 5, BOMB = 10, RAD = 250, FIRE = 150, ACID = 150) //Extra melee / bullet armor for if they get caught in a fight. Of course, no laser armor.
/datum/mod_theme/salvation
name = "'Salvation' hazard"
desc = "An experimental medical suit designed for emergency care in conflict zones and extreme environmental hazards."
extended_desc = "An experimental upgrade to the Apollo and Valkyrie lines, the D-142E 'Salvation' is a bulky, moderately-armored medical modsuit designed by DeForest Medical Corperation. \
Sacrificing the light-weight design of previous iterations for additional protection from both weapons and environmental factors, while boasting a more powerful core and servos to partially offset the excess weight. \
The suit's armor has seen even more improvements with a careful mix of composite and standard ballistic armor, along with an advanced CBRN active protection system. \
The experimental nature of this suit makes it exclusive to the most practical and wealthy positions outside DeForest testing."
default_skin = "salvation"
armor_type_1 = /obj/item/mod/armor/mod_theme_salvation
resistance_flags = ACID_PROOF
flag_2_flags = RAD_PROTECT_CONTENTS_2 // only protects stored items
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
charge_drain = DEFAULT_CHARGE_DRAIN * 2
slowdown_active = 0.35
inbuilt_modules = list(/obj/item/mod/module/cbrn)
allowed_suit_storage = list(
/obj/item/healthanalyzer,
/obj/item/reagent_containers/dropper,
/obj/item/reagent_containers/glass/beaker,
/obj/item/reagent_containers/glass/bottle,
/obj/item/reagent_containers/hypospray,
/obj/item/reagent_containers/syringe,
/obj/item/stack/medical,
/obj/item/sensor_device,
/obj/item/storage/pill_bottle,
/obj/item/storage/bag/chemistry,
/obj/item/storage/bag/bio,
/obj/item/melee/classic_baton/telescopic,
/obj/item/gun
)
skins = list(
"salvation" = list(
HELMET_FLAGS = list(
UNSEALED_LAYER = COLLAR_LAYER,
SEALED_CLOTHING = THICKMATERIAL | STOPSPRESSUREDMAGE | BLOCK_GAS_SMOKE_EFFECT | BLOCKHAIR,
UNSEALED_INVISIBILITY = HIDEFACE,
SEALED_INVISIBILITY = HIDEMASK | HIDEEYES | HIDEEARS | HIDEFACE,
SEALED_COVER = HEADCOVERSMOUTH | HEADCOVERSEYES,
),
CHESTPLATE_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
SEALED_CLOTHING = STOPSPRESSUREDMAGE,
SEALED_INVISIBILITY = HIDEJUMPSUIT | HIDETAIL,
),
GAUNTLETS_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
SEALED_CLOTHING = STOPSPRESSUREDMAGE,
CAN_OVERSLOT = TRUE,
),
BOOTS_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
SEALED_CLOTHING = STOPSPRESSUREDMAGE,
CAN_OVERSLOT = TRUE,
),
),
)
/obj/item/mod/armor/mod_theme_salvation
armor = list(MELEE = 25, BULLET = 20, LASER = 15, ENERGY = 10, BOMB = 25, RAD = 150, FIRE = 250, ACID = 150) //Extra armor in compensation of being slower then, and an improvement of the valkyrie.
/datum/mod_theme/research
name = "'Minerva' research"
desc = "A powered EOD suit produced by Aussec Armory. Absolutely unmatched explosive and acid protection, along with heavy conventional armor and high modding potential."
+17
View File
@@ -181,6 +181,23 @@
/obj/item/mod/module/analyzer,
)
/obj/item/mod/control/pre_equipped/salvation
icon_state = "salvation-control"
theme = /datum/mod_theme/salvation
applied_cell = /obj/item/stock_parts/cell/super
applied_modules = list(
/obj/item/mod/module/storage/large_capacity,
/obj/item/mod/module/injector,
/obj/item/mod/module/defibrillator,
/obj/item/mod/module/monitor,
/obj/item/mod/module/analyzer,
)
default_pins = list(
/obj/item/mod/module/defibrillator,
/obj/item/mod/module/analyzer,
/obj/item/mod/module/cbrn,
)
/obj/item/mod/control/pre_equipped/research
icon_state = "research-control"
theme = /datum/mod_theme/research
@@ -151,3 +151,44 @@
name = "MOD health analyzer"
desc = "A integrated body scanner that allows the user to scan vital signs of a patient."
flags = NODROP
/obj/item/mod/module/cbrn
name = "CBRN Protection System"
desc = "An active protection system that forms a complete biological shield around the wearer when active, \
greatly limiting movement and spiking power usage to completely protect against chemical, biological, radiological, and nuclear hazards."
icon_state = "cbrn"
module_type = MODULE_TOGGLE
cooldown_time = 0.5 SECONDS
active_power_cost = DEFAULT_CHARGE_DRAIN * 6 // Eats power for its protection
incompatible_modules = list(/obj/item/mod/module/cbrn)
removable = FALSE // Exclusive to the CMO suit
materials = list(MAT_METAL = 15000, MAT_TITANIUM = 5000, MAT_URANIUM = 5000)
/// Speed lowered to the control unit.
var/speed_lowered = 0.15
/// Original armor of the suit, simpler solution to resolve subtracting infinities
var/original_armor = null
/obj/item/mod/module/cbrn/on_activation()
. = ..()
if(!.)
return
playsound(src, 'sound/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
to_chat(mod.wearer, SPAN_NOTICE("Environmental protection enabled, biological shield raised, mobility decreased."))
var/list/parts = mod.mod_parts + mod
for(var/obj/item/part as anything in parts)
original_armor = part.armor
part.armor = part.armor.modifyRating(0, 0, 0, 0, 10, INFINITY, 0, INFINITY, 0) // due to infinities and non-zeros, attach and detach wont work, there is probably a much better solution
part.slowdown += (speed_lowered)
/obj/item/mod/module/cbrn/on_deactivation(display_message = TRUE, deleting = FALSE)
. = ..()
if(!.)
return
if(!deleting)
playsound(src, 'sound/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
to_chat(mod.wearer, SPAN_NOTICE("Environmental protection disabled, biological shield lowered, mobility increased."))
var/list/parts = mod.mod_parts + mod
for(var/obj/item/part as anything in parts)
part.armor = original_armor
part.slowdown -= (speed_lowered)