To begin enjoying your new friend, start by unpacking the included plushie. Our selection process goes through rigorous quality testing to ensure you'll always get the best toy for the job. With so many choices, you'll want to get the whole family in on the action.
Once you have everything ready, it's time to make the patented Donk Co. magic happen! Spray your new best friend with Love to Life™ solution, included in the complimentary spray bottle, and watch the stunning transformation!
But don't leave your new best friend hanging! Give them a big warm hug to celebrate the long and intimate friendship you'll be sharing.
Donk Co. is not responsible for any injury or loss of life that may occur while using the Love to Life™ solution. Do not allow access to children or adults without supervision by a chemist.
Do not drink, splash, inject, or otherwise handle the solution. Do not come into direct physical contact with the solution, or any object the solution has been applied to, under any circumstances."
+
+// Kinkmate listing for condom box
+/obj/item/storage/box/bulk_condoms
+ name = "surplus condom box"
+ desc = "A large collection of condoms, suitable for the safest of sluts!"
+ icon = 'modular_sand/icons/obj/fleshlight.dmi'
+ icon_state = "box"
+ custom_price = PRICE_BELOW_NORMAL // 20% discount from buying individually
+
+/obj/item/storage/box/bulk_condoms/ComponentInitialize()
+ . = ..()
+
+ // Define storage component
+ var/datum/component/storage/str = GetComponent(/datum/component/storage)
+
+ // Set max items to 10
+ str.max_items = 10
+
+ // Restrict contents to only condoms
+ str.can_hold = typecacheof(list(/obj/item/genital_equipment/condom))
+
+/obj/item/storage/box/bulk_condoms/PopulateContents()
+ // Add maximum amount
+ for(var/i in 1 to 10)
+ new /obj/item/genital_equipment/condom(src)
diff --git a/modular_splurt/code/game/objects/items/toys.dm b/modular_splurt/code/game/objects/items/toys.dm
index 1079de98bf..b131fd5c74 100644
--- a/modular_splurt/code/game/objects/items/toys.dm
+++ b/modular_splurt/code/game/objects/items/toys.dm
@@ -3,3 +3,106 @@
icon = 'modular_splurt/icons/obj/toy.dmi'
icon_state = "savannahivanovtoy"
desc = "Mini-Mecha action figure! Collect them all! 13/12."
+
+/obj/item/toy/figure/assistant/imaginary_friend
+ name = "imaginary friend action figure"
+ desc = "A toy that resembles a special friend."
+ toysay = "I'll always be your best friend!"
+ var/item_used
+
+/obj/item/toy/figure/assistant/imaginary_friend/attack_self(mob/user as mob)
+ // Check if already used
+ if(item_used)
+ // Warn user, then return
+ to_chat(user, span_warning("[src] does nothing. It must be broken."))
+ return
+
+ // Check if human user exists
+ if(!ishuman(user))
+ // Warn user, then return
+ to_chat(user, span_warning("You refrain from handling [src]."))
+ return
+
+ // Define human user
+ var/mob/living/carbon/human/mirror_user = user
+
+ // Add brain trauma
+ mirror_user.gain_trauma(/datum/brain_trauma/special/imaginary_friend, TRAUMA_RESILIENCE_SURGERY)
+
+ // Set item used variable
+ // This prevents future use
+ item_used = TRUE
+
+ // Alert in local chat
+ mirror_user.visible_message(span_warning("[mirror_user] plays with [src]."), span_warning("You start to remember [src], as if they were a real person!"))
+
+ // Set flavor text
+ name = "generic action figure"
+ desc = "It\'s just a normal toy."
+
+/obj/item/toy/beach_ball
+ var/obj/item/vibrator
+ var/enabled = FALSE
+
+/obj/item/toy/beach_ball/syndicate
+ icon_state = "ballsyndicate"
+ icon = 'modular_splurt/icons/misc/beach.dmi'
+ desc = "Hmm. This ball is a bit heavier and tougher than the others."
+
+/obj/item/toy/beach_ball/attackby(obj/item/I, mob/living/user)
+ if(istype(I, /obj/item/electropack/vibrator))
+ if(vibrator)
+ to_chat(user, span_warning("There is already a vibrator inside this!"))
+ else
+ if(!user.transferItemToLoc(I,src))
+ return
+ to_chat(user, span_notice("You put [I] inside [src]."))
+ vibrator = I
+
+/obj/item/toy/beach_ball/attack_self(mob/user)
+ var/list/options_list = list()
+ if(vibrator)
+ options_list += list("Eject" = image(icon = 'icons/radials/taperecorder.dmi', icon_state = "eject", dir = EAST))
+ options_list += list("Play" = image(icon = 'icons/radials/taperecorder.dmi', icon_state = "play", dir = WEST))
+ if(options_list)
+ var/selection = show_radial_menu(user, src, options_list, radius = 38, require_near = TRUE, tooltips = TRUE)
+ if(!selection)
+ return
+ switch(selection)
+ if("Play")
+ playsound(user, 'sound/effects/clock_tick.ogg', 50, 1, -1)
+ enabled = !enabled
+ if(enabled)
+ START_PROCESSING(SSobj, src)
+ else
+ STOP_PROCESSING(SSobj, src)
+ to_chat(user, "You toggle the [vibrator].")
+ if("Eject")
+ playsound(user, 'sound/weapons/empty.ogg', 100, 1)
+ to_chat(user, "You remove [vibrator] from [src].")
+ user.put_in_hands(vibrator)
+ enabled = FALSE
+ vibrator = null
+ update_icon()
+
+/obj/item/toy/beach_ball/process()
+ if(vibrator && enabled)
+ throw_at(get_edge_target_turf(src,pick(GLOB.alldirs)),3,1)
+ playsound(src, 'modular_splurt/sound/lewd/vibrate.ogg', 40, 1, -1)
+
+/obj/item/toy/beach_ball/syndicate/process()
+ . = ..()
+ if(vibrator && enabled)
+ throwforce = 60
+
+/obj/item/toy/beach_ball/syndicate/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback)
+ if(ishuman(thrower))
+ throwforce = 0
+ . = ..()
+
+/obj/item/toy/beach_ball/syndicate/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
+ . = ..()
+ if(istype(hit_atom, /turf/closed/wall) && throwforce > 0)
+ var/turf/closed/wall/W = hit_atom
+ W.dismantle_wall()
+
diff --git a/modular_splurt/code/modules/client/loadout/backpack.dm b/modular_splurt/code/modules/client/loadout/backpack.dm
index 92fa744e48..05ea0cc25f 100644
--- a/modular_splurt/code/modules/client/loadout/backpack.dm
+++ b/modular_splurt/code/modules/client/loadout/backpack.dm
@@ -4,6 +4,11 @@
name = "Condom"
path = /obj/item/genital_equipment/condom
+/datum/gear/backpack/condom_box
+ name = "Box of Condoms"
+ path = /obj/item/storage/box/bulk_condoms
+ cost = 2
+
/datum/gear/backpack/sounding
name = "Sounding rod"
path = /obj/item/genital_equipment/sounding
diff --git a/modular_splurt/code/modules/client/loadout/shoes.dm b/modular_splurt/code/modules/client/loadout/shoes.dm
index d10f823444..b75b1cd621 100644
--- a/modular_splurt/code/modules/client/loadout/shoes.dm
+++ b/modular_splurt/code/modules/client/loadout/shoes.dm
@@ -2,7 +2,7 @@
/datum/gear/shoes/footwraps
name = "Cloth Footwraps"
path= /obj/item/clothing/shoes/footwraps
-
+
/datum/gear/shoes/invisiboots
name = "Invisifiber Footwraps"
path= /obj/item/clothing/shoes/invisiboots
@@ -36,3 +36,7 @@
/datum/gear/shoes/puttee
restricted_roles = list("Security Officer", "Warden", "Head of Security", "Brig Physician", "Blueshield")
+
+/datum/gear/shoes/highheel_sandals
+ name = "High-heel Sandals"
+ path = /obj/item/clothing/shoes/highheel_sandals
diff --git a/modular_splurt/code/modules/client/loadout/uniform.dm b/modular_splurt/code/modules/client/loadout/uniform.dm
index 29d91596d7..e9beae208e 100644
--- a/modular_splurt/code/modules/client/loadout/uniform.dm
+++ b/modular_splurt/code/modules/client/loadout/uniform.dm
@@ -146,3 +146,11 @@
path = /obj/item/clothing/under/goner/fake/poly
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#E6E6E6")
+
+/datum/gear/uniform/leia_outfit
+ name = "Princess Leia Outfit"
+ path = /obj/item/clothing/under/misc/leia_outfit
+
+/datum/gear/uniform/performer/polychromic
+ name = "Polychromic performers one piece"
+ path = /obj/item/clothing/under/performer/polychromic
diff --git a/modular_splurt/code/modules/client/preferences.dm b/modular_splurt/code/modules/client/preferences.dm
index 683afd00cf..13b9bc882b 100644
--- a/modular_splurt/code/modules/client/preferences.dm
+++ b/modular_splurt/code/modules/client/preferences.dm
@@ -1,12 +1,18 @@
/datum/preferences
+ max_save_slots = DEFAULT_SAVE_SLOTS
var/unholypref = "No" //Goin 2 hell fo dis one
-
var/list/gfluid_blacklist = list() //Stuff you don't want people to cum into you
/datum/preferences/New(client/C)
if(!GLOB.genital_fluids_list)
build_genital_fluids_list() //I DON'T KNOW where else to put it, ok??
+ //Extra saves for donators
+ max_save_slots = CONFIG_GET(number/base_save_slots)
+ if(istype(C))
+ var/extra_slots = (IS_CKEY_DONATOR_GROUP(C.key, DONATOR_GROUP_TIER_1) + IS_CKEY_DONATOR_GROUP(C.key, DONATOR_GROUP_TIER_2) + IS_CKEY_DONATOR_GROUP(C.key, DONATOR_GROUP_TIER_3)) * 10
+ max_save_slots += extra_slots
+
. = ..()
/proc/build_genital_fluids_list()
diff --git a/modular_splurt/code/modules/clothing/clothing.dm b/modular_splurt/code/modules/clothing/clothing.dm
new file mode 100644
index 0000000000..d006aa26f1
--- /dev/null
+++ b/modular_splurt/code/modules/clothing/clothing.dm
@@ -0,0 +1,43 @@
+/obj/item/clothing
+ var/last_bites = 3 //Once clothes is shredded, this determines how many more bites till its deleted.
+ var/is_edible = 0 //Controls what can or can't be eaten by Clothes Eaters/Insects
+
+//Cloth eaters get some nutrients. A Jumpsuit will roughly give back 50 Nutrition. IF eaten fully.
+/obj/item/reagent_containers/food/snacks/clothing
+ list_reagents = list(/datum/reagent/consumable/nutriment = 3)
+
+//A call on attemp_forcefeed() without async to properly know if it worked or not. In theory this shouldn't cause any issues as only a small part of the population should ever run this.VS normal eating.
+/obj/item/reagent_containers/food/snacks/clothing/attack(mob/living/M, mob/living/user, attackchain_flags = NONE, damage_multiplier = 1)
+ if(user.a_intent == INTENT_HARM)
+ return ..()
+ return attempt_forcefeed(M, user)
+
+
+//As a bonus for having the Cloth Eater trait. You gain extra mood from eatin clothes, but damage them at the same time.
+/obj/item/clothing/attack(mob/M, mob/user, def_zone)
+ if(user.a_intent != INTENT_HARM)
+ if(HAS_TRAIT(M,TRAIT_CLOTH_EATER) || isinsect(M))
+ if(is_edible == 0) //This checks if an item can be shredded.
+ to_chat(M, "This item is too tough to eat.")
+ return FALSE //Return False to prevent the player smacking themselves with the item. Didn't want to risk a player accidently hurting themselves trying to eat anything.
+ var/obj/item/reagent_containers/food/snacks/clothing/clothing_as_food = new
+ clothing_as_food.name = name
+ var/mob/living/H = M
+ if(clothing_as_food.attack(M, user, def_zone)) //Staggered as calling it in the original IF will cause anyone who lacks either to eat.
+ if(damaged_clothes == CLOTHING_SHREDDED) //Check if we need to start breaking clothes
+ last_bites -= 1
+ to_chat(M, "There isn't much of the [name] left to eat.")
+ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "cloth_consumed", /datum/mood_event/cloth_eaten, src)
+ take_damage(20, sound_effect=FALSE)
+ qdel(clothing_as_food)
+ if(last_bites <= 0)
+ user.visible_message("[user] finishes eating the [name].")
+ qdel(src)
+ return TRUE
+ return ..()
+
+// Set the clothing's integrity back to 100%, remove all damage to bodyparts, and generally fix it up
+/obj/item/clothing/repair(mob/user, params)
+ .=..()
+ last_bites = 3
+
diff --git a/modular_splurt/code/modules/clothing/glasses/_glasses.dm b/modular_splurt/code/modules/clothing/glasses/_glasses.dm
index 6e356a528a..04d23745dc 100644
--- a/modular_splurt/code/modules/clothing/glasses/_glasses.dm
+++ b/modular_splurt/code/modules/clothing/glasses/_glasses.dm
@@ -1,6 +1,6 @@
/obj/item/clothing/glasses/aviators
name = "aviators"
- desc = "Strangely fasionable ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks flashes."
+ desc = "Strangely fashionable ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks flashes."
icon = 'modular_splurt/icons/obj/clothing/glasses.dmi'
icon_state = "aviator"
mob_overlay_icon = 'modular_splurt/icons/mobs/eyes.dmi'
@@ -8,3 +8,9 @@
flash_protect = 1
tint = 1
glass_colour_type = /datum/client_colour/glass_colour/gray
+
+/obj/item/clothing/glasses/eyepatch
+ is_edible = 1
+
+/obj/item/clothing/glasses/sunglasses/blindfold
+ is_edible = 1
diff --git a/modular_splurt/code/modules/clothing/glasses/hud.dm b/modular_splurt/code/modules/clothing/glasses/hud.dm
index 15cbf475b7..e6df06cf4a 100644
--- a/modular_splurt/code/modules/clothing/glasses/hud.dm
+++ b/modular_splurt/code/modules/clothing/glasses/hud.dm
@@ -2,7 +2,7 @@
/obj/item/clothing/glasses/hud/blueshield
name = "blueshield HUD glasses"
- desc = "A hud with multiple functions."
+ desc = "A HUD with multiple functions."
actions_types = list(/datum/action/item_action/switch_hud)
icon_state = "sunhudmed"
icon = 'icons/obj/clothing/glasses.dmi'
@@ -36,7 +36,7 @@
/obj/item/clothing/glasses/hud/blueshield/aviators
name = "blueshield HUD Aviators"
- desc = "A hud with multiple functions. More stylish."
+ desc = "A HUD with multiple functions. More stylish."
actions_types = list(/datum/action/item_action/switch_hud)
icon = 'modular_splurt/icons/obj/clothing/glasses.dmi'
icon_state = "aviator_med"
@@ -72,12 +72,12 @@
/obj/item/clothing/glasses/hud/blueshield/aviators/prescription
name = "prescription blueshield HUD Aviators"
- desc = "A hud with multiple functions. More stylish. Equipped with prescription lenses."
+ desc = "A HUD with multiple functions. More stylish. Equipped with prescription lenses."
vision_correction = 1
/obj/item/clothing/glasses/hud/blueshield/prescription
name = "prescription blueshield HUD"
- desc = "A hud with multiple functions. Equipped with prescription lenses."
+ desc = "A HUD with multiple functions. Equipped with prescription lenses."
vision_correction = 1
// Med HUDs
@@ -97,14 +97,14 @@
// Sec HUDs
/obj/item/clothing/glasses/hud/security/sunglasses/aviators
- name = "secuirity HUD aviators"
+ name = "security HUD aviators"
desc = "aviators with a security HUD."
icon = 'modular_splurt/icons/obj/clothing/glasses.dmi'
icon_state = "aviator_sec"
mob_overlay_icon = 'modular_splurt/icons/mobs/eyes.dmi'
/obj/item/clothing/glasses/hud/security/sunglasses/aviators/prescription
- name = "prescription secuirity HUD aviators"
+ name = "prescription security HUD aviators"
desc = "aviators with a security HUD with prescription lenses."
vision_correction = 1
diff --git a/modular_splurt/code/modules/clothing/gloves.dm b/modular_splurt/code/modules/clothing/gloves.dm
index cd62afea1b..74af3a9f02 100644
--- a/modular_splurt/code/modules/clothing/gloves.dm
+++ b/modular_splurt/code/modules/clothing/gloves.dm
@@ -1,6 +1,6 @@
/obj/item/clothing/gloves/cbrn
name = "CBRN gloves"
- desc = "Chemical, Biological, Radiological and Nuclear. Thick black gloves design for working in hazardus evniroments. Warning not shock proof."
+ desc = "Chemical, Biological, Radiological and Nuclear. Thick black gloves design for working in hazardous environments. Warning not shock proof."
icon_state = "black"
item_state = "blackgloves"
siemens_coefficient = 1
@@ -14,21 +14,22 @@
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
armor = list("melee" = 5, "bullet" = 0, "laser" = 5,"energy" = 5, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 40, "acid" = 100)
strip_mod = 1.5
+ is_edible = 0
/obj/item/clothing/gloves/cbrn/engineer
name = "engineer CBRN gloves"
siemens_coefficient = 0
- desc = "Chemical, Biological, Radiological and Nuclear. Thick black gloves design for working in hazardus evniroments. Improved for engineering hazards"
+ desc = "Chemical, Biological, Radiological and Nuclear. Thick black gloves design for working in hazardous environments. Improved for engineering hazards"
/obj/item/clothing/gloves/cbrn/mopp
name = "MOPP gloves"
- desc = "Mission Oriented Protective Posture. Thick black gloves design for working in hazardus combat evniroments. Still not shock proof"
+ desc = "Mission Oriented Protective Posture. Thick black gloves design for working in hazardous combat environments. Still not shock proof"
icon_state = "combat"
armor = list("melee" = 10, "bullet" = 0, "laser" = 10,"energy" = 10, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 40, "acid" = 100)
/obj/item/clothing/gloves/cbrn/mopp/advance
name = "advance MOPP gloves"
- desc = "Mission Oriented Protective Posture. Thick black gloves design for working in hazardus combat evniroments. Advance varaints for Central Command staff and ERT team. Insulated."
+ desc = "Mission Oriented Protective Posture. Thick black gloves design for working in hazardous combat environments. Advance variants for Central Command staff and ERT team. Insulated."
icon_state = "combat"
siemens_coefficient = 0
armor = list("melee" = 15, "bullet" = 0, "laser" = 15,"energy" = 15, "bomb" = 20, "bio" = 110, "rad" = 110, "fire" = 60, "acid" = 110)
diff --git a/modular_splurt/code/modules/clothing/gloves/_gloves.dm b/modular_splurt/code/modules/clothing/gloves/_gloves.dm
new file mode 100644
index 0000000000..22f54d4075
--- /dev/null
+++ b/modular_splurt/code/modules/clothing/gloves/_gloves.dm
@@ -0,0 +1,2 @@
+/obj/item/clothing/gloves
+ is_edible = 1
diff --git a/modular_splurt/code/modules/clothing/head/_head.dm b/modular_splurt/code/modules/clothing/head/_head.dm
new file mode 100644
index 0000000000..281c24b862
--- /dev/null
+++ b/modular_splurt/code/modules/clothing/head/_head.dm
@@ -0,0 +1,2 @@
+/obj/item/clothing/head
+ is_edible = 1 //Helment and Hardhats + some Special misc are unedible
diff --git a/modular_splurt/code/modules/clothing/head/hardhat.dm b/modular_splurt/code/modules/clothing/head/hardhat.dm
new file mode 100644
index 0000000000..24c83f606d
--- /dev/null
+++ b/modular_splurt/code/modules/clothing/head/hardhat.dm
@@ -0,0 +1,2 @@
+/obj/item/clothing/head/hardhat
+ is_edible = 0
diff --git a/modular_splurt/code/modules/clothing/head/helmet.dm b/modular_splurt/code/modules/clothing/head/helmet.dm
index f15a9368df..aaad3a6243 100644
--- a/modular_splurt/code/modules/clothing/head/helmet.dm
+++ b/modular_splurt/code/modules/clothing/head/helmet.dm
@@ -1,4 +1,7 @@
// GWTB-inspired stuff wooo
+/obj/item/clothing/head/helmet
+ is_edible = 0
+
/obj/item/clothing/head/helmet/goner
name = "trencher helmet"
desc = "A No Man's Land-type helmet with purple paint applied."
@@ -15,7 +18,7 @@
/obj/item/clothing/head/helmet/goner/fake/poly
name = "polychromic trencher helmet"
- desc = "A plastic helmet with polychromatic spot."
+ desc = "A plastic helmet with polychromic spot."
var/list/poly_colors = list("#D9D9D9")
/obj/item/clothing/head/helmet/goner/fake/poly/ComponentInitialize()
@@ -56,7 +59,7 @@
/obj/item/clothing/head/helmet/goner/officer/fake/poly
name = "polychromic trencher officer cap"
- desc = "A cheap officer cap with polychromatic pin."
+ desc = "A cheap officer cap with polychromic pin."
var/list/poly_colors = list("#F2F2F2")
/obj/item/clothing/head/helmet/goner/officer/fake/poly/ComponentInitialize()
diff --git a/modular_splurt/code/modules/clothing/head/jobs.dm b/modular_splurt/code/modules/clothing/head/jobs.dm
index cf5bc553b4..e989e5bc2d 100644
--- a/modular_splurt/code/modules/clothing/head/jobs.dm
+++ b/modular_splurt/code/modules/clothing/head/jobs.dm
@@ -15,7 +15,7 @@
/obj/item/clothing/head/blueshield/formal
name = "blueshield formal beret"
- desc = "The robust beret for the Blueshield. A formal varaint of the standard beret."
+ desc = "The robust beret for the Blueshield. A formal variant of the standard beret."
icon_state = "blueshield"
item_state = "blueshield"
icon = 'modular_splurt/icons/obj/clothing/head.dmi'
@@ -31,7 +31,7 @@
/obj/item/clothing/head/beret/sec/peacekeeper
name = "peacekeeper beret"
- desc = "A robust beret with a grey varaint of the security insignia emblazoned on it. This one is modeled is design to make people less scared of an officer."
+ desc = "A robust beret with a grey variant of the security insignia emblazoned on it. This one is modeled is design to make people less scared of an officer."
icon_state = "policeberet"
item_state = "policeberet"
icon = 'modular_splurt/icons/obj/clothing/head.dmi'
@@ -39,7 +39,7 @@
/obj/item/clothing/head/helmet/metrocop
name = "civil protection helmet"
- desc = "Saldy lacks a working voice encoder."
+ desc = "Sadly lacks a working voice encoder."
icon_state = "metrocop_helmet"
item_state = "metrocop_helmet"
icon = 'modular_splurt/icons/obj/clothing/head.dmi'
@@ -49,13 +49,13 @@
/obj/item/clothing/head/beret/sec/peacekeeper/warden
name = "warden's peacekeeper beret"
- desc = "A robust beret with a red varaint of the security insignia emblazoned on it. This one is issiued to wardens."
+ desc = "A robust beret with a red variant of the security insignia emblazoned on it. This one is issued to wardens."
icon_state = "policeberetred"
item_state = "policeberetred"
/obj/item/clothing/head/beret/sec/peacekeeper/hos
name = "head of security's peacekeeper beret"
- desc = "A robust beret with a gold varaint of the security insignia emblazoned on it. This one is issiued to the Head of Security."
+ desc = "A robust beret with a gold variant of the security insignia emblazoned on it. This one is issued to the Head of Security."
icon_state = "policeberetgold"
item_state = "policeberetgold"
diff --git a/modular_splurt/code/modules/clothing/head/misc.dm b/modular_splurt/code/modules/clothing/head/misc.dm
index 6c5164be1e..eb14ad475d 100644
--- a/modular_splurt/code/modules/clothing/head/misc.dm
+++ b/modular_splurt/code/modules/clothing/head/misc.dm
@@ -26,7 +26,7 @@
name = "press helmet"
icon_state = "press_helmet"
item_state = "press_helmet"
- desc = "A lightweight helmet for reporting on security. You swear up and down it is made of kevlar and not old cloth and plastic."
+ desc = "A lightweight helmet for reporting on security. You swear up and down it is made of Kevlar and not old cloth and plastic."
icon = 'modular_splurt/icons/obj/clothing/head.dmi'
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/head.dmi'
flags_inv = HIDEHAIR
@@ -51,6 +51,7 @@
flags_inv = HIDEHAIR|HIDEEARS
resistance_flags = ACID_PROOF
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
+ is_edible = 0
/obj/item/clothing/head/helmet/cbrn/mopp
name = "MOPP hood"
@@ -59,6 +60,7 @@
item_state = "mopphood"
can_flashlight = 1
armor = list("melee" = 40, "bullet" = 30, "laser" = 30,"energy" = 10, "bomb" = 25, "bio" = 100, "rad" = 100, "fire" = 40, "acid" = 100)
+ is_edible = 0
/obj/item/clothing/head/helmet/cbrn/mopp/advance
name = "advance MOPP hood"
@@ -66,6 +68,7 @@
can_flashlight = 1
armor = list("melee" = 50, "bullet" = 40, "laser" = 40,"energy" = 20, "bomb" = 35, "bio" = 110, "rad" = 110, "fire" = 50, "acid" = 110)
clothing_flags = NONE
+ is_edible = 0
// research nods
@@ -81,7 +84,7 @@
/datum/design/cbrn/mopphood
name = "MOPP Hood"
- desc = "A MOPP hood with an intergreted helmet"
+ desc = "A MOPP hood with an integrated helmet"
id = "mopp_hood"
build_type = PROTOLATHE
materials = list(/datum/material/plastic = 200, /datum/material/uranium = 50, /datum/material/iron = 200)
diff --git a/modular_splurt/code/modules/clothing/head/misc_special.dm b/modular_splurt/code/modules/clothing/head/misc_special.dm
new file mode 100644
index 0000000000..9a86ddcb53
--- /dev/null
+++ b/modular_splurt/code/modules/clothing/head/misc_special.dm
@@ -0,0 +1,5 @@
+/obj/item/clothing/head/welding
+ is_edible = 0
+
+/obj/item/clothing/head/hardhat/cakehat
+ is_edible = 1
diff --git a/modular_splurt/code/modules/clothing/kinkyclothes.dm b/modular_splurt/code/modules/clothing/kinkyclothes.dm
index 98bbb21e4a..4707c98cce 100644
--- a/modular_splurt/code/modules/clothing/kinkyclothes.dm
+++ b/modular_splurt/code/modules/clothing/kinkyclothes.dm
@@ -67,8 +67,8 @@
mutantrace_variation = NONE
/obj/item/clothing/under/centcomdress
- name = "Centcom Dress Uniform"
- desc = "A stylish yet revealing dress uniform worn in extravagent black and gold, worthy of those who sit around and watch cameras all day in an office."
+ name = "CentCom Dress Uniform"
+ desc = "A stylish yet revealing dress uniform worn in extravagant black and gold, worthy of those who sit around and watch cameras all day in an office."
icon = 'modular_splurt/icons/obj/clothing/suits.dmi'
icon_state = "ccdress"
mob_overlay_icon = 'modular_splurt/icons/mobs/suits.dmi'
@@ -83,7 +83,7 @@
armor = list("melee" = 60, "bullet" = 80, "laser" = 80, "energy" = 90, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50)
/obj/item/clothing/under/centcomdress/vk
- name = "Virginkiller Centcom Dress Uniform"
+ name = "Virginkiller CentCom Dress Uniform"
desc = "This black and gold beauty does not help paperwork get done, it seems."
icon_state = "ccdressvk"
@@ -114,7 +114,10 @@
icon_state = "vaultsuit"
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/uniform.dmi'
item_state = "b_suit"
+ item_state = "b_suit"
can_adjust = FALSE
+ anthro_mob_worn_overlay = 'modular_splurt/icons/mob/clothing/uniform_digi.dmi'
+ mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC
var/firstpickup = TRUE
var/pickupsound = TRUE
diff --git a/modular_splurt/code/modules/clothing/lewd_clothing/collar/kink_collars.dm b/modular_splurt/code/modules/clothing/lewd_clothing/collar/kink_collars.dm
index d170e12dba..10e4c4ea6a 100644
--- a/modular_splurt/code/modules/clothing/lewd_clothing/collar/kink_collars.dm
+++ b/modular_splurt/code/modules/clothing/lewd_clothing/collar/kink_collars.dm
@@ -19,7 +19,7 @@
/obj/item/mind_controller/Initialize(mapload, collar)
//Store the collar on creation.
src.collar = collar
- . = ..() //very important to call parent in Intialize
+ . = ..() //very important to call parent in Initialize
/obj/item/mind_controller/attack_self(mob/user)
if (collar)
diff --git a/modular_splurt/code/modules/clothing/lewd_clothing/eyes/hypnogoggles.dm b/modular_splurt/code/modules/clothing/lewd_clothing/eyes/hypnogoggles.dm
index 58c5b5281f..9bc3ef1d7d 100644
--- a/modular_splurt/code/modules/clothing/lewd_clothing/eyes/hypnogoggles.dm
+++ b/modular_splurt/code/modules/clothing/lewd_clothing/eyes/hypnogoggles.dm
@@ -38,7 +38,7 @@
if(victim.glasses == src)
victim.cure_trauma_type(/datum/brain_trauma/induced_hypnosis, TRAUMA_RESILIENCE_BASIC)
-/obj/item/clothing/glasses/hypno/attack_self(mob/user) //Setting up hypnotising phrase
+/obj/item/clothing/glasses/hypno/attack_self(mob/user) //Setting up hypnotizing phrase
. = ..()
codephrase = stripped_input(user, "Change the hypnotic phrase")
// Notice to the user that this shouldn't be used outside of kink related purpose.
diff --git a/modular_splurt/code/modules/clothing/lewd_clothing/foot/lewd_shoes.dm b/modular_splurt/code/modules/clothing/lewd_clothing/foot/lewd_shoes.dm
index 061a1c85b6..718c3d2974 100644
--- a/modular_splurt/code/modules/clothing/lewd_clothing/foot/lewd_shoes.dm
+++ b/modular_splurt/code/modules/clothing/lewd_clothing/foot/lewd_shoes.dm
@@ -19,7 +19,7 @@
var/mob/living/carbon/C = user
if(iscarbon(user) && (user.get_item_by_slot(ITEM_SLOT_FEET) == src))
if(seamless)
- to_chat(C, span_purple(pick("You slide your heels against eachother in a failed attempt at kicking them off.",
+ to_chat(C, span_purple(pick("You slide your heels against each other in a failed attempt at kicking them off.",
"The heels refuse to budge no matter how much you tug.",
"The heels are tight around your ankles and the laces refuse to loosen.")))
return
diff --git a/modular_splurt/code/modules/clothing/lewd_clothing/head/deprivation_helmet.dm b/modular_splurt/code/modules/clothing/lewd_clothing/head/deprivation_helmet.dm
index 8dd3ca8717..4376d2c773 100644
--- a/modular_splurt/code/modules/clothing/lewd_clothing/head/deprivation_helmet.dm
+++ b/modular_splurt/code/modules/clothing/lewd_clothing/head/deprivation_helmet.dm
@@ -6,7 +6,7 @@
/obj/item/clothing/head/helmet/space/deprivation_helmet
name = "deprivation helmet"
- desc = "Сompletely cuts off the wearer from the outside world."
+ desc = "Completely cuts off the wearer from the outside world."
icon_state = "dephelmet"
item_state = "dephelmet"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 25, "rad" = 0, "fire" = 20, "acid" = 15, "wound" = 0)
diff --git a/modular_splurt/code/modules/clothing/lewd_clothing/head/hats.dm b/modular_splurt/code/modules/clothing/lewd_clothing/head/hats.dm
index 5adac22edd..c44d4781f4 100644
--- a/modular_splurt/code/modules/clothing/lewd_clothing/head/hats.dm
+++ b/modular_splurt/code/modules/clothing/lewd_clothing/head/hats.dm
@@ -23,7 +23,7 @@
/obj/item/clothing/head/blueshield/officercap
name = "blueshield officer cap"
- desc = "A officer cap of the Blueshield. It makes you feel more important then you acutally are."
+ desc = "A officer cap of the Blueshield. It makes you feel more important then you actually are."
icon_state = "blueshieldcap"
item_state = "blueshieldcap"
@@ -56,7 +56,7 @@
/obj/item/clothing/head/helmet/sec/blueshield
name = "blueshield helmet"
- desc = "Reenforced Blueshield Security gear. Protects the head from impacts. You where this because you are boring."
+ desc = "Reinforced Blueshield Security gear. Protects the head from impacts. You where this because you are boring."
icon_state = "bluehelmet"
item_state = "bluehelmet"
icon = 'modular_splurt/icons/obj/clothing/head.dmi'
diff --git a/modular_splurt/code/modules/clothing/masks/_mask.dm b/modular_splurt/code/modules/clothing/masks/_mask.dm
new file mode 100644
index 0000000000..d5f6e0f180
--- /dev/null
+++ b/modular_splurt/code/modules/clothing/masks/_mask.dm
@@ -0,0 +1,2 @@
+/obj/item/clothing/mask
+ is_edible = 1
diff --git a/modular_splurt/code/modules/clothing/masks/boxing.dm b/modular_splurt/code/modules/clothing/masks/boxing.dm
new file mode 100644
index 0000000000..89015338f3
--- /dev/null
+++ b/modular_splurt/code/modules/clothing/masks/boxing.dm
@@ -0,0 +1,2 @@
+/obj/item/clothing/mask/infiltrator
+ is_edible = 0
diff --git a/modular_splurt/code/modules/clothing/masks/gasmask.dm b/modular_splurt/code/modules/clothing/masks/gasmask.dm
index 460d695571..7d7066ab86 100644
--- a/modular_splurt/code/modules/clothing/masks/gasmask.dm
+++ b/modular_splurt/code/modules/clothing/masks/gasmask.dm
@@ -1,6 +1,9 @@
+/obj/item/clothing/mask/gas
+ is_edible = 0
+
/obj/item/clothing/mask/gas/radmask
name = "radiation mask"
- desc = "An mask that somewhat protects the user from ratiation. Not as effective like a radiation hood, but is better than nothing."
+ desc = "An mask that somewhat protects the user from radiation. Not as effective like a radiation hood, but is better than nothing."
icon = 'modular_splurt/icons/obj/clothing/masks.dmi'
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/mask.dmi'
anthro_mob_worn_overlay = 'modular_splurt/icons/mob/clothing/mask_muzzle.dmi'
diff --git a/modular_splurt/code/modules/clothing/masks/miscellaneous.dm b/modular_splurt/code/modules/clothing/masks/miscellaneous.dm
index 8e89fd9f8e..865d5633ea 100644
--- a/modular_splurt/code/modules/clothing/masks/miscellaneous.dm
+++ b/modular_splurt/code/modules/clothing/masks/miscellaneous.dm
@@ -20,7 +20,7 @@
/obj/item/clothing/mask/gas/cbrn
name = "CBRN gas mask"
- desc = "Chemical, Biological, Radiological and Nuclear. A heavy duty gas mask design to be worn in hazardus enviorments. Acutally works like a gas mask as well as can be connected to intenral air supply."
+ desc = "Chemical, Biological, Radiological and Nuclear. A heavy duty gas mask design to be worn in hazardous environments. Actually works like a gas mask as well as can be connected to internal air supply."
item_state = "gas_cbrn"
icon_state = "gas_cbrn"
icon = 'modular_splurt/icons/obj/clothing/masks.dmi'
@@ -35,17 +35,18 @@
visor_flags_inv = 0
flavor_adjust = FALSE
armor = list("melee" = 5, "bullet" = 0, "laser" = 5,"energy" = 5, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 40, "acid" = 100)
+ is_edible = 0
/obj/item/clothing/mask/gas/cbrn/mopp
name = "MOPP gas mask"
- desc = "Mission Oriented Protective Posture. A heavy duty gas mask design to be worn in hazardus combat enviorments. Acutally works like a gas mask as well as can be connected to intenral air supply."
+ desc = "Mission Oriented Protective Posture. A heavy duty gas mask design to be worn in hazardous combat environments. Actually works like a gas mask as well as can be connected to internal air supply."
item_state = "gas_mopp"
icon_state = "gas_mopp"
armor = list("melee" = 10, "bullet" = 5, "laser" = 10,"energy" = 10, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 40, "acid" = 100)
/obj/item/clothing/mask/gas/cbrn/mopp/advance
name = "advance MOPP gas mask"
- desc = "Mission Oriented Protective Posture. A heavy duty gas mask design to be worn in hazardus combat enviorments. Acutally works like a gas mask as well as can be connected to intenral air supply. Used by Centcom Staff and ERT teams."
+ desc = "Mission Oriented Protective Posture. A heavy duty gas mask design to be worn in hazardous combat environments. Actually works like a gas mask as well as can be connected to internal air supply. Used by CentCom Staff and ERT teams."
armor = list("melee" = 20, "bullet" = 10, "laser" = 20,"energy" = 20, "bomb" = 20, "bio" = 110, "rad" = 110, "fire" = 50, "acid" = 110)
//broken huds for loot
@@ -77,7 +78,7 @@
/obj/item/clothing/glasses/brokenhud/health/night
name = "broken night vision health scanner HUD"
- desc = "An advanced medical heads-up display that allows doctors to find patients in complete darkness. However the eletronics seem to no longer work"
+ desc = "An advanced medical heads-up display that allows doctors to find patients in complete darkness. However the electronics seem to no longer work"
icon_state = "healthhudnight"
item_state = "glasses"
glass_colour_type = /datum/client_colour/glass_colour/green
diff --git a/modular_splurt/code/modules/clothing/neck/_neck.dm b/modular_splurt/code/modules/clothing/neck/_neck.dm
index f17afa4e9f..40ae719af7 100644
--- a/modular_splurt/code/modules/clothing/neck/_neck.dm
+++ b/modular_splurt/code/modules/clothing/neck/_neck.dm
@@ -1,9 +1,16 @@
+/obj/item/clothing/neck
+ is_edible = 1
+
+/obj/item/clothing/neck/stethoscope
+ is_edible = 2
+
/obj/item/clothing/neck/petcollar/locked/security
name = "security collar"
desc = "For when you need to show everyone who your pet belongs to."
icon = 'modular_splurt/icons/obj/clothing/neck.dmi'
icon_state = "seccollar"
poly_states = 0
+ is_edible = 0
/obj/item/clothing/neck/petcollar/spike
name = "Spiked Pet Collar"
@@ -12,6 +19,7 @@
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/neck.dmi'
icon_state = "collar_spik"
poly_states = 0
+ is_edible = 0
/obj/item/clothing/neck/petcollar/locked/spike
name = "Spiked Pet Collar"
@@ -36,6 +44,7 @@
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/neck.dmi'
icon_state = "collar_holo"
poly_states = 0
+ is_edible = 0
/obj/item/clothing/neck/petcollar/casino
name = "Casino Collar"
@@ -52,6 +61,7 @@
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/neck.dmi'
icon_state = "casinoslave_available"
poly_states = 0
+ is_edible = 0
/obj/item/clothing/neck/petcollar/locked/casino/attackby(obj/item/K, mob/user, params)
. = ..()
diff --git a/modular_splurt/code/modules/clothing/shoes/_shoes.dm b/modular_splurt/code/modules/clothing/shoes/_shoes.dm
new file mode 100644
index 0000000000..bc1fb9812f
--- /dev/null
+++ b/modular_splurt/code/modules/clothing/shoes/_shoes.dm
@@ -0,0 +1,2 @@
+/obj/item/clothing/shoes
+ is_edible = 1
diff --git a/modular_splurt/code/modules/clothing/shoes/magboots.dm b/modular_splurt/code/modules/clothing/shoes/magboots.dm
new file mode 100644
index 0000000000..b3c8d6dff8
--- /dev/null
+++ b/modular_splurt/code/modules/clothing/shoes/magboots.dm
@@ -0,0 +1,2 @@
+/obj/item/clothing/shoes/magboots
+ is_edible = 0
diff --git a/modular_splurt/code/modules/clothing/shoes/miscellaneous.dm b/modular_splurt/code/modules/clothing/shoes/miscellaneous.dm
index 80e04717e6..d87fd74ce7 100644
--- a/modular_splurt/code/modules/clothing/shoes/miscellaneous.dm
+++ b/modular_splurt/code/modules/clothing/shoes/miscellaneous.dm
@@ -35,7 +35,7 @@
/obj/item/clothing/shoes/workboots/toeless
name = "toe-less workboots"
- desc = "A pair of toeless work boots designed for use in industrial settings. Modified for species whose toes have claws."
+ desc = "A pair of toe-less work boots designed for use in industrial settings. Modified for species whose toes have claws."
icon = 'modular_splurt/icons/obj/clothing/shoes.dmi'
icon_state = "workboots-toeless"
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/shoes.dmi'
@@ -43,7 +43,7 @@
/obj/item/clothing/shoes/jackboots/cbrn
name = "CBRN boots"
- desc = "Chemical, Biological, Radiological and Nuclear. Thick black boots design for working in hazardus evniroments."
+ desc = "Chemical, Biological, Radiological and Nuclear. Thick black boots design for working in hazardous environments."
icon = 'modular_splurt/icons/obj/clothing/shoes.dmi'
icon_state = "cbrnboots"
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/shoes.dmi'
@@ -51,15 +51,16 @@
resistance_flags = ACID_PROOF
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
armor = list("melee" = 5, "bullet" = 0, "laser" = 5,"energy" = 5, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 40, "acid" = 100)
+ is_edible = 0
/obj/item/clothing/shoes/jackboots/cbrn/mopp
name = "MOPP boots"
- desc = "Mission Oriented Protective Posture. Thick black boots design for working in hazardus combat evniroments."
+ desc = "Mission Oriented Protective Posture. Thick black boots design for working in hazardous combat environments."
armor = list("melee" = 10, "bullet" = 0, "laser" = 10,"energy" = 10, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 40, "acid" = 100)
/obj/item/clothing/shoes/jackboots/cbrn/mopp/advance
name = "advance MOPP boots"
- desc = "Mission Oriented Protective Posture. Thick black boots design for working in hazardus combat evniroments. Used by Centcom Officer and ERT staff."
+ desc = "Mission Oriented Protective Posture. Thick black boots design for working in hazardous combat environments. Used by CentCom Officer and ERT staff."
armor = list("melee" = 10, "bullet" = 0, "laser" = 10,"energy" = 10, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 40, "acid" = 100)
clothing_flags = NOSLIP
@@ -83,3 +84,15 @@
build_path = /obj/item/clothing/shoes/jackboots/cbrn/mopp
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+/obj/item/clothing/shoes/highheel_sandals
+ name = "high-heel sandals"
+ desc = "A pair of high-heel sandals"
+ icon = 'modular_splurt/icons/obj/clothing/shoes.dmi'
+ mob_overlay_icon = 'modular_splurt/icons/mob/clothing/shoes.dmi'
+ anthro_mob_worn_overlay = 'modular_splurt/icons/mob/clothing/shoes_digi.dmi'
+ icon_state = "highheel_sandals"
+
+/obj/item/clothing/shoes/highheel_sandals/Initialize()
+ . = ..()
+ AddComponent(/datum/component/squeak, list('modular_splurt/sound/effects/footstep/highheel1.ogg' = 1,'modular_splurt/sound/effects/footstep/highheel2.ogg' = 1), 20)
diff --git a/modular_splurt/code/modules/clothing/spacesuits/hardsuit.dm b/modular_splurt/code/modules/clothing/spacesuits/hardsuit.dm
index c0ebab45ee..d56d5a7e45 100644
--- a/modular_splurt/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/modular_splurt/code/modules/clothing/spacesuits/hardsuit.dm
@@ -22,7 +22,7 @@
//Own stuff
/obj/item/clothing/head/helmet/space/hardsuit/rd/hev
name = "HEV Suit helmet"
- desc = "A Hazardous Environment Helmet. It fits snug over the suit and has a heads-up display for researchers. The flashlight seems broken, fitting considering this was made before the start of the milennium."
+ desc = "A Hazardous Environment Helmet. It fits snug over the suit and has a heads-up display for researchers. The flashlight seems broken, fitting considering this was made before the start of the millennium."
icon = 'modular_splurt/icons/obj/clothing/hats.dmi'
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/head.dmi'
anthro_mob_worn_overlay = 'modular_splurt/icons/mob/clothing/head_muzzled.dmi'
@@ -38,7 +38,7 @@
/obj/item/clothing/suit/space/hardsuit/rd/hev
name = "HEV Suit"
- desc = "The hazard suit. It was designed to protect scientists from the blunt trauma, radiation, energy discharge that hazardous materials might produce or entail. Fits you like a glove. The automatic medical system seems broken... They're waiting for you, Gordon. In the test chamberrrrrr."
+ desc = "The hazard suit. It was designed to protect scientists from the blunt trauma, radiation, energy discharge that hazardous materials might produce or entail. Fits you like a glove. The automatic medical system seems broken... They're waiting for you, Gordon. In the test chamber."
icon = 'modular_splurt/icons/obj/clothing/suits.dmi'
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/suit.dmi'
anthro_mob_worn_overlay = 'modular_splurt/icons/mob/clothing/suit_digi.dmi'
diff --git a/modular_splurt/code/modules/clothing/suits/armor.dm b/modular_splurt/code/modules/clothing/suits/armor.dm
index 78e49153e2..c4e52bc605 100644
--- a/modular_splurt/code/modules/clothing/suits/armor.dm
+++ b/modular_splurt/code/modules/clothing/suits/armor.dm
@@ -2,7 +2,7 @@
name = "stripper armor"
desc = "Talk about lightweight."
icon = 'modular_splurt/icons/obj/clothing/suits.dmi'
- mob_overlay_icon = 'modular_splurt/icons/mob/clothing/suit.dmi' //null I know you're reading this, you couldn't even edit the right file you absolute buffon
+ mob_overlay_icon = 'modular_splurt/icons/mob/clothing/suit.dmi' //null I know you're reading this, you couldn't even edit the right file you absolute buffoon
mutantrace_variation = NONE
icon_state = "armorstripper"
item_state = "armorstripper"
diff --git a/modular_splurt/code/modules/clothing/suits/cloaks.dm b/modular_splurt/code/modules/clothing/suits/cloaks.dm
index 8de8a40071..bbbf127829 100644
--- a/modular_splurt/code/modules/clothing/suits/cloaks.dm
+++ b/modular_splurt/code/modules/clothing/suits/cloaks.dm
@@ -31,6 +31,7 @@
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/neck.dmi'
armor = list(MELEE = 35, BULLET = 40, LASER = 25, ENERGY = 10, BOMB = 25, BIO = 20, RAD = 20, FIRE = 60, ACID = 60)
body_parts_covered = CHEST|GROIN|ARMS
+ is_edible = 0
/obj/item/clothing/neck/cloak/binary
name = "Binary cloak"
diff --git a/modular_splurt/code/modules/clothing/suits/heavy.dm b/modular_splurt/code/modules/clothing/suits/heavy.dm
index 435d890f44..4c6199b1ec 100644
--- a/modular_splurt/code/modules/clothing/suits/heavy.dm
+++ b/modular_splurt/code/modules/clothing/suits/heavy.dm
@@ -2,7 +2,7 @@
/obj/item/clothing/suit/cbrn
name = "civilian CBRN suit"
- desc = "Chemical, Biological, Radiological and Nuclear. A suit design for harsh environmental conditions short of no atmosphere. This one has civilian colors"
+ desc = "Chemical, Biological, Radiological and Nuclear. A suit design for harsh environmental conditions short of no atmosphere. This one has civilian colors."
icon_state = "cbrnsuitciv"
item_state = "cbrnsuitciv"
icon = 'modular_splurt/icons/obj/clothing/suits.dmi'
@@ -25,37 +25,37 @@
/obj/item/clothing/suit/cbrn/engineering
name = "engineering CBRN suit"
- desc = "Chemical, Biological, Radiological and Nuclear. A suit design for harsh environmental conditions short of no atmosphere. This one has engineering colors"
+ desc = "Chemical, Biological, Radiological and Nuclear. A suit design for harsh environmental conditions short of no atmosphere. This one has engineering colors."
icon_state = "cbrnsuiteng"
item_state = "cbrnsuiteng"
/obj/item/clothing/suit/cbrn/security
name = "engineering CBRN suit"
- desc = "Chemical, Biological, Radiological and Nuclear. A suit design for harsh environmental conditions short of no atmosphere. This one has security colors"
+ desc = "Chemical, Biological, Radiological and Nuclear. A suit design for harsh environmental conditions short of no atmosphere. This one has security colors."
icon_state = "cbrnsuitsec"
item_state = "cbrnsuitsec"
/obj/item/clothing/suit/cbrn/medical
name = "medical CBRN suit"
- desc = "Chemical, Biological, Radiological and Nuclear. A suit design for harsh environmental conditions short of no atmosphere. This one has medical colors"
+ desc = "Chemical, Biological, Radiological and Nuclear. A suit design for harsh environmental conditions short of no atmosphere. This one has medical colors."
icon_state = "cbrnsuitmed"
item_state = "cbrnsuitmed"
/obj/item/clothing/suit/cbrn/cargo
name = "cargo CBRN suit"
- desc = "Chemical, Biological, Radiological and Nuclear. A suit design for harsh environmental conditions short of no atmosphere. This one has cargo colors"
+ desc = "Chemical, Biological, Radiological and Nuclear. A suit design for harsh environmental conditions short of no atmosphere. This one has cargo colors."
icon_state = "cbrnsuitcargo"
item_state = "cbrnsuitcargo"
/obj/item/clothing/suit/cbrn/science
name = "science CBRN suit"
- desc = "Chemical, Biological, Radiological and Nuclear. A suit design for harsh environmental conditions short of no atmosphere. This one has science colors"
+ desc = "Chemical, Biological, Radiological and Nuclear. A suit design for harsh environmental conditions short of no atmosphere. This one has science colors."
icon_state = "cbrnsuitsci"
item_state = "cbrnsuitsci"
/obj/item/clothing/suit/cbrn/service
name = "service CBRN suit"
- desc = "Chemical, Biological, Radiological and Nuclear. A suit design for harsh environmental conditions short of no atmosphere. This one has service colors"
+ desc = "Chemical, Biological, Radiological and Nuclear. A suit design for harsh environmental conditions short of no atmosphere. This one has service colors."
icon_state = "cbrnsuitserv"
item_state = "cbrnsuitserv"
@@ -72,32 +72,32 @@
/obj/item/clothing/suit/cbrn/mopp/advance
name = "advance MOPP suit"
- desc = "Mission Oriented Protective Posture. A suit design for harsh combat conditions short of no atmosphere. This is an advance versoin for Non-ERT Central Command Staff."
- slowdown = 0 // This is suppose to be advance, hopfully not too OP
+ desc = "Mission Oriented Protective Posture. A suit design for harsh combat conditions short of no atmosphere. This is an advance version for Non-ERT Central Command Staff."
+ slowdown = 0 // This is suppose to be advance, hopefully not too OP
armor = list("melee" = 40, "bullet" = 60, "laser" = 40,"energy" = 30, "bomb" = 20, "bio" = 110, "rad" = 110, "fire" = 50, "acid" = 110) //Scale with standard MOPP suits as this effects all ERT suits
clothing_flags = NONE
/obj/item/clothing/suit/cbrn/mopp/advance/commander
name = "advance MOPP suit 'Commander'"
- desc = "Mission Oriented Protective Posture. A suit design for harsh combat conditions short of no atmosphere. This is an advance versoin for ERT Commanders."
+ desc = "Mission Oriented Protective Posture. A suit design for harsh combat conditions short of no atmosphere. This is an advance version for ERT Commanders."
icon_state = "moppsuitertcom"
item_state = "moppsuitertcom"
/obj/item/clothing/suit/cbrn/mopp/advance/security
name = "advance MOPP suit 'Security'"
- desc = "Mission Oriented Protective Posture. A suit design for harsh combat conditions short of no atmosphere. This is an advance versoin for ERT Security members."
+ desc = "Mission Oriented Protective Posture. A suit design for harsh combat conditions short of no atmosphere. This is an advance version for ERT Security members."
icon_state = "moppsuitertsec"
item_state = "moppsuitertsec"
/obj/item/clothing/suit/cbrn/mopp/advance/medical
name = "advance MOPP suit 'Medical'"
- desc = "Mission Oriented Protective Posture. A suit design for harsh combat conditions short of no atmosphere. This is an advance versoin for ERT Medical members."
+ desc = "Mission Oriented Protective Posture. A suit design for harsh combat conditions short of no atmosphere. This is an advance version for ERT Medical members."
icon_state = "moppsuitertmed"
item_state = "moppsuitertmed"
/obj/item/clothing/suit/cbrn/mopp/advance/engi
name = "advance MOPP suit 'Engineer'"
- desc = "Mission Oriented Protective Posture. A suit design for harsh combat conditions short of no atmosphere. This is an advance versoin for ERT Engineering members."
+ desc = "Mission Oriented Protective Posture. A suit design for harsh combat conditions short of no atmosphere. This is an advance version for ERT Engineering members."
icon_state = "moppsuiterteng"
item_state = "moppsuiterteng"
@@ -140,8 +140,8 @@
//research nods
/datum/design/cbrn/cbrncivi
- name = "Civlian CBRN Suit"
- desc = "A civlian CBRN suit."
+ name = "Civilian CBRN Suit"
+ desc = "A civilian CBRN suit."
id = "cbrn_civi"
build_type = PROTOLATHE
materials = list(/datum/material/plastic = 600, /datum/material/uranium = 500, /datum/material/iron = 600)
diff --git a/modular_splurt/code/modules/clothing/suits/jobs.dm b/modular_splurt/code/modules/clothing/suits/jobs.dm
index b62195363b..831c54ec87 100644
--- a/modular_splurt/code/modules/clothing/suits/jobs.dm
+++ b/modular_splurt/code/modules/clothing/suits/jobs.dm
@@ -1,6 +1,6 @@
/obj/item/clothing/suit/det_suit/lanyard
- name = "trenchcoat"
- desc = "An 18th-century multi-purpose trenchcoat. This one has a lanyard around the neck."
+ name = "trench coat"
+ desc = "An 18th-century multi-purpose trench coat. This one has a lanyard around the neck."
icon = 'modular_splurt/icons/obj/clothing/suits.dmi'
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/suit.dmi'
icon_state = "detective_lanyard"
diff --git a/modular_splurt/code/modules/clothing/suits/miscellaneous.dm b/modular_splurt/code/modules/clothing/suits/miscellaneous.dm
index 2d01bd9325..7a14c9ff14 100644
--- a/modular_splurt/code/modules/clothing/suits/miscellaneous.dm
+++ b/modular_splurt/code/modules/clothing/suits/miscellaneous.dm
@@ -115,7 +115,7 @@
item_state = "armor"
body_parts_covered = CHEST|GROIN|LEGS|ARMS|FEET|HANDS
hoodtype = /obj/item/clothing/head/hooded/corpus
- flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT //"Hide shoes" but digi shoes dont get hidden, too bad!
+ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT //"Hide shoes" but digi shoes don't get hidden, too bad!
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
mutantrace_variation = NONE //There is no need for a digi variant, it's a costume
@@ -187,7 +187,7 @@
// GWTB-inspired stuff wooo
/obj/item/clothing/suit/goner
name = "trencher coat"
- desc = "A generic trenchcoat of the boring wars. This one have purple, corporate insignias."
+ desc = "A generic trench coat of the boring wars. This one have purple, corporate insignias."
icon = 'modular_splurt/icons/obj/clothing/suits.dmi'
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/suit.dmi'
anthro_mob_worn_overlay = 'modular_splurt/icons/mob/clothing/suit_digi.dmi'
@@ -208,7 +208,7 @@
/obj/item/clothing/suit/goner/fake/poly
name = "polychromic trencher coat"
- desc = "A generic, drab olive trenchcoat with polychromatic spots."
+ desc = "A generic, drab olive trench coat with polychromic spots."
var/list/poly_colors = list("#E6E6E6", "#D6D6D6", "#D6D6D6")
/obj/item/clothing/suit/goner/fake/poly/ComponentInitialize()
@@ -218,26 +218,26 @@
/obj/item/clothing/suit/goner/fake/poly/classic
name = "classic trencher coat"
icon_state = "goner_suit_classic"
- desc = "A generic, grey coat with polychromatic spots."
+ desc = "A generic, grey coat with polychromic spots."
/obj/item/clothing/suit/goner/red
name = "red trencher coat"
- desc = "A trenchcoat of the boring wars. This one have red insignias."
+ desc = "A trench coat of the boring wars. This one have red insignias."
icon_state = "goner_suit_r"
/obj/item/clothing/suit/goner/green
name = "green trencher coat"
- desc = "A trenchcoat of the boring wars. This one have green insignias."
+ desc = "A trench coat of the boring wars. This one have green insignias."
icon_state = "goner_suit_g"
/obj/item/clothing/suit/goner/blue
name = "blue trencher coat"
- desc = "A trenchcoat of the boring wars. This one have blue insignias."
+ desc = "A trench coat of the boring wars. This one have blue insignias."
icon_state = "goner_suit_b"
/obj/item/clothing/suit/goner/yellow
name = "yellow trencher coat"
- desc = "A trenchcoat of the boring wars. This one have yellow insignias."
+ desc = "A trench coat of the boring wars. This one have yellow insignias."
icon_state = "goner_suit_y"
/obj/item/clothing/suit/hooded/corpus/jp //It's him! John Prodman!
diff --git a/modular_splurt/code/modules/clothing/suits/utility.dm b/modular_splurt/code/modules/clothing/suits/utility.dm
new file mode 100644
index 0000000000..8f7077a3c4
--- /dev/null
+++ b/modular_splurt/code/modules/clothing/suits/utility.dm
@@ -0,0 +1,2 @@
+/obj/item/clothing/head/radiation
+ is_edible = 0
diff --git a/modular_splurt/code/modules/clothing/suits/vest.dm b/modular_splurt/code/modules/clothing/suits/vest.dm
index 1f406d49d0..20117298cf 100644
--- a/modular_splurt/code/modules/clothing/suits/vest.dm
+++ b/modular_splurt/code/modules/clothing/suits/vest.dm
@@ -11,14 +11,14 @@
/obj/item/clothing/suit/brigdoc/labcoat
name = "brig physician lab coat"
- desc = "A dark red labcoat for brig physicians."
+ desc = "A dark red lab coat for brig physicians."
icon_state = "secmed_labcoat"
item_state = "secmed_labcoat"
- mob_overlay_icon = 'modular_splurt/icons/mob/clothing/suit.dmi' //its in a seperate file
+ mob_overlay_icon = 'modular_splurt/icons/mob/clothing/suit.dmi' //its in a separate file
/obj/item/clothing/suit/brigdoc/armor
name = "brig physician armored coat"
- desc = "A dark red labcoat with armored vest for brig physicians. Used for hostile work enviroments."
+ desc = "A dark red lab coat with armored vest for brig physicians. Used for hostile work environments."
icon_state = "secmed_armor"
item_state = "secmed_armor"
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/suit.dmi'
@@ -36,7 +36,7 @@
/obj/item/clothing/suit/armor/vest/bluesheid/coat
name = "blueshield armored coat"
- desc = "A fastional piece of armored style."
+ desc = "A fashionable piece of armored style."
icon_state = "blueshieldcoat"
item_state = "blueshieldcoat"
@@ -62,7 +62,7 @@
/obj/item/clothing/suit/armor/vest/metrocop
name = "civil protection armored vest"
- desc = "You feel like this may not stop a scienctist armed with nothing but a crowbar."
+ desc = "You feel like this may not stop a scientist armed with nothing but a crowbar."
icon_state = "metrocop_armor"
item_state = "metrocop_armor"
icon = 'modular_splurt/icons/obj/clothing/suits.dmi'
@@ -70,7 +70,7 @@
dog_fashion = null
/obj/item/clothing/suit/armor/vest/warden/peacekeeper
- name = "warden's peacekeeper armored trenchcoat"
+ name = "warden's peacekeeper armored trench coat"
desc = "A heavy trench coat with a armored vest sown into it. Used by the peace minded warden"
icon_state = "peacekeeper_trench_warden"
item_state = "peacekeeper_trench_warden"
@@ -78,8 +78,8 @@
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/suit.dmi'
/obj/item/clothing/suit/armor/hos/peacekeeper
- name = "head of secuirty's peacekeeper armored trenchcoat"
- desc = "A heavy trench coat with a armored vest sown into it. Used by the peace minded head of secuirty"
+ name = "head of security's peacekeeper armored trench coat"
+ desc = "A heavy trench coat with a armored vest sown into it. Used by the peace minded head of security"
icon_state = "peacekeeper_trench_hos"
item_state = "peacekeeper_trench_hos"
icon = 'modular_splurt/icons/obj/clothing/suits.dmi'
diff --git a/modular_splurt/code/modules/clothing/under/_under.dm b/modular_splurt/code/modules/clothing/under/_under.dm
index 847ba40c3c..b9b28a778e 100644
--- a/modular_splurt/code/modules/clothing/under/_under.dm
+++ b/modular_splurt/code/modules/clothing/under/_under.dm
@@ -1,3 +1,6 @@
+/obj/item/clothing/under
+ is_edible = 1 //Most jumpsuits are made of cloth so this is a safe bet.
+
/obj/item/clothing/under/Initialize(mapload)
. = ..()
if(!is_type_in_typecache(type, GLOB.skirt_peekable))
diff --git a/modular_splurt/code/modules/clothing/under/jobs/civilian/civilian.dm b/modular_splurt/code/modules/clothing/under/jobs/civilian/civilian.dm
index 9b577874e6..2ab2219847 100644
--- a/modular_splurt/code/modules/clothing/under/jobs/civilian/civilian.dm
+++ b/modular_splurt/code/modules/clothing/under/jobs/civilian/civilian.dm
@@ -17,7 +17,7 @@
/obj/item/clothing/under/rank/civilian/lawyer/galaxy_blue
name = "\improper De Void of Soul"
- desc = "A suit of stars and high-V gas. One that screams the cosmos and unfathomnable vastness. Earned by only the best of the best."
+ desc = "A suit of stars and high-V gas. One that screams the cosmos and unfathomable vastness. Earned by only the best of the best."
icon_state = "galaxy_blue"
icon = 'modular_splurt/icons/obj/clothing/uniforms.dmi'
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/uniform.dmi'
diff --git a/modular_splurt/code/modules/clothing/under/miscellaneous.dm b/modular_splurt/code/modules/clothing/under/miscellaneous.dm
index dc4696af4e..6f8eacf6d8 100644
--- a/modular_splurt/code/modules/clothing/under/miscellaneous.dm
+++ b/modular_splurt/code/modules/clothing/under/miscellaneous.dm
@@ -37,7 +37,7 @@
/obj/item/clothing/under/lumberjack
name = "lumberjack outfit"
- desc = "I am a lumberjack and I am ok, I sleep all night and I work all day."
+ desc = "I am a lumberjack and I am okay, I sleep all night and I work all day."
icon = 'modular_splurt/icons/obj/clothing/uniforms.dmi'
icon_state = "lumberjack"
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/uniform.dmi'
@@ -46,7 +46,7 @@
/obj/item/clothing/under/bunnysuit
name = "bunny outfit"
- desc = "A simple black bunnt outfit."
+ desc = "A simple black bunny outfit."
icon = 'modular_splurt/icons/obj/clothing/uniforms.dmi'
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/uniform.dmi'
icon_state = "bunnysuit"
@@ -89,7 +89,7 @@
/obj/item/clothing/under/bunnysuit/white
name = "white bunny outfit"
- desc = "A simple white bunnt outfit."
+ desc = "A simple white bunny outfit."
icon = 'modular_splurt/icons/obj/clothing/uniforms.dmi'
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/uniform.dmi'
icon_state = "whitebunnysuit"
@@ -194,7 +194,7 @@
/obj/item/clothing/head/helmet/space/plasmaman/security/blueshield
name = "head of security's plasma envirosuit helmet"
- desc = "A plasmaman containment helmet designed for the Bluesheidl, manacing black with blue stripes."
+ desc = "A plasmaman containment helmet designed for the Blueshield, menacing black with blue stripes."
icon_state = "bs_envirohelm"
item_state = "bs_envirohelm"
icon = 'modular_splurt/icons/obj/clothing/head.dmi'
@@ -203,7 +203,7 @@
/obj/item/clothing/under/rank/bridgeofficer
name = "bridge officer outfit"
- desc = "The uniform of a bridge officer. It makes you feel extremly importnant, even if you are not."
+ desc = "The uniform of a bridge officer. It makes you feel extremely important, even if you are not."
icon = 'modular_splurt/icons/obj/clothing/uniforms.dmi'
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/uniform.dmi'
icon_state = "bridgesec"
@@ -225,7 +225,7 @@
/obj/item/clothing/under/rank/bridgeofficer/formal
name = "bridge officer formal outfit"
- desc = "The uniform of a bridge officer. Its a formal varaint."
+ desc = "The uniform of a bridge officer. Its a formal variant."
icon = 'modular_splurt/icons/obj/clothing/uniforms.dmi'
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/uniform.dmi'
icon_state = "bridgesecformal"
@@ -281,7 +281,7 @@
/obj/item/clothing/under/goner/fake/poly
name = "polychromic trencher uniform"
- desc = "An utilitarian uniform with polychromatic spots."
+ desc = "An utilitarian uniform with polychromic spots."
var/list/poly_colors = list("#E6E6E6")
/obj/item/clothing/under/goner/fake/poly/ComponentInitialize()
@@ -311,3 +311,24 @@
/obj/item/clothing/under/misc/gear_harness
body_parts_covered = NONE
+/obj/item/clothing/under/misc/leia_outfit
+ name = "space princess outfit"
+ desc = "Chain for your Master's erotic asphyxiation not included."
+ icon = 'modular_splurt/icons/obj/clothing/uniforms.dmi'
+ mob_overlay_icon = 'modular_splurt/icons/mob/clothing/uniform.dmi'
+ icon_state = "leia"
+ can_adjust = FALSE
+
+/obj/item/clothing/under/misc/leia_outfit/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/polychromic, list("#C61818", "#D4AF37"), 2)
+
+/obj/item/clothing/under/performer/polychromic
+ name = "polychromic performers one piece"
+ icon = 'modular_splurt/icons/obj/clothing/uniforms.dmi'
+ mob_overlay_icon = 'modular_splurt/icons/mob/clothing/uniform.dmi'
+ icon_state = "poly_performer"
+
+/obj/item/clothing/under/performer/polychromic/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/polychromic, list("#ffffff"), 1)
diff --git a/modular_splurt/code/modules/clothing/underwear/_underwear.dm b/modular_splurt/code/modules/clothing/underwear/_underwear.dm
new file mode 100644
index 0000000000..045d1f8ce7
--- /dev/null
+++ b/modular_splurt/code/modules/clothing/underwear/_underwear.dm
@@ -0,0 +1,2 @@
+/obj/item/clothing/underwear/
+ is_edible = 1
diff --git a/modular_splurt/code/modules/events/bruh_moment.dm b/modular_splurt/code/modules/events/bruh_moment.dm
index 564c409c70..d05dff6e61 100644
--- a/modular_splurt/code/modules/events/bruh_moment.dm
+++ b/modular_splurt/code/modules/events/bruh_moment.dm
@@ -4,9 +4,10 @@
weight = 10
min_players = 1
max_occurrences = 0
+ category = EVENT_CATEGORY_FRIENDLY
/datum/round_event/bruh_moment
- startWhen = 8
+ start_when = 8
fakeable = FALSE
/datum/round_event/bruh_moment/start()
diff --git a/modular_splurt/code/modules/events/crystalline_reentry.dm b/modular_splurt/code/modules/events/crystalline_reentry.dm
index 02f8ff68ae..2894e4a484 100644
--- a/modular_splurt/code/modules/events/crystalline_reentry.dm
+++ b/modular_splurt/code/modules/events/crystalline_reentry.dm
@@ -4,6 +4,7 @@
min_players = 15
max_occurrences = 0 //Deactivated for now
var/atom/special_target
+ category = EVENT_CATEGORY_SPACE
/datum/round_event_control/crystalline_reentry/admin_setup()
if(!check_rights(R_FUN))
@@ -13,8 +14,8 @@
special_target = get_turf(usr)
/datum/round_event/crystalline_reentry
- announceWhen = 0
- startWhen = 10
+ announce_when = 0
+ start_when = 10
fakeable = FALSE
/datum/round_event/crystalline_reentry/announce(fake)
@@ -34,6 +35,7 @@
min_players = 35
max_occurrences = 0 //This is only an admin spawn. Ergo, wrath of the gods.
var/atom/special_target
+ category = EVENT_CATEGORY_SPACE
/datum/round_event_control/crystalline_wave/admin_setup()
if(!check_rights(R_FUN))
@@ -47,9 +49,9 @@
message_admins("A crystalline asteroid wave has been triggered. Maybe you should add some music for the players? Consider this random selection: [randselect]")
/datum/round_event/crystalline_wave
- announceWhen = 0
- startWhen = 15
- endWhen = 60 //45 seconds of pain
+ announce_when = 0
+ start_when = 15
+ end_when = 60 //45 seconds of pain
fakeable = FALSE
/datum/round_event/crystalline_wave/announce(fake)
diff --git a/modular_splurt/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/modular_splurt/code/modules/food_and_drinks/drinks/drinks/bottle.dm
index 253eb2d300..436ab349f3 100644
--- a/modular_splurt/code/modules/food_and_drinks/drinks/drinks/bottle.dm
+++ b/modular_splurt/code/modules/food_and_drinks/drinks/drinks/bottle.dm
@@ -2,14 +2,12 @@
/obj/item/reagent_containers/food/drinks/bottle/bitters
name = "Andromeda Bitters"
desc = "An aromatic addition to any drink. Made in New Trinidad, now and forever."
- icon = 'modular_splurt/icons/obj/drinks.dmi'
icon_state = "bitters_bottle"
list_reagents = list(/datum/reagent/consumable/ethanol/bitters = 30)
/obj/item/reagent_containers/food/drinks/bottle/curacao
name = "Beekhof Blauw Curaçao"
desc = "Still produced on the island of Curaçao, after all these years."
- icon = 'modular_splurt/icons/obj/drinks.dmi'
icon_state = "curacao_bottle"
volume = 100
list_reagents = list(/datum/reagent/consumable/ethanol/curacao = 100)
@@ -17,7 +15,6 @@
/obj/item/reagent_containers/food/drinks/bottle/navy_rum
name = "Pride of the Union Navy-Strength Rum"
desc = "Ironically named, given it's made in Bermuda."
- icon = 'modular_splurt/icons/obj/drinks.dmi'
icon_state = "navy_rum_bottle"
volume = 100
list_reagents = list(/datum/reagent/consumable/ethanol/navy_rum = 100)
diff --git a/modular_splurt/code/modules/food_and_drinks/recipes/drink_recipes.dm b/modular_splurt/code/modules/food_and_drinks/recipes/drink_recipes.dm
index a587e9fc71..c388d8fe3c 100644
--- a/modular_splurt/code/modules/food_and_drinks/recipes/drink_recipes.dm
+++ b/modular_splurt/code/modules/food_and_drinks/recipes/drink_recipes.dm
@@ -189,3 +189,104 @@
/datum/reagent/consumable/ethanol/moonshine = 2,
/datum/reagent/consumable/ethanol/brave_bull = 1
)
+
+//Milkshakes
+/datum/chemical_reaction/milkshake_base
+ name = "Plain Milkshake"
+ id = /datum/reagent/consumable/milkshake_base
+ results = list(/datum/reagent/consumable/milkshake_base = 3)
+ required_reagents = list(
+ /datum/reagent/consumable/milk = 1,
+ /datum/reagent/consumable/ice = 1,
+ /datum/reagent/consumable/cream =1
+ )
+
+/datum/chemical_reaction/milkshake_vanilla
+ name = "Vanilla Milkshake"
+ id = /datum/reagent/consumable/milkshake_vanilla
+ results = list(/datum/reagent/consumable/milkshake_vanilla = 2)
+ required_reagents = list(
+ /datum/reagent/consumable/milkshake_base =1,
+ /datum/reagent/consumable/vanilla =1
+ )
+
+/datum/chemical_reaction/milkshake_choc
+ name = "Chocolate Milkshake"
+ id = /datum/reagent/consumable/milkshake_choc
+ results = list(/datum/reagent/consumable/milkshake_choc = 2)
+ required_reagents = list(
+ /datum/reagent/consumable/milkshake_base = 1,
+ /datum/reagent/consumable/coco = 1
+ )
+
+/datum/chemical_reaction/milkshake_strawberry
+ name = "Strawberry Milkshake"
+ id = /datum/reagent/consumable/milkshake_strawberry
+ results = list(/datum/reagent/consumable/milkshake_strawberry = 2)
+ required_reagents = list(
+ /datum/reagent/consumable/milkshake_base = 1,
+ /datum/reagent/consumable/strawberryjuice = 1
+ )
+
+/datum/chemical_reaction/milkshake_banana
+ name = "Banana Milkshake"
+ id = /datum/reagent/consumable/milkshake_banana
+ results = list(/datum/reagent/consumable/milkshake_banana = 2)
+ required_reagents = list(
+ /datum/reagent/consumable/milkshake_base = 1,
+ /datum/reagent/consumable/banana = 1
+ )
+
+/datum/chemical_reaction/milkshake_berry
+ name = "Berry Milkshake"
+ id = /datum/reagent/consumable/milkshake_berry
+ results = list(/datum/reagent/consumable/milkshake_berry = 2)
+ required_reagents = list(
+ /datum/reagent/consumable/milkshake_base = 1,
+ /datum/reagent/consumable/berryjuice = 1
+ )
+
+/datum/chemical_reaction/milkshake_cola
+ name = "Cola Milkshake"
+ id = /datum/reagent/consumable/milkshake_cola
+ results = list(/datum/reagent/consumable/milkshake_cola = 2)
+ required_reagents = list(
+ /datum/reagent/consumable/milkshake_base = 1,
+ /datum/reagent/consumable/space_cola = 1
+ )
+
+/datum/chemical_reaction/milkshake_gibb
+ name = "Dr. Gibb Milkshake"
+ id = /datum/reagent/consumable/milkshake_gibb
+ results = list(/datum/reagent/consumable/milkshake_gibb = 2)
+ required_reagents = list(
+ /datum/reagent/consumable/milkshake_base = 1,
+ /datum/reagent/consumable/dr_gibb = 1
+ )
+
+/datum/chemical_reaction/milkshake_peach
+ name = "Peach Milkshake"
+ id = /datum/reagent/consumable/milkshake_peach
+ results = list(/datum/reagent/consumable/milkshake_peach = 2)
+ required_reagents = list(
+ /datum/reagent/consumable/milkshake_base = 1,
+ /datum/reagent/consumable/peachjuice = 1
+ )
+
+/datum/chemical_reaction/milkshake_pineapple
+ name = "Pineapple Milkshake"
+ id = /datum/reagent/consumable/milkshake_pineapple
+ results = list(/datum/reagent/consumable/milkshake_pineapple = 2)
+ required_reagents = list(
+ /datum/reagent/consumable/milkshake_base = 1,
+ /datum/reagent/consumable/pineapplejuice = 1
+ )
+
+/datum/chemical_reaction/milkshake_melon
+ name = "Watermelon Milkshake"
+ id = /datum/reagent/consumable/milkshake_melon
+ results = list(/datum/reagent/consumable/milkshake_melon = 2)
+ required_reagents = list(
+ /datum/reagent/consumable/milkshake_base = 1,
+ /datum/reagent/consumable/watermelonjuice = 1
+ )
diff --git a/modular_splurt/code/modules/keybindings/keybind/communication.dm b/modular_splurt/code/modules/keybindings/keybind/communication.dm
new file mode 100644
index 0000000000..3aa6aeca1a
--- /dev/null
+++ b/modular_splurt/code/modules/keybindings/keybind/communication.dm
@@ -0,0 +1,13 @@
+/datum/keybinding/client/communication/subtle
+ hotkey_keys = list("Ctrl5")
+
+/datum/keybinding/client/communication/subtle_indicator
+ hotkey_keys = list("5")
+ name = "Subtle_Indicator"
+ full_name = "Subtle Emote (with indicator)"
+ clientside = "subtle-indicator"
+
+/datum/keybinding/client/communication/subtle_indicator/down(client/user)
+ var/mob/living/mob_keybound = user.mob
+ mob_keybound.subtle_indicator()
+ return TRUE
diff --git a/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/body_markings.dm b/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/body_markings.dm
index ac3b448ca1..1d38f77db0 100644
--- a/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/body_markings.dm
+++ b/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/body_markings.dm
@@ -113,6 +113,18 @@
icon_state = "sloog"
covered_limbs = list("Chest" = MATRIX_RED_GREEN)
+/datum/sprite_accessory/mam_body_markings/pilot
+ name = "Pilot"
+ icon = 'modular_splurt/icons/mob/mam_markings.dmi'
+ icon_state = "pilot"
+ covered_limbs = list("Head" = MATRIX_ALL)
+
+/datum/sprite_accessory/mam_body_markings/pilot_jaw
+ name = "Pilot Jaw"
+ icon = 'modular_splurt/icons/mob/mam_markings.dmi'
+ icon_state = "pilotjaw"
+ covered_limbs = list("Head" = MATRIX_RED_BLUE)
+
/******************************************
************* Insect Markings *************
*******************************************/
diff --git a/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/snouts.dm b/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/snouts.dm
index 6b87b38f09..549793e24f 100644
--- a/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/snouts.dm
+++ b/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/snouts.dm
@@ -221,6 +221,12 @@
icon = 'modular_splurt/icons/mob/mam_snouts.dmi'
color_src = MUTCOLORS
+/datum/sprite_accessory/snouts/mam_snouts/corvidbeak
+ name = "Corvid Beak"
+ icon_state = "corvidbeak"
+ icon = 'modular_splurt/icons/mob/mam_snouts.dmi'
+ matrixed_sections = MATRIX_GREEN
+
/datum/sprite_accessory/snouts/mam_snouts/deoxys
name = "Deoxys"
icon_state = "deoxys"
diff --git a/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/tails.dm b/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/tails.dm
index f08fba7584..46addc57fc 100644
--- a/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/tails.dm
+++ b/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/tails.dm
@@ -235,6 +235,38 @@
icon_state = "fluffy"
color_src = MUTCOLORS
+/datum/sprite_accessory/tails/mam_tails/nightstalker
+ name = "Nightstalker"
+ icon_state = "nightstalker"
+ color_src = MATRIXED
+ icon = 'modular_splurt/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED_GREEN
+
+/datum/sprite_accessory/tails_animated/mam_tails_animated/nightstalker
+ name = "Nightstalker"
+ icon_state = "nightstalker"
+ color_src = MATRIXED
+ icon = 'modular_splurt/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED_GREEN
+
+/datum/sprite_accessory/tails/mam_tails/snakelarge
+ name = "Snake Tail (Large)"
+ icon_state = "snakelarge"
+ color_src = MATRIXED
+ icon = 'modular_splurt/icons/mob/64_mam_tails.dmi'
+ dimension_x = 64
+ center = TRUE
+ matrixed_sections = MATRIX_RED_GREEN
+
+/datum/sprite_accessory/tails_animated/mam_tails_animated/snakelarge
+ name = "Snake Tail (Large)"
+ icon_state = "snakelarge"
+ color_src = MATRIXED
+ icon = 'modular_splurt/icons/mob/64_mam_tails.dmi'
+ dimension_x = 64
+ center = TRUE
+ matrixed_sections = MATRIX_RED_GREEN
+
//Lizard tails
/datum/sprite_accessory/tails/lizard/tailmaw
name = "Tailmaw"
@@ -278,6 +310,20 @@
icon = 'modular_splurt/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_ALL
+/datum/sprite_accessory/tails/lizard/nightstalker
+ name = "Nightstalker"
+ icon_state = "nightstalker"
+ color_src = MATRIXED
+ icon = 'modular_splurt/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED_GREEN
+
+/datum/sprite_accessory/tails_animated/lizard/nightstalker
+ name = "Nightstalker"
+ icon_state = "nightstalker"
+ color_src = MATRIXED
+ icon = 'modular_splurt/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED_GREEN
+
//Human tails
/datum/sprite_accessory/tails/human/deer
name = "Deer"
@@ -358,3 +404,17 @@
dimension_x = 64
center = TRUE
color_src = MUTCOLORS
+
+/datum/sprite_accessory/tails/human/nightstalker
+ name = "Nightstalker"
+ icon_state = "nightstalker"
+ color_src = MATRIXED
+ icon = 'modular_splurt/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED_GREEN
+
+/datum/sprite_accessory/tails_animated/human/nightstalker
+ name = "Nightstalker"
+ icon_state = "nightstalker"
+ color_src = MATRIXED
+ icon = 'modular_splurt/icons/mob/mam_tails.dmi'
+ matrixed_sections = MATRIX_RED_GREEN
diff --git a/modular_splurt/code/modules/mob/living/carbon/human/emote.dm b/modular_splurt/code/modules/mob/living/carbon/human/emote.dm
new file mode 100644
index 0000000000..8877e15eab
--- /dev/null
+++ b/modular_splurt/code/modules/mob/living/carbon/human/emote.dm
@@ -0,0 +1,12 @@
+/datum/emote/sound/human/huh
+ key = "huh"
+ key_third_person = "huh's"
+ message = "seems confused."
+ sound = 'modular_splurt/sound/voice/huh.ogg'
+
+/datum/emote/sound/human/whine
+ key = "whine"
+ key_third_person = "whines"
+ message = "whines."
+ sound = 'modular_splurt/sound/voice/whine.ogg'
+
diff --git a/modular_splurt/code/modules/mob/living/carbon/human/species_types/zombies2.dm b/modular_splurt/code/modules/mob/living/carbon/human/species_types/zombies2.dm
index 53e887e98c..e812380fbc 100644
--- a/modular_splurt/code/modules/mob/living/carbon/human/species_types/zombies2.dm
+++ b/modular_splurt/code/modules/mob/living/carbon/human/species_types/zombies2.dm
@@ -1,3 +1,4 @@
+/* //striked out for now because I dont know what the fuck was planned here but this is breaking blood regain.
/mob/living/carbon/human/handle_blood()
if(iszombie(src)) //We're basically pudding pops.
return
@@ -8,7 +9,7 @@
var/obj/item/organ/heart/decayed_heart/decaying = getorgan(/obj/item/organ/heart/decayed_heart)
if(decaying)
. += "Current blood level: [blood_volume]/[BLOOD_VOLUME_MAXIMUM]."
-
+ */
/datum/species/mammal/undead
// takes 30% more damage but doesn't crit
id = SPECIES_UMAMMAL
diff --git a/modular_splurt/code/modules/mob/living/silicon/robot/robot.dm b/modular_splurt/code/modules/mob/living/silicon/robot/robot.dm
index 7532f3a8f7..fa00e0ff44 100644
--- a/modular_splurt/code/modules/mob/living/silicon/robot/robot.dm
+++ b/modular_splurt/code/modules/mob/living/silicon/robot/robot.dm
@@ -41,3 +41,15 @@
laws = new /datum/ai_laws/slaver_override
laws.associate(src)
update_icons()
+
+/mob/living/silicon/robot/Initialize(mapload)
+ .=..()
+ AddComponent(/datum/component/personal_crafting)
+
+
+/mob/living/silicon/robot/pick_module()
+ .=..()
+ var/datum/hud/R = hud_used
+ var/atom/movable/screen/craft/C = locate() in R.static_inventory
+ C.icon = 'icons/mob/screen_midnight.dmi'
+ C.screen_loc = "CENTER+5:5,SOUTH+1:5"
diff --git a/modular_splurt/code/modules/mob/living/silicon/robot/robot_modules.dm b/modular_splurt/code/modules/mob/living/silicon/robot/robot_modules.dm
index 16ddbdc8f5..710f4d4745 100644
--- a/modular_splurt/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/modular_splurt/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -265,7 +265,13 @@
var/list/extra = list(
/obj/item/dogborg/jaws/small,
/obj/item/analyzer/nose,
- /obj/item/soap/tongue/scrubpup
+ /obj/item/soap/tongue/scrubpup,
+ /obj/item/gripper/service,
+ /obj/item/kitchen/rollingpin,
+ /obj/item/kitchen/unrollingpin,
+ /obj/item/kitchen/knife/butcher,
+ /obj/item/kitchen/efink,
+ /obj/item/kitchen/knife
)
LAZYADD(basic_modules, extra)
. = ..()
diff --git a/modular_splurt/code/modules/mob/say_vr.dm b/modular_splurt/code/modules/mob/say_vr.dm
index 56be623e0f..7cb5e02a6f 100644
--- a/modular_splurt/code/modules/mob/say_vr.dm
+++ b/modular_splurt/code/modules/mob/say_vr.dm
@@ -48,3 +48,30 @@
return
message = trim(html_encode(message), MAX_MESSAGE_LEN)
emote("narrate", message=message)
+
+/datum/emote/living/subtle/subtle_indicator
+ key = "subtle-indicator"
+ key_third_person = "subtle-indicator"
+
+/mob/living/verb/subtle_indicator()
+ // Set data
+ set name = "Subtle (Indicator)"
+ set category = "IC"
+
+ // Check if say is disabled
+ if(GLOB.say_disabled)
+ // Warn user and return
+ to_chat(usr, span_danger("Speech is currently admin-disabled."))
+ return
+
+ // Display typing indicator
+ display_typing_indicator()
+
+ // Prompt user for text input
+ var/input_message = input(usr, "What would you like to subtly emote, with a typing indicator?", "Input subtle emote") as message|null
+
+ // Remove typing indicator
+ clear_typing_indicator()
+
+ // Run subtle emote with input
+ usr.emote("subtle", message = input_message)
diff --git a/modular_splurt/code/modules/mob/splurt_emotes.dm b/modular_splurt/code/modules/mob/splurt_emotes.dm
index e6af828c5f..7dc25f9c5d 100644
--- a/modular_splurt/code/modules/mob/splurt_emotes.dm
+++ b/modular_splurt/code/modules/mob/splurt_emotes.dm
@@ -212,8 +212,8 @@
/datum/emote/living/bruh
key = "bruh"
- key_third_person = "thinks this is a bruh moment"
- message = "thinks this is a bruh moment"
+ key_third_person = "bruhs"
+ message = "thinks this is a bruh moment."
emote_type = EMOTE_AUDIBLE
muzzle_ignore = FALSE
restraint_check = FALSE
@@ -378,7 +378,7 @@
/datum/emote/living/swaos
key = "swaos"
key_third_person = "swaos"
- message = "mutters swaos"
+ message = "mutters swaos."
emote_type = EMOTE_AUDIBLE
muzzle_ignore = FALSE
@@ -411,7 +411,7 @@
/datum/emote/living/eyebrow3
key = "eyebrow3"
key_third_person = "eyebrows3"
- message = "raises an eyebrow quizzaciously."
+ message = "raises an eyebrow quizzaciously."
/datum/emote/living/eyebrow3/run_emote(mob/user, params, type_override, intentional)
if(!(. = ..()))
@@ -467,7 +467,7 @@
/datum/emote/living/laugh4
key = "laugh4"
key_third_person = "laughs4"
- message = "burst out a laugh."
+ message = "burst into laughter!"
emote_type = EMOTE_AUDIBLE
muzzle_ignore = FALSE
@@ -497,7 +497,7 @@
/datum/emote/living/laugh6
key = "laugh6"
key_third_person = "laughs6"
- message = "sounds like a tea kettle."
+ message = "laughs like a kettle!"
emote_type = EMOTE_AUDIBLE
muzzle_ignore = FALSE
@@ -553,7 +553,7 @@
/datum/emote/living/spoonful
key = "spoonful"
key_third_person = "spoonfuls"
- message = "draws a comically large spoon."
+ message = "asks for a spoonful."
emote_type = EMOTE_AUDIBLE
muzzle_ignore = TRUE
@@ -583,7 +583,7 @@
/datum/emote/living/whatthehell
key = "wth"
key_third_person = "wths"
- message = "condemns the abysses of hell."
+ message = "condemns the abysses of hell!"
emote_type = EMOTE_AUDIBLE
muzzle_ignore = TRUE
@@ -637,7 +637,7 @@
/datum/emote/living/illuminati
key = "illuminati"
key_third_person = "illuminatis"
- message = "emits some X-files vibe"
+ message = "exudes a mysterious aura!"
/datum/emote/living/illuminati/run_emote(mob/user, params, type_override, intentional)
if(!(. = ..()))
@@ -650,7 +650,7 @@
/datum/emote/living/bonerif
key = "bonerif"
key_third_person = "bonerifs"
- message = "riffs"
+ message = "riffs!"
/datum/emote/living/bonerif/run_emote(mob/user, params, type_override, intentional)
if(!(. = ..()))
@@ -679,7 +679,7 @@
/datum/emote/living/choir
key = "choir"
key_third_person = "choirs"
- message = "let out a choir."
+ message = "let out a choir!"
emote_type = EMOTE_AUDIBLE
muzzle_ignore = FALSE
@@ -694,7 +694,7 @@
/datum/emote/living/sicko
key = "sicko"
key_third_person = "sickos"
- message = "briefly goes sicko mode."
+ message = "briefly goes sicko mode!"
emote_type = EMOTE_AUDIBLE
muzzle_ignore = FALSE
@@ -709,7 +709,7 @@
/datum/emote/living/chill
key = "chill"
key_third_person = "chills"
- message = "felt a chill running down their spine..."
+ message = "feels a chill running down their spine..."
/datum/emote/living/chill/run_emote(mob/user, params, type_override, intentional)
if(!(. = ..()))
@@ -766,7 +766,7 @@
/datum/emote/living/snore/snore2
key = "snore2"
- key_third_person = "snores"
+ key_third_person = "snores2"
message = "lets out an earthshaking snore"
/datum/emote/living/snore/snore2/run_emote(mob/user, params, type_override, intentional)
@@ -836,7 +836,7 @@
/datum/emote/living/ara_ara
key = "ara"
key_third_person = "aras"
- message = "seems sultrily surprised~"
+ message = "coos with sultry surprise~..."
emote_type = EMOTE_AUDIBLE
muzzle_ignore = FALSE
var/voicesound = 'modular_splurt/sound/voice/ara-ara.ogg'
@@ -857,7 +857,7 @@
/datum/emote/living/missouri
key = "missouri"
key_third_person = "missouris"
- message = "appears to believe %THEYRE in Missouri"
+ message = "appears to believe %THEYRE in Missouri."
emote_type = EMOTE_AUDIBLE
muzzle_ignore = FALSE
diff --git a/modular_splurt/code/modules/photography/photos/album.dm b/modular_splurt/code/modules/photography/photos/album.dm
new file mode 100644
index 0000000000..f7795a670e
--- /dev/null
+++ b/modular_splurt/code/modules/photography/photos/album.dm
@@ -0,0 +1,27 @@
+/obj/item/storage/photo_album
+ desc = "A big book used to store photos and mementos."
+ item_state = "album"
+ lefthand_file = 'modular_splurt/icons/mob/inhands/misc/books_lefthand.dmi'
+ righthand_file = 'modular_splurt/icons/mob/inhands/misc/books_righthand.dmi'
+ w_class = WEIGHT_CLASS_SMALL
+
+/obj/item/storage/photo_album/HoS
+ name = "photo album (Head of Security)"
+
+/obj/item/storage/photo_album/RD
+ name = "photo album (Research Director)"
+
+/obj/item/storage/photo_album/HoP
+ name = "photo album (Head of Personnel)"
+
+/obj/item/storage/photo_album/Captain
+ name = "photo album (Captain)"
+
+/obj/item/storage/photo_album/CMO
+ name = "photo album (Chief Medical Officer)"
+
+/obj/item/storage/photo_album/QM
+ name = "photo album (Quartermaster)"
+
+/obj/item/storage/photo_album/CE
+ name = "photo album (Chief Engineer)"
diff --git a/modular_splurt/code/modules/photography/photos/photo.dm b/modular_splurt/code/modules/photography/photos/photo.dm
new file mode 100644
index 0000000000..3eb0f70752
--- /dev/null
+++ b/modular_splurt/code/modules/photography/photos/photo.dm
@@ -0,0 +1,3 @@
+/obj/item/photo/old
+ icon = 'modular_splurt/icons/obj/items_and_weapons.dmi'
+ icon_state = "photo_old"
diff --git a/modular_splurt/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/modular_splurt/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
index a0e7dfbe58..0b7fc6f662 100644
--- a/modular_splurt/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
+++ b/modular_splurt/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
@@ -16,6 +16,18 @@
// Praise the funny BYOND dots
. = ..()
+ // Check for client
+ if(C.client)
+ // Check target pref for ERP
+ if(C.client?.prefs.erppref == "No")
+ // Return without triggering
+ return
+
+ // Check target pref for aphrodisiacs
+ if(C.client?.prefs.cit_toggles & NO_APHRO)
+ // Return without triggering
+ return
+
// Perform drink effect
C.clothing_burst(C)
@@ -194,7 +206,6 @@
color = "#1a5fa1"
quality = DRINK_NICE
taste_description = "blue orange"
- glass_icon = 'modular_splurt/icons/obj/drinks.dmi'
glass_icon_state = "curacao"
glass_name = "glass of curaçao"
glass_desc = "It's blue, da ba dee."
@@ -217,7 +228,6 @@
color = "#1c0000"
quality = DRINK_NICE
taste_description = "spiced alcohol"
- glass_icon = 'modular_splurt/icons/obj/drinks.dmi'
glass_icon_state = "bitters"
glass_name = "glass of bitters"
glass_desc = "Typically you'd want to mix this with something- but you do you."
@@ -229,7 +239,6 @@
color = "#1F0001"
quality = DRINK_VERYGOOD
taste_description = "haughty arrogance"
- glass_icon = 'modular_splurt/icons/obj/drinks.dmi'
glass_icon_state = "admiralty"
glass_name = "Admiralty"
glass_desc = "Hail to the Admiral, for he brings fair tidings, and rum too."
@@ -241,7 +250,6 @@
color = "#8c5046"
quality = DRINK_GOOD
taste_description = "ginger and rum"
- glass_icon = 'modular_splurt/icons/obj/drinks.dmi'
glass_icon_state = "dark_and_stormy"
glass_name = "Dark and Stormy"
glass_desc = "Thunder and lightning, very very frightening."
@@ -253,7 +261,6 @@
color = "#c4b35c"
quality = DRINK_VERYGOOD
taste_description = "rum and spices"
- glass_icon = 'modular_splurt/icons/obj/drinks.dmi'
glass_icon_state = "long_john_silver"
glass_name = "Long John Silver"
glass_desc = "Named for a famous pirate, who may or may not have been fictional. But hey, why let the truth get in the way of a good yarn?"
@@ -265,7 +272,6 @@
color = "#003153"
quality = DRINK_VERYGOOD
taste_description = "companionship"
- glass_icon = 'modular_splurt/icons/obj/drinks.dmi'
glass_icon_state = "long_haul"
glass_name = "Long Haul"
glass_desc = "A perfect companion for a lonely long haul flight."
@@ -277,7 +283,6 @@
color = "#b4abd0"
quality = DRINK_FANTASTIC
taste_description = "salt and spice"
- glass_icon = 'modular_splurt/icons/obj/drinks.dmi'
glass_icon_state = "salt_and_swell"
glass_name = "Salt and Swell"
glass_desc = "Ah, I do like to be beside the seaside."
@@ -289,7 +294,6 @@
color = "#b4abd0"
quality = DRINK_VERYGOOD
taste_description = "spicy sour cheesy yoghurt"
- glass_icon = 'modular_splurt/icons/obj/drinks.dmi'
glass_icon_state = "tich_toch"
glass_name = "Tich Toch"
glass_desc = "Oh god."
@@ -301,7 +305,6 @@
color = "#F4EFE2"
quality = DRINK_NICE
taste_description = "sour cheesy yoghurt"
- glass_icon = 'modular_splurt/icons/obj/drinks.dmi'
glass_icon_state = "tiltaellen"
glass_name = "glass of tiltällen"
glass_desc = "Eww... it's curdled."
@@ -313,7 +316,6 @@
color = "#00bfa3"
quality = DRINK_VERYGOOD
taste_description = "the tropics"
- glass_icon = 'modular_splurt/icons/obj/drinks.dmi'
glass_icon_state = "tropical_storm"
glass_name = "Tropical Storm"
glass_desc = "Less destructive than the real thing."
diff --git a/modular_splurt/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/modular_splurt/code/modules/reagents/chemistry/reagents/drink_reagents.dm
index 3b8aad9ea7..46ea1e07c5 100644
--- a/modular_splurt/code/modules/reagents/chemistry/reagents/drink_reagents.dm
+++ b/modular_splurt/code/modules/reagents/chemistry/reagents/drink_reagents.dm
@@ -50,3 +50,118 @@
glass_name = "glass of töchtaüse syrup"
glass_desc = "Not for drinking on its own."
+/datum/reagent/consumable/milkshake_base
+ name = "Milkshake"
+ description = "A basic milkshake. Could use something else?"
+ color = "#FFFDD0"
+ nutriment_factor = 1
+ taste_description = "thick, creamy, and sweet"
+ glass_icon_state = "vanillashake"
+ glass_name = "glass of plain milkshake"
+ glass_desc = "A glass of plain milkshake, a bit boring, but still good."
+
+/datum/reagent/consumable/milkshake_vanilla
+ name = "Vanilla Milkshake"
+ description = "A vanilla milkshake. Basic, but delicious."
+ color = "#FFFDD0"
+ nutriment_factor = 1
+ taste_description = "thick, creamy, and sweet"
+ glass_icon_state = "vanillashake"
+ glass_name = "glass of vanilla milkshake"
+ glass_desc = "A glass of vanilla milkshake, a bit boring, but still good."
+
+/datum/reagent/consumable/milkshake_choc
+ name = "Chocolate Milkshake"
+ description = "A delicious Chocolate Milkshake"
+ color = "#7B3F00"
+ nutriment_factor = 1
+ taste_description = "sweet, creamy chocolate"
+ glass_icon_state = "choccyshake"
+ glass_name = "glass of chocolate milkshake"
+ glass_desc = "A glass of chocolate milkshake, what a treat!"
+
+/datum/reagent/consumable/milkshake_strawberry
+ name = "Strawberry Milkshake"
+ description = "Frozen Strawberry Milk!"
+ color = "#F4E1EA"
+ nutriment_factor = 1
+ taste_description = "summer memories"
+ glass_icon_state = "strawberryshake"
+ glass_name = "glass of strawberry milkshake"
+ glass_desc = "A glass of sweet, pink Strawberry Shake"
+
+/datum/reagent/consumable/milkshake_banana
+ name = "Banana Milkshake"
+ description = "Deliciously tricky!"
+ color = "#FFE135"
+ nutriment_factor = 1
+ taste_description = "funny pranks and clowning around"
+ glass_icon_state = "bananashake"
+ glass_name = "glass of Banana Milkshake"
+ glass_desc = "A banana milkshake! Honk!"
+
+/datum/reagent/consumable/milkshake_berry
+ name = "Wild Berry Milkshake"
+ description = "A summer favorite!"
+ color = "#b17179"
+ nutriment_factor = 1
+ taste_description = "warm summer days"
+ glass_icon = 'modular_splurt/icons/obj/drinks.dmi'
+ glass_icon_state = "berryshake"
+ glass_name = "glass of Wild Berry Milkshake"
+ glass_desc = "A berry milkshake"
+
+/datum/reagent/consumable/milkshake_cola
+ name = "Cola Milkshake"
+ description = "Sweet milkshake mixed with cola"
+ color = "#3c3024"
+ nutriment_factor = 1
+ taste_description = "cola and milkshake"
+ glass_icon = 'modular_splurt/icons/obj/drinks.dmi'
+ glass_icon_state = "colashake"
+ glass_name = "glass of Cola Milkshake"
+ glass_desc = "A cola milkshake, it's like a ticker float!"
+
+/datum/reagent/consumable/milkshake_gibb
+ name = "Dr. Gibb Milkshake"
+ description = "Sweet milkshake mixed with Dr. Gibb"
+ color = "#5e312b"
+ nutriment_factor = 1
+ taste_description = "cola and milkshake"
+ glass_icon = 'modular_splurt/icons/obj/drinks.dmi'
+ glass_icon_state = "gibbshake"
+ glass_name = "glass of Gibb Milkshake"
+ glass_desc = "A Dr. Gibb milkshake, it's like a ticker float!"
+
+/datum/reagent/consumable/milkshake_peach
+ name = "Peach Milkshake"
+ description = "A tasty Peach Milkshake"
+ color = "#5e312b"
+ nutriment_factor = 1
+ taste_description = "peaches and cream"
+ glass_icon = 'modular_splurt/icons/obj/drinks.dmi'
+ glass_icon_state = "peachshake"
+ glass_name = "glass of Peace Milkshake"
+ glass_desc = "Peaches and Cream, Peaches and Cream!"
+
+/datum/reagent/consumable/milkshake_pineapple
+ name = "Pineapple Milkshake"
+ description = "A tangy Pineapple Milkshake"
+ color = "#feea63"
+ nutriment_factor = 1
+ taste_description = "citrus and cream"
+ glass_icon = 'modular_splurt/icons/obj/drinks.dmi'
+ glass_icon_state = "pineappleshake"
+ glass_name = "glass of Pineapple Milkshake"
+ glass_desc = "A Pineapple milkshake, a bit sweet and a bit sour, but all delicious!"
+
+/datum/reagent/consumable/milkshake_melon
+ name = "Watermelon Milkshake"
+ description = "Delicous Watermelon Milkshake"
+ color = "#E37383"
+ nutriment_factor = 1
+ taste_description = "warm sun and sweet cream"
+ glass_icon = 'modular_splurt/icons/obj/drinks.dmi'
+ glass_icon_state = "melonshake"
+ glass_name = "glass of Watermelon Milkshake"
+ glass_desc = "A Watermelon milkshake, it's like summer all over again!"
diff --git a/modular_splurt/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/modular_splurt/code/modules/reagents/chemistry/reagents/drug_reagents.dm
index 380c64e049..9a9ef48727 100644
--- a/modular_splurt/code/modules/reagents/chemistry/reagents/drug_reagents.dm
+++ b/modular_splurt/code/modules/reagents/chemistry/reagents/drug_reagents.dm
@@ -1,10 +1,17 @@
-//Main code edits
-/datum/reagent/drug/aphrodisiacplus/overdose_process(mob/living/M)
- if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO))
- if(!HAS_TRAIT(M, TRAIT_IN_HEAT))
- to_chat(M, span_userlove("Your need for sex is overpowering!"))
- M.log_message("Made In Heat by hexacrocin.", LOG_EMOTE)
- ADD_TRAIT(M, TRAIT_IN_HEAT, APHRO_TRAIT)
+/datum/reagent/drug/aphrodisiacplus/overdose_start(mob/living/M)
+ // Check for pre-existing heat trait
+ if(!HAS_TRAIT(M, TRAIT_ESTROUS_ACTIVE))
+ // Check client preferences
+ if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO))
+ // Add quirk
+ M.add_quirk(/datum/quirk/estrous_active, APHRO_TRAIT)
+
+ // Chat message is handled by the quirk
+
+ // Log interaction
+ M.log_message("Given the In Estrous quirk by hexacrocin overdose.", LOG_EMOTE)
+
+ // Return normally
. = ..()
//Own stuff
diff --git a/modular_splurt/code/modules/reagents/chemistry/reagents/other_reagents.dm b/modular_splurt/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 74d6eb5142..e327fc1409 100644
--- a/modular_splurt/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/modular_splurt/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -28,16 +28,18 @@
/datum/reagent/blood/on_mob_life(mob/living/carbon/C)
. = ..()
- if(HAS_TRAIT(C,BLOODFLEDGE))
- C.adjust_nutrition(6) //3/4ed this, felt it was a bit too much
- C.adjust_disgust(-3) //makes the churches effects easily negated
+ if(HAS_TRAIT(C,TRAIT_BLOODFLEDGE))
+ C.adjust_nutrition(6)
+ C.adjust_disgust(-2) // Negates the chapel's disgust effect
+ C.adjustStaminaLoss(1) // Mitigates the chapel's stamina effect
/datum/reagent/water/holywater/on_mob_life(mob/living/carbon/M)
. = ..()
- //makes holy water slightly disgusting and hungering for vampires
- if(HAS_TRAIT(M,BLOODFLEDGE))
- M.adjust_disgust(1)
- M.adjust_nutrition(-0.1)
+ // Makes holy water disgusting and hungering for bloodfledges
+ // Directly antithetic to the effects of blood
+ if(HAS_TRAIT(M,TRAIT_BLOODFLEDGE))
+ M.adjust_disgust(2)
+ M.adjust_nutrition(-6)
// Cursed blood effect moved here
if(HAS_TRAIT(M, TRAIT_CURSED_BLOOD))
diff --git a/modular_splurt/code/modules/reagents/reagent_containers/borghydro.dm b/modular_splurt/code/modules/reagents/reagent_containers/borghydro.dm
new file mode 100644
index 0000000000..3c3e062b0e
--- /dev/null
+++ b/modular_splurt/code/modules/reagents/reagent_containers/borghydro.dm
@@ -0,0 +1,12 @@
+/obj/item/reagent_containers/borghypo/borgshaker/beershaker/Initialize()
+ var/list/extra_reagents = list(
+ /datum/reagent/consumable/ethanol/amaretto,
+ /datum/reagent/consumable/ethanol/applejack,
+ /datum/reagent/consumable/ethanol/curacao,
+ /datum/reagent/consumable/ethanol/hcider,
+ /datum/reagent/consumable/ethanol/navy_rum,
+ /datum/reagent/consumable/ethanol/sake,
+ /datum/reagent/consumable/ethanol
+ )
+ LAZYADD(reagent_ids, extra_reagents)
+ . = ..()
diff --git a/modular_splurt/code/modules/research/designs/misc_designs.dm b/modular_splurt/code/modules/research/designs/misc_designs.dm
new file mode 100644
index 0000000000..e6105fd3f3
--- /dev/null
+++ b/modular_splurt/code/modules/research/designs/misc_designs.dm
@@ -0,0 +1,2 @@
+/datum/design/light_replacer_blue/New()
+ departmental_flags |= DEPARTMENTAL_FLAG_SCIENCE
diff --git a/modular_splurt/code/modules/research/techweb/nodes/misc_nodes.dm b/modular_splurt/code/modules/research/techweb/nodes/biotech_nodes.dm
similarity index 51%
rename from modular_splurt/code/modules/research/techweb/nodes/misc_nodes.dm
rename to modular_splurt/code/modules/research/techweb/nodes/biotech_nodes.dm
index 7db0714874..ff81163de3 100644
--- a/modular_splurt/code/modules/research/techweb/nodes/misc_nodes.dm
+++ b/modular_splurt/code/modules/research/techweb/nodes/biotech_nodes.dm
@@ -1,3 +1,3 @@
-/datum/techweb_node/datatheory/New()
+/datum/techweb_node/biotech/New()
design_ids += "sex_research"
. = ..()
diff --git a/modular_splurt/code/modules/research/techweb/nodes/robotic_nodes.dm b/modular_splurt/code/modules/research/techweb/nodes/robotic_nodes.dm
index f90fac955d..9256485813 100644
--- a/modular_splurt/code/modules/research/techweb/nodes/robotic_nodes.dm
+++ b/modular_splurt/code/modules/research/techweb/nodes/robotic_nodes.dm
@@ -1,7 +1,7 @@
/datum/techweb_node/neural_programming
design_ids = list("impant_radio")
-/datum/techweb_node/ai/Initialize()
+/datum/techweb_node/ai/New()
var/extra_designs = list(
"slut_module",
"shebang_module",
diff --git a/modular_splurt/code/modules/surgery/organs/augments_arms.dm b/modular_splurt/code/modules/surgery/organs/augments_arms.dm
index d49fe172f5..aa7db49438 100644
--- a/modular_splurt/code/modules/surgery/organs/augments_arms.dm
+++ b/modular_splurt/code/modules/surgery/organs/augments_arms.dm
@@ -24,3 +24,17 @@
w_class = WEIGHT_CLASS_BULKY
sharpness = SHARP_POINTY
attack_verb = list("slashed", "cut")
+
+// Synth power cord interaction override
+/obj/item/apc_powercord/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
+ // Define user
+ var/mob/living/carbon/human/cord_user = user
+
+ // Check for bloodfledge
+ if(HAS_TRAIT(cord_user, TRAIT_BLOODFLEDGE))
+ // Warn user and return
+ to_chat(cord_user, span_warning("You try to siphon energy from [target], but a sanguine force prevents you from absorbing any charge!"))
+ return
+
+ // Return normally
+ . = ..()
diff --git a/modular_splurt/code/modules/uplink/uplink_items/uplink_devices.dm b/modular_splurt/code/modules/uplink/uplink_items/uplink_devices.dm
new file mode 100644
index 0000000000..fe3de42d03
--- /dev/null
+++ b/modular_splurt/code/modules/uplink/uplink_items/uplink_devices.dm
@@ -0,0 +1,6 @@
+/datum/uplink_item/device_tools/syndicate_ball
+ name = "Syndicate Beach Ball"
+ item = /obj/item/toy/beach_ball/syndicate
+ desc = "A beach ball, it reacts when a vibrator is inserted inside of it. Watch out!"
+ cost = 3
+
diff --git a/modular_splurt/code/modules/vending/clothesmate.dm b/modular_splurt/code/modules/vending/clothesmate.dm
index d7d67e4011..da97e25df6 100644
--- a/modular_splurt/code/modules/vending/clothesmate.dm
+++ b/modular_splurt/code/modules/vending/clothesmate.dm
@@ -16,7 +16,9 @@
/obj/item/clothing/under/officesexy = 3,
/obj/item/clothing/suit/toggle/tunnelfox = 3,
/obj/item/clothing/under/performer = 2,
- /obj/item/clothing/under/bluedress = 3
+ /obj/item/clothing/under/bluedress = 3,
+ /obj/item/clothing/under/misc/leia_outfit = 2,
+ /obj/item/clothing/under/performer/polychromic = 2
)
var/list/extra_contraband = list(
/obj/item/clothing/under/rank/civilian/lawyer/galaxy_red = 3,
diff --git a/modular_splurt/code/modules/vending/kinkmate.dm b/modular_splurt/code/modules/vending/kinkmate.dm
index 45b0becd3b..bb14521e57 100644
--- a/modular_splurt/code/modules/vending/kinkmate.dm
+++ b/modular_splurt/code/modules/vending/kinkmate.dm
@@ -24,6 +24,7 @@
/obj/item/clothing/neck/syntech/collar = 4,
/obj/item/storage/fancy/jellybean_pack = 5,
/obj/item/storage/box/aphrodisiac_pump = 5,
+ /obj/item/storage/box/bulk_condoms = 10,
/obj/item/strapon_strap = 5,
/obj/item/restraints/bondage_rope = 5,
/obj/item/clothing/under/domina = 5,
@@ -31,7 +32,8 @@
/obj/item/storage/box/chastity_cage = 6,
/obj/item/storage/box/chastity_cage/metal = 3,
/obj/item/storage/box/chastity_cage/belt = 2,
- /obj/item/clothing/shoes/invisiboots = 10 // Added here to go with the Gear Harness
+ /obj/item/clothing/shoes/invisiboots = 10, // Added here to go with the Gear Harness
+ /obj/item/clothing/shoes/highheel_sandals = 3
)
var/list/extra_contraband = list(
//Lewd-Clothes
diff --git a/modular_splurt/icons/misc/beach.dmi b/modular_splurt/icons/misc/beach.dmi
new file mode 100644
index 0000000000..0bc186df19
Binary files /dev/null and b/modular_splurt/icons/misc/beach.dmi differ
diff --git a/modular_splurt/icons/mob/64_mam_tails.dmi b/modular_splurt/icons/mob/64_mam_tails.dmi
index 115d051436..b7f1ac3834 100644
Binary files a/modular_splurt/icons/mob/64_mam_tails.dmi and b/modular_splurt/icons/mob/64_mam_tails.dmi differ
diff --git a/modular_splurt/icons/mob/clothing/32x48_head.dmi b/modular_splurt/icons/mob/clothing/32x48_head.dmi
new file mode 100644
index 0000000000..d34f1f1e0c
Binary files /dev/null and b/modular_splurt/icons/mob/clothing/32x48_head.dmi differ
diff --git a/modular_splurt/icons/mob/clothing/shoes.dmi b/modular_splurt/icons/mob/clothing/shoes.dmi
index 0956dfbdd1..005bdc7b7d 100644
Binary files a/modular_splurt/icons/mob/clothing/shoes.dmi and b/modular_splurt/icons/mob/clothing/shoes.dmi differ
diff --git a/modular_splurt/icons/mob/clothing/shoes_digi.dmi b/modular_splurt/icons/mob/clothing/shoes_digi.dmi
index a37e1178f1..755d9c92e9 100644
Binary files a/modular_splurt/icons/mob/clothing/shoes_digi.dmi and b/modular_splurt/icons/mob/clothing/shoes_digi.dmi differ
diff --git a/modular_splurt/icons/mob/clothing/uniform.dmi b/modular_splurt/icons/mob/clothing/uniform.dmi
index 1555bade4d..dccf18cc43 100644
Binary files a/modular_splurt/icons/mob/clothing/uniform.dmi and b/modular_splurt/icons/mob/clothing/uniform.dmi differ
diff --git a/modular_splurt/icons/mob/clothing/uniform_digi.dmi b/modular_splurt/icons/mob/clothing/uniform_digi.dmi
index ce963b6af7..951d678785 100644
Binary files a/modular_splurt/icons/mob/clothing/uniform_digi.dmi and b/modular_splurt/icons/mob/clothing/uniform_digi.dmi differ
diff --git a/modular_splurt/icons/mob/inhands/misc/books_lefthand.dmi b/modular_splurt/icons/mob/inhands/misc/books_lefthand.dmi
new file mode 100644
index 0000000000..cd59fe6d03
Binary files /dev/null and b/modular_splurt/icons/mob/inhands/misc/books_lefthand.dmi differ
diff --git a/modular_splurt/icons/mob/inhands/misc/books_righthand.dmi b/modular_splurt/icons/mob/inhands/misc/books_righthand.dmi
new file mode 100644
index 0000000000..a2fc3cc73b
Binary files /dev/null and b/modular_splurt/icons/mob/inhands/misc/books_righthand.dmi differ
diff --git a/modular_splurt/icons/mob/inhands/weapons/melee_lefthand.dmi b/modular_splurt/icons/mob/inhands/weapons/melee_lefthand.dmi
index 93508f584a..751e41c260 100644
Binary files a/modular_splurt/icons/mob/inhands/weapons/melee_lefthand.dmi and b/modular_splurt/icons/mob/inhands/weapons/melee_lefthand.dmi differ
diff --git a/modular_splurt/icons/mob/inhands/weapons/melee_righthand.dmi b/modular_splurt/icons/mob/inhands/weapons/melee_righthand.dmi
index 71d886823e..da23681d2a 100644
Binary files a/modular_splurt/icons/mob/inhands/weapons/melee_righthand.dmi and b/modular_splurt/icons/mob/inhands/weapons/melee_righthand.dmi differ
diff --git a/modular_splurt/icons/mob/mam_markings.dmi b/modular_splurt/icons/mob/mam_markings.dmi
index d2b389c66e..8d2ca68181 100644
Binary files a/modular_splurt/icons/mob/mam_markings.dmi and b/modular_splurt/icons/mob/mam_markings.dmi differ
diff --git a/modular_splurt/icons/mob/mam_snouts.dmi b/modular_splurt/icons/mob/mam_snouts.dmi
index 27bab79b2d..fb6071b8c2 100644
Binary files a/modular_splurt/icons/mob/mam_snouts.dmi and b/modular_splurt/icons/mob/mam_snouts.dmi differ
diff --git a/modular_splurt/icons/mob/mam_tails.dmi b/modular_splurt/icons/mob/mam_tails.dmi
index 4d4f4e6755..e2ec928443 100644
Binary files a/modular_splurt/icons/mob/mam_tails.dmi and b/modular_splurt/icons/mob/mam_tails.dmi differ
diff --git a/modular_splurt/icons/mobs/suits.dmi b/modular_splurt/icons/mobs/suits.dmi
index 1369bc912a..57f709fdbb 100644
Binary files a/modular_splurt/icons/mobs/suits.dmi and b/modular_splurt/icons/mobs/suits.dmi differ
diff --git a/modular_splurt/icons/obj/card.dmi b/modular_splurt/icons/obj/card.dmi
new file mode 100644
index 0000000000..6c7eaeb624
Binary files /dev/null and b/modular_splurt/icons/obj/card.dmi differ
diff --git a/modular_splurt/icons/obj/clothing/hats.dmi b/modular_splurt/icons/obj/clothing/hats.dmi
index 472ff0cb1b..7af75114a5 100644
Binary files a/modular_splurt/icons/obj/clothing/hats.dmi and b/modular_splurt/icons/obj/clothing/hats.dmi differ
diff --git a/modular_splurt/icons/obj/clothing/shoes.dmi b/modular_splurt/icons/obj/clothing/shoes.dmi
index 71b62b42bc..311174d23d 100644
Binary files a/modular_splurt/icons/obj/clothing/shoes.dmi and b/modular_splurt/icons/obj/clothing/shoes.dmi differ
diff --git a/modular_splurt/icons/obj/clothing/suits.dmi b/modular_splurt/icons/obj/clothing/suits.dmi
index 418f999575..de921cc6bd 100644
Binary files a/modular_splurt/icons/obj/clothing/suits.dmi and b/modular_splurt/icons/obj/clothing/suits.dmi differ
diff --git a/modular_splurt/icons/obj/clothing/uniforms.dmi b/modular_splurt/icons/obj/clothing/uniforms.dmi
index 3880f77532..f6648a1fac 100644
Binary files a/modular_splurt/icons/obj/clothing/uniforms.dmi and b/modular_splurt/icons/obj/clothing/uniforms.dmi differ
diff --git a/modular_splurt/icons/obj/drinks.dmi b/modular_splurt/icons/obj/drinks.dmi
index 4339e5560a..4ea6784f4e 100644
Binary files a/modular_splurt/icons/obj/drinks.dmi and b/modular_splurt/icons/obj/drinks.dmi differ
diff --git a/modular_splurt/icons/obj/items_and_weapons.dmi b/modular_splurt/icons/obj/items_and_weapons.dmi
index b0c383513b..a5b3d02d5b 100644
Binary files a/modular_splurt/icons/obj/items_and_weapons.dmi and b/modular_splurt/icons/obj/items_and_weapons.dmi differ
diff --git a/modular_splurt/sound/voice/huh.ogg b/modular_splurt/sound/voice/huh.ogg
new file mode 100644
index 0000000000..accf4cab3c
Binary files /dev/null and b/modular_splurt/sound/voice/huh.ogg differ
diff --git a/modular_splurt/sound/voice/whine.ogg b/modular_splurt/sound/voice/whine.ogg
new file mode 100644
index 0000000000..2d2f825a83
Binary files /dev/null and b/modular_splurt/sound/voice/whine.ogg differ
diff --git a/tgstation.dme b/tgstation.dme
index b7430e00ff..bcd68f2c44 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -156,6 +156,7 @@
#include "code\__DEFINES\dcs\flags.dm"
#include "code\__DEFINES\dcs\helpers.dm"
#include "code\__DEFINES\dcs\signals.dm"
+#include "code\__DEFINES\dcs\signals\signals_movable.dm"
#include "code\__DEFINES\dcs\signals\signals_subsystem.dm"
#include "code\__DEFINES\dcs\signals\signals_atom\signals_atom_movement.dm"
#include "code\__DEFINES\dcs\signals\signals_mob\signals_mob_living.dm"
@@ -261,6 +262,7 @@
#include "code\__SPLURTCODE\DEFINES\lewd.dm"
#include "code\__SPLURTCODE\DEFINES\login.dm"
#include "code\__SPLURTCODE\DEFINES\mobs.dm"
+#include "code\__SPLURTCODE\DEFINES\preferences.dm"
#include "code\__SPLURTCODE\DEFINES\pregnancy.dm"
#include "code\__SPLURTCODE\DEFINES\quirks.dm"
#include "code\__SPLURTCODE\DEFINES\radiation.dm"
@@ -1511,6 +1513,7 @@
#include "code\modules\admin\create_object.dm"
#include "code\modules\admin\create_poll.dm"
#include "code\modules\admin\create_turf.dm"
+#include "code\modules\admin\force_event.dm"
#include "code\modules\admin\fun_balloon.dm"
#include "code\modules\admin\holder2.dm"
#include "code\modules\admin\ipintel.dm"
@@ -2216,6 +2219,7 @@
#include "code\modules\events\processor_overload.dm"
#include "code\modules\events\radiation_storm.dm"
#include "code\modules\events\sentience.dm"
+#include "code\modules\events\shuttle_catastrophe.dm"
#include "code\modules\events\shuttle_loan.dm"
#include "code\modules\events\space_dragon.dm"
#include "code\modules\events\space_ninja.dm"
@@ -3708,6 +3712,7 @@
#include "code\modules\tgui\states\debug.dm"
#include "code\modules\tgui\states\deep_inventory.dm"
#include "code\modules\tgui\states\default.dm"
+#include "code\modules\tgui\states\fun.dm"
#include "code\modules\tgui\states\hands.dm"
#include "code\modules\tgui\states\human_adjacent.dm"
#include "code\modules\tgui\states\inventory.dm"
@@ -3856,6 +3861,7 @@
#include "modular_citadel\code\modules\client\loadout\_medical.dm"
#include "modular_citadel\code\modules\client\loadout\_security.dm"
#include "modular_citadel\code\modules\client\loadout\_service.dm"
+#include "modular_citadel\code\modules\client\loadout\accessory.dm"
#include "modular_citadel\code\modules\client\loadout\backpack.dm"
#include "modular_citadel\code\modules\client\loadout\glasses.dm"
#include "modular_citadel\code\modules\client\loadout\gloves.dm"
@@ -3926,11 +3932,13 @@
#include "modular_citadel\code\modules\vectorcrafts\vectortruck.dm"
#include "modular_citadel\code\modules\vectorcrafts\vectorvariants.dm"
#include "modular_sand\code\_globalvars\bitfields.dm"
+#include "modular_sand\code\_globalvars\lists\lewd_content.dm"
#include "modular_sand\code\_globalvars\lists\misc.dm"
#include "modular_sand\code\_globalvars\lists\objects.dm"
#include "modular_sand\code\_onclick\hud\hud.dm"
#include "modular_sand\code\_onclick\hud\screen_objects.dm"
#include "modular_sand\code\controllers\configuration\entries\sandstorm.dm"
+#include "modular_sand\code\controllers\configuration\entries\sandstorm_balance.dm"
#include "modular_sand\code\controllers\subsystem\interactions.dm"
#include "modular_sand\code\controllers\subsystem\job.dm"
#include "modular_sand\code\controllers\subsystem\language.dm"
@@ -3945,6 +3953,7 @@
#include "modular_sand\code\datums\components\storage\concrete\dresser.dm"
#include "modular_sand\code\datums\diseases\advance\symptoms\species.dm"
#include "modular_sand\code\datums\elements\holder_micro.dm"
+#include "modular_sand\code\datums\elements\skirt_peeking.dm"
#include "modular_sand\code\datums\interactions\_interaction.dm"
#include "modular_sand\code\datums\interactions\interaction_interface.dm"
#include "modular_sand\code\datums\interactions\interaction_mob.dm"
@@ -3988,6 +3997,7 @@
#include "modular_sand\code\game\machinery\cryopod.dm"
#include "modular_sand\code\game\machinery\cryptominers.dm"
#include "modular_sand\code\game\machinery\Sleeper.dm"
+#include "modular_sand\code\game\machinery\computer\cloning.dm"
#include "modular_sand\code\game\machinery\computer\arcade\tetris.dm"
#include "modular_sand\code\game\machinery\pipe\construction.dm"
#include "modular_sand\code\game\machinery\telecomms\machine_interactions.dm"
@@ -4007,6 +4017,7 @@
#include "modular_sand\code\game\objects\items\extinguisher.dm"
#include "modular_sand\code\game\objects\items\fleshlight.dm"
#include "modular_sand\code\game\objects\items\miscellaneous.dm"
+#include "modular_sand\code\game\objects\items\plushes.dm"
#include "modular_sand\code\game\objects\items\circuitboards\computer_circuitboards.dm"
#include "modular_sand\code\game\objects\items\circuitboards\machine_circuitboards.dm"
#include "modular_sand\code\game\objects\items\devices\dogborg_sleeper.dm"
@@ -4078,6 +4089,7 @@
#include "modular_sand\code\modules\client\preferences_savefile.dm"
#include "modular_sand\code\modules\client\loadout\_security.dm"
#include "modular_sand\code\modules\client\loadout\accessories.dm"
+#include "modular_sand\code\modules\client\loadout\backpack.dm"
#include "modular_sand\code\modules\client\loadout\boxers.dm"
#include "modular_sand\code\modules\client\loadout\hands.dm"
#include "modular_sand\code\modules\client\loadout\head.dm"
@@ -4099,12 +4111,7 @@
#include "modular_sand\code\modules\clothing\spacesuits\hardsuit.dm"
#include "modular_sand\code\modules\clothing\suits\miscellaneous.dm"
#include "modular_sand\code\modules\clothing\under\_under.dm"
-#include "modular_sand\code\modules\clothing\under\color.dm"
#include "modular_sand\code\modules\clothing\under\costumes.dm"
-#include "modular_sand\code\modules\clothing\under\misc.dm"
-#include "modular_sand\code\modules\clothing\under\skirt_dress.dm"
-#include "modular_sand\code\modules\clothing\under\suits.dm"
-#include "modular_sand\code\modules\clothing\under\syndicate.dm"
#include "modular_sand\code\modules\clothing\under\uniform.dm"
#include "modular_sand\code\modules\clothing\underwear\_underwear.dm"
#include "modular_sand\code\modules\clothing\underwear\boxers.dm"
@@ -4121,6 +4128,7 @@
#include "modular_sand\code\modules\integrated_electronics\subtypes\output.dm"
#include "modular_sand\code\modules\jobs\job_types\_job.dm"
#include "modular_sand\code\modules\jobs\job_types\_job_alt_titles.dm"
+#include "modular_sand\code\modules\jobs\job_types\prisoner.dm"
#include "modular_sand\code\modules\keybindings\keybind\carbon.dm"
#include "modular_sand\code\modules\language\dragon.dm"
#include "modular_sand\code\modules\language\language.dm"
@@ -4148,13 +4156,15 @@
#include "modular_sand\code\modules\mob\living\carbon\carbon.dm"
#include "modular_sand\code\modules\mob\living\carbon\life.dm"
#include "modular_sand\code\modules\mob\living\carbon\show.dm"
-#include "modular_sand\code\modules\mob\living\carbon\human\examine.dm"
#include "modular_sand\code\modules\mob\living\carbon\human\human.dm"
#include "modular_sand\code\modules\mob\living\carbon\human\human_defines.dm"
#include "modular_sand\code\modules\mob\living\carbon\human\human_stripping.dm"
#include "modular_sand\code\modules\mob\living\carbon\human\life.dm"
#include "modular_sand\code\modules\mob\living\carbon\human\species.dm"
+#include "modular_sand\code\modules\mob\living\carbon\human\species_types\anthropomorph.dm"
+#include "modular_sand\code\modules\mob\living\carbon\human\species_types\ipc.dm"
#include "modular_sand\code\modules\mob\living\carbon\human\species_types\lizardpeople.dm"
+#include "modular_sand\code\modules\mob\living\carbon\human\species_types\synthliz.dm"
#include "modular_sand\code\modules\mob\living\silicon\silicon.dm"
#include "modular_sand\code\modules\mob\living\silicon\ai\ai.dm"
#include "modular_sand\code\modules\mob\living\silicon\ai\vox_sounds.dm"
@@ -4202,6 +4212,7 @@
#include "modular_sand\code\modules\reagents\chemistry\reagents\alcohol_reagents.dm"
#include "modular_sand\code\modules\reagents\chemistry\reagents\cit_reagents.dm"
#include "modular_sand\code\modules\reagents\chemistry\reagents\drink_reagents.dm"
+#include "modular_sand\code\modules\reagents\chemistry\reagents\fermi_reagents.dm"
#include "modular_sand\code\modules\reagents\chemistry\reagents\medicine_reagents.dm"
#include "modular_sand\code\modules\reagents\chemistry\reagents\other_reagents.dm"
#include "modular_sand\code\modules\reagents\chemistry\recipes\others.dm"
@@ -4308,6 +4319,7 @@
#include "modular_splurt\code\datums\components\crafting\recipes\recipes_robot.dm"
#include "modular_splurt\code\datums\components\storage\concrete\pockets.dm"
#include "modular_splurt\code\datums\elements\crawl_under.dm"
+#include "modular_splurt\code\datums\elements\mob_holder.dm"
#include "modular_splurt\code\datums\elements\smalltalk.dm"
#include "modular_splurt\code\datums\elements\spooky.dm"
#include "modular_splurt\code\datums\elements\wuv.dm"
@@ -4553,14 +4565,19 @@
#include "modular_splurt\code\modules\client\verbs\looc.dm"
#include "modular_splurt\code\modules\client\verbs\ooc.dm"
#include "modular_splurt\code\modules\clothing\back.dm"
+#include "modular_splurt\code\modules\clothing\clothing.dm"
#include "modular_splurt\code\modules\clothing\gloves.dm"
#include "modular_splurt\code\modules\clothing\kinkyclothes.dm"
#include "modular_splurt\code\modules\clothing\sizeaccessories.dm"
#include "modular_splurt\code\modules\clothing\glasses\_glasses.dm"
#include "modular_splurt\code\modules\clothing\glasses\hud.dm"
+#include "modular_splurt\code\modules\clothing\gloves\_gloves.dm"
+#include "modular_splurt\code\modules\clothing\head\_head.dm"
+#include "modular_splurt\code\modules\clothing\head\hardhat.dm"
#include "modular_splurt\code\modules\clothing\head\helmet.dm"
#include "modular_splurt\code\modules\clothing\head\jobs.dm"
#include "modular_splurt\code\modules\clothing\head\misc.dm"
+#include "modular_splurt\code\modules\clothing\head\misc_special.dm"
#include "modular_splurt\code\modules\clothing\lewd_clothing\collar\kink_collars.dm"
#include "modular_splurt\code\modules\clothing\lewd_clothing\eyes\hypnogoggles.dm"
#include "modular_splurt\code\modules\clothing\lewd_clothing\foot\lewd_shoes.dm"
@@ -4568,11 +4585,15 @@
#include "modular_splurt\code\modules\clothing\lewd_clothing\head\deprivation_helmet.dm"
#include "modular_splurt\code\modules\clothing\lewd_clothing\head\hats.dm"
#include "modular_splurt\code\modules\clothing\lewd_clothing\uniform\latex_catsuit.dm"
+#include "modular_splurt\code\modules\clothing\masks\_mask.dm"
+#include "modular_splurt\code\modules\clothing\masks\boxing.dm"
#include "modular_splurt\code\modules\clothing\masks\gasmask.dm"
#include "modular_splurt\code\modules\clothing\masks\hailer.dm"
#include "modular_splurt\code\modules\clothing\masks\miscellaneous.dm"
#include "modular_splurt\code\modules\clothing\neck\_neck.dm"
#include "modular_splurt\code\modules\clothing\outfits\ert.dm"
+#include "modular_splurt\code\modules\clothing\shoes\_shoes.dm"
+#include "modular_splurt\code\modules\clothing\shoes\magboots.dm"
#include "modular_splurt\code\modules\clothing\shoes\miscellaneous.dm"
#include "modular_splurt\code\modules\clothing\spacesuits\hardsuit.dm"
#include "modular_splurt\code\modules\clothing\suits\armor.dm"
@@ -4580,6 +4601,7 @@
#include "modular_splurt\code\modules\clothing\suits\heavy.dm"
#include "modular_splurt\code\modules\clothing\suits\jobs.dm"
#include "modular_splurt\code\modules\clothing\suits\miscellaneous.dm"
+#include "modular_splurt\code\modules\clothing\suits\utility.dm"
#include "modular_splurt\code\modules\clothing\suits\vest.dm"
#include "modular_splurt\code\modules\clothing\under\_under.dm"
#include "modular_splurt\code\modules\clothing\under\miscellaneous.dm"
@@ -4588,6 +4610,7 @@
#include "modular_splurt\code\modules\clothing\under\jobs\engineering.dm"
#include "modular_splurt\code\modules\clothing\under\jobs\security.dm"
#include "modular_splurt\code\modules\clothing\under\jobs\civilian\civilian.dm"
+#include "modular_splurt\code\modules\clothing\underwear\_underwear.dm"
#include "modular_splurt\code\modules\clothing\underwear\boxers.dm"
#include "modular_splurt\code\modules\clothing\underwear\shirts.dm"
#include "modular_splurt\code\modules\clothing\underwear\socks.dm"
@@ -4632,6 +4655,7 @@
#include "modular_splurt\code\modules\jobs\job_types\security_officer.dm"
#include "modular_splurt\code\modules\jobs\job_types\service.dm"
#include "modular_splurt\code\modules\jobs\job_types\station_engineer.dm"
+#include "modular_splurt\code\modules\keybindings\keybind\communication.dm"
#include "modular_splurt\code\modules\keybindings\keybind\human.dm"
#include "modular_splurt\code\modules\keybindings\keybind\movement.dm"
#include "modular_splurt\code\modules\language\xenocommon.dm"
@@ -4670,6 +4694,7 @@
#include "modular_splurt\code\modules\mob\living\say.dm"
#include "modular_splurt\code\modules\mob\living\brain\brain_item.dm"
#include "modular_splurt\code\modules\mob\living\carbon\carbon.dm"
+#include "modular_splurt\code\modules\mob\living\carbon\human\emote.dm"
#include "modular_splurt\code\modules\mob\living\carbon\human\human.dm"
#include "modular_splurt\code\modules\mob\living\carbon\human\human_defines.dm"
#include "modular_splurt\code\modules\mob\living\carbon\human\inventory.dm"
@@ -4702,6 +4727,8 @@
#include "modular_splurt\code\modules\mob\living\simple_animal\hostile\megafauna\king_of_goats.dm"
#include "modular_splurt\code\modules\mob\living\simple_animal\hostile\megafauna\sand.dm"
#include "modular_splurt\code\modules\paperwork\pen.dm"
+#include "modular_splurt\code\modules\photography\photos\album.dm"
+#include "modular_splurt\code\modules\photography\photos\photo.dm"
#include "modular_splurt\code\modules\power\cell.dm"
#include "modular_splurt\code\modules\power\reactor\fluffed.dm"
#include "modular_splurt\code\modules\projectiles\ammunition\ballistic\pistol.dm"
@@ -4734,6 +4761,7 @@
#include "modular_splurt\code\modules\reagents\chemistry\reagents\other_reagents.dm"
#include "modular_splurt\code\modules\reagents\chemistry\recipes\drugs.dm"
#include "modular_splurt\code\modules\reagents\chemistry\recipes\lewd.dm"
+#include "modular_splurt\code\modules\reagents\reagent_containers\borghydro.dm"
#include "modular_splurt\code\modules\reagents\reagent_containers\bottle.dm"
#include "modular_splurt\code\modules\reagents\reagent_containers\hypospray.dm"
#include "modular_splurt\code\modules\reagents\reagent_containers\hypovial.dm"
@@ -4747,15 +4775,16 @@
#include "modular_splurt\code\modules\research\designs\mecha_designs.dm"
#include "modular_splurt\code\modules\research\designs\mechfabricator_designs.dm"
#include "modular_splurt\code\modules\research\designs\medical_designs.dm"
+#include "modular_splurt\code\modules\research\designs\misc_designs.dm"
#include "modular_splurt\code\modules\research\designs\power_designs.dm"
#include "modular_splurt\code\modules\research\designs\stock_parts_designs.dm"
#include "modular_splurt\code\modules\research\designs\tool_designs.dm"
#include "modular_splurt\code\modules\research\designs\autolathe_desings\autolathe_designs_sec_and_hacked.dm"
#include "modular_splurt\code\modules\research\designs\machine_designs\machine_designs_all_misc.dm"
+#include "modular_splurt\code\modules\research\techweb\nodes\biotech_nodes.dm"
#include "modular_splurt\code\modules\research\techweb\nodes\bluespace_nodes.dm"
#include "modular_splurt\code\modules\research\techweb\nodes\mecha_nodes.dm"
#include "modular_splurt\code\modules\research\techweb\nodes\medical_nodes.dm"
-#include "modular_splurt\code\modules\research\techweb\nodes\misc_nodes.dm"
#include "modular_splurt\code\modules\research\techweb\nodes\robotic_nodes.dm"
#include "modular_splurt\code\modules\resize\smallsprite_action.dm"
#include "modular_splurt\code\modules\ruins\objects_and_mobs\ash_walker_den.dm"
diff --git a/tgui/packages/common/collections.ts b/tgui/packages/common/collections.ts
index a5ccd7003e..ae3f402b13 100644
--- a/tgui/packages/common/collections.ts
+++ b/tgui/packages/common/collections.ts
@@ -306,3 +306,24 @@ export const zip = (...arrays: T): Zip => {
export const zipWith = iterateeFn => (...arrays) => {
return map(values => iterateeFn(...values))(zip(...arrays));
};
+
+/**
+ * This method takes a collection of items and a number, returning a collection
+ * of collections, where the maximum amount of items in each is that second arg
+ */
+export const paginate = (collection: T[], maxPerPage: number): T[][] => {
+ const pages: T[][] = [];
+ let page: T[] = [];
+ let itemsToAdd = maxPerPage;
+
+ for (const item of collection) {
+ page.push(item);
+ itemsToAdd--;
+ if (!itemsToAdd) {
+ itemsToAdd = maxPerPage;
+ pages.push(page);
+ page = [];
+ }
+ }
+ return pages;
+};
diff --git a/tgui/packages/tgui/interfaces/ForceEvent.tsx b/tgui/packages/tgui/interfaces/ForceEvent.tsx
new file mode 100644
index 0000000000..a486f52482
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/ForceEvent.tsx
@@ -0,0 +1,197 @@
+import { paginate } from 'common/collections';
+import { useBackend, useLocalState } from '../backend';
+import { Stack, Button, Icon, Input, Section, Tabs } from '../components';
+import { Window } from '../layouts';
+
+const CATEGORY_PAGE_ITEMS = 4;
+const EVENT_PAGE_ITEMS = 2;
+const EVENT_PAGE_MAXCHARS = 48;
+
+/**
+ * Same as paginate, but respecting event names with a character max length
+ * that will also create a new page if created
+ */
+const paginateEvents = (events: Event[], maxPerPage: number): Event[][] => {
+ const pages: Event[][] = [];
+ let page: Event[] = [];
+ // conditions that make a new page
+ let itemsToAdd = maxPerPage;
+ let maxChars = EVENT_PAGE_MAXCHARS;
+
+ for (const event of events) {
+ maxChars -= event.name.length;
+ if (maxChars <= 0) {
+ // would overflow the next line over
+ itemsToAdd = maxPerPage;
+ maxChars = EVENT_PAGE_MAXCHARS - event.name.length;
+ pages.push(page);
+ page = [];
+ }
+ page.push(event);
+ itemsToAdd--;
+ if (!itemsToAdd) {
+ // max amount of items we allow
+ itemsToAdd = maxPerPage;
+ maxChars = EVENT_PAGE_MAXCHARS;
+ pages.push(page);
+ page = [];
+ }
+ }
+ if (page.length) {
+ pages.push(page);
+ }
+ return pages;
+};
+
+type Event = {
+ name: string;
+ description: string;
+ type: string;
+ category: string;
+};
+
+type Category = {
+ name: string;
+ icon: string;
+};
+
+type ForceEventData = {
+ categories: Category[];
+ events: Event[];
+};
+
+export const ForceEvent = (props, context) => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export const PanelOptions = (props, context) => {
+ const [searchQuery, setSearchQuery] = useLocalState(
+ context,
+ 'searchQuery',
+ ''
+ );
+
+ const [announce, setAnnounce] = useLocalState(context, 'announce', true);
+
+ return (
+
+
+
+
+
+ setSearchQuery(e.target.value)}
+ placeholder="Search..."
+ value={searchQuery}
+ />
+
+
+ setAnnounce(!announce)}>
+ Announce
+
+
+
+ );
+};
+
+export const EventSection = (props, context) => {
+ const { data, act } = useBackend(context);
+ const { categories, events } = data;
+
+ const [category] = useLocalState(context, 'category', categories[0]);
+ const [searchQuery] = useLocalState(context, 'searchQuery', '');
+ const [announce] = useLocalState(context, 'announce', true);
+
+ const preparedEvents = paginateEvents(
+ events.filter((event) => {
+ // remove events not in the category you're looking at
+ if (!searchQuery && event.category !== category.name) {
+ return false;
+ }
+ // remove events not being searched for, if a search is active
+ if (searchQuery && !event.name.toLowerCase().includes(searchQuery)) {
+ return false;
+ }
+ return true;
+ }),
+ EVENT_PAGE_ITEMS
+ );
+
+ const sectionTitle = searchQuery ? 'Searching...' : category.name + ' Events';
+
+ return (
+ }>
+
+ {preparedEvents.map((eventPage, i) => (
+
+
+ {eventPage.map((event) => (
+
+
+
+ ))}
+
+
+ ))}
+
+
+ );
+};
+
+export const EventTabs = (props, context) => {
+ const { data } = useBackend(context);
+ const { categories } = data;
+
+ const [category, setCategory] = useLocalState(
+ context,
+ 'category',
+ categories[0]
+ );
+
+ const layerCats = paginate(categories, CATEGORY_PAGE_ITEMS);
+
+ return (
+
+ {layerCats.map((page, i) => (
+
+ {page.map((cat) => (
+ setCategory(cat)}>
+ {cat.name}
+
+ ))}
+
+ ))}
+
+ );
+};
diff --git a/tgui/packages/tgui/interfaces/OperatingComputer.js b/tgui/packages/tgui/interfaces/OperatingComputer.js
index d181dbb3fd..068d85e3f0 100644
--- a/tgui/packages/tgui/interfaces/OperatingComputer.js
+++ b/tgui/packages/tgui/interfaces/OperatingComputer.js
@@ -127,7 +127,7 @@ const PatientStateView = (props, context) => {
)}
- {!!data.alternative_step && (
+ {procedure.alternative_step && (
{procedure.alternative_step}
{procedure.alt_chems_needed && (
diff --git a/tgui/packages/tgui/layouts/NtosWindow.js b/tgui/packages/tgui/layouts/NtosWindow.js
index 5c282c369a..b6a0146431 100644
--- a/tgui/packages/tgui/layouts/NtosWindow.js
+++ b/tgui/packages/tgui/layouts/NtosWindow.js
@@ -28,7 +28,7 @@ export const NtosWindow = (props, context) => {
PC_stationtime,
PC_programheaders = [],
PC_showexitprogram,
- PC_showpeneject,
+ TABLET_show_pen_eject,
} = data;
return (
{
src={resolveAsset(PC_apclinkicon)} />
)}
- {!!PC_showpeneject && (
+ {!!TABLET_show_pen_eject && (