Adds the Modular Suit (Or Portable Suit) (#93776)

## About The Pull Request

First, boring stuff.
The "Modsuit equipment" techweb node has been split into two nodes, with
the additional node containing the more civilian MODules (And the new
plating), and costing 20 points.
A new "Perfumer" MODule has been added(not printable anywhere, but in
the new suit by default) that just cleans you.
The MODsuit being added has been added to the LawDrobe's premium
section, for 300 credits.

Now, the real addition.

This adds a MODsuit that is a modular suit, that is to say, a suit, tie,
shoes and glasses. The glasses aren't actually real flash-proof
sunglasses by default, but the welding protection module can be added.
The suit is obviously not space-proof, and offers no protection to
anything but biohazards. The suit has 10 complexity max, due to the fact
that most modules don't have a point on it. This is subject to change.

The pre-made one also has the stamp and paper dispenser MODules
pre-installed, which are both now activateable via the neck slot.

The suit control unit is the tie. 

## Why It's Good For The Game

Have you ever been called to court, but you didn't have a nice suit, so
the judge holds you in contempt and sends you to jail? Well, never
again. Gone are the days that you cause two innocent boys to almost be
executed for a crime they didn't commit simply because you don't have a
nice suit. With the Moonraker Conglomerate's newest export in your
hands, you'll never be the less formal one ever again. No matter the
occasion, you're never more than a few moments away from
self-representing.

Video of the fit:



https://github.com/user-attachments/assets/44d08ca8-9ae1-4887-81e6-cec11792132e

It's the same look as a suit jacket, white tie, sunglasses and laceup
shoes. You must get a matching jumpsuit of your own.

I think it's neat, and it's a damn shame that there's not a single
MODsuit that isn't just head gloves suit shoes. All these MODules which
are activateable from head, mask or glasses, and no suits that allow it.
Missed opportunity, I'd say.

Also, lawyer buff. Need I say more?

## Changelog
🆑

add: Added a modular SUIT, a deployable, one-piece three-piece suit.
Purchasable from the LawDrobe.
balance: The MODsuit equipment techweb node has been split in two, with
an offshoot for civilian MODules.

/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
This commit is contained in:
Leland Kemble
2025-12-02 17:42:15 -07:00
committed by GitHub
co-authored by san7890
parent ec911367ee
commit 49d2f1f3c9
16 changed files with 146 additions and 14 deletions
+32
View File
@@ -76,3 +76,35 @@
/obj/item/clothing/shoes/mod/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_NO_SPEED_POTION, INNATE_TRAIT)
/obj/item/clothing/glasses/mod
name = "MOD glasses"
desc = "A pair of glasses for a MODsuit."
icon = 'icons/obj/clothing/modsuit/mod_clothing.dmi'
icon_state = "standard-glasses"
base_icon_state = "glasses"
worn_icon = 'icons/mob/clothing/modsuit/mod_clothing.dmi'
armor_type = /datum/armor/none
equip_sound = null
pickup_sound = null
drop_sound = null
/obj/item/clothing/glasses/mod/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_NO_SPEED_POTION, INNATE_TRAIT)
/obj/item/clothing/neck/mod
name = "MOD tie"
desc = "An tie for a MODsuit."
icon = 'icons/obj/clothing/modsuit/mod_clothing.dmi'
icon_state = "standard-tie"
base_icon_state = "tie"
worn_icon = 'icons/mob/clothing/modsuit/mod_clothing.dmi'
armor_type = /datum/armor/none
equip_sound = null
pickup_sound = null
drop_sound = null
/obj/item/clothing/neck/mod/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_NO_SPEED_POTION, INNATE_TRAIT)
+3
View File
@@ -95,6 +95,9 @@
/obj/item/mod/construction/plating/civilian
theme = /datum/mod_theme/civilian
/obj/item/mod/construction/plating/portable_suit
theme = /datum/mod_theme/portable_suit
/obj/item/mod/construction/plating/engineering
theme = /datum/mod_theme/engineering
+36
View File
@@ -232,6 +232,42 @@
acid = 25
wound = 5
/datum/mod_theme/portable_suit
name = "portable suit"
desc = "A one-piece three-piece suit designed for maximum negotiating power. Provides no meaningful protection."
extended_desc = "The \"secret weapon\" of the Moonrakers Conglomerate, designed for maximum bureaucratic efficiency. \
While giving practically no protection against any physical threat, the aura of affluence it exudes is said to ward off \
bear markets."
default_skin = "psuit"
armor_type = /datum/armor/mod_theme_portable_suit
charge_drain = DEFAULT_CHARGE_DRAIN / 2
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT
complexity_max = DEFAULT_MAX_COMPLEXITY - 5
slot_flags = ITEM_SLOT_NECK
slowdown_deployed = 0
inbuilt_modules = list(/obj/item/mod/module/selfcleaner)
variants = list(
"psuit" = list(
/obj/item/clothing/glasses/mod = list(
UNSEALED_MESSAGE = GLASSES_UNSEAL_MESSAGE,
SEALED_MESSAGE = GLASSES_SEAL_MESSAGE,
),
/obj/item/clothing/suit/mod = list(
UNSEALED_MESSAGE = CHESTPLATE_UNSEAL_MESSAGE,
SEALED_MESSAGE = CHESTPLATE_SEAL_MESSAGE,
),
/obj/item/clothing/shoes/mod = list(
CAN_OVERSLOT = TRUE,
UNSEALED_MESSAGE = BOOT_UNSEAL_MESSAGE,
SEALED_MESSAGE = BOOT_SEAL_MESSAGE,
),
),
)
/datum/armor/mod_theme_portable_suit
bio = 50
/datum/mod_theme/engineering
name = "engineering"
desc = "An engineer-fit suit with heat and shock resistance. Nakamura Engineering's classic."
+10
View File
@@ -54,6 +54,16 @@
/obj/item/mod/module/flashlight,
)
/obj/item/mod/control/pre_equipped/portable_suit
theme = /datum/mod_theme/portable_suit
applied_modules = list(
/obj/item/mod/module/paper_dispenser,
/obj/item/mod/module/stamp,
)
default_pins = list(
/obj/item/mod/module/stamp,
)
/obj/item/mod/control/pre_equipped/engineering
theme = /datum/mod_theme/engineering
applied_modules = list(
+2 -2
View File
@@ -243,7 +243,7 @@
use_energy_cost = DEFAULT_CHARGE_DRAIN * 0.5
incompatible_modules = list(/obj/item/mod/module/paper_dispenser)
cooldown_time = 5 SECONDS
required_slots = list(ITEM_SLOT_GLOVES)
required_slots = list(ITEM_SLOT_GLOVES|ITEM_SLOT_NECK)
/// The total number of sheets created by this MOD. The more sheets, them more likely they set on fire.
var/num_sheets_dispensed = 0
@@ -286,7 +286,7 @@
device = /obj/item/stamp/mod
incompatible_modules = list(/obj/item/mod/module/stamp)
cooldown_time = 0.5 SECONDS
required_slots = list(ITEM_SLOT_GLOVES)
required_slots = list(ITEM_SLOT_GLOVES|ITEM_SLOT_NECK)
/obj/item/stamp/mod
name = "MOD electronic stamp"
@@ -109,3 +109,18 @@
var/refill_add = min(volume - reagents.total_volume, 2 * seconds_per_tick)
if(refill_add > 0)
reagents.add_reagent(/datum/reagent/space_cleaner, refill_add)
/obj/item/mod/module/selfcleaner
name = "MOD perfumer module"
desc = "A small spray to clean oneself up. Has a pleasant scent."
icon_state = "cleaner"
module_type = MODULE_USABLE
use_energy_cost = DEFAULT_CHARGE_DRAIN * 5
complexity = 1
incompatible_modules = list(/obj/item/mod/module/selfcleaner)
cooldown_time = 10 SECONDS
/obj/item/mod/module/selfcleaner/on_use(mob/activator)
activator.wash(CLEAN_WASH)
drain_power(use_energy_cost)
playsound(activator, 'sound/effects/spray.ogg', 50, FALSE)