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_ALMOST_EXPENSIVE // Half the price of 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/storage/wallets.dm b/modular_splurt/code/game/objects/items/storage/wallets.dm
new file mode 100644
index 0000000000..8e08e7b456
--- /dev/null
+++ b/modular_splurt/code/game/objects/items/storage/wallets.dm
@@ -0,0 +1,20 @@
+// Bluespace wallet
+/obj/item/storage/wallet/bluespace
+ name = "\improper wallet of holding"
+ desc = "A testament to science's hubris. It holds thrice as many stolen ID cards."
+ icon = 'modular_splurt/icons/obj/storage.dmi'
+ icon_state = "wallet_bluespace"
+
+ // Copied from bag of holding
+ resistance_flags = FIRE_PROOF
+ item_flags = NO_MAT_REDEMPTION
+ rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
+
+/obj/item/storage/wallet/bluespace/ComponentInitialize()
+ . = ..()
+ var/datum/component/storage/STR = GetComponent(/datum/component/storage)
+ STR.max_items = 12
+
+/obj/item/storage/wallet/bluespace/update_icon_state()
+ // Don't update icons
+ return
diff --git a/modular_splurt/code/game/objects/items/weaponry.dm b/modular_splurt/code/game/objects/items/weaponry.dm
index 6490b81444..522326cad1 100644
--- a/modular_splurt/code/game/objects/items/weaponry.dm
+++ b/modular_splurt/code/game/objects/items/weaponry.dm
@@ -22,13 +22,13 @@
force = 10
/obj/item/bdsm_whip/suicide_act(mob/user)
- user.visible_message("[user] is getting just a little too kinky!")
+ user.visible_message(span_suicide("[user] is getting just a little too kinky!"))
return (OXYLOSS)
/obj/item/bdsm_whip/attack(mob/M, mob/user)
if(user.zone_selected == BODY_ZONE_PRECISE_GROIN)
playsound(loc, 'sound/weapons/whip.ogg', 30)
- M.visible_message("[user] has [pick(attack_verb)] [M] on the ass!")
+ M.visible_message(span_userdanger("[user] has [pick(attack_verb)] [M] on the ass!"))
else
return ..(M, user)
@@ -54,5 +54,5 @@
total_mass = TOTAL_MASS_MEDIEVAL_WEAPON
/obj/item/khopesh/suicide_act(mob/user)
- user.visible_message("[user] is falling on [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ user.visible_message(span_suicide("[user] is falling on [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
return(BRUTELOSS)
diff --git a/modular_splurt/code/game/objects/items/weaponry/armyknife.dm b/modular_splurt/code/game/objects/items/weaponry/armyknife.dm
index 268ad386aa..a7274198d9 100644
--- a/modular_splurt/code/game/objects/items/weaponry/armyknife.dm
+++ b/modular_splurt/code/game/objects/items/weaponry/armyknife.dm
@@ -16,7 +16,7 @@
/obj/item/armyknife/attack_self(mob/user)
playsound(get_turf(user),'sound/weapons/batonextend.ogg',50,1)
var/obj/item/armyknife/ak_screw = new /obj/item/armyknife/screw(drop_location())
- to_chat(user, "You unfold the screwdriver.")
+ to_chat(user, span_notice("You unfold the screwdriver."))
qdel(src)
user.put_in_active_hand(ak_screw)
@@ -42,7 +42,7 @@
/obj/item/armyknife/screw/attack_self(mob/user)
playsound(get_turf(user),'sound/weapons/batonextend.ogg',50,1)
var/obj/item/armyknife/ak_cut = new /obj/item/armyknife/cutter(drop_location())
- to_chat(user, "You fold the screwdriver and unfold the wirecutters.")
+ to_chat(user, span_notice("You fold the screwdriver and unfold the wirecutters."))
qdel(src)
user.put_in_active_hand(ak_cut)
@@ -70,7 +70,7 @@
/obj/item/armyknife/cutter/attack_self(mob/user)
playsound(get_turf(user), 'sound/weapons/batonextend.ogg', 50, 1)
var/obj/item/armyknife/ak_knife = new /obj/item/armyknife/blade(drop_location())
- to_chat(user, "You fold the wirecutters and unfold the knife.")
+ to_chat(user, span_notice("You fold the wirecutters and unfold the knife."))
qdel(src)
user.put_in_active_hand(ak_knife)
@@ -94,7 +94,7 @@
/obj/item/armyknife/blade/attack_self(mob/user)
playsound(get_turf(user), 'sound/weapons/batonextend.ogg', 50, 1)
var/obj/item/armyknife/ak_fold = new /obj/item/armyknife(drop_location())
- to_chat(user, "You fold the knife.")
+ to_chat(user, span_notice("You fold the knife."))
qdel(src)
user.put_in_active_hand(ak_fold)
diff --git a/modular_splurt/code/game/objects/items/weaponry/melee.dm b/modular_splurt/code/game/objects/items/weaponry/melee.dm
index 2ad3ab7506..6750b10e31 100644
--- a/modular_splurt/code/game/objects/items/weaponry/melee.dm
+++ b/modular_splurt/code/game/objects/items/weaponry/melee.dm
@@ -3,7 +3,7 @@
/obj/item/melee/baseball_bat/AltClick(mob/living/carbon/human/user as mob)
hole = hole == CUM_TARGET_VAGINA ? CUM_TARGET_ANUS : CUM_TARGET_VAGINA
- to_chat(user, "Now targetting \the [hole].")
+ to_chat(user, span_notice("Now targetting \the [hole]."))
/obj/item/melee/baseball_bat/attack(mob/living/target, mob/living/user)
if (BODY_ZONE_PRECISE_GROIN && user.a_intent != INTENT_HARM) //ROUGH PRISON HUMILATION YAY
@@ -22,7 +22,7 @@
message = (user == target) ? pick("fucks [possessive_verb] own ass with \the [src]","shoves \the [src] into [possessive_verb] ass", "jams \the [src] into [possessive_verb] ass") : pick("fucks [target]'s asshole with \the [src]", "jams \the [src] into [target]'s ass")
lust_amt = NORMAL_LUST
if(message)
- user.visible_message("[user] [message].")
+ user.visible_message(span_lewd("[user] [message]."))
target.handle_post_sex(lust_amt, null, user)
playsound(loc, pick('modular_sand/sound/interactions/bang4.ogg',
'modular_sand/sound/interactions/bang5.ogg',
@@ -33,7 +33,7 @@
return
var/atom/throw_target = get_edge_target_turf(target, user.dir)
if(homerun_ready)
- user.visible_message("It's a home run!")
+ user.visible_message(span_userdanger("It's a home run!"))
target.throw_at(throw_target, rand(8,10), 14, user)
target.ex_act(EXPLODE_HEAVY)
playsound(get_turf(src), 'sound/weapons/homerun.ogg', 100, TRUE)
diff --git a/modular_splurt/code/game/objects/structures/bathroom.dm b/modular_splurt/code/game/objects/structures/bathroom.dm
index 8ba710f406..d43c5597a3 100644
--- a/modular_splurt/code/game/objects/structures/bathroom.dm
+++ b/modular_splurt/code/game/objects/structures/bathroom.dm
@@ -21,17 +21,17 @@
var/mob/living/carbon/human/H = user
if(istype(I, /obj/item/soap))
if(!istype(H.gloves, /obj/item/clothing/gloves/color/latex))
- to_chat(H, "No! No fucking way I'm touching this shit without at LEAST latex gloves!")
+ to_chat(H, span_warning("No! No fucking way I'm touching this shit without at LEAST latex gloves!"))
return
if(!istype(H.get_inactive_held_item(), /obj/item/storage/bag/trash))
- to_chat(H, "I'd.. need a trashbag or similar to stash all this shit.")
+ to_chat(H, span_warning("I'd.. need a trashbag or similar to stash all this shit."))
return
- H.visible_message("[H] starts cleaning \the [src]![prob(0.1) ? " All for free.." : ""]", "You start.. scooping all the shit into the trash bag.. Eugh.")
+ H.visible_message(span_notice("[H] starts cleaning \the [src]![prob(0.1) ? " All for free.." : ""]"), span_notice("You start.. scooping all the shit into the trash bag.. Eugh."))
if(!do_after(H, 130, target = src))
- H.visible_message("[H] gives up!", "Fuck this shit.")
+ H.visible_message(span_notice("[H] gives up!"), span_warning("Fuck this shit."))
return
- H.visible_message("[H] finishes cleaning \the [src]!", "You're finally done. Thank fuck.'")
+ H.visible_message(span_notice("[H] finishes cleaning \the [src]!"), span_notice("You're finally done. Thank fuck.'"))
new /obj/structure/urinal(loc, dir, TRUE)
return
return ..()
diff --git a/modular_splurt/code/game/objects/structures/cannons/cannon.dm b/modular_splurt/code/game/objects/structures/cannons/cannon.dm
index ff31f69626..a4e01395da 100644
--- a/modular_splurt/code/game/objects/structures/cannons/cannon.dm
+++ b/modular_splurt/code/game/objects/structures/cannons/cannon.dm
@@ -25,8 +25,8 @@
/obj/structure/cannon/examine(mob/user)
. = ..()
- . += "[src] accepts gunpowder or welding fuel."
- . += "Using welding fuel will weaken the force of the projectile fired."
+ . += span_notice("[src] accepts gunpowder or welding fuel.")
+ . += span_warning("Using welding fuel will weaken the force of the projectile fired.")
/obj/structure/cannon/proc/fire()
for(var/mob/shaken_mob in urange(10, src))
@@ -48,24 +48,24 @@
/obj/structure/cannon/attackby(obj/item/used_item, mob/user, params)
if(charge_ignited)
- to_chat(user, "It's gonna fire!")
+ to_chat(user, span_warning("It's gonna fire!"))
return
var/ignition_message = used_item.ignition_effect(src, user)
if(istype(used_item, /obj/item/stack/cannonball))
if(loaded_cannonball)
- to_chat(user, "[src] is already loaded!")
+ to_chat(user, span_warning("[src] is already loaded!"))
else
var/obj/item/stack/cannonball/cannoneers_balls = used_item
loaded_cannonball = new cannoneers_balls.type(src, 1)
loaded_cannonball.copy_evidences(cannoneers_balls)
- to_chat(user, "You load a [cannoneers_balls.singular_name] into \the [src].")
+ to_chat(user, span_notice("You load a [cannoneers_balls.singular_name] into \the [src]."))
cannoneers_balls.use(1, transfer = TRUE)
return
else if(ignition_message)
if(!reagents.has_reagent(/datum/reagent/blackpowder,charge_size) && !reagents.has_reagent(/datum/reagent/fuel,charge_size))
- to_chat(user, "[src] needs [reagents.maximum_volume]u of charge!")
+ to_chat(user, span_warning("[src] needs [reagents.maximum_volume]u of charge!"))
return
visible_message(ignition_message)
log_game("Cannon fired by [key_name(user)] in [AREACOORD(src)]")
@@ -81,7 +81,7 @@
return ..()
if(!powder_keg.reagents.total_volume)
- to_chat(user, "[powder_keg] is empty!")
+ to_chat(user, span_warning("[powder_keg] is empty!"))
return
if(reagents.total_volume >= reagents.maximum_volume)
to_chat(user, "")
@@ -89,15 +89,15 @@
var/has_enough_gunpowder = powder_keg.reagents.has_reagent(/datum/reagent/blackpowder, charge_size)
var/has_enough_alt_fuel = powder_keg.reagents.has_reagent(/datum/reagent/fuel, charge_size)
if(!has_enough_gunpowder && !has_enough_alt_fuel)
- to_chat(user, "[powder_keg] doesn't have at least 15u of fuel to fill [src]!")
+ to_chat(user, span_warning("[powder_keg] doesn't have at least 15u of fuel to fill [src]!"))
return
if(has_enough_gunpowder)
powder_keg.reagents.trans_id_to(src, /datum/reagent/blackpowder, amount = charge_size)
- to_chat(user, "You load [src] with gunpowder.")
+ to_chat(user, span_notice("You load [src] with gunpowder."))
return
if(has_enough_alt_fuel)
powder_keg.reagents.trans_id_to(src, /datum/reagent/fuel, amount = charge_size)
- to_chat(user, "You load [src] with welding fuel.")
+ to_chat(user, span_notice("You load [src] with welding fuel."))
return
if(anchorable_cannon && used_item.tool_behaviour == TOOL_WRENCH)
if(default_unfasten_wrench(user, used_item, time = 2 SECONDS))
@@ -122,11 +122,11 @@
if(used_alt_fuel)
fires_before_deconstruction--
if(prob(explode_chance))
- visible_message("[src] explodes!")
+ visible_message(span_warning("[src] explodes!"))
explosion(src, heavy_impact_range = 1, light_impact_range = 5, flame_range = 5)
return
if(fires_before_deconstruction <= 0)
- visible_message("[src] falls apart from operation!")
+ visible_message(span_warning("[src] falls apart from operation!"))
qdel(src)
/obj/structure/cannon/trash/Destroy()
diff --git a/modular_splurt/code/game/objects/structures/fence.dm b/modular_splurt/code/game/objects/structures/fence.dm
index 0ad3ea5f90..b0b679c7a9 100644
--- a/modular_splurt/code/game/objects/structures/fence.dm
+++ b/modular_splurt/code/game/objects/structures/fence.dm
@@ -32,16 +32,16 @@
if(health < maxhealth)
switch(health / maxhealth)
if(0.0 to 0.5)
- . += "It looks severely damaged!"
+ . += span_warning("It looks severely damaged!")
if(0.25 to 0.5)
- . += "It looks damaged!"
+ . += span_warning("It looks damaged!")
if(0.5 to 1.0)
- . += "It has a few scrapes and dents."
+ . += span_notice("It has a few scrapes and dents.")
/obj/structure/fence/handrail/take_damage(amount)
health -= amount
if(health <= 0)
- visible_message("\The [src] breaks down!")
+ visible_message(span_warning("\The [src] breaks down!"))
playsound(src, 'sound/effects/grillehit.ogg', 50, 1)
new /obj/item/stack/rods(get_turf(src))
qdel(src)
diff --git a/modular_splurt/code/game/objects/structures/micro_bricks.dm b/modular_splurt/code/game/objects/structures/micro_bricks.dm
index 0c167c87bd..bbd5ad77f6 100644
--- a/modular_splurt/code/game/objects/structures/micro_bricks.dm
+++ b/modular_splurt/code/game/objects/structures/micro_bricks.dm
@@ -17,12 +17,12 @@
return TRUE
if(istype(item, /obj/item/carpentry/glue))
- to_chat(user,"You glue the bricks to the floor.")
+ to_chat(user,span_notice("You glue the bricks to the floor."))
anchored = TRUE
return TRUE
if(istype(item, /obj/item/crowbar))
- to_chat(user,"You pry the bricks from the floor.")
+ to_chat(user,span_notice("You pry the bricks from the floor."))
anchored = FALSE
return TRUE
diff --git a/modular_splurt/code/game/objects/structures/pole.dm b/modular_splurt/code/game/objects/structures/pole.dm
index 9d8a96456f..21442124bd 100644
--- a/modular_splurt/code/game/objects/structures/pole.dm
+++ b/modular_splurt/code/game/objects/structures/pole.dm
@@ -16,6 +16,11 @@
. = ..()
if(.)
return
+
+ // Don't teleport telekinetic users to the pole.
+ if (get_dist(src,user) > 1)
+ return
+
if(obj_flags & IN_USE)
to_chat(user, "It's already in use - wait a bit.")
return
@@ -73,9 +78,9 @@
add_fingerprint(user)
if(istype(P, /obj/item/wrench))
if (!(item_flags & IN_INVENTORY))
- to_chat(user, "You start to fasten the frame to the floor and celing...")
+ to_chat(user, span_notice("You start to fasten the frame to the floor and celing..."))
if(P.use_tool(src, user, 8 SECONDS, volume=50))
- to_chat(user, "You construct the stripper pole!")
+ to_chat(user, span_notice("You construct the stripper pole!"))
var/obj/structure/pole/C = new
C.loc = loc
del(src)
@@ -84,9 +89,9 @@
/obj/structure/pole/attackby(obj/item/P, mob/user, params) //un-erecting a pole. :(
add_fingerprint(user)
if(istype(P, /obj/item/wrench))
- to_chat(user, "You start to unfastening the frame...")
+ to_chat(user, span_notice("You start to unfastening the frame..."))
if(P.use_tool(src, user, 8 SECONDS, volume=50))
- to_chat(user, "You take down the stripper pole!")
+ to_chat(user, span_notice("You take down the stripper pole!"))
var/obj/item/polepack/C = new
C.loc = loc
del(src)
diff --git a/modular_splurt/code/game/objects/structures/statues.dm b/modular_splurt/code/game/objects/structures/statues.dm
index d313578f0d..865929ed5a 100644
--- a/modular_splurt/code/game/objects/structures/statues.dm
+++ b/modular_splurt/code/game/objects/structures/statues.dm
@@ -13,3 +13,134 @@
desc = "A statue honoring Owia-Akeshi, a brave ashwalker that perished while defending the nest from a wild ash drake. May his soul rest in peace."
impressiveness = 25
+/obj/structure/statue/gargoyle
+ name = "statue"
+ desc = "An incredibly intricate statue, which... almost seems alive!"
+ icon = 'modular_splurt/icons/obj/structures/statue.dmi'
+ icon_state = "gargoyle" //empty sprite because it's supposed to copy over the overlays anyway, and otherwise, you end up with a white human male underlay beneath the statue.
+ density = TRUE
+ anchored = TRUE
+ flags_1 = PREVENT_CONTENTS_EXPLOSION_1
+ max_integrity = 200
+ var/mob/living/petrified_mob
+ var/old_max_health
+ var/old_size
+ var/was_tilted
+ var/was_lying
+ var/was_lying_prev
+ var/deconstructed = FALSE
+
+/obj/structure/statue/gargoyle/Initialize(mapload, mob/living/L)
+ . = ..()
+ if(L)
+ petrified_mob = L
+ if(L.buckled)
+ L.buckled.unbuckle_mob(L,force=1)
+ L.visible_message(span_warning("[L]'s skin rapidly turns to stone!"), span_warning("Your skin abruptly hardens as you turn to stone once more!"))
+ dir = L.dir
+ transform = L.transform
+ pixel_x = L.pixel_x
+ pixel_y = L.pixel_y
+ layer = L.layer
+ was_tilted = L.is_tilted
+ was_lying = L.lying
+ was_lying_prev = L.lying_prev
+ L.forceMove(src)
+ ADD_TRAIT(L, TRAIT_MUTE, STATUE_TRAIT)
+ ADD_TRAIT(L, TRAIT_MOBILITY_NOMOVE, STATUE_TRAIT)
+ ADD_TRAIT(L, TRAIT_MOBILITY_NOPICKUP, STATUE_TRAIT)
+ ADD_TRAIT(L, TRAIT_MOBILITY_NOUSE, STATUE_TRAIT)
+ ADD_TRAIT(L, TRAIT_NOBREATH, STATUE_TRAIT)
+ ADD_TRAIT(L, TRAIT_NOHUNGER, STATUE_TRAIT)
+ ADD_TRAIT(L, TRAIT_NOTHIRST, STATUE_TRAIT)
+ ADD_TRAIT(L, TRAIT_NOFIRE, STATUE_TRAIT) //OH GOD HELP I'M ON FIRE INSIDE THE STATUE I CAN'T MOVE AND I CAN'T STOP IT HAAAAALP - person who experienced this
+ L.click_intercept = src
+ L.faction += "mimic" //Stops mimics from instaqdeling people in statues
+ L.status_flags |= GODMODE
+ old_max_health = L.maxHealth
+ old_size = get_size(L)
+ obj_integrity = L.health + 100 //stoning damaged mobs will result in easier to shatter statues
+ max_integrity = obj_integrity
+
+/obj/structure/statue/gargoyle/proc/InterceptClickOn(mob/living/caller, params, atom/A) //technically could be bypassed by doing something that also uses click intercept but shrug
+ var/atom/movable/screen/movable/action_button/ab = A
+ if (istype(ab))
+ if (istype(ab.linked_action, /datum/action/gargoyle))
+ return FALSE
+ var/list/modifiers = params2list(params)
+ if (modifiers["shift"] && !modifiers["ctrl"] && !modifiers["middle"])
+ return FALSE
+ return TRUE
+
+/obj/structure/statue/gargoyle/examine_more(mob/user) //something about the funny signals doesn't work here no matter how much I fucked around with it (ie registering to COMSIG_PARENT_EXAMINE_MORE doesn't do anything), so we have to overwrite the proc
+ . = ..()
+ if (petrified_mob)
+ SEND_SIGNAL(petrified_mob, COMSIG_PARENT_EXAMINE, user, .)
+ . -= span_notice("You examine [src] closer, but find nothing of interest...")
+
+/obj/structure/statue/gargoyle/handle_atom_del(atom/A)
+ if(A == petrified_mob)
+ petrified_mob = null
+
+/obj/structure/statue/gargoyle/Destroy()
+ if(petrified_mob)
+ petrified_mob.status_flags &= ~GODMODE
+ petrified_mob.forceMove(loc)
+ REMOVE_TRAIT(petrified_mob, TRAIT_MUTE, STATUE_TRAIT)
+ REMOVE_TRAIT(petrified_mob, TRAIT_MOBILITY_NOMOVE, STATUE_TRAIT)
+ REMOVE_TRAIT(petrified_mob, TRAIT_MOBILITY_NOPICKUP, STATUE_TRAIT)
+ REMOVE_TRAIT(petrified_mob, TRAIT_MOBILITY_NOUSE, STATUE_TRAIT)
+ REMOVE_TRAIT(petrified_mob, TRAIT_NOBREATH, STATUE_TRAIT)
+ REMOVE_TRAIT(petrified_mob, TRAIT_NOHUNGER, STATUE_TRAIT)
+ REMOVE_TRAIT(petrified_mob, TRAIT_NOTHIRST, STATUE_TRAIT)
+ REMOVE_TRAIT(petrified_mob, TRAIT_NOFIRE, STATUE_TRAIT)
+ petrified_mob.faction -= "mimic"
+ petrified_mob.click_intercept = null
+ petrified_mob.dir = dir
+ petrified_mob.update_size(old_size)
+ var/damage = deconstructed ? petrified_mob.health : petrified_mob.health*(old_max_health/petrified_mob.maxHealth) - obj_integrity + 100
+ petrified_mob.take_overall_damage(damage) //any new damage the statue incurred is transfered to the mob
+ petrified_mob.transform = transform
+ petrified_mob.lying = was_lying
+ petrified_mob.lying_prev = was_lying_prev
+ petrified_mob.update_mobility()
+ petrified_mob.pixel_x = pixel_x
+ petrified_mob.pixel_y = pixel_y
+ petrified_mob.layer = layer
+ petrified_mob.is_shifted = TRUE //just prevents bad things tbh
+ petrified_mob.is_tilted = was_tilted
+ if (pulledby && pulledby.pulling == src) //gotta checked just in case
+ pulledby.start_pulling(petrified_mob, supress_message = TRUE)
+ var/datum/quirk/gargoyle/T = locate() in petrified_mob.roundstart_quirks
+ if (T)
+ T.transformed = 0
+ petrified_mob = null
+ return ..()
+
+/obj/structure/statue/gargoyle/deconstruct(disassembled = TRUE)
+ deconstructed = TRUE
+ visible_message(span_danger("[src] shatters!"))
+ qdel(src)
+
+/obj/structure/statue/gargoyle/attackby(obj/item/W, mob/living/user, params)
+ add_fingerprint(user)
+ if(!(flags_1 & NODECONSTRUCT_1))
+ if(default_unfasten_wrench(user, W))
+ return
+ if(W.tool_behaviour == TOOL_WELDER)
+ if(!W.tool_start_check(user, amount=0))
+ return FALSE
+
+ if (petrified_mob && alert(user, "You are slicing apart a gargoyle! Are you sure you want to continue? This will severely harm them, if not outright kill them.",, "Continue", "Cancel") == "Cancel")
+ return
+
+ user.visible_message(span_notice("[user] is slicing apart the [name]."), \
+ span_notice("You are slicing apart the [name]..."))
+ if (petrified_mob)
+ to_chat(petrified_mob, span_userdanger("You are being sliced apart by [user]!"))
+ if(W.use_tool(src, user, 40, volume=50))
+ user.visible_message(span_notice("[user] slices apart the [name]."), \
+ span_notice("You slice apart the [name]!"))
+ deconstruct(TRUE)
+ return
+ return ..()
diff --git a/modular_splurt/code/game/objects/structures/table_frames.dm b/modular_splurt/code/game/objects/structures/table_frames.dm
index 2cae0e49c1..6150d8c221 100644
--- a/modular_splurt/code/game/objects/structures/table_frames.dm
+++ b/modular_splurt/code/game/objects/structures/table_frames.dm
@@ -22,9 +22,9 @@
if (toConstruct)
if(material.get_amount() < 1)
- to_chat(user, "You need one [material.name] sheet to do this!")
+ to_chat(user, span_warning("You need one [material.name] sheet to do this!"))
return
- to_chat(user, "You start adding [material] to [src]...")
+ to_chat(user, span_notice("You start adding [material] to [src]..."))
if(do_after(user, 20, target = src) && material.use(1))
make_new_table(toConstruct)
else
@@ -54,9 +54,9 @@
if (toConstruct)
if(material.get_amount() < 1)
- to_chat(user, "You need one [material.name] sheet to do this!")
+ to_chat(user, span_warning("You need one [material.name] sheet to do this!"))
return
- to_chat(user, "You start adding [material] to [src]...")
+ to_chat(user, span_notice("You start adding [material] to [src]..."))
if(do_after(user, 20, target = src) && material.use(1))
make_new_table(toConstruct)
else
diff --git a/modular_splurt/code/modules/admin/JobBan.dm b/modular_splurt/code/modules/admin/JobBan.dm
index 98b2fe27d2..ba4e107cff 100644
--- a/modular_splurt/code/modules/admin/JobBan.dm
+++ b/modular_splurt/code/modules/admin/JobBan.dm
@@ -100,7 +100,7 @@ GLOBAL_LIST_INIT(jobban_panel_data, list(
if("Temporary")
var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null
if(mins <= 0)
- to_chat(usr, "[mins] is not a valid duration.")
+ to_chat(usr, span_danger("[mins] is not a valid duration."))
return
reason = input(usr,"Please State Reason For Banning [M.key].","Reason") as message|null
if(!reason)
@@ -111,7 +111,7 @@ GLOBAL_LIST_INIT(jobban_panel_data, list(
var/msg
for(var/job in notbannedlist)
if(!DB_ban_record(BANTYPE_JOB_TEMP, M, mins, reason, job))
- to_chat(usr, "Failed to apply ban.")
+ to_chat(usr, span_danger("Failed to apply ban."))
return
if(M.client)
jobban_buildcache(M.client)
@@ -122,10 +122,10 @@ GLOBAL_LIST_INIT(jobban_panel_data, list(
else
msg += ", [job]"
create_message("note", M.key, null, "Banned from [msg] - [reason]", null, null, 0, 0, null, 0, severity)
- message_admins("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg] for [mins] minutes.")
- to_chat(M, "You have been [((msg == "ooc") || (msg == "appearance") || (msg == "pacifist")) ? "banned" : "jobbanned"] by [usr.client.key] from: [msg == "pacifist" ? "using violence" : msg].")
- to_chat(M, "The reason is: [reason]")
- to_chat(M, "This jobban will be lifted in [mins] minutes.")
+ message_admins(span_adminnotice("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg] for [mins] minutes."))
+ to_chat(M, span_boldannounce("You have been [((msg == "ooc") || (msg == "appearance") || (msg == "pacifist")) ? "banned" : "jobbanned"] by [usr.client.key] from: [msg == "pacifist" ? "using violence" : msg]."))
+ to_chat(M, span_boldannounce("The reason is: [reason]"))
+ to_chat(M, span_danger("This jobban will be lifted in [mins] minutes."))
if("Permanent")
reason = input(usr,"Please State Reason For Banning [M.key].","Reason") as message|null
@@ -138,7 +138,7 @@ GLOBAL_LIST_INIT(jobban_panel_data, list(
var/msg
for(var/job in notbannedlist)
if(!DB_ban_record(BANTYPE_JOB_PERMA, M, -1, reason, job))
- to_chat(usr, "Failed to apply ban.")
+ to_chat(usr, span_danger("Failed to apply ban."))
return
if(M.client)
jobban_buildcache(M.client)
@@ -149,10 +149,10 @@ GLOBAL_LIST_INIT(jobban_panel_data, list(
else
msg += ", [job]"
create_message("note", M.key, null, "Banned from [msg] - [reason]", null, null, 0, 0, null, 0, severity)
- message_admins("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg].")
- to_chat(M, "You have been [((msg == "ooc") || (msg == "appearance") || (msg == "pacifist")) ? "banned" : "jobbanned"] by [usr.client.key] from: [msg == "pacifist" ? "using violence" : msg].")
- to_chat(M, "The reason is: [reason]")
- to_chat(M, "This jobban can be lifted only upon request.")
+ message_admins(span_adminnotice("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg]."))
+ to_chat(M, span_boldannounce("You have been [((msg == "ooc") || (msg == "appearance") || (msg == "pacifist")) ? "banned" : "jobbanned"] by [usr.client.key] from: [msg == "pacifist" ? "using violence" : msg]."))
+ to_chat(M, span_boldannounce("The reason is: [reason]"))
+ to_chat(M, span_danger("This jobban can be lifted only upon request."))
// notbannedlist is just a list of strings of the job titles you want to unban.
/datum/admins/proc/UnJobban(mob/M, list/bannedlist)
@@ -175,5 +175,5 @@ GLOBAL_LIST_INIT(jobban_panel_data, list(
else
msg += ", [job]"
if(msg)
- message_admins("[key_name_admin(usr)] unbanned [key_name_admin(M)] from [msg].")
- to_chat(M, "You have been un-jobbanned by [usr.client.key] from [msg].")
+ message_admins(span_adminnotice("[key_name_admin(usr)] unbanned [key_name_admin(M)] from [msg]."))
+ to_chat(M, span_boldannounce("You have been un-jobbanned by [usr.client.key] from [msg]."))
diff --git a/modular_splurt/code/modules/admin/Kick.dm b/modular_splurt/code/modules/admin/Kick.dm
index 19c0f77de2..12bda65b2c 100644
--- a/modular_splurt/code/modules/admin/Kick.dm
+++ b/modular_splurt/code/modules/admin/Kick.dm
@@ -1,13 +1,13 @@
/datum/admins/proc/kick(mob/M)
if (!ismob(M) || !M.client)
- to_chat(usr, "Error: [M] has no client!")
+ to_chat(usr, span_danger("Error: [M] has no client!"))
return
if(!check_if_greater_rights_than(M.client))
- to_chat(usr, "Error: They have more rights than you do.")
+ to_chat(usr, span_danger("Error: They have more rights than you do."))
return
- to_chat(M, "You have been kicked from the server by [usr.client.holder.fakekey ? "an Administrator" : "[usr.client.key]"].")
+ to_chat(M, span_danger("You have been kicked from the server by [usr.client.holder.fakekey ? "an Administrator" : "[usr.client.key]"]."))
log_admin("[key_name(usr)] kicked [key_name(M)].")
- message_admins("[key_name_admin(usr)] kicked [key_name_admin(M)].")
+ message_admins(span_adminnotice("[key_name_admin(usr)] kicked [key_name_admin(M)]."))
qdel(M.client)
diff --git a/modular_splurt/code/modules/admin/NewBan.dm b/modular_splurt/code/modules/admin/NewBan.dm
index 9a42461c34..709d6cc095 100644
--- a/modular_splurt/code/modules/admin/NewBan.dm
+++ b/modular_splurt/code/modules/admin/NewBan.dm
@@ -4,36 +4,36 @@
// var/mob/M = mob_to_ban
if(!ismob(M) || !M.client)
- to_chat(usr, "Error: [M] has no client!")
+ to_chat(usr, span_danger("Error: [M] has no client!"))
return
if(M.client && M.client.holder)
- to_chat(usr, "Error: You cannot ban admins!")
+ to_chat(usr, span_danger("Error: You cannot ban admins!"))
return //admins cannot be banned. Even if they could, the ban doesn't affect them anyway
switch(tgui_alert(usr, "Ban type", buttons = list("Temporary", "Permanent", "Cancel")))
if("Temporary")
var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null
if(mins <= 0)
- to_chat(usr, "[mins] is not a valid duration.")
+ to_chat(usr, span_danger("[mins] is not a valid duration."))
return
var/reason = input(usr,"Please State Reason For Banning [M.key].","Reason") as message|null
if(!reason)
return
if(!DB_ban_record(BANTYPE_TEMP, M, mins, reason))
- to_chat(usr, "Failed to apply ban.")
+ to_chat(usr, span_danger("Failed to apply ban."))
return
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 1, mins)
ban_unban_log_save("[key_name(usr)] has banned [key_name(M)]. - Reason: [reason] - This will be removed in [mins] minutes.")
- to_chat(M, "You have been banned by [usr.client.key].\nReason: [reason]")
- to_chat(M, "This is a temporary ban, it will be removed in [mins] minutes. The round ID is [GLOB.round_id].")
+ to_chat(M, span_boldannounce("You have been banned by [usr.client.key].\nReason: [reason]"))
+ to_chat(M, span_danger("This is a temporary ban, it will be removed in [mins] minutes. The round ID is [GLOB.round_id]."))
var/bran = CONFIG_GET(string/banappeals)
if(bran)
- to_chat(M, "To try to resolve this matter head to [bran]")
+ to_chat(M, span_danger("To try to resolve this matter head to [bran]"))
else
- to_chat(M, "No ban appeals URL has been set.")
+ to_chat(M, span_danger("No ban appeals URL has been set."))
log_admin_private("[key_name(usr)] has banned [key_name(M)].\nReason: [key_name(M)]\nThis will be removed in [mins] minutes.")
- var/msg = "[key_name_admin(usr)] has banned [key_name_admin(M)].\nReason: [reason]\nThis will be removed in [mins] minutes."
+ var/msg = span_adminnotice("[key_name_admin(usr)] has banned [key_name_admin(M)].\nReason: [reason]\nThis will be removed in [mins] minutes.")
message_admins(msg)
var/datum/admin_help/AH = M.client ? M.client.current_ticket : null
if(AH)
@@ -50,19 +50,19 @@
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0, M.lastKnownIP)
if("No")
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0)
- to_chat(M, "You have been banned by [usr.client.key].\nReason: [reason]")
- to_chat(M, "This is a permanent ban. The round ID is [GLOB.round_id].")
+ to_chat(M, span_boldannounce("You have been banned by [usr.client.key].\nReason: [reason]"))
+ to_chat(M, span_danger("This is a permanent ban. The round ID is [GLOB.round_id]."))
var/bran = CONFIG_GET(string/banappeals)
if(bran)
- to_chat(M, "To try to resolve this matter head to [bran]")
+ to_chat(M, span_danger("To try to resolve this matter head to [bran]"))
else
- to_chat(M, "No ban appeals URL has been set.")
+ to_chat(M, span_danger("No ban appeals URL has been set."))
if(!DB_ban_record(BANTYPE_PERMA, M, -1, reason))
- to_chat(usr, "Failed to apply ban.")
+ to_chat(usr, span_danger("Failed to apply ban."))
return
ban_unban_log_save("[key_name(usr)] has permabanned [key_name(M)]. - Reason: [reason] - This is a permanent ban.")
log_admin_private("[key_name(usr)] has banned [key_name(M)].\nReason: [reason]\nThis is a permanent ban.")
- var/msg = "[key_name_admin(usr)] has banned [key_name_admin(M)].\nReason: [reason]\nThis is a permanent ban."
+ var/msg = span_adminnotice("[key_name_admin(usr)] has banned [key_name_admin(M)].\nReason: [reason]\nThis is a permanent ban.")
message_admins(msg)
var/datum/admin_help/AH = M.client ? M.client.current_ticket : null
if(AH)
diff --git a/modular_splurt/code/modules/admin/Transform.dm b/modular_splurt/code/modules/admin/Transform.dm
index 5fbc48be22..239d17f774 100644
--- a/modular_splurt/code/modules/admin/Transform.dm
+++ b/modular_splurt/code/modules/admin/Transform.dm
@@ -118,7 +118,7 @@ GLOBAL_LIST_INIT(pp_transformables, list(
newTypeName = newType
log_admin("[key_name(usr)] transformed [key_name(M)] into a [newTypeName].")
- message_admins("[key_name_admin(usr)] transformed [key_name_admin(M)] into a [newTypeName].")
+ message_admins(span_adminnotice("[key_name_admin(usr)] transformed [key_name_admin(M)] into a [newTypeName]."))
var/mob/newMob = M.change_mob_type(newType, delete_old_mob = TRUE)
diff --git a/modular_splurt/code/modules/admin/centcom_communications.dm b/modular_splurt/code/modules/admin/centcom_communications.dm
index 3a172a4725..2c99fe9b0e 100644
--- a/modular_splurt/code/modules/admin/centcom_communications.dm
+++ b/modular_splurt/code/modules/admin/centcom_communications.dm
@@ -35,7 +35,7 @@ GLOBAL_VAR_INIT(next_command_message_id, 1)
if ("orbit_sender")
var/atom/movable/sender = get_mob_by_key(params["sender_ckey"])
if(!sender)
- to_chat(usr, "This player cannot be observed.")
+ to_chat(usr, span_notice("This player cannot be observed."))
return
if(!isobserver(admin.mob))
diff --git a/modular_splurt/code/modules/admin/playtimes.dm b/modular_splurt/code/modules/admin/playtimes.dm
index 8dbdf7b22e..bcf3e0fee6 100644
--- a/modular_splurt/code/modules/admin/playtimes.dm
+++ b/modular_splurt/code/modules/admin/playtimes.dm
@@ -22,7 +22,7 @@
return
if(!CONFIG_GET(flag/use_exp_tracking))
- to_chat(usr, "Tracking is disabled in the server configuration file.")
+ to_chat(usr, span_warning("Tracking is disabled in the server configuration file."))
return
if(!playtime_menu)
@@ -120,7 +120,7 @@
var/atom/movable/target = get_mob_by_key(params["ckey"])
if(!target)
- to_chat(usr, "This player cannot be observed.")
+ to_chat(usr, span_notice("This player cannot be observed."))
return
var/client/C = usr.client
diff --git a/modular_splurt/code/modules/admin/verbs/discordbunker.dm b/modular_splurt/code/modules/admin/verbs/discordbunker.dm
index 149479289a..446520aeec 100644
--- a/modular_splurt/code/modules/admin/verbs/discordbunker.dm
+++ b/modular_splurt/code/modules/admin/verbs/discordbunker.dm
@@ -2,7 +2,7 @@
set category = "Server"
set name = "Toggle Discord Bunker"
if(!SSdbcore.IsConnected())
- to_chat(usr, "The Database is not connected/enabled!")
+ to_chat(usr, span_adminnotice("The Database is not connected/enabled!"))
return
var/new_dbun = !CONFIG_GET(flag/need_discord_to_join)
@@ -18,13 +18,13 @@
set name = "Add Discord Bypass"
set desc = "Allows a given ckey to connect through the discord bunker for the round even if they haven't verified yet."
if(!SSdbcore.IsConnected())
- to_chat(usr, "The Database is not connected!")
+ to_chat(usr, span_adminnotice("The Database is not connected!"))
return
if(!SSdiscord)
- to_chat(usr, "The discord subsystem hasn't initialized yet!")
+ to_chat(usr, span_adminnotice("The discord subsystem hasn't initialized yet!"))
return
if(!CONFIG_GET(flag/need_discord_to_join))
- to_chat(usr, "The Discord Bunker is deactivated!")
+ to_chat(usr, span_adminnotice("The Discord Bunker is deactivated!"))
return
GLOB.discord_passthrough |= ckey(ckeytobypass)
@@ -38,13 +38,13 @@
set name = "Revoke Discord Bypass"
set desc = "Revoke's a ckey's permission to bypass the discord bunker for a given round."
if(!SSdbcore.IsConnected())
- to_chat(usr, "The Database is not connected!")
+ to_chat(usr, span_adminnotice("The Database is not connected!"))
return
if(!SSdiscord)
- to_chat(usr, "The discord subsystem hasn't initialized yet!")
+ to_chat(usr, span_adminnotice("The discord subsystem hasn't initialized yet!"))
return
if(!CONFIG_GET(flag/need_discord_to_join))
- to_chat(usr, "The Discord Bunker is deactivated!")
+ to_chat(usr, span_adminnotice("The Discord Bunker is deactivated!"))
return
GLOB.discord_passthrough -= ckey(ckeytobypass)
diff --git a/modular_splurt/code/modules/admin/verbs/randomverbs.dm b/modular_splurt/code/modules/admin/verbs/randomverbs.dm
index 00c97dddcf..a0c81e3f19 100644
--- a/modular_splurt/code/modules/admin/verbs/randomverbs.dm
+++ b/modular_splurt/code/modules/admin/verbs/randomverbs.dm
@@ -42,7 +42,7 @@
log_admin("SubtlePM ([sender]): [key_name(usr)] -> [key_name(M)] : [msg]")
- msg = " SubtleMessage ([sender]): [key_name_admin(usr)] -> [key_name_admin(M)] : [msg]"
+ msg = span_adminnotice(" SubtleMessage ([sender]): [key_name_admin(usr)] -> [key_name_admin(M)] : [msg]")
message_admins(msg)
admin_ticket_log(M, msg)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Subtle Message") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
diff --git a/modular_splurt/code/modules/antagonists/_common/antag_spawner.dm b/modular_splurt/code/modules/antagonists/_common/antag_spawner.dm
index ebb077ff11..b7d76290db 100644
--- a/modular_splurt/code/modules/antagonists/_common/antag_spawner.dm
+++ b/modular_splurt/code/modules/antagonists/_common/antag_spawner.dm
@@ -13,14 +13,14 @@
/obj/item/antag_spawner/slaver_borg/proc/check_usability(mob/user)
if(used)
- to_chat(user, "[src] is out of power!")
+ to_chat(user, span_warning("[src] is out of power!"))
return FALSE
if(!user.mind.has_antag_datum(/datum/antagonist/slaver,TRUE))
- to_chat(user, "AUTHENTICATION FAILURE. ACCESS DENIED.")
+ to_chat(user, span_danger("AUTHENTICATION FAILURE. ACCESS DENIED."))
return FALSE
var/area/A = get_area(get_turf(user))
if (!istype(A, /area/slavers))
- to_chat(user, "[src] is out of range! It can only be used at your hideout!")
+ to_chat(user, span_warning("[src] is out of range! It can only be used at your hideout!"))
return FALSE
return TRUE
@@ -30,11 +30,11 @@
return
if(!(next_attempt_allowed < world.time))
- to_chat(user, "A request has already been sent! Wait 1 minute.")
+ to_chat(user, span_warning("A request has already been sent! Wait 1 minute."))
return
next_attempt_allowed = world.time + 1 MINUTES
- to_chat(user, "You activate [src] and wait for confirmation.")
+ to_chat(user, span_notice("You activate [src] and wait for confirmation."))
var/list/borg_candidates = pollGhostCandidates("Do you want to play as a slaver [lowertext(borg_to_spawn)] cyborg?", ROLE_SLAVER, null, ROLE_SLAVER, 150, POLL_IGNORE_SLAVER)
if(LAZYLEN(borg_candidates))
if(QDELETED(src) || !check_usability(user))
@@ -45,7 +45,7 @@
do_sparks(4, TRUE, src)
qdel(src)
else
- to_chat(user, "Unable to connect to Slaver command. Please wait and try again later.")
+ to_chat(user, span_warning("Unable to connect to Slaver command. Please wait and try again later."))
/obj/item/antag_spawner/slaver_borg/spawn_antag(client/C, turf/T, kind, datum/mind/user)
var/mob/living/silicon/robot/R
diff --git a/modular_splurt/code/modules/antagonists/qareen/qareen.dm b/modular_splurt/code/modules/antagonists/qareen/qareen.dm
index 24110b2f44..77189708d9 100644
--- a/modular_splurt/code/modules/antagonists/qareen/qareen.dm
+++ b/modular_splurt/code/modules/antagonists/qareen/qareen.dm
@@ -100,7 +100,7 @@
/mob/living/simple_animal/qareen/Login()
..()
var/qareen_greet
- qareen_greet += "You are a qareen."
+ qareen_greet += span_deadsay("You are a qareen.")
qareen_greet += "Your formerly mundane spirit has been infused with alien energies and empowered into a qareen."
qareen_greet += "You are not dead, not alive, but somewhere in between. You are capable of limited interaction with both worlds."
qareen_greet += "You are invincible and invisible to everyone but other ghosts. Most abilities will reveal you, rendering you vulnerable."
@@ -128,11 +128,11 @@
revealed = FALSE
incorporeal_move = INCORPOREAL_MOVE_JAUNT
invisibility = INVISIBILITY_QAREEN
- to_chat(src, "You are once more concealed.")
+ to_chat(src, span_revenboldnotice("You are once more concealed."))
if(unstun_time && world.time >= unstun_time)
unstun_time = 0
mob_transforming = FALSE
- to_chat(src, "You can move again!")
+ to_chat(src, span_revenboldnotice("You can move again!"))
if(essence_regenerating && !inhibited && essence < essence_regen_cap) //While inhibited, essence will not regenerate
essence = min(essence_regen_cap, essence+essence_regen_amount)
update_action_buttons_icon() //because we update something required by our spells in life, we need to update our buttons
@@ -165,7 +165,7 @@
if(!message)
return
src.log_talk(message, LOG_SAY)
- var/rendered = "[src] says, \"[message]\""
+ var/rendered = span_revennotice("[src] says, \"[message]\"")
for(var/mob/M in GLOB.mob_list)
if(isqareen(M))
to_chat(M, rendered)
@@ -199,8 +199,8 @@
/mob/living/simple_animal/qareen/attackby(obj/item/W, mob/living/user, params)
. = ..()
if(istype(W, /obj/item/nullrod))
- visible_message("[src] violently flinches!", \
- "As \the [W] passes through you, you feel your essence draining away!")
+ visible_message(span_warning("[src] violently flinches!"), \
+ span_revendanger("As \the [W] passes through you, you feel your essence draining away!"))
adjustBruteLoss(25) //hella effective
inhibited = TRUE
update_action_buttons_icon()
@@ -230,17 +230,17 @@
if(!revealed || stasis) //qareens cannot die if they aren't revealed //or are already dead
return 0
stasis = TRUE
- to_chat(src, "NO! No... it's too late, you can feel your essence [pick("spewing out", "bursting out")]...")
+ to_chat(src, span_revendanger("NO! No... it's too late, you can feel your essence [pick("spewing out", "bursting out")]..."))
mob_transforming = TRUE
revealed = TRUE
invisibility = 0
playsound(src, 'sound/effects/screech.ogg', 100, 1)
- visible_message("[src] lets out a waning screech as violet mist swirls around its dissolving body!")
+ visible_message(span_warning("[src] lets out a waning screech as violet mist swirls around its dissolving body!"))
icon_state = icon_drain
for(var/i = alpha, i > 0, i -= 10)
stoplag()
alpha = i
- visible_message("[src]'s body breaks apart into a fine pile of blue dust.")
+ visible_message(span_danger("[src]'s body breaks apart into a fine pile of blue dust."))
var/reforming_essence = essence_regen_cap //retain the gained essence capacity
var/obj/item/ectoplasm/qareen/R = new(get_turf(src))
R.essence = max(reforming_essence - 15 * perfectsouls, 75) //minus any perfect souls
@@ -261,10 +261,10 @@
invisibility = 0
incorporeal_move = FALSE
if(!unreveal_time)
- to_chat(src, "You have been revealed!")
+ to_chat(src, span_revendanger("You have been revealed!"))
unreveal_time = world.time + time
else
- to_chat(src, "You have been revealed!")
+ to_chat(src, span_revenwarning("You have been revealed!"))
unreveal_time = unreveal_time + time
update_spooky_icon()
@@ -275,10 +275,10 @@
return
mob_transforming = TRUE
if(!unstun_time)
- to_chat(src, "You cannot move!")
+ to_chat(src, span_revendanger("You cannot move!"))
unstun_time = world.time + time
else
- to_chat(src, "You cannot move!")
+ to_chat(src, span_revenwarning("You cannot move!"))
unstun_time = unstun_time + time
update_spooky_icon()
@@ -299,17 +299,17 @@
return
var/turf/T = get_turf(src)
if(isclosedturf(T))
- to_chat(src, "You cannot use abilities from inside of a wall.")
+ to_chat(src, span_revenwarning("You cannot use abilities from inside of a wall."))
return FALSE
for(var/obj/O in T)
if(O.density && !O.CanPass(src, T))
- to_chat(src, "You cannot use abilities inside of a dense object.")
+ to_chat(src, span_revenwarning("You cannot use abilities inside of a dense object."))
return FALSE
if(inhibited)
- to_chat(src, "Your powers have been suppressed by nulling energy!")
+ to_chat(src, span_revenwarning("Your powers have been suppressed by nulling energy!"))
return FALSE
if(!change_essence_amount(essence_cost, TRUE))
- to_chat(src, "You lack the essence to use that ability.")
+ to_chat(src, span_revenwarning("You lack the essence to use that ability."))
return FALSE
return TRUE
@@ -333,9 +333,9 @@
update_action_buttons_icon()
if(!silent)
if(essence_amt > 0)
- to_chat(src, "Gained [essence_amt]E[source ? " from [source]":""].")
+ to_chat(src, span_revennotice("Gained [essence_amt]E[source ? " from [source]":""]."))
else
- to_chat(src, "Lost [essence_amt]E[source ? " from [source]":""].")
+ to_chat(src, span_revenminor("Lost [essence_amt]E[source ? " from [source]":""]."))
return 1
/mob/living/simple_animal/qareen/proc/telekinesis_cooldown_end()
@@ -383,13 +383,13 @@
reform()
else
inert = TRUE
- visible_message("[src] settles down and seems lifeless.")
+ visible_message(span_warning("[src] settles down and seems lifeless."))
/obj/item/ectoplasm/qareen/attack_self(mob/user)
if(!reforming || inert)
return ..()
- user.visible_message("[user] scatters [src] in all directions.", \
- "You scatter [src] across the area. The particles slowly fade away.")
+ user.visible_message(span_notice("[user] scatters [src] in all directions."), \
+ span_notice("You scatter [src] across the area. The particles slowly fade away."))
user.dropItemToGround(src)
scatter()
@@ -397,15 +397,15 @@
..()
if(inert)
return
- visible_message("[src] breaks into particles upon impact, which fade away to nothingness.")
+ visible_message(span_notice("[src] breaks into particles upon impact, which fade away to nothingness."))
scatter()
/obj/item/ectoplasm/qareen/examine(mob/user)
. = ..()
if(inert)
- . += "It seems inert."
+ . += span_revennotice("It seems inert.")
else if(reforming)
- . += "It is shifting and distorted. It would be wise to destroy this."
+ . += span_revenwarning("It is shifting and distorted. It would be wise to destroy this.")
/obj/item/ectoplasm/qareen/proc/reform()
if(QDELETED(src) || QDELETED(qareen) || inert)
@@ -427,7 +427,7 @@
qdel(qareen)
message_admins("No candidates were found for the new qareen. Oh well!")
inert = TRUE
- visible_message("[src] settles down and seems lifeless.")
+ visible_message(span_revenwarning("[src] settles down and seems lifeless."))
return
var/mob/C = pick(candidates)
C.transfer_ckey(qareen, FALSE)
@@ -435,12 +435,12 @@
qdel(qareen)
message_admins("No ckey was found for the new qareen. Oh well!")
inert = TRUE
- visible_message("[src] settles down and seems lifeless.")
+ visible_message(span_revenwarning("[src] settles down and seems lifeless."))
return
message_admins("[qareen.key] has been [old_key == qareen.key ? "re":""]made into a qareen by reforming ectoplasm.")
log_game("[qareen.key] was [old_key == qareen.key ? "re":""]made as a qareen by reforming ectoplasm.")
- visible_message("[src] suddenly rises into the air before fading away.")
+ visible_message(span_revenboldnotice("[src] suddenly rises into the air before fading away."))
qareen.essence = essence
qareen.essence_regen_cap = essence
@@ -449,7 +449,7 @@
qdel(src)
/obj/item/ectoplasm/qareen/suicide_act(mob/user)
- user.visible_message("[user] is inhaling [src]! It looks like [user.p_theyre()] trying to visit the shadow realm!")
+ user.visible_message(span_suicide("[user] is inhaling [src]! It looks like [user.p_theyre()] trying to visit the shadow realm!"))
scatter()
return (OXYLOSS)
diff --git a/modular_splurt/code/modules/antagonists/qareen/qareen_abilities.dm b/modular_splurt/code/modules/antagonists/qareen/qareen_abilities.dm
index d3080936a7..8963ea6379 100644
--- a/modular_splurt/code/modules/antagonists/qareen/qareen_abilities.dm
+++ b/modular_splurt/code/modules/antagonists/qareen/qareen_abilities.dm
@@ -9,7 +9,7 @@
if(ishuman(A))
if(A in drained_mobs)
- to_chat(src, "[A]'s fluids are almost devoid of any essence, also very bland.. almost tasteless... but beggars can't be choosers." )
+ to_chat(src, span_revenwarning("[A]'s fluids are almost devoid of any essence, also very bland.. almost tasteless... but beggars can't be choosers.") )
if(in_range(src, A))
Harvest(A)
@@ -20,19 +20,19 @@
if(!castcheck(0))
return
if(draining)
- to_chat(src, "You are already sucking up the essence!")
+ to_chat(src, span_revenwarning("You are already sucking up the essence!"))
return
if(target.stat)
- to_chat(src, "[target.p_their(TRUE)] essence is too faded to harvest.")
+ to_chat(src, span_revennotice("[target.p_their(TRUE)] essence is too faded to harvest."))
return
if(!target.ckey)
- to_chat(src, "[target.p_their(TRUE)] essence is lacking .. worthless.")
+ to_chat(src, span_revennotice("[target.p_their(TRUE)] essence is lacking .. worthless."))
// return
if(prob(10))
to_chat(target, "You feel as if you are being watched.")
face_atom(target)
draining = TRUE
- to_chat(src, "You search for the lifespring of [target].")
+ to_chat(src, span_revennotice("You search for the lifespring of [target]."))
if(do_after(src, rand(10, 20), 0, target)) //did they get deleted in that second?
for(var/obj/item/organ/genital/G in target.internal_organs)
if(!(G.genital_flags & GENITAL_FUID_PRODUCTION))
@@ -43,9 +43,9 @@
var/main_fluid = G.get_fluid_name()
var/fluid_ammount = clamp((G.fluid_rate * ((world.time - G.last_orgasmed) / (10 SECONDS)) * G.fluid_mult),0,G.fluid_max_volume)
if (fluid_ammount <= 2)
- to_chat(src, "[target.p_their(TRUE)] [G.name] spasms pitifully, almost nothing will come out.")
+ to_chat(src, span_revennotice("[target.p_their(TRUE)] [G.name] spasms pitifully, almost nothing will come out."))
else
- to_chat(src, "[target.p_their(TRUE)] [G.name] are brimming with [main_fluid].")
+ to_chat(src, span_revennotice("[target.p_their(TRUE)] [G.name] are brimming with [main_fluid]."))
if (fluid_ammount > 5)
fluid_ammount = 5 // For balancing reasons
if ((target in drained_mobs) || !target.ckey)
@@ -60,33 +60,33 @@
if(do_after(src, rand(15, 20), 0, target)) //did they get deleted NOW?
switch(essence_drained)
if(0 to 4)
- to_chat(src, "[target] is almost barren of essence. Still, every bit counts.")
+ to_chat(src, span_revennotice("[target] is almost barren of essence. Still, every bit counts."))
if(5 to 10)
- to_chat(src, "[target] will yield an average amount of essence.")
+ to_chat(src, span_revennotice("[target] will yield an average amount of essence."))
if(11 to 20)
- to_chat(src, "Such a feast! [target] will yield much essence to you.")
+ to_chat(src, span_revenboldnotice("Such a feast! [target] will yield much essence to you."))
if(30 to INFINITY)
- to_chat(src, "Ah, a sexually furstrated person. [target] will yield massive amounts of essence to you.")
+ to_chat(src, span_revenbignotice("Ah, a sexually furstrated person. [target] will yield massive amounts of essence to you."))
if(do_after(src, rand(15, 25), 0, target)) //how about now
if(target.stat)
- to_chat(src, "[target.p_theyre(TRUE)] now too weak to provide anything of worth.")
- to_chat(target, "You feel something tugging across your body before subsiding.")
+ to_chat(src, span_revenwarning("[target.p_theyre(TRUE)] now too weak to provide anything of worth."))
+ to_chat(target, span_boldannounce("You feel something tugging across your body before subsiding."))
draining = 0
essence_drained = 0
return //hey, wait a minute...
- to_chat(src, "You begin sucking up essence from [target]'s genitals and body.")
+ to_chat(src, span_revenminor("You begin sucking up essence from [target]'s genitals and body."))
if(target.stat != DEAD)
- to_chat(target, "You feel an unholy euphoria as as something sucks at every part your body, your fluids flowing out...")
+ to_chat(target, span_warning("You feel an unholy euphoria as as something sucks at every part your body, your fluids flowing out..."))
if(target.stat == SOFT_CRIT)
target.Stun(150)
reveal(46)
stun(100)
- target.visible_message("[target] suddenly rises slightly into the air, [target.p_their()] skin turning an ashy gray.")
+ target.visible_message(span_warning("[target] suddenly rises slightly into the air, [target.p_their()] skin turning an ashy gray."))
if(target.anti_magic_check(FALSE, TRUE))
- to_chat(src, "Something's wrong! [target] seems to be resisting the sucking, leaving you vulnerable!")
+ to_chat(src, span_revenminor("Something's wrong! [target] seems to be resisting the sucking, leaving you vulnerable!"))
target.set_resting(TRUE,TRUE)
- target.visible_message("[target] slumps onto the ground.", \
- "Violet lights, dancing in your vision, receding--")
+ target.visible_message(span_warning("[target] slumps onto the ground."), \
+ span_revenwarning("Violet lights, dancing in your vision, receding--"))
draining = FALSE
return
var/datum/beam/B = Beam(target,icon_state="drain_life",time=INFINITY)
@@ -100,25 +100,25 @@
if(essence_drained > 30)
essence_regen_cap += 15
perfectsouls++
- to_chat(src, "The ammount of [target]'s fluids has increased your maximum essence level. Your new maximum essence is [essence_regen_cap].")
+ to_chat(src, span_revenboldnotice("The ammount of [target]'s fluids has increased your maximum essence level. Your new maximum essence is [essence_regen_cap]."))
else if(essence_drained >= 5)
essence_regen_cap += 5
- to_chat(src, "The absorption of [target]'s fluids has increased your maximum essence level. Your new maximum essence is [essence_regen_cap].")
+ to_chat(src, span_revenboldnotice("The absorption of [target]'s fluids has increased your maximum essence level. Your new maximum essence is [essence_regen_cap]."))
target.set_resting(TRUE,TRUE)
- target.visible_message("[target] slumps onto the ground.", \
- "Violets lights, dancing in your vision, getting clo--")
+ target.visible_message(span_warning("[target] slumps onto the ground."), \
+ span_revenwarning("Violets lights, dancing in your vision, getting clo--"))
drained_mobs.Add(target)
target.setStaminaLoss(150)
// target.death(0)
else
- to_chat(src, "[target ? "[target] has":"[target.p_theyve(TRUE)]"] been drawn out of your grasp. The link has been broken.")
+ to_chat(src, span_revenwarning("[target ? "[target] has":"[target.p_theyve(TRUE)]"] been drawn out of your grasp. The link has been broken."))
if(target) //Wait, target is WHERE NOW?
target.set_resting(TRUE,TRUE)
- target.visible_message("[target] slumps onto the ground.", \
- "Violets lights, dancing in your vision, receding--")
+ target.visible_message(span_warning("[target] slumps onto the ground."), \
+ span_revenwarning("Violets lights, dancing in your vision, receding--"))
qdel(B)
else
- to_chat(src, "You are not close enough to suck on [target ? "[target]'s":"[target.p_their()]"] fluids. The link has been broken.")
+ to_chat(src, span_revenwarning("You are not close enough to suck on [target ? "[target]'s":"[target.p_their()]"] fluids. The link has been broken."))
draining = FALSE
essence_drained = 0
@@ -126,7 +126,7 @@
/obj/effect/proc_holder/spell/targeted/night_vision/qareen
charge_max = 0
panel = "Qareen Abilities"
- message = "You toggle your night vision."
+ message = span_revennotice("You toggle your night vision.")
action_icon = 'icons/mob/actions/actions_revenant.dmi'
action_icon_state = "r_nightvision"
action_background_icon_state = "bg_qareen"
@@ -188,7 +188,7 @@
charge_counter = charge_max
return FALSE
name = "[initial(name)] ([cast_amount]E)"
- to_chat(user, "You have unlocked [initial(name)]!")
+ to_chat(user, span_revennotice("You have unlocked [initial(name)]!"))
panel = "Qareen Abilities"
locked = FALSE
charge_counter = charge_max
@@ -227,7 +227,7 @@
L.flicker(20) //spooky
continue
L.flicker(20) //spooky
- L.visible_message("\The [L] suddenly flares brightly and begins to spark!")
+ L.visible_message(span_warning("\The [L] suddenly flares brightly and begins to spark!"))
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(4, 0, L)
s.start()
@@ -335,7 +335,7 @@
continue
if(human.anti_magic_check(FALSE, TRUE))
continue
- to_chat(human, "You feel [pick("your sense of direction flicker out", "a stabbing pain in your head", "your mind fill with thought of servitude for a brief moment")].")
+ to_chat(human, span_revenwarning("You feel [pick("your sense of direction flicker out", "a stabbing pain in your head", "your mind fill with thought of servitude for a brief moment")]."))
new /obj/effect/temp_visual/revenant(human.loc)
// human.emp_act(80)
// for(var/obj/thing in T)
@@ -394,7 +394,7 @@
if(!blissfound)
H.ForceContractDisease(new /datum/disease/qarbliss(), FALSE, TRUE)
mob.adjust_bodytemperature(5)
- to_chat(H, "You feel [pick("suddenly hot", "a surge of warmth", "like your crotch is tingling")].")
+ to_chat(H, span_revenminor("You feel [pick("suddenly hot", "a surge of warmth", "like your crotch is tingling")]."))
mob.reagents.add_reagent(/datum/reagent/drug/aphrodisiac, 5)
else
mob.adjust_bodytemperature(5)
diff --git a/modular_splurt/code/modules/antagonists/qareen/qareen_bliss.dm b/modular_splurt/code/modules/antagonists/qareen/qareen_bliss.dm
index 5a0a657ea5..4b9fd83cd6 100644
--- a/modular_splurt/code/modules/antagonists/qareen/qareen_bliss.dm
+++ b/modular_splurt/code/modules/antagonists/qareen/qareen_bliss.dm
@@ -27,7 +27,7 @@
/datum/disease/qarbliss/stage_act()
if(prob(stage*2))
if(prob(5))
- to_chat(affected_mob, "You feel [pick("hot and bothered", "horny", "lusty", "like you're in a rut", "the need to breed", "breedable", "slimy")]...")
+ to_chat(affected_mob, span_revennotice("You feel [pick("hot and bothered", "horny", "lusty", "like you're in a rut", "the need to breed", "breedable", "slimy")]..."))
if(stage > 1 && prob(20))
affected_mob.confused += 5
if(stage > 2 && prob(20))
@@ -56,14 +56,14 @@
if(5)
if (bliss_stage_2 == FALSE)
bliss_stage_2 = TRUE
- to_chat(affected_mob, "It's too much! Brain.. fried..")
+ to_chat(affected_mob, span_revenbignotice("It's too much! Brain.. fried.."))
if (ishuman(affected_mob))
var/mob/living/carbon/human/H = affected_mob
H.mob_climax(TRUE,"Bliss",src,TRUE)
if(affected_mob.dna?.species)
affected_mob.dna.species.handle_mutant_bodyparts(affected_mob,"#fff0ff")
affected_mob.dna.species.handle_hair(affected_mob,"#da6eda")
- affected_mob.visible_message("[affected_mob] looks utterly depraved.", "You suddenly feel like your skin is tingling...")
+ affected_mob.visible_message(span_warning("[affected_mob] looks utterly depraved."), span_revennotice("You suddenly feel like your skin is tingling..."))
affected_mob.add_atom_colour("#ffdaf3", TEMPORARY_COLOUR_PRIORITY)
new /obj/effect/temp_visual/revenant(affected_mob.loc)
// addtimer(CALLBACK(src, .proc/blessings), 150)
@@ -79,4 +79,4 @@
if(QDELETED(affected_mob))
return
affected_mob.playsound_local(affected_mob, 'sound/effects/gib_step.ogg', 40, 1, -1)
- to_chat(affected_mob, "You sense the curse of a lustful ghost befall you...")
+ to_chat(affected_mob, span_revendanger("You sense the curse of a lustful ghost befall you..."))
diff --git a/modular_splurt/code/modules/antagonists/slaver/equipment/slaver_items.dm b/modular_splurt/code/modules/antagonists/slaver/equipment/slaver_items.dm
index 76c1810a9e..d3880bda09 100644
--- a/modular_splurt/code/modules/antagonists/slaver/equipment/slaver_items.dm
+++ b/modular_splurt/code/modules/antagonists/slaver/equipment/slaver_items.dm
@@ -13,11 +13,11 @@
/obj/item/slaver/gizmo/attack(mob/living/M, mob/user)
var/datum/antagonist/slaver/S = locate() in user.mind.antag_datums
if(!S) // Is not a slaver antag.
- to_chat(user, "You aren't sure how to use this tech!")
+ to_chat(user, span_warning("You aren't sure how to use this tech!"))
return
if(user == M)
- to_chat(user, "You can't teleport yourself!")
+ to_chat(user, span_warning("You can't teleport yourself!"))
return
// Find a location to teleport to
@@ -32,19 +32,19 @@
// Check we are in range of the destination
if(!mobLocation || mobLocation.z != teleportDestination.z)
- to_chat(user, "The mothership is out of range, you need to be on the same z-level!")
+ to_chat(user, span_warning("The mothership is out of range, you need to be on the same z-level!"))
return
- user.visible_message("[user] begins scanning [M] with [src].", "You begin scanning [M] with [src].")
+ user.visible_message(span_notice("[user] begins scanning [M] with [src]."), span_notice("You begin scanning [M] with [src]."))
if(do_mob(user, M, 15 SECONDS))
// Teleport!
playsound(get_turf(M.loc), 'sound/magic/blink.ogg', 50, 1)
- M.visible_message("[M] vanishes from sight!", \
- "You feel a rush of energy as you are beamed to the slaver mothership!")
+ M.visible_message(span_notice("[M] vanishes from sight!"), \
+ span_notice("You feel a rush of energy as you are beamed to the slaver mothership!"))
new /obj/effect/temp_visual/dir_setting/ninja(get_turf(M), M.dir)
M.forceMove(teleportDestination)
else
- to_chat(user, "You need to stand still and uninterrupted for 15 seconds!")
+ to_chat(user, span_warning("You need to stand still and uninterrupted for 15 seconds!"))
// Buyable gear kits at the slaver console
/obj/item/storage/box/slaver_teleport
diff --git a/modular_splurt/code/modules/antagonists/slaver/slaver.dm b/modular_splurt/code/modules/antagonists/slaver/slaver.dm
index 975a240520..7638cc11f3 100644
--- a/modular_splurt/code/modules/antagonists/slaver/slaver.dm
+++ b/modular_splurt/code/modules/antagonists/slaver/slaver.dm
@@ -200,7 +200,7 @@ GLOBAL_LIST_INIT(slavers_ransom_values, list(
/datum/team/slavers/roundend_report()
var/list/parts = list()
- parts += "Slave Traders:"
+ parts += span_header("Slave Traders:")
var/text = " The crew were:"
var/slavesSold = GLOB.slavers_slaves_sold
@@ -225,9 +225,9 @@ GLOBAL_LIST_INIT(slavers_ransom_values, list(
// var/datum/objective/slaver/O = locate() in objectives
if(GLOB.slavers_credits_total >= 200000 && !all_dead)
- parts += "The slaver crew were successful!"
+ parts += span_greentext("The slaver crew were successful!")
else
- parts += "The slaver crew have failed."
+ parts += span_redtext("The slaver crew have failed.")
parts += text
diff --git a/modular_splurt/code/modules/antagonists/wendigo/mob/_on_click.dm b/modular_splurt/code/modules/antagonists/wendigo/mob/_on_click.dm
index 13257de9e9..f5cccf49d8 100644
--- a/modular_splurt/code/modules/antagonists/wendigo/mob/_on_click.dm
+++ b/modular_splurt/code/modules/antagonists/wendigo/mob/_on_click.dm
@@ -3,9 +3,9 @@
/mob/living/carbon/wendigo/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE)
if(incapacitated() || lying)
- to_chat(src, "You can't do that right now!")
+ to_chat(src, span_warning("You can't do that right now!"))
return FALSE
if(be_close && !in_range(M, src))
- to_chat(src, "You are too far away!")
+ to_chat(src, span_warning("You are too far away!"))
return FALSE
return TRUE
diff --git a/modular_splurt/code/modules/antagonists/wendigo/mob/examine.dm b/modular_splurt/code/modules/antagonists/wendigo/mob/examine.dm
index c3d1fe26e9..9427a91018 100644
--- a/modular_splurt/code/modules/antagonists/wendigo/mob/examine.dm
+++ b/modular_splurt/code/modules/antagonists/wendigo/mob/examine.dm
@@ -7,9 +7,9 @@
. = list("*---------*\nThis is [icon2html(src, user)] \a [src]!")
if(handcuffed)
- . += "[t_He] is [icon2html(handcuffed, user)] handcuffed!"
+ . += span_warning("[t_He] is [icon2html(handcuffed, user)] handcuffed!")
if(legcuffed)
- . += "[t_He] has [icon2html(legcuffed, user)] leg cuffs!"
+ . += span_warning("[t_He] has [icon2html(legcuffed, user)] leg cuffs!")
if(head)
. += "[t_He] is wearing [head.get_examine_string(user)] on [t_his] head."
if(wear_neck)
@@ -23,7 +23,7 @@
. += "[t_He] has [back.get_examine_string(user)] on [t_his] back."
if(stat == DEAD)
- . += "[t_He] is limp and unresponsive, with no signs of life."
+ . += span_deadsay("[t_He] is limp and unresponsive, with no signs of life.")
var/list/msg = ("")
var/temp_hp = getBruteLoss()
@@ -66,7 +66,7 @@
if(connected_link)
if(connected_link.souls.len > 5)
- . += "[t_His] eyes are glowing a deadly red."
+ . += span_warning("[t_His] eyes are glowing a deadly red.")
else
var/A = ""
switch(connected_link.souls.len)
@@ -80,7 +80,7 @@
A += "[t_His] eyes are glowing red."
. += "[A]"
else
- . += "[t_He] looks lost."
+ . += span_deadsay("[t_He] looks lost.")
SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, .)
. += "*---------*"
diff --git a/modular_splurt/code/modules/antagonists/wendigo/mob/metabolization.dm b/modular_splurt/code/modules/antagonists/wendigo/mob/metabolization.dm
index 33a2869bdc..7293047456 100644
--- a/modular_splurt/code/modules/antagonists/wendigo/mob/metabolization.dm
+++ b/modular_splurt/code/modules/antagonists/wendigo/mob/metabolization.dm
@@ -42,15 +42,15 @@
if(round(fake_penis_size, 1) == fake_penis_size && fake_penis_size)
switch(had_changed)
if("penis_enlarger")
- to_chat(src, "Your [pick(GLOB.dick_nouns)] [pick("swells up to", "flourishes into", "expands into", "bursts forth into", "grows eagerly into", "amplifys into")] a [fake_penis_size] inch penis.")
+ to_chat(src, span_warning("Your [pick(GLOB.dick_nouns)] [pick("swells up to", "flourishes into", "expands into", "bursts forth into", "grows eagerly into", "amplifys into")] a [fake_penis_size] inch penis."))
if("PEsmaller")
if(fake_penis_size > 0)
- to_chat(src, "Your [pick(GLOB.dick_nouns)] [pick("shrinks down to", "decreases into", "diminishes into", "deflates into", "shrivels regretfully into", "contracts into")] a [fake_penis_size] inch penis.")
+ to_chat(src, span_warning("Your [pick(GLOB.dick_nouns)] [pick("shrinks down to", "decreases into", "diminishes into", "deflates into", "shrivels regretfully into", "contracts into")] a [fake_penis_size] inch penis."))
else if(round(fake_breast_size, 1) == fake_breast_size && fake_breast_size)
switch(had_changed)
if("breast_enlarger")
- to_chat(src, "Your breasts [pick("swell up to", "flourish into", "expand into", "burst forth into", "grow eagerly into", "amplify into")] a [ascii2text(round(fake_breast_size)+63)]-cup.")
+ to_chat(src, span_warning("Your breasts [pick("swell up to", "flourish into", "expand into", "burst forth into", "grow eagerly into", "amplify into")] a [ascii2text(round(fake_breast_size)+63)]-cup."))
if("BEsmaller)")
if(fake_breast_size > 0)
- to_chat(src, "Your breasts [pick("shrink down to", "decrease into", "diminish into", "deflate into", "shrivel regretfully into", "contracts into")] a [ascii2text(round(fake_breast_size)+63)]-cup.")
+ to_chat(src, span_warning("Your breasts [pick("shrink down to", "decrease into", "diminish into", "deflate into", "shrivel regretfully into", "contracts into")] a [ascii2text(round(fake_breast_size)+63)]-cup."))
return TRUE
diff --git a/modular_splurt/code/modules/arousal/arousal.dm b/modular_splurt/code/modules/arousal/arousal.dm
index aaee27e37b..b60b8e95e1 100644
--- a/modular_splurt/code/modules/arousal/arousal.dm
+++ b/modular_splurt/code/modules/arousal/arousal.dm
@@ -60,7 +60,7 @@
var/obj/item/organ/genital/penis/bepis = sender
if(locate(/obj/item/genital_equipment/sounding) in bepis.contents)
spill = TRUE
- to_chat(src, "You feel your sounding rod being pushed out of your cockhole with the burst of jizz!")
+ to_chat(src, span_userlove("You feel your sounding rod being pushed out of your cockhole with the burst of jizz!"))
var/obj/item/genital_equipment/sounding/rod = locate(/obj/item/genital_equipment/sounding) in bepis.contents
rod.forceMove(get_turf(src))
@@ -81,14 +81,14 @@
return
var/main_fluid = lowertext(fluid_source.get_master_reagent_name())
if(mb_time)
- visible_message("You hear a strong suction sound coming from the [M.name] on [src]'s [G.name].", \
- "The [M.name] pumps faster, trying to get you over the edge.", \
- "Something vacuums your [G.name] with a quiet but powerfull vrrrr.")
+ visible_message(span_love("You hear a strong suction sound coming from the [M.name] on [src]'s [G.name]."), \
+ span_userlove("The [M.name] pumps faster, trying to get you over the edge."), \
+ span_userlove("Something vacuums your [G.name] with a quiet but powerfull vrrrr."))
if(!do_after(src, mb_time, target = src) || !in_range(src, container) || !G.climaxable(src, TRUE))
return
- visible_message("[src] twitches as [p_their()] [main_fluid] trickles into [container].", \
- "[M] sucks out all the [main_fluid] you had been saving up into [container].", \
- "You feel a vacuum sucking on your [G.name] as you climax!")
+ visible_message(span_love("[src] twitches as [p_their()] [main_fluid] trickles into [container]."), \
+ span_userlove("[M] sucks out all the [main_fluid] you had been saving up into [container]."), \
+ span_userlove("You feel a vacuum sucking on your [G.name] as you climax!"))
do_climax(fluid_source, container, G, FALSE, cover = TRUE)
emote("moan")
@@ -97,12 +97,12 @@
if(!fluid_source)
return
if(mb_time) //Skip warning if this is an instant climax.
- to_chat(src,"You're about to climax over [L]!")
- to_chat(L,"[src] is about to climax over you!")
+ to_chat(src,span_userlove("You're about to climax over [L]!"))
+ to_chat(L,span_userlove("[src] is about to climax over you!"))
if(!do_after(src, mb_time, target = src) || !in_range(src, L) || !G.climaxable(src, TRUE))
return
- to_chat(src,"You climax all over [L] using your [G.name]!")
- to_chat(L, "[src] climaxes all over you using [p_their()] [G.name]!")
+ to_chat(src,span_userlove("You climax all over [L] using your [G.name]!"))
+ to_chat(L, span_userlove("[src] climaxes all over you using [p_their()] [G.name]!"))
do_climax(fluid_source, L, G, spillage, cover = TRUE)
/atom/proc/add_cum_overlay() //This can go in a better spot, for now its here.
diff --git a/modular_splurt/code/modules/arousal/genitals.dm b/modular_splurt/code/modules/arousal/genitals.dm
index 0b639672c0..2305968913 100644
--- a/modular_splurt/code/modules/arousal/genitals.dm
+++ b/modular_splurt/code/modules/arousal/genitals.dm
@@ -49,23 +49,23 @@
/obj/item/organ/genital/proc/remove_equipment(mob/living/carbon/remover, selection)
var/obj/item/selected = equipment[selection]
if(!selected)
- to_chat(remover, "[remover != owner ? owner.p_their() : "Your"] [name] doesn't have that equipped")
+ to_chat(remover, span_warning("[remover != owner ? owner.p_their() : "Your"] [name] doesn't have that equipped"))
return
if(remover == owner)
- owner.visible_message(message = "\The [owner] slides the [selected] out of [owner.p_their()] [name]",
- self_message = "You feel the [selected] slide out of your [name]",
+ owner.visible_message(message = span_lewd("\The [owner] slides the [selected] out of [owner.p_their()] [name]"),
+ self_message = span_lewd("You feel the [selected] slide out of your [name]"),
ignored_mobs = owner.get_unconsenting()
)
else
owner.visible_message(message = "\The [remover] tries to remove the [selected] out of [owner]'s [name]",
- self_message = "\The [remover] gently takes your [name] and starts sliding the [selected] out of it",
+ self_message = span_lewd("\The [remover] gently takes your [name] and starts sliding the [selected] out of it"),
ignored_mobs = owner.get_unconsenting()
)
if(!do_mob(remover, owner, 4 SECONDS))
return
- owner.visible_message(message = "\The [remover] slides the [selected] out of [owner]'s [name]!",
- self_message = "You feel [remover]'s warm hand slide the [selected] out of your [name]",
+ owner.visible_message(message = span_lewd("\The [remover] slides the [selected] out of [owner]'s [name]!"),
+ self_message = span_lewd("You feel [remover]'s warm hand slide the [selected] out of your [name]"),
ignored_mobs = owner.get_unconsenting()
)
switch(selected.type)
diff --git a/modular_splurt/code/modules/arousal/organs/belly.dm b/modular_splurt/code/modules/arousal/organs/belly.dm
index ffcd3e3661..44ae1ffafa 100644
--- a/modular_splurt/code/modules/arousal/organs/belly.dm
+++ b/modular_splurt/code/modules/arousal/organs/belly.dm
@@ -40,7 +40,7 @@
var/list/belly_names = list("stomach", "belly", "gut", "midsection", "rolls")
if(size < 0)//I don't actually know what round() does to negative numbers, so to be safe!!fixed
if(owner)
- to_chat(owner, "You feel your [pick(belly_names)] go completely flat.")
+ to_chat(owner, span_warning("You feel your [pick(belly_names)] go completely flat."))
QDEL_IN(src, 1)
return
@@ -48,9 +48,9 @@
var/mob/living/carbon/human/H = owner
var/r_prev_size = round(prev_size)
if (rounded_size > r_prev_size)
- to_chat(H, "Your guts [pick("swell up to", "gurgle into", "expand into", "plump up into", "grow eagerly into", "fatten up into", "distend into")] a larger midsection.")
+ to_chat(H, span_warning("Your guts [pick("swell up to", "gurgle into", "expand into", "plump up into", "grow eagerly into", "fatten up into", "distend into")] a larger midsection."))
else if (rounded_size < r_prev_size)
- to_chat(H, "Your guts [pick("shrink down to", "decrease into", "wobble down into", "diminish into", "deflate into", "contracts into")] a smaller midsection.")
+ to_chat(H, span_warning("Your guts [pick("shrink down to", "decrease into", "wobble down into", "diminish into", "deflate into", "contracts into")] a smaller midsection."))
/obj/item/organ/genital/belly/update_appearance()
var/lowershape = lowertext(shape)
@@ -130,7 +130,7 @@
var/growth_amount = climax_fluids.total_volume / (fluid_max_volume * GENITAL_INFLATION_THRESHOLD)
modify_size(growth_amount)
if(size > round(previous))
- owner.visible_message("\The [owner]'s belly bloats outwards as it gets pumped full of[pick(" sweet", "")] [lowertext(source_gen.get_fluid_name())]!", ignored_mobs = owner.get_unconsenting())
+ owner.visible_message(span_lewd("\The [owner]'s belly bloats outwards as it gets pumped full of[pick(" sweet", "")] [lowertext(source_gen.get_fluid_name())]!"), ignored_mobs = owner.get_unconsenting())
fluid_id = source_gen.get_fluid_id()
if((growth_amount >= 3 || size >= 3) && (owner.client?.prefs.cit_toggles & BUTT_ENLARGEMENT))
var/obj/item/organ/genital/butt/ass = owner.getorganslot(ORGAN_SLOT_BUTT)
diff --git a/modular_splurt/code/modules/arousal/organs/butt.dm b/modular_splurt/code/modules/arousal/organs/butt.dm
index bc37f4aef2..45622e77e1 100644
--- a/modular_splurt/code/modules/arousal/organs/butt.dm
+++ b/modular_splurt/code/modules/arousal/organs/butt.dm
@@ -45,6 +45,6 @@
var/list/asscheeks = list("asscheeks", "buttcheeks", "ass buns", "booty pillows", "dumptruck spheres", "[pick(list("jiggly", "bouncy", "wobbly"))] buttocks")
modify_size(growth_amount)
if(size != previous)
- owner.visible_message("\The [owner]'s [pick(GLOB.butt_nouns + asscheeks)] bounce\s outwards lewdly as [owner.p_they()] get[owner.p_s()] pumped full of [lowertext(source_gen.get_fluid_name())] from behind!", ignored_mobs = owner.get_unconsenting())
+ owner.visible_message(span_lewd("\The [owner]'s [pick(GLOB.butt_nouns + asscheeks)] bounce\s outwards lewdly as [owner.p_they()] get[owner.p_s()] pumped full of [lowertext(source_gen.get_fluid_name())] from behind!"), ignored_mobs = owner.get_unconsenting())
fluid_id = source_gen.get_fluid_id()
climax_fluids.clear_reagents()
diff --git a/modular_splurt/code/modules/arousal/organs/penis.dm b/modular_splurt/code/modules/arousal/organs/penis.dm
index d09680b312..78e015ea0b 100644
--- a/modular_splurt/code/modules/arousal/organs/penis.dm
+++ b/modular_splurt/code/modules/arousal/organs/penis.dm
@@ -31,7 +31,7 @@
var/previous = size
modify_size(target.total_volume / (fluid_max_volume * GENITAL_INFLATION_THRESHOLD))
if(size != previous)
- owner.visible_message("\The [owner]'s [pick(GLOB.dick_nouns)][linked_organ ? " and [pick(list("nuts", "balls", "testicles", "ballsack", "sack"))]" : ""] swell and grow bigger as they get pumped full of \the [partner]'s [lowertext(source_gen.get_fluid_name())]!", ignored_mobs = owner.get_unconsenting())
+ owner.visible_message(span_lewd("\The [owner]'s [pick(GLOB.dick_nouns)][linked_organ ? " and [pick(list("nuts", "balls", "testicles", "ballsack", "sack"))]" : ""] swell and grow bigger as they get pumped full of \the [partner]'s [lowertext(source_gen.get_fluid_name())]!"), ignored_mobs = owner.get_unconsenting())
if(linked_organ)
linked_organ.fluid_id = source_gen.get_fluid_id()
target.clear_reagents()
diff --git a/modular_splurt/code/modules/arousal/toys/dildos.dm b/modular_splurt/code/modules/arousal/toys/dildos.dm
index 7c12e5ab64..0dd77f4583 100644
--- a/modular_splurt/code/modules/arousal/toys/dildos.dm
+++ b/modular_splurt/code/modules/arousal/toys/dildos.dm
@@ -6,7 +6,7 @@
/obj/item/dildo/flared/gigantic/suicide_act(mob/living/user)
if(do_after(user,45,target=src))
- user.visible_message("[user] tears-up and gags as they try to deepthroat the [src]! WHY WOULD THEY DO THAT? It looks like [user.p_theyre()] trying to commit suicide!!")
+ user.visible_message(span_suicide("[user] tears-up and gags as they try to deepthroat the [src]! WHY WOULD THEY DO THAT? It looks like [user.p_theyre()] trying to commit suicide!!"))
playsound(loc, 'sound/weapons/gagging.ogg', 50, 2, -1)
user.Stun(400)
user.adjust_blurriness(24)
diff --git a/modular_splurt/code/modules/awaymissions/mission_code/academy.dm b/modular_splurt/code/modules/awaymissions/mission_code/academy.dm
new file mode 100644
index 0000000000..b29a64d948
--- /dev/null
+++ b/modular_splurt/code/modules/awaymissions/mission_code/academy.dm
@@ -0,0 +1,21 @@
+//Academy Items
+
+/obj/item/dice/d20/fate
+ var/list/used_fingerprints = null // Used to track who used the one_use die
+
+/obj/item/dice/d20/fate/one_use
+ reusable = 1 // Obsolete by the used_fingerprints list
+
+/obj/item/dice/d20/fate/effect(var/mob/living/carbon/human/user,roll)
+ // This override checks if a user has rolled the dice
+ // If true; Reject them and abort
+ if (user in used_fingerprints)
+ // Send a message implying someone else should roll
+ visible_message(span_notice("[user] rolls the dice, but it doesn't respond to [user.p_them()] again."))
+ return
+ // If false; Add them to the user list and continue
+ else
+ LAZYADD(used_fingerprints, user)
+
+ // Run the function normally
+ ..()
diff --git a/modular_splurt/code/modules/cargo/packs/misc.dm b/modular_splurt/code/modules/cargo/packs/misc.dm
index 3211d7e085..bf5eec556d 100644
--- a/modular_splurt/code/modules/cargo/packs/misc.dm
+++ b/modular_splurt/code/modules/cargo/packs/misc.dm
@@ -215,6 +215,15 @@
cost = 100000
contains = list(/obj/item/reagent_containers/food/drinks/diminicillin)
+/datum/supply_pack/misc/plushmium
+ name = "Plushmium Crate"
+ desc = "Surplus shipment of Stuffing For Spessmen backer rewards. Contains a pre-packaged spray bottle of Plushmium, and toy to use it on."
+ cost = 5000 // Cost of an expensive animal
+ contains = list(
+ /obj/item/storage/box/shipment_plushmium,
+ /obj/item/choice_beacon/box/plushie
+ )
+
/datum/supply_pack/misc/microbricks
name = "Microbricks Crate"
desc = "Extremely bored? Recreate a downscale city and get upset when it all comes crumbling down!"
diff --git a/modular_splurt/code/modules/cargo/sweatshop/sweatshop.dm b/modular_splurt/code/modules/cargo/sweatshop/sweatshop.dm
index b3d6189391..09c40bfcfc 100644
--- a/modular_splurt/code/modules/cargo/sweatshop/sweatshop.dm
+++ b/modular_splurt/code/modules/cargo/sweatshop/sweatshop.dm
@@ -87,54 +87,54 @@
//saw a plank into two platforms
/obj/item/processed/wood/plank/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/carpentry/handsaw))
- to_chat(user," You begin to saw [src] in half...")
+ to_chat(user,span_notice(" You begin to saw [src] in half..."))
if(do_after(user, 40, target = src) && isturf(loc))
new src.sawobj(loc)
new src.sawobj(loc) //send help i dont know how to make two in the same line lmfao
- to_chat(user, " You saw [src] in half.")
+ to_chat(user, span_notice(" You saw [src] in half."))
qdel(src)
else
- to_chat(user, "You need to hold still to saw [src]!")
+ to_chat(user, span_warning("You need to hold still to saw [src]!"))
else
..()
//saw a platform into four blocks
/obj/item/processed/wood/platform/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/carpentry/handsaw))
- to_chat(user," You begin cut [src] into smaller pieces...")
+ to_chat(user,span_notice(" You begin cut [src] into smaller pieces..."))
if(do_after(user, 20, target = src) && isturf(loc))
new src.sawobj(loc)
new src.sawobj(loc)
new src.sawobj(loc)
new src.sawobj(loc)
- to_chat(user, " You cut [src] into four pieces.")
+ to_chat(user, span_notice(" You cut [src] into four pieces."))
qdel(src)
else
- to_chat(user, "You need to hold still to saw [src]!")
+ to_chat(user, span_warning("You need to hold still to saw [src]!"))
else
..()
//sand a block into a peg
/obj/item/processed/wood/block/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/carpentry/sandpaper))
- to_chat(user," You carefully begin to sand down [src]...")
+ to_chat(user,span_notice(" You carefully begin to sand down [src]..."))
if(do_after(user, 50, target = src) && isturf(loc))
new src.sandobj(loc)
- to_chat(user, " You smooth [src] into a peg.")
+ to_chat(user, span_notice(" You smooth [src] into a peg."))
qdel(src)
else
- to_chat(user, "You need to hold still to sand [src]!")
+ to_chat(user, span_warning("You need to hold still to sand [src]!"))
else
..()
//cut heated metal into nails
/obj/item/processed/metal/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/wirecutters))
- to_chat(user," You tediously begin to cut [src] into several nails...")
+ to_chat(user,span_notice(" You tediously begin to cut [src] into several nails..."))
if(do_after(user, 80, target = src) && isturf(loc))
new /obj/item/nails(loc)
new /obj/item/nails(loc)
- to_chat(user, " You make some crude metal nails.")
+ to_chat(user, span_notice(" You make some crude metal nails."))
qdel(src)
else
- to_chat(user, "You need to hold still to process [src]!")
+ to_chat(user, span_warning("You need to hold still to process [src]!"))
else
..()
@@ -142,25 +142,25 @@
//cover a wooden block in glue
/obj/item/processed/wood/block/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/carpentry/glue))
- to_chat(user," You begin to glue down one end of [src]...")
+ to_chat(user,span_notice(" You begin to glue down one end of [src]..."))
if(do_after(user, 10, target = src) && isturf(loc))
new src.glueobj(loc)
- to_chat(user, " You slap some glue onto [src].")
+ to_chat(user, span_notice(" You slap some glue onto [src]."))
qdel(src)
else
- to_chat(user, "You need to hold still to glue [src]!")
+ to_chat(user, span_warning("You need to hold still to glue [src]!"))
else
..()
//cover a wooden peg in glue
/obj/item/processed/wood/peg/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/carpentry/glue))
- to_chat(user," You begin to glue down one end of the [src]...")
+ to_chat(user,span_notice(" You begin to glue down one end of the [src]..."))
if(do_after(user, 10, target = src) && isturf(loc))
new src.glueobj(loc)
- to_chat(user, " You slap some glue onto [src].")
+ to_chat(user, span_notice(" You slap some glue onto [src]."))
qdel(src)
else
- to_chat(user, "You need to hold still to glue [src]!")
+ to_chat(user, span_warning("You need to hold still to glue [src]!"))
else
..()
@@ -168,89 +168,89 @@
//bore a platform into a seat
/obj/item/processed/wood/platform/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/carpentry/borer))
- to_chat(user," You begin to cut four holes into [src]...")
+ to_chat(user,span_notice(" You begin to cut four holes into [src]..."))
if(do_after(user, 40, target = src) && isturf(loc))
new src.boreobj(loc)
- to_chat(user, " You drill four holes into [src].")
+ to_chat(user, span_notice(" You drill four holes into [src]."))
qdel(src)
else
- to_chat(user, "You need to hold still to refine [src]!")
+ to_chat(user, span_warning("You need to hold still to refine [src]!"))
else
..()
//Stools - Further crafting
/obj/item/processed/wood/stool1/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/nails))
- to_chat(user," You place nails into [src]...")
+ to_chat(user,span_notice(" You place nails into [src]..."))
if(do_after(user, 20, target = src) && isturf(loc))
new /obj/item/processed/wood/stool2(loc)
- to_chat(user, " The nails are ready to be hammered.")
+ to_chat(user, span_notice(" The nails are ready to be hammered."))
qdel(src)
qdel(I)
else
- to_chat(user, "You need to hold still to refine [src]!")
+ to_chat(user, span_warning("You need to hold still to refine [src]!"))
else
..()
/obj/item/processed/wood/stool2/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/carpentry/hammer))
- to_chat(user," You begin to hammer the [src]...")
+ to_chat(user,span_notice(" You begin to hammer the [src]..."))
if(do_after(user, 30, target = src) && isturf(loc))
new /obj/item/processed/wood/stool3(loc)
- to_chat(user, " The nails are hammered into place.")
+ to_chat(user, span_notice(" The nails are hammered into place."))
qdel(src)
else
- to_chat(user, "You need to hold still to refine [src]!")
+ to_chat(user, span_warning("You need to hold still to refine [src]!"))
else
..()
/obj/item/processed/wood/stool3/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/carpentry/sandpaper))
- to_chat(user," You begin to sand the [src]...")
+ to_chat(user,span_notice(" You begin to sand the [src]..."))
if(do_after(user, 30, target = src) && isturf(loc))
new /obj/item/processed/wood/stool4(loc)
- to_chat(user, " You sand down the [src].")
+ to_chat(user, span_notice(" You sand down the [src]."))
qdel(src)
else
- to_chat(user, "You need to hold still to refine [src]!")
+ to_chat(user, span_warning("You need to hold still to refine [src]!"))
else
..()
/obj/item/processed/wood/stool4/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/processed/wood/glueblock))
- to_chat(user," You add some finishing touches to the [src]...")
+ to_chat(user,span_notice(" You add some finishing touches to the [src]..."))
if(do_after(user, 30, target = src) && isturf(loc))
new /obj/item/processed/wood/stool(loc)
- to_chat(user, " You complete the [src].")
+ to_chat(user, span_notice(" You complete the [src]."))
qdel(src)
qdel(I)
else
- to_chat(user, "You need to hold still to refine [src]!")
+ to_chat(user, span_warning("You need to hold still to refine [src]!"))
else
..()
/obj/item/processed/wood/stool/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/cushion))
- to_chat(user," You secure a cloth cushion to [src]...")
+ to_chat(user,span_notice(" You secure a cloth cushion to [src]..."))
if(do_after(user, 30, target = src) && isturf(loc))
new /obj/item/processed/wood/stoolcloth(loc)
- to_chat(user, " You add a cushion to [src].")
+ to_chat(user, span_notice(" You add a cushion to [src]."))
qdel(src)
qdel(I)
else
- to_chat(user, "You need to hold still to detail [src]!")
+ to_chat(user, span_warning("You need to hold still to detail [src]!"))
else
..()
/obj/item/processed/wood/stool/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/cushion/silk))
- to_chat(user," You secure a silk cushion to [src]...")
+ to_chat(user,span_notice(" You secure a silk cushion to [src]..."))
if(do_after(user, 30, target = src) && isturf(loc))
new /obj/item/processed/wood/stoolsilk(loc)
- to_chat(user, " You add a cushion to [src].")
+ to_chat(user, span_notice(" You add a cushion to [src]."))
qdel(src)
qdel(I)
else
- to_chat(user, "You need to hold still to detail [src]!")
+ to_chat(user, span_warning("You need to hold still to detail [src]!"))
else
..()
diff --git a/modular_splurt/code/modules/client/client_procs.dm b/modular_splurt/code/modules/client/client_procs.dm
index 7f82c94449..d2e67c65bf 100644
--- a/modular_splurt/code/modules/client/client_procs.dm
+++ b/modular_splurt/code/modules/client/client_procs.dm
@@ -77,7 +77,7 @@
M.mind.AddSpell(new T)
else
M.AddSpell(new T)
- message_admins("Spells given to mindless mobs will not be transferred in mindswap or cloning!")
+ message_admins(span_danger("Spells given to mindless mobs will not be transferred in mindswap or cloning!"))
/client/proc/teach_martial_art(mob/living/carbon/C)
if (!istype(C))
@@ -99,7 +99,7 @@
var/datum/martial_art/MA = new chosenart
MA.teach(C)
log_admin("[key_name(usr)] has taught [MA] to [key_name(C)].")
- message_admins("[key_name_admin(usr)] has taught [MA] to [key_name_admin(C)].")
+ message_admins(span_notice("[key_name_admin(usr)] has taught [MA] to [key_name_admin(C)]."))
/client/proc/set_species(mob/living/carbon/human/H)
if (istype(H))
diff --git a/modular_splurt/code/modules/client/loadout/backpack.dm b/modular_splurt/code/modules/client/loadout/backpack.dm
index 448bd8a68a..6ed7050e30 100644
--- a/modular_splurt/code/modules/client/loadout/backpack.dm
+++ b/modular_splurt/code/modules/client/loadout/backpack.dm
@@ -5,6 +5,11 @@
path = /obj/item/genital_equipment/condom
cost = 1
+/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
@@ -88,7 +93,7 @@
name = "Purple Nail Polish"
path = /obj/item/nailpolish/purple
-/datum/gear/backback/secbadge
+/datum/gear/backpack/secbadge
name = "Security Badge"
path = /obj/item/clothing/accessory/badge
restricted_roles = list("Security Officer", "Warden", "Detective", "Head of Security")
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..a2bcaee4f6 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"
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 35f2b71b0b..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.
@@ -114,7 +114,7 @@
/datum/brain_trauma/induced_hypnosis/on_gain()
log_game("[key_name(owner)] was hypnogoggled'.")
- to_chat(owner, "[hypnotic_phrase]")
+ to_chat(owner, span_reallybig_hypnophrase("[hypnotic_phrase]"))
to_chat(owner, span_notice(pick("You feel your thoughts focusing on this phrase... you can't seem to get it out of your head.",
"Your head hurts, but this is all you can think of. It must be vitally important.",
"You feel a part of your mind repeating this over and over. You need to follow these words.",
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/hailer.dm b/modular_splurt/code/modules/clothing/masks/hailer.dm
index d1edb5c00b..2f32917196 100644
--- a/modular_splurt/code/modules/clothing/masks/hailer.dm
+++ b/modular_splurt/code/modules/clothing/masks/hailer.dm
@@ -15,6 +15,6 @@
if(iscarbon(user))
var/mob/living/carbon/C = user
if(src == C.wear_mask)
- to_chat(user, "The mask is fastened tight! You'll need help taking this off!")
+ to_chat(user, span_warning("The mask is fastened tight! You'll need help taking this off!"))
return
..()
diff --git a/modular_splurt/code/modules/clothing/masks/miscellaneous.dm b/modular_splurt/code/modules/clothing/masks/miscellaneous.dm
index b253001735..865d5633ea 100644
--- a/modular_splurt/code/modules/clothing/masks/miscellaneous.dm
+++ b/modular_splurt/code/modules/clothing/masks/miscellaneous.dm
@@ -3,7 +3,7 @@
if(iscarbon(user))
var/mob/living/carbon/C = user
if(src == C.wear_mask)
- to_chat(user, "You need help taking this off!")
+ to_chat(user, span_warning("You need help taking this off!"))
return
..()
@@ -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..f5a8fac735 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
diff --git a/modular_splurt/code/modules/clothing/sizeaccessories.dm b/modular_splurt/code/modules/clothing/sizeaccessories.dm
index 2161ee92ba..4fefb9e277 100644
--- a/modular_splurt/code/modules/clothing/sizeaccessories.dm
+++ b/modular_splurt/code/modules/clothing/sizeaccessories.dm
@@ -18,7 +18,7 @@
return ..()
if(user.GetComponent(/datum/component/size_normalized))
- to_chat(user, "\The [src] buzzes, being overwritten by another accessory.")
+ to_chat(user, span_warning("\The [src] buzzes, being overwritten by another accessory."))
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1)
else
user.AddComponent(/datum/component/size_normalized, wear=src)
@@ -44,7 +44,7 @@
return ..()
if(user.GetComponent(/datum/component/size_normalized))
- to_chat(user, "\The [src] buzzes, being overwritten by another accessory.")
+ to_chat(user, span_warning("\The [src] buzzes, being overwritten by another accessory."))
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1)
else
user.AddComponent(/datum/component/size_normalized, wear=src)
@@ -72,7 +72,7 @@
return ..()
if(user.GetComponent(/datum/component/size_normalized))
- to_chat(user, "\The [src] buzzes, being overwritten by another accessory.")
+ to_chat(user, span_warning("\The [src] buzzes, being overwritten by another accessory."))
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1)
else
user.AddComponent(/datum/component/size_normalized, wear=src)
diff --git a/modular_splurt/code/modules/clothing/spacesuits/hardsuit.dm b/modular_splurt/code/modules/clothing/spacesuits/hardsuit.dm
index daebd17455..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'
@@ -157,9 +157,9 @@
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread
sparks.set_up(1, 1, src)
sparks.start()
- owner.visible_message("The tesla capacitors on [owner]'s Tesla Power Armor are still recharging! The armor merely emits some sparks.")
+ owner.visible_message(span_danger("The tesla capacitors on [owner]'s Tesla Power Armor are still recharging! The armor merely emits some sparks."))
return
- owner.visible_message("[src] blocks [attack_text], sending out arcs of lightning!")
+ owner.visible_message(span_danger("[src] blocks [attack_text], sending out arcs of lightning!"))
if(!legacy)
tesla_zap(owner, tesla_range, tesla_power, tesla_flags)
else
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 5dedecd802..b9b28a778e 100644
--- a/modular_splurt/code/modules/clothing/under/_under.dm
+++ b/modular_splurt/code/modules/clothing/under/_under.dm
@@ -1,3 +1,11 @@
+/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))
+ LAZYSET(GLOB.skirt_peekable, type, TRUE)
+
/obj/item/clothing/under/Destroy()
QDEL_LIST(attached_accessories)
return ..()
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..3f6b806260 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()
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/crystalline_reentry.dm b/modular_splurt/code/modules/events/crystalline_reentry.dm
index 97378c781a..02f8ff68ae 100644
--- a/modular_splurt/code/modules/events/crystalline_reentry.dm
+++ b/modular_splurt/code/modules/events/crystalline_reentry.dm
@@ -149,7 +149,7 @@
if(prob(10))
playsound(src, 'sound/effects/bang.ogg', 50, 1)
- audible_message("You hear a BONK!")
+ audible_message(span_danger("You hear a BONK!"))
if(clong && prob(25))
x = clong.x
@@ -179,7 +179,7 @@
atmos_spawn_air("water_vapor=75;TEMP=0") //brr
/obj/effect/crystalline_reentry/proc/penetrate(mob/living/L)
- L.visible_message("[L] is smashed by a crystalline asteroid!" , "The crystalline asteroid smashes you!" , "You hear a BONK!")
+ L.visible_message(span_danger("[L] is smashed by a crystalline asteroid!") , span_userdanger("The crystalline asteroid smashes you!") , "You hear a BONK!")
if(ishuman(L))
var/mob/living/carbon/human/H = L
H.adjustBruteLoss(160)
@@ -209,14 +209,14 @@
switch(rand(1,100))
if(1 to 30)
var/obj/structure/spawner/crystalline/M = new(src.loc)
- visible_message("A [M] emerges from the asteroid's rubble!")
+ visible_message(span_danger("A [M] emerges from the asteroid's rubble!"))
if(prob(50) && tendrilnotify)
priority_announce("Unknown organic entities have been detected in the vincinity of [station_name()]. General caution is advised.", "General Alert")
if(31 to 99)
visible_message("The asteroid collapses into nothing...")
if(100)
var/mob/living/simple_animal/bot/hugbot/M = new(src.loc)
- visible_message("A [M] emerges from the asteroid's rubble! Wait... What?")
+ visible_message(span_danger("A [M] emerges from the asteroid's rubble! Wait... What?"))
qdel(src)
/obj/effect/crystalline_reentry/notendrilalert
@@ -289,8 +289,8 @@
/obj/effect/cloud_collapse/Initialize()
. = ..()
emitted_light = new(loc)
- visible_message("The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!")
- visible_message("Something falls free of the tendril!")
+ visible_message(span_boldannounce("The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!"))
+ visible_message(span_warning("Something falls free of the tendril!"))
playsound(loc,'sound/effects/tendril_destroyed.ogg', 200, 0, 50, 1, 1)
addtimer(CALLBACK(src, .proc/collapse), 50)
@@ -302,7 +302,7 @@
for(var/mob/M in range(7,src))
shake_camera(M, 15, 1)
playsound(get_turf(src),'sound/effects/explosionfar.ogg', 200, 1)
- visible_message("The tendril falls into the clouds below!")
+ visible_message(span_boldannounce("The tendril falls into the clouds below!"))
for(var/turf/T in range(1,src))
if(!T.density)
T.TerraformTurf(/turf/open/chasm/cloud, /turf/open/chasm/cloud)
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/food/snacks_other.dm b/modular_splurt/code/modules/food_and_drinks/food/snacks_other.dm
index d04a6eca55..7e15394479 100644
--- a/modular_splurt/code/modules/food_and_drinks/food/snacks_other.dm
+++ b/modular_splurt/code/modules/food_and_drinks/food/snacks_other.dm
@@ -15,7 +15,7 @@
cheeseoverlay.icon_state = "cheesed_snout"
else
cheeseoverlay.icon_state = "cheesed_human"
- H.visible_message("[H] is cheesed by [src]!", "You've been cheesed by [src]!")
+ H.visible_message(span_warning("[H] is cheesed by [src]!"), span_userdanger("You've been cheesed by [src]!"))
playsound(H, 'modular_splurt/sound/effects/slap.ogg')
if(!H.is_mouth_covered())
reagents.trans_to(H, 15, log = "cheesed hit") //Cream pie combat
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 87a11eee76..a587e9fc71 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
@@ -86,11 +86,12 @@
/datum/chemical_reaction/moth_in_chief
name = "Moth in Chief"
id = /datum/reagent/consumable/ethanol/moth_in_chief
- results = list(/datum/reagent/consumable/ethanol/moth_in_chief = 3)
+ results = list(/datum/reagent/consumable/ethanol/moth_in_chief = 4)
required_reagents = list(
/datum/reagent/consumable/ethanol/commander_and_chief = 1,
/datum/reagent/mutationtoxin/insect = 1,
- /datum/reagent/drug/copium = 1
+ /datum/reagent/drug/copium = 1,
+ /datum/reagent/medicine/stimulants = 1
)
@@ -116,7 +117,7 @@
/datum/chemical_reaction/long_john_silver
name = "Long John Silver"
- id = /datum/chemical_reaction/long_john_silver
+ id = /datum/reagent/consumable/ethanol/long_john_silver
results = list(/datum/reagent/consumable/ethanol/long_john_silver = 10)
required_reagents = list(
/datum/reagent/consumable/ethanol/navy_rum = 4,
@@ -126,7 +127,7 @@
/datum/chemical_reaction/long_haul
name = "Long Haul"
- id = /datum/chemical_reaction/long_haul
+ id = /datum/reagent/consumable/ethanol/long_haul
results = list(/datum/reagent/consumable/ethanol/long_haul = 25)
required_reagents = list(
/datum/reagent/consumable/ethanol/navy_rum = 4,
@@ -138,7 +139,7 @@
/datum/chemical_reaction/salt_and_swell
name = "Salt and Swell"
- id = /datum/chemical_reaction/salt_and_swell
+ id = /datum/reagent/consumable/ethanol/salt_and_swell
results = list(/datum/reagent/consumable/ethanol/salt_and_swell = 10)
required_reagents = list(
/datum/reagent/consumable/ethanol/navy_rum = 4,
@@ -149,7 +150,7 @@
/datum/chemical_reaction/tich_toch
name = "Tich Toch"
- id = /datum/chemical_reaction/tich_toch
+ id = /datum/reagent/consumable/ethanol/tich_toch
results = list(/datum/reagent/consumable/ethanol/tich_toch = 10)
required_reagents = list(
/datum/reagent/consumable/ethanol/tiltaellen = 6,
@@ -159,7 +160,7 @@
/datum/chemical_reaction/tiltaellen
name = "Tiltällen"
- id = /datum/chemical_reaction/tiltaellen
+ id = /datum/reagent/consumable/ethanol/tiltaellen
results = list(/datum/reagent/consumable/ethanol/tiltaellen = 10)
required_reagents = list(
/datum/reagent/consumable/yoghurt = 8,
@@ -169,8 +170,8 @@
mix_message = "The mixture curdles and thickens."
/datum/chemical_reaction/tropical_storm
- name = ""
- id = /datum/chemical_reaction/
+ name = "Tropical Storm"
+ id = /datum/reagent/consumable/ethanol/tropical_storm
results = list(/datum/reagent/consumable/ethanol/tropical_storm = 10)
required_reagents = list(
/datum/reagent/consumable/ethanol/rum = 2,
@@ -179,3 +180,12 @@
/datum/reagent/consumable/pineapplejuice = 2
)
+/datum/chemical_reaction/skullfucker_deluxe
+ name = "Skullfucker Deluxe"
+ id = /datum/reagent/consumable/ethanol/skullfucker_deluxe
+ results = list(/datum/reagent/consumable/ethanol/skullfucker_deluxe = 5)
+ required_reagents = list(
+ /datum/reagent/consumable/ethanol/sugar_rush = 2,
+ /datum/reagent/consumable/ethanol/moonshine = 2,
+ /datum/reagent/consumable/ethanol/brave_bull = 1
+ )
diff --git a/modular_splurt/code/modules/holodeck/holo_effect.dm b/modular_splurt/code/modules/holodeck/holo_effect.dm
new file mode 100644
index 0000000000..349ca781f1
--- /dev/null
+++ b/modular_splurt/code/modules/holodeck/holo_effect.dm
@@ -0,0 +1,7 @@
+// Holodeck mob: Funclaw
+/obj/effect/holodeck_effect/mobspawner/funclaw
+ mobtype = /mob/living/simple_animal/hostile/deathclaw/funclaw/gentle
+
+// Holodeck mob: Friendly Bee
+/obj/effect/holodeck_effect/mobspawner/bumbles
+ mobtype = /mob/living/simple_animal/pet/bumbles
diff --git a/modular_splurt/code/modules/jobs/job_types/peacekeeper.dm b/modular_splurt/code/modules/jobs/job_types/peacekeeper.dm
index d2b1c4b206..0936c46c12 100644
--- a/modular_splurt/code/modules/jobs/job_types/peacekeeper.dm
+++ b/modular_splurt/code/modules/jobs/job_types/peacekeeper.dm
@@ -151,7 +151,7 @@ Peacekeeper Hypospray
/obj/item/reagent_containers/peacehypo/attack(mob/living/carbon/M, mob/user)
var/datum/reagents/R = reagent_list[mode]
if(!R.total_volume)
- to_chat(user, "The injector is empty.")
+ to_chat(user, span_notice("The injector is empty."))
return
if(!istype(M))
return
@@ -160,15 +160,15 @@ Peacekeeper Hypospray
for(var/datum/reagent/RG in R.reagent_list)
if(M.reagents.has_reagent(RG.type) && !RG.overdose_threshold == 0)
if(((M.reagents.get_reagent_amount(RG.type)) + amount_per_transfer_from_this > RG.overdose_threshold))
- to_chat(user, "Injecting [M] with more [RG] would overdose them.")
+ to_chat(user, span_warning("Injecting [M] with more [RG] would overdose them."))
return
- to_chat(M, "You feel a tiny prick!")
- to_chat(user, "You inject [M] with the injector.")
+ to_chat(M, span_warning("You feel a tiny prick!"))
+ to_chat(user, span_notice("You inject [M] with the injector."))
var/fraction = min(amount_per_transfer_from_this/R.total_volume, 1)
R.reaction(M, INJECT, fraction)
if(M.reagents)
var/trans = R.trans_to(M, amount_per_transfer_from_this)
- to_chat(user, "[trans] unit\s injected. [R.total_volume] unit\s remaining.")
+ to_chat(user, span_notice("[trans] unit\s injected. [R.total_volume] unit\s remaining."))
var/list/injected = list()
for(var/datum/reagent/RG in R.reagent_list)
@@ -182,7 +182,7 @@ Peacekeeper Hypospray
mode = chosen_reagent
playsound(loc, 'sound/effects/pop.ogg', 50, 0)
var/datum/reagent/R = GLOB.chemical_reagents_list[reagent_ids[mode]]
- to_chat(user, "[src] is now dispensing '[R.name]'.")
+ to_chat(user, span_notice("[src] is now dispensing '[R.name]'."))
return
/obj/item/reagent_containers/peacehypo/examine(mob/user)
@@ -195,11 +195,11 @@ Peacekeeper Hypospray
for(var/datum/reagents/RS in reagent_list)
var/datum/reagent/R = locate() in RS.reagent_list
if(R)
- . += "It currently has [R.volume] unit\s of [R.name] stored."
+ . += span_notice("It currently has [R.volume] unit\s of [R.name] stored.")
empty = 0
if(empty)
- . += "It is currently empty! Allow some time for the internal syntheszier to produce more."
+ . += span_warning("It is currently empty! Allow some time for the internal syntheszier to produce more.")
/* End Peacekeeper Hypo
*/
diff --git a/modular_splurt/code/modules/keybindings/keybind/human.dm b/modular_splurt/code/modules/keybindings/keybind/human.dm
new file mode 100644
index 0000000000..951ce686e2
--- /dev/null
+++ b/modular_splurt/code/modules/keybindings/keybind/human.dm
@@ -0,0 +1,32 @@
+/datum/keybinding/human/quick_equip_suitstorage
+ hotkey_keys = list("ShiftQ")
+ name = "quick_equipsuitstorage"
+ full_name = "Quick suit storage"
+ description = "Put held thing in suit storage or take the item from it"
+
+/datum/keybinding/human/quick_equip_suitstorage/down(client/user)
+ var/mob/living/carbon/human/H = user.mob
+ H.smart_equip_suitstorage()
+ return TRUE
+
+/datum/keybinding/human/quick_equip_lpocket
+ hotkey_keys = list("Unbound")
+ name = "quick_equip_lpocket"
+ full_name = "Quick left pocket"
+ description = "Put held thing in left pocket or take the item from it"
+
+/datum/keybinding/human/quick_equip_lpocket/down(client/user)
+ var/mob/living/carbon/human/H = user.mob
+ H.smart_equip_lpocket()
+ return TRUE
+
+/datum/keybinding/human/quick_equip_rpocket
+ hotkey_keys = list("Unbound")
+ name = "quick_equip_rpocket"
+ full_name = "Quick right pocket"
+ description = "Put held thing in right pocket or take the item from it"
+
+/datum/keybinding/human/quick_equip_rpocket/down(client/user)
+ var/mob/living/carbon/human/H = user.mob
+ H.smart_equip_rpocket()
+ return TRUE
diff --git a/modular_splurt/code/modules/mob/dead/dead.dm b/modular_splurt/code/modules/mob/dead/dead.dm
index f314076f72..f3fcd1d528 100644
--- a/modular_splurt/code/modules/mob/dead/dead.dm
+++ b/modular_splurt/code/modules/mob/dead/dead.dm
@@ -1,5 +1,5 @@
/mob/dead/check_out(atom/A)
if (!CONFIG_GET(flag/ghost_interaction))
- to_chat(usr, "You cannot check out people when dead!")
+ to_chat(usr, span_notice("You cannot check out people when dead!"))
return
. = ..()
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 33c377eabb..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
@@ -107,6 +107,24 @@
icon_state = "deoxys"
covered_limbs = list("Head" = MATRIX_ALL, "Chest" = MATRIX_ALL, "Left Leg" = MATRIX_RED_GREEN, "Right Leg" = MATRIX_RED_GREEN, "Left Arm" = MATRIX_RED_GREEN, "Right Arm" = MATRIX_RED_GREEN)
+/datum/sprite_accessory/mam_body_markings/sloog
+ name = "Sloog"
+ icon = 'modular_splurt/icons/mob/mam_markings.dmi'
+ 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/horns.dm b/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/horns.dm
index 56ba9fdbba..4454dd0283 100644
--- a/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/horns.dm
+++ b/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/horns.dm
@@ -41,3 +41,12 @@
name = "Alien Bobbers"
icon = 'modular_splurt/icons/mob/mutant_bodyparts.dmi'
icon_state = "alienbobbers"
+
+/datum/sprite_accessory/horns/sloogbobbers
+ name = "Sloog Bobbers"
+ icon = 'modular_splurt/icons/mob/64_mutant_bodyparts.dmi'
+ icon_state = "sloogbobbers"
+ dimension_x = 64
+ center = TRUE
+ color_src = MATRIXED
+ matrixed_sections = MATRIX_RED_GREEN
diff --git a/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/legs_and_taurs.dm b/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/legs_and_taurs.dm
index d43c091c6a..d2df178b71 100644
--- a/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/legs_and_taurs.dm
+++ b/modular_splurt/code/modules/mob/dead/new_player/sprite_accesories/legs_and_taurs.dm
@@ -51,3 +51,11 @@
taur_mode = STYLE_PAW_TAURIC //it is what it is
hide_legs = USE_QUADRUPED_CLIP_MASK
matrixed_sections = MATRIX_RED_GREEN
+
+/datum/sprite_accessory/taur/sloog
+ name = "Sloog"
+ icon_state = "sloog"
+ icon = 'modular_splurt/icons/mob/mam_taur.dmi'
+ taur_mode = STYLE_PAW_TAURIC
+ hide_legs = USE_QUADRUPED_CLIP_MASK
+ matrixed_sections = MATRIX_RED_GREEN
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 927240b7ea..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,8 +221,25 @@
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"
icon = 'modular_splurt/icons/mob/mam_snouts.dmi'
matrixed_sections = MATRIX_ALL
+
+/datum/sprite_accessory/snouts/mam_snouts/sloog
+ name = "Sloog"
+ icon_state = "sloog"
+ icon = 'modular_splurt/icons/mob/mam_snouts.dmi'
+ matrixed_sections = MATRIX_RED
+
+/datum/sprite_accessory/snouts/mam_snouts/sloog/lips
+ name = "Sloog (lips)"
+ icon_state = "slooglips"
+ matrixed_sections = MATRIX_RED_GREEN
diff --git a/modular_splurt/code/modules/mob/living/carbon/carbon.dm b/modular_splurt/code/modules/mob/living/carbon/carbon.dm
index d2a7d7a875..aae89ee26f 100644
--- a/modular_splurt/code/modules/mob/living/carbon/carbon.dm
+++ b/modular_splurt/code/modules/mob/living/carbon/carbon.dm
@@ -6,7 +6,7 @@
var/obj/item/restraints/bondage_rope/rope = I
cuff_break = rope.prepare_resist(src)
if(cuff_break == -1)
- to_chat(src, "You are not able to reach the rope.")
+ to_chat(src, span_danger("You are not able to reach the rope."))
return
. = ..()
@@ -14,11 +14,48 @@
if(istype(I, /obj/item/restraints/bondage_rope))
var/obj/item/restraints/bondage_rope/rope = I
if(LAZYLEN(rope.rope_stack) > 1)
- visible_message("[src] manages to loosen up their rope!")
- to_chat(src, "You successfully loosen up your rope.")
+ visible_message(span_danger("[src] manages to loosen up their rope!"))
+ to_chat(src, span_notice("You successfully loosen up your rope."))
var/obj/item/restraints/bondage_rope/new_rope = new rope.type()
new_rope.color = pop(rope.rope_stack)
new_rope.forceMove(src.loc)
return
. = ..()
+
+// Liquid Panty Dropper effect
+/mob/living/carbon/proc/clothing_burst(mob/living/carbon/target_user)
+ // Variable for if the action succeeded
+ var/user_disrobed = FALSE
+
+ // Get worn items
+ var/items = target_user.get_contents()
+
+ // Iterate over worn items
+ for(var/obj/item/item_worn in items)
+ // Ignore non-mob (storage)
+ if(!ismob(item_worn.loc))
+ continue
+
+ // Ignore held items
+ if(target_user.is_holding(item_worn))
+ continue
+
+ // Check for anything covering a body part
+ if(item_worn.body_parts_covered)
+ // Set the success variable
+ user_disrobed = TRUE
+
+ // Drop the target item
+ target_user.dropItemToGround(item_worn, TRUE)
+
+ // Throw item to a random spot
+ item_worn.throw_at(pick(oview(7,get_turf(src))),10,1)
+
+ // When successfully disrobing a target
+ if(user_disrobed)
+ // Display a chat message
+ target_user.visible_message(span_userlove("[target_user] suddenly bursts out of [target_user.p_their()] clothes!"), span_userlove("You suddenly burst out of your clothes!"))
+
+ // Play the ripped poster sound
+ playsound(target_user.loc, 'sound/items/poster_ripped.ogg', 50, 1)
diff --git a/modular_splurt/code/modules/mob/living/carbon/human/inventory.dm b/modular_splurt/code/modules/mob/living/carbon/human/inventory.dm
new file mode 100644
index 0000000000..ffc8a50b73
--- /dev/null
+++ b/modular_splurt/code/modules/mob/living/carbon/human/inventory.dm
@@ -0,0 +1,92 @@
+/mob/living/carbon/human/proc/smart_equip_suitstorage() // put held thing in suit storage or take the item from it
+ if(incapacitated())
+ return
+ var/obj/item/thing = get_active_held_item()
+ var/obj/item/equipped_suitstorage = get_item_by_slot(ITEM_SLOT_SUITSTORE)
+ if(!equipped_suitstorage) // We also let you equip another storage like this
+ if(!thing)
+ to_chat(src, "You haven't anything on your suit!")
+ return
+ if(equip_to_slot_if_possible(thing, ITEM_SLOT_SUITSTORE))
+ update_inv_hands()
+ return
+ if(!SEND_SIGNAL(equipped_suitstorage, COMSIG_CONTAINS_STORAGE)) // not a storage item
+ if(!thing)
+ equipped_suitstorage.attack_hand(src)
+ else
+ to_chat(src, "You can't fit anything in!")
+ return
+ if(thing) // put thing in suit storage
+ if(!SEND_SIGNAL(equipped_suitstorage, COMSIG_TRY_STORAGE_INSERT, thing, src))
+ to_chat(src, "You can't fit anything in!")
+ return
+ if(!equipped_suitstorage.contents.len) // nothing to take out
+ to_chat(src, "There's nothing in your belt to take out!")
+ return
+ var/obj/item/stored = equipped_suitstorage.contents[equipped_suitstorage.contents.len]
+ if(!stored || stored.on_found(src))
+ return
+ stored.attack_hand(src) // take out thing from suit storage
+ return
+
+/mob/living/carbon/human/proc/smart_equip_rpocket() // put held thing in right pocket or take the item from it
+ if(incapacitated())
+ return
+ var/obj/item/thing = get_active_held_item()
+ var/obj/item/equipped_rpocket = get_item_by_slot(ITEM_SLOT_RPOCKET)
+ if(!equipped_rpocket) // We also let you equip another storage like this
+ if(!thing)
+ to_chat(src, "You haven't anything on your suit!")
+ return
+ if(equip_to_slot_if_possible(thing, ITEM_SLOT_RPOCKET))
+ update_inv_hands()
+ return
+ if(!SEND_SIGNAL(equipped_rpocket, COMSIG_CONTAINS_STORAGE)) // not a storage item
+ if(!thing)
+ equipped_rpocket.attack_hand(src)
+ else
+ to_chat(src, "You can't fit anything in!")
+ return
+ if(thing) // put thing in suit storage
+ if(!SEND_SIGNAL(equipped_rpocket, COMSIG_TRY_STORAGE_INSERT, thing, src))
+ to_chat(src, "You can't fit anything in!")
+ return
+ if(!equipped_rpocket.contents.len) // nothing to take out
+ to_chat(src, "There's nothing in your belt to take out!")
+ return
+ var/obj/item/stored = equipped_rpocket.contents[equipped_rpocket.contents.len]
+ if(!stored || stored.on_found(src))
+ return
+ stored.attack_hand(src) // take out thing from right pocket
+ return
+
+/mob/living/carbon/human/proc/smart_equip_lpocket() // put held thing in left pocket or take the item from it
+ if(incapacitated())
+ return
+ var/obj/item/thing = get_active_held_item()
+ var/obj/item/equipped_lpocket = get_item_by_slot(ITEM_SLOT_LPOCKET)
+ if(!equipped_lpocket) // We also let you equip another storage like this
+ if(!thing)
+ to_chat(src, "You haven't anything on your suit!")
+ return
+ if(equip_to_slot_if_possible(thing, ITEM_SLOT_LPOCKET))
+ update_inv_hands()
+ return
+ if(!SEND_SIGNAL(equipped_lpocket, COMSIG_CONTAINS_STORAGE)) // not a storage item
+ if(!thing)
+ equipped_lpocket.attack_hand(src)
+ else
+ to_chat(src, "You can't fit anything in!")
+ return
+ if(thing) // put thing in
+ if(!SEND_SIGNAL(equipped_lpocket, COMSIG_TRY_STORAGE_INSERT, thing, src))
+ to_chat(src, "You can't fit anything in!")
+ return
+ if(!equipped_lpocket.contents.len) // nothing to take out
+ to_chat(src, "There's nothing in your belt to take out!")
+ return
+ var/obj/item/stored = equipped_lpocket.contents[equipped_lpocket.contents.len]
+ if(!stored || stored.on_found(src))
+ return
+ stored.attack_hand(src) // take out thing from left pocket
+ return
diff --git a/modular_splurt/code/modules/mob/living/carbon/human/simple_animal/hostile/deathclaw/deathclaw.dm b/modular_splurt/code/modules/mob/living/carbon/human/simple_animal/hostile/deathclaw/deathclaw.dm
index a4f1ff53d4..d2afb4f5af 100644
--- a/modular_splurt/code/modules/mob/living/carbon/human/simple_animal/hostile/deathclaw/deathclaw.dm
+++ b/modular_splurt/code/modules/mob/living/carbon/human/simple_animal/hostile/deathclaw/deathclaw.dm
@@ -53,13 +53,13 @@
if(!Proj)
return
if(prob(10))
- visible_message("\The [src] growls, enraged!")
+ visible_message(span_danger("\The [src] growls, enraged!"))
sleep(3)
Charge()
if(prob(85) || Proj.damage > 26) //prob(x) = chance for proj to actually do something, adjust depending on how OP you want deathclaws to be
return ..()
else
- visible_message("\The [Proj] bounces off \the [src]'s thick hide!")
+ visible_message(span_danger("\The [Proj] bounces off \the [src]'s thick hide!"))
return 0
/mob/living/simple_animal/hostile/deathclaw/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect)
@@ -90,7 +90,7 @@
if(!T || T == loc)
return
charging = TRUE
- visible_message("[src] charges!")
+ visible_message(span_danger("[src] charges!"))
DestroySurroundings()
walk(src, 0)
setDir(get_dir(src, T))
@@ -117,7 +117,7 @@
else if(isliving(A))
var/mob/living/L = A
- L.visible_message("[src] slams into [L]!", "[src] slams into you!")
+ L.visible_message(span_danger("[src] slams into [L]!"), span_userdanger("[src] slams into you!"))
L.apply_damage(melee_damage_lower/2, BRUTE)
playsound(get_turf(L), 'sound/effects/meteorimpact.ogg', 100, 1)
shake_camera(L, 4, 3)
diff --git a/modular_splurt/code/modules/mob/living/carbon/human/simple_animal/hostile/deathclaw/funclaw.dm b/modular_splurt/code/modules/mob/living/carbon/human/simple_animal/hostile/deathclaw/funclaw.dm
index 2ec84e7cd7..7c1738ae95 100644
--- a/modular_splurt/code/modules/mob/living/carbon/human/simple_animal/hostile/deathclaw/funclaw.dm
+++ b/modular_splurt/code/modules/mob/living/carbon/human/simple_animal/hostile/deathclaw/funclaw.dm
@@ -46,8 +46,8 @@
start_pulling(M, supress_message = TRUE)
log_combat(src, M, "grabbed")
- M.visible_message("[src] violently grabs [M]!", \
- "[src] violently grabs you!")
+ M.visible_message(span_warning("[src] violently grabs [M]!"), \
+ span_userdanger("[src] violently grabs you!"))
setGrabState(GRAB_NECK) //Instant neck grab
return
@@ -191,15 +191,15 @@
/mob/living/simple_animal/hostile/deathclaw/funclaw/proc/slap(mob/living/M)
playsound(loc, "modular_sand/sound/interactions/slap.ogg", 30, 1, -1)
- visible_message("\The [src] slaps \the [M] right on the ass!", \
- "\The [src] slaps \the [M] right on the ass!", null, COMBAT_MESSAGE_RANGE)
+ visible_message(span_danger("\The [src] slaps \the [M] right on the ass!"), \
+ span_userdanger("\The [src] slaps \the [M] right on the ass!"), null, COMBAT_MESSAGE_RANGE)
/mob/living/simple_animal/hostile/deathclaw/funclaw/proc/tearSlot(mob/living/M, slot)
var/obj/item/W = M.get_item_by_slot(slot)
if(W)
M.dropItemToGround(W)
playsound(loc, "sound/items/poster_ripped.ogg", 30, 1, -1)
- visible_message("\The [src] tears off \the [M]'s clothes!", \
- "\The [src] tears off \the [M]'s clothes!", null, COMBAT_MESSAGE_RANGE)
+ visible_message(span_danger("\The [src] tears off \the [M]'s clothes!"), \
+ span_userdanger("\The [src] tears off \the [M]'s clothes!"), null, COMBAT_MESSAGE_RANGE)
return TRUE
return FALSE
diff --git a/modular_splurt/code/modules/mob/living/carbon/human/species.dm b/modular_splurt/code/modules/mob/living/carbon/human/species.dm
index 3ffad4c2b4..5fec507149 100644
--- a/modular_splurt/code/modules/mob/living/carbon/human/species.dm
+++ b/modular_splurt/code/modules/mob/living/carbon/human/species.dm
@@ -1,7 +1,7 @@
/datum/species/althelp(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style)
if(user == target && istype(user))
if(HAS_TRAIT(user, TRAIT_FLOORED))
- to_chat(user, "You can't seem to force yourself up right now!")
+ to_chat(user, span_warning("You can't seem to force yourself up right now!"))
return
. = ..()
diff --git a/modular_splurt/code/modules/mob/living/carbon/human/species_types/arachnid.dm b/modular_splurt/code/modules/mob/living/carbon/human/species_types/arachnid.dm
index 3cc48b3236..e3553f13c8 100644
--- a/modular_splurt/code/modules/mob/living/carbon/human/species_types/arachnid.dm
+++ b/modular_splurt/code/modules/mob/living/carbon/human/species_types/arachnid.dm
@@ -13,23 +13,23 @@
if(H.stat == "DEAD")
return
if(web_ready == FALSE)
- to_chat(H, "You need to wait a while to regenerate web fluid.")
+ to_chat(H, span_warning("You need to wait a while to regenerate web fluid."))
return
var/turf/T = get_turf(H)
if(!T)
- to_chat(H, "There's no room to spin your web here!")
+ to_chat(H, span_warning("There's no room to spin your web here!"))
return
var/obj/structure/spider/stickyweb/W = locate() in T
var/obj/structure/arachnid/W2 = locate() in T
if(W || W2)
- to_chat(H, "There's already a web here!")
+ to_chat(H, span_warning("There's already a web here!"))
return
// Should have some minimum amount of food before trying to activate
var/nutrition_threshold = NUTRITION_LEVEL_FED
if (H.nutrition >= nutrition_threshold)
to_chat(H, "You begin spinning some web...")
if(!do_after(H, 10 SECONDS, 1, T))
- to_chat(H, "Your web spinning was interrupted!")
+ to_chat(H, span_warning("Your web spinning was interrupted!"))
return
H.adjust_nutrition(-spinner_rate)
addtimer(VARSET_CALLBACK(src, web_ready, TRUE), web_cooldown)
@@ -37,7 +37,7 @@
new /obj/structure/arachnid(T, owner)
else
- to_chat(H, "You're too hungry to spin web right now, eat something first!")
+ to_chat(H, span_warning("You're too hungry to spin web right now, eat something first!"))
return
/datum/action/innate/spin_cocoon/Activate()
@@ -45,17 +45,17 @@
if(H.stat == "DEAD")
return
if(web_ready == FALSE)
- to_chat(H, "You need to wait awhile to regenerate web fluid.")
+ to_chat(H, span_warning("You need to wait awhile to regenerate web fluid."))
return
var/nutrition_threshold = NUTRITION_LEVEL_FED
if (H.nutrition >= nutrition_threshold)
- to_chat(H, "You pull out a strand from your spinneret, ready to wrap a target. (Press ALT+CLICK on the target to start wrapping.)")
+ to_chat(H, span_warning("You pull out a strand from your spinneret, ready to wrap a target. (Press ALT+CLICK on the target to start wrapping.)"))
H.adjust_nutrition(spinner_rate * -0.5)
addtimer(VARSET_CALLBACK(src, web_ready, TRUE), web_cooldown)
RegisterSignal(H, list(COMSIG_MOB_ALTCLICKON), .proc/cocoonAtom)
return
else
- to_chat(H, "You're too hungry to spin web right now, eat something first!")
+ to_chat(H, span_warning("You're too hungry to spin web right now, eat something first!"))
return
/datum/action/innate/spin_cocoon/cocoonAtom(mob/living/carbon/human/H, atom/movable/A)
@@ -64,39 +64,39 @@
return COMSIG_MOB_CANCEL_CLICKON
else
if(web_ready == FALSE)
- to_chat(H, "You need to wait awhile to regenerate web fluid.")
+ to_chat(H, span_warning("You need to wait awhile to regenerate web fluid."))
return
if(!H.Adjacent(A)) //No.
return
if(!isliving(A) && A.anchored)
- to_chat(H, "[A] is bolted to the floor!")
+ to_chat(H, span_warning("[A] is bolted to the floor!"))
return
if(istype(A, /obj/structure/arachnid))
- to_chat(H, "No double wrapping.")
+ to_chat(H, span_warning("No double wrapping."))
return
if(istype(A, /obj/effect))
- to_chat(H, "You cannot wrap this.")
+ to_chat(H, span_warning("You cannot wrap this."))
return
if(isliving(A))
var/mob/living/L = A
if(L.key)
- to_chat(H, "You prepare to wrap [L] in a cocoon...")
+ to_chat(H, span_warning("You prepare to wrap [L] in a cocoon..."))
var/response = alert(L, "Do you wish to be wrapped in a cocoon?", "Cocooning", "No", "Yes")
if(response == "No")
- to_chat(H, "[L] resists your attempts to wrap [L.p_them()]!")
+ to_chat(H, span_warning("[L] resists your attempts to wrap [L.p_them()]!"))
return
- H.visible_message("[H] starts to wrap [A] into a cocoon!","You start to wrap [A] into a cocoon.")
+ H.visible_message(span_danger("[H] starts to wrap [A] into a cocoon!"),span_warning("You start to wrap [A] into a cocoon."))
if(!do_after(H, 10 SECONDS, 1, A))
- to_chat(H, "Your web spinning was interrupted!")
+ to_chat(H, span_warning("Your web spinning was interrupted!"))
return
H.adjust_nutrition(spinner_rate * -3)
var/obj/structure/arachnid/cocoon/C = new(A.loc)
if(isliving(A))
C.icon_state = pick("cocoon_large1","cocoon_large2","cocoon_large3")
A.forceMove(C)
- H.visible_message("[H] wraps [A] into a large cocoon!")
+ H.visible_message(span_danger("[H] wraps [A] into a large cocoon!"))
return
else
A.forceMove(C)
- H.visible_message("[H] wraps [A] into a cocoon!")
+ H.visible_message(span_danger("[H] wraps [A] into a cocoon!"))
return
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 9d1f04d453..53e887e98c 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
@@ -177,10 +177,10 @@
desc = "A rotting mass of twisted viscera."
organ_flags = ORGAN_EXTERNAL
- low_threshold_passed = "Something forgotten weakens within your chest."
- high_threshold_passed = "A chill of death stalks you."
- now_fixed = "It comforts you once more."
- high_threshold_cleared = "The ghastly cold crawls back."
+ low_threshold_passed = span_info("Something forgotten weakens within your chest.")
+ high_threshold_passed = span_warning("A chill of death stalks you.")
+ now_fixed = span_cult("It comforts you once more.")
+ high_threshold_cleared = span_info("The ghastly cold crawls back.")
beating = FALSE
var/reviving = FALSE
@@ -224,7 +224,7 @@
if(owner.health >= HEALTH_THRESHOLD_FULLCRIT)
owner.revive()
if(owner.stat == !DEAD) // incase any weird shit where they can't revive
- owner.visible_message("[owner] suddenly convulses back to life!")
+ owner.visible_message(span_danger("[owner] suddenly convulses back to life!"))
owner.update_stat()
owner.update_health_hud()
if(owner.blood_volume <= BLOOD_VOLUME_SURVIVE)
@@ -232,7 +232,7 @@
return
if(owner?.health <= HEALTH_THRESHOLD_DEAD && owner?.blood_volume >= BLOOD_VOLUME_SURVIVE)
reviving = TRUE
- to_chat(owner, "Your broken shell is stitching itself back together...")
+ to_chat(owner, span_alertwarning("Your broken shell is stitching itself back together..."))
/obj/item/organ/undead_infection
name = "festering ooze"
@@ -289,7 +289,7 @@
if (causes_damage && !iszombie(owner) && owner.stat != DEAD)
owner.adjustToxLoss(1)
if (prob(10))
- to_chat(owner, "You feel sick...")
+ to_chat(owner, span_danger("You feel sick..."))
if(timer_id)
return
if(owner.suiciding)
@@ -335,12 +335,12 @@
return
owner.grab_ghost()
- owner.visible_message("[owner] suddenly convulses, as [owner.p_they()][stand_up ? " stagger to [owner.p_their()] feet and" : ""] gain a ravenous hunger in [owner.p_their()] eyes!", "* But it refused")
+ owner.visible_message(span_danger("[owner] suddenly convulses, as [owner.p_they()][stand_up ? " stagger to [owner.p_their()] feet and" : ""] gain a ravenous hunger in [owner.p_their()] eyes!"), span_cultlarge("* But it refused"))
playsound(owner.loc, 'sound/hallucinations/far_noise.ogg', 50, 1)
owner.do_jitter_animation(living_transformation_time)
owner.Stun(living_transformation_time)
-// to_chat(owner, "You are now a zombie! You claw and bite, turning your fellow crewmembers into friends that help spread the plague.")
-// to_chat(owner, "You are a zombie. Please act like one. Letting the crew remove the tumor inside your brain is a dick move to whoever infected you. Please do not do it.")
+// to_chat(owner, span_alertalien("You are now a zombie! You claw and bite, turning your fellow crewmembers into friends that help spread the plague."))
+// to_chat(owner, span_alertwarning("You are a zombie. Please act like one. Letting the crew remove the tumor inside your brain is a dick move to whoever infected you. Please do not do it."))
/obj/item/organ/undead_infection/mammal
old_species = /datum/species/mammal
@@ -381,7 +381,7 @@
infection = new()
infection.Insert(H)
- to_chat(H, "mors tua, vita mea.")
+ to_chat(H, span_cult("mors tua, vita mea."))
H.playsound_local(H, 'sound/effects/singlebeat.ogg', 100, 0)
return
diff --git a/modular_splurt/code/modules/mob/living/carbon/human/update_icons.dm b/modular_splurt/code/modules/mob/living/carbon/human/update_icons.dm
new file mode 100644
index 0000000000..7274e95154
--- /dev/null
+++ b/modular_splurt/code/modules/mob/living/carbon/human/update_icons.dm
@@ -0,0 +1,13 @@
+// Function for updating back sprites
+/mob/living/carbon/human/update_inv_back()
+ . = ..()
+
+ // Check for hidden backpack trait
+ if(HAS_TRAIT(src, TRAIT_HIDE_BACKPACK))
+ // Define back overlays
+ var/mutable_appearance/back_overlay = overlays_standing[BACK_LAYER]
+
+ // Check for existing overlay
+ if(back_overlay)
+ // Remove overlays
+ remove_overlay(BACK_LAYER)
diff --git a/modular_splurt/code/modules/mob/living/living.dm b/modular_splurt/code/modules/mob/living/living.dm
index be2bb9949e..c2b04a0d84 100644
--- a/modular_splurt/code/modules/mob/living/living.dm
+++ b/modular_splurt/code/modules/mob/living/living.dm
@@ -6,7 +6,7 @@
// There's probably better way to do this but I am terrible at it --Nopeman
/mob/living/proc/change_gender()
if(stat != CONSCIOUS)
- to_chat(usr, "You cannot toggle your gender while unconcious!")
+ to_chat(usr, span_warning("You cannot toggle your gender while unconcious!"))
return
var/choice = tgui_alert(usr, "Select Gender.", "Gender", list("Both", "Male", "Female", "None", "Toggle Breasts"))
@@ -40,7 +40,7 @@
SetStun(0, ignore_canstun = TRUE)
if(client && admin)
- to_chat(src, "An admin has [!admin_frozen ? "un" : ""]frozen you.")
+ to_chat(src, span_userdanger("An admin has [!admin_frozen ? "un" : ""]frozen you."))
log_admin("[key_name(admin)] toggled admin-freeze on [key_name(src)].")
message_admins("[key_name_admin(admin)] toggled admin-freeze on [key_name_admin(src)].")
@@ -54,7 +54,7 @@
SetSleeping(0, ignore_canstun = TRUE)
if(client && admin)
- to_chat(src, "An admin has [!admin_sleeping ? "un": ""]slept you.")
+ to_chat(src, span_userdanger("An admin has [!admin_sleeping ? "un": ""]slept you."))
log_admin("[key_name(admin)] toggled admin-sleep on [key_name(src)].")
message_admins("[key_name_admin(admin)] toggled admin-sleep on [key_name_admin(src)].")
diff --git a/modular_splurt/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_splurt/code/modules/mob/living/silicon/robot/dogborg_equipment.dm
index 1e361c362a..ca571dbae6 100644
--- a/modular_splurt/code/modules/mob/living/silicon/robot/dogborg_equipment.dm
+++ b/modular_splurt/code/modules/mob/living/silicon/robot/dogborg_equipment.dm
@@ -43,7 +43,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
force = 12
attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced")
status = 1
- to_chat(user, "Your jaws are now [status ? "Combat" : "Pup'd"].")
+ to_chat(user, span_notice("Your jaws are now [status ? "Combat" : "Pup'd"]."))
else
name = "puppy jaws"
icon_state = "smalljaws"
@@ -52,7 +52,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed")
status = 0
if(R.emagged)
- to_chat(user, "Your jaws are now [status ? "Combat" : "Pup'd"].")
+ to_chat(user, span_notice("Your jaws are now [status ? "Combat" : "Pup'd"]."))
update_icon()
//Boop
@@ -69,7 +69,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
w_class = 1
/obj/item/analyzer/nose/attack_self(mob/user)
- user.visible_message("[user] sniffs around the air.", "You sniff the air for gas traces.")
+ user.visible_message("[user] sniffs around the air.", span_warning("You sniff the air for gas traces."))
var/turf/location = user.loc
if(!istype(location))
@@ -80,11 +80,11 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
var/pressure = environment.return_pressure()
var/total_moles = environment.total_moles()
- to_chat(user, "Results:")
+ to_chat(user, span_info("Results:"))
if(abs(pressure - ONE_ATMOSPHERE) < 10)
- to_chat(user, "Pressure: [round(pressure,0.1)] kPa")
+ to_chat(user, span_info("Pressure: [round(pressure,0.1)] kPa"))
else
- to_chat(user, "Pressure: [round(pressure,0.1)] kPa")
+ to_chat(user, span_alert("Pressure: [round(pressure,0.1)] kPa"))
if(total_moles)
var/list/env_gases = environment.get_gases()
@@ -95,39 +95,39 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
GAS_GARBAGE_COLLECT(environment.get_gases())
if(abs(n2_concentration - N2STANDARD) < 20)
- to_chat(user, "Nitrogen: [round(n2_concentration*100, 0.01)] %")
+ to_chat(user, span_info("Nitrogen: [round(n2_concentration*100, 0.01)] %"))
else
- to_chat(user, "Nitrogen: [round(n2_concentration*100, 0.01)] %")
+ to_chat(user, span_alert("Nitrogen: [round(n2_concentration*100, 0.01)] %"))
if(abs(o2_concentration - O2STANDARD) < 2)
- to_chat(user, "Oxygen: [round(o2_concentration*100, 0.01)] %")
+ to_chat(user, span_info("Oxygen: [round(o2_concentration*100, 0.01)] %"))
else
- to_chat(user, "Oxygen: [round(o2_concentration*100, 0.01)] %")
+ to_chat(user, span_alert("Oxygen: [round(o2_concentration*100, 0.01)] %"))
if(co2_concentration > 0.01)
- to_chat(user, "CO2: [round(co2_concentration*100, 0.01)] %")
+ to_chat(user, span_alert("CO2: [round(co2_concentration*100, 0.01)] %"))
else
- to_chat(user, "CO2: [round(co2_concentration*100, 0.01)] %")
+ to_chat(user, span_info("CO2: [round(co2_concentration*100, 0.01)] %"))
if(plasma_concentration > 0.005)
- to_chat(user, "Plasma: [round(plasma_concentration*100, 0.01)] %")
+ to_chat(user, span_alert("Plasma: [round(plasma_concentration*100, 0.01)] %"))
else
- to_chat(user, "Plasma: [round(plasma_concentration*100, 0.01)] %")
+ to_chat(user, span_info("Plasma: [round(plasma_concentration*100, 0.01)] %"))
for(var/id in env_gases)
if(id in GLOB.hardcoded_gases)
continue
var/gas_concentration = env_gases[id]/total_moles
- to_chat(user, "[GLOB.gas_data.names[id]]: [round(gas_concentration*100, 0.01)] %")
- to_chat(user, "Temperature: [round(environment.return_temperature()-T0C)] °C")
+ to_chat(user, span_alert("[GLOB.gas_data.names[id]]: [round(gas_concentration*100, 0.01)] %"))
+ to_chat(user, span_info("Temperature: [round(environment.return_temperature()-T0C)] °C"))
/obj/item/analyzer/nose/afterattack(atom/target, mob/user, proximity)
. = ..()
if(!proximity)
return
do_attack_animation(target, null, src)
- user.visible_message("[user] [pick(attack_verb)] \the [target.name] with their nose!")
+ user.visible_message(span_notice("[user] [pick(attack_verb)] \the [target.name] with their nose!"))
//Delivery
/obj/item/storage/bag/borgdelivery
@@ -170,7 +170,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
name = "energized tongue"
desc = "Your tongue is energized for dangerously maximum efficency."
icon_state = "syndietongue"
- to_chat(user, "Your tongue is now [status ? "Energized" : "Normal"].")
+ to_chat(user, span_notice("Your tongue is now [status ? "Energized" : "Normal"]."))
cleanspeed = 10 //(nerf'd)tator soap stat
else
status = 0
@@ -179,7 +179,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
icon_state = "synthtongue"
cleanspeed = initial(cleanspeed)
if(R.emagged)
- to_chat(user, "Your tongue is now [status ? "Energized" : "Normal"].")
+ to_chat(user, span_notice("Your tongue is now [status ? "Energized" : "Normal"]."))
update_icon()
/obj/item/soap/tongue/afterattack(atom/target, mob/user, proximity)
@@ -187,54 +187,54 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
if(!proximity || !check_allowed_items(target))
return
if(R.client && (target in R.client.screen))
- to_chat(R, "You need to take that [target.name] off before cleaning it!")
+ to_chat(R, span_warning("You need to take that [target.name] off before cleaning it!"))
else if(is_cleanable(target))
- R.visible_message("[R] begins to lick off \the [target.name].", "You begin to lick off \the [target.name]...")
+ R.visible_message("[R] begins to lick off \the [target.name].", span_warning("You begin to lick off \the [target.name]..."))
if(do_after(R, src.cleanspeed, target = target))
if(!in_range(src, target)) //Proximity is probably old news by now, do a new check.
return //If they moved away, you can't eat them.
- to_chat(R, "You finish licking off \the [target.name].")
+ to_chat(R, span_notice("You finish licking off \the [target.name]."))
qdel(target)
R.cell.give(50)
else if(isobj(target)) //hoo boy. danger zone man
if(istype(target,/obj/item/trash))
- R.visible_message("[R] nibbles away at \the [target.name].", "You begin to nibble away at \the [target.name]...")
+ R.visible_message("[R] nibbles away at \the [target.name].", span_warning("You begin to nibble away at \the [target.name]..."))
if(!do_after(R, src.cleanspeed, target = target))
return //If they moved away, you can't eat them.
- to_chat(R, "You finish off \the [target.name].")
+ to_chat(R, span_notice("You finish off \the [target.name]."))
qdel(target)
R.cell.give(250)
return
if(istype(target,/obj/item/stock_parts/cell))
- R.visible_message("[R] begins cramming \the [target.name] down its throat.", "You begin cramming \the [target.name] down your throat...")
+ R.visible_message("[R] begins cramming \the [target.name] down its throat.", span_warning("You begin cramming \the [target.name] down your throat..."))
if(!do_after(R, 50, target = target))
return //If they moved away, you can't eat them.
- to_chat(R, "You finish off \the [target.name].")
+ to_chat(R, span_notice("You finish off \the [target.name]."))
var/obj/item/stock_parts/cell/C = target
R.cell.charge = R.cell.charge + (C.charge / 3) //Instant full cell upgrades op idgaf
qdel(target)
return
var/obj/item/I = target //HAHA FUCK IT, NOT LIKE WE ALREADY HAVE A SHITTON OF WAYS TO REMOVE SHIT
if(!I.anchored && R.emagged)
- R.visible_message("[R] begins chewing up \the [target.name]. Looks like it's trying to loophole around its diet restriction!", "You begin chewing up \the [target.name]...")
+ R.visible_message("[R] begins chewing up \the [target.name]. Looks like it's trying to loophole around its diet restriction!", span_warning("You begin chewing up \the [target.name]..."))
if(!do_after(R, 100, target = I)) //Nerf dat time yo
return //If they moved away, you can't eat them.
- visible_message("[R] chews up \the [target.name] and cleans off the debris!")
- to_chat(R, "You finish off \the [target.name].")
+ visible_message(span_warning("[R] chews up \the [target.name] and cleans off the debris!"))
+ to_chat(R, span_notice("You finish off \the [target.name]."))
qdel(I)
R.cell.give(500)
return
- R.visible_message("[R] begins to lick \the [target.name] clean...", "You begin to lick \the [target.name] clean...")
+ R.visible_message("[R] begins to lick \the [target.name] clean...", span_notice("You begin to lick \the [target.name] clean..."))
else if(ishuman(target))
var/mob/living/L = target
if(status == 0 && check_zone(R.zone_selected) == "head")
- R.visible_message("\the [R] affectionally licks \the [L]'s face!", "You affectionally lick \the [L]'s face!")
+ R.visible_message(span_warning("\the [R] affectionally licks \the [L]'s face!"), span_notice("You affectionally lick \the [L]'s face!"))
playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
if(istype(L) && L.fire_stacks > 0)
L.adjust_fire_stacks(-10)
return
else if(status == 0)
- R.visible_message("\the [R] affectionally licks \the [L]!", "You affectionally lick \the [L]!")
+ R.visible_message(span_warning("\the [R] affectionally licks \the [L]!"), span_notice("You affectionally lick \the [L]!"))
playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
if(istype(L) && L.fire_stacks > 0)
L.adjust_fire_stacks(-10)
@@ -246,22 +246,22 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
L.Stun(4) // normal stunbaton is force 7 gimme a break good sir!
L.Knockdown(80)
L.apply_effect(EFFECT_STUTTER, 4)
- L.visible_message("[R] has shocked [L] with its tongue!", \
- "[R] has shocked you with its tongue!")
+ L.visible_message(span_danger("[R] has shocked [L] with its tongue!"), \
+ span_userdanger("[R] has shocked you with its tongue!"))
playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1)
R.cell.use(666)
log_combat(R, L, "tongue stunned")
else if(istype(target, /obj/structure/window))
- R.visible_message("[R] begins to lick \the [target.name] clean...", "You begin to lick \the [target.name] clean...")
+ R.visible_message("[R] begins to lick \the [target.name] clean...", span_notice("You begin to lick \the [target.name] clean..."))
if(do_after(user, src.cleanspeed, target = target))
- to_chat(user, "You clean \the [target.name].")
+ to_chat(user, span_notice("You clean \the [target.name]."))
target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
target.set_opacity(initial(target.opacity))
else
- R.visible_message("[R] begins to lick \the [target.name] clean...", "You begin to lick \the [target.name] clean...")
+ R.visible_message("[R] begins to lick \the [target.name] clean...", span_notice("You begin to lick \the [target.name] clean..."))
if(do_after(user, src.cleanspeed, target = target))
- to_chat(user, "You clean \the [target.name].")
+ to_chat(user, span_notice("You clean \the [target.name]."))
var/obj/effect/decal/cleanable/C = locate() in target
qdel(C)
target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
@@ -323,19 +323,19 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
spawn(R.pounce_cooldown_time)
R.pounce_cooldown = !R.pounce_cooldown
else if(R && R.pounce_cooldown)
- to_chat(R, "Your leg actuators are still recharging!")
+ to_chat(R, span_danger("Your leg actuators are still recharging!"))
/mob/living/silicon/robot/proc/leap_at(atom/A)
if(leaping || stat || buckled || lying)
return
if(!has_gravity(src) || !has_gravity(A))
- to_chat(src,"It is unsafe to leap without gravity!")
+ to_chat(src,span_danger("It is unsafe to leap without gravity!"))
//It's also extremely buggy visually, so it's balance+bugfix
return
if(cell.charge <= 750)
- to_chat(src,"Insufficent reserves for jump actuators!")
+ to_chat(src,span_danger("Insufficent reserves for jump actuators!"))
return
else
@@ -408,12 +408,12 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
//start processing the regents in the container - and slowly use em up to create power
toggle_process_regents = !toggle_process_regents
if (toggle_process_regents)
- to_chat(user, "You start churning the sexual fluids from your [inserted_item.name] into energy.")
+ to_chat(user, span_notice("You start churning the sexual fluids from your [inserted_item.name] into energy."))
borg_self = user
START_PROCESSING(SSobj, src)
else
STOP_PROCESSING(SSobj, src)
- to_chat(user, "You stop processing the fluids from the [inserted_item.name].")
+ to_chat(user, span_notice("You stop processing the fluids from the [inserted_item.name]."))
return
/obj/item/milking_machine/pleasuremaw/process()
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/living/simple_animal/friendly/mouse.dm b/modular_splurt/code/modules/mob/living/simple_animal/friendly/mouse.dm
index 509129a1ad..27129ba0db 100644
--- a/modular_splurt/code/modules/mob/living/simple_animal/friendly/mouse.dm
+++ b/modular_splurt/code/modules/mob/living/simple_animal/friendly/mouse.dm
@@ -21,7 +21,7 @@
/mob/living/simple_animal/mouse/boommouse/death(gibbed, toast)
var/turf/T = get_turf(src)
message_admins("A boommouse explosion was triggered at [ADMIN_VERBOSEJMP(T)].")
- visible_message("The boommouse violently explodes!")
+ visible_message(span_danger("The boommouse violently explodes!"))
atmos_spawn_air("plasma=15;TEMP=750")
explosion(src.loc, 0, 0, 2, 0, 1, 0, 2, 0, 0)
qdel(src)
@@ -32,7 +32,7 @@
if(istype(I, /obj/item/weldingtool))
var/obj/item/weldingtool/W = I
if(W.welding)
- user.visible_message("[user] burns the boommouse with [user.p_their()] [W.name]!", "That was stupid of you.")
+ user.visible_message(span_warning("[user] burns the boommouse with [user.p_their()] [W.name]!"), span_userdanger("That was stupid of you."))
var/message_admins = "[ADMIN_LOOKUPFLW(user)] triggered a boommouse explosion at [ADMIN_VERBOSEJMP(T)]."
GLOB.bombers += message_admins
message_admins(message_admins)
diff --git a/modular_splurt/code/modules/mob/living/simple_animal/hostile/megafauna/sand.dm b/modular_splurt/code/modules/mob/living/simple_animal/hostile/megafauna/sand.dm
new file mode 100644
index 0000000000..32c51c16a1
--- /dev/null
+++ b/modular_splurt/code/modules/mob/living/simple_animal/hostile/megafauna/sand.dm
@@ -0,0 +1,7 @@
+/mob/living/simple_animal/hostile/megafauna/sand
+ name = "Corrupted Mayhem"
+ desc = "The longer you look at this creature the more you feel your gut twist and you begin to feel sick..."
+ icon = 'modular_splurt/icons/mob/lavaland/mayhem_mega.dmi'
+ icon_state = "eva"
+ icon_living = "eva"
+ attack_sound = 'modular_splurt/sound/voice/ara-ara2.ogg'
diff --git a/modular_splurt/code/modules/mob/mob.dm b/modular_splurt/code/modules/mob/mob.dm
index c9a70933d3..2621165e97 100644
--- a/modular_splurt/code/modules/mob/mob.dm
+++ b/modular_splurt/code/modules/mob/mob.dm
@@ -40,4 +40,4 @@
. = examinate(A)
if (.)
return
- to_chat(A, "[src] seems to be checking you out.")
+ to_chat(A, span_notice("[src] seems to be checking you out."))
diff --git a/modular_splurt/code/modules/mob/mob_helpers.dm b/modular_splurt/code/modules/mob/mob_helpers.dm
index 111f9c35b7..f486b3a24c 100644
--- a/modular_splurt/code/modules/mob/mob_helpers.dm
+++ b/modular_splurt/code/modules/mob/mob_helpers.dm
@@ -16,7 +16,7 @@
// Check for Distant (no touch head!)
if(HAS_TRAIT(src, TRAIT_DISTANT))
- . += "You sense [t_He] might be disturbed by physical affection.\n"
+ . += span_warning("You sense [t_He] might be disturbed by physical affection.")
// Check for Heatpat Slut (pls touch head!)
if(HAS_TRAIT(src, TRAIT_HEADPAT_SLUT))
- . += "You sense [t_He] appreciates receiving physical affection more than normal.\n"
+ . += span_info("You sense [t_He] appreciates receiving physical affection more than normal.")
diff --git a/modular_splurt/code/modules/mob/say_vr.dm b/modular_splurt/code/modules/mob/say_vr.dm
index cd49dd200c..56be623e0f 100644
--- a/modular_splurt/code/modules/mob/say_vr.dm
+++ b/modular_splurt/code/modules/mob/say_vr.dm
@@ -7,7 +7,7 @@
/datum/emote/living/narrate/proc/check_invalid(mob/user, input)
if(stop_bad_mime.Find(input, 1, 1))
- to_chat(user, "Invalid emote.")
+ to_chat(user, span_danger("Invalid emote."))
return TRUE
return FALSE
@@ -28,7 +28,7 @@
return FALSE
user.log_message(message, LOG_EMOTE)
- message = "([user])[message]"
+ message = span_name("([user])[message]")
for(var/mob/M in GLOB.dead_mob_list)
if(!M.client || isnewplayer(M))
@@ -44,7 +44,7 @@
set name = "Narrate (Player)"
set desc = "Narrate an action or event! An alternative to emoting, for when your emote shouldn't start with your name!"
if(GLOB.say_disabled)
- to_chat(usr, "Speech is currently admin-disabled.")
+ to_chat(usr, span_danger("Speech is currently admin-disabled."))
return
message = trim(html_encode(message), MAX_MESSAGE_LEN)
emote("narrate", message=message)
diff --git a/modular_splurt/code/modules/mob/splurt_emotes.dm b/modular_splurt/code/modules/mob/splurt_emotes.dm
index e7984093f1..7dc25f9c5d 100644
--- a/modular_splurt/code/modules/mob/splurt_emotes.dm
+++ b/modular_splurt/code/modules/mob/splurt_emotes.dm
@@ -30,7 +30,7 @@
/datum/emote/living/fart/run_emote(mob/living/user, params, type_override, intentional)
if(TIMER_COOLDOWN_CHECK(user, COOLDOWN_EMOTE_FART))
- to_chat(user, "You try your hardest, but no shart comes out.")
+ to_chat(user, span_warning("You try your hardest, but no shart comes out."))
return
var/list/fart_emotes = list( //cope goonies
"lets out a girly little 'toot' from [user.p_their()] butt.",
@@ -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
@@ -911,3 +911,21 @@
key = "facehoof" // For horse enthusiasts
key_third_person = "facehoofs"
metacarpus_type = "hoof"
+
+/datum/emote/living/poyo
+ key = "poyo"
+ key_third_person = "poyos"
+ message = "%SAYS, \"Poyo!\""
+ emote_type = EMOTE_AUDIBLE
+
+/datum/emote/living/poyo/run_emote(mob/user, params, type_override, intentional)
+ var/datum/dna/D = user.has_dna()
+ var/say_mod = (D ? D.species.say_mod : "says")
+ message = replacetextEx(message, "%SAYS", say_mod)
+ . = ..()
+ if(!.)
+ return
+ if(user.nextsoundemote >= world.time)
+ return
+ user.nextsoundemote = world.time + 1 SECONDS
+ playsound(user, 'modular_splurt/sound/voice/barks/poyo.ogg', 50, 1, -1)
diff --git a/modular_splurt/code/modules/paperwork/pen.dm b/modular_splurt/code/modules/paperwork/pen.dm
index e9e4d7c435..9176c4503c 100644
--- a/modular_splurt/code/modules/paperwork/pen.dm
+++ b/modular_splurt/code/modules/paperwork/pen.dm
@@ -12,7 +12,7 @@
if(!iscarbon(T)) //not carbon.
return
if(!T.is_chest_exposed())
- to_chat(user, "You cannot write on someone with their clothes on.")
+ to_chat(user, span_warning("You cannot write on someone with their clothes on."))
return
var/obj/item/G = user:pick_receiving_organ(T, NONE, "Pick a genital to write on", "Cancel to write on the targeted body part")
@@ -27,20 +27,20 @@
return
if(!(user==T))
- src.visible_message("[user] begins to write on [T]'s [BP:name].")
+ src.visible_message(span_notice("[user] begins to write on [T]'s [BP:name]."))
else
- to_chat(user, "You begin to write on your [BP:name].")
+ to_chat(user, span_notice("You begin to write on your [BP:name]."))
if(do_mob(user, T, 4 SECONDS))
if((length(BP:writtentext))+(length(writting)) < 100) //100 character limmit to stop spamming.
BP:writtentext += html_encode(writting) //you can add to text, not remove it.
else
- to_chat(user, "There isnt enough space to write that on [T]'s [BP:name].")
+ to_chat(user, span_notice("There isnt enough space to write that on [T]'s [BP:name]."))
return
if(!(user==T))
- to_chat(user, "You write on [T]'s [BP:name].")
+ to_chat(user, span_notice("You write on [T]'s [BP:name]."))
else
- to_chat(user, "You write on your [BP:name].")
+ to_chat(user, span_notice("You write on your [BP:name]."))
else
. = ..()
diff --git a/modular_splurt/code/modules/projectiles/guns/ballistic/automatic.dm b/modular_splurt/code/modules/projectiles/guns/ballistic/automatic.dm
index 661f589d78..4ddd1b861e 100644
--- a/modular_splurt/code/modules/projectiles/guns/ballistic/automatic.dm
+++ b/modular_splurt/code/modules/projectiles/guns/ballistic/automatic.dm
@@ -35,11 +35,11 @@
/obj/item/gun/ballistic/automatic/m2a1/examine(mob/user)
. = ..()
if(cover_open && magazine)
- . += "It seems like you could use an empty hand to remove the magazine."
+ . += span_notice("It seems like you could use an empty hand to remove the magazine.")
/obj/item/gun/ballistic/automatic/m2a1/attack_self(mob/user)
cover_open = !cover_open
- to_chat(user, "You [cover_open ? "open" : "close"] [src]'s cover.")
+ to_chat(user, span_notice("You [cover_open ? "open" : "close"] [src]'s cover."))
if(cover_open)
playsound(user, 'sound/weapons/sawopen.ogg', 60, 1)
else
@@ -52,7 +52,7 @@
/obj/item/gun/ballistic/automatic/m2a1/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params)
if(cover_open)
- to_chat(user, "[src]'s cover is open! Close it before firing!")
+ to_chat(user, span_warning("[src]'s cover is open! Close it before firing!"))
else
. = ..()
update_icon()
@@ -70,12 +70,12 @@
user.put_in_hands(magazine)
magazine = null
update_icon()
- to_chat(user, "You remove the magazine from [src].")
+ to_chat(user, span_notice("You remove the magazine from [src]."))
playsound(user, 'sound/weapons/magout.ogg', 60, 1)
/obj/item/gun/ballistic/automatic/m2a1/attackby(obj/item/A, mob/user, params)
if(!cover_open && istype(A, mag_type))
- to_chat(user, "[src]'s cover is closed! You can't insert a new mag.")
+ to_chat(user, span_warning("[src]'s cover is closed! You can't insert a new mag."))
return
..()
@@ -108,7 +108,7 @@
if(auto_eject && magazine && magazine.stored_ammo && !magazine.stored_ammo.len && !chambered)
magazine.dropped()
user.visible_message(
- "[magazine] flies out and clatters on the floor!",
+ span_warning("[magazine] flies out and clatters on the floor!"),
to_chat("[magazine] flies out and clatters on the floor!")
)
if(auto_eject_sound)
diff --git a/modular_splurt/code/modules/projectiles/guns/ballistic/pistol.dm b/modular_splurt/code/modules/projectiles/guns/ballistic/pistol.dm
index 7f1b75d548..dbfdae1d65 100644
--- a/modular_splurt/code/modules/projectiles/guns/ballistic/pistol.dm
+++ b/modular_splurt/code/modules/projectiles/guns/ballistic/pistol.dm
@@ -21,16 +21,17 @@
flight_y_offset = 14
obj_flags = UNIQUE_RENAME
- unique_reskin = list("Default" = "enforcer_black",
- "M2611 Enforcer" = "cde",
- "M1911 Enforcer" = "m1911",
- "VP78 Enforcer" = "vp78",
- "USP Enforcer" = "usp-m"
- )
+ unique_reskin = list(
+ "Default" = list("icon_state" = "enforcer_black"),
+ "M2611 Enforcer" = list("icon_state" = "cde"),
+ "M1911 Enforcer" = list("icon_state" = "m1911"),
+ "VP78 Enforcer" = list("icon_state" = "vp78"),
+ "USP Enforcer" = list("icon_state" = "usp-m")
+ )
/obj/item/gun/ballistic/automatic/pistol/enforcer/update_icon_state()
if(current_skin)
- icon_state = "[unique_reskin[current_skin]][chambered ? "" : "-e"]"
+ icon_state = "[unique_reskin[current_skin]["icon_state"]][chambered ? "" : "-e"]"
else
icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
@@ -77,13 +78,14 @@
mag_type = /obj/item/ammo_box/magazine/m9
can_suppress = FALSE
obj_flags = UNIQUE_RENAME
- unique_reskin = list("Default" = "ninemil",
- "Maria" = "maria"
- )
+ unique_reskin = list(
+ "Default" = list("icon_state" = "ninemil"),
+ "Maria" = list("icon_state" = "maria")
+ )
/obj/item/gun/ballistic/automatic/pistol/m9mmpistol/update_icon_state()
if(current_skin)
- icon_state = "[unique_reskin[current_skin]][chambered ? "" : "-e"]"
+ icon_state = "[unique_reskin[current_skin]["icon_state"]][chambered ? "" : "-e"]"
else
icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
@@ -117,10 +119,11 @@
automatic_burst_overlay = FALSE
obj_flags = UNIQUE_RENAME
- unique_reskin = list("Default" = "deagle",
- "Desert Eagle Gold" = "deagleg",
- "Desert Eagle Camo" = "deaglecamo"
- )
+ unique_reskin = list(
+ "Default" = list("icon_state" = "deagle"),
+ "Desert Eagle Gold" = list("icon_state" = "deagleg"),
+ "Desert Eagle Camo" = list("icon_state" = "deaglecamo")
+ )
/obj/item/gun/ballistic/automatic/pistol/deagle2/update_overlays()
. = ..()
@@ -129,7 +132,7 @@
/obj/item/gun/ballistic/automatic/pistol/deagle2/update_icon_state()
if(current_skin)
- icon_state = "[unique_reskin[current_skin]][chambered ? "" : "-e"]"
+ icon_state = "[unique_reskin[current_skin]["icon_state"]][chambered ? "" : "-e"]"
else
icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
diff --git a/modular_splurt/code/modules/projectiles/guns/ballistic/revolver.dm b/modular_splurt/code/modules/projectiles/guns/ballistic/revolver.dm
index 26f5fa16fa..72e43741f7 100644
--- a/modular_splurt/code/modules/projectiles/guns/ballistic/revolver.dm
+++ b/modular_splurt/code/modules/projectiles/guns/ballistic/revolver.dm
@@ -6,12 +6,12 @@
/obj/item/gun/ballistic/revolver/detective/Initialize()
var/list/extra_reskin = list(
- "Fitz Special" = "detective_fitz",
- "Police Positive Special" = "detective_police",
- "Blued Steel" = "detective_blued",
- "Stainless Steel" = "detective_stainless",
- "Deckard Revolver" = "detective_bladerunner"
- )
+ "Fitz Special" = list("icon_state" = "detective_fitz"),
+ "Police Positive Special" = list("icon_state" = "detective_police"),
+ "Blued Steel" = list("icon_state" = "detective_blued"),
+ "Stainless Steel" = list("icon_state" = "detective_stainless"),
+ "Deckard Revolver" = list("icon_state" = "detective_bladerunner")
+ )
LAZYADD(unique_reskin, extra_reskin)
. = ..()
@@ -30,10 +30,11 @@
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev45l
obj_flags = UNIQUE_RENAME
- unique_reskin = list("Default" = "45revolver",
- "Cowboy" = "357colt",
- "Lucky" = "lucky" //Well do ya?
- )
+ unique_reskin = list(
+ "Default" = list("icon_state" = "45revolver"),
+ "Cowboy" = list("icon_state" = "357colt"),
+ "Lucky" = list("icon_state" = "lucky") //Well do ya?
+ )
/obj/item/gunpart/revolver22frame
name = ".22 revolver frame"
diff --git a/modular_splurt/code/modules/projectiles/guns/ballistic/shotgun.dm b/modular_splurt/code/modules/projectiles/guns/ballistic/shotgun.dm
index 7a80a74759..480051c15a 100644
--- a/modular_splurt/code/modules/projectiles/guns/ballistic/shotgun.dm
+++ b/modular_splurt/code/modules/projectiles/guns/ballistic/shotgun.dm
@@ -24,13 +24,14 @@
slot_flags = ITEM_SLOT_BELT
mag_type = /obj/item/ammo_box/magazine/internal/shot/dual
obj_flags = UNIQUE_RENAME
- unique_reskin = list("Default" = "sawnshotgun",
- "Dark Red Finish" = "sawnshotgun-d",
- "Ash" = "sawnshotgun-f",
- "Faded Grey" = "sawnshotgun-g",
- "Maple" = "sawnshotgun-l",
- "Rosewood" = "sawnshotgun-p"
- )
+ unique_reskin = list(
+ "Default" = list("icon_state" = "sawnshotgun"),
+ "Dark Red Finish" = list("icon_state" = "sawnshotgun-d"),
+ "Ash" = list("icon_state" = "sawnshotgun-f"),
+ "Faded Grey" = list("icon_state" = "sawnshotgun-g"),
+ "Maple" = list("icon_state" = "sawnshotgun-l"),
+ "Rosewood" = list("icon_state" = "sawnshotgun-p")
+ )
// Rifles
@@ -103,7 +104,7 @@
if(recentpump > world.time)
return
if(IS_STAMCRIT(user))//CIT CHANGE - makes pumping shotguns impossible in stamina softcrit
- to_chat(user, "You're too exhausted for that.")//CIT CHANGE - ditto
+ to_chat(user, span_warning("You're too exhausted for that."))//CIT CHANGE - ditto
return//CIT CHANGE - ditto
pump(user, TRUE)
if(HAS_TRAIT(user, TRAIT_FAST_PUMP))
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 7a2fbfa79b..0b7fc6f662 100644
--- a/modular_splurt/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
+++ b/modular_splurt/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
@@ -11,18 +11,25 @@
glass_desc = "You feel it's not named like that for no reason."
value = 6
+// Liquid Panty Dropper drink effect
/datum/reagent/consumable/ethanol/panty_dropper/on_mob_life(mob/living/carbon/C)
- var/mob/living/carbon/human/M = C
- var/anyclothes = FALSE
- var/items = M.get_contents()
- for(var/obj/item/W in items)
- if(W.body_parts_covered && ismob(W.loc))
- anyclothes = TRUE
- M.dropItemToGround(W, TRUE)
- playsound(M.loc, 'sound/items/poster_ripped.ogg', 50, 1)
- if(anyclothes)
- M.visible_message("[M] suddenly bursts out of [M.p_their()] clothes!")
- return ..()
+ // 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)
/datum/reagent/consumable/ethanol/lean
name = "Lean"
@@ -54,7 +61,7 @@
if(!M.undergoing_cardiac_arrest() && M.can_heartattack() && prob(1))
M.set_heartattack(TRUE)
if(M.stat == CONSCIOUS)
- M.visible_message("[M] clutches at [M.p_their()] chest as if [M.p_their()] heart stopped!") // too much lean :(
+ M.visible_message(span_userdanger("[M] clutches at [M.p_their()] chest as if [M.p_their()] heart stopped!")) // too much lean :(
..()
/datum/reagent/consumable/ethanol/cum_in_a_hot_tub
@@ -147,12 +154,49 @@
boozepwr = 50
color = "#0919be"
quality = DRINK_FANTASTIC
+ value = REAGENT_VALUE_AMAZING
taste_description = "fuzz, warmth and comfort"
glass_icon = 'modular_splurt/icons/obj/drinks.dmi'
glass_icon_state = "mothinchief"
glass_name = "Moth in Chief"
glass_desc = "A simple yet elegant drink, inspires confidence in even the most pessimistic of men. The mantle rests well upon your shoulders."
+ can_synth = FALSE;
+//This drink gives the combined benefits of Stimulants, Regenerative Jelly, and Commander and Chief, and a mood buff similar to Copium; at least to an extent.
+/datum/reagent/consumable/ethanol/commander_and_chief/on_mob_life(mob/living/carbon/M)
+ if(M.mind && HAS_TRAIT(M.mind, TRAIT_CAPTAIN_METABOLISM))
+ M.heal_bodypart_damage(2,2,2)
+ M.adjustBruteLoss(-5,0)
+ M.adjustOxyLoss(-5,0)
+ M.adjustFireLoss(-5,0)
+ M.adjustToxLoss(-5,0,TRUE) //Heals Toxin Lovers
+ M.radiation = max(M.radiation - 25, 0)
+ . = 1
+ else
+ //Commander and Chief Effects, no need to be captain to receive the effect
+ M.heal_bodypart_damage(2,2,2)
+ M.adjustBruteLoss(-3.5,0)
+ M.adjustOxyLoss(-3.5,0)
+ M.adjustFireLoss(-3.5,0)
+ M.adjustToxLoss(-3.5,0,TRUE) //Heals Toxin Lovers
+ M.radiation = max(M.radiation - 25, 0)
+
+ //Stimulant Effects
+ M.AdjustAllImmobility(-60, FALSE)
+ M.AdjustUnconscious(-60, FALSE)
+ M.adjustStaminaLoss(-20*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+ ..()
+ . = 1
+
+/datum/reagent/medicine/stimulants/on_mob_metabolize(mob/living/L)
+ ..()
+ L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/stimulants)
+ ADD_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
+
+/datum/reagent/medicine/stimulants/on_mob_end_metabolize(mob/living/L)
+ L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/stimulants)
+ REMOVE_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
+ ..()
// ~( Ported from TG )~
/datum/reagent/consumable/ethanol/curacao
@@ -162,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."
@@ -185,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."
@@ -197,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."
@@ -209,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."
@@ -221,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?"
@@ -233,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."
@@ -245,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."
@@ -257,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."
@@ -269,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."
@@ -281,8 +316,45 @@
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."
+/datum/reagent/consumable/ethanol/skullfucker_deluxe
+ name = "Skullfucker Deluxe"
+ description = "The Rosewater secret to becoming psychotically retarded. It has many warning labels."
+ boozepwr = 75
+ color = "#cb4d8b"
+ quality = DRINK_VERYGOOD
+ taste_description = "being violated by a tiny fish with crayons"
+ glass_icon = 'modular_splurt/icons/obj/drinks.dmi'
+ glass_icon_state = "skullfucker"
+ glass_name = "Skullfucker Deluxe"
+ glass_desc = "It has many warning labels, you might want to read them."
+ overdose_threshold = 25
+
+/datum/reagent/consumable/ethanol/skullfucker_deluxe/on_mob_life(mob/living/carbon/C)
+ . = ..()
+ //Do nothing if they haven't metabolized enough
+ if(!current_cycle >= 15)
+ return
+ //Make them giggle
+ if(prob(40))
+ C.emote("giggle")
+ //Make them jitter
+ if(prob(20))
+ C.jitteriness = max(C.jitteriness, 30)
+
+/datum/reagent/consumable/ethanol/skullfucker_deluxe/overdose_process(mob/living/M)
+ . = ..()
+ //Do nothing if they're already fwuffy OwO
+ var/obj/item/organ/tongue/T = M.getorganslot(ORGAN_SLOT_TONGUE)
+ if(istype(T, /obj/item/organ/tongue/fluffy))
+ return
+
+ //Replace their tongue with a fwuffy one
+ var/obj/item/organ/tongue/nT = new /obj/item/organ/tongue/fluffy
+ T.Remove()
+ nT.Insert(M)
+ T.moveToNullspace()//To valhalla
+ to_chat(M, span_big_warning("Your tongue feels... weally fwuffy!!"))
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 2eae220ba9..f483f1ec83 100644
--- a/modular_splurt/code/modules/reagents/chemistry/reagents/drug_reagents.dm
+++ b/modular_splurt/code/modules/reagents/chemistry/reagents/drug_reagents.dm
@@ -2,7 +2,7 @@
/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, "Your need for sex is overpowering!")
+ 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)
. = ..()
@@ -47,20 +47,20 @@
return
var/mob/living/carbon/human/H = M
if (prob(10))
- to_chat(H, "You feel like you can cope!")
+ to_chat(H, span_notice("You feel like you can cope!"))
H.adjust_disgust(-10)
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "copium", /datum/mood_event/cope, name)
. = 1
/datum/reagent/drug/copium/overdose_start(mob/living/M)
- to_chat(M, "What the fuck.")
+ to_chat(M, span_userdanger("What the fuck."))
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/overdose, name)
/datum/reagent/drug/copium/overdose_process(mob/living/M)
var/mob/living/carbon/human/H = M
if (prob(5))
H.adjust_disgust(20)
- to_chat(H, "I can't stand it anymore!")
+ to_chat(H, span_warning("I can't stand it anymore!"))
..()
/datum/reagent/drug/copium/reaction_obj(obj/O, volume)
diff --git a/modular_splurt/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_splurt/code/modules/reagents/chemistry/reagents/enlargement.dm
index e0bca79db0..863f93f7a8 100644
--- a/modular_splurt/code/modules/reagents/chemistry/reagents/enlargement.dm
+++ b/modular_splurt/code/modules/reagents/chemistry/reagents/enlargement.dm
@@ -68,7 +68,7 @@
B.color = SKINTONE2HEX(H.skin_tone)
B.size = 1
B.size_cached = B.size
- to_chat(M, "You feel your midsection get warmer... bubbling softly as it seems to start distending")
+ to_chat(M, span_warning("You feel your midsection get warmer... bubbling softly as it seems to start distending"))
M.reagents.remove_reagent(type, 5)
//If they have, increase size.
if(B.size_cached < BELLY_SIZE_MAX) //just in case
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 f8d456ef05..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))
@@ -57,7 +59,7 @@
return
// Character has a seisure
- M.visible_message("[M] starts having a seizure!", "You have a seizure!")
+ M.visible_message(span_danger("[M] starts having a seizure!"), span_userdanger("You have a seizure!"))
M.Unconscious(120)
to_chat(M, "[pick("The moon is close. It will be a long hunt tonight.", "Ludwig, why have you forsaken me?", \
"The night is near its end...", "Fear the 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/reagents/reagent_containers/bottle.dm b/modular_splurt/code/modules/reagents/reagent_containers/bottle.dm
index 957cdb52e0..0aab11e5ec 100644
--- a/modular_splurt/code/modules/reagents/reagent_containers/bottle.dm
+++ b/modular_splurt/code/modules/reagents/reagent_containers/bottle.dm
@@ -3,3 +3,11 @@
desc = "A small bottle of Mute Toxin. It stops the user from speaking."
icon_state = "bottle20"
list_reagents = list(/datum/reagent/toxin/mutetoxin = 30)
+
+/obj/item/reagent_containers/glass/bottle/plushmium
+ name = "\improper Plushmium Bottle"
+ desc = "A small bottle of Plushmium. Seems almost fluffy, if not for it being a liquid."
+ icon_state = "bottle20"
+ list_reagents = list(/datum/reagent/fermi/plushmium = 5)
+ possible_transfer_amounts = list(5)
+ volume = 5
diff --git a/modular_splurt/code/modules/reagents/reagent_containers/spray.dm b/modular_splurt/code/modules/reagents/reagent_containers/spray.dm
index df8895c430..01d0dbf5fc 100644
--- a/modular_splurt/code/modules/reagents/reagent_containers/spray.dm
+++ b/modular_splurt/code/modules/reagents/reagent_containers/spray.dm
@@ -1,2 +1,25 @@
/obj/item/reagent_containers/spray/chemsprayer/sleeper
list_reagents = list(/datum/reagent/toxin/sodium_thiopental = 100, /datum/reagent/consumable/condensedcapsaicin = 100, /datum/reagent/toxin/chloralhydrate = 100)
+
+/obj/item/reagent_containers/spray/plushmium
+ name = "\improper Love to Life spray bottle"
+ desc = "A toy spray bottle marked with the Donk Co. Stuffing For Spessmen branding. Must be applied directly to a plush, and only contains enough for one."
+ icon_state = "cleaner_drying"
+ // Single use item!
+ volume = 5
+ spray_range = 1
+ can_fill_from_container = FALSE
+ amount_per_transfer_from_this = 5
+ possible_transfer_amounts = list(5)
+ list_reagents = list(/datum/reagent/fermi/plushmium = 5)
+
+// Custom interaction to prevent wasting the item
+/obj/item/reagent_containers/spray/plushmium/afterattack(atom/target, mob/user)
+ // Check for plush toy
+ if(!istype(target, /obj/item/toy/plush))
+ // Alert user and return
+ to_chat(user, span_warning("You don't want to waste the solution on a non-plushie."))
+ return
+
+ // Return normally
+ . = ..()
diff --git a/modular_splurt/code/modules/research/designs/bluespace_designs.dm b/modular_splurt/code/modules/research/designs/bluespace_designs.dm
new file mode 100644
index 0000000000..e44e566a18
--- /dev/null
+++ b/modular_splurt/code/modules/research/designs/bluespace_designs.dm
@@ -0,0 +1,9 @@
+/datum/design/wallet_holding
+ name = "Wallet of Holding"
+ desc = "A wallet that opens into a tiny bluespace pocket."
+ id = "wallet_holding"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/gold = 300, /datum/material/diamond = 100, /datum/material/bluespace = 200)
+ build_path = /obj/item/storage/wallet/bluespace
+ category = list("Bluespace Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
diff --git a/modular_splurt/code/modules/research/designs/medical_designs.dm b/modular_splurt/code/modules/research/designs/medical_designs.dm
index 225e9a88cf..e5228d97ec 100644
--- a/modular_splurt/code/modules/research/designs/medical_designs.dm
+++ b/modular_splurt/code/modules/research/designs/medical_designs.dm
@@ -18,6 +18,16 @@
category = list("Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_MEDICAL
+/datum/design/implant_hide_backpack
+ name = "Storage Concealment Implant Case"
+ desc = "A glass case containing an implant"
+ id = "implant_hide_backpack"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/glass = 500)
+ build_path = /obj/item/implantcase/hide_backpack
+ category = list("Medical Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_MEDICAL
+
/datum/design/board/implantradio
name = "Radio Implant Case"
desc = "A glass case containing an implant"
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/bluespace_nodes.dm b/modular_splurt/code/modules/research/techweb/nodes/bluespace_nodes.dm
index f623c07465..e31c788453 100644
--- a/modular_splurt/code/modules/research/techweb/nodes/bluespace_nodes.dm
+++ b/modular_splurt/code/modules/research/techweb/nodes/bluespace_nodes.dm
@@ -6,3 +6,16 @@
prereq_ids = list("adv_power", "adv_bluespace","bluespace_power")
design_ids = list("bluespace_cell_reactor")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
+
+// Bags of holding node
+/datum/techweb_node/bluespace_holding/New()
+ // Define extra designs
+ var/list/added_designs = list(
+ "wallet_holding"
+ )
+
+ // Add designs to the list
+ LAZYADD(design_ids, added_designs)
+
+ // Return
+ . = ..()
diff --git a/modular_splurt/code/modules/research/techweb/nodes/medical_nodes.dm b/modular_splurt/code/modules/research/techweb/nodes/medical_nodes.dm
index 055abbde37..eeb846271f 100644
--- a/modular_splurt/code/modules/research/techweb/nodes/medical_nodes.dm
+++ b/modular_splurt/code/modules/research/techweb/nodes/medical_nodes.dm
@@ -1,7 +1,8 @@
/datum/techweb_node/subdermal_implants/New()
var/list/extra_designs = list(
"implant_gfluid",
- "implant_slave"
+ "implant_slave",
+ "implant_hide_backpack"
)
LAZYADD(design_ids, extra_designs)
. = ..()
diff --git a/modular_splurt/code/modules/ruins/objects_and_mobs/ash_walker_den.dm b/modular_splurt/code/modules/ruins/objects_and_mobs/ash_walker_den.dm
index 8db7b84798..4222037096 100644
--- a/modular_splurt/code/modules/ruins/objects_and_mobs/ash_walker_den.dm
+++ b/modular_splurt/code/modules/ruins/objects_and_mobs/ash_walker_den.dm
@@ -8,7 +8,7 @@
if(meat_counter < ASH_WALKER_SPAWN_THRESHOLD)
return
new spawned_obj(get_step(loc, pick(GLOB.alldirs)), ashies)
- visible_message("One of the eggs swells to an unnatural size and tumbles free. It's ready to hatch!")
+ visible_message(span_danger("One of the eggs swells to an unnatural size and tumbles free. It's ready to hatch!"))
meat_counter -= ASH_WALKER_SPAWN_THRESHOLD
/obj/structure/lavaland/ash_walker/western
diff --git a/modular_splurt/code/modules/smithing/anvil.dm b/modular_splurt/code/modules/smithing/anvil.dm
index 60d323f7b8..497fb9db51 100644
--- a/modular_splurt/code/modules/smithing/anvil.dm
+++ b/modular_splurt/code/modules/smithing/anvil.dm
@@ -11,4 +11,4 @@
if(isdwarf(user))
return ..()
else
- to_chat(user, "Ugh! This anvil smells of mushroom beer, and the design is weird. It is inconvenient to use it!")
+ to_chat(user, span_warning("Ugh! This anvil smells of mushroom beer, and the design is weird. It is inconvenient to use it!"))
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/toys/cards.dm b/modular_splurt/code/modules/toys/cards.dm
index 83796639e5..2a0d13b780 100644
--- a/modular_splurt/code/modules/toys/cards.dm
+++ b/modular_splurt/code/modules/toys/cards.dm
@@ -4,7 +4,7 @@
/obj/item/toy/cards/deck/examine()
. = ..()
- . += "Alt-click [src] to remove joker cards."
+ . += span_notice("Alt-click [src] to remove joker cards.")
/obj/item/toy/cards/deck/populate_deck()
. = ..()
@@ -16,9 +16,9 @@
return
var/jokermono = cards.Remove("Monochrome Joker")
var/jokercolor = cards.Remove("Colorful Joker")
- user.visible_message("[user] searches through the deck to remove joker cards.", "You search through the deck to remove joker cards.")
+ user.visible_message("[user] searches through the deck to remove joker cards.", span_notice("You search through the deck to remove joker cards."))
if(!(jokermono || jokercolor))
- to_chat(user, "There are no joker cards to remove!")
+ to_chat(user, span_warning("There are no joker cards to remove!"))
return
if(jokermono && jokercolor)
var/obj/item/toy/cards/singlecard/H1 = new/obj/item/toy/cards/singlecard(user.loc)
diff --git a/modular_splurt/code/modules/vehicles/mecha/mecha_construction_paths.dm b/modular_splurt/code/modules/vehicles/mecha/mecha_construction_paths.dm
index 62fda40862..4892cc940a 100644
--- a/modular_splurt/code/modules/vehicles/mecha/mecha_construction_paths.dm
+++ b/modular_splurt/code/modules/vehicles/mecha/mecha_construction_paths.dm
@@ -33,100 +33,100 @@
//TODO: better messages.
switch(index)
if(1)
- user.visible_message("[user] connects [parent] hydraulic systems.", "You connect [parent] hydraulic systems.")
+ user.visible_message(span_notice("[user] connects [parent] hydraulic systems."), span_notice("You connect [parent] hydraulic systems."))
if(2)
if(diff==FORWARD)
- user.visible_message("[user] activates [parent] hydraulic systems.", "You activate [parent] hydraulic systems.")
+ user.visible_message(span_notice("[user] activates [parent] hydraulic systems."), span_notice("You activate [parent] hydraulic systems."))
else
- user.visible_message("[user] disconnects [parent] hydraulic systems.", "You disconnect [parent] hydraulic systems.")
+ user.visible_message(span_notice("[user] disconnects [parent] hydraulic systems."), span_notice("You disconnect [parent] hydraulic systems."))
if(3)
if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to [parent].", "You add the wiring to [parent].")
+ user.visible_message(span_notice("[user] adds the wiring to [parent]."), span_notice("You add the wiring to [parent]."))
else
- user.visible_message("[user] deactivates [parent] hydraulic systems.", "You deactivate [parent] hydraulic systems.")
+ user.visible_message(span_notice("[user] deactivates [parent] hydraulic systems."), span_notice("You deactivate [parent] hydraulic systems."))
if(4)
if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of [parent].", "You adjust the wiring of [parent].")
+ user.visible_message(span_notice("[user] adjusts the wiring of [parent]."), span_notice("You adjust the wiring of [parent]."))
else
- user.visible_message("[user] removes the wiring from [parent].", "You remove the wiring from [parent].")
+ user.visible_message(span_notice("[user] removes the wiring from [parent]."), span_notice("You remove the wiring from [parent]."))
if(5)
if(diff==FORWARD)
- user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].")
+ user.visible_message(span_notice("[user] installs [I] into [parent]."), span_notice("You install [I] into [parent]."))
else
- user.visible_message("[user] disconnects the wiring of [parent].", "You disconnect the wiring of [parent].")
+ user.visible_message(span_notice("[user] disconnects the wiring of [parent]."), span_notice("You disconnect the wiring of [parent]."))
if(6)
if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ user.visible_message(span_notice("[user] secures the mainboard."), span_notice("You secure the mainboard."))
else
- user.visible_message("[user] removes the central control module from [parent].", "You remove the central computer mainboard from [parent].")
+ user.visible_message(span_notice("[user] removes the central control module from [parent]."), span_notice("You remove the central computer mainboard from [parent]."))
if(7)
if(diff==FORWARD)
- user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].")
+ user.visible_message(span_notice("[user] installs [I] into [parent]."), span_notice("You install [I] into [parent]."))
else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ user.visible_message(span_notice("[user] unfastens the mainboard."), span_notice("You unfasten the mainboard."))
if(8)
if(diff==FORWARD)
- user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
+ user.visible_message(span_notice("[user] secures the peripherals control module."), span_notice("You secure the peripherals control module."))
else
- user.visible_message("[user] removes the peripherals control module from [parent].", "You remove the peripherals control module from [parent].")
+ user.visible_message(span_notice("[user] removes the peripherals control module from [parent]."), span_notice("You remove the peripherals control module from [parent]."))
if(9)
if(diff==FORWARD)
- user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].")
+ user.visible_message(span_notice("[user] installs [I] into [parent]."), span_notice("You install [I] into [parent]."))
else
- user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ user.visible_message(span_notice("[user] unfastens the peripherals control module."), span_notice("You unfasten the peripherals control module."))
if(10)
if(diff==FORWARD)
- user.visible_message("[user] secures the scanner module.", "You secure the scanner module.")
+ user.visible_message(span_notice("[user] secures the scanner module."), span_notice("You secure the scanner module."))
else
- user.visible_message("[user] removes the scanner module from [parent].", "You remove the scanner module from [parent].")
+ user.visible_message(span_notice("[user] removes the scanner module from [parent]."), span_notice("You remove the scanner module from [parent]."))
if(11)
if(diff==FORWARD)
- user.visible_message("[user] installs [I] to [parent].", "You install [I] to [parent].")
+ user.visible_message(span_notice("[user] installs [I] to [parent]."), span_notice("You install [I] to [parent]."))
else
- user.visible_message("[user] unfastens the scanner module.", "You unfasten the scanner module.")
+ user.visible_message(span_notice("[user] unfastens the scanner module."), span_notice("You unfasten the scanner module."))
if(12)
if(diff==FORWARD)
- user.visible_message("[user] secures the capacitor.", "You secure the capacitor.")
+ user.visible_message(span_notice("[user] secures the capacitor."), span_notice("You secure the capacitor."))
else
- user.visible_message("[user] removes the capacitor from [parent].", "You remove the capacitor from [parent].")
+ user.visible_message(span_notice("[user] removes the capacitor from [parent]."), span_notice("You remove the capacitor from [parent]."))
if(13)
if(diff==FORWARD)
- user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].")
+ user.visible_message(span_notice("[user] installs [I] into [parent]."), span_notice("You install [I] into [parent]."))
else
- user.visible_message("[user] unfastens the capacitor.", "You unfasten the capacitor.")
+ user.visible_message(span_notice("[user] unfastens the capacitor."), span_notice("You unfasten the capacitor."))
if(14)
if(diff==FORWARD)
- user.visible_message("[user] secures the power cell.", "You secure the power cell.")
+ user.visible_message(span_notice("[user] secures the power cell."), span_notice("You secure the power cell."))
else
- user.visible_message("[user] pries the power cell from [parent].", "You pry the power cell from [parent].")
+ user.visible_message(span_notice("[user] pries the power cell from [parent]."), span_notice("You pry the power cell from [parent]."))
if(15)
if(diff==FORWARD)
- user.visible_message("[user] installs the internal armor layer to [parent].", "You install the internal armor layer to [parent].")
+ user.visible_message(span_notice("[user] installs the internal armor layer to [parent]."), span_notice("You install the internal armor layer to [parent]."))
else
- user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.")
+ user.visible_message(span_notice("[user] unfastens the power cell."), span_notice("You unfasten the power cell."))
if(16)
if(diff==FORWARD)
- user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.")
+ user.visible_message(span_notice("[user] secures the internal armor layer."), span_notice("You secure the internal armor layer."))
else
- user.visible_message("[user] pries internal armor layer from [parent].", "You pry internal armor layer from [parent].")
+ user.visible_message(span_notice("[user] pries internal armor layer from [parent]."), span_notice("You pry internal armor layer from [parent]."))
if(17)
if(diff==FORWARD)
- user.visible_message("[user] welds the internal armor layer to [parent].", "You weld the internal armor layer to [parent].")
+ user.visible_message(span_notice("[user] welds the internal armor layer to [parent]."), span_notice("You weld the internal armor layer to [parent]."))
else
- user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
+ user.visible_message(span_notice("[user] unfastens the internal armor layer."), span_notice("You unfasten the internal armor layer."))
if(18)
if(diff==FORWARD)
- user.visible_message("[user] installs the external armor layer to [parent].", "You install the external reinforced armor layer to [parent].")
+ user.visible_message(span_notice("[user] installs the external armor layer to [parent]."), span_notice("You install the external reinforced armor layer to [parent]."))
else
- user.visible_message("[user] cuts the internal armor layer from [parent].", "You cut the internal armor layer from [parent].")
+ user.visible_message(span_notice("[user] cuts the internal armor layer from [parent]."), span_notice("You cut the internal armor layer from [parent]."))
if(19)
if(diff==FORWARD)
- user.visible_message("[user] secures the external armor layer.", "You secure the external reinforced armor layer.")
+ user.visible_message(span_notice("[user] secures the external armor layer."), span_notice("You secure the external reinforced armor layer."))
else
- user.visible_message("[user] pries the external armor layer from [parent].", "You pry the external armor layer from [parent].")
+ user.visible_message(span_notice("[user] pries the external armor layer from [parent]."), span_notice("You pry the external armor layer from [parent]."))
if(20)
if(diff==FORWARD)
- user.visible_message("[user] welds the external armor layer to [parent].", "You weld the external armor layer to [parent].")
+ user.visible_message(span_notice("[user] welds the external armor layer to [parent]."), span_notice("You weld the external armor layer to [parent]."))
else
- user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.")
+ user.visible_message(span_notice("[user] unfastens the external armor layer."), span_notice("You unfasten the external armor layer."))
return TRUE
diff --git a/modular_splurt/code/modules/vending/kinkmate.dm b/modular_splurt/code/modules/vending/kinkmate.dm
index 69c67b15cc..1d2f3c5a94 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,
@@ -40,7 +41,8 @@
/obj/item/mesmetron = 3,
/obj/item/dildo/flared/huge = 3,
/obj/item/clothing/neck/petcollar/locked/holo = 2,
- /obj/item/storage/box/aphrodisiac_pump/plus = 3
+ /obj/item/storage/box/aphrodisiac_pump/plus = 3,
+ /obj/item/storage/box/implant_disrobe = 3
)
var/list/extra_premium = list(
/obj/item/clothing/mask/muzzle/ballgag = 3
diff --git a/modular_splurt/code/modules/vending/security.dm b/modular_splurt/code/modules/vending/security.dm
index 8d088e9adb..e6d78f958f 100644
--- a/modular_splurt/code/modules/vending/security.dm
+++ b/modular_splurt/code/modules/vending/security.dm
@@ -5,7 +5,10 @@
/obj/item/clothing/suit/armor/vest/peacekeeper = 5,
/obj/item/clothing/suit/armor/vest/metrocop = 2,
/obj/item/clothing/head/helmet/metrocop = 2,
- /obj/item/storage/bag/security = 5
+ /obj/item/storage/bag/security = 5,
+ /obj/item/clothing/head/helmet/blueshirt = 5,
+ /obj/item/clothing/under/rank/security/officer/blueshirt = 5,
+ /obj/item/clothing/suit/armor/vest/blueshirt = 5
)
var/list/extra_contraband = list(
/obj/item/storage/belt/slut = 5,
@@ -20,6 +23,13 @@
)
LAZYADD(products, extra_products)
LAZYADD(contraband, extra_contraband)
+
+ var/list/rem_premium = list(
+ /obj/item/clothing/head/helmet/blueshirt,
+ /obj/item/clothing/under/rank/security/officer/blueshirt,
+ /obj/item/clothing/suit/armor/vest/blueshirt
+ )
+ LAZYREMOVE(premium, rem_premium)
. = ..()
/obj/machinery/vending/wardrobe/sec_wardrobe/Initialize()
diff --git a/modular_splurt/icons/mob/64_mutant_bodyparts.dmi b/modular_splurt/icons/mob/64_mutant_bodyparts.dmi
new file mode 100644
index 0000000000..d90167d4ef
Binary files /dev/null and b/modular_splurt/icons/mob/64_mutant_bodyparts.dmi differ
diff --git a/modular_splurt/icons/mob/actions/misc_actions.dmi b/modular_splurt/icons/mob/actions/misc_actions.dmi
index 17b53a319a..dc254301e7 100644
Binary files a/modular_splurt/icons/mob/actions/misc_actions.dmi and b/modular_splurt/icons/mob/actions/misc_actions.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/64_back.dmi b/modular_splurt/icons/mob/clothing/64_back.dmi
new file mode 100644
index 0000000000..89f7890040
Binary files /dev/null and b/modular_splurt/icons/mob/clothing/64_back.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/lavaland/mayhem_mega.dmi b/modular_splurt/icons/mob/lavaland/mayhem_mega.dmi
new file mode 100644
index 0000000000..9179698a8e
Binary files /dev/null and b/modular_splurt/icons/mob/lavaland/mayhem_mega.dmi differ
diff --git a/modular_splurt/icons/mob/mam_markings.dmi b/modular_splurt/icons/mob/mam_markings.dmi
index 0ce5f4c425..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 3b4850f4ca..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_taur.dmi b/modular_splurt/icons/mob/mam_taur.dmi
index ba18519f8d..009148695d 100644
Binary files a/modular_splurt/icons/mob/mam_taur.dmi and b/modular_splurt/icons/mob/mam_taur.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/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/drinks.dmi b/modular_splurt/icons/obj/drinks.dmi
index 91ad1df14e..a1541fddb1 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/genitals/butt_onmob.dmi b/modular_splurt/icons/obj/genitals/butt_onmob.dmi
index 3dfc27316a..4cf7ee313e 100644
Binary files a/modular_splurt/icons/obj/genitals/butt_onmob.dmi and b/modular_splurt/icons/obj/genitals/butt_onmob.dmi differ
diff --git a/modular_splurt/icons/obj/items_and_weapons.dmi b/modular_splurt/icons/obj/items_and_weapons.dmi
index b0c383513b..0dd0e88c6a 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/icons/obj/plushes.dmi b/modular_splurt/icons/obj/plushes.dmi
index fce9b88804..a8ce5f21fd 100644
Binary files a/modular_splurt/icons/obj/plushes.dmi and b/modular_splurt/icons/obj/plushes.dmi differ
diff --git a/modular_splurt/icons/obj/storage.dmi b/modular_splurt/icons/obj/storage.dmi
index 1b8f40e8a0..6ff028b18c 100644
Binary files a/modular_splurt/icons/obj/storage.dmi and b/modular_splurt/icons/obj/storage.dmi differ
diff --git a/modular_splurt/icons/obj/structures/statue.dmi b/modular_splurt/icons/obj/structures/statue.dmi
index d933259adc..358c6c21ed 100644
Binary files a/modular_splurt/icons/obj/structures/statue.dmi and b/modular_splurt/icons/obj/structures/statue.dmi differ
diff --git a/modular_splurt/sound/misc/dog_toy.ogg b/modular_splurt/sound/misc/dog_toy.ogg
new file mode 100644
index 0000000000..de295dc148
Binary files /dev/null and b/modular_splurt/sound/misc/dog_toy.ogg differ
diff --git a/tgstation.dme b/tgstation.dme
index 1b2fad4126..2934a0f4e0 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"
@@ -240,6 +241,7 @@
#include "code\__SANDCODE\DEFINES\runechat_defines.dm"
#include "code\__SANDCODE\DEFINES\signals.dm"
#include "code\__SANDCODE\DEFINES\sizecode.dm"
+#include "code\__SANDCODE\DEFINES\spans.dm"
#include "code\__SANDCODE\DEFINES\status_effects.dm"
#include "code\__SANDCODE\DEFINES\strippable.dm"
#include "code\__SANDCODE\DEFINES\subsystems.dm"
@@ -728,6 +730,7 @@
#include "code\datums\elements\bed_tucking.dm"
#include "code\datums\elements\bsa_blocker.dm"
#include "code\datums\elements\cleaning.dm"
+#include "code\datums\elements\connect_loc.dm"
#include "code\datums\elements\decal.dm"
#include "code\datums\elements\dusts_on_catatonia.dm"
#include "code\datums\elements\dusts_on_leaving_area.dm"
@@ -740,6 +743,7 @@
#include "code\datums\elements\forced_gravity.dm"
#include "code\datums\elements\ghost_role_eligibility.dm"
#include "code\datums\elements\mob_holder.dm"
+#include "code\datums\elements\object_reskinning.dm"
#include "code\datums\elements\photosynthesis.dm"
#include "code\datums\elements\polychromic.dm"
#include "code\datums\elements\scavenging.dm"
@@ -2078,6 +2082,7 @@
#include "code\modules\clothing\glasses\engine_goggles.dm"
#include "code\modules\clothing\glasses\hud.dm"
#include "code\modules\clothing\glasses\phantomthief.dm"
+#include "code\modules\clothing\glasses\prescription_kit.dm"
#include "code\modules\clothing\gloves\_gloves.dm"
#include "code\modules\clothing\gloves\boxing.dm"
#include "code\modules\clothing\gloves\color.dm"
@@ -3367,6 +3372,7 @@
#include "code\modules\reagents\reagent_containers\spray.dm"
#include "code\modules\reagents\reagent_containers\syringes.dm"
#include "code\modules\recycling\conveyor2.dm"
+#include "code\modules\recycling\conveyor_sorter.dm"
#include "code\modules\recycling\sortingmachinery.dm"
#include "code\modules\recycling\disposal\bin.dm"
#include "code\modules\recycling\disposal\construction.dm"
@@ -3921,6 +3927,7 @@
#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"
@@ -3940,6 +3947,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"
@@ -3983,6 +3991,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"
@@ -4002,6 +4011,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"
@@ -4054,6 +4064,7 @@
#include "modular_sand\code\modules\arousal\arousal.dm"
#include "modular_sand\code\modules\arousal\creampie.dm"
#include "modular_sand\code\modules\arousal\genital_sprite_accessories.dm"
+#include "modular_sand\code\modules\arousal\genitals.dm"
#include "modular_sand\code\modules\arousal\organs\breasts.dm"
#include "modular_sand\code\modules\arousal\organs\womb.dm"
#include "modular_sand\code\modules\atmospherics\machinery\pipes\bluespace.dm"
@@ -4072,6 +4083,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"
@@ -4092,22 +4104,9 @@
#include "modular_sand\code\modules\clothing\spacesuits\chronosuit.dm"
#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\color.dm"
+#include "modular_sand\code\modules\clothing\under\_under.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\under\jobs\cargo.dm"
-#include "modular_sand\code\modules\clothing\under\jobs\civilian.dm"
-#include "modular_sand\code\modules\clothing\under\jobs\command.dm"
-#include "modular_sand\code\modules\clothing\under\jobs\curator.dm"
-#include "modular_sand\code\modules\clothing\under\jobs\engineering.dm"
-#include "modular_sand\code\modules\clothing\under\jobs\medical.dm"
-#include "modular_sand\code\modules\clothing\under\jobs\research.dm"
-#include "modular_sand\code\modules\clothing\under\jobs\security.dm"
-#include "modular_sand\code\modules\clothing\under\jobs\theater.dm"
#include "modular_sand\code\modules\clothing\underwear\_underwear.dm"
#include "modular_sand\code\modules\clothing\underwear\boxers.dm"
#include "modular_sand\code\modules\clothing\underwear\shirts.dm"
@@ -4150,13 +4149,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"
@@ -4204,6 +4205,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"
@@ -4309,6 +4311,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"
@@ -4332,12 +4335,14 @@
#include "modular_splurt\code\datums\traits\good.dm"
#include "modular_splurt\code\datums\traits\negative.dm"
#include "modular_splurt\code\datums\traits\neutral.dm"
+#include "modular_splurt\code\datums\traits\trait_actions.dm"
#include "modular_splurt\code\game\atoms.dm"
#include "modular_splurt\code\game\atoms_movable.dm"
#include "modular_splurt\code\game\data_huds.dm"
#include "modular_splurt\code\game\say.dm"
#include "modular_splurt\code\game\area\areas\centcom.dm"
#include "modular_splurt\code\game\area\areas\commons.dm"
+#include "modular_splurt\code\game\area\areas\holodeck.dm"
#include "modular_splurt\code\game\area\areas\layenia.dm"
#include "modular_splurt\code\game\area\areas\maintenance.dm"
#include "modular_splurt\code\game\area\areas\shuttles.dm"
@@ -4380,10 +4385,13 @@
#include "modular_splurt\code\game\objects\items\circuitboards\computer_circuitboards.dm"
#include "modular_splurt\code\game\objects\items\circuitboards\machine_circuitboards.dm"
#include "modular_splurt\code\game\objects\items\circuitboards\miner_circuitboards.dm"
+#include "modular_splurt\code\game\objects\items\devices\PDA\radio.dm"
#include "modular_splurt\code\game\objects\items\devices\radio\electropack.dm"
#include "modular_splurt\code\game\objects\items\devices\radio\headset.dm"
#include "modular_splurt\code\game\objects\items\implants\implant_aphropumps.dm"
+#include "modular_splurt\code\game\objects\items\implants\implant_disrobe.dm"
#include "modular_splurt\code\game\objects\items\implants\implant_gfluid.dm"
+#include "modular_splurt\code\game\objects\items\implants\implant_hide_backpack.dm"
#include "modular_splurt\code\game\objects\items\implants\implant_slave.dm"
#include "modular_splurt\code\game\objects\items\implants\implant_slaver.dm"
#include "modular_splurt\code\game\objects\items\implants\implantcase.dm"
@@ -4408,6 +4416,7 @@
#include "modular_splurt\code\game\objects\items\storage\boxes.dm"
#include "modular_splurt\code\game\objects\items\storage\firstaid.dm"
#include "modular_splurt\code\game\objects\items\storage\secure.dm"
+#include "modular_splurt\code\game\objects\items\storage\wallets.dm"
#include "modular_splurt\code\game\objects\items\weaponry\armyknife.dm"
#include "modular_splurt\code\game\objects\items\weaponry\melee.dm"
#include "modular_splurt\code\game\objects\structures\barricades.dm"
@@ -4494,6 +4503,7 @@
#include "modular_splurt\code\modules\atmospherics\machinery\components\unary_devices\vent_pump.dm"
#include "modular_splurt\code\modules\atmospherics\machinery\components\unary_devices\vent_scrubber.dm"
#include "modular_splurt\code\modules\atmospherics\machinery\other\miner.dm"
+#include "modular_splurt\code\modules\awaymissions\mission_code\academy.dm"
#include "modular_splurt\code\modules\cargo\supplypod.dm"
#include "modular_splurt\code\modules\cargo\blackmarket\clothing.dm"
#include "modular_splurt\code\modules\cargo\blackmarket\misc.dm"
@@ -4538,14 +4548,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"
@@ -4553,11 +4568,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"
@@ -4565,6 +4584,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"
@@ -4573,6 +4593,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"
@@ -4595,6 +4616,7 @@
#include "modular_splurt\code\modules\food_and_drinks\recipes\tablecraft\recipes_burger.dm"
#include "modular_splurt\code\modules\food_and_drinks\recipes\tablecraft\recipes_donut.dm"
#include "modular_splurt\code\modules\holiday\holidays.dm"
+#include "modular_splurt\code\modules\holodeck\holo_effect.dm"
#include "modular_splurt\code\modules\hydroponics\grown\towercap.dm"
#include "modular_splurt\code\modules\jobs\job_types\_job_alt_titles.dm"
#include "modular_splurt\code\modules\jobs\job_types\atmospheric_technician.dm"
@@ -4617,6 +4639,7 @@
#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\jobs\job_types\stowaway.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"
#include "modular_splurt\code\modules\mapping\mapping_helpers\baseturf.dm"
@@ -4656,8 +4679,10 @@
#include "modular_splurt\code\modules\mob\living\carbon\carbon.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"
#include "modular_splurt\code\modules\mob\living\carbon\human\physiology.dm"
#include "modular_splurt\code\modules\mob\living\carbon\human\species.dm"
+#include "modular_splurt\code\modules\mob\living\carbon\human\update_icons.dm"
#include "modular_splurt\code\modules\mob\living\carbon\human\simple_animal\hostile\deathclaw\deathclaw.dm"
#include "modular_splurt\code\modules\mob\living\carbon\human\simple_animal\hostile\deathclaw\funclaw.dm"
#include "modular_splurt\code\modules\mob\living\carbon\human\species_types\arachnid.dm"
@@ -4682,6 +4707,7 @@
#include "modular_splurt\code\modules\mob\living\simple_animal\hostile\dancer.dm"
#include "modular_splurt\code\modules\mob\living\simple_animal\hostile\megafauna\blood_drunk_miner.dm"
#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\power\cell.dm"
#include "modular_splurt\code\modules\power\reactor\fluffed.dm"
@@ -4715,6 +4741,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"
@@ -4723,6 +4750,7 @@
#include "modular_splurt\code\modules\research\designs\AI_module_designs.dm"
#include "modular_splurt\code\modules\research\designs\autoylathe_designs.dm"
#include "modular_splurt\code\modules\research\designs\biogenerator_designs.dm"
+#include "modular_splurt\code\modules\research\designs\bluespace_designs.dm"
#include "modular_splurt\code\modules\research\designs\limbgrower_designs.dm"
#include "modular_splurt\code\modules\research\designs\mecha_designs.dm"
#include "modular_splurt\code\modules\research\designs\mechfabricator_designs.dm"
@@ -4732,10 +4760,10 @@
#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/tgui/interfaces/MobInteraction.tsx b/tgui/packages/tgui/interfaces/MobInteraction.tsx
index a1db0d6efd..3aba47c5fc 100644
--- a/tgui/packages/tgui/interfaces/MobInteraction.tsx
+++ b/tgui/packages/tgui/interfaces/MobInteraction.tsx
@@ -36,6 +36,7 @@ type GenitalData = {
possible_choices: string[],
can_arouse: boolean,
arousal_state: boolean,
+ always_accessible: boolean,
}
type GenitalManagerInfo = {
@@ -283,12 +284,12 @@ const GenitalTab = (props, context) => {
Actions
diff --git a/tgui/packages/tgui/interfaces/SuitStorageUnit.js b/tgui/packages/tgui/interfaces/SuitStorageUnit.js
index c6f66a79d2..0ac3c61932 100644
--- a/tgui/packages/tgui/interfaces/SuitStorageUnit.js
+++ b/tgui/packages/tgui/interfaces/SuitStorageUnit.js
@@ -14,6 +14,7 @@ export const SuitStorageUnit = (props, context) => {
suit,
helmet,
mask,
+ shoes,
storage,
} = data;
return (
@@ -89,6 +90,15 @@ export const SuitStorageUnit = (props, context) => {
item: 'mask',
})} />
+
+ act('dispense', {
+ item: 'shoes',
+ })} />
+