[MIRROR] Removes more sleeps from init (#10445)

Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-03-16 11:24:07 -07:00
committed by GitHub
parent 8c225f2526
commit 8732f6f928
34 changed files with 174 additions and 165 deletions

View File

@@ -28,18 +28,18 @@
A.inflamed = TRUE A.inflamed = TRUE
if(prob(3)) if(prob(3))
to_chat(affected_mob, span_warning("You feel a stabbing pain in your abdomen!")) to_chat(affected_mob, span_warning("You feel a stabbing pain in your abdomen!"))
affected_mob.custom_emote(VISIBLE_MESSAGE, "winces painfully.") affected_mob.automatic_custom_emote(VISIBLE_MESSAGE, "winces painfully.", check_stat = TRUE)
affected_mob.Stun(rand(4, 6)) affected_mob.Stun(rand(4, 6))
affected_mob.adjustToxLoss(1) affected_mob.adjustToxLoss(1)
if(3) if(3)
if(prob(1)) if(prob(1))
to_chat(affected_mob, span_danger("Your abdomen is a world of pain!")) to_chat(affected_mob, span_danger("Your abdomen is a world of pain!"))
affected_mob.custom_emote(VISIBLE_MESSAGE, "winces painfully.") affected_mob.automatic_custom_emote(VISIBLE_MESSAGE, "winces painfully.", check_stat = TRUE)
affected_mob.Weaken(10) affected_mob.Weaken(10)
if(prob(1)) if(prob(1))
affected_mob.vomit(95) affected_mob.vomit(95)
if(prob(5)) if(prob(5))
to_chat(affected_mob, span_warning("You feel a stabbing pain in your abdomen!")) to_chat(affected_mob, span_warning("You feel a stabbing pain in your abdomen!"))
affected_mob.custom_emote(VISIBLE_MESSAGE, "winces painfully.") affected_mob.automatic_custom_emote(VISIBLE_MESSAGE, "winces painfully.", check_stat = TRUE)
affected_mob.Stun(rand(4, 6)) affected_mob.Stun(rand(4, 6))
affected_mob.adjustToxLoss(2) affected_mob.adjustToxLoss(2)

View File

@@ -146,7 +146,7 @@ var/list/overminds = list()
//Handle nonverbal languages here //Handle nonverbal languages here
for(var/datum/multilingual_say_piece/S in message_pieces) for(var/datum/multilingual_say_piece/S in message_pieces)
if(S.speaking.flags & NONVERBAL) if(S.speaking.flags & NONVERBAL)
custom_emote(1, "[pick(S.speaking.signlang_verb)].") custom_emote(VISIBLE_MESSAGE, "[pick(S.speaking.signlang_verb)].")
for(var/mob/M in listening) for(var/mob/M in listening)
spawn() spawn()

View File

@@ -0,0 +1,87 @@
/// This is the custom_emote that you'll want to use if you want the mob to be able to input their emote.
/mob/proc/custom_emote(var/m_type = VISIBLE_MESSAGE, var/message, var/range = world.view, var/check_stat = TRUE)
if((check_stat && (src && stat)) || (!use_me && usr == src))
to_chat(src, "You are unable to emote.")
return
var/input
if(!message)
input = sanitize(tgui_input_text(src,"Choose an emote to display."))
else
input = message
process_emote(m_type, message, input, range)
/// This is the custom_emote that you'll want to use if you're forcing something to custom emote with no input from the mob.
/// By default, we have a visible message, our range is world.view, and we do NOT check the stat.
/mob/proc/automatic_custom_emote(var/m_type = VISIBLE_MESSAGE, var/message, var/range = world.view, var/check_stat = FALSE)
if(check_stat && (src && stat))
return
var/input = message
process_emote(m_type, message, input, range)
//The actual meat and potatoes of the emote processing.
/mob/proc/process_emote(var/m_type = VISIBLE_MESSAGE, var/message, var/input, var/range = world.view)
var/list/formatted
var/runemessage
if(input)
formatted = format_emote(src, message)
if(!islist(formatted))
return
message = formatted["pretext"] + formatted["nametext"] + formatted["subtext"]
runemessage = formatted["subtext"]
// This is just personal preference (but I'm objectively right) that custom emotes shouldn't have periods at the end in runechat
runemessage = replacetext(runemessage,".","",length(runemessage),length(runemessage)+1)
else
return
if(input)
log_emote(message,src) //Log before we add junk
if(client)
message = span_emote(span_bold("[src]") + " [input]")
else
message = span_npc_emote(span_bold("[src]") + " [input]")
else
return
if(message)
message = encode_html_emphasis(message)
/* CHOMPRemove - Not needed if you set your defaults right
var/ourfreq = null
if(isliving(src))
var/mob/living/L = src
if(L.voice_freq > 0 )
ourfreq = L.voice_freq
*/
// Hearing gasp and such every five seconds is not good emotes were not global for a reason.
// Maybe some people are okay with that.
var/turf/T = get_turf(src)
if(!T) return
if(client)
playsound(T, pick(emote_sound), 25, TRUE, falloff = 1 , is_global = TRUE, frequency = voice_freq, ignore_walls = FALSE, preference = /datum/preference/toggle/emote_sounds)
var/list/in_range = get_mobs_and_objs_in_view_fast(T,range,2,remote_ghosts = client ? TRUE : FALSE)
var/list/m_viewers = in_range["mobs"]
var/list/o_viewers = in_range["objs"]
for(var/mob/M as anything in m_viewers)
if(M)
if(isobserver(M))
message = span_emote(span_bold("[src]") + " ([ghost_follow_link(src, M)]) [input]")
if(src.client && M && !(get_z(src) == get_z(M)))
message = span_multizsay("[message]")
// If you are in the same tile, right next to, or being held by a person doing an emote, you should be able to see it while blind
if(m_type != AUDIBLE_MESSAGE && (src.Adjacent(M) || (istype(src.loc, /obj/item/holder) && src.loc.loc == M)))
M.show_message(message)
else
M.show_message(message, m_type)
M.create_chat_message(src, "[runemessage]", FALSE, list("emote"), (m_type == AUDIBLE_MESSAGE))
for(var/obj/O as anything in o_viewers)
if(O)
O.see_emote(src, message, m_type)

View File

@@ -161,85 +161,6 @@
nametext = span_bold("[emoter]") nametext = span_bold("[emoter]")
return list("pretext" = pretext, "nametext" = nametext, "subtext" = subtext) return list("pretext" = pretext, "nametext" = nametext, "subtext" = subtext)
/mob/proc/custom_emote(var/m_type = VISIBLE_MESSAGE, var/message, var/range = world.view)
if((usr && stat) || (!use_me && usr == src))
to_chat(src, "You are unable to emote.")
return
var/input
if(!message)
input = sanitize(tgui_input_text(src,"Choose an emote to display."))
else
input = message
var/list/formatted
var/runemessage
if(input)
formatted = format_emote(src, message)
if(!islist(formatted))
return
message = formatted["pretext"] + formatted["nametext"] + formatted["subtext"]
runemessage = formatted["subtext"]
// This is just personal preference (but I'm objectively right) that custom emotes shouldn't have periods at the end in runechat
runemessage = replacetext(runemessage,".","",length(runemessage),length(runemessage)+1)
else
return
if(input)
log_emote(message,src) //Log before we add junk
if(usr && usr.client)
message = span_emote(span_bold("[src]") + " [input]")
else
message = span_npc_emote(span_bold("[src]") + " [input]")
else
return
if(message)
message = encode_html_emphasis(message)
/* CHOMPRemove - Not needed if you set your defaults right
var/ourfreq = null
if(isliving(src))
var/mob/living/L = src
if(L.voice_freq > 0 )
ourfreq = L.voice_freq
*/
// Hearing gasp and such every five seconds is not good emotes were not global for a reason.
// Maybe some people are okay with that.
var/turf/T = get_turf(src)
if(!T) return
if(client)
playsound(T, pick(voice_sounds_list), 75, TRUE, falloff = 1 , is_global = TRUE, frequency = voice_freq, ignore_walls = TRUE, preference = /datum/preference/toggle/emote_sounds) //CHOMPEdit - use say prefs instead //ChompEDIT - also ignore walls
var/list/in_range = get_mobs_and_objs_in_view_fast(T,range,2,remote_ghosts = client ? TRUE : FALSE)
var/list/m_viewers = in_range["mobs"]
var/list/o_viewers = in_range["objs"]
for(var/mob/M as anything in m_viewers)
spawn(0) // It's possible that it could be deleted in the meantime, or that it runtimes.
if(M)
if(isobserver(M))
message = span_emote(span_bold("[src]") + " ([ghost_follow_link(src, M)]) [input]")
if(usr && usr.client && M && !(get_z(usr) == get_z(M)))
message = span_multizsay("[message]")
// If you are in the same tile, right next to, or being held by a person doing an emote, you should be able to see it while blind
if(m_type != AUDIBLE_MESSAGE && (src.Adjacent(M) || (istype(src.loc, /obj/item/holder) && src.loc.loc == M)))
M.show_message(message)
else
M.show_message(message, m_type)
M.create_chat_message(src, "[runemessage]", FALSE, list("emote"), (m_type == AUDIBLE_MESSAGE))
for(var/obj/O as anything in o_viewers)
spawn(0)
if(O)
O.see_emote(src, message, m_type)
// Specific mob type exceptions below. // Specific mob type exceptions below.
/mob/living/silicon/ai/emote(var/act, var/type, var/message) /mob/living/silicon/ai/emote(var/act, var/type, var/message)
var/obj/machinery/hologram/holopad/T = src.holo var/obj/machinery/hologram/holopad/T = src.holo

View File

@@ -475,7 +475,7 @@
reagents.trans_to_mob(user, bitesize, CHEM_INGEST) reagents.trans_to_mob(user, bitesize, CHEM_INGEST)
spawn(5) spawn(5)
if(!src && !user.client) if(!src && !user.client)
user.custom_emote(1,"[pick("burps", "cries for more", "burps twice", "looks at the area where the food was")]") user.automatic_custom_emote(VISIBLE_MESSAGE,"[pick("burps", "cries for more", "burps twice", "looks at the area where the food was")]", check_stat = TRUE)
qdel(src) qdel(src)
On_Consume(user) On_Consume(user)

View File

@@ -36,7 +36,7 @@
/datum/genetics/side_effect/genetic_burn/start(mob/living/carbon/human/H) /datum/genetics/side_effect/genetic_burn/start(mob/living/carbon/human/H)
..() ..()
H.custom_emote(VISIBLE_MESSAGE, "starts turning very red..") H.automatic_custom_emote(VISIBLE_MESSAGE, "starts turning very red..", check_stat = TRUE)
/datum/genetics/side_effect/genetic_burn/finish(datum/weakref/WR) /datum/genetics/side_effect/genetic_burn/finish(datum/weakref/WR)
if(..()) return if(..()) return
@@ -52,7 +52,7 @@
/datum/genetics/side_effect/bone_snap/start(mob/living/carbon/human/H) /datum/genetics/side_effect/bone_snap/start(mob/living/carbon/human/H)
..() ..()
H.custom_emote(VISIBLE_MESSAGE, "'s limbs start shivering uncontrollably.") H.automatic_custom_emote(VISIBLE_MESSAGE, "'s limbs start shivering uncontrollably.", check_stat = TRUE)
/datum/genetics/side_effect/bone_snap/finish(datum/weakref/WR) /datum/genetics/side_effect/bone_snap/finish(datum/weakref/WR)
if(..()) return if(..()) return
@@ -70,7 +70,7 @@
/datum/genetics/side_effect/confuse/start(mob/living/carbon/human/H) /datum/genetics/side_effect/confuse/start(mob/living/carbon/human/H)
..() ..()
var/datum/gender/T = gender_datums[H.get_visible_gender()] var/datum/gender/T = gender_datums[H.get_visible_gender()]
H.custom_emote(VISIBLE_MESSAGE, "has drool running down from [T.his] mouth.") H.automatic_custom_emote(VISIBLE_MESSAGE, "has drool running down from [T.his] mouth.", check_stat = TRUE)
/datum/genetics/side_effect/confuse/finish(datum/weakref/WR) /datum/genetics/side_effect/confuse/finish(datum/weakref/WR)
if(..()) return if(..()) return

View File

@@ -30,7 +30,7 @@
/mob/living/bot/cleanbot/handleIdle() /mob/living/bot/cleanbot/handleIdle()
if(!wet_floors && !spray_blood && vocal && prob(2)) if(!wet_floors && !spray_blood && vocal && prob(2))
custom_emote(2, "makes an excited booping sound!") automatic_custom_emote(AUDIBLE_MESSAGE, "makes an excited booping sound!")
playsound(src, 'sound/machines/synth_yes.ogg', 50, 0) playsound(src, 'sound/machines/synth_yes.ogg', 50, 0)
if(wet_floors && prob(5)) // Make a mess if(wet_floors && prob(5)) // Make a mess
@@ -119,7 +119,7 @@
if(istype(D, /obj/effect/decal/cleanable)) if(istype(D, /obj/effect/decal/cleanable))
cleantime = istype(D, /obj/effect/decal/cleanable/dirt) ? 10 : 50 cleantime = istype(D, /obj/effect/decal/cleanable/dirt) ? 10 : 50
if(prob(20)) if(prob(20))
custom_emote(2, "begins to clean up \the [D]") automatic_custom_emote(AUDIBLE_MESSAGE, "begins to clean up \the [D]")
if(do_after(src, cleantime * cTimeMult)) if(do_after(src, cleantime * cTimeMult))
if(istype(loc, /turf/simulated)) if(istype(loc, /turf/simulated))
var/turf/simulated/f = loc var/turf/simulated/f = loc
@@ -138,7 +138,7 @@
cleantime += 50 cleantime += 50
if(cleantime != 0) if(cleantime != 0)
if(prob(20)) if(prob(20))
custom_emote(2, "begins to clean up \the [loc]") automatic_custom_emote(AUDIBLE_MESSAGE, "begins to clean up \the [loc]")
if(do_after(src, cleantime * cTimeMult)) if(do_after(src, cleantime * cTimeMult))
if(blood) if(blood)
clean_blood() clean_blood()

View File

@@ -27,7 +27,7 @@
/mob/living/bot/cleanbot/edCLN/handleIdle() /mob/living/bot/cleanbot/edCLN/handleIdle()
if(vocal && prob(10)) if(vocal && prob(10))
custom_emote(2, "makes a less than thrilled beeping sound.") automatic_custom_emote(AUDIBLE_MESSAGE, "makes a less than thrilled beeping sound.")
playsound(src, 'sound/machines/synth_yes.ogg', 50, 0) playsound(src, 'sound/machines/synth_yes.ogg', 50, 0)
if(red_switch && !blue_switch && !green_switch && prob(10) || src.emagged) if(red_switch && !blue_switch && !green_switch && prob(10) || src.emagged)

View File

@@ -113,7 +113,7 @@
addTiles(1) addTiles(1)
if(vocal && prob(1)) if(vocal && prob(1))
custom_emote(2, "makes an excited beeping sound!") automatic_custom_emote(AUDIBLE_MESSAGE, "makes an excited beeping sound!")
playsound(src, 'sound/machines/twobeep.ogg', 50, 0) playsound(src, 'sound/machines/twobeep.ogg', 50, 0)
/mob/living/bot/floorbot/handleAdjacentTarget() /mob/living/bot/floorbot/handleAdjacentTarget()

View File

@@ -123,7 +123,7 @@
var/message = pick(message_options) var/message = pick(message_options)
say(message) say(message)
playsound(src, message_options[message], 50, 0) playsound(src, message_options[message], 50, 0)
custom_emote(1, "points at [H.name].") automatic_custom_emote(VISIBLE_MESSAGE, "points at [H.name].")
last_newpatient_speak = world.time last_newpatient_speak = world.time
break break

View File

@@ -188,13 +188,13 @@
update_icons() update_icons()
/mob/living/bot/mulebot/handleFrustrated(has_target) /mob/living/bot/mulebot/handleFrustrated(has_target)
custom_emote(2, "makes a sighing buzz.") automatic_custom_emote(AUDIBLE_MESSAGE, "makes a sighing buzz.")
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
..() ..()
/mob/living/bot/mulebot/handleAdjacentTarget() /mob/living/bot/mulebot/handleAdjacentTarget()
if(target == src.loc) if(target == src.loc)
custom_emote(2, "makes a chiming sound.") automatic_custom_emote(AUDIBLE_MESSAGE, "makes a chiming sound.")
playsound(src, 'sound/machines/chime.ogg', 50, 0) playsound(src, 'sound/machines/chime.ogg', 50, 0)
UnarmedAttack(target) UnarmedAttack(target)
resetTarget() resetTarget()
@@ -283,7 +283,7 @@
return return
if(crates_only && !istype(C,/obj/structure/closet/crate)) if(crates_only && !istype(C,/obj/structure/closet/crate))
custom_emote(2, "makes a sighing buzz.") automatic_custom_emote(AUDIBLE_MESSAGE, "makes a sighing buzz.")
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
return return

View File

@@ -251,7 +251,7 @@
target = M target = M
awaiting_surrender = 0 awaiting_surrender = 0
say("Level [threat] infraction alert!") say("Level [threat] infraction alert!")
custom_emote(1, "points at [M.name]!") automatic_custom_emote(VISIBLE_MESSAGE, "points at [M.name]!")
playsound(src, pick(threat_found_sounds), 50) playsound(src, pick(threat_found_sounds), 50)
return return

View File

@@ -127,7 +127,7 @@
if(11 to 30) if(11 to 30)
H.custom_pain("The muscles in your body cramp up painfully.",0) H.custom_pain("The muscles in your body cramp up painfully.",0)
if(31 to INFINITY) if(31 to INFINITY)
H.custom_emote(VISIBLE_MESSAGE, "flinches as all the muscles in their body cramp up.") H.automatic_custom_emote(VISIBLE_MESSAGE, "flinches as all the muscles in their body cramp up.", check_stat = TRUE)
H.custom_pain("There's pain all over your body.",1) H.custom_pain("There's pain all over your body.",1)
// ITCH // ITCH
@@ -145,5 +145,5 @@
if(11 to 30) if(11 to 30)
H.custom_pain("You want to scratch your itch badly.",0) H.custom_pain("You want to scratch your itch badly.",0)
if(31 to INFINITY) if(31 to INFINITY)
H.custom_emote(VISIBLE_MESSAGE, "shivers slightly.") H.automatic_custom_emote(VISIBLE_MESSAGE, "shivers slightly.", check_stat = TRUE)
H.custom_pain("This itch makes it really hard to concentrate.",1) H.custom_pain("This itch makes it really hard to concentrate.",1)

View File

@@ -127,7 +127,7 @@
if(11 to 30) if(11 to 30)
H.custom_pain("The muscles in your body cramp up painfully.",0) H.custom_pain("The muscles in your body cramp up painfully.",0)
if(31 to INFINITY) if(31 to INFINITY)
H.custom_emote(VISIBLE_MESSAGE, "flinches as all the muscles in their body cramp up.") H.automatic_custom_emote(VISIBLE_MESSAGE, "flinches as all the muscles in their body cramp up.", check_stat = TRUE)
H.custom_pain("There's pain all over your body.",1) H.custom_pain("There's pain all over your body.",1)
// ITCH // ITCH
@@ -145,5 +145,5 @@
if(11 to 30) if(11 to 30)
H.custom_pain("You want to scratch your itch badly.",0) H.custom_pain("You want to scratch your itch badly.",0)
if(31 to INFINITY) if(31 to INFINITY)
H.custom_emote(VISIBLE_MESSAGE, "shivers slightly.") H.automatic_custom_emote(VISIBLE_MESSAGE, "shivers slightly.", check_stat = TRUE)
H.custom_pain("This itch makes it really hard to concentrate.",1) H.custom_pain("This itch makes it really hard to concentrate.",1)

View File

@@ -82,10 +82,10 @@ emp_act
drop_from_inventory(c_hand) drop_from_inventory(c_hand)
if(!isbelly(loc)) //VOREStation Add if(!isbelly(loc)) //VOREStation Add
if (affected.robotic >= ORGAN_ROBOT) if (affected.robotic >= ORGAN_ROBOT)
custom_emote(VISIBLE_MESSAGE, "drops what they were holding, their [affected.name] malfunctioning!") automatic_custom_emote(VISIBLE_MESSAGE, "drops what they were holding, their [affected.name] malfunctioning!", check_stat = TRUE)
else else
var/emote_scream = pick("screams in pain and ", "lets out a sharp cry and ", "cries out and ") var/emote_scream = pick("screams in pain and ", "lets out a sharp cry and ", "cries out and ")
custom_emote(VISIBLE_MESSAGE, "[affected.organ_can_feel_pain() ? "" : emote_scream] drops what they were holding in their [affected.name]!") automatic_custom_emote(VISIBLE_MESSAGE, "[affected.organ_can_feel_pain() ? "" : emote_scream] drops what they were holding in their [affected.name]!", check_stat = TRUE)
..(stun_amount, agony_amount, def_zone) ..(stun_amount, agony_amount, def_zone)

View File

@@ -110,7 +110,7 @@
if(!(lying || resting) && !isbelly(loc)) if(!(lying || resting) && !isbelly(loc))
if(limb_pain) if(limb_pain)
emote("scream") emote("scream")
custom_emote(1, "collapses!") automatic_custom_emote(VISIBLE_MESSAGE, "collapses!", check_stat = TRUE)
if(!(lying || resting)) // stops permastun with SPINE sdisability if(!(lying || resting)) // stops permastun with SPINE sdisability
Weaken(5) //can't emote while weakened, apparently. Weaken(5) //can't emote while weakened, apparently.
@@ -156,7 +156,7 @@
if(!isbelly(loc)) if(!isbelly(loc))
var/emote_scream = pick("screams in pain and ", "lets out a sharp cry and ", "cries out and ") var/emote_scream = pick("screams in pain and ", "lets out a sharp cry and ", "cries out and ")
custom_emote(VISIBLE_MESSAGE, "[(can_feel_pain()) ? "" : emote_scream ]drops what they were holding in their [E.name]!") automatic_custom_emote(VISIBLE_MESSAGE, "[(can_feel_pain()) ? "" : emote_scream ]drops what they were holding in their [E.name]!", check_stat = TRUE)
if(can_feel_pain()) if(can_feel_pain())
emote("pain") emote("pain")
@@ -172,7 +172,7 @@
drop_from_inventory(r_hand) drop_from_inventory(r_hand)
if(!isbelly(loc)) if(!isbelly(loc))
custom_emote(VISIBLE_MESSAGE, "drops what they were holding, their [E.name] malfunctioning!") automatic_custom_emote(VISIBLE_MESSAGE, "drops what they were holding, their [E.name] malfunctioning!", check_stat = TRUE)
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src) spark_system.set_up(5, 0, src)

