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."
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 21551ea3b0..865929ed5a 100644
--- a/modular_splurt/code/game/objects/structures/statues.dm
+++ b/modular_splurt/code/game/objects/structures/statues.dm
@@ -36,7 +36,7 @@
petrified_mob = L
if(L.buckled)
L.buckled.unbuckle_mob(L,force=1)
- L.visible_message("[L]'s skin rapidly turns to stone!", "Your skin abruptly hardens as you turn to stone once more!")
+ 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
@@ -76,7 +76,7 @@
. = ..()
if (petrified_mob)
SEND_SIGNAL(petrified_mob, COMSIG_PARENT_EXAMINE, user, .)
- . -= "You examine [src] closer, but find nothing of interest..."
+ . -= span_notice("You examine [src] closer, but find nothing of interest...")
/obj/structure/statue/gargoyle/handle_atom_del(atom/A)
if(A == petrified_mob)
@@ -119,7 +119,7 @@
/obj/structure/statue/gargoyle/deconstruct(disassembled = TRUE)
deconstructed = TRUE
- visible_message("[src] shatters!")
+ visible_message(span_danger("[src] shatters!"))
qdel(src)
/obj/structure/statue/gargoyle/attackby(obj/item/W, mob/living/user, params)
@@ -137,7 +137,7 @@
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, "You are being sliced apart by [user]!")
+ 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]!"))
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 5b680707e0..610e12b74d 100644
--- a/modular_splurt/code/modules/antagonists/slaver/slaver.dm
+++ b/modular_splurt/code/modules/antagonists/slaver/slaver.dm
@@ -199,7 +199,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
@@ -224,9 +224,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
index b9fadc051e..b29a64d948 100644
--- a/modular_splurt/code/modules/awaymissions/mission_code/academy.dm
+++ b/modular_splurt/code/modules/awaymissions/mission_code/academy.dm
@@ -11,7 +11,7 @@
// If true; Reject them and abort
if (user in used_fingerprints)
// Send a message implying someone else should roll
- visible_message("[user] rolls the dice, but it doesn't respond to [user.p_them()] again.")
+ 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
diff --git a/modular_splurt/code/modules/cargo/packs/misc.dm b/modular_splurt/code/modules/cargo/packs/misc.dm
index f80de923b2..bf5eec556d 100644
--- a/modular_splurt/code/modules/cargo/packs/misc.dm
+++ b/modular_splurt/code/modules/cargo/packs/misc.dm
@@ -217,10 +217,10 @@
/datum/supply_pack/misc/plushmium
name = "Plushmium Crate"
- desc = "Contains a small sample of an experimental chemical known as Plushmium, and a plushie to use it on."
+ 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/reagent_containers/glass/bottle/plushmium,
+ /obj/item/storage/box/shipment_plushmium,
/obj/item/choice_beacon/box/plushie
)
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/clothing/lewd_clothing/eyes/hypnogoggles.dm b/modular_splurt/code/modules/clothing/lewd_clothing/eyes/hypnogoggles.dm
index 35f2b71b0b..58c5b5281f 100644
--- a/modular_splurt/code/modules/clothing/lewd_clothing/eyes/hypnogoggles.dm
+++ b/modular_splurt/code/modules/clothing/lewd_clothing/eyes/hypnogoggles.dm
@@ -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/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..8e89fd9f8e 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
..()
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..c0ebab45ee 100644
--- a/modular_splurt/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/modular_splurt/code/modules/clothing/spacesuits/hardsuit.dm
@@ -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/under/_under.dm b/modular_splurt/code/modules/clothing/under/_under.dm
index 5dedecd802..847ba40c3c 100644
--- a/modular_splurt/code/modules/clothing/under/_under.dm
+++ b/modular_splurt/code/modules/clothing/under/_under.dm
@@ -1,3 +1,8 @@
+/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/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/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/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/living/carbon/carbon.dm b/modular_splurt/code/modules/mob/living/carbon/carbon.dm
index a81da1e44b..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,8 +14,8 @@
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)
@@ -55,7 +55,7 @@
// When successfully disrobing a target
if(user_disrobed)
// Display a chat message
- target_user.visible_message("[target_user] suddenly bursts out of [target_user.p_their()] clothes!", "You suddenly burst out of your clothes!")
+ 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/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/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/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..e6af828c5f 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.",
@@ -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/shotgun.dm b/modular_splurt/code/modules/projectiles/guns/ballistic/shotgun.dm
index fe51069541..480051c15a 100644
--- a/modular_splurt/code/modules/projectiles/guns/ballistic/shotgun.dm
+++ b/modular_splurt/code/modules/projectiles/guns/ballistic/shotgun.dm
@@ -104,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 ca488e2741..a0e7dfbe58 100644
--- a/modular_splurt/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
+++ b/modular_splurt/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
@@ -49,7 +49,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
@@ -355,4 +355,4 @@
T.Remove()
nT.Insert(M)
T.moveToNullspace()//To valhalla
- to_chat(M, "Your tongue feels... weally fwuffy!!")
+ 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 1657f6f48b..e327fc1409 100644
--- a/modular_splurt/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/modular_splurt/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -59,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/bottle.dm b/modular_splurt/code/modules/reagents/reagent_containers/bottle.dm
index bf363ef31a..0aab11e5ec 100644
--- a/modular_splurt/code/modules/reagents/reagent_containers/bottle.dm
+++ b/modular_splurt/code/modules/reagents/reagent_containers/bottle.dm
@@ -8,4 +8,6 @@
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 = 30)
+ 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/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/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/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..c8a626b0c5 100644
--- a/modular_splurt/code/modules/vending/kinkmate.dm
+++ b/modular_splurt/code/modules/vending/kinkmate.dm
@@ -40,7 +40,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/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/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 69e728cc22..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/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 9fd1e9e362..0e0154c6d6 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -240,6 +240,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"
@@ -4058,6 +4059,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"
@@ -4096,6 +4098,7 @@
#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\_under.dm"
#include "modular_sand\code\modules\clothing\under\color.dm"
#include "modular_sand\code\modules\clothing\under\costumes.dm"
#include "modular_sand\code\modules\clothing\under\misc.dm"
@@ -4103,15 +4106,6 @@
#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"
@@ -4343,6 +4337,7 @@
#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"
@@ -4385,9 +4380,11 @@
#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"
@@ -4414,6 +4411,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"
@@ -4602,6 +4600,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"
@@ -4623,6 +4622,7 @@
#include "modular_splurt\code\modules\jobs\job_types\security_officer.dm"
#include "modular_splurt\code\modules\jobs\job_types\service.dm"
#include "modular_splurt\code\modules\jobs\job_types\station_engineer.dm"
+#include "modular_splurt\code\modules\keybindings\keybind\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"
@@ -4662,6 +4662,7 @@
#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"
@@ -4731,6 +4732,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"
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