diff --git a/code/__DEFINES/~~bubber_defines/colors.dm b/code/__DEFINES/~~bubber_defines/colors.dm index 14b5c9a4139..95cf66938e1 100644 --- a/code/__DEFINES/~~bubber_defines/colors.dm +++ b/code/__DEFINES/~~bubber_defines/colors.dm @@ -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" diff --git a/modular_skyrat/master_files/icons/mob/mod.dmi b/modular_skyrat/master_files/icons/mob/mod.dmi index eaa565f62ea..024e5d7f5a2 100644 Binary files a/modular_skyrat/master_files/icons/mob/mod.dmi and b/modular_skyrat/master_files/icons/mob/mod.dmi differ diff --git a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/mod_themes.dm b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/mod_themes.dm index c2954a320c8..d8a15416adf 100644 --- a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/mod_themes.dm +++ b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/mod_themes.dm @@ -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 diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_machinery/lustwish.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_machinery/lustwish.dm index 7dfabd7aa72..130d8b134d9 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_machinery/lustwish.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_machinery/lustwish.dm @@ -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, diff --git a/modular_zubbers/code/datums/quirks/neutral_quirks/entombed.dm b/modular_zubbers/code/datums/quirks/neutral_quirks/entombed.dm index 3651149c1db..1c3d0eda115 100644 --- a/modular_zubbers/code/datums/quirks/neutral_quirks/entombed.dm +++ b/modular_zubbers/code/datums/quirks/neutral_quirks/entombed.dm @@ -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() diff --git a/modular_zubbers/code/modules/loadout/categories/pocket.dm b/modular_zubbers/code/modules/loadout/categories/pocket.dm index 1f9eddef25a..8b8a2a3bae9 100644 --- a/modular_zubbers/code/modules/loadout/categories/pocket.dm +++ b/modular_zubbers/code/modules/loadout/categories/pocket.dm @@ -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 diff --git a/modular_zubbers/code/modules/mod/mod_theme.dm b/modular_zubbers/code/modules/mod/mod_theme.dm index 3bba9eafa8f..94247253cc5 100644 --- a/modular_zubbers/code/modules/mod/mod_theme.dm +++ b/modular_zubbers/code/modules/mod/mod_theme.dm @@ -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 diff --git a/modular_zubbers/code/modules/mod/mod_types.dm b/modular_zubbers/code/modules/mod/mod_types.dm index 26dd3ae4331..cff5f113ae5 100644 --- a/modular_zubbers/code/modules/mod/mod_types.dm +++ b/modular_zubbers/code/modules/mod/mod_types.dm @@ -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 diff --git a/modular_zubbers/code/modules/mod/modules_lustwish.dm b/modular_zubbers/code/modules/mod/modules_lustwish.dm new file mode 100644 index 00000000000..6bf1d1e46e5 --- /dev/null +++ b/modular_zubbers/code/modules/mod/modules_lustwish.dm @@ -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) diff --git a/modular_zubbers/icons/mob/clothing/modsuit/mod_lustwish.dmi b/modular_zubbers/icons/mob/clothing/modsuit/mod_lustwish.dmi new file mode 100644 index 00000000000..ec5556f9b09 Binary files /dev/null and b/modular_zubbers/icons/mob/clothing/modsuit/mod_lustwish.dmi differ diff --git a/modular_zubbers/icons/mob/clothing/modsuit/mod_modules.dmi b/modular_zubbers/icons/mob/clothing/modsuit/mod_modules.dmi new file mode 100644 index 00000000000..e246c5915e8 Binary files /dev/null and b/modular_zubbers/icons/mob/clothing/modsuit/mod_modules.dmi differ diff --git a/modular_zubbers/icons/obj/clothing/modsuit/mod_lustwish.dmi b/modular_zubbers/icons/obj/clothing/modsuit/mod_lustwish.dmi new file mode 100644 index 00000000000..655e866f8d5 Binary files /dev/null and b/modular_zubbers/icons/obj/clothing/modsuit/mod_lustwish.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 9ca3a0eca6b..53a1f713117 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -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"