View File

@@ -196,7 +196,7 @@
if(dna) if(dna)
if(disabilities & DETERIORATE && prob(2) && prob(3)) // stacked percents for rarity if(disabilities & DETERIORATE && prob(2) && prob(3)) // stacked percents for rarity
// random strange symptoms from organ/limb // random strange symptoms from organ/limb
custom_emote(VISIBLE_MESSAGE, "flinches slightly.") automatic_custom_emote(VISIBLE_MESSAGE, "flinches slightly.", check_stat = TRUE)
switch(rand(1,4)) switch(rand(1,4))
if(1) if(1)
adjustToxLoss(rand(2,8)) adjustToxLoss(rand(2,8))
@@ -1963,7 +1963,7 @@
if(shock_stage >= 30) if(shock_stage >= 30)
if(shock_stage == 30 && !isbelly(loc)) if(shock_stage == 30 && !isbelly(loc))
custom_emote(VISIBLE_MESSAGE, "is having trouble keeping their eyes open.") automatic_custom_emote(VISIBLE_MESSAGE, "is having trouble keeping their eyes open.", check_stat = TRUE)
eye_blurry = max(2, eye_blurry) eye_blurry = max(2, eye_blurry)
if(traumatic_shock >= 80) if(traumatic_shock >= 80)
stuttering = max(stuttering, 5) stuttering = max(stuttering, 5)
@@ -1975,7 +1975,7 @@
if (shock_stage >= 60) if (shock_stage >= 60)
if(shock_stage == 60 && !isbelly(loc)) if(shock_stage == 60 && !isbelly(loc))
custom_emote(VISIBLE_MESSAGE, "'s body becomes limp.") automatic_custom_emote(VISIBLE_MESSAGE, "'s body becomes limp.", check_stat = TRUE)
if (prob(2)) if (prob(2))
if(traumatic_shock >= 80) if(traumatic_shock >= 80)
to_chat(src, span_danger("[pick("The pain is excruciating", "Please&#44; just end the pain", "Your whole body is going numb")]!")) to_chat(src, span_danger("[pick("The pain is excruciating", "Please&#44; just end the pain", "Your whole body is going numb")]!"))
@@ -1999,7 +1999,7 @@
if(shock_stage == 150) if(shock_stage == 150)
if(!isbelly(loc)) if(!isbelly(loc))
custom_emote(VISIBLE_MESSAGE, "can no longer stand, collapsing!") automatic_custom_emote(VISIBLE_MESSAGE, "can no longer stand, collapsing!", check_stat = TRUE)
if(prob(60)) if(prob(60))
emote("pain") emote("pain")
Weaken(20) Weaken(20)

View File

@@ -168,7 +168,7 @@
phaseanim.adjust_scale(src.size_multiplier, src.size_multiplier) phaseanim.adjust_scale(src.size_multiplier, src.size_multiplier)
phaseanim.dir = dir phaseanim.dir = dir
alpha = 0 alpha = 0
INVOKE_ASYNC(src, PROC_REF(custom_emote),1,"phases in!") automatic_custom_emote(VISIBLE_MESSAGE,"phases in!")
addtimer(CALLBACK(src, PROC_REF(shadekin_complete_phase_in), original_canmove), 5, TIMER_DELETE_ME) addtimer(CALLBACK(src, PROC_REF(shadekin_complete_phase_in), original_canmove), 5, TIMER_DELETE_ME)
@@ -254,7 +254,7 @@
ability_flags |= AB_PHASE_SHIFTED ability_flags |= AB_PHASE_SHIFTED
ability_flags |= AB_PHASE_SHIFTING ability_flags |= AB_PHASE_SHIFTING
throwpass = TRUE throwpass = TRUE
custom_emote(1,"phases out!") automatic_custom_emote(VISIBLE_MESSAGE,"phases out!")
name = get_visible_name() name = get_visible_name()
//CHOMPEdit Start - Unequipping slots when phasing in, and preventing pulling stuff while phased. //CHOMPEdit Start - Unequipping slots when phasing in, and preventing pulling stuff while phased.

View File

@@ -75,7 +75,7 @@
if(T.primitive_expression_messages.len) if(T.primitive_expression_messages.len)
geneexpression = pick(T.primitive_expression_messages) geneexpression = pick(T.primitive_expression_messages)
if(geneexpression) if(geneexpression)
H.custom_emote(VISIBLE_MESSAGE, "[geneexpression]") H.automatic_custom_emote(VISIBLE_MESSAGE, "[geneexpression]", check_stat = TRUE)
else else
H.emote(pick("scratch","jump","roll","tail")) H.emote(pick("scratch","jump","roll","tail"))
// More... intense, expressions... // More... intense, expressions...

View File

@@ -178,7 +178,7 @@ var/list/channel_to_radio_key = new
//Maybe they are using say/whisper to do a quick emote, so do those //Maybe they are using say/whisper to do a quick emote, so do those
switch(copytext(message, 1, 2)) switch(copytext(message, 1, 2))
if("*") return emote(copytext(message, 2)) if("*") return emote(copytext(message, 2))
if("^") return custom_emote(1, copytext(message, 2)) if("^") return custom_emote(VISIBLE_MESSAGE, copytext(message, 2))
//Parse the radio code and consume it //Parse the radio code and consume it
if(message_mode) if(message_mode)
@@ -318,7 +318,7 @@ var/list/channel_to_radio_key = new
//Handle nonverbal languages here //Handle nonverbal languages here
for(var/datum/multilingual_say_piece/S in message_pieces) for(var/datum/multilingual_say_piece/S in message_pieces)
if((S.speaking.flags & NONVERBAL) || (S.speaking.flags & INAUDIBLE)) if((S.speaking.flags & NONVERBAL) || (S.speaking.flags & INAUDIBLE))
custom_emote(1, "[pick(S.speaking.signlang_verb)].") custom_emote(VISIBLE_MESSAGE, "[pick(S.speaking.signlang_verb)].")
do_sound = FALSE do_sound = FALSE
//These will contain the main receivers of the message //These will contain the main receivers of the message

View File

@@ -20,7 +20,7 @@
if(src.zone_sel.selecting == BP_GROIN) //CHOMPEdit if(src.zone_sel.selecting == BP_GROIN) //CHOMPEdit
if(src.vore_bellyrub(A)) //ChompEDIT if(src.vore_bellyrub(A)) //ChompEDIT
return //ChompEDIT return //ChompEDIT
custom_emote(1,"[pick(friendly)] \the [A]!") automatic_custom_emote(VISIBLE_MESSAGE,"[pick(friendly)] \the [A]!", check_stat = TRUE)
if(istype(A,/obj/structure/micro_tunnel)) //Allows simplemobs to click on mouse holes, mice should be allowed to go in mouse holes, and other mobs if(istype(A,/obj/structure/micro_tunnel)) //Allows simplemobs to click on mouse holes, mice should be allowed to go in mouse holes, and other mobs
var/obj/structure/micro_tunnel/t = A //should be allowed to drag the mice out of the mouse holes! var/obj/structure/micro_tunnel/t = A //should be allowed to drag the mice out of the mouse holes!
t.tunnel_interact(src) t.tunnel_interact(src)
@@ -30,7 +30,7 @@
return return
else if(melee_damage_upper == 0 && isliving(A)) else if(melee_damage_upper == 0 && isliving(A))
custom_emote(1,"[pick(friendly)] \the [A]!") automatic_custom_emote(VISIBLE_MESSAGE,"[pick(friendly)] \the [A]!", check_stat = TRUE)
else else
attack_target(A) attack_target(A)

View File

@@ -49,7 +49,7 @@
//Cosmetics mostly //Cosmetics mostly
flick("phasein",src) flick("phasein",src)
custom_emote(1,"phases in!") automatic_custom_emote(VISIBLE_MESSAGE,"phases in!")
sleep(30) //The duration of the TP animation sleep(30) //The duration of the TP animation
is_shifting = FALSE is_shifting = FALSE
canmove = original_canmove canmove = original_canmove
@@ -87,7 +87,7 @@
else else
shifted_out = TRUE shifted_out = TRUE
shift_state = AB_SHIFT_PASSIVE shift_state = AB_SHIFT_PASSIVE
custom_emote(1,"phases out!") automatic_custom_emote(VISIBLE_MESSAGE,"phases out!")
real_name = name real_name = name
name = "Something" name = "Something"
health = maxHealth //Fullheal health = maxHealth //Fullheal
@@ -143,7 +143,7 @@
is_shifting = TRUE is_shifting = TRUE
shifted_out = TRUE shifted_out = TRUE
custom_emote(1,"phases out!") automatic_custom_emote(VISIBLE_MESSAGE,"phases out!")
real_name = name real_name = name
name = "Something" name = "Something"
@@ -183,7 +183,7 @@
//Cosmetics mostly //Cosmetics mostly
flick("phasein",src) flick("phasein",src)
custom_emote(1,"phases in!") automatic_custom_emote(VISIBLE_MESSAGE,"phases in!")
sleep(30) //The duration of the TP animation sleep(30) //The duration of the TP animation
is_shifting = FALSE is_shifting = FALSE
canmove = original_canmove canmove = original_canmove

View File

@@ -58,7 +58,7 @@
/mob/living/simple_mob/vore/aggressive/dragon/FindTarget() /mob/living/simple_mob/vore/aggressive/dragon/FindTarget()
. = ..() . = ..()
if(.) if(.)
custom_emote(1,"snaps at [.]") customautomatic_custom_emote_emote(1,"snaps at [.]")
*/ */
// Activate Noms! // Activate Noms!
/mob/living/simple_mob/vore/aggressive/dragon /mob/living/simple_mob/vore/aggressive/dragon

View File

@@ -173,12 +173,12 @@
var/mob/living/L = A var/mob/living/L = A
if(will_eat(L)) if(will_eat(L))
var/obj/belly/B = vore_organs[1] var/obj/belly/B = vore_organs[1]
custom_emote(message = "snatches and devours [L]!") automatic_custom_emote(message = "snatches and devours [L]!")
B.nom_mob(L) B.nom_mob(L)
ai_holder.find_target() ai_holder.find_target()
return return
else if(L.size_multiplier <= 0.5 && L.step_mechanics_pref) else if(L.size_multiplier <= 0.5 && L.step_mechanics_pref)
custom_emote(message = "stomps [L] into oblivion!") automatic_custom_emote(message = "stomps [L] into oblivion!")
L.gib() L.gib()
return return
else else

View File

@@ -36,7 +36,7 @@
//Cosmetics mostly //Cosmetics mostly
flick("tp_in",src) flick("tp_in",src)
custom_emote(1,"phases in!") automatic_custom_emote(VISIBLE_MESSAGE,"phases in!")
sleep(5) //The duration of the TP animation sleep(5) //The duration of the TP animation
canmove = original_canmove canmove = original_canmove
@@ -56,7 +56,7 @@
else else
ability_flags |= AB_PHASE_SHIFTED ability_flags |= AB_PHASE_SHIFTED
mouse_opacity = 0 mouse_opacity = 0
custom_emote(1,"phases out!") automatic_custom_emote(VISIBLE_MESSAGE,"phases out!")
real_name = name real_name = name
name = "Something" name = "Something"

View File

@@ -61,7 +61,7 @@
//Cosmetics mostly //Cosmetics mostly
flick("tp_in",src) flick("tp_in",src)
INVOKE_ASYNC(src, PROC_REF(custom_emote),1,"phases in!") automatic_custom_emote(VISIBLE_MESSAGE,"phases in!")
addtimer(CALLBACK(src, PROC_REF(shadekin_complete_phase_in), original_canmove), 5, TIMER_DELETE_ME) addtimer(CALLBACK(src, PROC_REF(shadekin_complete_phase_in), original_canmove), 5, TIMER_DELETE_ME)
@@ -118,7 +118,7 @@
// change // change
ability_flags |= AB_PHASE_SHIFTED ability_flags |= AB_PHASE_SHIFTED
throwpass = TRUE throwpass = TRUE
custom_emote(1,"phases out!") automatic_custom_emote(VISIBLE_MESSAGE,"phases out!")
real_name = name real_name = name
name = "Something" name = "Something"

View File

@@ -23,11 +23,11 @@
if(inflamed == 1) if(inflamed == 1)
if(prob(5)) if(prob(5))
to_chat(owner, span_warning("You feel a stinging pain in your abdomen!")) to_chat(owner, span_warning("You feel a stinging pain in your abdomen!"))
owner.custom_emote(VISIBLE_MESSAGE, "winces slightly.") owner.automatic_custom_emote(VISIBLE_MESSAGE, "winces slightly.", check_stat = TRUE)
if(inflamed > 1) if(inflamed > 1)
if(prob(3)) if(prob(3))
to_chat(owner, span_warning("You feel a stabbing pain in your abdomen!")) to_chat(owner, span_warning("You feel a stabbing pain in your abdomen!"))
owner.custom_emote(VISIBLE_MESSAGE, "winces painfully.") owner.automatic_custom_emote(VISIBLE_MESSAGE, "winces painfully.", check_stat = TRUE)
owner.adjustToxLoss(1) owner.adjustToxLoss(1)
if(inflamed > 2) if(inflamed > 2)
if(prob(1)) if(prob(1))

View File

@@ -13,27 +13,27 @@
if(is_broken()) if(is_broken())
if(prob(4)) if(prob(4))
spawn owner?.custom_emote(VISIBLE_MESSAGE, "coughs up a large amount of blood!") owner.automatic_custom_emote(VISIBLE_MESSAGE, "coughs up a large amount of blood!", check_stat = TRUE)
var/bleeding_rng = rand(3,5) var/bleeding_rng = rand(3,5)
owner.drip(bleeding_rng) owner.drip(bleeding_rng)
if(prob(8)) //This is a medical emergency. Will kill within minutes unless exceedingly lucky. if(prob(8)) //This is a medical emergency. Will kill within minutes unless exceedingly lucky.
spawn owner?.custom_emote(VISIBLE_MESSAGE, "gasps for air!") owner.automatic_custom_emote(VISIBLE_MESSAGE, "gasps for air!", check_stat = TRUE)
owner.AdjustLosebreath(15) owner.AdjustLosebreath(15)
else if(is_bruised()) //Only bruised? That's an annoyance and can cause some more damage (via brainloss due to oxyloss) else if(is_bruised()) //Only bruised? That's an annoyance and can cause some more damage (via brainloss due to oxyloss)
if(prob(2)) //But let's not kill people too quickly. if(prob(2)) //But let's not kill people too quickly.
spawn owner?.custom_emote(VISIBLE_MESSAGE, "coughs up a small amount of blood!") owner.automatic_custom_emote(VISIBLE_MESSAGE, "coughs up a small amount of blood!", check_stat = TRUE)
var/bleeding_rng = rand(1,2) var/bleeding_rng = rand(1,2)
owner.drip(bleeding_rng) owner.drip(bleeding_rng)
if(prob(4)) //Get to medical quickly. but shouldn't kill without exceedingly bad RNG. if(prob(4)) //Get to medical quickly. but shouldn't kill without exceedingly bad RNG.
spawn owner?.custom_emote(VISIBLE_MESSAGE, "gasps for air!") owner.automatic_custom_emote(VISIBLE_MESSAGE, "gasps for air!", check_stat = TRUE)
owner.AdjustLosebreath(10) //Losebreath is a DoT that does 1:1 damage and prevents oxyloss healing via breathing. owner.AdjustLosebreath(10) //Losebreath is a DoT that does 1:1 damage and prevents oxyloss healing via breathing.
if(owner.internal_organs_by_name[O_BRAIN]) // As the brain starts having Trouble, the lungs start malfunctioning. if(owner.internal_organs_by_name[O_BRAIN]) // As the brain starts having Trouble, the lungs start malfunctioning.
var/obj/item/organ/internal/brain/Brain = owner.internal_organs_by_name[O_BRAIN] var/obj/item/organ/internal/brain/Brain = owner.internal_organs_by_name[O_BRAIN]
if(Brain.get_control_efficiency() <= 0.8) if(Brain.get_control_efficiency() <= 0.8)
if(prob(4 / max(0.1,Brain.get_control_efficiency()))) if(prob(4 / max(0.1,Brain.get_control_efficiency())))
spawn owner?.custom_emote(VISIBLE_MESSAGE, "gasps for air!") owner.automatic_custom_emote(VISIBLE_MESSAGE, "gasps for air!", check_stat = TRUE)
owner.AdjustLosebreath(round(3 / max(0.1,Brain.get_control_efficiency()))) owner.AdjustLosebreath(round(3 / max(0.1,Brain.get_control_efficiency())))
/obj/item/organ/internal/lungs/proc/rupture() /obj/item/organ/internal/lungs/proc/rupture()

View File

@@ -36,16 +36,16 @@
// Glass present // Glass present
else if(glass) else if(glass)
if(user.a_intent == I_HURT) if(user.a_intent == I_HURT)
user.custom_emote(VISIBLE_MESSAGE, "smashes the glass on [src]!") user.automatic_custom_emote(VISIBLE_MESSAGE, "smashes the glass on [src]!")
glass = FALSE glass = FALSE
playsound(src, 'sound/effects/hit_on_shattered_glass.ogg') playsound(src, 'sound/effects/hit_on_shattered_glass.ogg')
update_icon() update_icon()
else else
user.custom_emote(VISIBLE_MESSAGE, "pats [src] in a friendly manner.") user.automatic_custom_emote(VISIBLE_MESSAGE, "pats [src] in a friendly manner.")
to_chat(user, span_warning("If you're trying to break the glass, you'll have to hit it harder than that...")) to_chat(user, span_warning("If you're trying to break the glass, you'll have to hit it harder than that..."))
// Must be !glass and !launched // Must be !glass and !launched
else else
user.custom_emote(VISIBLE_MESSAGE, "pushes the button on [src]!") user.automatic_custom_emote(VISIBLE_MESSAGE, "pushes the button on [src]!")
launch(user) launch(user)
playsound(src, get_sfx("button")) playsound(src, get_sfx("button"))
update_icon() update_icon()

View File

@@ -927,27 +927,27 @@
metabolism = REM * 0.06 metabolism = REM * 0.06
/datum/reagent/immunosuprizine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) /datum/reagent/immunosuprizine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
var/strength_mod = 1 * M.species.chem_strength_heal var/strength_mod = 1 // * M.species.chem_strength_heal //Just removing the chem strength adjustment. It'd require division, which is best avoided.
if(alien == IS_DIONA) // It's a tree. if(alien == IS_DIONA) // It's a tree.
strength_mod = 0.25 strength_mod = 4
if(alien == IS_SLIME) // Diffculty bonding with internal cellular structure. if(alien == IS_SLIME) // Diffculty bonding with internal cellular structure.
strength_mod = 0.75 strength_mod = 1.3
if(alien == IS_SKRELL) // Natural inclination toward toxins. if(alien == IS_SKRELL) // Natural inclination toward toxins.
strength_mod = 1.5 strength_mod = 0.66
if(alien == IS_UNATHI) // Natural regeneration, robust biology. if(alien == IS_UNATHI) // Natural regeneration, robust biology.
strength_mod = 1.75 strength_mod = 0.6
if(alien == IS_TAJARA) // Highest metabolism. if(alien == IS_TAJARA) // Highest metabolism.
strength_mod = 2 strength_mod = 0.5
if(ishuman(M)) if(ishuman(M))
var/mob/living/carbon/human/H = M var/mob/living/carbon/human/H = M
if(alien != IS_DIONA) if(alien != IS_DIONA)
H.adjustToxLoss((30 / strength_mod) * removed) H.adjustToxLoss((30 * strength_mod) * removed)
var/list/organtotal = list() var/list/organtotal = list()
organtotal |= H.organs organtotal |= H.organs
@@ -969,7 +969,7 @@
var/rejectmem = I.can_reject var/rejectmem = I.can_reject
I.can_reject = initial(I.can_reject) I.can_reject = initial(I.can_reject)
if(rejectmem != I.can_reject) if(rejectmem != I.can_reject)
H.adjustToxLoss((15 / strength_mod)) H.adjustToxLoss((15 / strength_mod) * removed) //Someone forgot a * removed here in the past. It made it so 1u of this chem would do (baseline) 1245 toxins per unit, or 15 toxins per tick.
I.take_damage(1) I.take_damage(1)
/datum/reagent/skrellimmuno //skrell exist? /datum/reagent/skrellimmuno //skrell exist?

View File

@@ -403,7 +403,7 @@
ML.parent_organ = affected.organ_tag ML.parent_organ = affected.organ_tag
organ_compatible = 1 organ_compatible = 1
else else
to_chat(user, "<span class='warning'>\The [O] won't fit in \the [affected.name].</span>") to_chat(user, span_warning("\The [O] won't fit in \the [affected.name]."))
return SURGERY_FAILURE return SURGERY_FAILURE
// CHOMPadd end // CHOMPadd end

View File

@@ -157,11 +157,11 @@
owner.AdjustConfused(4 * base_mult) owner.AdjustConfused(4 * base_mult)
var/obj/item/organ/O = owner.organs_by_name[parent_organ] var/obj/item/organ/O = owner.organs_by_name[parent_organ]
if(damage >= min_broken_damage) if(damage >= min_broken_damage)
owner.custom_pain("<span class='warning'>You feel a painful sensation in your [O.name].</span>",damage,TRUE) owner.custom_pain(span_warning("You feel a painful sensation in your [O.name]."),damage,TRUE)
owner.AdjustBlinded(6 * base_mult) owner.AdjustBlinded(6 * base_mult)
owner.adjustToxLoss(4 * base_mult) owner.adjustToxLoss(4 * base_mult)
else else
owner.custom_pain("<span class='warning'>You feel a strange sensation in your [O.name].</span>",damage / 10,TRUE) owner.custom_pain(span_warning("You feel a strange sensation in your [O.name]."),damage / 10,TRUE)
/**************************************************** /****************************************************
Tumor varients Tumor varients
@@ -250,14 +250,14 @@
/obj/item/organ/internal/malignant/tumor/potato/attackby(obj/item/W as obj, mob/user as mob) /obj/item/organ/internal/malignant/tumor/potato/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W,/obj/item/material/knife)) if(istype(W,/obj/item/material/knife))
new /obj/item/reagent_containers/food/snacks/rawsticks(get_turf(src)) new /obj/item/reagent_containers/food/snacks/rawsticks(get_turf(src))
to_chat(user, "<span class='notice'>You cut the mimetic potato.</span>") to_chat(user, span_notice("You cut the mimetic potato."))
qdel(src) qdel(src)
return return
if(istype(W, /obj/item/stack/cable_coil)) if(istype(W, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = W var/obj/item/stack/cable_coil/C = W
if(C.use(5)) if(C.use(5))
//TODO: generalize this. //TODO: generalize this.
to_chat(user, "<span class='notice'>You add some cable to the [src.name] and slide it inside the battery casing.</span>") to_chat(user, span_notice("You add some cable to the [src.name] and slide it inside the battery casing."))
var/obj/item/cell/potato/pocell = new /obj/item/cell/potato(get_turf(user)) var/obj/item/cell/potato/pocell = new /obj/item/cell/potato(get_turf(user))
if(src.loc == user && ishuman(user)) if(src.loc == user && ishuman(user))
user.put_in_hands(pocell) user.put_in_hands(pocell)
@@ -305,14 +305,14 @@
if(prob(2)) if(prob(2))
var/obj/item/organ/O = owner.organs_by_name[parent_organ] var/obj/item/organ/O = owner.organs_by_name[parent_organ]
if(stage_progress > 200) if(stage_progress > 200)
owner.custom_pain("<span class='warning'>You feel bloated. The pain in your [O.name] is agonizing.</span>",20,TRUE) owner.custom_pain(span_warning("You feel bloated. The pain in your [O.name] is agonizing."),20,TRUE)
owner.custom_emote(VISIBLE_MESSAGE, "winces slightly.") owner.automatic_custom_emote(VISIBLE_MESSAGE, "winces slightly.", check_stat = TRUE)
else if(stage_progress > 100) else if(stage_progress > 100)
owner.custom_pain("<span class='warning'>You feel a pressure inside your [O.name].</span>",5,TRUE) owner.custom_pain(span_warning("You feel a pressure inside your [O.name]."),5,TRUE)
owner.custom_emote(VISIBLE_MESSAGE, "winces painfully.") owner.automatic_custom_emote(VISIBLE_MESSAGE, "winces painfully.", check_stat = TRUE)
else else
owner.custom_pain("<span class='danger'>The pressure inside your [O.name] hurts.</span>",1,TRUE) owner.custom_pain(span_danger("The pressure inside your [O.name] hurts."),1,TRUE)
owner.custom_emote(VISIBLE_MESSAGE, "winces painfully.") owner.automatic_custom_emote(VISIBLE_MESSAGE, "winces painfully.", check_stat = TRUE)
/obj/item/organ/internal/malignant/tumor/pinata/attackby(obj/item/W as obj, mob/user as mob) /obj/item/organ/internal/malignant/tumor/pinata/attackby(obj/item/W as obj, mob/user as mob)
if(can_puncture(W)) if(can_puncture(W))
@@ -459,11 +459,11 @@
if(thalers < 100) if(thalers < 100)
pass() pass()
else if(thalers < 500) else if(thalers < 500)
owner.custom_pain("<span class='warning'>You feel bloated.</span>",1,TRUE) owner.custom_pain(span_warning("You feel bloated."),1,TRUE)
owner.custom_emote(VISIBLE_MESSAGE, "winces slightly.") owner.automatic_custom_emote(VISIBLE_MESSAGE, "winces slightly.", check_stat = TRUE)
else if(thalers < 1000) else if(thalers < 1000)
owner.custom_pain("<span class='warning'>You feel a pressure inside your [O.name].</span>",6,TRUE) owner.custom_pain(span_warning("You feel a pressure inside your [O.name]."),6,TRUE)
owner.custom_emote(VISIBLE_MESSAGE, "winces painfully.") owner.automatic_custom_emote(VISIBLE_MESSAGE, "winces painfully.", check_stat = TRUE)
if(prob(30)) if(prob(30))
owner.vomit() owner.vomit()
else if(prob(30)) else if(prob(30))
@@ -471,8 +471,8 @@
else else
owner.Confuse(15) owner.Confuse(15)
else if(thalers < 5000) else if(thalers < 5000)
owner.custom_pain("<span class='danger'>The pressure inside your [O.name] hurts.</span>",15,TRUE) owner.custom_pain(span_danger("The pressure inside your [O.name] hurts."),15,TRUE)
owner.custom_emote(VISIBLE_MESSAGE, "winces painfully.") owner.automatic_custom_emote(VISIBLE_MESSAGE, "winces painfully.", check_stat = TRUE)
owner.Weaken(3) owner.Weaken(3)
if(prob(30)) if(prob(30))
owner.Stun(10) owner.Stun(10)

View File

@@ -26,10 +26,10 @@
/obj/effect/step_trigger/tramblock/Trigger(var/atom/movable/A) /obj/effect/step_trigger/tramblock/Trigger(var/atom/movable/A)
if(istype(A, /mob/living/carbon/human)) if(istype(A, /mob/living/carbon/human))
to_chat(A, "<span class='notice'>OOC Notice: You have an itch to explore, it seems! \ to_chat(A, span_notice("OOC Notice: You have an itch to explore, it seems! \
This tunnel does not go any further past the doors, thanks to game limitations and stuff in the way! \ This tunnel does not go any further past the doors, thanks to game limitations and stuff in the way! \
However, north and the departures tram line extend the entire length of the map! \ However, north and the departures tram line extend the entire length of the map! \
There's also other areas you can explore. Have fun. <3</span>" There's also other areas you can explore. Have fun. <3")
) )
else else
return 0 return 0

View File

@@ -2566,6 +2566,7 @@
#include "code\modules\economy\vending_machines.dm" #include "code\modules\economy\vending_machines.dm"
#include "code\modules\economy\vending_machines_vr.dm" #include "code\modules\economy\vending_machines_vr.dm"
#include "code\modules\economy\vending_refills.dm" #include "code\modules\economy\vending_refills.dm"
#include "code\modules\emotes\custom_emote.dm"
#include "code\modules\emotes\emote_define.dm" #include "code\modules\emotes\emote_define.dm"
#include "code\modules\emotes\emote_mob.dm" #include "code\modules\emotes\emote_mob.dm"
#include "code\modules\emotes\definitions\_mob.dm" #include "code\modules\emotes\definitions\_mob.dm"