mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 15:08:02 +01:00
Convert most spans to defines (#31080)
* spanish? * aaaagain * keep maptext * Update robot_items.dm * Update span_defines.dm * compiles * Update silicon_mob.dm * compile
This commit is contained in:
@@ -115,7 +115,7 @@
|
||||
if(!(antimagic_flags & knownspell.antimagic_flags))
|
||||
continue
|
||||
|
||||
to_chat(equipper, "<span class='warning'>[parent] is interfering with your ability to cast magic!</span>")
|
||||
to_chat(equipper, SPAN_WARNING("[parent] is interfering with your ability to cast magic!"))
|
||||
alert_caster_on_equip = FALSE
|
||||
break
|
||||
|
||||
|
||||
@@ -79,8 +79,8 @@
|
||||
addtimer(CALLBACK(true_parent, TYPE_PROC_REF(/atom/movable, throw_at), thrown_by, boomerang_throw_range, throwing_datum.speed, null, TRUE), 0.1 SECONDS)
|
||||
COOLDOWN_START(src, last_boomerang_throw, BOOMERANG_REBOUND_INTERVAL)
|
||||
var/mob/thrower = throwing_datum?.get_thrower()
|
||||
true_parent.visible_message("<span class='danger'>[true_parent] is flying back at [thrower]!</span>", \
|
||||
"<span class='danger'>You see [true_parent] fly back at you!</span>", \
|
||||
"<span class='hear'>You hear an aerodynamic woosh!</span>")
|
||||
true_parent.visible_message(SPAN_DANGER("[true_parent] is flying back at [thrower]!"), \
|
||||
SPAN_DANGER("You see [true_parent] fly back at you!"), \
|
||||
SPAN_HEAR("You hear an aerodynamic woosh!"))
|
||||
|
||||
#undef BOOMERANG_REBOUND_INTERVAL
|
||||
|
||||
@@ -83,9 +83,9 @@
|
||||
|
||||
if(cooldown < world.time - 10) //cooldown to avoid message spam.
|
||||
if(!H.incapacitated(ignore_restraints = TRUE))
|
||||
H.visible_message("<span class='danger'>[H] steps on [A].</span>", "<span class='userdanger'>You step on [A]!</span>")
|
||||
H.visible_message(SPAN_DANGER("[H] steps on [A]."), SPAN_USERDANGER("You step on [A]!"))
|
||||
else
|
||||
H.visible_message("<span class='danger'>[H] slides on [A]!</span>", "<span class='userdanger'>You slide on [A]!</span>")
|
||||
H.visible_message(SPAN_DANGER("[H] slides on [A]!"), SPAN_USERDANGER("You slide on [A]!"))
|
||||
|
||||
cooldown = world.time
|
||||
H.Weaken(weaken_duration)
|
||||
|
||||
@@ -27,6 +27,6 @@
|
||||
if(corpse.stat != DEAD || !description_text)
|
||||
return // Why the hell you put this on them then
|
||||
if(naive_description && HAS_TRAIT(corpse_inspector, TRAIT_COMIC_SANS))
|
||||
examine_list += "<span class='notice'>[naive_description]</span>"
|
||||
examine_list += SPAN_NOTICE("[naive_description]")
|
||||
return
|
||||
examine_list += "<span class='notice'>[description_text]</span>"
|
||||
examine_list += SPAN_NOTICE("[description_text]")
|
||||
|
||||
@@ -79,17 +79,17 @@
|
||||
return
|
||||
var/cooldown = ckey_to_cooldown[source.ckey] - world.time
|
||||
if(cooldown > 0)
|
||||
to_chat(source, "<span class='warning'>Your deadchat control inputs are still on cooldown for another [CEILING(cooldown * 0.1, 1)] second\s.</span>")
|
||||
to_chat(source, SPAN_WARNING("Your deadchat control inputs are still on cooldown for another [CEILING(cooldown * 0.1, 1)] second\s."))
|
||||
return MOB_DEADSAY_SIGNAL_INTERCEPT
|
||||
ckey_to_cooldown[source.ckey] = world.time + input_cooldown
|
||||
addtimer(CALLBACK(src, PROC_REF(end_cooldown), source.ckey), input_cooldown)
|
||||
inputs[message].Invoke()
|
||||
to_chat(source, "<span class='notice'>\"[message]\" input accepted. You are now on cooldown for [input_cooldown * 0.1] second\s.</span>")
|
||||
to_chat(source, SPAN_NOTICE("\"[message]\" input accepted. You are now on cooldown for [input_cooldown * 0.1] second\s."))
|
||||
return MOB_DEADSAY_SIGNAL_INTERCEPT
|
||||
|
||||
if(deadchat_mode & DEADCHAT_DEMOCRACY_MODE)
|
||||
ckey_to_cooldown[source.ckey] = message
|
||||
to_chat(source, "<span class='notice'>You have voted for \"[message]\".</span>")
|
||||
to_chat(source, SPAN_NOTICE("You have voted for \"[message]\"."))
|
||||
return MOB_DEADSAY_SIGNAL_INTERCEPT
|
||||
|
||||
/datum/component/deadchat_control/proc/democracy_loop()
|
||||
@@ -147,11 +147,11 @@
|
||||
if(isobserver(orbiter))
|
||||
var/mob/dead/observer/O = orbiter
|
||||
if(O.client && !(O.client.prefs.toggles & PREFTOGGLE_CHAT_DEAD))
|
||||
to_chat(O, "<span class='deadsay'>You have deadchat muted, and as such will not receive messages related to, nor be able to participate in, controlling this object.</span>")
|
||||
to_chat(O, "<span class='notice'>If you would like to participate, unmute deadchat and follow this object again.</span>")
|
||||
to_chat(O, SPAN_DEADSAY("You have deadchat muted, and as such will not receive messages related to, nor be able to participate in, controlling this object."))
|
||||
to_chat(O, SPAN_NOTICE("If you would like to participate, unmute deadchat and follow this object again."))
|
||||
return
|
||||
else
|
||||
to_chat(O, "<span class='deadsay'>[parent] is deadchat-controllable! Examine [parent] to see possible commands you can use while orbiting [parent.p_them()] to control [parent.p_their()] behavior!</span>")
|
||||
to_chat(O, SPAN_DEADSAY("[parent] is deadchat-controllable! Examine [parent] to see possible commands you can use while orbiting [parent.p_them()] to control [parent.p_their()] behavior!"))
|
||||
|
||||
RegisterSignal(orbiter, COMSIG_MOB_DEADSAY, PROC_REF(deadchat_react))
|
||||
RegisterSignal(orbiter, COMSIG_MOB_AUTOMUTE_CHECK, PROC_REF(waive_automute))
|
||||
@@ -191,10 +191,10 @@
|
||||
if(!isobserver(user))
|
||||
return
|
||||
|
||||
examine_list += "<span class='notice'>[A.p_theyre(TRUE)] currently under deadchat control using the [(deadchat_mode & DEADCHAT_DEMOCRACY_MODE) ? "democracy" : "anarchy"] ruleset!</span>"
|
||||
examine_list += SPAN_NOTICE("[A.p_theyre(TRUE)] currently under deadchat control using the [(deadchat_mode & DEADCHAT_DEMOCRACY_MODE) ? "democracy" : "anarchy"] ruleset!")
|
||||
|
||||
if(user.client && !(user.client.prefs.toggles & PREFTOGGLE_CHAT_DEAD))
|
||||
examine_list += "<span class='deadsay'>As you have deadchat disabled, you will not see vote messages, nor be able to participate in voting.</span>"
|
||||
examine_list += SPAN_DEADSAY("As you have deadchat disabled, you will not see vote messages, nor be able to participate in voting.")
|
||||
return
|
||||
|
||||
if(!(user in orbiters))
|
||||
@@ -203,9 +203,9 @@
|
||||
|
||||
|
||||
if(deadchat_mode & DEADCHAT_DEMOCRACY_MODE)
|
||||
examine_list += "<span class='notice'>Type a command into chat to vote on an action. This happens once every [input_cooldown * 0.1] second\s.</span>"
|
||||
examine_list += SPAN_NOTICE("Type a command into chat to vote on an action. This happens once every [input_cooldown * 0.1] second\s.")
|
||||
else if(deadchat_mode & DEADCHAT_ANARCHY_MODE)
|
||||
examine_list += "<span class='notice'>Type a command into chat to perform. You may do this once every [input_cooldown * 0.1] second\s.</span>"
|
||||
examine_list += SPAN_NOTICE("Type a command into chat to perform. You may do this once every [input_cooldown * 0.1] second\s.")
|
||||
|
||||
var/extended_examine = "<span class='notice'>Command list:"
|
||||
|
||||
@@ -221,7 +221,7 @@
|
||||
var/mob/ghost = get_mob_by_ckey(ghost_ckey)
|
||||
if(!ghost || isliving(ghost))
|
||||
return
|
||||
to_chat(ghost, "<span class='green'>Your deadchat control inputs for [parent] ([ghost_follow_link(parent, ghost)]) are no longer on cooldown.</span>")
|
||||
to_chat(ghost, SPAN_GREEN("Your deadchat control inputs for [parent] ([ghost_follow_link(parent, ghost)]) are no longer on cooldown."))
|
||||
|
||||
/// Dummy to call since we can't proc reference builtins
|
||||
/datum/component/deadchat_control/proc/_step(ref, dir)
|
||||
|
||||
@@ -92,11 +92,11 @@
|
||||
|
||||
if(safety)
|
||||
safety = FALSE
|
||||
unit.visible_message("<span class='notice'>[unit] beeps: Safety protocols disabled!</span>")
|
||||
unit.visible_message(SPAN_NOTICE("[unit] beeps: Safety protocols disabled!"))
|
||||
playsound(get_turf(unit), safety_off_sound, 50, FALSE)
|
||||
else
|
||||
safety = TRUE
|
||||
unit.visible_message("<span class='notice'>[unit] beeps: Safety protocols enabled!</span>")
|
||||
unit.visible_message(SPAN_NOTICE("[unit] beeps: Safety protocols enabled!"))
|
||||
playsound(get_turf(unit), safety_on_sound, 50, FALSE)
|
||||
|
||||
/datum/component/defib/proc/on_emag(obj/item/unit, mob/user)
|
||||
@@ -148,12 +148,12 @@
|
||||
var/application_result = SEND_SIGNAL(parent, COMSIG_DEFIB_PADDLES_APPLIED, user, target, should_cause_harm)
|
||||
|
||||
if(application_result & COMPONENT_BLOCK_DEFIB_DEAD)
|
||||
user.visible_message("<span class='notice'>[defib_ref] beeps: Unit is unpowered.</span>")
|
||||
user.visible_message(SPAN_NOTICE("[defib_ref] beeps: Unit is unpowered."))
|
||||
playsound(get_turf(defib_ref), fail_sound, 50, FALSE)
|
||||
return
|
||||
|
||||
if(on_cooldown)
|
||||
to_chat(user, "<span class='notice'>[defib_ref] is recharging.</span>")
|
||||
to_chat(user, SPAN_NOTICE("[defib_ref] is recharging."))
|
||||
return
|
||||
|
||||
if(application_result & COMPONENT_BLOCK_DEFIB_MISC)
|
||||
@@ -161,9 +161,9 @@
|
||||
|
||||
if(!istype(target))
|
||||
if(robotic)
|
||||
to_chat(user, "<span class='notice'>This unit is only designed to work on humanoid lifeforms.</span>")
|
||||
to_chat(user, SPAN_NOTICE("This unit is only designed to work on humanoid lifeforms."))
|
||||
else
|
||||
to_chat(user, "<span class='notice'>The instructions on [defib_ref] don't mention how to defibrillate that...</span>")
|
||||
to_chat(user, SPAN_NOTICE("The instructions on [defib_ref] don't mention how to defibrillate that..."))
|
||||
return
|
||||
|
||||
if(should_cause_harm && combat && heart_attack_chance == 100)
|
||||
@@ -178,23 +178,23 @@
|
||||
return
|
||||
|
||||
user.visible_message(
|
||||
"<span class='warning'>[user] begins to place [parent] on [target]'s chest.</span>",
|
||||
"<span class='warning'>You begin to place [parent] on [target.name]'s chest.</span>"
|
||||
SPAN_WARNING("[user] begins to place [parent] on [target]'s chest."),
|
||||
SPAN_WARNING("You begin to place [parent] on [target.name]'s chest.")
|
||||
)
|
||||
|
||||
busy = TRUE
|
||||
var/mob/dead/observer/ghost = target.get_ghost()
|
||||
if(ghost)
|
||||
to_chat(ghost, "<span class='ghostalert'>Your heart is being defibrillated. Return to your body if you want to be revived!</span> (Verbs -> Ghost -> Re-enter corpse)")
|
||||
to_chat(ghost, "[SPAN_GHOSTALERT("Your heart is being defibrillated. Return to your body if you want to be revived!")] (Verbs -> Ghost -> Re-enter corpse)")
|
||||
window_flash(ghost.client)
|
||||
SEND_SOUND(ghost, sound('sound/effects/genetics.ogg'))
|
||||
else if(HAS_TRAIT_FROM(target, TRAIT_FAKEDEATH, CHANGELING_TRAIT))
|
||||
to_chat(target, "<span class='ghostalert'>Your heart is being defibrillated. Click the defibrillator status to be revived!</span>")
|
||||
to_chat(target, SPAN_GHOSTALERT("Your heart is being defibrillated. Click the defibrillator status to be revived!"))
|
||||
window_flash(target.client)
|
||||
SEND_SOUND(target, sound('sound/effects/genetics.ogg'))
|
||||
target.throw_alert("cling_defib", /atom/movable/screen/alert/changeling_defib_revive, alert_args = list(parent, target))
|
||||
|
||||
user.visible_message("<span class='notice'>[user] places [parent] on [target]'s chest.</span>", "<span class='warning'>You place [parent] on [target]'s chest.</span>")
|
||||
user.visible_message(SPAN_NOTICE("[user] places [parent] on [target]'s chest."), SPAN_WARNING("You place [parent] on [target]'s chest."))
|
||||
playsound(get_turf(defib_ref), charge_sound, 50, FALSE)
|
||||
|
||||
if(ghost && !ghost.client && !QDELETED(ghost))
|
||||
@@ -208,7 +208,7 @@
|
||||
return
|
||||
|
||||
if(istype(target.wear_suit, /obj/item/clothing/suit/space) && !combat)
|
||||
user.visible_message("<span class='notice'>[defib_ref] buzzes: Patient's chest is obscured. Operation aborted.</span>")
|
||||
user.visible_message(SPAN_NOTICE("[defib_ref] buzzes: Patient's chest is obscured. Operation aborted."))
|
||||
playsound(get_turf(defib_ref), fail_sound, 50, FALSE)
|
||||
busy = FALSE
|
||||
return
|
||||
@@ -223,9 +223,9 @@
|
||||
if(target.undergoing_cardiac_arrest() && target.stat != DEAD) // Can have a heart attack and heart is either missing, necrotic, or not beating
|
||||
var/datum/organ/heart/heart = target.get_int_organ_datum(ORGAN_DATUM_HEART)
|
||||
if(!heart)
|
||||
user.visible_message("<span class='boldnotice'>[defib_ref] buzzes: Resuscitation failed - Failed to pick up any heart electrical activity.</span>")
|
||||
user.visible_message(SPAN_BOLDNOTICE("[defib_ref] buzzes: Resuscitation failed - Failed to pick up any heart electrical activity."))
|
||||
else if(heart.linked_organ.status & ORGAN_DEAD)
|
||||
user.visible_message("<span class='boldnotice'>[defib_ref] buzzes: Resuscitation failed - Heart necrosis detected.</span>")
|
||||
user.visible_message(SPAN_BOLDNOTICE("[defib_ref] buzzes: Resuscitation failed - Heart necrosis detected."))
|
||||
if(!heart || (heart.linked_organ.status & ORGAN_DEAD))
|
||||
playsound(get_turf(defib_ref), fail_sound, 50, FALSE)
|
||||
busy = FALSE
|
||||
@@ -235,8 +235,8 @@
|
||||
SEND_SIGNAL(target, COMSIG_LIVING_MINOR_SHOCK, 100)
|
||||
SEND_SIGNAL(parent, COMSIG_DEFIB_SHOCK_APPLIED, user, target, should_cause_harm, TRUE)
|
||||
set_cooldown(cooldown)
|
||||
user.visible_message("<span class='boldnotice'>[defib_ref] pings: Cardiac arrhythmia corrected.</span>")
|
||||
target.visible_message("<span class='warning'>[target]'s body convulses a bit.</span>", "<span class='userdanger'>You feel a jolt, and your heartbeat seems to steady.</span>")
|
||||
user.visible_message(SPAN_BOLDNOTICE("[defib_ref] pings: Cardiac arrhythmia corrected."))
|
||||
target.visible_message(SPAN_WARNING("[target]'s body convulses a bit."), SPAN_USERDANGER("You feel a jolt, and your heartbeat seems to steady."))
|
||||
playsound(get_turf(defib_ref), zap_sound, 50, TRUE, -1)
|
||||
playsound(get_turf(defib_ref), "bodyfall", 50, TRUE)
|
||||
playsound(get_turf(defib_ref), success_sound, 50, FALSE)
|
||||
@@ -244,12 +244,12 @@
|
||||
return
|
||||
|
||||
if(target.stat != DEAD && !HAS_TRAIT(target, TRAIT_FAKEDEATH))
|
||||
user.visible_message("<span class='notice'>[defib_ref] buzzes: Patient is not in a valid state. Operation aborted.</span>")
|
||||
user.visible_message(SPAN_NOTICE("[defib_ref] buzzes: Patient is not in a valid state. Operation aborted."))
|
||||
playsound(get_turf(defib_ref), fail_sound, 50, FALSE)
|
||||
busy = FALSE
|
||||
return
|
||||
|
||||
target.visible_message("<span class='warning'>[target]'s body convulses a bit.</span>")
|
||||
target.visible_message(SPAN_WARNING("[target]'s body convulses a bit."))
|
||||
playsound(get_turf(defib_ref), "bodyfall", 50, TRUE)
|
||||
playsound(get_turf(defib_ref), zap_sound, 50, TRUE, -1)
|
||||
ghost = target.get_ghost(TRUE) // We have to double check whether the dead guy has entered their body during the above
|
||||
@@ -259,31 +259,31 @@
|
||||
|
||||
var/failure_message
|
||||
if(!target.is_revivable())
|
||||
failure_message = "<span class='boldnotice'>[defib_ref] buzzes: Resuscitation failed - Heart tissue damage beyond point of no return for defibrillation.</span>"
|
||||
failure_message = SPAN_BOLDNOTICE("[defib_ref] buzzes: Resuscitation failed - Heart tissue damage beyond point of no return for defibrillation.")
|
||||
else if(target.getBruteLoss() >= 180 || target.getFireLoss() >= 180)
|
||||
failure_message = "<span class='boldnotice'>[defib_ref] buzzes: Resuscitation failed - Severe tissue damage detected.</span>"
|
||||
failure_message = SPAN_BOLDNOTICE("[defib_ref] buzzes: Resuscitation failed - Severe tissue damage detected.")
|
||||
else if(HAS_TRAIT(target, TRAIT_HUSK))
|
||||
failure_message = "<span class='boldnotice'>[defib_ref] buzzes: Resuscitation failed - Subject is husked.</span>"
|
||||
failure_message = SPAN_BOLDNOTICE("[defib_ref] buzzes: Resuscitation failed - Subject is husked.")
|
||||
else if(target.blood_volume < BLOOD_VOLUME_SURVIVE)
|
||||
failure_message = "<span class='boldnotice'>[defib_ref] buzzes: Resuscitation failed - Patient blood volume critically low.</span>"
|
||||
failure_message = SPAN_BOLDNOTICE("[defib_ref] buzzes: Resuscitation failed - Patient blood volume critically low.")
|
||||
else if(!target.get_organ_slot("brain")) // So things like headless clings don't get outed
|
||||
failure_message = "<span class='boldnotice'>[defib_ref] buzzes: Resuscitation failed - No brain detected within patient.</span>"
|
||||
failure_message = SPAN_BOLDNOTICE("[defib_ref] buzzes: Resuscitation failed - No brain detected within patient.")
|
||||
else if(ghost)
|
||||
if(!(ghost.ghost_flags & GHOST_CAN_REENTER) || target.suiciding) // DNR or AntagHUD
|
||||
failure_message = "<span class='boldnotice'>[defib_ref] buzzes: Resuscitation failed - No electrical brain activity detected.</span>"
|
||||
failure_message = SPAN_BOLDNOTICE("[defib_ref] buzzes: Resuscitation failed - No electrical brain activity detected.")
|
||||
else
|
||||
failure_message = "<span class='boldnotice'>[defib_ref] buzzes: Resuscitation failed - Patient's brain is unresponsive. Further attempts may succeed.</span>"
|
||||
failure_message = SPAN_BOLDNOTICE("[defib_ref] buzzes: Resuscitation failed - Patient's brain is unresponsive. Further attempts may succeed.")
|
||||
else if(HAS_TRAIT(target, TRAIT_FAKEDEATH))
|
||||
if(signal_result & COMPONENT_DEFIB_FAKEDEATH_DENIED)
|
||||
failure_message = "<span class='boldnotice'>[defib_ref] buzzes: Resuscitation failed - Patient's brain is unresponsive. Further attempts may succeed.</span>"
|
||||
failure_message = SPAN_BOLDNOTICE("[defib_ref] buzzes: Resuscitation failed - Patient's brain is unresponsive. Further attempts may succeed.")
|
||||
else if(signal_result & COMPONENT_DEFIB_FAKEDEATH_ACCEPTED)
|
||||
// as much as I hate that this is here, it has to come after the `Patient is not in a valid state. Operation aborted.` check.
|
||||
REMOVE_TRAIT(target, TRAIT_FAKEDEATH, CHANGELING_TRAIT)
|
||||
else
|
||||
failure_message = "<span class='boldnotice'>[defib_ref] buzzes: Resuscitation failed.</span>" // has a fakedeath like capulettium
|
||||
failure_message = SPAN_BOLDNOTICE("[defib_ref] buzzes: Resuscitation failed.") // has a fakedeath like capulettium
|
||||
|
||||
else if((signal_result & COMPONENT_BLOCK_DEFIB) || HAS_TRAIT(target, TRAIT_BADDNA) || target.suiciding) // these are a bit more arbitrary
|
||||
failure_message = "<span class='boldnotice'>[defib_ref] buzzes: Resuscitation failed.</span>"
|
||||
failure_message = SPAN_BOLDNOTICE("[defib_ref] buzzes: Resuscitation failed.")
|
||||
|
||||
if(failure_message)
|
||||
user.visible_message(failure_message)
|
||||
@@ -313,11 +313,11 @@
|
||||
if(target.check_brain_threshold(BRAIN_DAMAGE_RATIO_CRITICAL))
|
||||
// If you want to treat this with mannitol, it'll have to metabolize while the patient is alive, so it's alright to bring them back up for a minute
|
||||
playsound(get_turf(defib_ref), safety_off_sound, 50, FALSE)
|
||||
user.visible_message("<span class='boldnotice'>[defib_ref] chimes: Minimal brain activity detected, brain treatment recommended for full resuscitation.</span>")
|
||||
user.visible_message(SPAN_BOLDNOTICE("[defib_ref] chimes: Minimal brain activity detected, brain treatment recommended for full resuscitation."))
|
||||
else
|
||||
playsound(get_turf(defib_ref), success_sound, 50, FALSE)
|
||||
|
||||
user.visible_message("<span class='boldnotice'>[defib_ref] pings: Resuscitation successful.</span>")
|
||||
user.visible_message(SPAN_BOLDNOTICE("[defib_ref] pings: Resuscitation successful."))
|
||||
|
||||
SEND_SIGNAL(target, COMSIG_LIVING_MINOR_SHOCK, 100)
|
||||
if(ishuman(target.pulledby)) // For some reason, pulledby isnt a list despite it being possible to be pulled by multiple people
|
||||
@@ -349,8 +349,8 @@
|
||||
if(!istype(target))
|
||||
return
|
||||
busy = TRUE
|
||||
target.visible_message("<span class='danger'>[user] has touched [target] with [parent]!</span>", \
|
||||
"<span class='userdanger'>[user] touches you with [parent], and you feel a strong jolt!</span>")
|
||||
target.visible_message(SPAN_DANGER("[user] has touched [target] with [parent]!"), \
|
||||
SPAN_USERDANGER("[user] touches you with [parent], and you feel a strong jolt!"))
|
||||
target.apply_damage(60, STAMINA)
|
||||
target.KnockDown(10 SECONDS)
|
||||
playsound(get_turf(parent), zap_sound, 50, TRUE, -1)
|
||||
@@ -373,13 +373,13 @@
|
||||
if(IS_HORIZONTAL(target) && HAS_TRAIT(target, TRAIT_HANDS_BLOCKED)) // Weakening exists which doesn't floor you while stunned
|
||||
add_attack_logs(user, target, "Gave a heart attack with [parent]")
|
||||
target.set_heartattack(TRUE)
|
||||
target.visible_message("<span class='danger'>[user] has touched [target] with [parent]!</span>", \
|
||||
"<span class='userdanger'>[user] touches you with [parent], and you feel a strong jolt!</span>")
|
||||
target.visible_message(SPAN_DANGER("[user] has touched [target] with [parent]!"), \
|
||||
SPAN_USERDANGER("[user] touches you with [parent], and you feel a strong jolt!"))
|
||||
playsound(get_turf(parent), zap_sound, 50, TRUE, -1)
|
||||
SEND_SIGNAL(target, COMSIG_LIVING_MINOR_SHOCK, 100)
|
||||
set_cooldown(cooldown)
|
||||
return
|
||||
target.visible_message("<span class='danger'>[user] touches [target] lightly with [parent]!</span>")
|
||||
target.visible_message(SPAN_DANGER("[user] touches [target] lightly with [parent]!"))
|
||||
set_cooldown(2.5 SECONDS)
|
||||
|
||||
/*
|
||||
@@ -407,8 +407,8 @@
|
||||
if(electrocute_mob(affecting, power_source, origin)) // shock anyone touching them >:)
|
||||
var/datum/organ/heart/heart = affecting.get_int_organ_datum(ORGAN_DATUM_HEART)
|
||||
if(heart.linked_organ.parent_organ == "chest" && affecting.has_both_hands()) // making sure the shock will go through their heart (drask hearts are in their head), and that they have both arms so the shock can cross their heart inside their chest
|
||||
affecting.visible_message("<span class='danger'>[affecting]'s entire body shakes as a shock travels up [affecting.p_their()] arm!</span>", \
|
||||
"<span class='userdanger'>You feel a powerful shock travel up your [affecting.hand ? affecting.get_organ("l_arm") : affecting.get_organ("r_arm")] and back down your [affecting.hand ? affecting.get_organ("r_arm") : affecting.get_organ("l_arm")]!</span>")
|
||||
affecting.visible_message(SPAN_DANGER("[affecting]'s entire body shakes as a shock travels up [affecting.p_their()] arm!"), \
|
||||
SPAN_USERDANGER("You feel a powerful shock travel up your [affecting.hand ? affecting.get_organ("l_arm") : affecting.get_organ("r_arm")] and back down your [affecting.hand ? affecting.get_organ("r_arm") : affecting.get_organ("l_arm")]!"))
|
||||
affecting.set_heartattack(TRUE)
|
||||
|
||||
#undef DEFIB_TIME
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
/datum/component/direct_explosive_trap/proc/on_examined(datum/source, mob/user, list/examine_text)
|
||||
SIGNAL_HANDLER // COMSIG_PARENT_EXAMINE
|
||||
if(get_dist(source, user) <= 2)
|
||||
examine_text += "<span class='notice'>Looks odd!</span>"
|
||||
examine_text += SPAN_NOTICE("Looks odd!")
|
||||
|
||||
/// Blow up
|
||||
/datum/component/direct_explosive_trap/proc/explode(atom/source, mob/living/victim)
|
||||
@@ -77,9 +77,9 @@
|
||||
return
|
||||
else if(result == DIRECT_EXPLOSIVE_TRAP_IGNORE)
|
||||
return
|
||||
to_chat(victim, "<span class='danger'>[source] was boobytrapped!</span>")
|
||||
to_chat(victim, SPAN_DANGER("[source] was boobytrapped!"))
|
||||
if(!isnull(saboteur))
|
||||
to_chat(saboteur, "<span class='danger'>Success! Your trap on [source] caught [victim.name]!</span>")
|
||||
to_chat(saboteur, SPAN_DANGER("Success! Your trap on [source] caught [victim.name]!"))
|
||||
playsound(source, 'sound/effects/explosion2.ogg', 200, TRUE)
|
||||
victim.ex_act(explosive_force)
|
||||
// A bomb went off in your hands. Actually lets people follow up with it if
|
||||
@@ -90,7 +90,7 @@
|
||||
/// Called if we sit too long without going off
|
||||
/datum/component/direct_explosive_trap/proc/bomb_expired()
|
||||
if(!isnull(saboteur))
|
||||
to_chat(saboteur, "<span class='danger'>Failure! Your trap on [parent] didn't catch anyone this time.</span>")
|
||||
to_chat(saboteur, SPAN_DANGER("Failure! Your trap on [parent] didn't catch anyone this time."))
|
||||
qdel(src)
|
||||
|
||||
/// Don't hang a reference to the person who placed the bomb
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
I.add_tape()
|
||||
|
||||
/datum/component/proc/add_tape_text(datum/source, mob/user, list/examine_list)
|
||||
examine_list += "<span class='notice'>There's some sticky tape attached to [source].</span>"
|
||||
examine_list += SPAN_NOTICE("There's some sticky tape attached to [source].")
|
||||
|
||||
/datum/component/ducttape/proc/add_tape_overlay(obj/item/O, list/overlays)
|
||||
SIGNAL_HANDLER // COMSIG_ATOM_UPDATE_OVERLAYS
|
||||
@@ -32,7 +32,7 @@
|
||||
overlays += tape_overlay
|
||||
|
||||
/datum/component/ducttape/proc/remove_tape(obj/item/I, mob/user)
|
||||
to_chat(user, "<span class='notice'>You tear the tape off [I]!</span>")
|
||||
to_chat(user, SPAN_NOTICE("You tear the tape off [I]!"))
|
||||
playsound(I, 'sound/items/poster_ripped.ogg', 50, 1)
|
||||
new /obj/item/trash/tapetrash(user.loc)
|
||||
I.update_icon()
|
||||
@@ -58,7 +58,7 @@
|
||||
var/target_direction = get_dir(source_turf, target_turf)//The direction we clicked
|
||||
// Snowflake diagonal handling
|
||||
if(target_direction in GLOB.diagonals)
|
||||
to_chat(user, "<span class='warning'>You can't reach [target_turf].</span>")
|
||||
to_chat(user, SPAN_WARNING("You can't reach [target_turf]."))
|
||||
return
|
||||
if(target_direction & EAST)
|
||||
x_offset = 16
|
||||
@@ -74,7 +74,7 @@
|
||||
y_offset = -16
|
||||
if(!user.drop_item_to_ground(I))
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You stick [I] to [target_turf].</span>")
|
||||
to_chat(user, SPAN_NOTICE("You stick [I] to [target_turf]."))
|
||||
I.pixel_x = x_offset
|
||||
I.pixel_y = y_offset
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
return
|
||||
|
||||
if(SEND_SIGNAL(parent, COMSIG_TWOHANDED_WIELDED_TRY_WIELD_INTERACT) && airlock.arePowerSystemsOn())
|
||||
to_chat(user, "<span class='warning'>You need to be wielding [parent] to do that!</span>")
|
||||
to_chat(user, SPAN_WARNING("You need to be wielding [parent] to do that!"))
|
||||
return TRUE
|
||||
|
||||
if(!airlock.density)
|
||||
@@ -94,7 +94,7 @@
|
||||
|
||||
// opening failed
|
||||
if(airlock.density)
|
||||
to_chat(user, "<span class='warning'>Despite your attempts, [airlock] refuses to open.</span>")
|
||||
to_chat(user, SPAN_WARNING("Despite your attempts, [airlock] refuses to open."))
|
||||
|
||||
/// open door without checks
|
||||
/datum/component/forces_doors_open/proc/open_unpowered_door(obj/machinery/door/door)
|
||||
@@ -110,7 +110,7 @@
|
||||
|
||||
var/obj/item/melee/mantis_blade/secondblade = user.get_inactive_hand()
|
||||
if(!istype(secondblade, /obj/item/melee/mantis_blade))
|
||||
to_chat(user, "<span class='warning'>You need a second [parent] to pry open doors!</span>")
|
||||
to_chat(user, SPAN_WARNING("You need a second [parent] to pry open doors!"))
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
if(try_to_force_open_airlock(user, target))
|
||||
|
||||
@@ -290,7 +290,7 @@
|
||||
|
||||
var/other_hand = shooter.get_organ(shooter.hand ? BODY_ZONE_PRECISE_R_HAND : BODY_ZONE_PRECISE_L_HAND)
|
||||
if(weapon_weight == WEAPON_HEAVY && (shooter.get_inactive_hand() || !other_hand))
|
||||
to_chat(shooter, "<span class='warning'>You need to use both hands!</span>")
|
||||
to_chat(shooter, SPAN_WARNING("You need to use both hands!"))
|
||||
return FALSE
|
||||
|
||||
return TRUE
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
var/mob/living/our_mob = parent
|
||||
if(our_mob.stat == DEAD || our_mob.key || awaiting_ghosts)
|
||||
return
|
||||
examine_text += "<span class='boldnotice'>You could take control of this mob by clicking on it.</span>"
|
||||
examine_text += SPAN_BOLDNOTICE("You could take control of this mob by clicking on it.")
|
||||
|
||||
/// Send out a request for a brain
|
||||
/datum/component/ghost_direct_control/proc/request_ghost_control(poll_question, role_name, poll_length)
|
||||
@@ -95,10 +95,10 @@
|
||||
if(!hopeful_ghost.client)
|
||||
return COMPONENT_CANCEL_ATTACK_CHAIN
|
||||
if(awaiting_ghosts)
|
||||
to_chat(hopeful_ghost, "<span class='warning'>Ghost candidate selection currently in progress!</span>")
|
||||
to_chat(hopeful_ghost, SPAN_WARNING("Ghost candidate selection currently in progress!"))
|
||||
return COMPONENT_CANCEL_ATTACK_CHAIN
|
||||
if(!SSticker.HasRoundStarted())
|
||||
to_chat(hopeful_ghost, "<span class='warning'>You cannot assume control of this until after the round has started!</span>")
|
||||
to_chat(hopeful_ghost, SPAN_WARNING("You cannot assume control of this until after the round has started!"))
|
||||
return COMPONENT_CANCEL_ATTACK_CHAIN
|
||||
INVOKE_ASYNC(src, PROC_REF(attempt_possession), our_mob, hopeful_ghost)
|
||||
return COMPONENT_CANCEL_ATTACK_CHAIN
|
||||
@@ -113,17 +113,17 @@
|
||||
/// Grant possession of our mob, component is now no longer required
|
||||
/datum/component/ghost_direct_control/proc/assume_direct_control(mob/harbinger)
|
||||
if(QDELETED(src))
|
||||
to_chat(harbinger, "<span class='warning'>Offer to possess creature has expired!</span>")
|
||||
to_chat(harbinger, SPAN_WARNING("Offer to possess creature has expired!"))
|
||||
return
|
||||
if(jobban_isbanned(harbinger, ban_type) || jobban_isbanned(harbinger, ROLE_SENTIENT) || (is_antag_spawner && jobban_isbanned(harbinger, ROLE_SYNDICATE)))
|
||||
to_chat(harbinger, "<span class='warning'>You are banned from playing as this role!</span>")
|
||||
to_chat(harbinger, SPAN_WARNING("You are banned from playing as this role!"))
|
||||
return
|
||||
var/mob/living/new_body = parent
|
||||
if(new_body.stat == DEAD)
|
||||
to_chat(harbinger, "<span class='warning'>This body has passed away, it is of no use!</span>")
|
||||
to_chat(harbinger, SPAN_WARNING("This body has passed away, it is of no use!"))
|
||||
return
|
||||
if(new_body.key)
|
||||
to_chat(harbinger, "<span class='warning'>[parent] has already become sapient!</span>")
|
||||
to_chat(harbinger, SPAN_WARNING("[parent] has already become sapient!"))
|
||||
qdel(src)
|
||||
return
|
||||
if(extra_control_checks && !extra_control_checks.Invoke(harbinger))
|
||||
@@ -142,6 +142,6 @@
|
||||
// This proc is called the very moment .key is set, so we need to force mind to initialize here if we want the invoke to affect the mind of the mob
|
||||
if(isnull(harbinger.mind))
|
||||
harbinger.mind_initialize()
|
||||
to_chat(harbinger, "<span class='boldnotice'>[assumed_control_message]</span>")
|
||||
to_chat(harbinger, SPAN_BOLDNOTICE("[assumed_control_message]"))
|
||||
after_assumed_control?.Invoke(harbinger)
|
||||
qdel(src)
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
apply_label()
|
||||
|
||||
/datum/component/label/proc/on_examine(datum/source, mob/user, list/examine_list)
|
||||
examine_list += "<span class='notice'>It has a label with some words written on it. Use a hand labeler to remove it.</span>"
|
||||
examine_list += SPAN_NOTICE("It has a label with some words written on it. Use a hand labeler to remove it.")
|
||||
|
||||
/// Applies a label to the name of the parent in the format of: "parent_name (label)"
|
||||
/datum/component/label/proc/apply_label()
|
||||
@@ -94,7 +94,7 @@
|
||||
owner = person
|
||||
if(department)
|
||||
owner += " in [department]"
|
||||
|
||||
|
||||
if(from_cc)
|
||||
label_name = owner
|
||||
else
|
||||
@@ -113,4 +113,4 @@
|
||||
|
||||
/// Adds detailed information to the examine text.
|
||||
/datum/component/label/goal/on_examine(datum/source, mob/user, list/examine_list)
|
||||
examine_list += "<span class='notice'>It has a label on it, marking it as part of a secondary goal for [owner]. Use a hand labeler to remove it.</span>"
|
||||
examine_list += SPAN_NOTICE("It has a label on it, marking it as part of a secondary goal for [owner]. Use a hand labeler to remove it.")
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
var/datum/material/M = materials[I]
|
||||
var/amt = amount(M.id)
|
||||
if(amt)
|
||||
examine_list += "<span class='notice'>It has [amt] units of [lowertext(M.name)] stored.</span>"
|
||||
examine_list += SPAN_NOTICE("It has [amt] units of [lowertext(M.name)] stored.")
|
||||
|
||||
/datum/component/material_container/proc/OnAttackBy(datum/source, obj/item/I, mob/living/user)
|
||||
var/list/tc = allowed_typecache
|
||||
@@ -72,7 +72,7 @@
|
||||
if(I.flags & ABSTRACT)
|
||||
return
|
||||
if((I.flags_2 & (HOLOGRAM_2 | NO_MAT_REDEMPTION_2)) || (tc && !is_type_in_typecache(I, tc)))
|
||||
to_chat(user, "<span class='warning'>[parent] won't accept [I]!</span>")
|
||||
to_chat(user, SPAN_WARNING("[parent] won't accept [I]!"))
|
||||
return
|
||||
. = COMPONENT_SKIP_AFTERATTACK
|
||||
var/datum/callback/pc = precondition
|
||||
@@ -80,10 +80,10 @@
|
||||
return
|
||||
var/material_amount = get_item_material_amount(I)
|
||||
if(!material_amount)
|
||||
to_chat(user, "<span class='warning'>[I] does not contain sufficient amounts of metal or glass to be accepted by [parent].</span>")
|
||||
to_chat(user, SPAN_WARNING("[I] does not contain sufficient amounts of metal or glass to be accepted by [parent]."))
|
||||
return
|
||||
if(!has_space(material_amount))
|
||||
to_chat(user, "<span class='warning'>[parent] is full. Please remove metal or glass from [parent] in order to insert more.</span>")
|
||||
to_chat(user, SPAN_WARNING("[parent] is full. Please remove metal or glass from [parent] in order to insert more."))
|
||||
return
|
||||
user_insert(I, user)
|
||||
|
||||
@@ -99,18 +99,18 @@
|
||||
if(QDELETED(I) || QDELETED(user) || QDELETED(src) || parent != current_parent || user.incapacitated() || !in_range(current_parent, user) || user.l_hand != I && user.r_hand != I)
|
||||
return
|
||||
if(!user.drop_item())
|
||||
to_chat(user, "<span class='warning'>[I] is stuck to you and cannot be placed into [parent].</span>")
|
||||
to_chat(user, SPAN_WARNING("[I] is stuck to you and cannot be placed into [parent]."))
|
||||
return
|
||||
var/inserted = insert_item(I, stack_amt = requested_amount)
|
||||
if(inserted)
|
||||
if(istype(I, /obj/item/stack))
|
||||
var/obj/item/stack/S = I
|
||||
to_chat(user, "<span class='notice'>You insert [inserted] [S.singular_name][inserted>1 ? "s" : ""] into [parent].</span>")
|
||||
to_chat(user, SPAN_NOTICE("You insert [inserted] [S.singular_name][inserted>1 ? "s" : ""] into [parent]."))
|
||||
if(!QDELETED(I) && !user.put_in_hands(I))
|
||||
stack_trace("Warning: User could not put object back in hand during material container insertion, line [__LINE__]! This can lead to issues.")
|
||||
I.forceMove(user.drop_location())
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You insert a material total of [inserted] into [parent].</span>")
|
||||
to_chat(user, SPAN_NOTICE("You insert a material total of [inserted] into [parent]."))
|
||||
qdel(I)
|
||||
if(after_insert)
|
||||
after_insert.Invoke(I.type, last_inserted_id, inserted)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
return
|
||||
. = COMPONENT_SKIP_AFTERATTACK
|
||||
if(spraycan.capped)
|
||||
to_chat(user, "<span class='warning'>Take the cap off first!</span>")
|
||||
to_chat(user, SPAN_WARNING("Take the cap off first!"))
|
||||
return
|
||||
if(spraycan.uses < 2)
|
||||
to_chat(user, "<span class ='warning'>There is not enough paint in the can!")
|
||||
@@ -28,4 +28,4 @@
|
||||
var/atom/A = parent
|
||||
A.add_atom_colour(colour, FIXED_COLOUR_PRIORITY)
|
||||
playsound(spraycan, 'sound/effects/spray.ogg', 5, TRUE, 5)
|
||||
to_chat(user, "<span class='notice'>You spray [spraycan] on [A], painting it.</span>")
|
||||
to_chat(user, SPAN_NOTICE("You spray [spraycan] on [A], painting it."))
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
for(var/attack_type in parryable_attack_types)
|
||||
attack_list += attack_types_english[attack_type]
|
||||
|
||||
examine_text = "<span class='notice'>It's able to <b>parry</b> [english_list(attack_list)].</span>"
|
||||
examine_text = SPAN_NOTICE("It's able to <b>parry</b> [english_list(attack_list)].")
|
||||
|
||||
/datum/component/parry/proc/equipped(datum/source, mob/user, slot)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
@@ -57,4 +57,4 @@
|
||||
return
|
||||
if(!(user in source.ai_controller?.blackboard[BB_FRIENDS_LIST]))
|
||||
return
|
||||
examine_list += "<span class='notice'>[source.p_they(TRUE)] seem[source.p_s()] happy to see you!</span>"
|
||||
examine_list += SPAN_NOTICE("[source.p_they(TRUE)] seem[source.p_s()] happy to see you!")
|
||||
|
||||
@@ -175,5 +175,5 @@
|
||||
if(!look_for_target(friend, potential_target) || !set_command_target(parent, potential_target))
|
||||
return FALSE
|
||||
var/suffix = pointed_reaction ? " [pointed_reaction]" : ""
|
||||
parent.visible_message("<span class='warning'>[parent] follows [friend]'s gesture towards [potential_target][suffix]!</span>")
|
||||
parent.visible_message(SPAN_WARNING("[parent] follows [friend]'s gesture towards [potential_target][suffix]!"))
|
||||
return TRUE
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
/datum/pet_command/attack/proc/refuse_target(mob/living/parent, atom/target)
|
||||
var/mob/living/living_parent = parent
|
||||
living_parent.custom_emote(EMOTE_VISIBLE, refuse_reaction)
|
||||
living_parent.visible_message("<span class='notice'>[living_parent] refuses to attack [target].</span>")
|
||||
living_parent.visible_message(SPAN_NOTICE("[living_parent] refuses to attack [target]."))
|
||||
|
||||
/datum/pet_command/attack/execute_action(datum/ai_controller/controller)
|
||||
controller.queue_behavior(attack_behaviour, BB_CURRENT_PET_TARGET, targeting_strategy_key)
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
fragments += "[length(fragments) ? " and [master.p_they()] " : "[master] "]hurt[master.p_s()] to look at."
|
||||
|
||||
if(length(fragments))
|
||||
out += "<span class='warning'>[fragments.Join()]</span>"
|
||||
out += SPAN_WARNING("[fragments.Join()]")
|
||||
|
||||
/datum/component/radioactive/proc/rad_attack(datum/source, atom/movable/target, mob/living/user)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
/// This proc is called when the rider attempts to grab something, preventing them from doing so.
|
||||
/datum/component/riding/proc/on_rider_try_pull(mob/living/rider_pulling, atom/movable/target, force)
|
||||
SIGNAL_HANDLER // COMSIG_LIVING_TRY_PULL
|
||||
to_chat(rider_pulling, "<span class='warning'>You can't pull [target]!</span>")
|
||||
to_chat(rider_pulling, SPAN_WARNING("You can't pull [target]!"))
|
||||
return COMSIG_LIVING_CANCEL_PULL
|
||||
|
||||
/// Some ridable atoms may want to only show on top of the rider in certain directions, like wheelchairs
|
||||
|
||||
@@ -19,43 +19,43 @@
|
||||
|
||||
if(!keycheck(user))
|
||||
if(COOLDOWN_FINISHED(src, message_cooldown))
|
||||
to_chat(user, "<span class='warning'>[vehicle_parent] has no key inserted!</span>")
|
||||
to_chat(user, SPAN_WARNING("[vehicle_parent] has no key inserted!"))
|
||||
COOLDOWN_START(src, message_cooldown, 5 SECONDS)
|
||||
return COMPONENT_DRIVER_BLOCK_MOVE
|
||||
|
||||
if(user.incapacitated())
|
||||
if(ride_check_flags & UNBUCKLE_DISABLED_RIDER)
|
||||
INVOKE_ASYNC(vehicle_parent, TYPE_PROC_REF(/atom/movable, unbuckle_mob), user, TRUE)
|
||||
user.visible_message("<span class='danger'>[user] falls off [vehicle_parent].</span>",\
|
||||
"<span class='danger'>You slip off [vehicle_parent] as your body slumps!</span>")
|
||||
user.visible_message(SPAN_DANGER("[user] falls off [vehicle_parent]."),\
|
||||
SPAN_DANGER("You slip off [vehicle_parent] as your body slumps!"))
|
||||
user.Stun(3 SECONDS)
|
||||
|
||||
if(COOLDOWN_FINISHED(src, message_cooldown))
|
||||
to_chat(user, "<span class='warning'>You cannot operate [vehicle_parent] right now!</span>")
|
||||
to_chat(user, SPAN_WARNING("You cannot operate [vehicle_parent] right now!"))
|
||||
COOLDOWN_START(src, message_cooldown, 5 SECONDS)
|
||||
return COMPONENT_DRIVER_BLOCK_MOVE
|
||||
|
||||
if(ride_check_flags & RIDER_NEEDS_LEGS && HAS_TRAIT(user, TRAIT_FLOORED))
|
||||
if(ride_check_flags & UNBUCKLE_DISABLED_RIDER)
|
||||
INVOKE_ASYNC(vehicle_parent, TYPE_PROC_REF(/atom/movable, unbuckle_mob), user, TRUE)
|
||||
user.visible_message("<span class='danger'>[user] falls off [vehicle_parent].</span>",\
|
||||
"<span class='danger'>You fall off [vehicle_parent] while trying to operate it while unable to stand!</span>")
|
||||
user.visible_message(SPAN_DANGER("[user] falls off [vehicle_parent]."),\
|
||||
SPAN_DANGER("You fall off [vehicle_parent] while trying to operate it while unable to stand!"))
|
||||
user.Stun(3 SECONDS)
|
||||
|
||||
if(COOLDOWN_FINISHED(src, message_cooldown))
|
||||
to_chat(user, "<span class='warning'>You can't seem to manage that while unable to stand up enough to move [vehicle_parent]...</span>")
|
||||
to_chat(user, SPAN_WARNING("You can't seem to manage that while unable to stand up enough to move [vehicle_parent]..."))
|
||||
COOLDOWN_START(src, message_cooldown, 5 SECONDS)
|
||||
return COMPONENT_DRIVER_BLOCK_MOVE
|
||||
|
||||
if(ride_check_flags & RIDER_NEEDS_ARMS && HAS_TRAIT(user, TRAIT_HANDS_BLOCKED))
|
||||
if(ride_check_flags & UNBUCKLE_DISABLED_RIDER)
|
||||
INVOKE_ASYNC(vehicle_parent, TYPE_PROC_REF(/atom/movable, unbuckle_mob), user, TRUE)
|
||||
user.visible_message("<span class='danger'>[user] falls off [vehicle_parent].</span>",\
|
||||
"<span class='danger'>You fall off [vehicle_parent] while trying to operate it without being able to hold on!</span>")
|
||||
user.visible_message(SPAN_DANGER("[user] falls off [vehicle_parent]."),\
|
||||
SPAN_DANGER("You fall off [vehicle_parent] while trying to operate it without being able to hold on!"))
|
||||
user.Stun(3 SECONDS)
|
||||
|
||||
if(COOLDOWN_FINISHED(src, message_cooldown))
|
||||
to_chat(user, "<span class='warning'>You can't seem to hold onto [vehicle_parent] to move it...</span>")
|
||||
to_chat(user, SPAN_WARNING("You can't seem to hold onto [vehicle_parent] to move it..."))
|
||||
COOLDOWN_START(src, message_cooldown, 5 SECONDS)
|
||||
return COMPONENT_DRIVER_BLOCK_MOVE
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
if(!istype(next) || !istype(current))
|
||||
return //not happening.
|
||||
if(!turf_check(next, current))
|
||||
to_chat(user, "<span class='warning'>[movable_parent] cannot go onto [next]!</span>")
|
||||
to_chat(user, SPAN_WARNING("[movable_parent] cannot go onto [next]!"))
|
||||
return
|
||||
if(GLOB.move_manager.processing_on(movable_parent, SSspacedrift) && !override_allow_spacemove)
|
||||
return
|
||||
@@ -126,7 +126,7 @@
|
||||
|
||||
/datum/component/riding/vehicle/scooter/skateboard/proc/on_examine(datum/source, mob/user, list/examine_list)
|
||||
SIGNAL_HANDLER //COMSIG_PARENT_EXAMINE
|
||||
examine_list += "<span class='notice'>Going nice and slow at walk speed will prevent crashing into things.</span>"
|
||||
examine_list += SPAN_NOTICE("Going nice and slow at walk speed will prevent crashing into things.")
|
||||
|
||||
/datum/component/riding/vehicle/scooter/skateboard/vehicle_mob_buckle(datum/source, mob/living/rider, force = FALSE)
|
||||
. = ..()
|
||||
@@ -157,8 +157,8 @@
|
||||
if((L.getStaminaLoss() >= 60 || L.health <= 40) && !L.absorb_stun(0)) // Only injured people can be shot off. Hulks and people on stimulants can not be shot off.
|
||||
S.unbuckle_mob(L)
|
||||
L.KnockDown(2 SECONDS)
|
||||
L.visible_message("<span class='warning'>[L] gets shot off [S] by [projectile]!</span>",
|
||||
"<span class='warning'>You get shot off [S] by [projectile]!</span>")
|
||||
L.visible_message(SPAN_WARNING("[L] gets shot off [S] by [projectile]!"),
|
||||
SPAN_WARNING("You get shot off [S] by [projectile]!"))
|
||||
|
||||
/datum/component/riding/vehicle/scooter/skateboard/pro
|
||||
vehicle_move_delay = 1
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
if(!is_zoomed_in())
|
||||
return
|
||||
if(source.loc != tracker.owner) //Dropped.
|
||||
to_chat(tracker.owner, "<span class='warning'>[parent]'s scope is overloaded by movement and shuts down!</span>")
|
||||
to_chat(tracker.owner, SPAN_WARNING("[parent]'s scope is overloaded by movement and shuts down!"))
|
||||
stop_zooming(tracker.owner)
|
||||
|
||||
/datum/component/scope/proc/on_action_trigger(datum/action/source)
|
||||
@@ -113,7 +113,7 @@
|
||||
var/scope = istype(parent, /obj/item/gun) ? "scope in" : "zoom out"
|
||||
switch(zoom_method)
|
||||
if(ZOOM_METHOD_WIELD)
|
||||
examine_list += "<span class='notice'>You can [scope] by wielding it with both hands.</span>"
|
||||
examine_list += SPAN_NOTICE("You can [scope] by wielding it with both hands.")
|
||||
|
||||
/**
|
||||
* We find and return the best target to hit on a given turf.
|
||||
@@ -154,13 +154,13 @@
|
||||
if(isnull(user.client))
|
||||
return
|
||||
if(HAS_TRAIT(user, TRAIT_SCOPED))
|
||||
to_chat(user, "<span class='warning'>You are already zoomed in!</span>")
|
||||
to_chat(user, SPAN_WARNING("You are already zoomed in!"))
|
||||
return
|
||||
if((flags & SCOPE_TURF_ONLY) && !isturf(user.loc))
|
||||
to_chat(user, "<span class='warning'>There is not enough space to zoom in!</span>")
|
||||
to_chat(user, SPAN_WARNING("There is not enough space to zoom in!"))
|
||||
return
|
||||
if((flags & SCOPE_NEED_ACTIVE_HAND) && user.get_active_hand() != parent)
|
||||
to_chat(user, "<span class='warning'>You need to hold [parent] in your active hand to zoom in!</span>")
|
||||
to_chat(user, SPAN_WARNING("You need to hold [parent] in your active hand to zoom in!"))
|
||||
return
|
||||
if(time_to_scope)
|
||||
if(!do_after_once(user, time_to_scope, target = parent))
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
return
|
||||
|
||||
var/joined_results = english_list(results)
|
||||
examine_list += "<span class='notice'>It currently holds: [joined_results].</span>"
|
||||
examine_list += SPAN_NOTICE("It currently holds: [joined_results].")
|
||||
|
||||
/datum/component/shelver/proc/prepare_autoshelf()
|
||||
SIGNAL_HANDLER // COMSIG_SHELF_ADDED_ON_MAPLOAD
|
||||
@@ -131,7 +131,7 @@
|
||||
return
|
||||
|
||||
if(length(allowed_types) && !(attacker.type in allowed_types))
|
||||
to_chat(user, "<span class='notice'>[attacker] won't fit on [parent]!</span>")
|
||||
to_chat(user, SPAN_NOTICE("[attacker] won't fit on [parent]!"))
|
||||
return COMPONENT_SKIP_AFTERATTACK
|
||||
|
||||
var/list/PL = params2list(params)
|
||||
@@ -143,15 +143,15 @@
|
||||
i++
|
||||
if(icon_x >= coords[1] && icon_x <= coords[3] && icon_y >= coords[2] && icon_y <= coords[4])
|
||||
if(used_places[i])
|
||||
to_chat(user, "<span class='notice'>There's already something there on [parent].</span>")
|
||||
to_chat(user, SPAN_NOTICE("There's already something there on [parent]."))
|
||||
return COMPONENT_SKIP_AFTERATTACK
|
||||
|
||||
var/position_details = placement_zones[coords]
|
||||
if(user.drop_item())
|
||||
add_item(attacker, i, position_details)
|
||||
user.visible_message(
|
||||
"<span class='notice'>[user] places [attacker] on [parent].</span>",
|
||||
"<span class='notice'>You place [attacker] on [parent].</span>",
|
||||
SPAN_NOTICE("[user] places [attacker] on [parent]."),
|
||||
SPAN_NOTICE("You place [attacker] on [parent]."),
|
||||
)
|
||||
return COMPONENT_SKIP_AFTERATTACK
|
||||
|
||||
@@ -301,7 +301,7 @@
|
||||
CRASH("received non-obj shelf with UID [shelf_uid]")
|
||||
|
||||
var/shelf_name = shelf ? "flies off [shelf]" : "falls down"
|
||||
O.visible_message("<span class='notice'>[O] [shelf_name]!</span>")
|
||||
O.visible_message(SPAN_NOTICE("[O] [shelf_name]!"))
|
||||
O.throw_at(pick(clear_turfs), 2, 3)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
/// Default on_hit proc, since cult robes are stupid and have different descriptions/sparks
|
||||
/datum/component/shielded/proc/default_run_hit_callback(mob/living/owner, attack_text, current_charges)
|
||||
do_sparks(2, TRUE, owner)
|
||||
owner.visible_message("<span class='danger'>[owner]'s shields deflect [attack_text] in a shower of sparks!</span>")
|
||||
owner.visible_message(SPAN_DANGER("[owner]'s shields deflect [attack_text] in a shower of sparks!"))
|
||||
if(current_charges <= 0)
|
||||
owner.visible_message("<span class='warning'>[owner]'s shield overloads!</span>")
|
||||
owner.visible_message(SPAN_WARNING("[owner]'s shield overloads!"))
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
L.nest = src
|
||||
L.faction = src.faction
|
||||
ADD_TRAIT(L, TRAIT_FROM_TENDRIL, INNATE_TRAIT)
|
||||
P.visible_message("<span class='danger'>[L] [spawn_text] [P].</span>")
|
||||
P.visible_message(SPAN_DANGER("[L] [spawn_text] [P]."))
|
||||
P.on_mob_spawn(L)
|
||||
return L
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/datum/component/special_tastes
|
||||
/// associated list of item to reagents and tastes
|
||||
/// Typepath = (list(reagents = list(reagents), tastes = list(tastes)); Ex: list(/obj/item/stack/sheet/mineral/silver = list("reagents" = list("nutriment" = 5, "vitamin" = 1), "tastes" = list("metal and blood" = 1)))
|
||||
var/list/obj/item/edible_items = list()
|
||||
var/list/obj/item/edible_items = list()
|
||||
|
||||
/datum/component/special_tastes/Initialize(list/edible_items)
|
||||
if(!length(edible_items))
|
||||
@@ -37,7 +37,7 @@
|
||||
if(istype(attacking_item, /obj/item/stack))
|
||||
var/obj/item/stack/stacked_item = attacking_item
|
||||
if(stacked_item.amount > 1)
|
||||
to_chat(user, "<span class='notice'>You can only eat one of [stacked_item] at a time.</span>")
|
||||
to_chat(user, SPAN_NOTICE("You can only eat one of [stacked_item] at a time."))
|
||||
return
|
||||
var/obj/item/food/food = turn_into_food(attacking_item, similar_to)
|
||||
user.drop_item_to_ground(attacking_item, TRUE, TRUE)
|
||||
@@ -50,7 +50,7 @@
|
||||
food.On_Consume(user, user)
|
||||
qdel(attacking_item)
|
||||
return // couldnt eat it, undo
|
||||
to_chat(user, "<span class='notice'>You are too full to eat [attacking_item].</span>")
|
||||
to_chat(user, SPAN_NOTICE("You are too full to eat [attacking_item]."))
|
||||
user.drop_item_to_ground(food, TRUE, TRUE)
|
||||
user.put_in_active_hand(attacking_item)
|
||||
qdel(food)
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
if((H.getStaminaLoss() > 95) && (!istype(H.dna.species, /datum/species/diona) && !istype(H.dna.species, /datum/species/machine) && !istype(H.dna.species, /datum/species/slime) && !istype(H.dna.species, /datum/species/golem) && !istype(H.dna.species, /datum/species/plasmaman) && !istype(H.dna.species, /datum/species/skeleton)))
|
||||
H.Stun(40 SECONDS)
|
||||
H.set_species(/datum/species/skeleton) // Makes the OP skelly
|
||||
H.visible_message("<span class='warning'>[H] has given up on life as a mortal.</span>")
|
||||
H.visible_message(SPAN_WARNING("[H] has given up on life as a mortal."))
|
||||
var/T = get_turf(H)
|
||||
if(too_spooky)
|
||||
if(prob(30))
|
||||
@@ -45,9 +45,9 @@
|
||||
else if(prob(30))
|
||||
new/obj/item/instrument/trombone/spectral(T)
|
||||
else
|
||||
to_chat(H, "<span class='boldwarning'>The spooky gods forgot to ship your instrument. Better luck next unlife.</span>")
|
||||
to_chat(H, "<span class='boldnotice'>You are the spooky skeleton!</span>")
|
||||
to_chat(H, "<span class='boldnotice'>A new life and identity has begun. Help your fellow skeletons into bringing out the spooky-pocalypse. You haven't forgotten your past life, and are still beholden to past loyalties.</span>")
|
||||
to_chat(H, SPAN_BOLDWARNING("The spooky gods forgot to ship your instrument. Better luck next unlife."))
|
||||
to_chat(H, SPAN_BOLDNOTICE("You are the spooky skeleton!"))
|
||||
to_chat(H, SPAN_BOLDNOTICE("A new life and identity has begun. Help your fellow skeletons into bringing out the spooky-pocalypse. You haven't forgotten your past life, and are still beholden to past loyalties."))
|
||||
change_name(H) //time for a new name!
|
||||
|
||||
/datum/component/spooky/proc/change_name(mob/living/carbon/human/H)
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
if(attached_to)
|
||||
if(!QDELETED(parent) && isitem(parent))
|
||||
var/obj/item/I = parent
|
||||
I.visible_message("<span class='notice'>[parent] falls off of [attached_to].</span>")
|
||||
I.visible_message(SPAN_NOTICE("[parent] falls off of [attached_to]."))
|
||||
pick_up(parent)
|
||||
|
||||
move_to_the_thing(parent, get_turf(parent))
|
||||
@@ -55,7 +55,7 @@
|
||||
attached_to = target
|
||||
move_to_the_thing(parent)
|
||||
if(user)
|
||||
to_chat(user, "<span class='notice'>You attach [parent] to [attached_to].</span>")
|
||||
to_chat(user, SPAN_NOTICE("You attach [parent] to [attached_to]."))
|
||||
|
||||
overlay = icon(I.icon, I.icon_state)
|
||||
//Clamp it so that the icon never moves more than 16 pixels in either direction
|
||||
@@ -103,7 +103,7 @@
|
||||
move_to_the_thing(parent)
|
||||
if(user)
|
||||
INVOKE_ASYNC(user, TYPE_PROC_REF(/mob, put_in_hands), I)
|
||||
to_chat(user, "<span class='notice'>You take [parent] off of [attached_to].</span>")
|
||||
to_chat(user, SPAN_NOTICE("You take [parent] off of [attached_to]."))
|
||||
|
||||
|
||||
I.invisibility = initial(I.invisibility)
|
||||
@@ -116,7 +116,7 @@
|
||||
SIGNAL_HANDLER
|
||||
if(!in_range(user, attached_to))
|
||||
return
|
||||
examine_list += "<span class='notice'>There is [parent] attached to [source], grab [attached_to.p_them()] to remove it.</span>"
|
||||
examine_list += SPAN_NOTICE("There is [parent] attached to [source], grab [attached_to.p_them()] to remove it.")
|
||||
|
||||
/datum/component/sticky/proc/on_move(datum/source, oldloc, move_dir)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
|
||||
/datum/component/surgery_initiator/proc/on_parent_examine_more(datum/source, mob/user, list/examine_list)
|
||||
SIGNAL_HANDLER // COMSIG_PARENT_EXAMINE_MORE
|
||||
examine_list += "<span class='notice'>You can use this on someone who is laying down to begin surgery on them.</span>"
|
||||
examine_list += SPAN_NOTICE("You can use this on someone who is laying down to begin surgery on them.")
|
||||
|
||||
/// Keep tabs on the attached item's sharpness.
|
||||
/// This component gets added in atoms when they're made sharp as well.
|
||||
@@ -93,7 +93,7 @@
|
||||
return
|
||||
|
||||
if(L.has_status_effect(STATUS_EFFECT_SUMMONEDGHOST))
|
||||
to_chat(user, "<span class='notice'>You realise that a ghost probably doesn't have any useful organs.</span>")
|
||||
to_chat(user, SPAN_NOTICE("You realise that a ghost probably doesn't have any useful organs."))
|
||||
return //no cult ghost surgery please
|
||||
INVOKE_ASYNC(src, PROC_REF(do_initiate_surgery_moment), target, user)
|
||||
// This signal is actually part of the attack chain, so it needs to return true to stop it
|
||||
@@ -128,9 +128,9 @@
|
||||
|
||||
if(!length(available_surgeries))
|
||||
if(IS_HORIZONTAL(target) || isanimal(target))
|
||||
to_chat(user, "<span class='notice'>There aren't any surgeries you can perform there right now.</span>")
|
||||
to_chat(user, SPAN_NOTICE("There aren't any surgeries you can perform there right now."))
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You can't perform any surgeries there while [target] is standing.</span>")
|
||||
to_chat(user, SPAN_NOTICE("You can't perform any surgeries there while [target] is standing."))
|
||||
return
|
||||
|
||||
// if we have a surgery that should be performed regardless with this item,
|
||||
@@ -170,8 +170,8 @@
|
||||
|
||||
/datum/component/surgery_initiator/proc/cancel_unstarted_surgery_fluff(datum/surgery/the_surgery, mob/living/patient, mob/user, selected_zone)
|
||||
user.visible_message(
|
||||
"<span class='notice'>[user] stops the surgery on [patient]'s [parse_zone(selected_zone)] with [parent].</span>",
|
||||
"<span class='notice'>You stop the surgery on [patient]'s [parse_zone(selected_zone)] with [parent].</span>",
|
||||
SPAN_NOTICE("[user] stops the surgery on [patient]'s [parse_zone(selected_zone)] with [parent]."),
|
||||
SPAN_NOTICE("You stop the surgery on [patient]'s [parse_zone(selected_zone)] with [parent]."),
|
||||
)
|
||||
|
||||
/// Does the surgery de-initiation.
|
||||
@@ -226,7 +226,7 @@
|
||||
else
|
||||
close_tool = locate(/obj/item/crowbar) in user.get_all_slots()
|
||||
if(!close_tool)
|
||||
to_chat(user, "<span class='warning'>You need a prying tool in an inactive slot to stop the surgery!</span>")
|
||||
to_chat(user, SPAN_WARNING("You need a prying tool in an inactive slot to stop the surgery!"))
|
||||
return TRUE
|
||||
|
||||
else if(other_hand)
|
||||
@@ -236,7 +236,7 @@
|
||||
break
|
||||
|
||||
if(!close_tool)
|
||||
to_chat(user, "<span class='warning'>You need a [is_robotic ? "prying": "cauterizing"] tool in your inactive hand to stop the surgery!</span>")
|
||||
to_chat(user, SPAN_WARNING("You need a [is_robotic ? "prying": "cauterizing"] tool in your inactive hand to stop the surgery!"))
|
||||
return TRUE
|
||||
|
||||
if(skip_surgery || chosen_close_step.try_op(user, patient, selected_zone, close_tool, the_surgery) == SURGERY_INITIATE_SUCCESS)
|
||||
@@ -255,13 +255,13 @@
|
||||
|
||||
// The item was moved somewhere else
|
||||
if(!(parent in user))
|
||||
to_chat(user, "<span class='warning'>You cannot start an operation if you aren't holding the tool anymore.</span>")
|
||||
to_chat(user, SPAN_WARNING("You cannot start an operation if you aren't holding the tool anymore."))
|
||||
return FALSE
|
||||
|
||||
// While we were choosing, another surgery was started at the same location
|
||||
for(var/datum/surgery/surgery in target.surgeries)
|
||||
if(surgery.location == user.zone_selected)
|
||||
to_chat(user, "<span class='warning'>There's already another surgery in progress on their [parse_zone(surgery.location)].</span>")
|
||||
to_chat(user, SPAN_WARNING("There's already another surgery in progress on their [parse_zone(surgery.location)]."))
|
||||
return FALSE
|
||||
|
||||
return TRUE
|
||||
@@ -280,32 +280,32 @@
|
||||
|
||||
if(surgery.requires_bodypart == isnull(affecting_limb))
|
||||
if(surgery.requires_bodypart)
|
||||
to_chat(user, "<span class='warning'>The patient has no [parse_zone(selected_zone)]!</span>")
|
||||
to_chat(user, SPAN_WARNING("The patient has no [parse_zone(selected_zone)]!"))
|
||||
else
|
||||
to_chat(user, "<span class='warning'>The patient has \a [parse_zone(selected_zone)]!</span>")
|
||||
to_chat(user, SPAN_WARNING("The patient has \a [parse_zone(selected_zone)]!"))
|
||||
|
||||
return
|
||||
|
||||
if(iscarbon(target))
|
||||
if(!isnull(affecting_limb))
|
||||
if((surgery.requires_organic_bodypart && affecting_limb.is_robotic()) || (!surgery.requires_organic_bodypart && !affecting_limb.is_robotic()))
|
||||
to_chat(user, "<span class='warning'>That's not the right type of limb for this operation!</span>")
|
||||
to_chat(user, SPAN_WARNING("That's not the right type of limb for this operation!"))
|
||||
return
|
||||
|
||||
if(surgery_needs_exposure(surgery, target))
|
||||
to_chat(user, "<span class='warning'>You have to expose [target.p_their()] [parse_zone(selected_zone)] first!</span>")
|
||||
to_chat(user, SPAN_WARNING("You have to expose [target.p_their()] [parse_zone(selected_zone)] first!"))
|
||||
return
|
||||
|
||||
if(surgery.lying_required && !on_operable_surface(target))
|
||||
to_chat(user, "<span class='notice'>Patient must be lying down for this operation.</span>")
|
||||
to_chat(user, SPAN_NOTICE("Patient must be lying down for this operation."))
|
||||
return
|
||||
|
||||
if(target == user && !surgery.self_operable)
|
||||
to_chat(user, "<span class='notice'>You can't perform that operation on yourself!</span>")
|
||||
to_chat(user, SPAN_NOTICE("You can't perform that operation on yourself!"))
|
||||
return
|
||||
|
||||
if(!surgery.can_start(user, target))
|
||||
to_chat(user, "<span class='warning'>Can't start the surgery!</span>")
|
||||
to_chat(user, SPAN_WARNING("Can't start the surgery!"))
|
||||
return
|
||||
|
||||
var/datum/surgery/procedure = new surgery.type(target, selected_zone, affecting_limb)
|
||||
@@ -314,7 +314,7 @@
|
||||
if(istype(procedure, /datum/surgery/dissect))
|
||||
if(isnull(target.surgery_container))
|
||||
log_debug("A dissection was started on [target] with contains_xeno_organ as TRUE, however its surgery_container was null!")
|
||||
CRASH("<span class='userdanger'>[target] does not have a dissection surgery information set to it. Please inform an admin or developer.</span>")
|
||||
CRASH(SPAN_USERDANGER("[target] does not have a dissection surgery information set to it. Please inform an admin or developer."))
|
||||
if(ispath(target.surgery_container, /datum/xenobiology_surgery_container))
|
||||
target.surgery_container = new target.surgery_container
|
||||
procedure.steps = target.surgery_container.dissection_tool_step
|
||||
@@ -335,8 +335,8 @@
|
||||
/// Handle to allow for easily overriding the message shown
|
||||
/datum/component/surgery_initiator/proc/show_starting_message(mob/user, mob/living/target, datum/surgery/procedure)
|
||||
user.visible_message(
|
||||
"<span class='notice'>[user] holds [parent] over [target]'s [parse_zone(user.zone_selected)] to prepare for surgery.</span>",
|
||||
"<span class='notice'>You hold [parent] over [target]'s [parse_zone(user.zone_selected)] to prepare for \an [procedure.name].</span>",
|
||||
SPAN_NOTICE("[user] holds [parent] over [target]'s [parse_zone(user.zone_selected)] to prepare for surgery."),
|
||||
SPAN_NOTICE("You hold [parent] over [target]'s [parse_zone(user.zone_selected)] to prepare for \an [procedure.name]."),
|
||||
)
|
||||
|
||||
/datum/component/surgery_initiator/proc/on_prevent_germs()
|
||||
@@ -367,14 +367,14 @@
|
||||
|
||||
/datum/component/surgery_initiator/cloth/show_starting_message(mob/user, mob/living/target, datum/surgery/procedure)
|
||||
user.visible_message(
|
||||
"<span class='notice'>[user] drapes [parent] over [target]'s [parse_zone(user.zone_selected)] to prepare for surgery.</span>",
|
||||
"<span class='notice'>You drape [parent] over [target]'s [parse_zone(user.zone_selected)] to prepare for \an [procedure.name].</span>",
|
||||
SPAN_NOTICE("[user] drapes [parent] over [target]'s [parse_zone(user.zone_selected)] to prepare for surgery."),
|
||||
SPAN_NOTICE("You drape [parent] over [target]'s [parse_zone(user.zone_selected)] to prepare for \an [procedure.name]."),
|
||||
)
|
||||
|
||||
/datum/component/surgery_initiator/cloth/on_surgery_selection(mob/user, mob/living/target, datum/surgery/target_surgery)
|
||||
user.visible_message(
|
||||
"<span class='notice'>[user] starts to apply [parent] onto [target].</span>",
|
||||
"<span class='notice'>You start to apply [parent] onto [target].</span>",
|
||||
SPAN_NOTICE("[user] starts to apply [parent] onto [target]."),
|
||||
SPAN_NOTICE("You start to apply [parent] onto [target]."),
|
||||
)
|
||||
|
||||
if(!isnull(surgery_start_sound))
|
||||
@@ -383,8 +383,8 @@
|
||||
playsound(src, surgery_start_sound)
|
||||
if(!do_after_once(user, 3 SECONDS, TRUE, target))
|
||||
user.visible_message(
|
||||
"<span class='warning'>[user] stops applying [parent] onto [target].</span>",
|
||||
"<span class='warning'>You stop applying [parent] onto [target].</span>"
|
||||
SPAN_WARNING("[user] stops applying [parent] onto [target]."),
|
||||
SPAN_WARNING("You stop applying [parent] onto [target].")
|
||||
)
|
||||
return
|
||||
|
||||
@@ -395,7 +395,7 @@
|
||||
|
||||
/datum/component/surgery_initiator/cloth/on_blood_splash(datum/surgery, mob/user, mob/target, zone, obj/item/tool)
|
||||
if(prob(90 * germ_prevention_quality))
|
||||
target.visible_message("<span class='notice'>Blood splashes onto the dressing.</span>")
|
||||
target.visible_message(SPAN_NOTICE("Blood splashes onto the dressing."))
|
||||
var/obj/item/I = parent // safety: this component can only go onto an item
|
||||
I.add_mob_blood(target)
|
||||
return COMPONENT_BLOOD_SPLASH_HANDLED
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
if(QDELETED(animal) || chosen_name == animal.name)
|
||||
return
|
||||
if(!chosen_name)
|
||||
to_chat(tamer, "<span class='warning'>Please enter a valid name.</span>")
|
||||
to_chat(tamer, SPAN_WARNING("Please enter a valid name."))
|
||||
rename_pet(animal, tamer)
|
||||
return
|
||||
animal.rename_character(animal.name, chosen_name)
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
return
|
||||
var/atom/atom = parent
|
||||
atom?.setDir(get_dir(parent, newloc))
|
||||
to_chat(atom, "<span class='warning'>You can't move in that direction with the [tethered_to] tethered to you!</span>")
|
||||
to_chat(atom, SPAN_WARNING("You can't move in that direction with the [tethered_to] tethered to you!"))
|
||||
return COMPONENT_MOVABLE_BLOCK_PRE_MOVE
|
||||
|
||||
/datum/component/tether/proc/pre_tethered_movement(atom/movable/source, newloc)
|
||||
@@ -86,13 +86,13 @@
|
||||
durability_cost()
|
||||
var/atom/atom = parent
|
||||
atom?.setDir(get_dir(parent, newloc))
|
||||
to_chat(atom, "<span class='warning'>You can't move in that direction with the [tethered_to] tethered to you!</span>")
|
||||
to_chat(atom, SPAN_WARNING("You can't move in that direction with the [tethered_to] tethered to you!"))
|
||||
return COMPONENT_MOVABLE_BLOCK_PRE_MOVE
|
||||
|
||||
/datum/component/tether/proc/can_equip(atom/source, mob/user)
|
||||
// Check to make sure we dont go into an inventory outside of our range
|
||||
if(get_dist(get_turf(parent), get_turf(user)) > max_range)
|
||||
to_chat(user, "<span class='warning'>You try to pick up [tethered_to], you can't pull it's [tether_name] any farther!</span>")
|
||||
to_chat(user, SPAN_WARNING("You try to pick up [tethered_to], you can't pull it's [tether_name] any farther!"))
|
||||
return COMPONENT_CANCEL_ATTACK_CHAIN
|
||||
|
||||
/datum/component/tether/proc/parent_check_bounds(atom/movable/source, atom/mover, atom/old_loc, direction)
|
||||
@@ -167,7 +167,7 @@
|
||||
return
|
||||
durability -= cost
|
||||
if(durability <= 0 && !QDELETED(tethered_to))
|
||||
tethered_to.visible_message("<span class='warning'>[tethered_to]'s [tether_name] wears out and snaps back!</span>")
|
||||
tethered_to.visible_message(SPAN_WARNING("[tethered_to]'s [tether_name] wears out and snaps back!"))
|
||||
terminate()
|
||||
return TRUE // it breaks, let the parent move outside of the range again
|
||||
return FALSE
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
|
||||
/datum/component/tilted/proc/on_examine(datum/source, mob/user, list/examine_list)
|
||||
SIGNAL_HANDLER // COMSIG_PARENT_EXAMINE
|
||||
examine_list += "<span class='notice'>It's been tilted over. <i>Alt+Click</i> it to right it.</span>"
|
||||
examine_list += SPAN_NOTICE("It's been tilted over. <i>Alt+Click</i> it to right it.")
|
||||
|
||||
/datum/component/tilted/proc/on_alt_click(atom/source, mob/user)
|
||||
SIGNAL_HANDLER // COMSIG_CLICK_ALT
|
||||
@@ -59,7 +59,7 @@
|
||||
/datum/component/tilted/proc/on_interact(atom/source, mob/user)
|
||||
SIGNAL_HANDLER // COMSIG_ATOM_ATTACK_HAND
|
||||
if(block_interactions)
|
||||
to_chat(user, "<span class='warning'>You can't do that right now, you need to right it first!</span>")
|
||||
to_chat(user, SPAN_WARNING("You can't do that right now, you need to right it first!"))
|
||||
return COMPONENT_CANCEL_ATTACK_CHAIN
|
||||
|
||||
/datum/component/tilted/proc/on_untilt(atom/source, mob/user)
|
||||
@@ -88,9 +88,9 @@
|
||||
if(!do_after(user, duration, TRUE, parent) || QDELETED(src))
|
||||
return
|
||||
user.visible_message(
|
||||
"<span class='notice'>[user] rights [atom_parent].</span>",
|
||||
"<span class='notice'>You right [atom_parent].</span>",
|
||||
"<span class='notice'>You hear a loud clang.</span>"
|
||||
SPAN_NOTICE("[user] rights [atom_parent]."),
|
||||
SPAN_NOTICE("You right [atom_parent]."),
|
||||
SPAN_NOTICE("You hear a loud clang.")
|
||||
)
|
||||
|
||||
if(QDELETED(atom_parent))
|
||||
|
||||
@@ -84,16 +84,16 @@
|
||||
return
|
||||
|
||||
if(tip_time > 0)
|
||||
to_chat(tipper, "<span class='warning'>You begin tipping over [tipped_mob]...</span>")
|
||||
to_chat(tipper, SPAN_WARNING("You begin tipping over [tipped_mob]..."))
|
||||
tipped_mob.visible_message(
|
||||
"<span class='warning'>[tipper] begins tipping over [tipped_mob].</span>",
|
||||
"<span class='userdanger'>[tipper] begins tipping you over!</span>"
|
||||
SPAN_WARNING("[tipper] begins tipping over [tipped_mob]."),
|
||||
SPAN_USERDANGER("[tipper] begins tipping you over!")
|
||||
)
|
||||
|
||||
if(!do_after(tipper, tip_time, target = tipped_mob))
|
||||
if(!isnull(tipped_mob.client))
|
||||
add_attack_logs(tipper, tipped_mob, "attempted to tip over")
|
||||
to_chat(tipper, "<span class='danger'>You fail to tip over [tipped_mob].</span>")
|
||||
to_chat(tipper, SPAN_DANGER("You fail to tip over [tipped_mob]."))
|
||||
return
|
||||
do_tip(tipped_mob, tipper)
|
||||
|
||||
@@ -111,12 +111,12 @@
|
||||
if(is_tipped) // sanity check in case multiple people try to tip at the same time
|
||||
return
|
||||
|
||||
to_chat(tipper, "<span class='warning'>You tip over [tipped_mob].</span>")
|
||||
to_chat(tipper, SPAN_WARNING("You tip over [tipped_mob]."))
|
||||
if(!isnull(tipped_mob.client))
|
||||
add_attack_logs(tipper, tipped_mob, "tipped over")
|
||||
tipped_mob.visible_message(
|
||||
"<span class='warning'>[tipper] tips over [tipped_mob].</span>",
|
||||
"<span class='danger'>You are tipped over by [tipper]!</span>"
|
||||
SPAN_WARNING("[tipper] tips over [tipped_mob]."),
|
||||
SPAN_DANGER("You are tipped over by [tipper]!")
|
||||
)
|
||||
|
||||
set_tipped_status(tipped_mob, TRUE)
|
||||
@@ -137,14 +137,14 @@
|
||||
*/
|
||||
/datum/component/tippable/proc/try_untip(mob/living/tipped_mob, mob/untipper)
|
||||
if(untip_time > 0)
|
||||
to_chat(untipper, "<span class='notice'>You begin righting [tipped_mob]...</span>")
|
||||
to_chat(untipper, SPAN_NOTICE("You begin righting [tipped_mob]..."))
|
||||
tipped_mob.visible_message(
|
||||
"<span class='notice'>[untipper] begins righting [tipped_mob].</span>",
|
||||
"<span class='notice'>[untipper] begins righting you.</span>",
|
||||
SPAN_NOTICE("[untipper] begins righting [tipped_mob]."),
|
||||
SPAN_NOTICE("[untipper] begins righting you."),
|
||||
)
|
||||
|
||||
if(!do_after(untipper, untip_time, target = tipped_mob))
|
||||
to_chat(untipper, "<span class='warning'>You fail to right [tipped_mob].</span>")
|
||||
to_chat(untipper, SPAN_WARNING("You fail to right [tipped_mob]."))
|
||||
return
|
||||
|
||||
do_untip(tipped_mob, untipper)
|
||||
@@ -162,10 +162,10 @@
|
||||
if(!is_tipped) // sanity check in case multiple people try to untip at the same time
|
||||
return
|
||||
|
||||
to_chat(untipper, "<span class='notice'>You right [tipped_mob].</span>")
|
||||
to_chat(untipper, SPAN_NOTICE("You right [tipped_mob]."))
|
||||
tipped_mob.visible_message(
|
||||
"<span class='notice'>[untipper] rights [tipped_mob].</span>",
|
||||
"<span class='notice'>You are righted by [untipper]!</span>"
|
||||
SPAN_NOTICE("[untipper] rights [tipped_mob]."),
|
||||
SPAN_NOTICE("You are righted by [untipper]!")
|
||||
)
|
||||
|
||||
if(self_untip_timer)
|
||||
@@ -187,8 +187,8 @@
|
||||
post_untipped_callback?.Invoke()
|
||||
|
||||
tipped_mob.visible_message(
|
||||
"<span class='notice'>[tipped_mob] rights [tipped_mob.p_themselves()].</span>",
|
||||
"<span class='notice'>You right yourself.</span>"
|
||||
SPAN_NOTICE("[tipped_mob] rights [tipped_mob.p_themselves()]."),
|
||||
SPAN_NOTICE("You right yourself.")
|
||||
)
|
||||
|
||||
/**
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
/datum/component/two_handed/proc/on_attack_hand(datum/source, mob/user)
|
||||
SIGNAL_HANDLER // COMSIG_ATOM_ATTACK_HAND if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_HAND, user) & COMPONENT_CANCEL_ATTACK_CHAIN)
|
||||
if(require_twohands && user.get_inactive_hand())
|
||||
to_chat(user, "<span class='notice'>[parent] is too cumbersome to carry in one hand!</span>")
|
||||
to_chat(user, SPAN_NOTICE("[parent] is too cumbersome to carry in one hand!"))
|
||||
return COMPONENT_CANCEL_ATTACK_CHAIN
|
||||
|
||||
/**
|
||||
@@ -177,22 +177,22 @@
|
||||
return
|
||||
if(ismonkeybasic(user))
|
||||
if(require_twohands)
|
||||
to_chat(user, "<span class='notice'>[parent] is too heavy and cumbersome for you to carry!</span>")
|
||||
to_chat(user, SPAN_NOTICE("[parent] is too heavy and cumbersome for you to carry!"))
|
||||
user.drop_item_to_ground(parent, force = TRUE)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[parent] too heavy for you to wield fully.</span>")
|
||||
to_chat(user, SPAN_NOTICE("[parent] too heavy for you to wield fully."))
|
||||
return
|
||||
if(user.get_inactive_hand())
|
||||
if(require_twohands)
|
||||
to_chat(user, "<span class='notice'>[parent] is too cumbersome to carry in one hand!</span>")
|
||||
to_chat(user, SPAN_NOTICE("[parent] is too cumbersome to carry in one hand!"))
|
||||
user.drop_item_to_ground(parent, force = TRUE)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need your other hand to be empty!</span>")
|
||||
to_chat(user, SPAN_WARNING("You need your other hand to be empty!"))
|
||||
return
|
||||
if(!user.has_both_hands())
|
||||
if(require_twohands)
|
||||
user.drop_item_to_ground(parent, force = TRUE)
|
||||
to_chat(user, "<span class='warning'>You don't have enough intact hands.</span>")
|
||||
to_chat(user, SPAN_WARNING("You don't have enough intact hands."))
|
||||
return
|
||||
|
||||
// wield update status
|
||||
@@ -218,9 +218,9 @@
|
||||
parent_item.update_appearance()
|
||||
|
||||
if(isrobot(user))
|
||||
to_chat(user, "<span class='notice'>You dedicate your module to [parent].</span>")
|
||||
to_chat(user, SPAN_NOTICE("You dedicate your module to [parent]."))
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You grab [parent] with both hands.</span>")
|
||||
to_chat(user, SPAN_NOTICE("You grab [parent] with both hands."))
|
||||
|
||||
// Play sound if one is set
|
||||
if(wieldsound)
|
||||
@@ -293,11 +293,11 @@
|
||||
// Show message if requested
|
||||
if(show_message)
|
||||
if(isrobot(user))
|
||||
to_chat(user, "<span class='notice'>You free up your module.</span>")
|
||||
to_chat(user, SPAN_NOTICE("You free up your module."))
|
||||
else if(require_twohands)
|
||||
to_chat(user, "<span class='notice'>You drop [parent].</span>")
|
||||
to_chat(user, SPAN_NOTICE("You drop [parent]."))
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You are now carrying [parent] with one hand.</span>")
|
||||
to_chat(user, SPAN_NOTICE("You are now carrying [parent] with one hand."))
|
||||
|
||||
// Play sound if set
|
||||
if(unwieldsound)
|
||||
@@ -395,12 +395,12 @@
|
||||
if(require_twohands)
|
||||
INVOKE_ASYNC(src, PROC_REF(try_drop_item), user)
|
||||
else
|
||||
user.visible_message("<span class='notice'>[user] unwields [parent] as the handcuffs make it too hard to hold properly.</span>")
|
||||
user.visible_message(SPAN_NOTICE("[user] unwields [parent] as the handcuffs make it too hard to hold properly."))
|
||||
INVOKE_ASYNC(src, PROC_REF(unwield), user)
|
||||
|
||||
/datum/component/two_handed/proc/try_drop_item(mob/user)
|
||||
if(user.drop_item_to_ground(parent))
|
||||
user.visible_message("<span class='notice'>[user] loses [user.p_their()] grip on [parent]!</span>")
|
||||
user.visible_message(SPAN_NOTICE("[user] loses [user.p_their()] grip on [parent]!"))
|
||||
|
||||
/**
|
||||
* The offhand dummy item for two handed items
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
zomboid.reagents.remove_reagent("zombiecure4", the_cure.metabolization_rate * zomboid.metabolism_efficiency)
|
||||
return
|
||||
zombie_rejuv()
|
||||
to_chat(zomboid, "<span class='zombielarge'>We... Awaken...</span>")
|
||||
to_chat(zomboid, SPAN_ZOMBIELARGE("We... Awaken..."))
|
||||
zomboid.notify_ghost_cloning("Your zombie body has risen again, re-enter your corpse to continue the feast!", source = zomboid)
|
||||
|
||||
// If no client, but they were a player thats not SSD (debrained, revived but hasn't returned to body, etc)
|
||||
|
||||
Reference in New Issue
Block a user