diff --git a/code/modules/mod/mod_activation.dm b/code/modules/mod/mod_activation.dm
index 42e9a3dff0..10e91eccb2 100644
--- a/code/modules/mod/mod_activation.dm
+++ b/code/modules/mod/mod_activation.dm
@@ -17,7 +17,7 @@
var/obj/item/part = locate(part_reference) in mod_parts
if(!istype(part) || user.incapacitated())
return
- if((active && part != helmet) || activating) // SKYRAT EDIT - Let the hair flow - ORIGINAL: if(active || activating)
+ if(active || activating)
balloon_alert(user, "deactivate the suit first!")
playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return
@@ -217,9 +217,8 @@
/// Finishes the suit's activation, starts processing
/obj/item/mod/control/proc/finish_activation(on)
- icon_state = "[skin]-control[on ? "-sealed" : ""]"
- slowdown = on ? slowdown_active : slowdown_inactive
- if(on)
+ active = on
+ if(active)
for(var/obj/item/mod/module/module as anything in modules)
module.on_suit_activation()
START_PROCESSING(SSobj, src)
@@ -227,19 +226,23 @@
for(var/obj/item/mod/module/module as anything in modules)
module.on_suit_deactivation()
STOP_PROCESSING(SSobj, src)
- wearer.update_equipment_speed_mods()
- active = on
+ update_speed()
+ update_icon_state()
wearer.update_inv_back()
+/obj/item/mod/control/update_icon_state()
+ icon_state = "[skin]-control[active ? "-sealed" : ""]"
+ return ..()
+
/// Quickly deploys all the suit parts and if successful, seals them and turns on the suit. Intended mostly for outfits.
/obj/item/mod/control/proc/quick_activation()
var/seal = TRUE
- for(var/obj/item/part in mod_parts)
+ for(var/obj/item/part as anything in mod_parts)
if(!deploy(null, part))
seal = FALSE
if(!seal)
return
- for(var/obj/item/part in mod_parts)
+ for(var/obj/item/part as anything in mod_parts)
seal_part(part, seal = TRUE)
finish_activation(on = TRUE)
diff --git a/code/modules/mod/mod_clothes.dm b/code/modules/mod/mod_clothes.dm
index a7e4c0cb1d..b5d2d6a883 100644
--- a/code/modules/mod/mod_clothes.dm
+++ b/code/modules/mod/mod_clothes.dm
@@ -1,4 +1,4 @@
-/obj/item/clothing/head/helmet/space/mod
+/obj/item/clothing/head/mod
name = "MOD helmet"
desc = "A helmet for a MODsuit."
icon = 'icons/obj/clothing/modsuit/mod_clothing.dmi'
@@ -12,27 +12,27 @@
cold_protection = HEAD
max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
- clothing_flags = THICKMATERIAL
+ clothing_flags = THICKMATERIAL|ALLOWINTERNALS
resistance_flags = NONE
flash_protect = 0
- clothing_flags = NONE
flags_inv = HIDEFACIALHAIR
flags_cover = NONE
visor_flags = THICKMATERIAL|STOPSPRESSUREDAMAGE
visor_flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT
visor_flags_cover = HEADCOVERSMOUTH|HEADCOVERSEYES
+ item_flags = IMMUTABLE_SLOW
var/alternate_layer = NECK_LAYER
var/obj/item/mod/control/mod
mutantrace_variation = STYLE_MUZZLE
-/obj/item/clothing/head/helmet/space/mod/Destroy()
+/obj/item/clothing/head/mod/Destroy()
if(!QDELETED(mod))
mod.helmet = null
mod.mod_parts -= src
QDEL_NULL(mod)
return ..()
-/obj/item/clothing/suit/space/mod
+/obj/item/clothing/suit/mod
name = "MOD chestplate"
desc = "A chestplate for a MODsuit."
icon = 'icons/obj/clothing/modsuit/mod_clothing.dmi'
@@ -51,12 +51,13 @@
flags_inv = HIDETAUR
visor_flags = STOPSPRESSUREDAMAGE
visor_flags_inv = HIDEJUMPSUIT
+ item_flags = IMMUTABLE_SLOW
allowed = list(/obj/item/flashlight, /obj/item/tank/internals)
resistance_flags = NONE
var/obj/item/mod/control/mod
mutantrace_variation = STYLE_DIGITIGRADE
-/obj/item/clothing/suit/space/mod/Destroy()
+/obj/item/clothing/suit/mod/Destroy()
if(!QDELETED(mod))
mod.chestplate = null
mod.mod_parts -= src
@@ -78,6 +79,7 @@
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
clothing_flags = THICKMATERIAL
resistance_flags = NONE
+ item_flags = IMMUTABLE_SLOW
var/obj/item/mod/control/mod
var/obj/item/clothing/overslot
mutantrace_variation = STYLE_NO_ANTHRO_ICON
@@ -114,7 +116,7 @@
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
clothing_flags = THICKMATERIAL
resistance_flags = NONE
- item_flags = NONE
+ item_flags = IMMUTABLE_SLOW
var/obj/item/mod/control/mod
var/obj/item/clothing/overslot
mutantrace_variation = STYLE_DIGITIGRADE
diff --git a/code/modules/mod/mod_construction.dm b/code/modules/mod/mod_construction.dm
index 11eef7cb11..4558f9fbfc 100644
--- a/code/modules/mod/mod_construction.dm
+++ b/code/modules/mod/mod_construction.dm
@@ -7,14 +7,26 @@
name = "MOD helmet"
icon_state = "helmet"
+/obj/item/mod/construction/helmet/examine(mob/user)
+ . = ..()
+ . += span_notice("You could insert it into a MOD shell...")
+
/obj/item/mod/construction/chestplate
name = "MOD chestplate"
icon_state = "chestplate"
+/obj/item/mod/construction/chestplate/examine(mob/user)
+ . = ..()
+ . += span_notice("You could insert it into a MOD shell...")
+
/obj/item/mod/construction/gauntlets
name = "MOD gauntlets"
icon_state = "gauntlets"
+/obj/item/mod/construction/gauntlets/examine(mob/user)
+ . = ..()
+ . += span_notice("You could insert these into a MOD shell...")
+
/obj/item/mod/construction/boots
name = "MOD boots"
icon_state = "boots"
@@ -45,15 +57,15 @@
qdel(src)
/obj/item/mod/construction/armor
- name = "MOD armor plates"
- desc = "Armor plates used to finish a MOD."
+ name = "MOD external plating"
+ desc = "External plating used to finish a MOD control unit."
icon_state = "standard-plating"
var/datum/mod_theme/theme = /datum/mod_theme
/obj/item/mod/construction/armor/Initialize(mapload)
. = ..()
var/datum/mod_theme/used_theme = GLOB.mod_themes[theme]
- name = "MOD [used_theme.name] armor plates"
+ name = "MOD [used_theme.name] external plating"
desc = "[desc] [used_theme.desc]"
icon_state = "[used_theme.default_skin]-plating"
diff --git a/code/modules/mod/mod_control.dm b/code/modules/mod/mod_control.dm
index 0853d04f82..35f4b3cfe3 100644
--- a/code/modules/mod/mod_control.dm
+++ b/code/modules/mod/mod_control.dm
@@ -16,7 +16,6 @@
w_class = WEIGHT_CLASS_BULKY
slot_flags = ITEM_SLOT_BACK
strip_delay = 10 SECONDS
- slowdown = 2
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 25, ACID = 25, WOUND = 10, RAD = 0)
actions_types = list(
/datum/action/item_action/mod/deploy,
@@ -62,14 +61,16 @@
var/slowdown_inactive = 2
/// Slowdown of the MOD when active.
var/slowdown_active = 1
+ /// Extended description of the theme.
+ var/extended_desc
/// How long this MOD takes each part to seal.
var/activation_step_time = MOD_ACTIVATION_STEP_TIME
/// MOD cell.
var/obj/item/stock_parts/cell/cell
/// MOD helmet.
- var/obj/item/clothing/head/helmet/space/mod/helmet
+ var/obj/item/clothing/head/mod/helmet
/// MOD chestplate.
- var/obj/item/clothing/suit/space/mod/chestplate
+ var/obj/item/clothing/suit/mod/chestplate
/// MOD gauntlets.
var/obj/item/clothing/gloves/mod/gauntlets
/// MOD boots.
@@ -96,9 +97,9 @@
if(new_theme)
theme = new_theme
theme = GLOB.mod_themes[theme]
+ extended_desc = theme.extended_desc
slowdown_inactive = theme.slowdown_inactive
slowdown_active = theme.slowdown_active
- slowdown = slowdown_inactive
complexity_max = theme.complexity_max
skin = new_skin || theme.default_skin
ui_theme = theme.ui_theme
@@ -107,10 +108,10 @@
wires = new /datum/wires/mod(src)
if(ispath(cell))
cell = new cell(src)
- helmet = new /obj/item/clothing/head/helmet/space/mod(src)
+ helmet = new /obj/item/clothing/head/mod(src)
helmet.mod = src
mod_parts += helmet
- chestplate = new /obj/item/clothing/suit/space/mod(src)
+ chestplate = new /obj/item/clothing/suit/mod(src)
chestplate.mod = src
mod_parts += chestplate
gauntlets = new /obj/item/clothing/gloves/mod(src)
@@ -134,6 +135,7 @@
piece.icon_state = "[skin]-[initial(piece.icon_state)]"
piece.item_state = "[skin]-[initial(piece.item_state)]"
update_flags()
+ update_speed()
for(var/obj/item/mod/module/module as anything in initial_modules)
module = new module(src)
install(module)
@@ -176,6 +178,10 @@
QDEL_NULL(cell)
return ..()
+/obj/item/mod/control/examine_more(mob/user)
+ . = ..()
+ . += extended_desc
+
/obj/item/mod/control/process(delta_time)
if(seconds_electrified > MACHINE_NOT_ELECTRIFIED)
seconds_electrified--
@@ -543,6 +549,11 @@
else
wearer.throw_alert("mod_charge", /atom/movable/screen/alert/emptycell)
+/obj/item/mod/control/proc/update_speed()
+ for(var/obj/item/part as anything in mod_parts)
+ part.slowdown = (active ? slowdown_active : slowdown_inactive) / length(mod_parts)
+ wearer?.update_equipment_speed_mods()
+
/obj/item/mod/control/proc/power_off()
balloon_alert(wearer, "no power!")
toggle_activate(wearer, force_deactivate = TRUE)
diff --git a/code/modules/mod/mod_theme.dm b/code/modules/mod/mod_theme.dm
index 050badf5d9..fe949449d2 100644
--- a/code/modules/mod/mod_theme.dm
+++ b/code/modules/mod/mod_theme.dm
@@ -11,6 +11,12 @@
var/name = "standard"
/// Description added to the MOD.
var/desc = "A civilian class suit by Nakamura Engineering, doesn't offer much other than slightly quicker movement."
+ /// Extended description on examine_more
+ var/extended_desc = "A third-generation, modular civilian class suit by Nakamura Engineering, \
+ this suit is a staple across the galaxy for civilian applications. These suits are oxygenated, \
+ spaceworthy, resistant to fire and chemical threats, and are immunized against everything between \
+ a sneeze and a bioweapon. However, their combat applications are incredibly minimal due to no \
+ armor plating being installed by default, and their actuators only lead to slightly greater speed than normal."
/// Default skin of the MOD.
var/default_skin = "standard"
/// Armor shared across the MOD pieces.
@@ -35,6 +41,8 @@
var/slowdown_active = 0.75
/// Theme used by the MOD TGUI.
var/ui_theme = "ntos"
+ /// Allowed items in the chestplate's suit storage.
+ var/list/allowed = list(/obj/item/flashlight, /obj/item/tank/internals)
/// List of inbuilt modules. These are different from the pre-equipped suits, you should mainly use these for unremovable modules with 0 complexity.
var/list/inbuilt_modules = list()
/// Modules blacklisted from the MOD.
@@ -45,7 +53,7 @@
HELMET_LAYER = NECK_LAYER,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = NONE,
- SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR,
SEALED_INVISIBILITY = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
@@ -68,7 +76,7 @@
HELMET_LAYER = null,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
- SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR|HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
UNSEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
),
@@ -91,6 +99,11 @@
/datum/mod_theme/engineering
name = "engineering"
desc = "An engineer-fit suit with heat and shock resistance. Nakamura Engineering's classic."
+ extended_desc = "A classic by Nakamura Engineering, and surely their claim to fame. This model is an \
+ improvement upon the first-generation prototype models from before the Void War, boasting an array of features. \
+ The modular flexibility of the base design has been combined with an blast-dampening insulated inner layer and \
+ a shock-resistant outer layer, making the suit nigh-invulnerable against even the extremes of high-voltage electricity. \
+ However, the capacity for modification remains the same as civilian-grade suits."
default_skin = "engineering"
armor = list(MELEE = 10, BULLET = 5, LASER = 20, ENERGY = 10, BOMB = 10, BIO = 100, FIRE = 100, ACID = 25, WOUND = 10, RAD = 20)
resistance_flags = FIRE_PROOF
@@ -103,7 +116,7 @@
HELMET_LAYER = NECK_LAYER,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = NONE,
- SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR,
SEALED_INVISIBILITY = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
@@ -127,6 +140,11 @@
/datum/mod_theme/atmospheric
name = "atmospheric"
desc = "An atmospheric-resistant suit by Nakamura Engineering, offering extreme heat resistance compared to the engineer suit."
+ extended_desc = "A modified version of the Nakamura Engineering industrial model. This one has been \
+ augmented with the latest in heat-resistant alloys, paired with a series of advanced heatsinks. \
+ Additionally, the materials used to construct this suit have rendered it extremely hardy against \
+ corrosive gasses and liquids, useful in the world of pipes. \
+ However, the capacity for modification remains the same as civilian-grade suits."
default_skin = "atmospheric"
armor = list(MELEE = 10, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 10, BIO = 100, FIRE = 100, ACID = 75, WOUND = 10, RAD = 0)
resistance_flags = FIRE_PROOF
@@ -138,7 +156,7 @@
HELMET_LAYER = NECK_LAYER,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = NONE,
- SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR|HIDESNOUT,
SEALED_INVISIBILITY = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR,
UNSEALED_COVER = HEADCOVERSMOUTH,
@@ -163,6 +181,11 @@
/datum/mod_theme/advanced
name = "advanced"
desc = "An advanced version of Nakamura Engineering's classic suit, shining with a white, acid and fire resistant polish."
+ extended_desc = "The flagship version of the Nakamura Engineering industrial model, and their latest product. \
+ Combining all the features of their other industrial model suits inside, with blast resistance almost approaching \
+ some EOD suits, the outside has been coated with a white polish rumored to be a corporate secret. \
+ The paint used is almost entirely immune to corrosives, and certainly looks damn fine. \
+ These come pre-installed with magnetic boots, using an advanced system to toggle them on or off as the user walks."
default_skin = "advanced"
armor = list(MELEE = 15, BULLET = 5, LASER = 20, ENERGY = 15, BOMB = 50, BIO = 100, FIRE = 100, ACID = 90, WOUND = 10, RAD = 35)
resistance_flags = FIRE_PROOF
@@ -176,7 +199,7 @@
HELMET_LAYER = NECK_LAYER,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = NONE,
- SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR,
SEALED_INVISIBILITY = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
@@ -200,6 +223,13 @@
/datum/mod_theme/mining
name = "mining"
desc = "A high-power Nanotrasen mining suit, supporting more complexity at a bigger drain."
+ extended_desc = "A high-powered Nanotrasen-designed suit, based off the work of Nakamura Engineering. \
+ While initial designs were built for the rigors of asteroid mining, given blast resistance through inbuilt ceramics, \
+ mining teams have since heavily tweaked the suit themselves. Aftermarket armor plating has been added, \
+ giving way to incredible protection against corrosives and thermal protection good enough for volcanic environments. \
+ The systems have been upgraded as well, giving space for further modification down the line. \
+ However, all of this has proven to be straining on the cell and the actuators of the suit, \
+ making it demand more power in exchange."
default_skin = "mining"
armor = list(MELEE = 15, BULLET = 5, LASER = 5, ENERGY = 5, BOMB = 30, BIO = 100, FIRE = 100, ACID = 75, WOUND = 15, RAD = 0)
resistance_flags = FIRE_PROOF
@@ -211,7 +241,7 @@
HELMET_LAYER = null,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
- SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR|HIDEEARS|HIDEHAIR|HIDESNOUT,
SEALED_INVISIBILITY = HIDEMASK|HIDEEYES|HIDEFACE,
SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
@@ -235,6 +265,12 @@
/datum/mod_theme/medical
name = "medical"
desc = "A lightweight suit by DeForest Medical Corporation, allows for easier movement."
+ extended_desc = "A lightweight suit produced by the DeForest Medical Corporation, based off the work of \
+ Nakamura Engineering. The latest in technology has been employed in this suit to render it immunized against \
+ allergens, airborne toxins, and regular pathogens. The primary asset of this suit is the speed, \
+ fusing high-powered servos and actuators with a carbon-fiber construction. While there's very little armor used, \
+ it is incredibly acid-resistant. It is slightly more demanding of power than civilian-grade models, \
+ and weak against fingers tapping the glass."
default_skin = "medical"
armor = list(MELEE = 5, BULLET = 5, LASER = 5, ENERGY = 5, BOMB = 10, BIO = 100, FIRE = 60, ACID = 75, WOUND = 5, RAD = 0)
cell_drain = DEFAULT_CHARGE_DRAIN * 1.5
@@ -245,7 +281,7 @@
HELMET_LAYER = NECK_LAYER,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = NONE,
- SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR,
SEALED_INVISIBILITY = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
@@ -268,7 +304,7 @@
HELMET_LAYER = NECK_LAYER,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = NONE,
- SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR,
SEALED_INVISIBILITY = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
@@ -292,6 +328,12 @@
/datum/mod_theme/rescue
name = "rescue"
desc = "An advanced version of DeForest Medical Corporation's medical suit, designed for quick rescue of bodies from the most dangerous environments."
+ extended_desc = "An upgraded, armor-plated version of DeForest Medical Corporation's medical suit, \
+ designed for quick rescue of bodies from the most dangerous environments. The same advanced leg servos \
+ as the base version are seen here, giving paramedics incredible speed, but the same servos are also in the arms. \
+ Users are capable of quickly hauling even the heaviest crewmembers using this suit, \
+ all while being entirely immune against chemical and thermal threats. \
+ It is slightly more demanding of power than civilian-grade models, and weak against fingers tapping the glass."
default_skin = "rescue"
armor = list(MELEE = 10, BULLET = 10, LASER = 5, ENERGY = 5, BOMB = 10, BIO = 100, FIRE = 100, ACID = 100, WOUND = 5, RAD = 0)
resistance_flags = FIRE_PROOF|ACID_PROOF
@@ -305,7 +347,7 @@
HELMET_LAYER = NECK_LAYER,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = NONE,
- SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR,
SEALED_INVISIBILITY = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
@@ -329,20 +371,28 @@
/datum/mod_theme/research
name = "research"
desc = "A private military EOD suit by Aussec Armory, intended for explosive research. Bulky, but expansive."
+ extended_desc = "A private military EOD suit by Aussec Armory, based off the work of Nakamura Engineering. \
+ This suit is intended for explosive research, built incredibly bulky and well-covering. \
+ Featuring an inbuilt chemical scanning array, this suit uses two layers of plastitanium armor, \
+ sandwiching an inert layer to dissipate kinetic energy into the suit and away from the user; \
+ outperforming even the best conventional EOD suits. However, despite its immunity against even \
+ missiles and artillery, the armor is no more effective than standard suits against \
+ other weapon types and physical damage; and all the explosive resistance mostly working to keep the user intact, \
+ not alive. The user will also find narrow doorframes nigh-impossible to surmount."
default_skin = "research"
armor = list(MELEE = 20, BULLET = 15, LASER = 5, ENERGY = 5, BOMB = 100, BIO = 100, FIRE = 100, ACID = 100, WOUND = 15, RAD = 0)
resistance_flags = FIRE_PROOF|ACID_PROOF
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
complexity_max = DEFAULT_MAX_COMPLEXITY + 5
- slowdown_inactive = 2
- slowdown_active = 1.5
+ slowdown_inactive = 1.75
+ slowdown_active = 1.25
inbuilt_modules = list(/obj/item/mod/module/reagent_scanner/advanced)
skins = list(
"research" = list(
HELMET_LAYER = null,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
- SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR|HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
UNSEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
),
@@ -365,6 +415,14 @@
/datum/mod_theme/security
name = "security"
desc = "An Apadyne Technologies security suit, offering shock protection and quicker speed, at the cost of carrying capacity."
+ extended_desc = "An Apadyne Technologies classic, this model of MODsuit has been designed for quick response to \
+ hostile situations. These suits have been layered with plating worthy enough for fires or corrosive environments, \
+ and come with composite cushioning and an advanced honeycomb structure underneath the hull to ensure protection \
+ against broken bones or possible avulsions. The suit's legs have been given more rugged actuators, \
+ allowing the suit to do more work in carrying the weight. Lastly, these have been given a shock-absorbing \
+ insulating layer on the gauntlets, making sure the user isn't under risk of electricity. \
+ However, the systems used in these suits are more than a few years out of date, \
+ leading to an overall lower capacity for modules."
default_skin = "security"
armor = list(MELEE = 15, BULLET = 15, LASER = 15, ENERGY = 15, BOMB = 25, BIO = 100, FIRE = 75, ACID = 75, WOUND = 15, RAD = 0)
siemens_coefficient = 0
@@ -376,7 +434,7 @@
HELMET_LAYER = null,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
- SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR|HIDEEARS|HIDEHAIR|HIDESNOUT,
SEALED_INVISIBILITY = HIDEMASK|HIDEEYES|HIDEFACE,
UNSEALED_COVER = HEADCOVERSMOUTH,
@@ -401,6 +459,12 @@
/datum/mod_theme/safeguard
name = "safeguard"
desc = "An Apadyne Technologies advanced security suit, offering greater speed and fire protection than the standard security model."
+ extended_desc = "An Apadyne Technologies advanced security suit, and their latest model. This variant has \
+ ditched the presence of a reinforced glass visor entirely, replacing it with a 'blast visor' utilizing a \
+ small camera on the left side to display the outside to the user. The plating on the suit has been \
+ dramatically increased, especially in the pauldrons, giving the wearer an imposing silhouette. \
+ Heatsinks line the sides of the suit, and greater technology has been used in insulating it against \
+ both corrosive environments and sudden impacts to the user's joints."
default_skin = "safeguard"
armor = list(MELEE = 15, BULLET = 15, LASER = 15, ENERGY = 15, BOMB = 40, BIO = 100, FIRE = 100, ACID = 95, WOUND = 15, RAD = 0)
resistance_flags = FIRE_PROOF
@@ -414,7 +478,7 @@
HELMET_LAYER = null,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
- SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR|HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
UNSEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
),
@@ -437,6 +501,15 @@
/datum/mod_theme/magnate
name = "magnate"
desc = "A fancy, very protective suit for Nanotrasen's captains. Shock, fire and acid-proof while also having a large capacity and high speed."
+ extended_desc = "They say it costs four hundred thousand credits to run this MODsuit... for twelve seconds. \
+ The Magnate suit is designed for protection, comfort, and luxury for Nanotrasen Captains. \
+ The onboard air filters have been preprogrammed with an additional five hundred different fragrances that can \
+ be pumped into the helmet, all of highly-endangered flowers. A bespoke Tralex mechanical clock has been placed \
+ in the wrist, and the Magnate package comes with carbon-fibre cufflinks to wear underneath. \
+ My God, it even has a granite trim. The double-classified paint that's been painstakingly applied to the hull \
+ provides protection against shock, fire, and the strongest acids. Onboard systems employ meta-positronic learning \
+ and bluespace processing to allow for a wide array of onboard modules to be supported, and only the best actuators \
+ have been employed for speed. The resemblance to a Gorlex Marauder helmet is purely coincidental."
default_skin = "magnate"
armor = list(MELEE = 20, BULLET = 15, LASER = 15, ENERGY = 15, BOMB = 50, BIO = 100, FIRE = 100, ACID = 100, WOUND = 15, RAD = 0)
resistance_flags = FIRE_PROOF|ACID_PROOF
@@ -450,7 +523,7 @@
HELMET_LAYER = NECK_LAYER,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = NONE,
- SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR,
SEALED_INVISIBILITY = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
@@ -474,17 +547,23 @@
/datum/mod_theme/cosmohonk
name = "cosmohonk"
desc = "A suit by Honk Ltd. Protects against low humor environments. Most of the tech went to lower the power cost."
+ extended_desc = "The Cosmohonk MODsuit was originally designed for interstellar comedy in low-humor environments. \
+ It utilizes tungsten electro-ceramic casing and chromium bipolars, coated in zirconium-boron paint underneath \
+ a dermatiraelian subspace alloy. Despite the glaringly obvious optronic vacuum drive pedals, \
+ this particular model does not employ manganese bipolar capacitor cleaners, thank the Honkmother. \
+ All you know is that this suit is mysteriously power-efficient, and far too colorful for the Mime to steal."
default_skin = "cosmohonk"
armor = list(MELEE = 5, BULLET = 5, LASER = 20, ENERGY = 20, BOMB = 10, BIO = 100, FIRE = 60, ACID = 30, WOUND = 5, RAD = 0)
cell_drain = DEFAULT_CHARGE_DRAIN * 0.25
slowdown_inactive = 1.75
slowdown_active = 1.25
+ /*inbuilt_modules = list(/obj/item/mod/module/waddle)*/ // Waddling element not ported, commented for now as it is a prerequisite.
skins = list(
"cosmohonk" = list(
HELMET_LAYER = NECK_LAYER,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
- SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEEARS|HIDEHAIR,
SEALED_INVISIBILITY = HIDEFACIALHAIR|HIDEMASK|HIDEEYES|HIDEFACE|HIDESNOUT,
SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
@@ -508,6 +587,13 @@
/datum/mod_theme/syndicate
name = "syndicate"
desc = "A suit designed by Gorlex Marauders, offering armor ruled illegal in most of Spinward Stellar."
+ extended_desc = "An advanced combat suit adorned in a sinister crimson red color scheme, produced and manufactured \
+ for special mercenary operations. The build is a streamlined layering consisting of shaped Plasteel, \
+ and composite ceramic, while the under suit is lined with a lightweight Kevlar and durathread hybrid weave \
+ to provide ample protection to the user where the plating doesn't, with an illegal onboard cell powered \
+ ablative shield module to provide resistance against conventional energy firearms. \
+ A small tag hangs off of it reading; 'Property of the Gorlex Marauders, with assistance from Cybersun Industries. \
+ All rights reserved, tampering with suit will void warranty."
default_skin = "syndicate"
armor = list(MELEE = 15, BULLET = 20, LASER = 15, ENERGY = 15, BOMB = 35, BIO = 100, FIRE = 50, ACID = 90, WOUND = 25, RAD = 0)
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
@@ -521,7 +607,7 @@
HELMET_LAYER = NECK_LAYER,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = NONE,
- SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR,
SEALED_INVISIBILITY = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
@@ -545,6 +631,12 @@
/datum/mod_theme/elite
name = "elite"
desc = "An elite suit upgraded by Cybersun Industries, offering upgraded armor values."
+ extended_desc = "An evolution of the syndicate suit, featuring a bulkier build and a matte black color scheme, \
+ this suit is only produced for high ranking Syndicate officers and elite strike teams. \
+ It comes built with a secondary layering of ceramic and Kevlar into the plating providing it with \
+ exceptionally better protection along with fire and acid proofing. A small tag hangs off of it reading; \
+ 'Property of the Gorlex Marauders, with assistance from Cybersun Industries. \
+ All rights reserved, tampering with suit will void life expectancy.'"
default_skin = "elite"
armor = list(MELEE = 35, BULLET = 30, LASER = 35, ENERGY = 35, BOMB = 55, BIO = 100, FIRE = 100, ACID = 100, WOUND = 25, RAD = 0)
resistance_flags = FIRE_PROOF|ACID_PROOF
@@ -559,7 +651,7 @@
HELMET_LAYER = null,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = NONE,
- SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR,
SEALED_INVISIBILITY = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
@@ -583,6 +675,13 @@
/datum/mod_theme/enchanted
name = "enchanted"
desc = "The Wizard Federation's relatively low-tech MODsuit. Is very protective, though."
+ extended_desc = "The Wizard Federation's relatively low-tech MODsuit. This armor employs not \
+ plasteel or carbon fibre, but space dragon scales for its protection. Recruits are expected to \
+ gather these themselves, but the effort is well worth it, the suit being well-armored against threats \
+ both mundane and mystic. Rather than wholly relying on the suit's cell, which would surely perish \
+ under the load, several naturally-occurring bluespace gemstones have been utilized as \
+ supplementary means of power. The hood and platform boots are of unknown usage, but it's speculated that \
+ wizards trend towards the dramatic."
default_skin = "enchanted"
armor = list(MELEE = 40, BULLET = 40, LASER = 50, ENERGY = 50, BOMB = 35, BIO = 100, FIRE = 100, ACID = 100, WOUND = 30, RAD = 0)
resistance_flags = FIRE_PROOF|ACID_PROOF
@@ -598,7 +697,7 @@
HELMET_LAYER = null,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
- SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR|HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
UNSEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
),
@@ -621,12 +720,22 @@
/datum/mod_theme/prototype
name = "prototype"
desc = "A prototype modular suit powered by locomotives. While it is comfortable and has a big capacity, it remains very bulky and power-inefficient."
+ extended_desc = "This is a prototype powered exoskeleton, a design not seen in hundreds of years, the first \
+ post-void war era modular suit to ever be safely utilized by an operator. This ancient clunker is still functional, \
+ though it's missing several modern-day luxuries from updated Nakamura Engineering designs. \
+ Primarily, the suit's myoelectric suit layer is entirely non-existant, and the servos do very little to \
+ help distribute the weight evenly across the wearer's body, making it slow and bulky to move in. \
+ Additionally, the armor plating never finished production aside from the shoulders, forearms, and helmet; \
+ making it useless against direct attacks. The internal heads-up display is rendered in nearly unreadable cyan, \
+ as the visor suggests, leaving the user unable to see long distances. \
+ However, the way the helmet retracts is pretty cool."
default_skin = "prototype"
armor = list(MELEE = 20, BULLET = 5, LASER = 10, ENERGY = 10, BOMB = 50, BIO = 100, FIRE = 100, ACID = 75, WOUND = 5, RAD = 0)
resistance_flags = FIRE_PROOF
- complexity_max = DEFAULT_MAX_COMPLEXITY + 10
- slowdown_inactive = 2.5
- slowdown_active = 2
+ complexity_max = DEFAULT_MAX_COMPLEXITY + 5
+ cell_drain = DEFAULT_CHARGE_DRAIN * 2
+ slowdown_inactive = 2
+ slowdown_active = 1.5
ui_theme = "hackerman"
inbuilt_modules = list(/obj/item/mod/module/kinesis)
skins = list(
@@ -634,7 +743,7 @@
HELMET_LAYER = null,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
- SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR|HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
UNSEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
),
@@ -657,6 +766,11 @@
/datum/mod_theme/responsory
name = "responsory"
desc = "A high-speed rescue suit by Nanotrasen, intended for its' emergency response teams."
+ extended_desc = "A streamlined suit of Nanotrasen design, these sleek black suits are only worn by \
+ elite emergency response personnel to help save the day. While the slim and nimble design of the suit \
+ cuts the ceramics and ablatives in it down, dropping the protection, \
+ it keeps the wearer safe from the harsh void of space while sacrificing no speed whatsoever. \
+ While wearing it you feel an extreme deference to darkness. "
default_skin = "responsory"
armor = list(MELEE = 50, BULLET = 40, LASER = 50, ENERGY = 50, BOMB = 50, BIO = 100, FIRE = 100, ACID = 90, WOUND = 10, RAD = 0)
resistance_flags = FIRE_PROOF
@@ -669,7 +783,7 @@
HELMET_LAYER = NECK_LAYER,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = NONE,
- SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR,
SEALED_INVISIBILITY = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
@@ -692,7 +806,7 @@
HELMET_LAYER = null,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
- SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR|HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
UNSEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
),
@@ -715,6 +829,12 @@
/datum/mod_theme/apocryphal
name = "apocryphal"
desc = "A high-tech, only technically legal, armored suit created by a collaboration effort between Nanotrasen and Apadyne Technologies."
+ extended_desc = "A bulky and only legal by technicality suit, this ominous black and red MODsuit is only worn by \
+ Nanotrasen Black Ops teams. If you can see this suit, you fucked up. A collaborative joint effort between \
+ Apadyne and Nanotrasen the construction and modules gives the user robust protection against \
+ anything that can be thrown at it, along with acute combat awareness tools for it's wearer. \
+ Whether the wearer uses it or not is up to them. \
+ There seems to be a little inscription on the wrist that reads; \'squiddie', d'aww."
default_skin = "apocryphal"
armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 60, BOMB = 100, BIO = 100, FIRE = 100, ACID = 100, WOUND = 25, RAD = 0)
resistance_flags = FIRE_PROOF|ACID_PROOF
@@ -726,7 +846,7 @@
HELMET_LAYER = null,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
- SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEEARS|HIDEHAIR,
SEALED_INVISIBILITY = HIDEFACIALHAIR|HIDEMASK|HIDEEYES|HIDEFACE|HIDESNOUT,
SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
@@ -750,6 +870,11 @@
/datum/mod_theme/corporate
name = "corporate"
desc = "A fancy, high-tech suit for Nanotrasen's high ranking officers."
+ extended_desc = "An even more costly version of the Magnate model, the corporate suit is a thermally insulated, \
+ anti-corrosion coated suit for high-ranking CentCom Officers, deploying pristine protective armor and \
+ advanced actuators, feeling practically weightless when turned on. Scraping the paint of this suit is \
+ counted as a war-crime and reason for immediate execution in over fifty Nanotrasen space stations. \
+ The resemblance to a Gorlex Marauder helmet is purely coincidental."
default_skin = "corporate"
armor = list(MELEE = 50, BULLET = 40, LASER = 50, ENERGY = 50, BOMB = 50, BIO = 100, FIRE = 100, ACID = 100, WOUND = 15, RAD = 0)
resistance_flags = FIRE_PROOF|ACID_PROOF
@@ -762,7 +887,7 @@
HELMET_LAYER = null,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
- SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR|HIDEEARS|HIDEHAIR|HIDESNOUT,
SEALED_INVISIBILITY = HIDEMASK|HIDEEYES|HIDEFACE,
SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
@@ -786,6 +911,9 @@
/datum/mod_theme/debug
name = "debug"
desc = "Strangely nostalgic."
+ extended_desc = "An advanced suit that has dual ion engines powerful enough to grant a humanoid flight. \
+ Contains an internal self-recharging high-current capacitor for short, powerful bo- \
+ Oh wait, this is not actually a flight suit. Fuck."
default_skin = "debug"
armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 100, BIO = 100, FIRE = 100, ACID = 100, WOUND = 0, RAD = 25)
resistance_flags = FIRE_PROOF|ACID_PROOF
@@ -798,7 +926,7 @@
HELMET_LAYER = null,
HELMET_FLAGS = list(
UNSEALED_CLOTHING = THICKMATERIAL,
- SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
+ SEALED_CLOTHING = STOPSPRESSUREDAMAGE|ALLOWINTERNALS|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR|HIDEEARS|HIDEHAIR|HIDESNOUT,
SEALED_INVISIBILITY = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE,
UNSEALED_COVER = HEADCOVERSMOUTH,
@@ -823,6 +951,10 @@
/datum/mod_theme/administrative
name = "administrative"
desc = "A suit made of adminium. Who comes up with these stupid mineral names?"
+ extended_desc = "Yeah, okay, I guess you can call that an event. What I consider an event is something actually \
+ fun and engaging for the players- instead, most were sitting out, dead or gibbed, while the lucky few got to \
+ have all the fun. If this continues to be a pattern for your \"events\" (Admin Abuse) \
+ there will be an admin complaint. You have been warned."
default_skin = "debug"
armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 100, BIO = 100, FIRE = 100, ACID = 100, WOUND = 100, RAD = 100)
resistance_flags = INDESTRUCTIBLE|LAVA_PROOF|FIRE_PROOF|UNACIDABLE|ACID_PROOF
@@ -835,7 +967,7 @@
"debug" = list(
HELMET_LAYER = null,
HELMET_FLAGS = list(
- UNSEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE,
+ UNSEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE|ALLOWINTERNALS,
UNSEALED_INVISIBILITY = HIDEFACIALHAIR|HIDEEARS|HIDEHAIR|HIDESNOUT,
SEALED_INVISIBILITY = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE,
UNSEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES,
diff --git a/code/modules/mod/mod_types.dm b/code/modules/mod/mod_types.dm
index 565dcdc2f8..a1492750af 100644
--- a/code/modules/mod/mod_types.dm
+++ b/code/modules/mod/mod_types.dm
@@ -72,6 +72,7 @@
/obj/item/mod/module/storage,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/health_analyzer,
+ /*/obj/item/mod/module/injector,*/ //Injector module unported as of now.
)
/obj/item/mod/control/pre_equipped/research
@@ -172,31 +173,41 @@
/obj/item/mod/module/holster,
)
var/insignia_type = /obj/item/mod/module/insignia
+ var/additional_module
/obj/item/mod/control/pre_equipped/responsory/Initialize(mapload, new_theme, new_skin)
initial_modules.Insert(1, insignia_type)
+ if(additional_module)
+ initial_modules.Add(additional_module)
return ..()
/obj/item/mod/control/pre_equipped/responsory/commander
insignia_type = /obj/item/mod/module/insignia/commander
+ additional_module = /obj/item/mod/module/noslip
/obj/item/mod/control/pre_equipped/responsory/security
insignia_type = /obj/item/mod/module/insignia/security
+ additional_module = /obj/item/mod/module/gps
/obj/item/mod/control/pre_equipped/responsory/engineer
insignia_type = /obj/item/mod/module/insignia/engineer
+ additional_module = /obj/item/mod/module/rad_protection
/obj/item/mod/control/pre_equipped/responsory/medic
insignia_type = /obj/item/mod/module/insignia/medic
+ additional_module = /obj/item/mod/module/quick_carry
/obj/item/mod/control/pre_equipped/responsory/janitor
insignia_type = /obj/item/mod/module/insignia/janitor
+ additional_module = /obj/item/mod/module/clamp
/obj/item/mod/control/pre_equipped/responsory/clown
insignia_type = /obj/item/mod/module/insignia/clown
+ additional_module = /obj/item/mod/module/bikehorn
/obj/item/mod/control/pre_equipped/responsory/chaplain
insignia_type = /obj/item/mod/module/insignia/chaplain
+ /*additional_module = /obj/item/mod/module/injector*/ //Injector module unported as of now.
/obj/item/mod/control/pre_equipped/responsory/inquisitory
initial_modules = list(
@@ -211,15 +222,19 @@
/obj/item/mod/control/pre_equipped/responsory/inquisitory/commander
insignia_type = /obj/item/mod/module/insignia/commander
+ additional_module = /obj/item/mod/module/noslip
/obj/item/mod/control/pre_equipped/responsory/inquisitory/security
insignia_type = /obj/item/mod/module/insignia/security
+ additional_module = /obj/item/mod/module/gps
/obj/item/mod/control/pre_equipped/responsory/inquisitory/medic
insignia_type = /obj/item/mod/module/insignia/medic
+ additional_module = /obj/item/mod/module/quick_carry
/obj/item/mod/control/pre_equipped/responsory/inquisitory/chaplain
insignia_type = /obj/item/mod/module/insignia/chaplain
+ /*additional_module = /obj/item/mod/module/injector*/ //Injector module unported as of now.
/obj/item/mod/control/pre_equipped/apocryphal
theme = /datum/mod_theme/apocryphal
@@ -250,6 +265,7 @@
/obj/item/mod/module/bikehorn,
/obj/item/mod/module/rad_protection,
/obj/item/mod/module/tether,
+ /*/obj/item/mod/module/injector,*/ //Injector module unported as of now.
) //one of every type of module, for testing if they all work correctly
/obj/item/mod/control/pre_equipped/administrative
diff --git a/code/modules/mod/modules/modules.dm b/code/modules/mod/modules/modules.dm
index 0e0da3572b..2d0ee4a3e1 100644
--- a/code/modules/mod/modules/modules.dm
+++ b/code/modules/mod/modules/modules.dm
@@ -1,3 +1,15 @@
+//Magic Nullifier
+/obj/item/mod/module/anti_magic
+ name = "MOD magic nullifier module"
+ desc = "A series of obsidian rods installed into critical points around the suit, \
+ vibrated at a certain low frequency to enable them to resonate. \
+ This creates a low-range, yet strong, magic nullification field around the user, \
+ aided by a full replacement of the suit's normal coolant with holy water. \
+ Spells will spall right off this field, though it'll do nothing to help others believe you about all this."
+ icon_state = "magic_nullifier"
+ removable = FALSE
+ incompatible_modules = list(/obj/item/mod/module/anti_magic)
+
/obj/item/mod/module/anti_magic/on_suit_activation()
ADD_TRAIT(mod.wearer, TRAIT_ANTIMAGIC, MOD_TRAIT)
ADD_TRAIT(mod.wearer, TRAIT_HOLY, MOD_TRAIT)
@@ -94,3 +106,21 @@
/obj/item/mod/module/insignia/chaplain
color = "#f0a00c"
+
+/obj/item/mod/module/noslip
+ name = "MOD anti slip module"
+ desc = "These are a modified variant of standard magnetic boots, utilizing piezoelectric crystals on the soles. \
+ The two plates on the bottom of the boots automatically extend and magnetize as the user steps; \
+ a pull that's too weak to offer them the ability to affix to a hull, but just strong enough to \
+ protect against the fact that you didn't read the wet floor sign. Honk Co. has come out numerous times \
+ in protest of these modules being legal."
+ icon_state = "noslip"
+ complexity = 1
+ idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.1
+ incompatible_modules = list(/obj/item/mod/module/noslip)
+
+/obj/item/mod/module/noslip/on_suit_activation()
+ ADD_TRAIT(mod.wearer, TRAIT_NOSLIPWATER, MOD_TRAIT)
+
+/obj/item/mod/module/noslip/on_suit_deactivation()
+ REMOVE_TRAIT(mod.wearer, TRAIT_NOSLIPWATER, MOD_TRAIT)
diff --git a/code/modules/mod/modules/modules_service.dm b/code/modules/mod/modules/modules_service.dm
index 85ebfea132..3b220e3322 100644
--- a/code/modules/mod/modules/modules_service.dm
+++ b/code/modules/mod/modules/modules_service.dm
@@ -64,3 +64,33 @@
spark_effect_two.set_up(2, 1, microwave_target_loc)
spark_effect_two.start()
drain_power(use_power_cost)
+
+//Waddle
+
+//Waddling element not yet portee, commented out for now.
+/*
+/obj/item/mod/module/waddle
+ name = "MOD waddle module"
+ desc = "Some of the most primitive technology in use by HonkCo. This module works off an automatic intention system, \
+ utilizing its sensitivity to the pilot's often-limited brainwaves to directly read their next step, \
+ affecting the boots they're installed in. Employing a twin-linked gravitonic drive to create \
+ miniaturized etheric blasts of space-time beneath the user's feet, this enables them to... \
+ to waddle around, bouncing to and fro with a pep in their step."
+ icon_state = "waddle"
+ idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.2
+ removable = FALSE
+ incompatible_modules = list(/obj/item/mod/module/waddle)
+
+/obj/item/mod/module/waddle/on_suit_activation()
+ mod.AddComponent(/datum/component/squeak, list('sound/effects/clownstep1.ogg'=1,'sound/effects/clownstep2.ogg'=1), 50, falloff_exponent = 20) //die off quick please
+ mod.wearer.AddElement(/datum/element/waddling)
+ if(is_clown_job(mod.wearer.mind?.assigned_role))
+ SEND_SIGNAL(mod.wearer, COMSIG_ADD_MOOD_EVENT, "clownshoes", /datum/mood_event/clownshoes)
+
+/obj/item/mod/module/waddle/on_suit_deactivation()
+ qdel(mod.GetComponent(/datum/component/squeak))
+ mod.wearer.RemoveElement(/datum/element/waddling)
+ if(is_clown_job(mod.wearer.mind?.assigned_role))
+ SEND_SIGNAL(mod.wearer, COMSIG_CLEAR_MOOD_EVENT, "clownshoes")
+
+*/