Adds a new modsuit: The Lustwish Mod (#4218)

## About The Pull Request

Sprites by Toriate, commissioned by me
- This adds a new modsuit theme based off the standard modsuit which you
can aquire the plate theme for from the lustwish. (You still need a
modsuit to construct it with)
- A modsuit version of the hypno googles
- Added to entombed.

## Why It's Good For The Game

I think people will find this fun

## Proof Of Testing

<img width="220" height="258" alt="image"
src="https://github.com/user-attachments/assets/e8a3cbe1-d1c0-4999-a26f-749fca58b41d"
/>


![NVIDIA_Overlay_ezd2A4u9Ki](https://github.com/user-attachments/assets/f53b7fee-4a46-49f3-b22b-429f0305eb90)
## Changelog

🆑
add: New modsuit: Lustwish. You can aquire its construction plate from
the lustwish or the loadout
add: New entombed theme: Lustwish
/🆑
This commit is contained in:
The Sharkening
2025-07-28 00:03:26 -06:00
committed by GitHub
parent 76c6ac05ab
commit 5a52d385bd
13 changed files with 161 additions and 18 deletions
+11
View File
@@ -11,3 +11,14 @@ GLOBAL_LIST_INIT(chat_colors_by_mob_name, list(
#define BLOOD_COLOR_COPPER "#6E3B08"
#define BLOOD_COLOR_NANITE_SLURRY "#CCCCCC"
/// Modsuit hardlight colors
#define STANDARD_BLUE "standard_blue"
#define ALERT_AMBER "alert_amber"
#define CONTRACTOR_RED "contractor_red"
#define EXTRASHIELD_GREEN "extrashield_green"
#define EVIL_GREEN "evil_green"
#define ROYAL_PURPLE "royal_purple"
#define HAZARD_ORANGE "hazard_orange"
#define COSMIC_BLUE "cosmic_blue"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 148 KiB

@@ -2,15 +2,6 @@
// Remember these are read from:
// 'modular_skyrat/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/icons/MOD_mask.dmi'
#define STANDARD_BLUE "standard_blue"
#define ALERT_AMBER "alert_amber"
#define CONTRACTOR_RED "contractor_red"
#define EXTRASHIELD_GREEN "extrashield_green"
#define EVIL_GREEN "evil_green"
#define ROYAL_PURPLE "royal_purple"
#define HAZARD_ORANGE "hazard_orange"
#define COSMIC_BLUE "cosmic_blue"
/datum/mod_theme
/// Wether or not the MOD projects hardlight at all
var/hardlight = TRUE
@@ -110,12 +101,3 @@
/datum/mod_theme/administrative
hardlight_theme = COSMIC_BLUE
#undef STANDARD_BLUE
#undef ALERT_AMBER
#undef CONTRACTOR_RED
#undef EXTRASHIELD_GREEN
#undef EVIL_GREEN
#undef ROYAL_PURPLE
#undef HAZARD_ORANGE
#undef COSMIC_BLUE
@@ -140,6 +140,14 @@
/obj/item/reagent_containers/cup/bottle/incubus_draft = 6,
),
),
list(
"name" = "MOD Suit",
"icon" = FA_ICON_USER_ASTRONAUT,
"products" = list(
/obj/item/mod/construction/plating/lustwish = 5,
/obj/item/mod/module/hypno_visor = 5,
)
),
list(
"name" = "Structures",
"icon" = FA_ICON_HAMMER,
@@ -97,6 +97,7 @@
modsuit_skin = "civilian"
modsuit.skin = LOWER_TEXT(modsuit_skin)
add_unique_skin()
var/modsuit_name = client_source?.prefs.read_preference(/datum/preference/text/entombed_mod_name)
if (modsuit_name)
@@ -123,6 +124,22 @@
if (old_bag.atom_storage)
old_bag.atom_storage.dump_content_at(modsuit, modsuit.get_dumping_location(), human_holder)
/datum/quirk/equipping/entombed/proc/add_unique_skin() // Let's all agree: this is snowflakey. But I just want entombed players not to complain, sue me.
var/skin_override
var/mob_override
var/list/parts = modsuit.get_parts()
if (modsuit.skin == "lustwish")
skin_override = 'modular_zubbers/icons/obj/clothing/modsuit/mod_lustwish.dmi'
mob_override = 'modular_zubbers/icons/mob/clothing/modsuit/mod_lustwish.dmi'
if(isnull(skin_override) || isnull(mob_override))
return
for(var/obj/item/part as anything in parts + modsuit)
part.icon = skin_override
part.worn_icon = mob_override
modsuit.wearer?.update_clothing(part.slot_flags)
/datum/quirk/equipping/entombed/post_add()
. = ..()
// quickly deploy it on roundstart. we can't do this in add_unique because that gets called in the preview screen, which overwrites people's loadout stuff in suit/shoes/gloves slot. very unfun for them
@@ -179,6 +196,7 @@
"Mining",
"Prototype",
"Security",
"Lustwish"
)
/datum/preference/choiced/entombed_skin/create_default_value()
@@ -127,3 +127,9 @@
/datum/loadout_item/pocket_items/lunchbox_amongus
name = "Suspicious Red Lunchbox"
item_path = /obj/item/storage/lunchbox/amongus
/// Lustwish stuff
/datum/loadout_item/pocket_items/lustwish_theme
name = "Lustwish MOD theme"
item_path = /obj/item/mod/construction/plating/lustwish
@@ -103,3 +103,65 @@
),
)
. = ..()
#define LUSTWISH_HELMET_SEAL "slides closed"
#define LUSTWISH_HELMET_UNSEAL "slides open"
#define LUSTWISH_CHESTPLATE_SEAL "squeezes snugly around your body"
#define LUSTWISH_CHESTPLATE_UNSEAL "spontaniously loosens"
#define LUSTWISH_GAUNTLET_SEAL "clenches between each finger"
#define LUSTWISH_GAUNTLET_UNSEAL "relaxes from your hand"
#define LUSTWISH_BOOT_SEAL "squeezes tightly around your ankles"
#define LUSTWISH_BOOT_UNSEAL "gives room to your feet"
//// Sprites done by Toriate - Commissioned by The Sharkenning
/datum/mod_theme/lustwish
name = "lustwish"
desc = "A specialty designed lustwish themed modsuit which is based entirely off of earlier civilian modsuits."
default_skin = "lustwish"
hardlight_theme = ROYAL_PURPLE
ui_theme = "ntos_darkmode"
variants = list(
"lustwish" = list(
MOD_ICON_OVERRIDE = 'modular_zubbers/icons/obj/clothing/modsuit/mod_lustwish.dmi',
MOD_WORN_ICON_OVERRIDE = 'modular_zubbers/icons/mob/clothing/modsuit/mod_lustwish.dmi',
/obj/item/clothing/head/mod = list(
UNSEALED_LAYER = NECK_LAYER,
UNSEALED_CLOTHING = SNUG_FIT,
SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE|HEADINTERNALS,
SEALED_INVISIBILITY = HIDEFACIALHAIR|HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES|PEPPERPROOF,
UNSEALED_MESSAGE = LUSTWISH_HELMET_UNSEAL,
SEALED_MESSAGE = LUSTWISH_HELMET_SEAL,
),
/obj/item/clothing/suit/mod = list(
UNSEALED_CLOTHING = THICKMATERIAL,
SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
SEALED_INVISIBILITY = HIDEJUMPSUIT,
UNSEALED_MESSAGE = LUSTWISH_CHESTPLATE_UNSEAL,
SEALED_MESSAGE = LUSTWISH_CHESTPLATE_SEAL,
),
/obj/item/clothing/gloves/mod = list(
UNSEALED_CLOTHING = THICKMATERIAL,
SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
CAN_OVERSLOT = TRUE,
UNSEALED_MESSAGE = LUSTWISH_GAUNTLET_UNSEAL,
SEALED_MESSAGE = LUSTWISH_GAUNTLET_SEAL,
),
/obj/item/clothing/shoes/mod = list(
UNSEALED_CLOTHING = THICKMATERIAL,
SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
CAN_OVERSLOT = TRUE,
UNSEALED_MESSAGE = LUSTWISH_BOOT_UNSEAL,
SEALED_MESSAGE = LUSTWISH_BOOT_SEAL,
),
),
)
#undef LUSTWISH_HELMET_SEAL
#undef LUSTWISH_HELMET_UNSEAL
#undef LUSTWISH_CHESTPLATE_SEAL
#undef LUSTWISH_CHESTPLATE_UNSEAL
#undef LUSTWISH_GAUNTLET_SEAL
#undef LUSTWISH_GAUNTLET_UNSEAL
#undef LUSTWISH_BOOT_SEAL
#undef LUSTWISH_BOOT_UNSEAL
@@ -16,3 +16,9 @@
default_pins = list(
/obj/item/mod/module/jetpack,
)
/obj/item/mod/control/pre_equipped/lustwish
worn_icon = 'modular_zubbers/icons/mob/clothing/modsuit/mod_lustwish.dmi'
icon = 'modular_zubbers/icons/obj/clothing/modsuit/mod_lustwish.dmi'
icon_state = "lustwish-control"
theme = /datum/mod_theme/lustwish
@@ -0,0 +1,49 @@
/obj/item/mod/construction/plating/lustwish
icon = 'modular_zubbers/icons/mob/clothing/modsuit/mod_modules.dmi'
icon_state = "lustwish-plating"
theme = /datum/mod_theme/lustwish
/obj/item/mod/module/hypno_visor
name = "Hypnosis Module"
desc = "A module inserted into the visor of a suit in which commands can be processed. Use on self to set directives."
icon = 'modular_zubbers/icons/mob/clothing/modsuit/mod_modules.dmi'
icon_state = "module_hypno"
module_type = MODULE_PASSIVE
complexity = 0
idle_power_cost = DEFAULT_CHARGE_DRAIN * 0
incompatible_modules = list(/obj/item/mod/module/hypno_visor)
required_slots = list(ITEM_SLOT_HEAD)
overlay_state_inactive = "module_hypno_overlay"
overlay_icon_file = 'modular_zubbers/icons/mob/clothing/modsuit/mod_modules.dmi'
var/hypno_message
/obj/item/mod/module/hypno_visor/Destroy()
if(!mod)
return ..()
if(mod.wearer && part_activated)
mod.wearer.cure_trauma_type(/datum/brain_trauma/very_special/induced_hypnosis, TRAUMA_RESILIENCE_MAGIC)
return ..()
/obj/item/mod/module/hypno_visor/attack_self(mob/user)
. = ..()
hypno_message = tgui_input_text(user, "Change the hypnotic phrase.", max_length = MAX_MESSAGE_LEN)
/obj/item/mod/module/hypno_visor/on_part_activation()
if(!(mod.wearer.client?.prefs?.read_preference(/datum/preference/toggle/erp/hypnosis) && mod.wearer.client.prefs.read_preference(/datum/preference/toggle/erp/sex_toy)))
return to_chat(mod.wearer, span_warning("Mind resilient to hypnotic effects: Shutting down"))
if(hypno_message == "" || isnull(hypno_message))
hypno_message = "Obey"
mod.wearer.gain_trauma(new /datum/brain_trauma/very_special/induced_hypnosis(hypno_message), TRAUMA_RESILIENCE_MAGIC)
/obj/item/mod/module/hypno_visor/on_part_deactivation(deleting = FALSE)
mod.wearer.cure_trauma_type(/datum/brain_trauma/very_special/induced_hypnosis, TRAUMA_RESILIENCE_MAGIC)
/obj/item/mod/module/hypno_visor/on_install()
. = ..()
if(mod.skin != "lustwish")
overlay_state_inactive = null // Visual thing. Removes the overlay if it's not a part of the lustwish suit.
/obj/item/mod/module/hypno_visor/on_uninstall(deleting = FALSE)
. = ..()
if(isnull(overlay_state_inactive))
overlay_state_inactive = initial(overlay_state_inactive)
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 973 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

+1
View File
@@ -9484,6 +9484,7 @@
#include "modular_zubbers\code\modules\mod\mod_theme.dm"
#include "modular_zubbers\code\modules\mod\mod_types.dm"
#include "modular_zubbers\code\modules\mod\modules.dm"
#include "modular_zubbers\code\modules\mod\modules_lustwish.dm"
#include "modular_zubbers\code\modules\modular_computers\computer.dm"
#include "modular_zubbers\code\modules\modular_computers\programs\siliconmanagement.dm"
#include "modular_zubbers\code\modules\modular_items\code\cake_light.dm"