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:
kyunkyunkyun
2025-12-13 23:55:48 +00:00
committed by GitHub
parent e5f0a6fffb
commit b0463d3c83
1624 changed files with 15737 additions and 15581 deletions
+1 -1
View File
@@ -69,7 +69,7 @@
/mob/camera/eye/proc/validate_active_cameranet(strict = 0)
var/camera = first_active_camera()
if(strict && !camera)
to_chat(user, "<span class='warning'>ERROR: No linked and active camera network found.</span>")
to_chat(user, SPAN_WARNING("ERROR: No linked and active camera network found."))
return FALSE
return TRUE
@@ -63,7 +63,7 @@
button_text.appearance_flags = RESET_COLOR | RESET_ALPHA
button_text.plane = FLOAT_PLANE + 1
button_text.maptext_x = 2
button_text.maptext = ticket_amt > 0 ? "<span class='maptext'>[ticket_amt]</span>" : ""
button_text.maptext = ticket_amt > 0 ? SPAN_MAPTEXT("[ticket_amt]") : ""
button.add_overlay(button_text)
/datum/action/innate/admin/ticket/mentor
+35 -35
View File
@@ -180,7 +180,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
var/obj/machinery/cryopod/P = istype(loc, /obj/machinery/cryopod) && loc
if(frozen)
to_chat(src, "<span class='warning'>You cannot do this while admin frozen.</span>", MESSAGE_TYPE_WARNING)
to_chat(src, SPAN_WARNING("You cannot do this while admin frozen."), MESSAGE_TYPE_WARNING)
message_admins("[key_name_admin(src)] tried to ghost while admin frozen")
return
@@ -287,13 +287,13 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if(!client)
return
if(!mind || QDELETED(mind.current))
to_chat(src, "<span class='warning'>You have no body.</span>")
to_chat(src, SPAN_WARNING("You have no body."))
return
if(!(ghost_flags & GHOST_CAN_REENTER))
to_chat(src, "<span class='warning'>You cannot re-enter your body.</span>")
to_chat(src, SPAN_WARNING("You cannot re-enter your body."))
return
if(mind.current.key && copytext(mind.current.key, 1, 2) != "@") // makes sure we don't accidentally kick any clients
to_chat(usr, "<span class='warning'>Another consciousness is in your body...It is resisting you.</span>")
to_chat(usr, SPAN_WARNING("Another consciousness is in your body...It is resisting you."))
return
mind.current.key = key
@@ -305,7 +305,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
/mob/dead/observer/proc/notify_cloning(message, sound, atom/source)
if(message)
to_chat(src, "<span class='ghostalert'>[message]</span>")
to_chat(src, SPAN_GHOSTALERT("[message]"))
if(source)
var/atom/movable/screen/alert/A = throw_alert("[source.UID()]_notify_cloning", /atom/movable/screen/alert/notify_cloning)
if(A)
@@ -319,7 +319,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
A.add_overlay(source)
source.layer = old_layer
source.plane = old_plane
to_chat(src, "<span class='ghostalert'><a href=byond://?src=[UID()];reenter=1>(Click to re-enter)</a></span>")
to_chat(src, SPAN_GHOSTALERT("<a href=byond://?src=[UID()];reenter=1>(Click to re-enter)</a>"))
if(sound)
SEND_SOUND(src, sound(sound))
@@ -349,20 +349,20 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
var/mob/dead/observer/O = usr
if(!isobserver(O))
to_chat(O, "<span class='warning'>You are not dead!</span>")
to_chat(O, SPAN_WARNING("You are not dead!"))
return
if(!SSticker || SSticker.current_state < GAME_STATE_PLAYING)
to_chat(O, "<span class='warning'>You can't respawn before the game starts!</span>")
to_chat(O, SPAN_WARNING("You can't respawn before the game starts!"))
return
if(GAMEMODE_IS_WIZARD || GAMEMODE_IS_NUCLEAR || GAMEMODE_IS_RAGIN_MAGES)
to_chat(O, "<span class='warning'>You can't respawn for this gamemode.</span>")
to_chat(O, SPAN_WARNING("You can't respawn for this gamemode."))
return
var/death_time = world.time - O.timeofdeath
if(!HAS_TRAIT(O, TRAIT_RESPAWNABLE) && !check_rights(R_ADMIN, FALSE))
to_chat(O, "<span class='warning'>You don't have respawnability!</span>")
to_chat(O, SPAN_WARNING("You don't have respawnability!"))
return
var/death_time_minutes = round(death_time / 600)
@@ -376,12 +376,12 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
var/death_time_seconds = round((death_time - death_time_minutes * 600) / 10, 1)
if(death_time_minutes < GLOB.configuration.general.respawn_delay / 600 && !check_rights(R_ADMIN, FALSE))
to_chat(O, "<span class='notice'>You have been dead for [plural_check] [death_time_seconds] second\s.</span>")
to_chat(O, "<span class='warning'>You must wait [GLOB.configuration.general.respawn_delay / 600] minute\s before you can respawn.</span>")
to_chat(O, SPAN_NOTICE("You have been dead for [plural_check] [death_time_seconds] second\s."))
to_chat(O, SPAN_WARNING("You must wait [GLOB.configuration.general.respawn_delay / 600] minute\s before you can respawn."))
return
if(!O.check_ahud_rejoin_eligibility())
to_chat(O, "<span class='warning'>Upon using the antagHUD you forfeited the ability to join the round.</span>")
to_chat(O, SPAN_WARNING("Upon using the antagHUD you forfeited the ability to join the round."))
return FALSE
if(tgui_alert(O, "Are you sure you want to respawn?\n(If you do this, you won't be able to be cloned!)", "Respawn?", list("Yes", "No")) != "Yes")
return
@@ -389,9 +389,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
log_and_message_admins("[key_name(O)][O.mind?.current? (O.mind.current.mind.special_role? " (<font color='red'>[O.mind.current.mind.special_role]</font>)" : "") : ""] has chosen to respawn as a new character.")
var/list/warning = list()
warning.Add("<span class='big'>You have chosen to respawn as a new character!</span>")
warning.Add(SPAN_BIG("You have chosen to respawn as a new character!"))
warning.Add("<b>You will not remember anything from your previous life or time as a ghost.</b>")
warning.Add("<span class='boldwarning'>You MUST choose a different character slot to respawn as!</span>")
warning.Add(SPAN_BOLDWARNING("You MUST choose a different character slot to respawn as!"))
to_chat(O, chat_box_notice(warning.Join("<br>")))
if(!O.client)
@@ -459,17 +459,17 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if(!isobserver(src)) // Somehow
return
if(!(ghost_flags & GHOST_CAN_REENTER))
to_chat(src, "<span class='warning'>You are already set to DNR!</span>")
to_chat(src, SPAN_WARNING("You are already set to DNR!"))
return
if(!mind || QDELETED(mind.current))
to_chat(src, "<span class='warning'>You have no body.</span>")
to_chat(src, SPAN_WARNING("You have no body."))
return
if(mind.current.stat != DEAD)
to_chat(src, "<span class='warning'>Your body is still alive!</span>")
to_chat(src, SPAN_WARNING("Your body is still alive!"))
return
if(tgui_alert(src, "If you enable this, your body will be unrevivable for the remainder of the round.", "Do Not Revive!", list("Yes", "No")) == "Yes")
to_chat(src, "<span class='boldnotice'>Do Not Revive state enabled.</span>")
to_chat(src, SPAN_BOLDNOTICE("Do Not Revive state enabled."))
create_log(MISC_LOG, "DNR Enabled")
ghost_flags &= ~GHOST_CAN_REENTER
if(!QDELETED(mind.current)) // Could change while they're choosing
@@ -521,8 +521,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
update_parallax_contents()
var/list/messages = list(
"<span class='notice'>Jumped to <b>[landmark.ruin_template.name]</b>:</span>",
"<span class='notice'>[landmark.ruin_template.description]</span>"
SPAN_NOTICE("Jumped to <b>[landmark.ruin_template.name]</b>:"),
SPAN_NOTICE("[landmark.ruin_template.description]")
)
to_chat(usr, chat_box_examine(messages.Join("<br />")))
@@ -535,7 +535,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
turfs += T
if(!length(turfs))
to_chat(src, "<span class='warning'>Nowhere to jump to!</span>")
to_chat(src, SPAN_WARNING("Nowhere to jump to!"))
return
abstract_move(pick(turfs))
update_parallax_contents()
@@ -611,7 +611,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
else // Circular
rot_seg = 36 // 360/10 bby, smooth enough aproximation of a circle
to_chat(src, "<span class='notice'>Now following [target].</span>")
to_chat(src, SPAN_NOTICE("Now following [target]."))
orbit(A = target, radius = orbitsize, rotation_segments = rot_seg)
/mob/dead/observer/orbit(atom/A, radius = 10, clockwise = FALSE, rotation_speed = 20, rotation_segments = 36, pre_rotation = TRUE, lock_in_orbit = FALSE, force_move = FALSE, orbit_layer = GHOST_LAYER)
@@ -620,11 +620,11 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
/mob/dead/observer/memory()
set hidden = TRUE
to_chat(src, "<span class='warning'>You are dead! You have no mind to store memory!</span>")
to_chat(src, SPAN_WARNING("You are dead! You have no mind to store memory!"))
/mob/dead/observer/add_memory()
set hidden = TRUE
to_chat(src, "<span class='warning'>You are dead! You have no mind to store memory!</span>")
to_chat(src, SPAN_WARNING("You are dead! You have no mind to store memory!"))
/mob/dead/observer/verb/toggle_health_scan()
set name = "Toggle Health Scan"
@@ -632,7 +632,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
set category = "Ghost"
ghost_flags ^= GHOST_HEALTH_SCAN
to_chat(src, "<span class='notice'>Health scan [ghost_flags & GHOST_HEALTH_SCAN ? "en" : "dis"]abled.</span>")
to_chat(src, SPAN_NOTICE("Health scan [ghost_flags & GHOST_HEALTH_SCAN ? "en" : "dis"]abled."))
/mob/dead/observer/verb/toggle_gas_scan()
set name = "Toggle Gas Scan"
@@ -640,7 +640,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
set category = "Ghost"
ghost_flags ^= GHOST_GAS_SCAN
to_chat(src, "<span class='notice'>Gas scan [ghost_flags & GHOST_GAS_SCAN ? "en" : "dis"]abled.</span>")
to_chat(src, SPAN_NOTICE("Gas scan [ghost_flags & GHOST_GAS_SCAN ? "en" : "dis"]abled."))
/mob/dead/observer/verb/toggle_plant_anaylzer()
set name = "Toggle Plant Analyzer"
@@ -648,7 +648,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
set category = "Ghost"
ghost_flags ^= GHOST_PLANT_ANALYZER
to_chat(src, "<span class='notice'>Plant Analyzer [ghost_flags & GHOST_PLANT_ANALYZER ? "en" : "dis"]abled.</span>")
to_chat(src, SPAN_NOTICE("Plant Analyzer [ghost_flags & GHOST_PLANT_ANALYZER ? "en" : "dis"]abled."))
/mob/dead/observer/verb/view_manifest()
set name = "View Crew Manifest"
@@ -721,7 +721,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
ghost_flags ^= GHOST_VISION
update_sight()
to_chat(src, "<span class='notice'>Ghost vision [ghost_flags & GHOST_VISION ? "en" : "dis"]abled.</span>")
to_chat(src, SPAN_NOTICE("Ghost vision [ghost_flags & GHOST_VISION ? "en" : "dis"]abled."))
/mob/dead/observer/verb/pick_darkness()
set name = "Pick Darkness"
@@ -790,7 +790,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
var/follow_link
if(invisibility) // Only show the button if the ghost is not visible to the living
follow_link = " ([ghost_follow_link(A, M)])" // Ghost needs to be link clicker, otherwise it breaks
M.show_message("<span class='deadsay'><b>[src]</b> points to [A][follow_link].</span>", EMOTE_VISIBLE)
M.show_message(SPAN_DEADSAY("<b>[src]</b> points to [A][follow_link]."), EMOTE_VISIBLE)
return TRUE
@@ -870,7 +870,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
possible_targets.Add(L)
if(!length(possible_targets))
to_chat(src, "<span class='warning'>There's nobody for you to observe!</span>")
to_chat(src, SPAN_WARNING("There's nobody for you to observe!"))
return
var/mob/target = tgui_input_list(usr, "Please, select a player!", "Observe", possible_targets)
@@ -884,19 +884,19 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
set category = null
if(isnewplayer(mob_eye))
to_chat(src, "<span class='warning'>You can't observe someone in the lobby.</span>")
to_chat(src, SPAN_WARNING("You can't observe someone in the lobby."))
return
if(isobserver(mob_eye))
to_chat(src, "<span class='warning'>You can't observe a ghost.</span>")
to_chat(src, SPAN_WARNING("You can't observe a ghost."))
return
if(!mob_eye.mind)
to_chat(src, "<span class='notice'>You can only observe mobs that have been or are being inhabited by a player!</span>")
to_chat(src, SPAN_NOTICE("You can only observe mobs that have been or are being inhabited by a player!"))
return
if(mob_eye == src)
to_chat(src, "<span class='warning'>You can't observe yourself!</span>")
to_chat(src, SPAN_WARNING("You can't observe yourself!"))
return
if(mob_observed)
@@ -12,8 +12,8 @@ GLOBAL_LIST_INIT(boo_phrases, list(
/datum/spell/boo
name = "Boo!"
desc = "Fuck with the living."
selection_deactivated_message = "<span class='notice'>Your presence will not be known. For now.</span>"
selection_activated_message = "<span class='notice'>You prepare to reach across the veil. <b>Left-click to influence a target!</b></span>"
selection_deactivated_message = SPAN_NOTICE("Your presence will not be known. For now.")
selection_activated_message = SPAN_NOTICE("You prepare to reach across the veil. <b>Left-click to influence a target!</b>")
ghost = TRUE
@@ -40,7 +40,7 @@ GLOBAL_LIST_INIT(boo_phrases, list(
if(target.get_spooked())
var/area/spook_zone = get_area(target)
if(spook_zone.is_haunted)
to_chat(usr, "<span class='notice'>The veil is weak in [spook_zone], it took less effort to influence [target].</span>")
to_chat(usr, SPAN_NOTICE("The veil is weak in [spook_zone], it took less effort to influence [target]."))
cooldown_handler.start_recharge(cooldown_handler.recharge_duration / 2)
return
+6 -6
View File
@@ -46,7 +46,7 @@
piece = stars(piece)
if(always_stars)
piece = stars(piece)
piece = "<span class='message'><span class='body'>[piece]</span></span>"
piece = SPAN_MESSAGE(SPAN_BODY("[piece]") )
msg += (piece + " ")
if(msg == "")
// There is literally no content left in this message, we need to shut this shit down
@@ -131,11 +131,11 @@
// INNATE is the flag for audible-emote-language, so we don't want to show an "x talks but you cannot hear them" message if it's set
// if(!language || !(language.flags & INNATE))
if(speaker == src)
to_chat(src, "<span class='warning'>You cannot hear yourself speak!</span>")
to_chat(src, SPAN_WARNING("You cannot hear yourself speak!"))
else
to_chat(src, "<span class='name'>[speaker.name]</span> talks but you cannot hear [speaker.p_them()].")
to_chat(src, "[SPAN_NAME("[speaker.name]")] talks but you cannot hear [speaker.p_them()].")
else
to_chat(src, "<span class='game say'><span class='name'>[speaker_name]</span>[speaker.GetAltName()] [track][verb], \"[message]\"</span>")
to_chat(src, "<span class='game say'>[SPAN_NAME("[speaker_name]")][speaker.GetAltName()] [track][verb], \"[message]\"</span>")
// Create map text message
if(client?.prefs.toggles2 & PREFTOGGLE_2_RUNECHAT) // can_hear is checked up there on L99
@@ -167,7 +167,7 @@
if(!can_hear())
if(prob(20))
to_chat(src, "<span class='warning'>You feel your headset vibrate but can hear nothing from it!</span>")
to_chat(src, SPAN_WARNING("You feel your headset vibrate but can hear nothing from it!"))
else if(track)
to_chat(src, "[part_a][track][part_b][message]</span></span>")
else
@@ -229,5 +229,5 @@
if((client?.prefs.toggles2 & PREFTOGGLE_2_RUNECHAT) && can_hear())
create_chat_message(H, message_unverbed)
var/rendered = "<span class='game say'><span class='name'>[name]</span> [message]</span>"
var/rendered = "<span class='game say'>[SPAN_NAME("[name]")] [message]</span>"
to_chat(src, rendered)
+3 -3
View File
@@ -310,11 +310,11 @@
/obj/item/proc/equip_to_best_slot(mob/M)
if(src != M.get_active_hand())
to_chat(M, "<span class='warning'>You are not holding anything to equip!</span>")
to_chat(M, SPAN_WARNING("You are not holding anything to equip!"))
return FALSE
if(flags & NODROP)
to_chat(M, "<span class='warning'>You are unable to equip that!</span>")
to_chat(M, SPAN_WARNING("You are unable to equip that!"))
return FALSE
if(M.equip_to_appropriate_slot(src))
@@ -357,7 +357,7 @@
playsound(loc, "rustle", 50, TRUE, -5)
return TRUE
to_chat(M, "<span class='warning'>You are unable to equip that!</span>")
to_chat(M, SPAN_WARNING("You are unable to equip that!"))
return FALSE
/mob/proc/get_all_slots()
+13 -13
View File
@@ -89,7 +89,7 @@
return scrambled_text
/datum/language/proc/format_message(message)
return "<span class='message'><span class='[colour]'>[message]</span></span>"
return SPAN_MESSAGE("<span class='[colour]'>[message]</span>")
/datum/language/proc/format_message_radio(message)
return "<span class='[colour]'>[message]</span>"
@@ -108,11 +108,11 @@
if(!speaker_mask)
speaker_mask = speaker.name
var/msg = "<i><span class='game say'>[name], <span class='name'>[speaker_mask]</span> [get_spoken_verb(message)], [format_message(message)]</span></i>"
var/msg = "<i><span class='game say'>[name], [SPAN_NAME("[speaker_mask]")] [get_spoken_verb(message)], [format_message(message)]</span></i>"
for(var/mob/player in GLOB.player_list)
if(istype(player, /mob/dead) && follow)
var/msg_dead = "<i><span class='game say'>[name], <span class='name'>[speaker_mask]</span> ([ghost_follow_link(speaker, ghost=player)]) [get_spoken_verb(message)], [format_message(message)]</span></i>"
var/msg_dead = "<i><span class='game say'>[name], [SPAN_NAME("[speaker_mask]")] ([ghost_follow_link(speaker, ghost=player)]) [get_spoken_verb(message)], [format_message(message)]</span></i>"
to_chat(player, msg_dead)
continue
@@ -143,7 +143,7 @@
flags = RESTRICTED|NONGLOBAL|INNATE|NO_TALK_MSG|NO_STUTTER
/datum/language/noise/format_message(message)
return "<span class='message'><span class='[colour]'>[message]</span></span>"
return SPAN_MESSAGE("<span class='[colour]'>[message]</span>")
/datum/language/noise/format_message_radio(message)
return "<span class='[colour]'>[message]</span>"
@@ -350,20 +350,20 @@
/datum/language/grey/check_can_speak(mob/living/speaker)
if(speaker.mind?.miming) // Because its a hivemind, mimes would be able to speak otherwise
to_chat(speaker,"<span class='warning'>You can't communicate without breaking your vow of silence.</span>")
to_chat(speaker,SPAN_WARNING("You can't communicate without breaking your vow of silence."))
return FALSE
if(ishuman(speaker))
var/mob/living/carbon/human/S = speaker
var/obj/item/organ/external/rhand = S.get_organ("r_hand")
var/obj/item/organ/external/lhand = S.get_organ("l_hand")
if((!rhand || !rhand.is_usable()) && (!lhand || !lhand.is_usable()))
to_chat(speaker,"<span class='warning'>You can't communicate without the ability to use your hands!</span>")
to_chat(speaker,SPAN_WARNING("You can't communicate without the ability to use your hands!"))
return FALSE
if(HAS_TRAIT(speaker, TRAIT_HANDS_BLOCKED))
to_chat(speaker,"<span class='warning'>You can't communicate while unable to move your hands to your head!</span>")
to_chat(speaker,SPAN_WARNING("You can't communicate while unable to move your hands to your head!"))
return FALSE
speaker.visible_message("<span class='notice'>[speaker] touches [speaker.p_their()] fingers to [speaker.p_their()] temple.</span>") //If placed in grey/broadcast, it will happen regardless of the success of the action.
speaker.visible_message(SPAN_NOTICE("[speaker] touches [speaker.p_their()] fingers to [speaker.p_their()] temple.")) //If placed in grey/broadcast, it will happen regardless of the success of the action.
return TRUE
@@ -607,12 +607,12 @@
log_say(log_message, speaker)
speaker.create_log(SAY_LOG, log_message)
var/list/message_start = list("<i><span class='game say'>[name], <span class='name'>[speaker.name]</span>") //Strings as lists lets you add blocks of text much easier
var/list/message_body = list("<span class='message'>[speaker.say_quote(message)],</i><span class='robot'>\"[message]\"</span></span></span>")
var/list/message_start = list("<i><span class='game say'>[name], [SPAN_NAME("[speaker.name]")]") //Strings as lists lets you add blocks of text much easier
var/list/message_body = list(SPAN_MESSAGE("[speaker.say_quote(message)],</i>[SPAN_ROBOT("\"[message]\"")]</span>"))
for(var/mob/M in GLOB.dead_mob_list)
if(!isnewplayer(M) && !isbrain(M))
var/list/message_start_dead = list("<i><span class='game say'>[name], <span class='name'>[speaker.name] ([ghost_follow_link(speaker, ghost=M)])</span>")
var/list/message_start_dead = list("<i><span class='game say'>[name], [SPAN_NAME("[speaker.name] ([ghost_follow_link(speaker, ghost=M)])")]")
var/list/dead_message = message_start_dead + message_body
M.show_message(dead_message.Join(" "), 2)
@@ -622,7 +622,7 @@
else if(drone_only && !isdrone(S))
continue
else if(is_ai(S))
message_start = list("<i><span class='game say'>[name], <a href='byond://?src=[S.UID()];track=\ref[speaker]'><span class='name'>[speaker.name]</span></a>")
message_start = list("<i><span class='game say'>[name], <a href='byond://?src=[S.UID()];track=\ref[speaker]'>[SPAN_NAME("[speaker.name]")]</a>")
else if(isrobot(S))
var/mob/living/silicon/robot/borg = S
if(borg.connected_ai?.name == speaker.name)
@@ -639,7 +639,7 @@
for(var/mob/living/M in listening)
if(issilicon(M) || M.binarycheck())
continue
M.show_message("<i><span class='game say'><span class='name'>synthesised voice</span> <span class='message'>beeps, \"beep beep beep\"</span></span></i>",2)
M.show_message("<i><span class='game say'>[SPAN_NAME("synthesised voice")] [SPAN_MESSAGE("beeps, \"beep beep beep\"")]</span></i>",2)
/datum/language/binary/drone
name = "Drone Talk"
+11 -11
View File
@@ -270,12 +270,12 @@ RESTRICT_TYPE(/mob/living/basic)
if(..()) // if harm or disarm intent.
if(M.a_intent == INTENT_DISARM)
playsound(loc, 'sound/weapons/pierce.ogg', 25, TRUE, -1)
visible_message("<span class='danger'>[M] [response_disarm_continuous] [name]!</span>", "<span class='userdanger'>[M] [response_disarm_continuous] you!</span>")
visible_message(SPAN_DANGER("[M] [response_disarm_continuous] [name]!"), SPAN_USERDANGER("[M] [response_disarm_continuous] you!"))
add_attack_logs(M, src, "Alien disarmed")
else
var/damage = rand(15, 30)
visible_message("<span class='danger'>[M] has slashed at [src]!</span>", \
"<span class='userdanger'>[M] has slashed at [src]!</span>")
visible_message(SPAN_DANGER("[M] has slashed at [src]!"), \
SPAN_USERDANGER("[M] has slashed at [src]!"))
playsound(loc, 'sound/weapons/slice.ogg', 25, TRUE, -1)
add_attack_logs(M, src, "Alien attacked")
attack_threshold_check(damage)
@@ -324,9 +324,9 @@ RESTRICT_TYPE(/mob/living/basic)
if(death_sound)
playsound(get_turf(src), death_sound, 200, 1)
if(death_message)
visible_message("<span class='danger'>\The [src] [death_message]</span>")
visible_message(SPAN_DANGER("\The [src] [death_message]"))
else if(!(basic_mob_flags & DEL_ON_DEATH))
visible_message("<span class='danger'>\The [src] stops moving...</span>")
visible_message(SPAN_DANGER("\The [src] stops moving..."))
if(HAS_TRAIT(src, TRAIT_XENOBIO_SPAWNED))
SSmobs.xenobiology_mobs--
if(basic_mob_flags & DEL_ON_DEATH)
@@ -352,8 +352,8 @@ RESTRICT_TYPE(/mob/living/basic)
if(INTENT_HELP)
if(health > 0)
visible_message(
"<span class='notice'>[M] [response_help_continuous] [src].</span>",
"<span class='notice'>[M] [response_help_continuous] you.</span>"
SPAN_NOTICE("[M] [response_help_continuous] [src]."),
SPAN_NOTICE("[M] [response_help_continuous] you.")
)
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1)
@@ -362,12 +362,12 @@ RESTRICT_TYPE(/mob/living/basic)
if(INTENT_HARM, INTENT_DISARM)
if(HAS_TRAIT(M, TRAIT_PACIFISM))
to_chat(M, "<span class='warning'>You don't want to hurt [src]!</span>")
to_chat(M, SPAN_WARNING("You don't want to hurt [src]!"))
return
M.do_attack_animation(src, ATTACK_EFFECT_PUNCH)
visible_message(
"<span class='danger'>[M] [response_harm_continuous] [src]!</span>",
"<span class='userdanger'>[M] [response_harm_continuous] you!</span>"
SPAN_DANGER("[M] [response_harm_continuous] [src]!"),
SPAN_USERDANGER("[M] [response_harm_continuous] you!")
)
playsound(loc, attacked_sound, 25, TRUE, -1)
attack_threshold_check(harm_intent_damage)
@@ -385,7 +385,7 @@ RESTRICT_TYPE(/mob/living/basic)
temp_damage *= damage_coeff[damagetype]
if(temp_damage >= 0 && temp_damage <= force_threshold)
visible_message("<span class='warning'>[src] looks unharmed.</span>")
visible_message(SPAN_WARNING("[src] looks unharmed."))
return FALSE
else
apply_damage(damage, damagetype, null, getarmor(armor_type = armorcheck))
@@ -164,7 +164,7 @@ GLOBAL_VAR_INIT(chicken_count, 0)
if(stat == CONSCIOUS && eggsleft < 8)
eggsleft += rand(1, 4)
else
to_chat(feeder, "<span class='warning'>[src] doesn't seem hungry!</span>")
to_chat(feeder, SPAN_WARNING("[src] doesn't seem hungry!"))
return COMSIG_MOB_CANCEL_EAT
/mob/living/basic/chicken/attack_hand(mob/living/carbon/human/M)
@@ -55,7 +55,7 @@
if(. && isdiona(target))
var/mob/living/carbon/human/H = target
var/obj/item/organ/external/NB = pick(H.bodyparts)
H.visible_message("<span class='warning'>[src] takes a big chomp out of [H]!</span>", "<span class='userdanger'>[src] takes a big chomp out of your [NB.name]!</span>")
H.visible_message(SPAN_WARNING("[src] takes a big chomp out of [H]!"), SPAN_USERDANGER("[src] takes a big chomp out of your [NB.name]!"))
NB.droplimb()
/mob/living/basic/goat/proc/on_pre_attack(datum/source, atom/target)
@@ -12,13 +12,13 @@
/obj/item/udder/proc/milkAnimal(obj/O, mob/user)
var/obj/item/reagent_containers/glass/G = O
if(G.reagents.total_volume >= G.volume)
to_chat(user, "<span class='danger'>[O] is full.</span>")
to_chat(user, SPAN_DANGER("[O] is full."))
return
var/transfered = reagents.trans_to(O, rand(5,10))
if(transfered)
user.visible_message("[user] milks [src] using \the [O].", "<span class='notice'>You milk [src] using \the [O].</span>")
user.visible_message("[user] milks [src] using \the [O].", SPAN_NOTICE("You milk [src] using \the [O]."))
else
to_chat(user, "<span class='danger'>The udder is dry. Wait a bit longer...</span>")
to_chat(user, SPAN_DANGER("The udder is dry. Wait a bit longer..."))
/obj/item/udder/cow
@@ -12,6 +12,6 @@
var/obj/item/newspaper/paper = O
if(stat != CONSCIOUS || !paper.rolled)
return ..()
user.visible_message("<span class='notice'>[user] baps [name] on the nose with the rolled up [O].</span>")
user.visible_message(SPAN_NOTICE("[user] baps [name] on the nose with the rolled up [O]."))
INVOKE_ASYNC(src, PROC_REF(spin), 7 DECISECONDS, 1)
return ITEM_INTERACT_COMPLETE
@@ -40,12 +40,12 @@
var/mob/living/A = entered
if(A.mob_size > MOB_SIZE_SMALL)
if(prob(squish_chance))
A.visible_message("<span class='notice'>\The [A] squashed \the [name].</span>", "<span class='notice'>You squashed \the [name].</span>")
A.visible_message(SPAN_NOTICE("\The [A] squashed \the [name]."), SPAN_NOTICE("You squashed \the [name]."))
death()
else
visible_message("<span class='notice'>\The [name] avoids getting crushed.</span>")
visible_message(SPAN_NOTICE("\The [name] avoids getting crushed."))
else if(isstructure(entered))
visible_message("<span class='notice'>As \the [entered] moved over \the [name], it was crushed.</span>")
visible_message(SPAN_NOTICE("As \the [entered] moved over \the [name], it was crushed."))
death()
/mob/living/basic/cockroach/ex_act() // Explosions are a terrible way to handle a cockroach.
@@ -127,7 +127,7 @@
M.throw_alert(NYMPH_ALERT, /atom/movable/screen/alert/gestalt, new_master = src)
forceMove(M)
else if(isrobot(M))
M.visible_message("<span class='notice'>[M] playfully boops [src] on the head!</span>", "<span class='notice'>You playfully boop [src] on the head!</span>")
M.visible_message(SPAN_NOTICE("[M] playfully boops [src] on the head!"), SPAN_NOTICE("You playfully boop [src] on the head!"))
else
get_scooped(M)
else
@@ -144,7 +144,7 @@
choices += H
if(!length(choices))
to_chat(src, "<span class='warning'>No suitable diona nearby.</span>")
to_chat(src, SPAN_WARNING("No suitable diona nearby."))
return FALSE
var/mob/living/M = tgui_input_list(src, "Who do you wish to merge with?", "Nymph Merging", choices)
@@ -192,20 +192,20 @@
return FALSE
if(length(donors) < evolve_donors)
to_chat(src, "<span class='warning'>You need more blood in order to ascend to a new state of consciousness...</span>")
to_chat(src, SPAN_WARNING("You need more blood in order to ascend to a new state of consciousness..."))
return FALSE
if(nutrition < nutrition_need)
to_chat(src, "<span class='warning'>You need to binge on weeds in order to have the energy to grow...</span>")
to_chat(src, SPAN_WARNING("You need to binge on weeds in order to have the energy to grow..."))
return FALSE
if(isdiona(loc) && !split()) // if it's merged with diona, needs to able to split before evolving
return FALSE
visible_message("<span class='danger'>[src] begins to shift and quiver, and erupts in a shower of shed bark as it splits into a tangle of nearly a dozen new dionaea.</span>","<span class='danger'>You begin to shift and quiver, feeling your awareness splinter. All at once, we consume our stored nutrients to surge with growth, splitting into a tangle of at least a dozen new dionaea. We have attained our gestalt form.</span>")
visible_message(SPAN_DANGER("[src] begins to shift and quiver, and erupts in a shower of shed bark as it splits into a tangle of nearly a dozen new dionaea."),SPAN_DANGER("You begin to shift and quiver, feeling your awareness splinter. All at once, we consume our stored nutrients to surge with growth, splitting into a tangle of at least a dozen new dionaea. We have attained our gestalt form."))
if(master_commander)
to_chat(src, "<span class='userdanger'>As you evolve, your mind grows out of it's restraints. You are no longer loyal to [master_commander]!</span>")
to_chat(src, SPAN_USERDANGER("As you evolve, your mind grows out of it's restraints. You are no longer loyal to [master_commander]!"))
var/mob/living/carbon/human/diona/adult = new(get_turf(loc))
adult.set_species(/datum/species/diona)
@@ -235,7 +235,7 @@
/mob/living/basic/diona_nymph/proc/check_full(datum/source, obj/item/potential_food)
SIGNAL_HANDLER // COMSIG_MOB_PRE_EAT
if(nutrition >= nutrition_need) // Prevents griefing by overeating food items without evolving.
to_chat(src, "<span class='warning'>You're too full to consume this! Perhaps it's time to grow bigger...</span>")
to_chat(src, SPAN_WARNING("You're too full to consume this! Perhaps it's time to grow bigger..."))
return COMSIG_MOB_TERMINATE_EAT
// Consumes plant matter other than weeds to evolve
@@ -256,7 +256,7 @@
choices += H
if(!length(choices))
to_chat(src, "<span class='warning'>No suitable blood donors nearby.</span>")
to_chat(src, SPAN_WARNING("No suitable blood donors nearby."))
return FALSE
var/mob/living/carbon/human/M = tgui_input_list(src, "Who do you wish to take a sample from?", "Blood Sampling", choices)
@@ -265,14 +265,14 @@
return FALSE
if(!M.dna || (NO_BLOOD in M.dna.species.species_traits))
to_chat(src, "<span class='warning'>That donor has no blood to take.</span>")
to_chat(src, SPAN_WARNING("That donor has no blood to take."))
return FALSE
if(donors.Find(M.real_name))
to_chat(src, "<span class='warning'>That donor offers you nothing new.</span>")
to_chat(src, SPAN_WARNING("That donor offers you nothing new."))
return FALSE
visible_message("<span class='danger'>[src] flicks out a feeler and neatly steals a sample of [M]'s blood.</span>","<span class='danger'>You flick out a feeler and neatly steal a sample of [M]'s blood.</span>")
visible_message(SPAN_DANGER("[src] flicks out a feeler and neatly steals a sample of [M]'s blood."),SPAN_DANGER("You flick out a feeler and neatly steal a sample of [M]'s blood."))
donors += M.real_name
for(var/datum/language/L in M.languages)
if(!(L.flags & HIVEMIND))
@@ -286,12 +286,12 @@
return FALSE
if(length(donors) == evolve_donors)
to_chat(src, "<span class='noticealien'>You feel ready to move on to your next stage of growth.</span>")
to_chat(src, SPAN_NOTICEALIEN("You feel ready to move on to your next stage of growth."))
else if(length(donors) == awareness_donors)
universal_understand = TRUE
to_chat(src, "<span class='noticealien'>You feel your awareness expand, and realize you know how to understand the creatures around you.</span>")
to_chat(src, SPAN_NOTICEALIEN("You feel your awareness expand, and realize you know how to understand the creatures around you."))
else
to_chat(src, "<span class='noticealien'>The blood seeps into your small form, and you draw out the echoes of memories and personality from it, working them into your budding mind.</span>")
to_chat(src, SPAN_NOTICEALIEN("The blood seeps into your small form, and you draw out the echoes of memories and personality from it, working them into your budding mind."))
/mob/living/basic/diona_nymph/put_in_hands(obj/item/W)
@@ -301,7 +301,7 @@
W.dropped()
/mob/living/basic/diona_nymph/put_in_active_hand(obj/item/W)
to_chat(src, "<span class='warning'>You don't have any hands!</span>")
to_chat(src, SPAN_WARNING("You don't have any hands!"))
return
/mob/living/basic/diona_nymph/valid_respawn_target_for(mob/user)
@@ -70,11 +70,11 @@
if(stat != CONSCIOUS)
return
if(!has_tail)
to_chat(usr, "<span class='warning'>You have no tail to shed!</span>")
to_chat(usr, SPAN_WARNING("You have no tail to shed!"))
return
for(var/obj/item/grab/G in usr.grabbed_by)
var/mob/living/carbon/M = G.assailant
usr.visible_message("<span class='warning'>[usr] suddenly sheds their tail and slips out of [M]'s grasp!</span>")
usr.visible_message(SPAN_WARNING("[usr] suddenly sheds their tail and slips out of [M]'s grasp!"))
M.KnockDown(3 SECONDS) // FUCK I TRIPPED
playsound(usr.loc, "sound/misc/slip.ogg", 75, 1)
has_tail = FALSE
@@ -82,12 +82,12 @@
/mob/living/basic/lizard/proc/new_tail()
has_tail = TRUE
to_chat(src, "<span class='notice'>You regrow your tail!</span>")
to_chat(src, SPAN_NOTICE("You regrow your tail!"))
/mob/living/basic/lizard/decompile_act(obj/item/matter_decompiler/C, mob/user)
if(!isdrone(user))
user.visible_message("<span class='notice'>[user] sucks [src] into its decompiler. There's a horrible crunching noise.</span>", \
"<span class='warning'>It's a bit of a struggle, but you manage to suck [src] into your decompiler. It makes a series of visceral crunching noises.</span>")
user.visible_message(SPAN_NOTICE("[user] sucks [src] into its decompiler. There's a horrible crunching noise."), \
SPAN_WARNING("It's a bit of a struggle, but you manage to suck [src] into your decompiler. It makes a series of visceral crunching noises."))
new/obj/effect/decal/cleanable/blood/splatter(get_turf(src))
C.stored_comms["metal"] += 2 // having more metal than glass because blood has iron in it
C.stored_comms["glass"] += 1
+14 -14
View File
@@ -86,7 +86,7 @@
SIGNAL_HANDLER // COMSIG_ATOM_ENTERED
if(ishuman(entered) && stat == CONSCIOUS)
to_chat(entered, "<span class='notice'>Squeak!</span>")
to_chat(entered, SPAN_NOTICE("Squeak!"))
/// Called when a mouse is hand-fed some cheese, it will stop being afraid of humans
/mob/living/basic/mouse/tamed(mob/living/tamer, obj/item/food/sliced/cheesewedge/cheese)
@@ -98,14 +98,14 @@
/mob/living/basic/mouse/proc/try_consume_cheese(obj/item/food/sliced/cheesewedge/cheese)
if(prob(90) || health < maxHealth)
visible_message(
"<span class='notice'>[src] nibbles [cheese].</span>",
"<span class='notice'>You nibble [cheese][health < maxHealth ? ", restoring your health" : ""].</span>"
SPAN_NOTICE("[src] nibbles [cheese]."),
SPAN_NOTICE("You nibble [cheese][health < maxHealth ? ", restoring your health" : ""].")
)
adjustHealth(-maxHealth)
else
visible_message(
"<span class='notice'>[src] nibbles through [cheese], attracting another mouse!</span>",
"<span class='notice'>You nibble through [cheese], attracting another mouse!</span>"
SPAN_NOTICE("[src] nibbles through [cheese], attracting another mouse!"),
SPAN_NOTICE("You nibble through [cheese], attracting another mouse!")
)
new /mob/living/basic/mouse(loc)
qdel(cheese)
@@ -116,11 +116,11 @@
return
var/turf/simulated/floor/F = get_turf(cable)
if(cable.get_available_power() && !HAS_TRAIT(src, TRAIT_SHOCKIMMUNE))
visible_message("<span class='warning'>[src] chews through [cable]. It's toast!</span>")
visible_message(SPAN_WARNING("[src] chews through [cable]. It's toast!"))
playsound(src, 'sound/effects/sparks2.ogg', 100, 1)
toast() // mmmm toasty.
else
visible_message("<span class='warning'>[src] chews through [cable].</span>")
visible_message(SPAN_WARNING("[src] chews through [cable]."))
investigate_log("was chewed through by a mouse in [get_area(F)]([F.x], [F.y], [F.z] - [ADMIN_JMP(F)])",INVESTIGATE_WIRES)
cable.deconstruct()
@@ -128,14 +128,14 @@
if(istype(AM, /obj/item/food/sliced/cheesewedge))
return ..() // Get dem
if(show_message)
to_chat(src, "<span class='warning'>You are too small to pull anything except cheese.</span>")
to_chat(src, SPAN_WARNING("You are too small to pull anything except cheese."))
return
/mob/living/basic/mouse/proc/on_atom_entered(datum/source, atom/movable/entered)
if(ishuman(entered))
if(stat == CONSCIOUS)
var/mob/M = entered
to_chat(M, "<span class='notice'>[bicon(src)] Squeek!</span>")
to_chat(M, SPAN_NOTICE("[bicon(src)] Squeek!"))
/mob/living/basic/mouse/proc/toast()
add_atom_colour("#3A3A3A", FIXED_COLOUR_PRIORITY)
@@ -232,7 +232,7 @@
bursted = TRUE
var/turf/T = get_turf(src)
if(!is_station_level(T.z) || isspaceturf(T))
to_chat(src, "<span class='userdanger'>You feel ready to burst, but this isn't an appropriate place! You must return to the station!</span>")
to_chat(src, SPAN_USERDANGER("You feel ready to burst, but this isn't an appropriate place! You must return to the station!"))
apply_status_effect(STATUS_EFFECT_BLOB_BURST, 5 SECONDS, CALLBACK(src, PROC_REF(burst), FALSE))
return FALSE
var/datum/mind/blobmind = mind
@@ -257,13 +257,13 @@
SSticker.record_biohazard_start(BIOHAZARD_BLOB)
/mob/living/basic/mouse/blobinfected/get_scooped(mob/living/carbon/grabber)
to_chat(grabber, "<span class='warning'>You try to pick up [src], but they slip out of your grasp!</span>")
to_chat(src, "<span class='warning'>[src] tries to pick you up, but you wriggle free of their grasp!</span>")
to_chat(grabber, SPAN_WARNING("You try to pick up [src], but they slip out of your grasp!"))
to_chat(src, SPAN_WARNING("[src] tries to pick you up, but you wriggle free of their grasp!"))
/mob/living/basic/mouse/decompile_act(obj/item/matter_decompiler/C, mob/user)
if(!isdrone(user))
user.visible_message("<span class='notice'>[user] sucks [src] into its decompiler. There's a horrible crunching noise.</span>", \
"<span class='warning'>It's a bit of a struggle, but you manage to suck [src] into your decompiler. It makes a series of visceral crunching noises.</span>")
user.visible_message(SPAN_NOTICE("[user] sucks [src] into its decompiler. There's a horrible crunching noise."), \
SPAN_WARNING("It's a bit of a struggle, but you manage to suck [src] into your decompiler. It makes a series of visceral crunching noises."))
new/obj/effect/decal/cleanable/blood/splatter(get_turf(src))
C.stored_comms["metal"] += 2
C.stored_comms["glass"] += 1
@@ -78,11 +78,11 @@
// A changeling caterpillar shouldn't be restricted from evolving.
// A caterpillar needs to consume food-- similar to a dioan nymph --to evolve.
if((nutrition < nutrition_need) && !IS_CHANGELING(M))
to_chat(src, "<span class='warning'>You need to binge on food in order to have the energy to evolve...</span>")
to_chat(src, SPAN_WARNING("You need to binge on food in order to have the energy to evolve..."))
return
if(master_commander)
to_chat(src, "<span class='userdanger'>As you evolve, your mind grows out of it's restraints. You are no longer loyal to [master_commander]!</span>")
to_chat(src, SPAN_USERDANGER("As you evolve, your mind grows out of it's restraints. You are no longer loyal to [master_commander]!"))
// Worme is the lesser form of nian. The caterpillar evolves into this lesser form.
var/mob/living/carbon/human/nian_worme/adult = new(get_turf(loc))
@@ -125,7 +125,7 @@
/mob/living/basic/nian_caterpillar/proc/check_full(datum/source, obj/item/potential_food)
SIGNAL_HANDLER // COMSIG_MOB_PRE_EAT
if(nutrition >= nutrition_need) // Prevents griefing by overeating food items without evolving.
to_chat(src, "<span class='warning'>You're too full to consume this! Perhaps it's time to grow bigger...</span>")
to_chat(src, SPAN_WARNING("You're too full to consume this! Perhaps it's time to grow bigger..."))
return COMSIG_MOB_TERMINATE_EAT
@@ -141,7 +141,7 @@
if(M.a_intent != INTENT_HELP)
return ..()
if(isrobot(M))
M.visible_message("<span class='notice'>[M] playfully boops [src] on the head!</span>", "<span class='notice'>You playfully boop [src] on the head!</span>")
M.visible_message(SPAN_NOTICE("[M] playfully boops [src] on the head!"), SPAN_NOTICE("You playfully boop [src] on the head!"))
else
get_scooped(M)
@@ -171,7 +171,7 @@
/datum/action/innate/nian_caterpillar_emerge/Activate()
var/mob/living/basic/nian_caterpillar/user = owner
user.visible_message("<span class='notice'>[user] begins to hold still and concentrate on weaving a cocoon...</span>", "<span class='notice'>You begin to focus on weaving a cocoon... (This will take [COCOON_WEAVE_DELAY / 10] seconds, and you must hold still.)</span>")
user.visible_message(SPAN_NOTICE("[user] begins to hold still and concentrate on weaving a cocoon..."), SPAN_NOTICE("You begin to focus on weaving a cocoon... (This will take [COCOON_WEAVE_DELAY / 10] seconds, and you must hold still.)"))
if(do_after(user, COCOON_WEAVE_DELAY, FALSE, user))
var/obj/structure/moth_cocoon/C = new(get_turf(user))
var/datum/mind/H = user.mind
@@ -190,13 +190,13 @@
/datum/action/cooldown/mob_cooldown/spin_mothsilk/Activate(atom/target)
if(owner.nutrition < 425)
to_chat(owner, "<span class='warning'>You don't have enough nutrition to spin silk!</span>")
to_chat(owner, SPAN_WARNING("You don't have enough nutrition to spin silk!"))
return FALSE
if(!do_after(owner, 3 SECONDS))
return FALSE
new /obj/item/stack/sheet/mothsilk(get_turf(owner))
owner.nutrition -= 15
owner.visible_message("<span class='notice'>[owner] spins some mothsilk!</span>")
owner.visible_message(SPAN_NOTICE("[owner] spins some mothsilk!"))
StartCooldown()
return TRUE
@@ -57,10 +57,10 @@
if(istype(O, /obj/item/mmi))
var/obj/item/mmi/B = O
if(mmi) // There's already a brain in it.
to_chat(user, "<span class='warning'>There's already a brain in [src]!</span>")
to_chat(user, SPAN_WARNING("There's already a brain in [src]!"))
return ITEM_INTERACT_COMPLETE
if(!B.brainmob)
to_chat(user, "<span class='warning'>Sticking an empty MMI into the frame would sort of defeat the purpose.</span>")
to_chat(user, SPAN_WARNING("Sticking an empty MMI into the frame would sort of defeat the purpose."))
return ITEM_INTERACT_COMPLETE
if(!B.brainmob.key)
var/ghost_can_reenter = 0
@@ -74,18 +74,18 @@
ghost_can_reenter = 1
break
if(!ghost_can_reenter)
to_chat(user, "<span class='notice'>[B] is completely unresponsive; there's no point.</span>")
to_chat(user, SPAN_NOTICE("[B] is completely unresponsive; there's no point."))
return ITEM_INTERACT_COMPLETE
if(B.brainmob.stat == DEAD)
to_chat(user, "<span class='warning'>[B] is dead. Sticking it into the frame would sort of defeat the purpose.</span>")
to_chat(user, SPAN_WARNING("[B] is dead. Sticking it into the frame would sort of defeat the purpose."))
return ITEM_INTERACT_COMPLETE
if(jobban_isbanned(B.brainmob, "Cyborg") || jobban_isbanned(B.brainmob, "nonhumandept"))
to_chat(user, "<span class='warning'>[B] does not seem to fit.</span>")
to_chat(user, SPAN_WARNING("[B] does not seem to fit."))
return ITEM_INTERACT_COMPLETE
to_chat(user, "<span class='notice'>You install [B] in [src]!</span>")
to_chat(user, SPAN_NOTICE("You install [B] in [src]!"))
user.drop_item()
B.forceMove(src)
@@ -97,11 +97,11 @@
else if(istype(O, /obj/item/card/id) || istype(O, /obj/item/pda))
if(!mmi)
to_chat(user, "<span class='warning'>There's no reason to swipe your ID - the spiderbot has no brain to remove.</span>")
to_chat(user, SPAN_WARNING("There's no reason to swipe your ID - the spiderbot has no brain to remove."))
return ITEM_INTERACT_COMPLETE
if(emagged)
to_chat(user, "<span class='warning'>[src] doesn't seem to respond.</span>")
to_chat(user, SPAN_WARNING("[src] doesn't seem to respond."))
return ITEM_INTERACT_COMPLETE
var/obj/item/card/id/id_card
@@ -113,11 +113,11 @@
id_card = pda.id
if(ACCESS_ROBOTICS in id_card.access)
to_chat(user, "<span class='notice'>You swipe your access card and pop the brain out of [src].</span>")
to_chat(user, SPAN_NOTICE("You swipe your access card and pop the brain out of [src]."))
eject_brain()
return ITEM_INTERACT_COMPLETE
else
to_chat(user, "<span class='warning'>You swipe your card, with no effect.</span>")
to_chat(user, SPAN_WARNING("You swipe your card, with no effect."))
return ITEM_INTERACT_COMPLETE
/mob/living/basic/spiderbot/welder_act(mob/user, obj/item/I)
@@ -126,23 +126,23 @@
if(user == src) // No self-repair dummy
return
if(health >= maxHealth)
to_chat(user, "<span class='warning'>[src] does not need repairing!</span>")
to_chat(user, SPAN_WARNING("[src] does not need repairing!"))
return
. = TRUE
if(!I.use_tool(src, user, volume = I.tool_volume))
return
adjustHealth(-5)
add_fingerprint(user)
user.visible_message("[user] repairs [src]!","<span class='notice'>You repair [src].</span>")
user.visible_message("[user] repairs [src]!",SPAN_NOTICE("You repair [src]."))
/mob/living/basic/spiderbot/emag_act(mob/living/user)
if(emagged)
to_chat(user, "<span class='warning'>[src] doesn't seem to respond.</span>")
to_chat(user, SPAN_WARNING("[src] doesn't seem to respond."))
return 0
else
emagged = TRUE
to_chat(user, "<span class='notice'>You short out the security protocols and rewrite [src]'s internal memory.</span>")
to_chat(src, "<span class='userdanger'>You have been emagged; you are now completely loyal to [user] and [user.p_their()] every order!</span>")
to_chat(user, SPAN_NOTICE("You short out the security protocols and rewrite [src]'s internal memory."))
to_chat(src, SPAN_USERDANGER("You have been emagged; you are now completely loyal to [user] and [user.p_their()] every order!"))
emagged_master = user
add_attack_logs(user, src, "Emagged")
maxHealth = 60
@@ -158,7 +158,7 @@
ckey = M.brainmob.ckey
name = "Spider-bot ([M.brainmob.name])"
if(emagged)
to_chat(src, "<span class='userdanger'>You have been emagged; you are now completely loyal to [emagged_master] and [emagged_master.p_their()] every order!</span>")
to_chat(src, SPAN_USERDANGER("You have been emagged; you are now completely loyal to [emagged_master] and [emagged_master.p_their()] every order!"))
/mob/living/basic/spiderbot/update_icon_state()
if(mmi)
@@ -57,7 +57,7 @@
return
if(locate(/obj/structure/alien/weeds/node) in get_turf(src))
return
visible_message("<span class='alertalien'>[src] has planted some alien weeds!</span>")
visible_message(SPAN_ALERTALIEN("[src] has planted some alien weeds!"))
new /obj/structure/alien/weeds/node(loc)
/mob/living/basic/alien/proc/lay_eggs()
@@ -65,7 +65,7 @@
return
if(locate(/obj/structure/alien/egg) in get_turf(src))
return
visible_message("<span class='alertalien'>[src] has laid an egg!</span>")
visible_message(SPAN_ALERTALIEN("[src] has laid an egg!"))
new /obj/structure/alien/egg(loc)
/mob/living/basic/alien/lavaland
@@ -32,7 +32,7 @@
if(ishuman(target))
var/atom/movable/H = target
H.clean_blood()
visible_message("<span class='notice'>\The [src] polishes \the [target].</span>")
visible_message(SPAN_NOTICE("\The [src] polishes \the [target]."))
return FALSE
target.cleaning_act(src, src, cleanspeed, text_description = ".") // LXM is both the user and the cleaning implement itself. Wow!
@@ -47,7 +47,7 @@
if(istype(L))
if(prob(15))
L.Stun(2 SECONDS)
L.visible_message("<span class='danger'>\the [src] scares \the [L]!</span>")
L.visible_message(SPAN_DANGER("\the [src] scares \the [L]!"))
// This mob is for the admin-only ancient vampire, DO NOT USE ELSEWHERE
@@ -68,7 +68,7 @@
/mob/living/basic/bee/examine(mob/user)
. = ..()
if(!bee_syndicate && !beehome)
. += "<span class='warning'>This bee is homeless!</span>"
. += SPAN_WARNING("This bee is homeless!")
/mob/living/basic/bee/Destroy()
if(beehome)
@@ -222,7 +222,7 @@
var/obj/item/reagent_containers/syringe/S = I
if(S.reagents.has_reagent("royal_bee_jelly")) // We check it twice because if we use an if/else statement, it won't catch the check for blacklisted chemicals below
if(!S.reagents.has_reagent("royal_bee_jelly", 5))
to_chat(user, "<span class='warning'>You don't have enough royal bee jelly to split a bee in two!</span>")
to_chat(user, SPAN_WARNING("You don't have enough royal bee jelly to split a bee in two!"))
return
S.reagents.remove_reagent("royal_bee_jelly", 5)
var/obj/item/queen_bee/qb = new(user.drop_location())
@@ -230,20 +230,20 @@
if(queen?.beegent)
qb.queen.assign_reagent(queen.beegent) //Bees use the global singleton instances of reagents, so we don't need to worry about one bee being deleted and her copies losing their reagents.
user.put_in_active_hand(qb)
user.visible_message("<span class='notice'>[user] injects [src] with royal bee jelly, causing it to split into two bees, MORE BEES!</span>", "<span class='warning'>You inject [src] with royal bee jelly, causing it to split into two bees, MORE BEES!</span>")
user.visible_message(SPAN_NOTICE("[user] injects [src] with royal bee jelly, causing it to split into two bees, MORE BEES!"), SPAN_WARNING("You inject [src] with royal bee jelly, causing it to split into two bees, MORE BEES!"))
return
var/datum/reagent/R = GLOB.chemical_reagents_list[S.reagents.get_master_reagent_id()]
if(R && S.reagents.has_reagent(R.id, 5))
S.reagents.remove_reagent(R.id, 5) // Whether or not the chemical is blocked, we want it gone just because you tried to
if(R.id in GLOB.blocked_chems)
to_chat(user, "<span class='warning'>The [src]'s immune system rejects [R.name]!</span>")
to_chat(user, SPAN_WARNING("The [src]'s immune system rejects [R.name]!"))
return
queen.assign_reagent(R)
user.visible_message("<span class='warning'>[user] injects [src]'s genome with [R.name], mutating its DNA!</span>", "<span class='warning'>You inject [src]'s genome with [R.name], mutating its DNA!</span>")
user.visible_message(SPAN_WARNING("[user] injects [src]'s genome with [R.name], mutating its DNA!"), SPAN_WARNING("You inject [src]'s genome with [R.name], mutating its DNA!"))
name = queen.name
else
to_chat(user, "<span class='warning'>You don't have enough units of that chemical to modify the bee's DNA!</span>")
to_chat(user, SPAN_WARNING("You don't have enough units of that chemical to modify the bee's DNA!"))
/obj/item/queen_bee/bought/Initialize(mapload)
. = ..()
@@ -13,8 +13,8 @@
return // Just so people don't accidentally waste it
/obj/item/organ/internal/heart/demon/attack_self__legacy__attackchain(mob/living/user)
user.visible_message("<span class='warning'>[user] raises [src] to [user.p_their()] mouth and tears into it with [user.p_their()] teeth!</span>", \
"<span class='danger'>An unnatural hunger consumes you. You raise [src] to your mouth and devour it!</span>")
user.visible_message(SPAN_WARNING("[user] raises [src] to [user.p_their()] mouth and tears into it with [user.p_their()] teeth!"), \
SPAN_DANGER("An unnatural hunger consumes you. You raise [src] to your mouth and devour it!"))
playsound(user, 'sound/misc/demon_consume.ogg', 50, 1)
/// SLAUGHTER DEMON HEART
@@ -24,8 +24,8 @@
// Eating the heart for the first time. Gives basic bloodcrawling. This is the only time we need to insert the heart.
if(!HAS_TRAIT(user, TRAIT_BLOODCRAWL))
user.visible_message("<span class='warning'>[user]'s eyes flare a deep crimson!</span>", \
"<span class='userdanger'>You feel a strange power seep into your body... you have absorbed the demon's blood-travelling powers!</span>")
user.visible_message(SPAN_WARNING("[user]'s eyes flare a deep crimson!"), \
SPAN_USERDANGER("You feel a strange power seep into your body... you have absorbed the demon's blood-travelling powers!"))
ADD_TRAIT(user, TRAIT_BLOODCRAWL, "bloodcrawl")
user.drop_item()
insert(user) //Consuming the heart literally replaces your heart with a demon heart. H A R D C O R E.
@@ -33,13 +33,13 @@
// Eating a 2nd heart. Gives the ability to drag people into blood and eat them.
if(HAS_TRAIT(user, TRAIT_BLOODCRAWL))
to_chat(user, "You feel differ-<span class='danger'> CONSUME THEM!</span>")
to_chat(user, "You feel differ-[SPAN_DANGER(" CONSUME THEM!")]")
ADD_TRAIT(user, TRAIT_BLOODCRAWL_EAT, "bloodcrawl_eat")
qdel(src) // Replacing their demon heart with another demon heart is pointless, just delete this one and return.
return TRUE
// Eating any more than 2 demon hearts does nothing.
to_chat(user, "<span class='warning'>...and you don't feel any different.</span>")
to_chat(user, SPAN_WARNING("...and you don't feel any different."))
qdel(src)
/obj/item/organ/internal/heart/demon/slaughter/insert(mob/living/carbon/M, special = 0)
@@ -16,7 +16,7 @@
validtargets += M
if(!length(validtargets))
to_chat(usr, "<span class='warning'>There are no valid targets!</span>")
to_chat(usr, SPAN_WARNING("There are no valid targets!"))
return
var/mob/living/target = tgui_input_list(user, "Choose the target to talk to", "Targeting", validtargets)
@@ -31,8 +31,8 @@
if(!msg)
return
log_say("(SLAUGHTER to [key_name(choice)]) [msg]", usr)
to_chat(usr, "<span class='notice'><b>You whisper to [choice]: </b>[msg]</span>")
to_chat(choice, "<span class='deadsay'><b>Suddenly a strange, demonic voice resonates in your head... </b></span><i><span class='danger'> [msg]</span></i>")
to_chat(usr, SPAN_NOTICE("<b>You whisper to [choice]: </b>[msg]"))
to_chat(choice, "[SPAN_DEADSAY("<b>Suddenly a strange, demonic voice resonates in your head... </b>")]<i>[SPAN_DANGER(" [msg]")]</i>")
for(var/mob/dead/observer/G in GLOB.player_list)
G.show_message("<i>Demonic message from <b>[usr]</b> ([ghost_follow_link(usr, ghost=G)]) to <b>[choice]</b> ([ghost_follow_link(choice, ghost=G)]): [msg]</i>")
@@ -56,13 +56,13 @@
/datum/spell/sense_victims/cast(list/targets, mob/user)
var/mob/living/victim = targets[1]
to_chat(victim, "<span class='userdanger'>You feel an awful sense of being watched...</span>")
to_chat(victim, SPAN_USERDANGER("You feel an awful sense of being watched..."))
victim.Stun(6 SECONDS) //HUE
var/area/A = get_area(victim)
if(!A)
to_chat(user, "<span class='warning'>You could not locate any sapient heretics for the Slaughter.</span>")
to_chat(user, SPAN_WARNING("You could not locate any sapient heretics for the Slaughter."))
return 0
to_chat(user, "<span class='danger'>You sense a terrified soul at [A]. <b>Show [A.p_them()] the error of [A.p_their()] ways.</b></span>")
to_chat(user, SPAN_DANGER("You sense a terrified soul at [A]. <b>Show [A.p_them()] the error of [A.p_their()] ways.</b>"))
//////////////////////////////
// MARK: SHADOW DEMON
@@ -73,8 +73,8 @@
base_cooldown = 10 SECONDS
fireball_type = /obj/projectile/magic/shadow_hand
selection_activated_message = "<span class='notice'>You raise your hand, full of demonic energy! <b>Left-click to cast at a target!</b></span>"
selection_deactivated_message = "<span class='notice'>You re-absorb the energy...for now.</span>"
selection_activated_message = SPAN_NOTICE("You raise your hand, full of demonic energy! <b>Left-click to cast at a target!</b>")
selection_deactivated_message = SPAN_NOTICE("You re-absorb the energy...for now.")
action_background_icon_state = "shadow_demon_bg"
action_icon_state = "shadow_grapple"
@@ -189,17 +189,17 @@
return FALSE
if(locked)
if(show_message)
to_chat(user, "<span class='warning'>This ability is locked! Alt-click the button to purchase this ability.</span>")
to_chat(user, "<span class='notice'>It costs [format_si_suffix(unlock_cost)] APC\s to unlock.</span>")
to_chat(user, SPAN_WARNING("This ability is locked! Alt-click the button to purchase this ability."))
to_chat(user, SPAN_NOTICE("It costs [format_si_suffix(unlock_cost)] APC\s to unlock."))
return FALSE
if(user.charge < cast_cost)
if(show_message)
to_chat(user, "<span class='warning'>You do not have enough charge to use this ability!</span>")
to_chat(user, "<span class='notice'>It costs [format_si_suffix(cast_cost)]W to use.</span>")
to_chat(user, SPAN_WARNING("You do not have enough charge to use this ability!"))
to_chat(user, SPAN_NOTICE("It costs [format_si_suffix(cast_cost)]W to use."))
return FALSE
if(requires_area && !user.controlling_area)
if(show_message)
to_chat(user, "<span class='warning'>You need to be controlling an area to use this ability!</span>")
to_chat(user, SPAN_WARNING("You need to be controlling an area to use this ability!"))
return FALSE
return TRUE
@@ -209,7 +209,7 @@
if(requires_area && !user.controlling_area)
return FALSE
if(requires_area && user.controlling_area != get_area(targets[1]))
to_chat(user, "<span class='warning'>You can only use this ability in your controlled area!</span>")
to_chat(user, SPAN_WARNING("You can only use this ability in your controlled area!"))
return FALSE
if(try_cast_action(user, targets[1]))
user.adjust_charge(-cast_cost)
@@ -241,36 +241,36 @@
if(user.apcs_remaining >= unlock_cost)
user.apcs_remaining -= unlock_cost
locked = FALSE
to_chat(user, "<span class='notice'>You have unlocked [initial(name)]!</span>")
to_chat(user, SPAN_NOTICE("You have unlocked [initial(name)]!"))
if(cast_cost > 0)
to_chat(user, "<span class='notice'>It costs [format_si_suffix(cast_cost)]W to use once.</span>")
to_chat(user, SPAN_NOTICE("It costs [format_si_suffix(cast_cost)]W to use once."))
if(level_max > 0 && spell_level < level_max)
to_chat(user, "<span class='notice'>It will cost [format_si_suffix(upgrade_cost)] APC\s to upgrade.</span>")
to_chat(user, SPAN_NOTICE("It will cost [format_si_suffix(upgrade_cost)] APC\s to upgrade."))
update_info()
else
to_chat(user, "<span class='warning'>You cannot afford this ability! It costs [format_si_suffix(unlock_cost)] APC\s to unlock.</span>")
to_chat(user, SPAN_WARNING("You cannot afford this ability! It costs [format_si_suffix(unlock_cost)] APC\s to unlock."))
else
if(spell_level >= level_max)
to_chat(user, "<span class='warning'>You have already fully upgraded this ability!</span>")
to_chat(user, SPAN_WARNING("You have already fully upgraded this ability!"))
else if(user.apcs_remaining >= upgrade_cost)
user.apcs_remaining -= upgrade_cost
spell_level = min(spell_level + 1, level_max)
do_upgrade(user)
if(spell_level == level_max)
to_chat(user, "<span class='notice'>You have fully upgraded [initial(name)]!</span>")
to_chat(user, SPAN_NOTICE("You have fully upgraded [initial(name)]!"))
else
to_chat(user, "<span class='notice'>The next upgrade will cost [format_si_suffix(upgrade_cost)] APC\s to unlock.</span>")
to_chat(user, SPAN_NOTICE("The next upgrade will cost [format_si_suffix(upgrade_cost)] APC\s to unlock."))
update_info()
else
to_chat(user, "<span class='warning'>You cannot afford to upgrade this ability! It costs [format_si_suffix(upgrade_cost)] APC\s to upgrade.</span>")
to_chat(user, SPAN_WARNING("You cannot afford to upgrade this ability! It costs [format_si_suffix(upgrade_cost)] APC\s to upgrade."))
/datum/spell/pulse_demon/proc/do_upgrade(mob/living/basic/demon/pulse_demon/user)
cooldown_handler.recharge_duration = round(base_cooldown / (1.5 ** spell_level))
to_chat(user, "<span class='notice'>You have upgraded [initial(name)] to level [spell_level + 1], it now takes [cooldown_handler.recharge_duration / 10] seconds to recharge.</span>")
to_chat(user, SPAN_NOTICE("You have upgraded [initial(name)] to level [spell_level + 1], it now takes [cooldown_handler.recharge_duration / 10] seconds to recharge."))
/datum/spell/pulse_demon/cablehop
name = "Cable Hop"
@@ -287,10 +287,10 @@
var/turf/T = get_turf(target)
var/obj/structure/cable/C = locate(/obj/structure/cable) in T
if(!istype(C))
to_chat(user, "<span class='warning'>No cable found!</span>")
to_chat(user, SPAN_WARNING("No cable found!"))
return FALSE
if(get_dist(O, T) > 15) //Some extra range to account for them possessing machines away from their APC, but blocking demons from using a camera console to zap across the station.
to_chat(user, "<span class='warning'>That cable is too far away!</span>")
to_chat(user, SPAN_WARNING("That cable is too far away!"))
return FALSE
playsound(T, 'sound/magic/lightningshock.ogg', 50, TRUE)
O.Beam(target, icon_state = "lightning[rand(1, 12)]", icon = 'icons/effects/effects.dmi', time = 1 SECONDS)
@@ -314,7 +314,7 @@
revealing = TRUE
/datum/spell/pulse_demon/emagtamper/try_cast_action(mob/living/basic/demon/pulse_demon/user, atom/target)
to_chat(user, "<span class='warning'>You attempt to tamper with [target]!</span>")
to_chat(user, SPAN_WARNING("You attempt to tamper with [target]!"))
target.emag_act(user)
return TRUE
@@ -329,7 +329,7 @@
revealing = TRUE
/datum/spell/pulse_demon/emp/try_cast_action(mob/living/basic/demon/pulse_demon/user, atom/target)
to_chat(user, "<span class='warning'>You attempt to EMP [target]!</span>")
to_chat(user, SPAN_WARNING("You attempt to EMP [target]!"))
empulse(get_turf(target), 1, 1)
return TRUE
@@ -348,12 +348,12 @@
/datum/spell/pulse_demon/overload/try_cast_action(mob/living/basic/demon/pulse_demon/user, atom/target)
var/obj/machinery/M = target
if(!istype(M))
to_chat(user, "<span class='warning'>That is not a machine.</span>")
to_chat(user, SPAN_WARNING("That is not a machine."))
return FALSE
if(target.flags_2 & NO_MALF_EFFECT_2)
to_chat(user, "<span class='warning'>That machine cannot be overloaded.</span>")
to_chat(user, SPAN_WARNING("That machine cannot be overloaded."))
return FALSE
target.audible_message("<span class='italics'>You hear a loud electrical buzzing sound coming from [target]!</span>")
target.audible_message(SPAN_ITALICS("You hear a loud electrical buzzing sound coming from [target]!"))
addtimer(CALLBACK(src, PROC_REF(detonate), user, M), 5 SECONDS)
return TRUE
@@ -378,10 +378,10 @@
/datum/spell/pulse_demon/remotehijack/try_cast_action(mob/living/basic/demon/pulse_demon/user, atom/target)
var/obj/machinery/power/apc/A = target
if(!istype(A))
to_chat(user, "<span class='warning'>That is not an APC.</span>")
to_chat(user, SPAN_WARNING("That is not an APC."))
return FALSE
if(!user.try_hijack_apc(A, TRUE))
to_chat(user, "<span class='warning'>You cannot hijack that APC right now!</span>")
to_chat(user, SPAN_WARNING("You cannot hijack that APC right now!"))
return TRUE
/datum/spell/pulse_demon/remotedrain
@@ -396,14 +396,14 @@
if(isapc(target))
var/drained = user.drain_APC(target, PULSEDEMON_REMOTE_DRAIN_MULTIPLIER)
if(drained == PULSEDEMON_SOURCE_DRAIN_INVALID)
to_chat(user, "<span class='warning'>This APC is being hijacked, you cannot drain from it right now.</span>")
to_chat(user, SPAN_WARNING("This APC is being hijacked, you cannot drain from it right now."))
else
to_chat(user, "<span class='notice'>You drain [format_si_suffix(drained)]W from [target].</span>")
to_chat(user, SPAN_NOTICE("You drain [format_si_suffix(drained)]W from [target]."))
else if(istype(target, /obj/machinery/power/smes))
var/drained = user.drain_SMES(target, PULSEDEMON_REMOTE_DRAIN_MULTIPLIER)
to_chat(user, "<span class='notice'>You drain [format_si_suffix(drained)]W from [target].</span>")
to_chat(user, SPAN_NOTICE("You drain [format_si_suffix(drained)]W from [target]."))
else
to_chat(user, "<span class='warning'>That is not a valid source.</span>")
to_chat(user, SPAN_WARNING("That is not a valid source."))
return FALSE
return TRUE
@@ -425,7 +425,7 @@
action.background_icon_state = varstate ? action_background_icon_state : "[action_background_icon_state]_disabled"
action.build_all_button_icons()
if(user)
to_chat(user, "<span class='notice'>You will [varstate ? "now" : "no longer"] [base_message]</span>")
to_chat(user, SPAN_NOTICE("You will [varstate ? "now" : "no longer"] [base_message]"))
return varstate
/datum/spell/pulse_demon/toggle/do_drain
@@ -446,13 +446,13 @@
var/amount = text2num(input(user, "Input a value between 1 and [user.max_drain_rate]. 0 will reset it to the maximum.", "Drain Speed Setting"))
if(amount == null || amount < 0)
to_chat(user, "<span class='warning'>Invalid input. Drain speed has not been modified.</span>")
to_chat(user, SPAN_WARNING("Invalid input. Drain speed has not been modified."))
return
if(amount == 0)
amount = user.max_drain_rate
user.power_drain_rate = amount
to_chat(user, "<span class='notice'>Drain speed has been set to [format_si_suffix(user.power_drain_rate)]W per second.</span>")
to_chat(user, SPAN_NOTICE("Drain speed has been set to [format_si_suffix(user.power_drain_rate)]W per second."))
/datum/spell/pulse_demon/toggle/can_exit_cable
name = "Toggle Self-Sustaining"
@@ -465,14 +465,14 @@
/datum/spell/pulse_demon/toggle/can_exit_cable/try_cast_action(mob/living/basic/demon/pulse_demon/user, atom/target)
if(user.can_exit_cable && !(user.current_cable || user.current_power))
to_chat(user, "<span class='warning'>Enter a cable or power source first!</span>")
to_chat(user, SPAN_WARNING("Enter a cable or power source first!"))
return FALSE
user.can_exit_cable = do_toggle(!user.can_exit_cable, user)
return TRUE
/datum/spell/pulse_demon/toggle/can_exit_cable/do_upgrade(mob/living/basic/demon/pulse_demon/user)
user.outside_cable_speed = max(initial(user.outside_cable_speed) - spell_level, 1)
to_chat(user, "<span class='notice'>You have upgraded [initial(name)] to level [spell_level + 1], you will now move faster outside of cables.</span>")
to_chat(user, SPAN_NOTICE("You have upgraded [initial(name)] to level [spell_level + 1], you will now move faster outside of cables."))
/datum/spell/pulse_demon/cycle_camera
name = "Cycle Camera View"
@@ -626,7 +626,7 @@
/datum/spell/pulse_demon/open_upgrades/try_cast_action(mob/living/basic/demon/pulse_demon/user, atom/target)
var/upgrades = get_upgrades(user)
if(!length(upgrades))
to_chat(user, "<span class='warning'>You have already fully upgraded everything available!</span>")
to_chat(user, SPAN_WARNING("You have already fully upgraded everything available!"))
return FALSE
var/raw_choice = show_radial_menu(user, user, upgrades, radius = 48)
@@ -638,39 +638,39 @@
if(cost == -1)
return FALSE
if(user.apcs_remaining < cost)
to_chat(user, "<span class='warning'>You do not have enough unused APCs to purchase this upgrade!</span>")
to_chat(user, SPAN_WARNING("You do not have enough unused APCs to purchase this upgrade!"))
return FALSE
user.apcs_remaining -= cost
switch(choice)
if(PD_UPGRADE_HIJACK_SPEED)
user.hijack_time = max(round(user.hijack_time - 3 SECONDS), 6 SECONDS)
to_chat(user, "<span class='notice'>You have upgraded your [choice], it now takes [user.hijack_time / (1 SECONDS)] second\s to hijack APCs.</span>")
to_chat(user, SPAN_NOTICE("You have upgraded your [choice], it now takes [user.hijack_time / (1 SECONDS)] second\s to hijack APCs."))
if(PD_UPGRADE_DRAIN_SPEED)
var/old = user.max_drain_rate
user.max_drain_rate = user.max_drain_rate + 20 KJ
if(user.power_drain_rate == old)
user.power_drain_rate = user.max_drain_rate
to_chat(user, "<span class='notice'>You have upgraded your [choice], you can now drain [format_si_suffix(user.max_drain_rate)]W.</span>")
to_chat(user, SPAN_NOTICE("You have upgraded your [choice], you can now drain [format_si_suffix(user.max_drain_rate)]W."))
if(PD_UPGRADE_MAX_HEALTH)
user.maxHealth = min(round(user.maxHealth * 1.5), 200)
to_chat(user, "<span class='notice'>You have upgraded your [choice], your max health is now [user.maxHealth].</span>")
to_chat(user, SPAN_NOTICE("You have upgraded your [choice], your max health is now [user.maxHealth]."))
if(PD_UPGRADE_HEALTH_REGEN)
user.health_regen_rate = min(round(user.health_regen_rate + 2), 10)
to_chat(user, "<span class='notice'>You have upgraded your [choice], you will now regenerate [user.health_regen_rate] health per cycle when powered.</span>")
to_chat(user, SPAN_NOTICE("You have upgraded your [choice], you will now regenerate [user.health_regen_rate] health per cycle when powered."))
if(PD_UPGRADE_HEALTH_LOSS)
user.health_loss_rate = max(round(user.health_loss_rate - 1), 0)
if(user.health_loss_rate == 0)
to_chat(user, "<span class='notice'>You have upgraded your [choice], You will no longer lose health when on an unpowered cable.</span>")
to_chat(user, SPAN_NOTICE("You have upgraded your [choice], You will no longer lose health when on an unpowered cable."))
else
to_chat(user, "<span class='notice'>You have upgraded your [choice], you will now lose [user.health_loss_rate] health per cycle when unpowered.</span>")
to_chat(user, SPAN_NOTICE("You have upgraded your [choice], you will now lose [user.health_loss_rate] health per cycle when unpowered."))
if(PD_UPGRADE_HEALTH_COST)
user.power_per_regen = max(round(user.power_per_regen / 1.5), 1)
to_chat(user, "<span class='notice'>You have upgraded your [choice], it now takes [format_si_suffix(user.power_per_regen)]W of power to regenerate health.</span>")
to_chat(user, "<span class='notice'>Additionally, if you enable draining while on a cable, any excess power that would've been used regenerating will be added to your charge.</span>")
to_chat(user, SPAN_NOTICE("You have upgraded your [choice], it now takes [format_si_suffix(user.power_per_regen)]W of power to regenerate health."))
to_chat(user, SPAN_NOTICE("Additionally, if you enable draining while on a cable, any excess power that would've been used regenerating will be added to your charge."))
if(PD_UPGRADE_MAX_CHARGE)
user.maxcharge = user.maxcharge + 50 KJ
to_chat(user, "<span class='notice'>You have upgraded your [choice], you can now store [format_si_suffix(user.maxcharge)]J of energy.</span>")
to_chat(user, SPAN_NOTICE("You have upgraded your [choice], you can now store [format_si_suffix(user.maxcharge)]J of energy."))
else
return FALSE
return TRUE
@@ -262,12 +262,12 @@
return
mind.wipe_memory()
var/list/greeting = list()
greeting.Add("<span class='warning'><font size=3><b>You are a pulse demon.</b></font></span>")
greeting.Add(SPAN_WARNING("<font size=3><b>You are a pulse demon.</b></font>"))
greeting.Add("<b>A being made of pure electrical energy, you travel through the station's wires and infest machinery.</b>")
greeting.Add("<b>Navigate the station's power cables to find power sources to steal from to power your abilities.</b>")
greeting.Add("<b>Hijack APCs by entering them to unlock more powerful abilities, gain more maximum charge, and gain access to connected machines.</b>")
greeting.Add("<b>If the wire or power source you're connected to runs out of power you'll start losing health and eventually die, but you are otherwise resistant to damage.</b>")
greeting.Add("<span class='motd'>For more information, check the wiki page: ([GLOB.configuration.url.wiki_url]/index.php/Pulse_Demon)</span>")
greeting.Add(SPAN_MOTD("For more information, check the wiki page: ([GLOB.configuration.url.wiki_url]/index.php/Pulse_Demon)"))
for(var/datum/objective/new_obj in list(/datum/objective/pulse_demon/infest, /datum/objective/pulse_demon/drain, /datum/objective/pulse_demon/tamper))
mind.add_mind_objective(new_obj)
greeting.Add(mind.prepare_announce_objectives(FALSE))
@@ -327,7 +327,7 @@
if(!S.locked && !can_exit_cable)
can_exit_cable = TRUE
S.do_toggle(can_exit_cable)
to_chat(src, "<span class='danger'>Your self-sustaining ability has automatically enabled itself to prevent death from having no connection!</span>")
to_chat(src, SPAN_DANGER("Your self-sustaining ability has automatically enabled itself to prevent death from having no connection!"))
/mob/living/basic/demon/pulse_demon/proc/update_controlling_area(reset = FALSE)
var/area/prev = controlling_area
@@ -539,7 +539,7 @@
/mob/living/basic/demon/pulse_demon/say(message, verb, sanitize = TRUE, ignore_speech_problems = FALSE, ignore_atmospherics = FALSE, ignore_languages = FALSE)
if(client && check_mute(client.ckey, MUTE_IC))
to_chat(src, "<span class='danger'>You cannot speak in IC (Muted).</span>")
to_chat(src, SPAN_DANGER("You cannot speak in IC (Muted)."))
return FALSE
if(sanitize)
@@ -554,7 +554,7 @@
var/turf/T = get_turf(src)
log_say("[key_name_admin(src)] (@[T.x], [T.y], [T.z]) made [current_robot]([key_name_admin(current_robot)]) say: [message]")
log_admin("[key_name_admin(src)] made [key_name_admin(current_robot)] say: [message]")
message_admins("<span class='notice'>[key_name_admin(src)] made [key_name_admin(current_robot)] say: [message]</span>")
message_admins(SPAN_NOTICE("[key_name_admin(src)] made [key_name_admin(current_robot)] say: [message]"))
// don't sanitize again
current_robot.say(message, null, FALSE, ignore_speech_problems, ignore_atmospherics, ignore_languages)
return TRUE
@@ -628,7 +628,7 @@
if(!is_valid_apc(A) || (A in hijacked_apcs) || apc_being_hijacked || A.being_hijacked)
return FALSE
to_chat(src, "<span class='notice'>You are now attempting to hijack [A], this will take approximately [hijack_time / 10] seconds.</span>")
to_chat(src, SPAN_NOTICE("You are now attempting to hijack [A], this will take approximately [hijack_time / 10] seconds."))
apc_being_hijacked = A
A.being_hijacked = TRUE
A.update_icon()
@@ -636,7 +636,7 @@
if(is_valid_apc(A))
finish_hijack_apc(A, remote)
else
to_chat(src, "<span class='warning'>Failed to hijack [src].</span>")
to_chat(src, SPAN_WARNING("Failed to hijack [src]."))
apc_being_hijacked = null
A.being_hijacked = FALSE
A.update_icon()
@@ -660,7 +660,7 @@
if(!remote)
update_controlling_area()
maxcharge = calc_maxcharge(length(hijacked_apcs)) + (maxcharge - calc_maxcharge(length(hijacked_apcs) - 1))
to_chat(src, "<span class='notice'>Hijacking complete! You now control [length(hijacked_apcs)] APCs and have [apcs_remaining] left to spend.</span>")
to_chat(src, SPAN_NOTICE("Hijacking complete! You now control [length(hijacked_apcs)] APCs and have [apcs_remaining] left to spend."))
var/turf/T = get_turf(A)
var/distance = 0
strengthen_cables(T, distance)
@@ -763,7 +763,7 @@
SIGNAL_HANDLER
if(emp_debounce)
return
visible_message("<span class='danger'>[src] [pick("fizzles", "wails", "flails")] in anguish!</span>")
visible_message(SPAN_DANGER("[src] [pick("fizzles", "wails", "flails")] in anguish!"))
playsound(get_turf(src), pick(hurt_sounds), 30, TRUE)
throw_alert(ALERT_CATEGORY_NOREGEN, /atom/movable/screen/alert/pulse_noregen)
switch(severity)
@@ -790,19 +790,19 @@
if(C?.charge)
C.use(min(C.charge, power_drain_rate))
adjust_charge(min(C.charge, power_drain_rate))
visible_message("<span class='notice'>[src] touches [O] and drains its power!</span>", "<span class='notice'>You touch [O] and drain it's power!</span>")
visible_message(SPAN_NOTICE("[src] touches [O] and drains its power!"), SPAN_NOTICE("You touch [O] and drain it's power!"))
/mob/living/basic/demon/pulse_demon/attack_hand(mob/living/carbon/human/M)
if(is_under_tile())
to_chat(M, "<span class='danger'>You can't interact with something that's under the floor!</span>")
to_chat(M, SPAN_DANGER("You can't interact with something that's under the floor!"))
return
switch(M.intent)
if(INTENT_HELP)
visible_message("<span class='notice'>[M] [response_help_continuous] [src].</span>")
visible_message(SPAN_NOTICE("[M] [response_help_continuous] [src]."))
if(INTENT_DISARM, INTENT_GRAB)
visible_message("<span class='notice'>[M] [response_disarm_continuous] [src].</span>")
visible_message(SPAN_NOTICE("[M] [response_disarm_continuous] [src]."))
if(INTENT_HELP)
visible_message("<span class='warning'>[M] [response_harm_continuous] [src].</span>")
visible_message(SPAN_WARNING("[M] [response_harm_continuous] [src]."))
try_attack_mob(M)
/mob/living/basic/demon/pulse_demon/attack_by(obj/item/O, mob/living/user, params)
@@ -810,16 +810,16 @@
return FINISH_ATTACK
if(is_under_tile())
to_chat(user, "<span class='danger'>You can't interact with something that's under the floor!</span>")
to_chat(user, SPAN_DANGER("You can't interact with something that's under the floor!"))
return FINISH_ATTACK
var/obj/item/stock_parts/cell/C = O.get_cell()
if(C && C.charge)
C.use(min(C.charge, power_drain_rate))
adjust_charge(min(C.charge, power_drain_rate))
to_chat(user, "<span class='warning'>You touch [src] with [O] and [src] drains it!</span>")
to_chat(src, "<span class='notice'>[user] touches you with [O] and you drain its power!</span>")
visible_message("<span class='notice'>[O] goes right through [src].</span>")
to_chat(user, SPAN_WARNING("You touch [src] with [O] and [src] drains it!"))
to_chat(src, SPAN_NOTICE("[user] touches you with [O] and you drain its power!"))
visible_message(SPAN_NOTICE("[O] goes right through [src]."))
try_shock_mob(user, O.siemens_coefficient)
return FINISH_ATTACK
@@ -836,7 +836,7 @@
regen_lock = max(regen_lock, 1)
return ..()
else
visible_message("<span class='warning'>[proj] goes right through [src]!</span>")
visible_message(SPAN_WARNING("[proj] goes right through [src]!"))
/mob/living/basic/demon/pulse_demon/electrocute_act(shock_damage, source, siemens_coeff, flags)
return
@@ -18,12 +18,12 @@
// we probably shouldn't be firing from inside a recharger or someone's bag
if(iscarbon(G.loc) || isturf(G.loc))
G.process_fire(A, src, FALSE)
visible_message("<span class='danger'>[G] fires itself at [A]!</span>", "<span class='danger'>You force [G] to fire at [A]!</span>", "<span class='italics'>You hear \a [G.fire_sound_text]!</span>")
visible_message(SPAN_DANGER("[G] fires itself at [A]!"), SPAN_DANGER("You force [G] to fire at [A]!"), SPAN_ITALICS("You hear \a [G.fire_sound_text]!"))
changeNext_click(CLICK_CD_RANGE) // I can't actually find what the default gun fire cooldown is, so it's 1 second until someone enlightens me
return
else if(current_robot)
log_admin("[key_name_admin(src)] made [key_name_admin(current_robot)] attack [A]")
message_admins("<span class='notice'>[key_name_admin(src)] made [key_name_admin(current_robot)] attack [A]</span>")
message_admins(SPAN_NOTICE("[key_name_admin(src)] made [key_name_admin(current_robot)] attack [A]"))
current_robot.ClickOn(A, params)
changeNext_click(0.5 SECONDS)
@@ -109,8 +109,8 @@
/mob/living/simple_animal/bot/attack_pulsedemon(mob/living/basic/demon/pulse_demon/user)
if(user.loc == src)
return
to_chat(user, "<span class='warning'>You are now inside [src]. If it is destroyed, you will be dropped onto the ground, and may die if there is no cable under you.</span>")
to_chat(user, "<span class='notice'>Leave it by jumping to a hijacked APC.</span>")
to_chat(user, SPAN_WARNING("You are now inside [src]. If it is destroyed, you will be dropped onto the ground, and may die if there is no cable under you."))
to_chat(user, SPAN_NOTICE("Leave it by jumping to a hijacked APC."))
ejectpai(user)
user.forceMove(src)
user.current_bot = src
@@ -129,77 +129,77 @@
/obj/machinery/recharger/attack_pulsedemon(mob/living/basic/demon/pulse_demon/user)
user.forceMove(src)
if(!charging)
to_chat(user, "<span class='warning'>There is no weapon charging. Click again to retry.</span>")
to_chat(user, SPAN_WARNING("There is no weapon charging. Click again to retry."))
return
to_chat(user, "<span class='notice'>You are now attempting to hijack [src], this will take approximately [user.hijack_time / 10] seconds.</span>")
to_chat(user, SPAN_NOTICE("You are now attempting to hijack [src], this will take approximately [user.hijack_time / 10] seconds."))
if(!do_after(user, user.hijack_time, FALSE, src))
return
if(!charging)
to_chat(src, "<span class='warning'>Failed to hijack [src]</span>")
to_chat(src, SPAN_WARNING("Failed to hijack [src]"))
return
to_chat(user, "<span class='notice'>You are now inside [charging]. Click on a hijacked APC to return.</span>")
to_chat(user, SPAN_NOTICE("You are now inside [charging]. Click on a hijacked APC to return."))
user.forceMove(charging)
user.current_weapon = charging
/obj/machinery/cell_charger/attack_pulsedemon(mob/living/basic/demon/pulse_demon/user)
user.forceMove(src)
if(!charging)
to_chat(user, "<span class='warning'>There is no cell charging. Click again to retry.</span>")
to_chat(user, SPAN_WARNING("There is no cell charging. Click again to retry."))
return
to_chat(user, "<span class='notice'>You are now attempting to hijack [src], this will take approximately [user.hijack_time / 10] seconds.</span>")
to_chat(user, SPAN_NOTICE("You are now attempting to hijack [src], this will take approximately [user.hijack_time / 10] seconds."))
if(charging.rigged)
to_chat(user, "<span class='notice'>You are now inside [charging]. Click on a hijacked APC to return.</span>")
to_chat(user, SPAN_NOTICE("You are now inside [charging]. Click on a hijacked APC to return."))
user.forceMove(charging)
return
if(!do_after(user, user.hijack_time, FALSE, src))
return
if(!charging)
to_chat(src, "<span class='warning'>Failed to hijack [src].</span>")
to_chat(src, SPAN_WARNING("Failed to hijack [src]."))
return
to_chat(user, "<span class='notice'>You are now inside [charging]. Click on a hijacked APC to return.</span>")
to_chat(user, SPAN_NOTICE("You are now inside [charging]. Click on a hijacked APC to return."))
user.forceMove(charging)
/obj/machinery/recharge_station/attack_pulsedemon(mob/living/basic/demon/pulse_demon/user)
user.forceMove(src)
if(!isrobot(occupant))
to_chat(user, "<span class='warning'>There is no silicon-based occupant inside. Click again to retry.</span>")
to_chat(user, SPAN_WARNING("There is no silicon-based occupant inside. Click again to retry."))
return
to_chat(user, "<span class='notice'>You are now attempting to hijack [occupant], this will take approximately [user.hijack_time / 10] seconds.</span>")
to_chat(user, SPAN_NOTICE("You are now attempting to hijack [occupant], this will take approximately [user.hijack_time / 10] seconds."))
var/mob/living/silicon/robot/R = occupant
if(R in user.hijacked_robots)
user.do_hijack_robot(occupant)
return
to_chat(R, "<span class='userdanger'>ALERT: ELECTRICAL MALEVOLENCE DETECTED, TARGETING SYSTEMS HIJACK IN PROGRESS</span>")
to_chat(R, SPAN_USERDANGER("ALERT: ELECTRICAL MALEVOLENCE DETECTED, TARGETING SYSTEMS HIJACK IN PROGRESS"))
if(!do_after(user, user.hijack_time, FALSE, src))
return
if(isrobot(occupant))
user.do_hijack_robot(occupant)
return
to_chat(src, "<span class='warning'>Failed to hijack [src].</span>")
to_chat(src, SPAN_WARNING("Failed to hijack [src]."))
/mob/living/basic/demon/pulse_demon/proc/do_hijack_robot(mob/living/silicon/robot/R)
to_chat(src, "<span class='notice'>You are now inside [R]. Click on a hijacked APC to return.</span>")
to_chat(src, SPAN_NOTICE("You are now inside [R]. Click on a hijacked APC to return."))
forceMove(R)
current_robot = R
if(!(R in hijacked_robots))
hijacked_robots += R
to_chat(R, "<span class='userdanger'>TARGETING SYSTEMS HIJACKED, REPORT ALL UNWANTED ACTIVITY</span>")
to_chat(R, SPAN_USERDANGER("TARGETING SYSTEMS HIJACKED, REPORT ALL UNWANTED ACTIVITY"))
/obj/machinery/camera/attack_pulsedemon(mob/living/basic/demon/pulse_demon/user)
if(user.loc != src)
user.forceMove(src)
to_chat(user, "<span class='notice'>You jump towards [src]. Click on a hijacked APC to return.</span>")
to_chat(user, SPAN_NOTICE("You jump towards [src]. Click on a hijacked APC to return."))
// see pulse_demon/say
/obj/machinery/hologram/holopad/attack_pulsedemon(mob/living/basic/demon/pulse_demon/user)
if(user.loc != src)
user.forceMove(src)
to_chat(user, "<span class='notice'>You jump towards [src]. You can now communicate via the holopad's speaker. Click on a hijacked APC to return.</span>")
to_chat(user, SPAN_NOTICE("You jump towards [src]. You can now communicate via the holopad's speaker. Click on a hijacked APC to return."))
/obj/item/radio/attack_pulsedemon(mob/living/basic/demon/pulse_demon/user)
if(user.loc != src)
user.forceMove(src)
to_chat(user, "<span class='notice'>You jump towards [src]. You can now communicate via radio. Click on a hijacked APC to return.</span>")
to_chat(user, SPAN_NOTICE("You jump towards [src]. You can now communicate via radio. Click on a hijacked APC to return."))
else
attack_ai(user)
@@ -228,7 +228,7 @@
var/turf/simulated/floor/F = A
// there was originally a 1% chance to break to lattice, but that doesn't help a pulse demon, so I don't see the point
F.break_tile_to_plating()
audible_message("<span class='danger'>[src] makes an excited booping sound.</span>")
audible_message(SPAN_DANGER("[src] makes an excited booping sound."))
/mob/living/simple_animal/bot/cleanbot/attack_integrated_pulsedemon(mob/living/basic/demon/pulse_demon/user, atom/A)
if(!on)
@@ -238,7 +238,7 @@
if(prob(50))
F.MakeSlippery(TURF_WET_WATER)
if(prob(50))
visible_message("<span class='warning'>Something flies out of [src]! It seems to be acting oddly.</span>")
visible_message(SPAN_WARNING("Something flies out of [src]! It seems to be acting oddly."))
if(!(locate(/obj/effect/decal/cleanable/blood/gibs) in F))
new /obj/effect/decal/cleanable/blood/gibs(F)
playsound(F, 'sound/effects/blobattack.ogg', 40, TRUE)
@@ -20,13 +20,13 @@
/mob/living/basic/demon/shadow/Login()
..()
var/list/L = list(
"<span class='deadsay'><font size=3><b>You are a shadow demon!</b></font></span>",
SPAN_DEADSAY("<font size=3><b>You are a shadow demon!</b></font>"),
"<b>You are a lethal ambush predator who thrives in the darkness, calling upon the shadows to heal your injured form and increase your speed.</b>",
"<b>Light is however your worst enemy and being exposed for too long will be fatal.</b>",
"<b>Striking your victims with your shadow grapple extinguishes any light sources around them. Striking items silences any light within them.</b>",
"<b>You can wrap your dead victims into a shadow cocoon which provides a shroud of darkness which tears away any light near it.</b>",
"<b><i>You do not remember anything of your past lives, nor will you remember anything about this one after your death.</i></b>",
"<br><span class='motd'>For more information, check the wiki page: [wiki_link("Shadow_Demon")]</span>"
"<br>[SPAN_MOTD("For more information, check the wiki page: [wiki_link("Shadow_Demon")]")]"
)
to_chat(src, chat_box_red(L.Join("<br>")))
@@ -37,7 +37,7 @@
if(lum_count > 0.2)
adjustBruteLoss(40 * damage_mod) // 10 seconds in light
SEND_SOUND(src, sound('sound/weapons/sear.ogg'))
to_chat(src, "<span class='biggerdanger'>The light scalds you!</span>")
to_chat(src, SPAN_BIGGERDANGER("The light scalds you!"))
else
adjustBruteLoss(-20)
@@ -56,16 +56,16 @@
return
if(wrapping)
to_chat(src, "<span class='notice'>We are already wrapping something.</span>")
to_chat(src, SPAN_NOTICE("We are already wrapping something."))
return
visible_message("<span class='danger'>[src] begins wrapping [target] in shadowy threads.</span>")
visible_message(SPAN_DANGER("[src] begins wrapping [target] in shadowy threads."))
wrapping = TRUE
if(!do_after(src, 4 SECONDS, FALSE, target = target))
wrapping = FALSE
return
target.visible_message("<span class='warning'><b>[src] envelops [target] into an ethereal cocoon, and darkness begins to creep from it.</b></span>")
target.visible_message(SPAN_WARNING("<b>[src] envelops [target] into an ethereal cocoon, and darkness begins to creep from it.</b>"))
var/obj/structure/shadowcocoon/C = new(get_turf(target))
target.extinguish_light() // may as well be safe
target.forceMove(C)
@@ -83,7 +83,7 @@
/mob/living/basic/demon/shadow/proc/check_block_shadow_crawl(block_time)
if(block_time == last_block_shadow_crawl)
/// it means 10 seconds passed from last shadow grapple shot and it didnt unset block_shadow_crawl
to_chat(src, "<span class='warning'>You feel good enough to use Shadow Crawl again.</span>")
to_chat(src, SPAN_WARNING("You feel good enough to use Shadow Crawl again."))
unblock_shadow_crawl()
/obj/structure/shadowcocoon
@@ -110,8 +110,8 @@
/obj/structure/shadowcocoon/examine(mob/user)
. = ..()
if(istype(user, /mob/living/basic/demon/shadow))
. += silent ? "<span class='notice'>The tendrils are idle and will not produce noise.</span>" : "<span class='notice'>The tendrils are agitated <b>and will occasionally produce noise to lure in more prey.</b></span>"
. += "<span class='notice'>Alt+Click to toggle whether [src] should produce noise to lure in victims.</span>"
. += silent ? SPAN_NOTICE("The tendrils are idle and will not produce noise.") : SPAN_NOTICE("The tendrils are agitated <b>and will occasionally produce noise to lure in more prey.</b>")
. += SPAN_NOTICE("Alt+Click to toggle whether [src] should produce noise to lure in victims.")
/obj/structure/shadowcocoon/process()
time_since_last_hallucination++
@@ -121,7 +121,7 @@
if(iswelder(to_darken) && length(to_darken.light_sources))
var/obj/item/weldingtool/welder_to_darken = to_darken
welder_to_darken.remove_fuel(welder_to_darken.reagents.get_reagent_amount("fuel"))
welder_to_darken.visible_message("<span class='notice'>The shadows swarm around and overwhelm the flame of [welder_to_darken].</span>")
welder_to_darken.visible_message(SPAN_NOTICE("The shadows swarm around and overwhelm the flame of [welder_to_darken]."))
return
if(istype(to_darken, /obj/item/flashlight/flare))
var/obj/item/flashlight/flare/flare_to_darken = to_darken
@@ -129,7 +129,7 @@
continue
flare_to_darken.turn_off()
flare_to_darken.fuel = 0
flare_to_darken.visible_message("<span class='notice'>[flare_to_darken] suddenly dims.</span>")
flare_to_darken.visible_message(SPAN_NOTICE("[flare_to_darken] suddenly dims."))
to_darken.extinguish_light()
if(!silent && time_since_last_hallucination >= rand(8, 12))
playsound(src, pick('sound/shadowdemon/shadowhalluc1.ogg', 'sound/shadowdemon/shadowhalluc2.ogg', 'sound/machines/airlock_open.ogg', 'sound/machines/airlock_close.ogg', 'sound/machines/boltsup.ogg', 'sound/shadowdemon/shadowhalluc3.ogg', get_sfx("bodyfall"), 'sound/weapons/egloves.ogg'), 50)
@@ -141,10 +141,10 @@
if(!isdemon(user))
return ..()
if(silent)
to_chat(user, "<span class='notice'>You twist and change your trapped victim in [src] to lure in more prey.</span>")
to_chat(user, SPAN_NOTICE("You twist and change your trapped victim in [src] to lure in more prey."))
silent = FALSE
return
to_chat(user, "<span class='notice'>The tendrils from [src] snap back to their orignal form.</span>")
to_chat(user, SPAN_NOTICE("The tendrils from [src] snap back to their orignal form."))
silent = TRUE
/obj/structure/shadowcocoon/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
@@ -153,7 +153,7 @@
playsound(loc, 'sound/items/welder.ogg', 100, TRUE)
/obj/structure/shadowcocoon/obj_destruction()
visible_message("<span class='danger'>[src] splits open, and the shadows dancing around it fade.</span>")
visible_message(SPAN_DANGER("[src] splits open, and the shadows dancing around it fade."))
return ..()
/obj/structure/shadowcocoon/Destroy()
@@ -54,7 +54,7 @@
mind.add_mind_objective(/datum/objective/demon_fluff)
messages.Add(mind.prepare_announce_objectives(FALSE))
messages.Add("<span class='motd'>For more information, check the wiki page: ([GLOB.configuration.url.wiki_url]/index.php/Slaughter_Demon)</span>")
messages.Add(SPAN_MOTD("For more information, check the wiki page: ([GLOB.configuration.url.wiki_url]/index.php/Slaughter_Demon)"))
to_chat(src, chat_box_red(messages.Join("<br>")))
/obj/effect/decal/cleanable/blood/innards
@@ -104,7 +104,7 @@
spawn(5)
var/list/demon_candidates = SSghost_spawns.poll_candidates("Do you want to play as a slaughter demon?", ROLE_DEMON, TRUE, 10 SECONDS, source = /mob/living/basic/demon/slaughter/cult)
if(!length(demon_candidates))
visible_message("<span class='warning'>[src] disappears in a flash of red light!</span>")
visible_message(SPAN_WARNING("[src] disappears in a flash of red light!"))
qdel(src)
return
if(QDELETED(src)) // Just in case
@@ -112,7 +112,7 @@
var/mob/M = pick(demon_candidates)
var/mob/living/basic/demon/slaughter/cult/S = src
if(!M || !M.client)
visible_message("<span class='warning'>[src] disappears in a flash of red light!</span>")
visible_message(SPAN_WARNING("[src] disappears in a flash of red light!"))
qdel(src)
return
var/client/C = M.client
@@ -164,5 +164,5 @@
if(M.revive())
M.grab_ghost(force = TRUE)
playsound(get_turf(src), feast_sound, 50, TRUE, -1)
to_chat(M, "<span class='clown'>You leave [src]'s warm embrace, and feel ready to take on the world.</span>")
to_chat(M, SPAN_CLOWN("You leave [src]'s warm embrace, and feel ready to take on the world."))
..(M)
@@ -65,7 +65,7 @@
/mob/living/basic/giant_spider/proc/create_web()
var/T = loc
visible_message("<span class='notice'>[src] begins to secrete a sticky substance.</span>")
visible_message(SPAN_NOTICE("[src] begins to secrete a sticky substance."))
if(!do_after_once(src, 4 SECONDS, target = loc, attempt_cancel_message = "You stop spinning a web.", interaction_key = "spider_web_create"))
return
new /obj/structure/spider/stickyweb(T)
@@ -121,7 +121,7 @@
return
if(cocoon_target)
visible_message("<span class='notice'>[src] begins to secrete a sticky substance around [cocoon_target].</span>")
visible_message(SPAN_NOTICE("[src] begins to secrete a sticky substance around [cocoon_target]."))
if(!do_after_once(src, 5 SECONDS, target = cocoon_target, attempt_cancel_message = "You stop wrapping [cocoon_target].", interaction_key = "spider_web_wrap"))
return
if(cocoon_target && isturf(cocoon_target.loc) && get_dist(src, cocoon_target) <= 1)
@@ -149,7 +149,7 @@
C.pixel_x = L.pixel_x
C.pixel_y = L.pixel_y
fed++
visible_message("<span class='danger'>[src] sticks a proboscis into [L] and sucks a viscous substance out.</span>")
visible_message(SPAN_DANGER("[src] sticks a proboscis into [L] and sucks a viscous substance out."))
break
if(large_cocoon)
@@ -158,12 +158,12 @@
/mob/living/basic/giant_spider/nurse/proc/lay_spider_eggs()
var/obj/structure/spider/eggcluster/E = locate() in get_turf(src)
if(E)
to_chat(src, "<span class='notice'>There is already a cluster of eggs here!</span>")
to_chat(src, SPAN_NOTICE("There is already a cluster of eggs here!"))
return
if(!fed)
to_chat(src, "<span class='warning'>You are too hungry to do this!</span>")
to_chat(src, SPAN_WARNING("You are too hungry to do this!"))
return
visible_message("<span class='notice'>[src] begins to lay a cluster of eggs.</span>")
visible_message(SPAN_NOTICE("[src] begins to lay a cluster of eggs."))
if(!do_after_once(src, 4 SECONDS, target = loc, attempt_cancel_message = "You stop laying eggs.", interaction_key = "spider_egg_lay"))
return
var/obj/structure/spider/eggcluster/C = new /obj/structure/spider/eggcluster(loc)
@@ -69,13 +69,13 @@
var/mob/living/basic/gorilla/cargo_domestic/domesticated = gorilla
if(istype(domesticated) && LAZYLEN(domesticated.crates_in_hand))
to_chat(domesticated, "<span class='warning'>You can't get on all fours while carrying something!</span>")
to_chat(domesticated, SPAN_WARNING("You can't get on all fours while carrying something!"))
return
gorilla.is_bipedal = !gorilla.is_bipedal // Toggle
gorilla.visible_message("<span class='notice'>[gorilla] [gorilla.is_bipedal ? "stands up menacingly." : "drops back to all fours."]</span>",
"<span class='notice'>You [gorilla.is_bipedal ? "stand up" : "get down on all fours."]</span>",
"<span class='notice'>You hear the sound of a gorilla rustling.</span>")
gorilla.visible_message(SPAN_NOTICE("[gorilla] [gorilla.is_bipedal ? "stands up menacingly." : "drops back to all fours."]"),
SPAN_NOTICE("You [gorilla.is_bipedal ? "stand up" : "get down on all fours."]"),
SPAN_NOTICE("You hear the sound of a gorilla rustling."))
gorilla.update_icon(UPDATE_ICON_STATE)
@@ -103,13 +103,13 @@
if(is_type_in_typecache(attacked_target, carriable_cache))
var/atom/movable/movable_target = attacked_target
if(LAZYLEN(crates_in_hand) >= crate_limit)
to_chat(src, "<span class='warning'>You are carrying too many crates!</span>")
to_chat(src, SPAN_WARNING("You are carrying too many crates!"))
return COMPONENT_CANCEL_ATTACK_CHAIN
for(var/mob/living/inside_mob in movable_target.contents)
if(inside_mob.mob_size < MOB_SIZE_HUMAN)
continue
to_chat(src, "<span class='warning'>This crate is too heavy!</span>")
to_chat(src, SPAN_WARNING("This crate is too heavy!"))
return COMPONENT_CANCEL_ATTACK_CHAIN
LAZYADD(crates_in_hand, attacked_target)
@@ -143,7 +143,7 @@
return
living_target.apply_damage(stamina_damage, STAMINA)
visible_message("<span class='warning'>[src] knocks [living_target] down!</span>")
visible_message(SPAN_WARNING("[src] knocks [living_target] down!"))
/mob/living/basic/gorilla/update_icon_state()
. = ..()
@@ -216,8 +216,8 @@
/mob/living/basic/gorilla/cargo_domestic/Login()
. = ..()
// Github copilot wrote the below fluff IDK
to_chat(src, "<span class='boldnotice'>You are [name]. You are a domesticated gorilla, and you are Cargo's pet. You are a loyal and hardworking gorilla, and you love your job. You are a good gorilla, and Cargo loves you.</span>")
to_chat(src, "<span class='boldnotice'>You can pick up crates by clicking them, and drop them by clicking on an open floor. You can carry [crate_limit] crates at a time.</span>")
to_chat(src, SPAN_BOLDNOTICE("You are [name]. You are a domesticated gorilla, and you are Cargo's pet. You are a loyal and hardworking gorilla, and you love your job. You are a good gorilla, and Cargo loves you."))
to_chat(src, SPAN_BOLDNOTICE("You can pick up crates by clicking them, and drop them by clicking on an open floor. You can carry [crate_limit] crates at a time."))
/mob/living/basic/gorilla/cargo_domestic/Initialize(mapload)
. = ..()
@@ -74,12 +74,12 @@
var/datum/effect_system/smoke_spread/smoke = new
smoke.set_up(5, FALSE, loc)
smoke.start()
visible_message("<span class='danger'>[src] warps in!</span>")
visible_message(SPAN_DANGER("[src] warps in!"))
playsound(src.loc, 'sound/effects/empulse.ogg', 25, 1)
/mob/living/basic/hivebot/tele/proc/warpbots()
icon_state = "def_radar"
visible_message("<span class='warning'>[src] turns on!</span>")
visible_message(SPAN_WARNING("[src] turns on!"))
while(bot_amt > 0)
bot_amt--
if(bot_amt > 3)
@@ -58,20 +58,20 @@
if(stat != DEAD)
var/list/msgs = list()
if(key)
msgs += "<span class='warning'>Its eyes have the spark of intelligence.</span>"
msgs += SPAN_WARNING("Its eyes have the spark of intelligence.")
if(health > (maxHealth*0.95))
msgs += "<span class='notice'>It appears to be in excellent health.</span>"
msgs += SPAN_NOTICE("It appears to be in excellent health.")
else if(health > (maxHealth*0.75))
msgs += "<span class='notice'>It has a few injuries.</span>"
msgs += SPAN_NOTICE("It has a few injuries.")
else if(health > (maxHealth*0.55))
msgs += "<span class='warning'>It has many injuries.</span>"
msgs += SPAN_WARNING("It has many injuries.")
else if(health > (maxHealth*0.25))
msgs += "<span class='warning'>It is covered in wounds!</span>"
msgs += SPAN_WARNING("It is covered in wounds!")
if(IS_HORIZONTAL(src))
if(getBruteLoss() || getFireLoss())
msgs += "<span class='warning'>It is currently licking its wounds, regenerating the damage to its body!</span>"
msgs += SPAN_WARNING("It is currently licking its wounds, regenerating the damage to its body!")
else
msgs += "<span class='notice'>It is currently resting.</span>"
msgs += SPAN_NOTICE("It is currently resting.")
. += msgs.Join("<BR>")
/mob/living/basic/hellhound/Move(atom/newloc, direct, glide_size_override, update_dir)
@@ -85,7 +85,7 @@
if(IS_HORIZONTAL(src))
if(life_regen_cycles >= life_regen_cycle_trigger)
life_regen_cycles = 0
to_chat(src, "<span class='notice'>You lick your wounds, helping them close.</span>")
to_chat(src, SPAN_NOTICE("You lick your wounds, helping them close."))
adjustBruteLoss(life_regen_amount)
adjustFireLoss(life_regen_amount)
else
@@ -191,7 +191,7 @@
// First, see if we can get the OG player. If not, choose from Dchat
var/mob/dead/observer/original_ghost = target.get_ghost()
if(original_ghost)
to_chat(original_ghost, "<span class='ghostalert'>You are being revived by otherworldly forces! Return to your body if you want to be revived!</span> (Verbs -> Ghost -> Re-enter corpse)")
to_chat(original_ghost, "[SPAN_GHOSTALERT("You are being revived by otherworldly forces! Return to your body if you want to be revived!")] (Verbs -> Ghost -> Re-enter corpse)")
window_flash(original_ghost.client)
SEND_SOUND(original_ghost, sound('sound/effects/genetics.ogg'))
if(do_after_once(src, 2 SECONDS, target = target, attempt_cancel_message = "You stop reanimating a corpse.", interaction_key = "reanimator_revive"))
@@ -199,12 +199,12 @@
reanimate(target)
/mob/living/basic/skeleton/incursion/reanimator/proc/reanimate(mob/living/carbon/human/H)
visible_message("<span class='warning'>[name] releases dark tendrils into the flesh of [H], morphing their corpse into a grotesque creature!</span>")
visible_message(SPAN_WARNING("[name] releases dark tendrils into the flesh of [H], morphing their corpse into a grotesque creature!"))
var/mob/living/basic/netherworld/blankbody/blank = new(H.loc)
blank.name = "[H]"
blank.desc = "It's [H], but [H.p_their()] flesh has an ashy texture, and [H.p_their()] face is featureless save an eerie smile."
blank.faction = faction.Copy()
visible_message("<span class='warning'>[blank] staggers to [H.p_their()] feet!</span>")
visible_message(SPAN_WARNING("[blank] staggers to [H.p_their()] feet!"))
blank.held_body = H
H.forceMove(blank)
var/mob/dead/observer/ghost = H.get_ghost(TRUE)
@@ -222,7 +222,7 @@
blank.key = chosen_ghost.key
blank.cancel_camera()
dust_if_respawnable(chosen_ghost)
to_chat(blank, "<span class='userdanger'>You have been raised by the dead to serve as a footsoldier in the incursion. Strike down your foes!</span>")
to_chat(blank, SPAN_USERDANGER("You have been raised by the dead to serve as a footsoldier in the incursion. Strike down your foes!"))
/obj/projectile/magic/necrotic_bolt
name = "necrotic bolt"
@@ -244,7 +244,7 @@
/datum/action/cooldown/mob_cooldown/summon_skulls/Activate(atom/target)
var/mob/living/summoner = target
if(!istype(summoner))
to_chat(target, "<span class='warning'>You are unable to summon skulls!</span>")
to_chat(target, SPAN_WARNING("You are unable to summon skulls!"))
return
for(var/i in 1 to 2)
@@ -122,7 +122,7 @@
return
essence = max(0, essence-amount)
if(!essence)
to_chat(src, "<span class='revendanger'>You feel your essence fraying!</span>")
to_chat(src, SPAN_REVENDANGER("You feel your essence fraying!"))
/mob/living/basic/revenant/say(message)
if(!message)
@@ -176,13 +176,13 @@
mind.wipe_memory() // someone kill this and give revenants their own minds please
SEND_SOUND(src, sound('sound/effects/ghost.ogg'))
var/list/messages = list()
messages.Add("<span class='deadsay'><font size=3><b>You are a revenant.</b></font></span>")
messages.Add(SPAN_DEADSAY("<font size=3><b>You are a revenant.</b></font>"))
messages.Add("<b>Your formerly mundane spirit has been infused with alien energies and empowered into a revenant.</b>")
messages.Add("<b>You are not dead, not alive, but somewhere in between. You are capable of limited interaction with both worlds.</b>")
messages.Add("<b>You are invincible and invisible to everyone but other ghosts. Most abilities will reveal you, rendering you vulnerable.</b>")
messages.Add("<b>To function, you are to drain the life essence from humans. This essence is a resource, as well as your health, and will power all of your abilities.</b>")
messages.Add("<b><i>You do not remember anything of your past lives, nor will you remember anything about this one after your death.</i></b>")
messages.Add("<span class='motd'>For more information, check the wiki page: ([GLOB.configuration.url.wiki_url]/index.php/Revenant)</span>")
messages.Add(SPAN_MOTD("For more information, check the wiki page: ([GLOB.configuration.url.wiki_url]/index.php/Revenant)"))
SSticker.mode.traitors |= mind //Necessary for announcing
mind.add_mind_objective(/datum/objective/revenant)
@@ -214,15 +214,15 @@
if(!.)
return FALSE
to_chat(src, "<span class='revendanger'>NO! No... it's too late, you can feel your essence breaking apart...</span>")
to_chat(src, SPAN_REVENDANGER("NO! No... it's too late, you can feel your essence breaking apart..."))
notransform = TRUE
revealed = TRUE
invisibility = 0
playsound(src, 'sound/effects/screech.ogg', 100, TRUE)
visible_message("<span class='warning'>[src] lets out a waning screech as violet mist swirls around its dissolving body!</span>")
visible_message(SPAN_WARNING("[src] lets out a waning screech as violet mist swirls around its dissolving body!"))
icon_state = "revenant_draining"
animate(src, alpha = 0, time = 3 SECONDS)
visible_message("<span class='danger'>[src]'s body breaks apart into a fine pile of blue dust.</span>")
visible_message(SPAN_DANGER("[src]'s body breaks apart into a fine pile of blue dust."))
ghostize(GHOST_FLAGS_OBSERVE_ONLY)
name = "ectoplasm"
desc = "A pile of clumpy dust from a restless spirit"
@@ -236,8 +236,8 @@
return FINISH_ATTACK
if(istype(W, /obj/item/nullrod))
visible_message("<span class='warning'>[src] violently flinches!</span>", \
"<span class='revendanger'>As \the [W] passes through you, you feel your essence draining away!</span>")
visible_message(SPAN_WARNING("[src] violently flinches!"), \
SPAN_REVENDANGER("As \the [W] passes through you, you feel your essence draining away!"))
adjustBruteLoss(25) //hella effective
inhibited = TRUE
spawn(30)
@@ -250,13 +250,13 @@
return
var/turf/T = get_turf(src)
if(iswallturf(T))
to_chat(src, "<span class='revenwarning'>You cannot use abilities from inside of a wall.</span>")
to_chat(src, SPAN_REVENWARNING("You cannot use abilities from inside of a wall."))
return FALSE
if(inhibited)
to_chat(src, "<span class='revenwarning'>Your powers have been suppressed by nulling energy!</span>")
to_chat(src, SPAN_REVENWARNING("Your powers have been suppressed by nulling energy!"))
return FALSE
if(!change_essence_amount(essence_cost, 1))
to_chat(src, "<span class='revenwarning'>You lack the essence to use that ability.</span>")
to_chat(src, SPAN_REVENWARNING("You lack the essence to use that ability."))
return FALSE
return TRUE
@@ -268,9 +268,9 @@
essence_accumulated = max(0, essence_accumulated + essence_amt)
if(!silent)
if(essence_amt > 0)
to_chat(src, "<span class='revennotice'>Gained [essence_amt]E from [source].</span>")
to_chat(src, SPAN_REVENNOTICE("Gained [essence_amt]E from [source]."))
else
to_chat(src, "<span class='revenminor'>Lost [essence_amt]E from [source].</span>")
to_chat(src, SPAN_REVENMINOR("Lost [essence_amt]E from [source]."))
return TRUE
/mob/living/basic/revenant/proc/reveal(time)
@@ -280,10 +280,10 @@
invisibility = 0
incorporeal_move = NO_INCORPOREAL_MOVE
if(!unreveal_time)
to_chat(src, "<span class='revendanger'>You have been revealed!</span>")
to_chat(src, SPAN_REVENDANGER("You have been revealed!"))
unreveal_time = world.time + time
else
to_chat(src, "<span class='revenwarning'>You have been revealed!</span>")
to_chat(src, SPAN_REVENWARNING("You have been revealed!"))
unreveal_time = unreveal_time + time
update_spooky_icon()
@@ -292,10 +292,10 @@
return
notransform = TRUE
if(!unstun_time)
to_chat(src, "<span class='revendanger'>You cannot move!</span>")
to_chat(src, SPAN_REVENDANGER("You cannot move!"))
unstun_time = world.time + time
else
to_chat(src, "<span class='revenwarning'>You cannot move!</span>")
to_chat(src, SPAN_REVENWARNING("You cannot move!"))
unstun_time = unstun_time + time
update_spooky_icon()
@@ -373,7 +373,7 @@
/obj/item/ectoplasm/examine(mob/user)
. = ..()
. += "<span class='revennotice'>Lifeless ectoplasm, still faintly glimmering in the light. From what was once a spirit seeking revenge on the station.</span>"
. += SPAN_REVENNOTICE("Lifeless ectoplasm, still faintly glimmering in the light. From what was once a spirit seeking revenge on the station.")
#undef INVISIBILITY_REVENANT
#undef REVENANT_NAME_FILE
@@ -43,52 +43,52 @@
if(!castcheck(0))
return
if(draining)
to_chat(src, "<span class='revenwarning'>You are already siphoning the essence of a soul!</span>")
to_chat(src, SPAN_REVENWARNING("You are already siphoning the essence of a soul!"))
return
var/mob_UID = target.UID()
if(mob_UID in drained_mobs)
to_chat(src, "<span class='revenwarning'>[target]'s soul is dead and empty.</span>")
to_chat(src, SPAN_REVENWARNING("[target]'s soul is dead and empty."))
return
if(!target.stat)
to_chat(src, "<span class='revennotice'>This being's soul is too strong to harvest.</span>")
to_chat(src, SPAN_REVENNOTICE("This being's soul is too strong to harvest."))
if(prob(10))
to_chat(target, "You feel as if you are being watched.")
return
draining = TRUE
essence_drained = rand(15, 20)
to_chat(src, "<span class='revennotice'>You search for the soul of [target].</span>")
to_chat(src, SPAN_REVENNOTICE("You search for the soul of [target]."))
if(do_after(src, 10, 0, target = target)) //did they get deleted in that second?
if(target.ckey)
to_chat(src, "<span class='revennotice'>Their soul burns with intelligence.</span>")
to_chat(src, SPAN_REVENNOTICE("Their soul burns with intelligence."))
essence_drained += rand(20, 30)
if(target.stat != DEAD)
to_chat(src, "<span class='revennotice'>Their soul blazes with life!</span>")
to_chat(src, SPAN_REVENNOTICE("Their soul blazes with life!"))
essence_drained += rand(40, 50)
else
to_chat(src, "<span class='revennotice'>Their soul is weak and faltering.</span>")
to_chat(src, SPAN_REVENNOTICE("Their soul is weak and faltering."))
if(do_after(src, 20, 0, target = target)) //did they get deleted NOW?
switch(essence_drained)
if(1 to 30)
to_chat(src, "<span class='revennotice'>[target] will not yield much essence. Still, every bit counts.</span>")
to_chat(src, SPAN_REVENNOTICE("[target] will not yield much essence. Still, every bit counts."))
if(30 to 70)
to_chat(src, "<span class='revennotice'>[target] will yield an average amount of essence.</span>")
to_chat(src, SPAN_REVENNOTICE("[target] will yield an average amount of essence."))
if(70 to 90)
to_chat(src, "<span class='revennotice bold'>Such a feast! [target] will yield much essence to you.</span>")
if(90 to INFINITY)
to_chat(src, "<span class='revenbignotice'>Ah, the perfect soul. [target] will yield massive amounts of essence to you.</span>")
to_chat(src, SPAN_REVENBIGNOTICE("Ah, the perfect soul. [target] will yield massive amounts of essence to you."))
if(do_after(src, 20, 0, target = target)) //how about now
if(!target.stat)
to_chat(src, "<span class='revenwarning'>They are now powerful enough to fight off your draining.</span>")
to_chat(target, "<span class='boldannounceic'>You feel something tugging across your body before subsiding.</span>")
to_chat(src, SPAN_REVENWARNING("They are now powerful enough to fight off your draining."))
to_chat(target, SPAN_BOLDANNOUNCEIC("You feel something tugging across your body before subsiding."))
draining = FALSE
return //hey, wait a minute...
to_chat(src, "<span class='revenminor'>You begin siphoning essence from [target]'s soul.</span>")
to_chat(src, SPAN_REVENMINOR("You begin siphoning essence from [target]'s soul."))
if(target.stat != DEAD)
to_chat(target, "<span class='warning'>You feel a horribly unpleasant draining sensation as your grip on life weakens...</span>")
to_chat(target, SPAN_WARNING("You feel a horribly unpleasant draining sensation as your grip on life weakens..."))
icon_state = "revenant_draining"
reveal(27)
stun(27)
target.visible_message("<span class='warning'>[target] suddenly rises slightly into the air, [target.p_their()] skin turning an ashy gray.</span>")
target.visible_message(SPAN_WARNING("[target] suddenly rises slightly into the air, [target.p_their()] skin turning an ashy gray."))
target.Beam(src,icon_state="drain_life",icon='icons/effects/effects.dmi',time=26)
if(do_after(src, 30, 0, target)) //As one cannot prove the existance of ghosts, ghosts cannot prove the existance of the target they were draining.
change_essence_amount(essence_drained, 0, target)
@@ -96,22 +96,22 @@
essence_regen_cap += 25
perfectsouls += 1
to_chat(src, "<span class='revennotice bold'>The perfection of [target]'s soul has increased your maximum essence level. Your new maximum essence is [essence_regen_cap].</span>")
to_chat(src, "<span class='revennotice'>[target]'s soul has been considerably weakened and will yield no more essence for the time being.</span>")
target.visible_message("<span class='warning'>[target] slumps onto the ground.</span>", \
"<span class='revenwarning'>Violets lights, dancing in your vision, getting clo--</span>")
to_chat(src, SPAN_REVENNOTICE("[target]'s soul has been considerably weakened and will yield no more essence for the time being."))
target.visible_message(SPAN_WARNING("[target] slumps onto the ground."), \
SPAN_REVENWARNING("Violets lights, dancing in your vision, getting clo--"))
drained_mobs.Add(mob_UID)
add_attack_logs(src, target, "revenant harvested soul")
target.death()
else
to_chat(src, "<span class='revenwarning'>[target ? "[target] has":"They have"] been drawn out of your grasp. The link has been broken.</span>")
to_chat(src, SPAN_REVENWARNING("[target ? "[target] has":"They have"] been drawn out of your grasp. The link has been broken."))
draining = 0
essence_drained = 0
if(target) //Wait, target is WHERE NOW?
target.visible_message("<span class='warning'>[target] slumps onto the ground.</span>", \
"<span class='revenwarning'>Violets lights, dancing in your vision, receding--</span>")
target.visible_message(SPAN_WARNING("[target] slumps onto the ground."), \
SPAN_REVENWARNING("Violets lights, dancing in your vision, receding--"))
return
else
to_chat(src, "<span class='revenwarning'>You are not close enough to siphon [target ? "[target]'s":"their"] soul. The link has been broken.</span>")
to_chat(src, SPAN_REVENWARNING("You are not close enough to siphon [target ? "[target]'s":"their"] soul. The link has been broken."))
draining = FALSE
essence_drained = 0
return
@@ -122,7 +122,7 @@
//Toggle night vision: lets the revenant toggle its night vision
/datum/spell/night_vision/revenant
base_cooldown = 0
message = "<span class='revennotice'>You toggle your night vision.</span>"
message = SPAN_REVENNOTICE("You toggle your night vision.")
action_icon_state = "r_nightvision"
action_background_icon_state = "bg_revenant"
@@ -149,8 +149,8 @@
cooldown_handler.revert_cast()
return
log_say("(REVENANT to [key_name(M)]) [msg]", user)
to_chat(user, "<span class='revennotice'><b>You transmit to [M]:</b> [msg]</span>")
to_chat(M, "<span class='revennotice'><b>An alien voice resonates from all around...</b></span><i> [msg]</I>")
to_chat(user, SPAN_REVENNOTICE("<b>You transmit to [M]:</b> [msg]"))
to_chat(M, "[SPAN_REVENNOTICE("<b>An alien voice resonates from all around...</b>")]<i> [msg]</I>")
/datum/spell/aoe/revenant
clothes_req = FALSE
@@ -179,7 +179,7 @@
/datum/spell/aoe/revenant/revert_cast(mob/user)
. = ..()
to_chat(user, "<span class='revennotice'>Your ability wavers and fails!</span>")
to_chat(user, SPAN_REVENNOTICE("Your ability wavers and fails!"))
var/mob/living/basic/revenant/R = user
R?.essence += cast_amount //refund the spell and reset
@@ -201,7 +201,7 @@
cooldown_handler.revert_cast()
return FALSE
name = "[initial(name)] ([cast_amount]E)"
to_chat(user, "<span class='revennotice'>You have unlocked [initial(name)]!</span>")
to_chat(user, SPAN_REVENNOTICE("You have unlocked [initial(name)]!"))
locked = FALSE
cooldown_handler.revert_cast()
return FALSE
@@ -241,7 +241,7 @@
/datum/spell/aoe/revenant/overload/proc/shock_lights(obj/machinery/light/L, mob/living/basic/revenant/user)
if(!L.on)
return
L.visible_message("<span class='warning'><b>\The [L] suddenly flares brightly and begins to spark!</b></span>")
L.visible_message(SPAN_WARNING("<b>\The [L] suddenly flares brightly and begins to spark!</b>"))
do_sparks(4, 0, L)
new /obj/effect/temp_visual/revenant(L.loc)
sleep(2 SECONDS)
@@ -428,7 +428,7 @@
return
/mob/living/carbon/human/rev_malfunction(cause_emp = TRUE)
to_chat(src, "<span class='warning'>You feel [pick("your sense of direction flicker out", "a stabbing pain in your head", "your mind fill with static")].</span>")
to_chat(src, SPAN_WARNING("You feel [pick("your sense of direction flicker out", "a stabbing pain in your head", "your mind fill with static")]."))
new /obj/effect/temp_visual/revenant(loc)
if(cause_emp)
emp_act(EMP_HEAVY)
@@ -488,7 +488,7 @@
magic_rust_turf()
/mob/living/carbon/human/defile()
to_chat(src, "<span class='warning'>You suddenly feel [pick("sick and tired", "tired and confused", "nauseated", "dizzy")].</span>")
to_chat(src, SPAN_WARNING("You suddenly feel [pick("sick and tired", "tired and confused", "nauseated", "dizzy")]."))
apply_damage(60, STAMINA)
adjustToxLoss(5)
AdjustConfused(40 SECONDS, bound_lower = 0, bound_upper = 60 SECONDS)
@@ -72,7 +72,7 @@
S.key = C.key
dust_if_respawnable(C)
if(S.master_commander)
to_chat(S, "<span class='biggerdanger'>You are a spider who is loyal to [S.master_commander], obey [S.master_commander]'s every order and assist [S.master_commander.p_them()] in completing [S.master_commander.p_their()] goals at any cost.</span>")
to_chat(S, SPAN_BIGGERDANGER("You are a spider who is loyal to [S.master_commander], obey [S.master_commander]'s every order and assist [S.master_commander.p_them()] in completing [S.master_commander.p_their()] goals at any cost."))
qdel(src)
/mob/living/basic/spiderling/death(gibbed)
@@ -83,8 +83,8 @@
/mob/living/basic/spiderling/decompile_act(obj/item/matter_decompiler/C, mob/user)
if(isdrone(user))
return ..()
user.visible_message("<span class='notice'>[user] sucks [src] into its decompiler. There's a horrible crunching noise.</span>", \
"<span class='warning'>It's a bit of a struggle, but you manage to suck [src] into your decompiler. It makes a series of visceral crunching noises.</span>")
user.visible_message(SPAN_NOTICE("[user] sucks [src] into its decompiler. There's a horrible crunching noise."), \
SPAN_WARNING("It's a bit of a struggle, but you manage to suck [src] into your decompiler. It makes a series of visceral crunching noises."))
C.stored_comms["metal"] += 2
C.stored_comms["glass"] += 1
playsound(src, 'sound/misc/demon_consume.ogg', 10, TRUE, SOUND_RANGE_SET(4))
@@ -118,11 +118,11 @@
/mob/living/basic/swarmer/melee_attack(atom/target, list/modifiers, ignore_cooldown)
face_atom(target)
if(is_type_in_list(target, GLOB.swarmer_blacklist))
to_chat(src, "<span class='warning'>Our sensors have designated this object important to station functionality or to our mission. Aborting.</span>")
to_chat(src, SPAN_WARNING("Our sensors have designated this object important to station functionality or to our mission. Aborting."))
ai_controller.clear_blackboard_key(BB_BASIC_MOB_CURRENT_TARGET)
return FALSE
if(HAS_TRAIT(target, TRAIT_SWARMER_DISINTEGRATING))
to_chat(src, "<span class='warning'>This asset is already being converted into useable resources. Aborting.</span>")
to_chat(src, SPAN_WARNING("This asset is already being converted into useable resources. Aborting."))
ai_controller.clear_blackboard_key(BB_BASIC_MOB_CURRENT_TARGET)
return FALSE
if(iswallturf(target))
@@ -141,7 +141,7 @@
return ..()
var/mob/living/L = target
if(istype(L, /mob/living/basic/swarmer))
to_chat(src, "<span class='warning'>We do not wish to harm one of our own. Aborting.</span>")
to_chat(src, SPAN_WARNING("We do not wish to harm one of our own. Aborting."))
ai_controller.clear_blackboard_key(BB_BASIC_MOB_CURRENT_TARGET)
return FALSE
if(L.stat == DEAD)
@@ -242,7 +242,7 @@
/mob/living/basic/swarmer/proc/disappear_mob(mob/target)
if(!is_station_level(z))
to_chat(src, "<span class='warning'>Our bluespace transceiver cannot locate a viable bluespace link, our teleportation abilities are useless in this area.</span>")
to_chat(src, SPAN_WARNING("Our bluespace transceiver cannot locate a viable bluespace link, our teleportation abilities are useless in this area."))
return
var/turf/simulated/floor/F = find_safe_turf(zlevels = z)
@@ -262,10 +262,10 @@
var/pressure_dangerlevel = cur_tlv.get_danger_level(environment_pressure)
var/area/A = get_area(T)
if(isspaceturf(T) || istype(A, /area/shuttle) || istype(A, /area/space) || pressure_dangerlevel)
to_chat(src, "<span class='warning'>Destroying this object has the potential to cause a hull breach. Aborting.</span>")
to_chat(src, SPAN_WARNING("Destroying this object has the potential to cause a hull breach. Aborting."))
return TRUE
else if(istype(A, /area/station/engineering/engine/supermatter))
to_chat(src, "<span class='warning'>Disrupting the containment of a supermatter crystal would not be to our benefit. Aborting.</span>")
to_chat(src, SPAN_WARNING("Disrupting the containment of a supermatter crystal would not be to our benefit. Aborting."))
return TRUE
return FALSE
@@ -11,18 +11,18 @@
/datum/action/cooldown/mob_cooldown/swarmer_trap/Activate(atom/target)
var/mob/living/basic/swarmer/user = target
if(!istype(user))
to_chat(target, "<span class='warning'>Incompatible hardware detected. Aborting.</span>")
to_chat(target, SPAN_WARNING("Incompatible hardware detected. Aborting."))
return
var/turf/T = get_turf(user)
for(var/turf/turf_in_view in view(1, T))
if(locate(/obj/structure/swarmer) in turf_in_view)
to_chat(user, "<span class='warning'>Location too close to existing hardware. Aborting.</span>")
to_chat(user, SPAN_WARNING("Location too close to existing hardware. Aborting."))
return
if(user.resources < 25)
to_chat(user, "<span class='warning'>Insufficient resources. Aborting.</span>")
to_chat(user, SPAN_WARNING("Insufficient resources. Aborting."))
return
user.resources -= 25
user.visible_message("<span class='warning'>[user] manufactures a sparking pylon.</span>")
user.visible_message(SPAN_WARNING("[user] manufactures a sparking pylon."))
playsound(get_turf(user), 'sound/machines/click.ogg', 50, TRUE)
new /obj/structure/swarmer/trap(T)
StartCooldown()
@@ -40,29 +40,29 @@
/datum/action/cooldown/mob_cooldown/swarmer_barrier/Activate(atom/target)
var/mob/living/basic/swarmer/user = target
if(!istype(user))
to_chat(target, "<span class='warning'>Incompatible hardware detected. Aborting.</span>")
to_chat(target, SPAN_WARNING("Incompatible hardware detected. Aborting."))
return
if(user.resources < 25)
to_chat(user, "<span class='warning'>Insufficient resources. Aborting.</span>")
to_chat(user, SPAN_WARNING("Insufficient resources. Aborting."))
return
var/turf/T = get_turf(user)
for(var/turf/turf_in_view in view(1, T))
if(locate(/obj/structure/swarmer) in turf_in_view)
to_chat(user, "<span class='warning'>Location too close to existing hardware. Aborting.</span>")
to_chat(user, SPAN_WARNING("Location too close to existing hardware. Aborting."))
return
if(!do_after_once(user, 2 SECONDS, target = T, attempt_cancel_message = "You stop building a barricade.", interaction_key = "swarmer_barricade_create"))
return
// Check again to make sure they still have the requirements
if(user.resources < 25)
to_chat(user, "<span class='warning'>Insufficient resources. Aborting.</span>")
to_chat(user, SPAN_WARNING("Insufficient resources. Aborting."))
return
T = get_turf(user)
for(var/turf/turf_in_view in view(1, T))
if(locate(/obj/structure/swarmer) in turf_in_view)
to_chat(user, "<span class='warning'>Location too close to existing hardware. Aborting.</span>")
to_chat(user, SPAN_WARNING("Location too close to existing hardware. Aborting."))
return
user.resources -= 25
user.visible_message("<span class='warning'>[user] manufactures a holographic shield.</span>")
user.visible_message(SPAN_WARNING("[user] manufactures a holographic shield."))
playsound(get_turf(user), 'sound/machines/click.ogg', 50, TRUE)
new /obj/structure/swarmer/barricade(T)
StartCooldown()
@@ -80,20 +80,20 @@
/datum/action/cooldown/mob_cooldown/swarmer_replicate/Activate(atom/target)
var/mob/living/basic/swarmer/user = target
if(!istype(user))
to_chat(target, "<span class='warning'>Incompatible hardware detected. Aborting.</span>")
to_chat(target, SPAN_WARNING("Incompatible hardware detected. Aborting."))
return
if(user.resources < 50)
to_chat(user, "<span class='warning'>Insufficient resources. Aborting.</span>")
to_chat(user, SPAN_WARNING("Insufficient resources. Aborting."))
return
if(!do_after_once(user, 4 SECONDS, target = user, attempt_cancel_message = "You stop building a new swarmer.", interaction_key = "swarmer_replicate_create"))
return
// Check again after the do-after.
if(user.resources < 50)
to_chat(user, "<span class='warning'>Insufficient resources. Aborting.</span>")
to_chat(user, SPAN_WARNING("Insufficient resources. Aborting."))
return
var/turf/T = get_turf(user)
user.resources -= 50
user.visible_message("<span class='warning'>[user] manufactures a new swarmer.</span>")
user.visible_message(SPAN_WARNING("[user] manufactures a new swarmer."))
playsound(get_turf(user), 'sound/items/rped.ogg', 50, TRUE)
new /mob/living/basic/swarmer/lesser(T)
StartCooldown()
@@ -27,6 +27,6 @@
new /obj/effect/temp_visual/goliath_tentacle(adjacent_target)
if(isliving(target))
owner.visible_message("<span class='warning'>[owner] digs its tentacles under [target]!</span>")
owner.visible_message(SPAN_WARNING("[owner] digs its tentacles under [target]!"))
StartCooldown()
return TRUE
@@ -37,7 +37,7 @@
for(var/mob/living/L in loc)
if((!QDELETED(spawner) && spawner.faction_check_mob(L)) || L.stat == DEAD)
continue
visible_message("<span class='danger'>[src] grabs hold of [L]!</span>")
visible_message(SPAN_DANGER("[src] grabs hold of [L]!"))
L.Stun(10 SECONDS)
L.adjustBruteLoss(rand(10,15))
latched = TRUE
@@ -84,7 +84,7 @@
/datum/status_effect/incapacitating/stun/goliath_tentacled/proc/on_helped(mob/source, mob/helping)
SIGNAL_HANDLER // COMSIG_CARBON_PRE_MISC_HELP
release()
source.visible_message("<span class='notice'>[helping] rips [source] from the tentacle's grasp!</span>")
source.visible_message(SPAN_NOTICE("[helping] rips [source] from the tentacle's grasp!"))
return COMPONENT_BLOCK_MISC_HELP
/// Something happened to make the tentacle let go
@@ -63,8 +63,8 @@
/mob/living/basic/mining_drone/emp_act(severity)
adjustHealth(100 / severity)
to_chat(src, "<span class='userdanger'>NOTICE: EMP detected, systems damaged!</span>")
visible_message("<span class='warning'>[src] crackles and buzzes violently!</span>")
to_chat(src, SPAN_USERDANGER("NOTICE: EMP detected, systems damaged!"))
visible_message(SPAN_WARNING("[src] crackles and buzzes violently!"))
/mob/living/basic/mining_drone/examine(mob/user)
. = ..()
@@ -72,24 +72,24 @@
var/t_s = p_s()
if(health < maxHealth)
if(health >= maxHealth * 0.5)
. += "<span class='warning'>[t_He] look[t_s] slightly dented.</span>"
. += SPAN_WARNING("[t_He] look[t_s] slightly dented.")
else
. += "<span class='boldwarning'>[t_He] look[t_s] severely dented!</span>"
. += SPAN_BOLDWARNING("[t_He] look[t_s] severely dented!")
var/ore_count = 0
for(var/obj/item/stack/ore/ore_stack in contents)
ore_count += ore_stack.amount
. += "<span class='notice'>[t_He] is currently storing [ore_count] ore.</span>"
. += SPAN_NOTICE("[t_He] is currently storing [ore_count] ore.")
if(stored_gun && stored_gun.max_mod_capacity)
. += "<span class='notice'><b>[stored_gun.get_remaining_mod_capacity()]%</b> mod capacity remaining.</span>"
. += SPAN_NOTICE("<b>[stored_gun.get_remaining_mod_capacity()]%</b> mod capacity remaining.")
for(var/A in stored_gun.get_modkits())
var/obj/item/borg/upgrade/modkit/M = A
. += "<span class='notice'>There is \a [M] installed, using <b>[M.cost]%</b> capacity.</span>"
. += SPAN_NOTICE("There is \a [M] installed, using <b>[M.cost]%</b> capacity.")
/mob/living/basic/mining_drone/item_interaction(mob/living/user, obj/item/I, list/modifiers)
if(istype(I, /obj/item/mining_scanner) || istype(I, /obj/item/t_scanner/adv_mining_scanner))
to_chat(user, "<span class='notice'>You instruct [src] to drop any collected ore.</span>")
to_chat(user, SPAN_NOTICE("You instruct [src] to drop any collected ore."))
drop_ore()
return ITEM_INTERACT_COMPLETE
if(istype(I, /obj/item/borg/upgrade/modkit))
@@ -111,7 +111,7 @@
return
. = TRUE
if(health == maxHealth)
to_chat(user, "<span class='notice'>[src] doesn't need repairing!</span>")
to_chat(user, SPAN_NOTICE("[src] doesn't need repairing!"))
return
if(!I.tool_use_check(user, 1))
return
@@ -159,10 +159,10 @@
/mob/living/basic/mining_drone/proc/drop_ore(message = TRUE)
if(!length(contents))
if(message)
to_chat(src, "<span class='warning'>You attempt to dump your stored ore, but you have none.</span>")
to_chat(src, SPAN_WARNING("You attempt to dump your stored ore, but you have none."))
return
if(message)
to_chat(src, "<span class='notice'>You dump your stored ore.</span>")
to_chat(src, SPAN_NOTICE("You dump your stored ore."))
for(var/obj/item/stack/ore/O in contents)
O.forceMove(drop_location())
@@ -177,8 +177,8 @@
w_class = WEIGHT_CLASS_SMALL
/obj/item/mining_drone_cube/attack_self__legacy__attackchain(mob/user)
user.visible_message("<span class='warning'>\The [src] suddenly expands into a fully functional mining drone!</span>", \
"<span class='warning'>You press center button on [src]. The device suddenly expands into a fully functional mining drone!</span>")
user.visible_message(SPAN_WARNING("\The [src] suddenly expands into a fully functional mining drone!"), \
SPAN_WARNING("You press center button on [src]. The device suddenly expands into a fully functional mining drone!"))
var/mob/living/basic/mining_drone/drone = new(get_turf(src))
drone.befriend(user)
qdel(src)
@@ -14,7 +14,7 @@
else
user.set_light(6)
user.light_on = !user.light_on
to_chat(user, "<span class='notice'>You toggle your light [user.light_on ? "on" : "off"].</span>")
to_chat(user, SPAN_NOTICE("You toggle your light [user.light_on ? "on" : "off"]."))
/datum/action/innate/minedrone/toggle_meson_vision
name = "Toggle Meson Vision"
@@ -30,7 +30,7 @@
ADD_TRAIT(user, TRAIT_MESON_VISION, "minebot")
update_user_sight(user)
to_chat(user, "<span class='notice'>You toggle your meson vision [!active ? "on" : "off"].</span>")
to_chat(user, SPAN_NOTICE("You toggle your meson vision [!active ? "on" : "off"]."))
/datum/action/innate/minedrone/toggle_meson_vision/proc/update_user_sight(mob/living/user)
user.sight = initial(user.sight)
@@ -16,11 +16,11 @@
/obj/item/mine_bot_upgrade/proc/upgrade_bot(mob/living/basic/mining_drone/M, mob/user)
if(M.melee_damage_upper != initial(M.melee_damage_upper))
to_chat(user, "<span class='warning'>[M] already has a combat upgrade installed!</span>")
to_chat(user, SPAN_WARNING("[M] already has a combat upgrade installed!"))
return
M.melee_damage_lower += 7
M.melee_damage_upper += 7
to_chat(user, "<span class='notice'>You upgrade [M]'s combat module.</span>")
to_chat(user, SPAN_NOTICE("You upgrade [M]'s combat module."))
qdel(src)
/// Minebot Health Upgrade
@@ -29,11 +29,11 @@
/obj/item/mine_bot_upgrade/health/upgrade_bot(mob/living/basic/mining_drone/M, mob/user)
if(M.maxHealth != initial(M.maxHealth))
to_chat(user, "<span class='warning'>[M] already has a reinforced chassis!</span>")
to_chat(user, SPAN_WARNING("[M] already has a reinforced chassis!"))
return
M.maxHealth += 45
M.updatehealth()
to_chat(user, "<span class='notice'>You upgrade [M]'s chassis.</span>")
to_chat(user, SPAN_NOTICE("You upgrade [M]'s chassis."))
qdel(src)
/// Minebot AI upgrade/sentience potion
@@ -51,4 +51,4 @@
/mob/living/basic/mining/goldgrub/bullet_act(obj/projectile/P)
if(P.armor_penetration_flat + P.armor_penetration_percentage >= 100)
return ..()
visible_message("<span class='danger'>[P.name] was repelled by [name]'s girth!</span>")
visible_message(SPAN_DANGER("[P.name] was repelled by [name]'s girth!"))
@@ -40,5 +40,5 @@
/// Begin the chase to kill the mob in time
/datum/ai_behavior/burrow_away/proc/burrow(mob/living/pawn)
if(pawn.stat == CONSCIOUS)
pawn.visible_message("<span class='danger'>[pawn] buries into the ground, vanishing from sight!</span>")
pawn.visible_message(SPAN_DANGER("[pawn] buries into the ground, vanishing from sight!"))
qdel(pawn)
@@ -141,5 +141,5 @@
mind?.transfer_to(L)
L.faction = faction.Copy()
L.setDir(dir)
visible_message("<span class='notice'>[src] grows up into [L].</span>")
visible_message(SPAN_NOTICE("[src] grows up into [L]."))
qdel(src)
@@ -149,8 +149,8 @@
return ..()
/mob/living/basic/mining/hivelordbrood/blood/proc/reabsorb_host(mob/living/carbon/C)
C.visible_message("<span class='notice'>[src] is reabsorbed by [C]'s body.</span>", \
"<span class='notice'>[src] is reabsorbed by your body.</span>")
C.visible_message(SPAN_NOTICE("[src] is reabsorbed by [C]'s body."), \
SPAN_NOTICE("[src] is reabsorbed by your body."))
transfer_reagents(C)
death()
@@ -212,7 +212,7 @@
dwarf_mob = TRUE
/mob/living/basic/mining/hivelord/legion/death(gibbed)
visible_message("<span class='warning'>The skulls on [src] wail in anger as they flee from their dying host!</span>")
visible_message(SPAN_WARNING("The skulls on [src] wail in anger as they flee from their dying host!"))
var/turf/T = get_turf(src)
if(T)
if(stored_mob)
@@ -254,13 +254,13 @@
/mob/living/basic/mining/hivelordbrood/legion/proc/infest(mob/living/carbon/human/H)
if(H?.dna?.species && !H.dna.species.can_be_legion_infested())
return
visible_message("<span class='warning'>[name] burrows into the flesh of [H]!</span>")
visible_message(SPAN_WARNING("[name] burrows into the flesh of [H]!"))
var/mob/living/basic/mining/hivelord/legion/L
if(HAS_TRAIT(H, TRAIT_DWARF)) // dwarf legions aren't just fluff!
L = new /mob/living/basic/mining/hivelord/legion/dwarf(H.loc)
else
L = new(H.loc)
visible_message("<span class='warning'>[L] staggers to [L.p_their()] feet!</span>")
visible_message(SPAN_WARNING("[L] staggers to [L.p_their()] feet!"))
H.death()
H.adjustBruteLoss(1000)
L.stored_mob = H
@@ -322,9 +322,9 @@
if(faction_check(faction, L.faction, FALSE))
continue
L.visible_message("<span class='danger'>[L] was thrown by [src]!</span>",
"<span class='userdanger'>You feel a strong force throwing you!</span>",
"<span class='danger'>You hear a thud.</span>")
L.visible_message(SPAN_DANGER("[L] was thrown by [src]!"),
SPAN_USERDANGER("You feel a strong force throwing you!"),
SPAN_DANGER("You hear a thud."))
var/atom/throw_target = get_edge_target_turf(L, get_dir(src, get_step_away(L, src)))
L.throw_at(throw_target, 4, 4)
var/limb_to_hit = L.get_organ(pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG))
@@ -30,14 +30,14 @@
/mob/living/basic/mining/bullet_act(obj/projectile/P) // Reduces damage from most projectiles to curb off-screen kills
if(P.damage < 30 && P.damage_type != BRUTE && has_laser_resist)
P.damage = (P.damage / 3)
visible_message("<span class='danger'>[P] has a reduced effect on [src]!</span>")
visible_message(SPAN_DANGER("[P] has a reduced effect on [src]!"))
..()
/mob/living/basic/mining/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) // No floor tiling them to death, wiseguy
if(isitem(AM))
var/obj/item/T = AM
if(T.throwforce <= 20)
visible_message("<span class='notice'>[T] [throw_blocked_message] [src.name]!</span>")
visible_message(SPAN_NOTICE("[T] [throw_blocked_message] [src.name]!"))
return
..()
@@ -24,9 +24,9 @@
/mob/living/basic/possessed_object/examine(mob/user)
. = possessed_item.examine(user)
if(health > (maxHealth / 30))
. += "<span class='warning'>[src] appears to be floating without any support!</span>"
. += SPAN_WARNING("[src] appears to be floating without any support!")
else
. += "<span class='warning'>[src] appears to be having trouble staying afloat!</span>"
. += SPAN_WARNING("[src] appears to be having trouble staying afloat!")
/mob/living/basic/possessed_object/do_attack_animation(atom/A, visual_effect_icon, used_item, no_effect)
@@ -36,7 +36,7 @@
/mob/living/basic/possessed_object/start_pulling(atom/movable/AM, state, force = pull_force, show_message = FALSE) // Silly motherfuckers think they can pull things.
if(show_message)
to_chat(src, "<span class='warning'>You are unable to pull [AM]!</span>")
to_chat(src, SPAN_WARNING("You are unable to pull [AM]!"))
/mob/living/basic/possessed_object/ghost() // Ghosting will return the object to normal, and will not disqualify the ghoster from various mid-round antag positions.
@@ -79,27 +79,27 @@
drop_r_hand()
if(!isturf(loc) && prob(escape_chance)) //someone has stuffed us in their bag, or picked us up? Time to escape
visible_message("<span class='notice'>[src] refuses to be contained!</span>")
visible_message(SPAN_NOTICE("[src] refuses to be contained!"))
forceMove(get_turf(src))
if(possessed_item.loc != src) //safety so the item doesn't somehow become detatched from us while doing this
possessed_item.forceMove(src)
/mob/living/basic/possessed_object/Login()
..()
to_chat(src, "<span class='notice'><b>Your spirit has entered [src] and possessed it.</b><br>You are able to do most things a humanoid would be able to do with a [src] in their hands.<br>If you want to end your ghostly possession, use the '<b>ghost</b>' verb, it won't penalize your ability to respawn.</span>")
to_chat(src, SPAN_NOTICE("<b>Your spirit has entered [src] and possessed it.</b><br>You are able to do most things a humanoid would be able to do with a [src] in their hands.<br>If you want to end your ghostly possession, use the '<b>ghost</b>' verb, it won't penalize your ability to respawn."))
/mob/living/basic/possessed_object/Initialize(mapload)
. = ..()
if(!isitem(loc)) // Some silly motherfucker spawned us directly via the game panel.
message_admins("<span class='adminnotice'>Possessed object improperly spawned, deleting.</span>") // So silly admins with debug off will see the message too and not spam these things.
message_admins(SPAN_ADMINNOTICE("Possessed object improperly spawned, deleting.")) // So silly admins with debug off will see the message too and not spam these things.
stack_trace("[src] spawned manually, no object to assign attributes to.")
qdel(src)
var/turf/possessed_loc = get_turf(loc)
if(!istype(possessed_loc)) // Will this ever happen? Who goddamn knows.
message_admins("<span class='adminnotice'>Possessed object could not find turf, deleting.</span>") // So silly admins with debug off will see the message too and not spam these things.
message_admins(SPAN_ADMINNOTICE("Possessed object could not find turf, deleting.")) // So silly admins with debug off will see the message too and not spam these things.
stack_trace("[src] attempted to find a turf to spawn on, and could not.")
qdel(src)
@@ -115,7 +115,7 @@
melee_damage_lower = max(0, possessed_item.force - 5)
melee_damage_upper = possessed_item.force + 5
visible_message("<span class='notice'>[src] rises into the air and begins to float!</span>") // Inform those around us that shit's gettin' spooky.
visible_message(SPAN_NOTICE("[src] rises into the air and begins to float!")) // Inform those around us that shit's gettin' spooky.
animate_ghostly_presence(src, -1, 20, 1)
@@ -78,11 +78,11 @@
passive = !passive
ai_controller.set_blackboard_key(BB_MALF_DRONE_PASSIVE, passive)
if(passive)
visible_message("<span class='notice'>[src] retracts several targetting vanes.</span>")
visible_message(SPAN_NOTICE("[src] retracts several targetting vanes."))
advanced_bullet_dodge_chance = 0
ai_controller.set_blackboard_key(BB_BASIC_MOB_CURRENT_TARGET, null)
else
visible_message("<span class='warning'>[src] suddenly lights up, and additional targetting vanes slide into place.</span>")
visible_message(SPAN_WARNING("[src] suddenly lights up, and additional targetting vanes slide into place."))
advanced_bullet_dodge_chance = 25
ai_controller.cancel_actions()
update_icons()
@@ -97,8 +97,8 @@
return NONE
source.visible_message(
"<span class='danger'>[source]'s jets [pick("boosts", "propels", "pulses", "flares up and moves", "shudders and pushes")] it out of '[hitting_projectile]'s way!</span>",
"<span class='userdanger'>You evade [hitting_projectile]!</span>",
SPAN_DANGER("[source]'s jets [pick("boosts", "propels", "pulses", "flares up and moves", "shudders and pushes")] it out of '[hitting_projectile]'s way!"),
SPAN_USERDANGER("You evade [hitting_projectile]!"),
)
playsound(source, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg', 'sound/effects/refill.ogg'), 75, TRUE)
if(prob(50))
@@ -59,7 +59,7 @@
var/rookick_dir = get_dir(src, L)
var/turf/general_direction = get_edge_target_turf(L, rookick_dir)
L.visible_message("<span class='danger'>[L] is kicked hard!</span>", "<span class='userdanger'>The kangaroo kick sends you flying mate!</span>")
L.visible_message(SPAN_DANGER("[L] is kicked hard!"), SPAN_USERDANGER("The kangaroo kick sends you flying mate!"))
L.throw_at(general_direction, 10, 2)
attack_verb_simple = initial(attack_verb_simple)
+25 -25
View File
@@ -39,20 +39,20 @@
/obj/item/mmi/attackby__legacy__attackchain(obj/item/O as obj, mob/user as mob, params)
if(istype(O, /obj/item/organ/internal/brain/golem))
to_chat(user, "<span class='warning'>You can't find a way to plug [O] into [src].</span>")
to_chat(user, SPAN_WARNING("You can't find a way to plug [O] into [src]."))
return
if(istype(O,/obj/item/organ/internal/brain) && !brainmob) //Time to stick a brain in it --NEO
var/obj/item/organ/internal/brain/B = O
if(!B.brainmob)
to_chat(user, "<span class='warning'>You aren't sure where this brain came from, but you're pretty sure it's a useless brain.</span>")
to_chat(user, SPAN_WARNING("You aren't sure where this brain came from, but you're pretty sure it's a useless brain."))
return
if(held_brain)
to_chat(user, "<span class='userdanger'>Somehow, this MMI still has a brain in it. Report this to the bug tracker.</span>")
to_chat(user, SPAN_USERDANGER("Somehow, this MMI still has a brain in it. Report this to the bug tracker."))
CRASH("[user] tried to stick a [O] into [src] in [get_area(src)], but the held brain variable wasn't cleared")
if(user.drop_item())
B.forceMove(src)
if(!syndiemmi)
visible_message("<span class='notice'>[user] sticks \a [O] into \the [src].</span>")
visible_message(SPAN_NOTICE("[user] sticks \a [O] into \the [src]."))
brainmob = B.brainmob
B.brainmob = null
brainmob.container = src
@@ -82,26 +82,26 @@
radio_action.build_all_button_icons()
SSblackbox.record_feedback("amount", "mmis_filled", 1)
else
to_chat(user, "<span class='warning'>You can't drop [B]!</span>")
to_chat(user, SPAN_WARNING("You can't drop [B]!"))
return
if(istype(O, /obj/item/mmi_radio_upgrade))
if(radio)
to_chat(user, "<span class='warning'>[src] already has a radio installed.</span>")
to_chat(user, SPAN_WARNING("[src] already has a radio installed."))
else
user.visible_message("<span class='notice'>[user] begins to install [O] into [src]...</span>", \
"<span class='notice'>You start to install [O] into [src]...</span>")
user.visible_message(SPAN_NOTICE("[user] begins to install [O] into [src]..."), \
SPAN_NOTICE("You start to install [O] into [src]..."))
if(do_after(user, 20, target=src))
if(user.drop_item())
user.visible_message("<span class='notice'>[user] installs [O] in [src].</span>", \
"<span class='notice'>You install [O] in [src].</span>")
user.visible_message(SPAN_NOTICE("[user] installs [O] in [src]."), \
SPAN_NOTICE("You install [O] in [src]."))
if(brainmob)
to_chat(brainmob, "<span class='notice'>MMI radio capability installed.</span>")
to_chat(brainmob, SPAN_NOTICE("MMI radio capability installed."))
install_radio()
qdel(O)
else
to_chat(user, "<span class='warning'>You can't drop [O]!</span>")
to_chat(user, SPAN_WARNING("You can't drop [O]!"))
return
// Maybe later add encryption key support, but that's a pain in the neck atm
@@ -113,23 +113,23 @@
if(!I.tool_use_check(user, 0))
return
if(!radio)
to_chat(user, "<span class='warning'>There is no radio in [src]!</span>")
to_chat(user, SPAN_WARNING("There is no radio in [src]!"))
return
user.visible_message("<span class='warning'>[user] begins to uninstall the radio from [src]...</span>", \
"<span class='notice'>You start to uninstall the radio from [src]...</span>")
user.visible_message(SPAN_WARNING("[user] begins to uninstall the radio from [src]..."), \
SPAN_NOTICE("You start to uninstall the radio from [src]..."))
if(!I.use_tool(src, user, 40, volume = I.tool_volume) || !radio)
return
uninstall_radio()
new /obj/item/mmi_radio_upgrade(get_turf(src))
user.visible_message("<span class='warning'>[user] uninstalls the radio from [src].</span>", \
"<span class='notice'>You uninstall the radio from [src].</span>")
user.visible_message(SPAN_WARNING("[user] uninstalls the radio from [src]."), \
SPAN_NOTICE("You uninstall the radio from [src]."))
/obj/item/mmi/attack_self__legacy__attackchain(mob/user as mob)
if(!brainmob)
to_chat(user, "<span class='warning'>You upend the MMI, but there's nothing in it.</span>")
to_chat(user, SPAN_WARNING("You upend the MMI, but there's nothing in it."))
else
to_chat(user, "<span class='notice'>You unlock and upend the MMI, spilling the brain onto the floor.</span>")
to_chat(user, SPAN_NOTICE("You unlock and upend the MMI, spilling the brain onto the floor."))
dropbrain(get_turf(user))
icon = 'icons/obj/assemblies.dmi'
icon_state = "mmi_empty"
@@ -160,7 +160,7 @@
/obj/item/mmi/proc/dropbrain(turf/dropspot)
if(isnull(held_brain))
stack_trace("[src] at [loc] attempted to drop brain without a contained brain in [get_area(src)].")
to_chat(brainmob, "<span class='userdanger'>Your MMI did not contain a brain! We'll make a new one for you, but you'd best report this to the bugtracker!</span>")
to_chat(brainmob, SPAN_USERDANGER("Your MMI did not contain a brain! We'll make a new one for you, but you'd best report this to the bugtracker!"))
held_brain = new(dropspot) // Let's not ruin someone's round because of something dumb -- Crazylemon
held_brain.dna = brainmob.dna.Clone()
held_brain.name = "\the [brainmob.name]'s [initial(held_brain.name)]"
@@ -183,7 +183,7 @@
/obj/item/mmi/examine(mob/user)
. = ..()
if(radio)
. += "<span class='notice'>A radio is installed on [src].</span>"
. += SPAN_NOTICE("A radio is installed on [src].")
/obj/item/mmi/proc/install_radio()
radio = new(src)
@@ -312,7 +312,7 @@
/obj/item/mmi/syndie/attackby__legacy__attackchain(obj/item/O, mob/user, params)
if(!master_uid && ishuman(user) && user.mind && istype(O,/obj/item/organ/internal/brain))
to_chat(user, "<span class='notice'>You press your thumb on [src] and imprint your user information.</span>")
to_chat(user, SPAN_NOTICE("You press your thumb on [src] and imprint your user information."))
master_uid = user.mind.UID()
if(!user.mind.has_antag_datum(/datum/antagonist/traitor))
message_admins("[user] has mindslaved [O] using a Syndicate MMI, but they are not a traitor!")
@@ -326,16 +326,16 @@
var/datum/mind/master = locateUID(master_uid)
if(master)
to_chat(brainmob, "<span class='userdanger'>You feel the MMI overriding your free will!</span>")
to_chat(brainmob, SPAN_USERDANGER("You feel the MMI overriding your free will!"))
brainmob.mind.add_antag_datum(new /datum/antagonist/mindslave(master))
return
//Edgecase handling, shouldn't get here
to_chat(brainmob, "<span class='userdanger'>You feel the MMI overriding your free will. You are now loyal to the Syndicate! Assist Syndicate Agents to the best of your abilities.</span>")
to_chat(brainmob, SPAN_USERDANGER("You feel the MMI overriding your free will. You are now loyal to the Syndicate! Assist Syndicate Agents to the best of your abilities."))
message_admins("[src] received a brain but has no master. A generic syndicate zeroth law will be installed instead of a full mindslaving.")
/obj/item/mmi/syndie/dropbrain(turf/dropspot)
brainmob.mind.remove_antag_datum(/datum/antagonist/mindslave)
master_uid = null
to_chat(brainmob, "<span class='userdanger'>You are no longer a mindslave: You have complete and free control of your own faculties once more!</span>")
to_chat(brainmob, SPAN_USERDANGER("You are no longer a mindslave: You have complete and free control of your own faculties once more!"))
..()
+1 -1
View File
@@ -5,7 +5,7 @@
return FALSE
if(!gibbed && container && istype(container, /obj/item/mmi))//If not gibbed but in a container.
var/obj/item/mmi/mmi = container
visible_message("<span class='danger'>[src]'s MMI flatlines!</span>", "<span class='warning'>You hear something flatline.</span>")
visible_message(SPAN_DANGER("[src]'s MMI flatlines!"), SPAN_WARNING("You hear something flatline."))
mmi.icon_state = mmi.dead_icon
/mob/living/brain/gib()
+1 -1
View File
@@ -28,7 +28,7 @@
var/obj/item/mmi/robotic_brain/R = container
if(R && R.silenced)
if(warning)
to_chat(usr, "<span class='warning'>You cannot speak, as your internal speaker is turned off.</span>")
to_chat(usr, SPAN_WARNING("You cannot speak, as your internal speaker is turned off."))
. = FALSE
/mob/living/brain/handle_message_mode(message_mode, list/message_pieces, verb, used_radios)
+17 -17
View File
@@ -25,21 +25,21 @@
/obj/item/mmi/robotic_brain/attack_self__legacy__attackchain(mob/user)
if(isgolem(user))
to_chat(user, "<span class='warning'>Your golem fingers are too large to press the switch on [src].</span>")
to_chat(user, SPAN_WARNING("Your golem fingers are too large to press the switch on [src]."))
return
if(requires_master && !imprinted_master)
to_chat(user, "<span class='notice'>You press your thumb on [src] and imprint your user information.</span>")
to_chat(user, SPAN_NOTICE("You press your thumb on [src] and imprint your user information."))
imprinted_master = user
return
if(brainmob && !brainmob.key && !searching && can_be_reinhabited)
//Start the process of searching for a new user.
to_chat(user, "<span class='notice'>You carefully locate the manual activation switch and start [src]'s boot process.</span>")
to_chat(user, SPAN_NOTICE("You carefully locate the manual activation switch and start [src]'s boot process."))
request_player()
else
silenced = !silenced
to_chat(user, "<span class='notice'>You toggle the speaker [silenced ? "off" : "on"].</span>")
to_chat(user, SPAN_NOTICE("You toggle the speaker [silenced ? "off" : "on"]."))
if(brainmob && brainmob.key)
to_chat(brainmob, "<span class='warning'>Your internal speaker has been toggled [silenced ? "off" : "on"].</span>")
to_chat(brainmob, SPAN_WARNING("Your internal speaker has been toggled [silenced ? "off" : "on"]."))
/obj/item/mmi/robotic_brain/proc/request_player()
var/area/our_area = get_area(src)
@@ -67,13 +67,13 @@
brainmob.mind.assigned_role = "Positronic Brain"
if(H.mind)
H.mind.transfer_to(brainmob)
to_chat(brainmob, "<span class='notice'>You feel slightly disoriented. That's normal when you're just a [ejected_flavor_text].</span>")
to_chat(brainmob, SPAN_NOTICE("You feel slightly disoriented. That's normal when you're just a [ejected_flavor_text]."))
become_occupied(occupied_icon)
/obj/item/mmi/robotic_brain/attempt_become_organ(obj/item/organ/external/parent, mob/living/carbon/human/H)
if(..())
if(imprinted_master)
to_chat(H, "<span class='biggerdanger'>You are permanently imprinted to [imprinted_master], obey [imprinted_master]'s every order and assist [imprinted_master.p_them()] in completing [imprinted_master.p_their()] goals at any cost.</span>")
to_chat(H, SPAN_BIGGERDANGER("You are permanently imprinted to [imprinted_master], obey [imprinted_master]'s every order and assist [imprinted_master.p_them()] in completing [imprinted_master.p_their()] goals at any cost."))
/obj/item/mmi/robotic_brain/proc/transfer_personality(mob/candidate)
searching = FALSE
@@ -89,7 +89,7 @@
log_admin("[key_name(brainmob)] has joined as a robot brain, after having toggled antag hud.")
message_admins("[key_name(brainmob)] has joined as a robot brain, after having toggled antag hud.")
visible_message("<span class='notice'>[src] chimes quietly.</span>")
visible_message(SPAN_NOTICE("[src] chimes quietly."))
become_occupied(occupied_icon)
/obj/item/mmi/robotic_brain/proc/reset_search() //We give the players sixty seconds to decide, then reset the timer.
@@ -99,7 +99,7 @@
searching = FALSE
icon_state = blank_icon
visible_message("<span class='notice'>[src] buzzes quietly as the light fades out. Perhaps you could try again?</span>")
visible_message(SPAN_NOTICE("[src] buzzes quietly as the light fades out. Perhaps you could try again?"))
/obj/item/mmi/robotic_brain/proc/volunteer(mob/dead/observer/user)
if(!searching)
@@ -107,20 +107,20 @@
if(brainmob && brainmob.key)
return // No, something is wrong, abort.
if(!istype(user) && !HAS_TRAIT(user, TRAIT_RESPAWNABLE))
to_chat(user, "<span class='warning'>Seems you're not a ghost. Could you please file an exploit report on the forums?</span>")
to_chat(user, SPAN_WARNING("Seems you're not a ghost. Could you please file an exploit report on the forums?"))
return
if(!validity_checks(user))
to_chat(user, "<span class='warning'>You cannot be \a [src].</span>")
to_chat(user, SPAN_WARNING("You cannot be \a [src]."))
return
if(tgui_alert(user, "Are you sure you want to join as a robotic brain?", "Join as robobrain", list("Yes", "No")) != "Yes")
return
if(!searching)
return
if(!istype(user) && !HAS_TRAIT(user, TRAIT_RESPAWNABLE))
to_chat(user, "<span class='warning'>Seems you're not a ghost. Could you please file an exploit report on the forums?</span>")
to_chat(user, SPAN_WARNING("Seems you're not a ghost. Could you please file an exploit report on the forums?"))
return
if(!validity_checks(user))
to_chat(user, "<span class='warning'>You cannot be \a [src].</span>")
to_chat(user, SPAN_WARNING("You cannot be \a [src]."))
return
transfer_personality(user)
@@ -150,11 +150,11 @@
if(!brainmob.client)
msg += "It appears to be in stand-by mode.\n" //afk
if(UNCONSCIOUS)
msg += "<span class='warning'>It doesn't seem to be responsive.</span>\n"
msg += "[SPAN_WARNING("It doesn't seem to be responsive.")]\n"
if(DEAD)
msg += "<span class='deadsay'>It appears to be completely inactive.</span>\n"
msg += "[SPAN_DEADSAY("It appears to be completely inactive.")]\n"
else
msg += "<span class='deadsay'>It appears to be completely inactive.</span>\n"
msg += "[SPAN_DEADSAY("It appears to be completely inactive.")]\n"
msg += "</span>"
. += msg.Join("")
@@ -192,7 +192,7 @@
if(validity_checks(O) && (world.time >= next_ping_at))
next_ping_at = world.time + (20 SECONDS)
playsound(get_turf(src), 'sound/items/posiping.ogg', 80, 0)
visible_message("<span class='notice'>[src] pings softly.</span>")
visible_message(SPAN_NOTICE("[src] pings softly."))
/obj/item/mmi/robotic_brain/positronic
name = "positronic brain"
@@ -180,7 +180,7 @@
to_chat(M, alien_message)
/mob/living/carbon/alien/proc/deathrattle_message()
return "<i><span class='alien'>The hivemind echoes: [name] has been slain!</span></i>"
return "<i>[SPAN_ALIEN("The hivemind echoes: [name] has been slain!")]</i>"
/*----------------------------------------
Proc: AddInfectionImages()
@@ -18,7 +18,7 @@ This code could certainly use with a touch of TLC, but it functions alright. Bit
AdjustWeakened(-6 SECONDS)
AdjustKnockDown(-6 SECONDS)
stand_up()
visible_message("<span class='notice'>[M.name] nuzzles [src] trying to wake it up!</span>")
visible_message(SPAN_NOTICE("[M.name] nuzzles [src] trying to wake it up!"))
if(INTENT_GRAB)
grabbedby(M)
@@ -27,12 +27,12 @@ This code could certainly use with a touch of TLC, but it functions alright. Bit
if(health > 0)
M.do_attack_animation(src, ATTACK_EFFECT_BITE)
playsound(loc, 'sound/weapons/bite.ogg', 50, TRUE, -1)
visible_message("<span class='danger'>[M.name] bites [src]!</span>", \
"<span class='userdanger'>[M.name] bites [src]!</span>")
visible_message(SPAN_DANGER("[M.name] bites [src]!"), \
SPAN_USERDANGER("[M.name] bites [src]!"))
adjustBruteLoss(1)
add_attack_logs(M, src, "Alien attack", ATKLOG_ALL)
else
to_chat(M, "<span class='warning'>[name] is too injured for that.</span>")
to_chat(M, SPAN_WARNING("[name] is too injured for that."))
/mob/living/carbon/alien/attack_larva(mob/living/carbon/alien/larva/L)
return attack_alien(L)
@@ -12,7 +12,7 @@
/mob/living/carbon/alien/examine_show_ssd()
if(!key)
return "<span class='deadsay'>[p_they(TRUE)] [p_are()] completely catatonic, an unfocused look in [p_their()] eyes.</span>\n"
return "[SPAN_DEADSAY("[p_they(TRUE)] [p_are()] completely catatonic, an unfocused look in [p_their()] eyes.")]\n"
else if(!client)
return "[p_they(TRUE)] [p_have()] suddenly fallen asleep, suffering from Space Sleep Disorder. [p_they(TRUE)] may wake up soon.\n"
@@ -35,7 +35,7 @@
leap_icon.icon_state = "leap_[leap_on_click ? "on":"off"]"
update_icons()
if(message)
to_chat(src, "<span class='noticealien'>You will now [leap_on_click ? "leap at" : "slash at"] enemies!</span>")
to_chat(src, SPAN_NOTICEALIEN("You will now [leap_on_click ? "leap at" : "slash at"] enemies!"))
/mob/living/carbon/alien/humanoid/hunter/ClickOn(atom/A, params)
face_atom(A)
@@ -1,7 +1,7 @@
/mob/living/carbon/alien/humanoid/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE)
if(user.a_intent == INTENT_HARM)
if(HAS_TRAIT(user, TRAIT_PACIFISM))
to_chat(user, "<span class='warning'>You don't want to hurt [src]!</span>")
to_chat(user, SPAN_WARNING("You don't want to hurt [src]!"))
return FALSE
..(user, TRUE)
adjustBruteLoss(10)
@@ -11,7 +11,7 @@
throw_at(get_edge_target_turf(user, get_dir(user, src)), 3, 7)
hitverb = "slammed"
playsound(loc, "punch", 25, TRUE, -1)
visible_message("<span class='danger'>[user] has [hitverb] [src]!</span>", "<span class='userdanger'>[user] has [hitverb] [src]!</span>")
visible_message(SPAN_DANGER("[user] has [hitverb] [src]!"), SPAN_USERDANGER("[user] has [hitverb] [src]!"))
return TRUE
/mob/living/carbon/alien/humanoid/attack_hand(mob/living/carbon/human/M)
@@ -21,18 +21,18 @@
var/damage = rand(1, 9)
if(prob(90))
playsound(loc, "punch", 25, TRUE, -1)
visible_message("<span class='danger'>[M] has punched [src]!</span>", \
"<span class='userdanger'>[M] has punched [src]!</span>")
visible_message(SPAN_DANGER("[M] has punched [src]!"), \
SPAN_USERDANGER("[M] has punched [src]!"))
if((stat != DEAD) && (damage > 9||prob(5)))//Regular humans have a very small chance of weakening an alien.
Paralyse(4 SECONDS)
visible_message("<span class='danger'>[M] has weakened [src]!</span>", \
"<span class='userdanger'>[M] has weakened [src]!</span>", \
"<span class='danger'>You hear someone fall.</span>")
visible_message(SPAN_DANGER("[M] has weakened [src]!"), \
SPAN_USERDANGER("[M] has weakened [src]!"), \
SPAN_DANGER("You hear someone fall."))
adjustBruteLoss(damage)
add_attack_logs(M, src, "Melee attacked with fists")
else
playsound(loc, 'sound/weapons/punchmiss.ogg', 25, TRUE, -1)
visible_message("<span class='danger'>[M] has attempted to punch [src]!</span>")
visible_message(SPAN_DANGER("[M] has attempted to punch [src]!"))
if(INTENT_DISARM)
if(!IS_HORIZONTAL(src))
@@ -40,17 +40,17 @@
Paralyse(4 SECONDS)
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1)
add_attack_logs(M, src, "Pushed over")
visible_message("<span class='danger'>[M] has pushed down [src]!</span>", \
"<span class='userdanger'>[M] has pushed down [src]!</span>")
visible_message(SPAN_DANGER("[M] has pushed down [src]!"), \
SPAN_USERDANGER("[M] has pushed down [src]!"))
else
if(prob(50))
drop_item()
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1)
visible_message("<span class='danger'>[M] has disarmed [src]!</span>", \
"<span class='userdanger'>[M] has disarmed [src]!</span>")
visible_message(SPAN_DANGER("[M] has disarmed [src]!"), \
SPAN_USERDANGER("[M] has disarmed [src]!"))
else
playsound(loc, 'sound/weapons/punchmiss.ogg', 25, TRUE, -1)
visible_message("<span class='danger'>[M] has attempted to disarm [src]!</span>")
visible_message(SPAN_DANGER("[M] has attempted to disarm [src]!"))
/mob/living/carbon/alien/humanoid/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect)
if(!no_effect && !visual_effect_icon && !get_active_hand())
@@ -4,8 +4,8 @@
if(prob(90))
playsound(loc, "punch", 25, TRUE, -1)
add_attack_logs(M, src, "Melee attacked with fists")
visible_message("<span class='danger'>[M] has kicked [src]!</span>", \
"<span class='userdanger'>[M] has kicked [src]!</span>")
visible_message(SPAN_DANGER("[M] has kicked [src]!"), \
SPAN_USERDANGER("[M] has kicked [src]!"))
if((stat != DEAD) && (damage > 4.9))
Paralyse(rand(10 SECONDS, 20 SECONDS))
@@ -13,14 +13,14 @@
updatehealth()
else
playsound(loc, 'sound/weapons/punchmiss.ogg', 25, TRUE, -1)
visible_message("<span class='danger'>[M] has attempted to kick [src]!</span>", \
"<span class='userdanger'>[M] has attempted to kick [src]!</span>")
visible_message(SPAN_DANGER("[M] has attempted to kick [src]!"), \
SPAN_USERDANGER("[M] has attempted to kick [src]!"))
/mob/living/carbon/alien/larva/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE)
if(user.a_intent == INTENT_HARM)
if(HAS_TRAIT(user, TRAIT_PACIFISM))
to_chat(user, "<span class='warning'>You don't want to hurt [src]!</span>")
to_chat(user, SPAN_WARNING("You don't want to hurt [src]!"))
return FALSE
..(user, TRUE)
adjustBruteLoss(5 + rand(1, 9))
@@ -36,24 +36,24 @@
if(prob(2))
owner.emote("cough")
if(prob(2))
to_chat(owner, "<span class='danger'>Your throat feels sore.</span>")
to_chat(owner, SPAN_DANGER("Your throat feels sore."))
if(prob(2))
to_chat(owner, "<span class='danger'>Mucous runs down the back of your throat.</span>")
to_chat(owner, SPAN_DANGER("Mucous runs down the back of your throat."))
if(3)
if(prob(2))
owner.emote("sneeze")
if(prob(2))
owner.emote("cough")
if(prob(4))
to_chat(owner, "<span class='danger'>Your muscles ache.</span>")
to_chat(owner, SPAN_DANGER("Your muscles ache."))
if(prob(20))
owner.take_organ_damage(1)
if(prob(4))
to_chat(owner, "<span class='danger'>Your chest hurts.</span>")
to_chat(owner, SPAN_DANGER("Your chest hurts."))
if(prob(20))
owner.adjustToxLoss(1)
if(4)
to_chat(owner, "<span class='danger'>You feel something tearing its way out of your chest...</span>")
to_chat(owner, SPAN_DANGER("You feel something tearing its way out of your chest..."))
owner.adjustToxLoss(10)
/obj/item/organ/internal/body_egg/alien_embryo/egg_process()
@@ -108,7 +108,7 @@
new_xeno.mind.assigned_role = SPECIAL_ROLE_XENOMORPH
new_xeno.mind.special_role = SPECIAL_ROLE_XENOMORPH
SEND_SOUND(new_xeno, sound('sound/voice/hiss5.ogg'))
to_chat(new_xeno, "<span class='motd'>For more information, check the wiki page: ([GLOB.configuration.url.wiki_url]/index.php/Xenomorph)</span>")
to_chat(new_xeno, SPAN_MOTD("For more information, check the wiki page: ([GLOB.configuration.url.wiki_url]/index.php/Xenomorph)"))
if(burst_on_success) //If we burst naturally
owner.apply_damage(300, BRUTE, BODY_ZONE_CHEST)
@@ -55,11 +55,11 @@
if(real)//So that giant red text about probisci doesn't show up for fake ones
switch(stat)
if(DEAD,UNCONSCIOUS)
. += "<span class='boldannounceic'>[src] is not moving.</span>"
. += SPAN_BOLDANNOUNCEIC("[src] is not moving.")
if(CONSCIOUS)
. += "<span class='boldannounceic'>[src] seems to be active!</span>"
. += SPAN_BOLDANNOUNCEIC("[src] seems to be active!")
if(sterile)
. += "<span class='boldannounceic'>It looks like the proboscis has been removed.</span>"
. += SPAN_BOLDANNOUNCEIC("It looks like the proboscis has been removed.")
/obj/item/clothing/mask/facehugger/temperature_expose(exposed_temperature, exposed_volume)
..()
@@ -110,13 +110,13 @@
return FALSE
if(!sterile)
M.take_organ_damage(strength, 0) //done here so that even borgs and humans in helmets take damage
M.visible_message("<span class='danger'>[src] leaps at [M]'s face!</span>", \
"<span class='userdanger'>[src] leaps at [M]'s face!</span>")
M.visible_message(SPAN_DANGER("[src] leaps at [M]'s face!"), \
SPAN_USERDANGER("[src] leaps at [M]'s face!"))
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.head && H.head.flags_cover & HEADCOVERSMOUTH)
H.visible_message("<span class='danger'>[src] smashes against [H]'s [H.head]!</span>", \
"<span class='userdanger'>[src] smashes against [H]'s [H.head]!</span>")
H.visible_message(SPAN_DANGER("[src] smashes against [H]'s [H.head]!"), \
SPAN_USERDANGER("[src] smashes against [H]'s [H.head]!"))
Die()
return FALSE
if(iscarbon(M))
@@ -125,15 +125,15 @@
if(istype(target.wear_mask, /obj/item/clothing/mask/muzzle))
var/obj/item/clothing/mask/muzzle/S = target.wear_mask
if(S.do_break())
target.visible_message("<span class='danger'>[src] spits acid onto [S] melting the lock!</span>", \
"<span class='userdanger'>[src] spits acid onto [S] melting the lock!</span>")
target.visible_message(SPAN_DANGER("[src] spits acid onto [S] melting the lock!"), \
SPAN_USERDANGER("[src] spits acid onto [S] melting the lock!"))
var/obj/item/clothing/W = target.wear_mask
if(W.flags & NODROP)
return FALSE
target.drop_item_to_ground(W)
target.visible_message("<span class='danger'>[src] tears [W] off of [target]'s face!</span>", \
"<span class='userdanger'>[src] tears [W] off of [target]'s face!</span>")
target.visible_message(SPAN_DANGER("[src] tears [W] off of [target]'s face!"), \
SPAN_USERDANGER("[src] tears [W] off of [target]'s face!"))
src.loc = target
target.equip_to_slot_if_possible(src, ITEM_SLOT_MASK, FALSE, TRUE)
@@ -162,13 +162,13 @@
if(ishuman(target))
var/mob/living/carbon/human/H = target
if(!H.check_has_mouth())
target.show_message("<span class='notice'>[src] relaxes its grip on your head... it seems indifferent to you.</span>")
target.show_message(SPAN_NOTICE("[src] relaxes its grip on your head... it seems indifferent to you."))
return
if(!sterile)
//target.contract_disease(new /datum/disease/alien_embryo(0)) //so infection chance is same as virus infection chance
target.visible_message("<span class='danger'>[src] falls limp after violating [target]'s face!</span>", \
"<span class='userdanger'>[src] falls limp after violating [target]'s face!</span>")
target.visible_message(SPAN_DANGER("[src] falls limp after violating [target]'s face!"), \
SPAN_USERDANGER("[src] falls limp after violating [target]'s face!"))
Die()
icon_state = "[initial(icon_state)]_impregnated"
@@ -176,8 +176,8 @@
new /obj/item/organ/internal/body_egg/alien_embryo(target)
SSblackbox.record_feedback("tally", "alien_growth", 1, "people_infected")
else
target.visible_message("<span class='danger'>[src] violates [target]'s face!</span>", \
"<span class='userdanger'>[src] violates [target]'s face!</span>")
target.visible_message(SPAN_DANGER("[src] violates [target]'s face!"), \
SPAN_USERDANGER("[src] violates [target]'s face!"))
/obj/item/clothing/mask/facehugger/proc/GoActive()
if(stat == DEAD || stat == CONSCIOUS)
@@ -205,7 +205,7 @@
stat = DEAD
QDEL_NULL(proximity_monitor)
visible_message("<span class='danger'>[src] curls up into a ball!</span>")
visible_message(SPAN_DANGER("[src] curls up into a ball!"))
/proc/CanHug(mob/living/M)
if(!istype(M))
@@ -11,7 +11,7 @@
throw_mode_off()
put_in_active_hand(AM)
visible_message("<span class='warning'>[src] catches [AM]!</span>")
visible_message(SPAN_WARNING("[src] catches [AM]!"))
SEND_SIGNAL(src, COMSIG_CARBON_THROWN_ITEM_CAUGHT, AM)
return TRUE
return ..()
@@ -50,7 +50,7 @@
apply_damage(M.powerlevel * 5, STAMINA) //5-50 stamina damage, at starting power level 10 this means 50, 35, 20 on consecutive hits - stamina crit in 3 hits
KnockDown(M.powerlevel SECONDS)
Stuttering(M.powerlevel SECONDS)
visible_message("<span class='danger'>[M] has shocked [src]!</span>", "<span class='userdanger'>[M] has shocked you!</span>")
visible_message(SPAN_DANGER("[M] has shocked [src]!"), SPAN_USERDANGER("[M] has shocked you!"))
M.powerlevel -= 3
if(M.powerlevel < 0)
M.powerlevel = 0
@@ -163,7 +163,7 @@
/datum/emote/living/carbon/twirl/run_emote(mob/user, params, type_override, intentional)
if(!(user.get_active_hand() || user.get_inactive_hand()))
to_chat(user, "<span class='warning'>You need something in your hand to use this emote!</span>")
to_chat(user, SPAN_WARNING("You need something in your hand to use this emote!"))
return TRUE
var/obj/item/thing
@@ -198,7 +198,7 @@
else if(!(thing.flags & ABSTRACT))
message = "twirls [thing] around in their hand!"
else
to_chat(user, "<span class='warning'>You cannot twirl [thing]!</span>")
to_chat(user, SPAN_WARNING("You cannot twirl [thing]!"))
return TRUE
. = ..()
+82 -82
View File
@@ -32,7 +32,7 @@
if(stat == DEAD)
return
else
show_message("<span class='userdanger'>The blob attacks!</span>")
show_message(SPAN_USERDANGER("The blob attacks!"))
adjustBruteLoss(10)
/mob/living/carbon/Move(NewLoc, direct)
@@ -60,7 +60,7 @@
last_stomach_attack = world.time
for(var/mob/M in hearers(4, src))
if(M.client)
M.show_message(text("<span class='warning'>You hear something rumbling inside [src]'s stomach...</span>"), 2)
M.show_message(SPAN_WARNING("You hear something rumbling inside [src]'s stomach..."), 2)
var/obj/item/I = user.get_active_hand()
if(I && I.force)
@@ -80,7 +80,7 @@
for(var/mob/M in viewers(user, null))
if(M.client)
M.show_message(text("<span class='warning'><b>[user] attacks [src]'s stomach wall with [I]!</b></span>"), 2)
M.show_message(SPAN_WARNING("<b>[user] attacks [src]'s stomach wall with [I]!</b>"), 2)
playsound(user.loc, 'sound/effects/attackblob.ogg', 50, 1)
if(prob(getBruteLoss() - 50))
@@ -106,16 +106,16 @@
if(!blood && nutrition < 100) // Nutrition vomiting while already starving
if(message)
visible_message("<span class='warning'>[src] dry heaves!</span>", \
"<span class='userdanger'>You try to throw up, but there's nothing in your stomach!</span>")
visible_message(SPAN_WARNING("[src] dry heaves!"), \
SPAN_USERDANGER("You try to throw up, but there's nothing in your stomach!"))
if(should_confuse)
KnockDown(20 SECONDS)
AdjustConfused(20 SECONDS)
return
if(message)
visible_message("<span class='danger'>[src] throws up!</span>", \
"<span class='userdanger'>You throw up!</span>")
visible_message(SPAN_DANGER("[src] throws up!"), \
SPAN_USERDANGER("You throw up!"))
playsound(get_turf(src), 'sound/effects/splat.ogg', 50, 1)
var/turf/T = get_turf(src)
@@ -155,7 +155,7 @@
for(var/mob/M in src)
LAZYREMOVE(stomach_contents, M)
M.forceMove(drop_location())
visible_message("<span class='danger'>[M] bursts out of [src]!</span>")
visible_message(SPAN_DANGER("[M] bursts out of [src]!"))
///Adds to the parent by also adding functionality to propagate shocks through pulling and doing some fluff effects.
/mob/living/carbon/electrocute_act(shock_damage, source, siemens_coeff = 1, flags = NONE)
@@ -253,8 +253,8 @@
check_self_for_injuries()
return
if(player_logged)
M.visible_message("<span class='notice'>[M] shakes [src], but [p_they()] [p_do()] not respond. Probably suffering from SSD.</span>", \
"<span class='notice'>You shake [src], but [p_theyre()] unresponsive. Probably suffering from SSD.</span>")
M.visible_message(SPAN_NOTICE("[M] shakes [src], but [p_they()] [p_do()] not respond. Probably suffering from SSD."), \
SPAN_NOTICE("You shake [src], but [p_theyre()] unresponsive. Probably suffering from SSD."))
if(IS_HORIZONTAL(src)) // /vg/: For hugs. This is how update_icon figgers it out, anyway. - N3X15
add_attack_logs(M, src, "Shaked", ATKLOG_ALL)
if(ishuman(src))
@@ -272,14 +272,14 @@
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1)
if(!player_logged)
M.visible_message( \
"<span class='notice'>[M] shakes [src] trying to wake [p_them()] up!</span>",\
"<span class='notice'>You shake [src] trying to wake [p_them()] up!</span>",\
SPAN_NOTICE("[M] shakes [src] trying to wake [p_them()] up!"),\
SPAN_NOTICE("You shake [src] trying to wake [p_them()] up!"),\
)
return
// If it has any of the highfive statuses, dap, handshake, etc
var/datum/status_effect/effect = has_status_effect_type(STATUS_EFFECT_HIGHFIVE)
if(istype(effect, STATUS_EFFECT_OFFERING_EFTPOS))
to_chat(M, "<span class='warning'>You need to have your ID in hand to scan it!</span>")
to_chat(M, SPAN_WARNING("You need to have your ID in hand to scan it!"))
return
else if(effect)
M.apply_status_effect(effect.type)
@@ -290,8 +290,8 @@
switch(M.zone_selected)
if("head")
M.visible_message(
"<span class='notice'>[M] pats [src] on the head.</span>",
"<span class='notice'>You pat [src] on the head.</span>",
SPAN_NOTICE("[M] pats [src] on the head."),
SPAN_NOTICE("You pat [src] on the head."),
)
return
if("l_hand", "r_hand")
@@ -299,8 +299,8 @@
return
M.visible_message(
"<span class='notice'>[M] gives [src] a [pick("hug","warm embrace")].</span>",
"<span class='notice'>You hug [src].</span>",
SPAN_NOTICE("[M] gives [src] a [pick("hug","warm embrace")]."),
SPAN_NOTICE("You hug [src]."),
)
@@ -321,9 +321,9 @@
*/
/mob/living/carbon/proc/pat_out(mob/living/target)
if(target == src) // stop drop and roll, no trying to put out fire on yourself for free.
to_chat(src, "<span class='warning'>Stop drop and roll!</span>")
to_chat(src, SPAN_WARNING("Stop drop and roll!"))
return
var/self_message = "<span class='warning'>You try to extinguish [target]!</span>"
var/self_message = SPAN_WARNING("You try to extinguish [target]!")
if(prob(30) && ishuman(src)) // 30% chance of burning your hands
var/mob/living/carbon/human/H = src
var/protected = FALSE // Protected from the fire
@@ -333,17 +333,17 @@
var/obj/item/organ/external/active_hand = H.get_active_hand()
if(active_hand && !protected) // Wouldn't really work without a hand
active_hand.receive_damage(0, 5)
self_message = "<span class='danger'>You burn your hand trying to extinguish [target]!</span>"
self_message = SPAN_DANGER("You burn your hand trying to extinguish [target]!")
H.update_icons()
visible_message("<span class='warning'>[src] tries to extinguish [target]!</span>", self_message)
visible_message(SPAN_WARNING("[src] tries to extinguish [target]!"), self_message)
playsound(target, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1)
target.adjust_fire_stacks(-0.5)
/mob/living/carbon/proc/check_self_for_injuries()
var/mob/living/carbon/human/H = src
visible_message("<span class='notice'>[src] examines [H.p_themselves()].</span>", \
"<span class='notice'>You check yourself for injuries.</span>" \
visible_message(SPAN_NOTICE("[src] examines [H.p_themselves()]."), \
SPAN_NOTICE("You check yourself for injuries.") \
)
var/list/status_list = list()
@@ -379,24 +379,24 @@
if(LB.status & ORGAN_MUTATED)
status = "weirdly shapen"
var/msg = "<span class='notice'>Your [LB.name] is OK.</span>"
var/msg = SPAN_NOTICE("Your [LB.name] is OK.")
if(!isnull(status))
msg = "<span class='warning'>Your [LB.name] is [status].</span>"
msg = SPAN_WARNING("Your [LB.name] is [status].")
status_list += msg
for(var/obj/item/I in LB.embedded_objects)
status_list += "\t<a href='byond://?src=[UID()];embedded_object=[I.UID()];embedded_limb=[LB.UID()]' class='warning'>There is \a [I] embedded in your [LB.name]!</a>"
for(var/t in missing)
status_list += "<span class='boldannounceic'>Your [parse_zone(t)] is missing!</span>"
status_list += SPAN_BOLDANNOUNCEIC("Your [parse_zone(t)] is missing!")
if(H.bleed_rate)
status_list += "<span class='danger'>You are bleeding!</span>"
status_list += SPAN_DANGER("You are bleeding!")
if(staminaloss)
if(staminaloss > 30)
status_list += "<span class='notice'>You're completely exhausted.</span>"
status_list += SPAN_NOTICE("You're completely exhausted.")
else
status_list += "<span class='notice'>You feel fatigued.</span>"
status_list += SPAN_NOTICE("You feel fatigued.")
to_chat(src, chat_box_examine(status_list.Join("<br>")))
@@ -441,12 +441,12 @@
switch(damage)
if(1)
to_chat(src, "<span class='warning'>Your eyes sting a little.</span>")
to_chat(src, SPAN_WARNING("Your eyes sting a little."))
var/minor_damage_multiplier = min(40 + extra_prob, 100) / 100
var/minor_damage = minor_damage_multiplier * (1 + extra_damage)
E.receive_damage(minor_damage, 1)
if(2)
to_chat(src, "<span class='warning'>Your eyes burn.</span>")
to_chat(src, SPAN_WARNING("Your eyes burn."))
E.receive_damage(rand(2, 4) + extra_damage, 1)
else
@@ -459,20 +459,20 @@
if(E.damage > (E.min_bruised_damage + E.min_broken_damage) / 2)
if(!E.is_robotic())
to_chat(src, "<span class='warning'>Your eyes start to burn badly!</span>")
to_chat(src, SPAN_WARNING("Your eyes start to burn badly!"))
else //snowflake conditions piss me off for the record
to_chat(src, "<span class='warning'>The flash blinds you!</span>")
to_chat(src, SPAN_WARNING("The flash blinds you!"))
else if(E.damage >= E.min_broken_damage)
to_chat(src, "<span class='warning'>You can't see anything!</span>")
to_chat(src, SPAN_WARNING("You can't see anything!"))
else
to_chat(src, "<span class='warning'>Your eyes are really starting to hurt. This can't be good for you!</span>")
to_chat(src, SPAN_WARNING("Your eyes are really starting to hurt. This can't be good for you!"))
return 1
else if(damage == 0) // just enough protection
if(prob(20))
to_chat(src, "<span class='notice'>Something bright flashes in the corner of your vision!</span>")
to_chat(src, SPAN_NOTICE("Something bright flashes in the corner of your vision!"))
/mob/living/carbon/proc/tintcheck()
@@ -511,11 +511,11 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
return
if(has_buckled_mobs())
to_chat(src, "<span class='warning'>You can't vent crawl with other creatures on you!</span>")
to_chat(src, SPAN_WARNING("You can't vent crawl with other creatures on you!"))
return
if(buckled)
to_chat(src, "<span class='warning'>You can't vent crawl while buckled!</span>")
to_chat(src, SPAN_WARNING("You can't vent crawl while buckled!"))
return
if(ishuman(src))
@@ -548,14 +548,14 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
break
if(!vent_found)
to_chat(src, "<span class='warning'>This ventilation duct is not connected to anything!</span>")
to_chat(src, SPAN_WARNING("This ventilation duct is not connected to anything!"))
return
if(!vent_found.parent || !(length(vent_found.parent.members) || vent_found.parent.other_atmosmch))
return
visible_message("<span class='notice'>[src] begins climbing into the ventilation system...</span>", \
"<span class='notice'>You begin climbing into the ventilation system...</span>")
visible_message(SPAN_NOTICE("[src] begins climbing into the ventilation system..."), \
SPAN_NOTICE("You begin climbing into the ventilation system..."))
#ifdef GAME_TESTS
var/ventcrawl_delay = 0 SECONDS
@@ -569,15 +569,15 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
if(!do_after(src, ventcrawl_delay, target = src))
return
if(!vent_found.can_crawl_through() || QDELETED(vent_found))
to_chat(src, "<span class='warning'>You can't vent crawl through that!</span>")
to_chat(src, SPAN_WARNING("You can't vent crawl through that!"))
return
if(has_buckled_mobs())
to_chat(src, "<span class='warning'>You can't vent crawl with other creatures on you!</span>")
to_chat(src, SPAN_WARNING("You can't vent crawl with other creatures on you!"))
return
if(buckled)
to_chat(src, "<span class='warning'>You cannot crawl into a vent while buckled to something!</span>")
to_chat(src, SPAN_WARNING("You cannot crawl into a vent while buckled to something!"))
return
if(iscarbon(src) && length(contents) && ventcrawlerlocal < VENTCRAWLER_ALWAYS) // If we're here you can only ventcrawl while completely nude
@@ -589,7 +589,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
if(I.flags & ABSTRACT)
continue
to_chat(src, "<span class='warning'>You can't crawl around in the ventilation ducts with items!</span>")
to_chat(src, SPAN_WARNING("You can't crawl around in the ventilation ducts with items!"))
return
visible_message("<b>[src] scrambles into the ventilation ducts!</b>", "You climb into the ventilation system.")
@@ -687,7 +687,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
hit_something = TRUE
if(hit_something)
playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100, TRUE)
visible_message("<span class='danger'>[src] slams into [hit_atom]!</span>", "<span class='userdanger'>You slam into [hit_atom]!</span>")
visible_message(SPAN_DANGER("[src] slams into [hit_atom]!"), SPAN_USERDANGER("You slam into [hit_atom]!"))
return
if(has_status_effect(STATUS_EFFECT_IMPACT_IMMUNE))
return
@@ -699,7 +699,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
/mob/living/carbon/hit_by_thrown_mob(mob/living/C, datum/thrownthing/throwingdatum, damage, mob_hurt, self_hurt)
for(var/obj/item/dualsaber/D in contents)
if(HAS_TRAIT(D, TRAIT_WIELDED) && D.force)
visible_message("<span class='danger'>[src] impales [C] with [D], before dropping them on the ground!</span>")
visible_message(SPAN_DANGER("[src] impales [C] with [D], before dropping them on the ground!"))
C.apply_damage(100, BRUTE, "chest", sharp = TRUE, used_weapon = "Impaled on [D].")
C.Stun(2 SECONDS) //Punishment. This could also be used by a traitor to throw someone into a dsword to kill them, but hey, teamwork!
C.KnockDown(6 SECONDS)
@@ -755,7 +755,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
if(throwable_mob)
thrown_thing = throwable_mob
if(HAS_TRAIT(src, TRAIT_PACIFISM))
to_chat(src, "<span class='notice'>You gently let go of [throwable_mob].</span>")
to_chat(src, SPAN_NOTICE("You gently let go of [throwable_mob]."))
return
var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors
var/turf/end_T = get_turf(target)
@@ -771,14 +771,14 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
drop_item_to_ground(I, silent = TRUE)
if(HAS_TRAIT(src, TRAIT_PACIFISM) && I.throwforce)
to_chat(src, "<span class='notice'>You set [I] down gently on the ground.</span>")
to_chat(src, SPAN_NOTICE("You set [I] down gently on the ground."))
return
if(QDELETED(thrown_thing))
return
if(!HAS_TRAIT(thrown_thing, TRAIT_NO_THROWN_MESSAGE))
visible_message("<span class='danger'>[src] has thrown [thrown_thing].</span>")
visible_message(SPAN_DANGER("[src] has thrown [thrown_thing]."))
newtonian_move(get_dir(target, src))
thrown_thing.throw_at(target, thrown_thing.throw_range, thrown_thing.throw_speed, src, null, null, null, move_force)
thrown_thing.scatter_atom()
@@ -921,15 +921,15 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
return
if(has_status_effect(STATUS_EFFECT_UNBUCKLE))
to_chat(src, "<span class='notice'>You are already trying to unbuckle!</span>")
to_chat(src, SPAN_NOTICE("You are already trying to unbuckle!"))
return
apply_status_effect(STATUS_EFFECT_UNBUCKLE)
visible_message("<span class='warning'>[src] attempts to unbuckle [p_themselves()]!</span>",
"<span class='notice'>You attempt to unbuckle yourself... (This will take around [breakout_time / 10] seconds and you need to stay still.)</span>")
visible_message(SPAN_WARNING("[src] attempts to unbuckle [p_themselves()]!"),
SPAN_NOTICE("You attempt to unbuckle yourself... (This will take around [breakout_time / 10] seconds and you need to stay still.)"))
if(!do_after(src, breakout_time, FALSE, src, allow_moving = TRUE, extra_checks = list(CALLBACK(src, PROC_REF(buckle_check))), allow_moving_target = TRUE, hidden = TRUE))
if(src && buckled)
to_chat(src, "<span class='warning'>You fail to unbuckle yourself!</span>")
to_chat(src, SPAN_WARNING("You fail to unbuckle yourself!"))
else
if(!buckled)
return
@@ -954,13 +954,13 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
Weaken (2 SECONDS, TRUE) //Your busy dying from fire, no way you could be able to roll and reach for a snack in your bag
KnockDown(6 SECONDS, TRUE) //Ok now you can have that snack if you want
spin(32, 2)
visible_message("<span class='danger'>[src] rolls on the floor, trying to put [p_themselves()] out!</span>",
"<span class='notice'>You stop, drop, and roll!</span>")
visible_message(SPAN_DANGER("[src] rolls on the floor, trying to put [p_themselves()] out!"),
SPAN_NOTICE("You stop, drop, and roll!"))
addtimer(CALLBACK(src, PROC_REF(extinguish_roll), 3 SECONDS))
/mob/living/carbon/proc/extinguish_roll()
if(fire_stacks <= 0)
visible_message("<span class='danger'>[src] has successfully extinguished [p_themselves()]!</span>","<span class='notice'>You extinguish yourself.</span>")
visible_message(SPAN_DANGER("[src] has successfully extinguished [p_themselves()]!"),SPAN_NOTICE("You extinguish yourself."))
ExtinguishMob()
/mob/living/carbon/resist_restraints(attempt_breaking)
@@ -988,14 +988,14 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
to_chat(src, "[I] is too well made, you'll need hands for this one!")
return
if(has_status_effect(STATUS_EFFECT_REMOVE_MUZZLE))
to_chat(src, "<span class='notice'>You are already trying to remove [I]!</span>")
to_chat(src, SPAN_NOTICE("You are already trying to remove [I]!"))
return
apply_status_effect(STATUS_EFFECT_REMOVE_MUZZLE)
visible_message("<span class='warning'>[src] gnaws on [I], trying to remove it!</span>")
to_chat(src, "<span class='notice'>You attempt to remove [I]... (This will take around [time/10] seconds and you need to stand still.)</span>")
visible_message(SPAN_WARNING("[src] gnaws on [I], trying to remove it!"))
to_chat(src, SPAN_NOTICE("You attempt to remove [I]... (This will take around [time/10] seconds and you need to stand still.)"))
if(do_after(src, time, FALSE, src, extra_checks = list(CALLBACK(src, PROC_REF(muzzle_check))), hidden = TRUE))
visible_message("<span class='warning'>[src] removes [I]!</span>")
to_chat(src, "<span class='notice'>You get rid of [I]!</span>")
visible_message(SPAN_WARNING("[src] removes [I]!"))
to_chat(src, SPAN_NOTICE("You get rid of [I]!"))
if(I.security_lock)
I.do_break()
drop_item_to_ground(I)
@@ -1007,7 +1007,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
effective_breakout_time = 5 SECONDS
if(has_status_effect(STATUS_EFFECT_REMOVE_CUFFS))
to_chat(src, "<span class='notice'>You are already trying to [break_cuffs ? "break" : "remove"] [restraints].</span>")
to_chat(src, SPAN_NOTICE("You are already trying to [break_cuffs ? "break" : "remove"] [restraints]."))
return
apply_status_effect(STATUS_EFFECT_REMOVE_CUFFS)
@@ -1038,7 +1038,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
effective_breakout_time = 5 SECONDS
if(has_status_effect(STATUS_EFFECT_EXIT_CRYOCELL))
to_chat(src, "<span class='notice'>You are already trying to exit [cell].</span>")
to_chat(src, SPAN_NOTICE("You are already trying to exit [cell]."))
return
apply_status_effect(STATUS_EFFECT_EXIT_CRYOCELL)
@@ -1115,7 +1115,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
client.screen -= W
if(show_message)
visible_message("<span class='warning'>[src] slips out of [W]!</span>")
visible_message(SPAN_WARNING("[src] slips out of [W]!"))
W.forceMove(drop_location())
W.dropped(src)
@@ -1150,7 +1150,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
client.screen -= W
if(show_message)
visible_message("<span class='warning'>[W] falls off of [src]!</span>")
visible_message(SPAN_WARNING("[W] falls off of [src]!"))
W.forceMove(drop_location())
W.dropped(src)
@@ -1180,7 +1180,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
step(src, dir)
stop_pulling()
to_chat(src, "<span class='notice'>You [slipVerb]ped on [description]!</span>")
to_chat(src, SPAN_NOTICE("You [slipVerb]ped on [description]!"))
playsound(loc, 'sound/misc/slip.ogg', 50, TRUE, -3)
// Something something don't run with scissors
moving_diagonally = 0 //If this was part of diagonal move slipping will stop it.
@@ -1236,13 +1236,13 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
/mob/living/carbon/proc/selfFeed(obj/item/food/to_eat, fullness)
var/is_glutton = HAS_TRAIT(src, TRAIT_GLUTTON)
if(!is_glutton && to_eat.junkiness && satiety < -150 && nutrition > NUTRITION_LEVEL_STARVING + 50)
to_chat(src, "<span class='notice'>You don't feel like eating any more junk food at the moment.</span>")
to_chat(src, SPAN_NOTICE("You don't feel like eating any more junk food at the moment."))
return FALSE
var/list/reaction_msg = list()
if(fullness <= 50)
reaction_msg += "You hungrily chew out a piece of [to_eat] and gobble it!"
to_chat(src, "<span class='warning'></span>")
to_chat(src, SPAN_WARNING(""))
else if(fullness > 50 && fullness < 150)
reaction_msg += "You hungrily begin to eat [to_eat]."
else if(fullness > 150 && fullness < 500)
@@ -1250,11 +1250,11 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
else if(fullness > 500 && fullness < 600)
reaction_msg += "You unwillingly chew a bit of [to_eat]."
else if(fullness > (600 * (1 + overeatduration / 2000))) // The more you eat - the more you can eat
to_chat(src, "<span class='warning'>You cannot force any more of [to_eat] to go down your throat.</span>")
to_chat(src, SPAN_WARNING("You cannot force any more of [to_eat] to go down your throat."))
return FALSE
if(is_glutton)
src.changeNext_move(CLICK_CD_RAPID) // Hungry hungry spessman
to_chat(src, "<span class='notice'>[jointext(reaction_msg, " ")]</span>")
to_chat(src, SPAN_NOTICE("[jointext(reaction_msg, " ")]"))
return TRUE
@@ -1263,14 +1263,14 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
/mob/living/carbon/proc/forceFed(obj/item/reagent_containers/to_eat, mob/user, fullness)
if(fullness > (600 * (1 + overeatduration / 1000)))
visible_message("<span class='warning'>[user] cannot force anymore of [to_eat] down [src]'s throat.</span>")
visible_message(SPAN_WARNING("[user] cannot force anymore of [to_eat] down [src]'s throat."))
return FALSE
visible_message("<span class='warning'>[user] attempts to force [src] to swallow [to_eat].</span>")
visible_message(SPAN_WARNING("[user] attempts to force [src] to swallow [to_eat]."))
if(!do_after(user, 3 SECONDS, TRUE, src))
return FALSE
forceFedAttackLog(to_eat, user)
visible_message("<span class='warning'>[user] forces [src] to swallow [to_eat].</span>")
visible_message(SPAN_WARNING("[user] forces [src] to swallow [to_eat]."))
return TRUE
/mob/living/carbon/proc/forceFedAttackLog(obj/item/reagent_containers/to_eat, mob/user)
@@ -1452,11 +1452,11 @@ so that different stomachs can handle things in different ways VB*/
/mob/living/carbon/proc/lazrevival(mob/living/carbon/M)
if(M.get_ghost()) // ghosted after the timer expires.
M.visible_message("<span class='warning'>[M]'s body stops twitching as the Lazarus Reagent loses potency.</span>")
M.visible_message(SPAN_WARNING("[M]'s body stops twitching as the Lazarus Reagent loses potency."))
return
// If the ghost has re-entered the body, perform the revival!
M.visible_message("<span class='success'>[M] gasps as they return to life!</span>")
M.visible_message(SPAN_SUCCESS("[M] gasps as they return to life!"))
M.adjustCloneLoss(50)
M.setOxyLoss(0)
M.adjustBruteLoss(rand(0, 15))
@@ -1519,7 +1519,7 @@ so that different stomachs can handle things in different ways VB*/
if(!usr)
return
if(QDELETED(src))
to_chat(usr, "<span class='notice'>Mob doesn't exist anymore.</span>")
to_chat(usr, SPAN_NOTICE("Mob doesn't exist anymore."))
return
if(result)
@@ -1537,11 +1537,11 @@ so that different stomachs can handle things in different ways VB*/
return
if(QDELETED(src))
to_chat(usr, "<span class='notice'>Mob doesn't exist anymore.</span>")
to_chat(usr, SPAN_NOTICE("Mob doesn't exist anymore."))
return
if(locateUID(new_organ) in internal_organs)
to_chat(usr, "<span class='notice'>Mob already has that organ.</span>")
to_chat(usr, SPAN_NOTICE("Mob already has that organ."))
return
var/obj/item/organ/internal/organ = new new_organ
organ.insert(src)
@@ -1554,14 +1554,14 @@ so that different stomachs can handle things in different ways VB*/
var/obj/item/organ/internal/rem_organ = tgui_input_list(usr, "Please choose an organ to remove.", "Organ", internal_organs)
if(QDELETED(src))
to_chat(usr, "<span class='notice'>Mob doesn't exist anymore.</span>")
to_chat(usr, SPAN_NOTICE("Mob doesn't exist anymore."))
return
if(!(rem_organ in internal_organs))
to_chat(usr, "<span class='notice'>Mob does not have that organ.</span>")
to_chat(usr, SPAN_NOTICE("Mob does not have that organ."))
return
to_chat(usr, "<span class='notice'>Removed [rem_organ] from [src].</span>")
to_chat(usr, SPAN_NOTICE("Removed [rem_organ] from [src]."))
rem_organ.remove(src)
message_admins("[key_name_admin(usr)] has removed the organ [rem_organ] from [key_name_admin(src)]")
log_admin("[key_name(usr)] has removed the organ [rem_organ] from [key_name(src)]")
@@ -7,7 +7,7 @@
if(absorb_stun(0)) //continuous effect, so we don't want it to increment the stuns absorbed.
return
if(!IsWeakened())
to_chat(src, "<span class='notice'>You're too exhausted to keep going...</span>")
to_chat(src, SPAN_NOTICE("You're too exhausted to keep going..."))
SEND_SIGNAL(src, COMSIG_CARBON_ENTER_STAMINACRIT)
stam_regen_start_time = world.time + (STAMINA_REGEN_BLOCK_TIME * stamina_regen_block_modifier)
var/prev = stam_paralyzed
@@ -46,12 +46,12 @@
if(!pocket.held_item)
return
if(!thief_mode)
user.visible_message("<span class='danger'>[user] is trying to remove something from [source]'s head!</span>",
"<span class='danger'>You start to dislodge whatever's inside [source]'s headpocket!</span>")
user.visible_message(SPAN_DANGER("[user] is trying to remove something from [source]'s head!"),
SPAN_DANGER("You start to dislodge whatever's inside [source]'s headpocket!"))
if(do_mob(user, source, POCKET_STRIP_DELAY, hidden = thief_mode))
if(!thief_mode)
user.visible_message("<span class='danger'>[user] has dislodged something from [source]'s head!</span>",
"<span class='danger'>You have dislodged everything from [source]'s headpocket!</span>")
user.visible_message(SPAN_DANGER("[user] has dislodged something from [source]'s head!"),
SPAN_DANGER("You have dislodged everything from [source]'s headpocket!"))
pocket.empty_contents()
add_attack_logs(user, source, "Stripped of headpocket items", isLivingSSD(source) ? null : ATKLOG_ALL)
return
@@ -67,8 +67,8 @@
return
if(!thief_mode)
muzzle.visible_message("<span class='danger'>[user] tries to [muzzle.locked ? "unlock" : "lock"] [source]'s [muzzle.name].</span>", \
"<span class='userdanger'>[user] tries to [muzzle.locked ? "unlock" : "lock"] [source]'s [muzzle.name].</span>")
muzzle.visible_message(SPAN_DANGER("[user] tries to [muzzle.locked ? "unlock" : "lock"] [source]'s [muzzle.name]."), \
SPAN_USERDANGER("[user] tries to [muzzle.locked ? "unlock" : "lock"] [source]'s [muzzle.name]."))
if(!do_mob(user, source, POCKET_STRIP_DELAY, hidden = thief_mode))
return
@@ -81,8 +81,8 @@
if(!success)
return
if(!thief_mode)
muzzle.visible_message("<span class='danger'>[user] [muzzle.locked ? "locks" : "unlocks"] [source]'s [muzzle.name].</span>", \
"<span class='userdanger'>[user] [muzzle.locked ? "locks" : "unlocks"] [source]'s [muzzle.name].</span>")
muzzle.visible_message(SPAN_DANGER("[user] [muzzle.locked ? "locks" : "unlocks"] [source]'s [muzzle.name]."), \
SPAN_USERDANGER("[user] [muzzle.locked ? "locks" : "unlocks"] [source]'s [muzzle.name]."))
/datum/strippable_item/mob_item_slot/neck
@@ -142,7 +142,7 @@
var/mob/mob_source = source
if(!equipping.mob_can_equip(mob_source, which_hand, TRUE))
to_chat(user, "<span class='warning'>\The [equipping] doesn't fit in that place!</span>")
to_chat(user, SPAN_WARNING("\The [equipping] doesn't fit in that place!"))
return FALSE
return TRUE
+19 -19
View File
@@ -81,7 +81,7 @@
/mob/living/carbon/proc/examine_show_ssd()
if(!HAS_TRAIT(src, SCRYING))
if(!key)
return "<span class='deadsay'>[p_they(TRUE)] [p_are()] totally catatonic. The stresses of life in deep-space must have been too much for [p_them()]. Any recovery is unlikely.</span>\n"
return "[SPAN_DEADSAY("[p_they(TRUE)] [p_are()] totally catatonic. The stresses of life in deep-space must have been too much for [p_them()]. Any recovery is unlikely.")]\n"
else if(!client)
return "[p_they(TRUE)] [p_have()] suddenly fallen asleep, suffering from Space Sleep Disorder. [p_they(TRUE)] may wake up soon.\n"
@@ -89,7 +89,7 @@
/mob/living/carbon/examine(mob/user)
if(HAS_TRAIT(src, TRAIT_UNKNOWN))
return list("<span class='notice'>You're struggling to make out any details...</span>")
return list(SPAN_NOTICE("You're struggling to make out any details..."))
var/skipgloves = FALSE
var/skipsuitstorage = FALSE
@@ -120,7 +120,7 @@
var/msg = "<span class='notice'>This is "
if(HAS_TRAIT(src, TRAIT_I_WANT_BRAINS))
msg = "<span class='notice'>This is the <span class='warning'>shambling corpse</span> of "
msg = "[SPAN_NOTICE("This is the <span class='warning'>shambling corpse")] of "
msg += "<em>[name]</em>"
@@ -160,7 +160,7 @@
if(limb_name)
submsg += " [preposition] [p_their()] [limb_name]"
if(item.blood_DNA)
submsg = "<span class='warning'>[submsg]!</span>\n"
submsg = "[SPAN_WARNING("[submsg]!")]\n"
else
submsg = "[submsg].\n"
msg += submsg
@@ -192,25 +192,25 @@
)
// Pick a random hallucination description
var/random_text = pick(hallucination_texts)
msg += "<span class='warning'>[random_text]</span>\n"
msg += "[SPAN_WARNING("[random_text]")]\n"
//handcuffed?
if(handcuffed)
if(istype(handcuffed, /obj/item/restraints/handcuffs/cable/zipties))
msg += "<span class='warning'>[p_they(TRUE)] [p_are()] [bicon(handcuffed)] restrained with zipties!</span>\n"
msg += "[SPAN_WARNING("[p_they(TRUE)] [p_are()] [bicon(handcuffed)] restrained with zipties!")]\n"
else if(istype(handcuffed, /obj/item/restraints/handcuffs/twimsts))
msg += "<span class='warning'>[p_they(TRUE)] [p_are()] [bicon(handcuffed)] restrained with twimsts cuffs!</span>\n"
msg += "[SPAN_WARNING("[p_they(TRUE)] [p_are()] [bicon(handcuffed)] restrained with twimsts cuffs!")]\n"
else if(istype(handcuffed, /obj/item/restraints/handcuffs/cable))
msg += "<span class='warning'>[p_they(TRUE)] [p_are()] [bicon(handcuffed)] restrained with cable!</span>\n"
msg += "[SPAN_WARNING("[p_they(TRUE)] [p_are()] [bicon(handcuffed)] restrained with cable!")]\n"
else
msg += "<span class='warning'>[p_they(TRUE)] [p_are()] [bicon(handcuffed)] handcuffed!</span>\n"
msg += "[SPAN_WARNING("[p_they(TRUE)] [p_are()] [bicon(handcuffed)] handcuffed!")]\n"
//legcuffed?
if(legcuffed)
if(istype(legcuffed, /obj/item/restraints/legcuffs/beartrap))
msg += "<span class='warning'>[p_they(TRUE)] [p_are()] [bicon(legcuffed)] ensnared in a beartrap!</span>\n"
msg += "[SPAN_WARNING("[p_they(TRUE)] [p_are()] [bicon(legcuffed)] ensnared in a beartrap!")]\n"
else
msg += "<span class='warning'>[p_they(TRUE)] [p_are()] [bicon(legcuffed)] legcuffed!</span>\n"
msg += "[SPAN_WARNING("[p_they(TRUE)] [p_are()] [bicon(legcuffed)] legcuffed!")]\n"
for(var/obj/item/abstract_item in abstract_items)
var/text = abstract_item.customised_abstract_text(src)
@@ -221,20 +221,20 @@
for(var/obj/item/grab/grab in grab_items)
switch(grab.state)
if(GRAB_AGGRESSIVE)
msg += "<span class='boldwarning'>[p_they(TRUE)] [p_are()] holding [grab.affecting]'s hands!</span>\n"
msg += "[SPAN_BOLDWARNING("[p_they(TRUE)] [p_are()] holding [grab.affecting]'s hands!")]\n"
if(GRAB_NECK)
msg += "<span class='boldwarning'>[p_they(TRUE)] [p_are()] holding [grab.affecting]'s neck!</span>\n"
msg += "[SPAN_BOLDWARNING("[p_they(TRUE)] [p_are()] holding [grab.affecting]'s neck!")]\n"
if(GRAB_KILL)
msg += "<span class='boldwarning'>[p_they(TRUE)] [p_are()] strangling [grab.affecting]!</span>\n"
msg += "[SPAN_BOLDWARNING("[p_they(TRUE)] [p_are()] strangling [grab.affecting]!")]\n"
//Jitters
switch(AmountJitter())
if(600 SECONDS to INFINITY)
msg += "<span class='warning'><b>[p_they(TRUE)] [p_are()] convulsing violently!</b></span>\n"
msg += "[SPAN_WARNING("<b>[p_they(TRUE)] [p_are()] convulsing violently!</b>")]\n"
if(400 SECONDS to 600 SECONDS)
msg += "<span class='warning'>[p_they(TRUE)] [p_are()] extremely jittery.</span>\n"
msg += "[SPAN_WARNING("[p_they(TRUE)] [p_are()] extremely jittery.")]\n"
if(200 SECONDS to 400 SECONDS)
msg += "<span class='warning'>[p_they(TRUE)] [p_are()] twitching ever so slightly.</span>\n"
msg += "[SPAN_WARNING("[p_they(TRUE)] [p_are()] twitching ever so slightly.")]\n"
var/appears_dead = FALSE
@@ -250,7 +250,7 @@
appears_dead = TRUE
if(suiciding)
msg += "<span class='warning'>[p_they(TRUE)] appear[p_s()] to have committed suicide... there is no hope of recovery.</span>\n"
msg += "[SPAN_WARNING("[p_they(TRUE)] appear[p_s()] to have committed suicide... there is no hope of recovery.")]\n"
if(!just_sleeping)
msg += "<span class='deadsay'>[p_they(TRUE)] [p_are()] limp and unresponsive"
if(get_int_organ(/obj/item/organ/internal/brain) && !client) // body has no online player inside - let's look for ghost
@@ -261,7 +261,7 @@
msg += "...</span>\n"
if(!get_int_organ(/obj/item/organ/internal/brain))
msg += "<span class='deadsay'>It appears that [p_their()] brain is missing...</span>\n"
msg += "[SPAN_DEADSAY("It appears that [p_their()] brain is missing...")]\n"
msg += "<span class='warning'>"
+21 -21
View File
@@ -6,20 +6,20 @@
set category = "IC"
if(has_status_effect(STATUS_EFFECT_OFFERING_ITEM))
to_chat(src, "<span class='warning'>You're already offering an item to someone!</span>")
to_chat(src, SPAN_WARNING("You're already offering an item to someone!"))
return
if(istype(client.click_intercept, /datum/click_intercept/give))
QDEL_NULL(client.click_intercept)
return
var/obj/item/I = get_active_hand()
if(!I)
to_chat(src, "<span class='warning'>You don't have anything in your hand to give!</span>")
to_chat(src, SPAN_WARNING("You don't have anything in your hand to give!"))
return
if(I.flags & NODROP)
to_chat(src, "<span class='warning'>[I] is stuck to your hand, you can't give it away!</span>")
to_chat(src, SPAN_WARNING("[I] is stuck to your hand, you can't give it away!"))
return
if(I.flags & ABSTRACT)
to_chat(src, "<span class='warning'>That's not exactly something you can give.</span>")
to_chat(src, SPAN_WARNING("That's not exactly something you can give."))
return
new /datum/click_intercept/give(client)
@@ -54,8 +54,8 @@
var/mob/living/carbon/receiver = locateUID(receiver_UID)
var/mob/living/carbon/giver = attached_effect.owner
var/obj/item/I = locateUID(item_UID)
to_chat(giver, "<span class='notice'>You decide against giving [I] to [receiver].</span>")
to_chat(receiver, "<span class='warning'>[giver] seems to have given up on giving you [I].</span>")
to_chat(giver, SPAN_NOTICE("You decide against giving [I] to [receiver]."))
to_chat(receiver, SPAN_WARNING("[giver] seems to have given up on giving you [I]."))
receiver.clear_alert("take item [item_UID]") // This cancels *everything* related to the giving/item offering.
@@ -71,7 +71,7 @@
/datum/click_intercept/give/New(client/C)
..()
holder.mob.add_mousepointer(MP_GIVE_MODE_PRIORITY, 'icons/mouse_icons/give_item.dmi')
to_chat(holder, "<span class='notice'>You can now left click on someone to give them your held item.</span>")
to_chat(holder, SPAN_NOTICE("You can now left click on someone to give them your held item."))
RegisterSignal(holder.mob.get_active_hand(), list(COMSIG_PARENT_QDELETING, COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED), PROC_REF(signal_qdel))
RegisterSignal(holder.mob, list(SIGNAL_ADDTRAIT(TRAIT_HANDS_BLOCKED), COMSIG_CARBON_SWAP_HANDS), PROC_REF(signal_qdel))
@@ -79,7 +79,7 @@
/datum/click_intercept/give/Destroy(force = FALSE, ...)
holder.mob.remove_mousepointer(MP_GIVE_MODE_PRIORITY)
if(!item_offered)
to_chat(holder.mob, "<span class='notice'>You're no longer trying to give someone your held item.</span>")
to_chat(holder.mob, SPAN_NOTICE("You're no longer trying to give someone your held item."))
return ..()
@@ -89,20 +89,20 @@
return
var/mob/living/carbon/human/receiver = object
if(receiver.stat != CONSCIOUS)
to_chat(user, "<span class='warning'>[receiver] can't accept any items because they're not conscious!</span>")
to_chat(user, SPAN_WARNING("[receiver] can't accept any items because they're not conscious!"))
return
var/obj/item/I = user.get_active_hand()
if(!user.Adjacent(receiver))
to_chat(user, "<span class='warning'>You need to be closer to [receiver] to offer them [I].</span>")
to_chat(user, SPAN_WARNING("You need to be closer to [receiver] to offer them [I]."))
return
if(!receiver.client)
to_chat(user, "<span class='warning'>You offer [I] to [receiver], but they don't seem to respond...</span>")
to_chat(user, SPAN_WARNING("You offer [I] to [receiver], but they don't seem to respond..."))
return
// We use UID() here so that the receiver can have more then one give request at one time.
// Otherwise, throwing a new "take item" alert would override any current one also named "take item".
receiver.throw_alert("take item [I.UID()]", /atom/movable/screen/alert/take_item, alert_args = list(user, receiver, I))
item_offered = TRUE // TRUE so we don't give them the default chat message in Destroy.
to_chat(user, "<span class='notice'>You offer [I] to [receiver].</span>")
to_chat(user, SPAN_NOTICE("You offer [I] to [receiver]."))
qdel(src)
@@ -149,8 +149,8 @@
SIGNAL_HANDLER
var/mob/living/giver = locateUID(giver_UID)
var/mob/living/receiver = locateUID(receiver_UID)
to_chat(giver, "<span class='warning'>You need to keep the item in your active hand if you want to hand it to someone!</span>")
to_chat(receiver, "<span class='warning'>[giver] seems to have given up on giving you [locateUID(item_UID)].</span>")
to_chat(giver, SPAN_WARNING("You need to keep the item in your active hand if you want to hand it to someone!"))
to_chat(receiver, SPAN_WARNING("[giver] seems to have given up on giving you [locateUID(item_UID)]."))
receiver.clear_alert("take item [item_UID]")
@@ -160,15 +160,15 @@
return
var/obj/item/I = locateUID(item_UID)
if(HAS_TRAIT(receiver, TRAIT_HANDS_BLOCKED) || receiver.r_hand && receiver.l_hand)
to_chat(receiver, "<span class='warning'>You need to have your hands free to accept [I]!</span>")
to_chat(receiver, SPAN_WARNING("You need to have your hands free to accept [I]!"))
return
var/mob/living/giver = locateUID(giver_UID)
if(!giver.Adjacent(receiver))
to_chat(receiver, "<span class='warning'>You need to stay in reaching distance of [giver] to take [I]!</span>")
to_chat(receiver, SPAN_WARNING("You need to stay in reaching distance of [giver] to take [I]!"))
return
if(I.flags & NODROP)
to_chat(giver, "<span class='warning'>[I] stays stuck to your hand when [receiver] tries to take it!</span>")
to_chat(receiver, "<span class='warning'>[I] stays stuck to [giver]'s hand when you try to take it!</span>")
to_chat(giver, SPAN_WARNING("[I] stays stuck to your hand when [receiver] tries to take it!"))
to_chat(receiver, SPAN_WARNING("[I] stays stuck to [giver]'s hand when you try to take it!"))
return
UnregisterSignal(I, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED)) // We don't want these triggering `cancel_give` at this point, since the give is successful.
giver.drop_item_to_ground(I)
@@ -176,7 +176,7 @@
I.add_fingerprint(receiver)
I.on_give(giver, receiver)
I.pickup(receiver)
receiver.visible_message("<span class='notice'>[giver] handed [I] to [receiver].</span>")
receiver.visible_message(SPAN_NOTICE("[giver] handed [I] to [receiver]."))
receiver.clear_alert("take item [item_UID]")
@@ -186,6 +186,6 @@
// Make sure we're still nearby. We don't want to show a message if the giver not near us.
if(giver in view(3, receiver))
var/obj/item/I = locateUID(item_UID)
to_chat(giver, "<span class='warning'>You tried to hand [I] to [receiver], but they didn't want it.</span>")
to_chat(receiver, "<span class='warning'>[giver] seems to have given up on giving you [I].</span>")
to_chat(giver, SPAN_WARNING("You tried to hand [I] to [receiver], but they didn't want it."))
to_chat(receiver, SPAN_WARNING("[giver] seems to have given up on giving you [I]."))
..()
@@ -135,7 +135,7 @@
for(var/obj/item/organ/external/O in bodyparts)
if(O.status & ORGAN_MUTATED)
O.unmutate()
to_chat(src, "<span class='notice'>Your [O.name] is shaped normally again.</span>")
to_chat(src, SPAN_NOTICE("Your [O.name] is shaped normally again."))
/mob/living/carbon/human/adjustCloneLoss(amount)
if(dna.species && amount > 0)
@@ -164,7 +164,7 @@
if(length(candidates))
var/obj/item/organ/external/O = pick(candidates)
O.mutate()
to_chat(src, "<span class='notice'>Something is not right with your [O.name]...</span>")
to_chat(src, SPAN_NOTICE("Something is not right with your [O.name]..."))
O.add_autopsy_data("Mutation", amount)
else // Cloneloss was partially healed - chance to unmutate an organ
if(!prob(heal_prob))
@@ -173,7 +173,7 @@
for(var/obj/item/organ/external/O in bodyparts)
if(O.status & ORGAN_MUTATED)
O.unmutate()
to_chat(src, "<span class='notice'>Your [O.name] is shaped normally again.</span>")
to_chat(src, SPAN_NOTICE("Your [O.name] is shaped normally again."))
return
/mob/living/carbon/human/setCloneLoss(amount)
@@ -15,12 +15,12 @@
if(!victim)
switch(intent)
if(INTENT_HARM)
visible_message("<span class='warning'>[src] swings [implement] wildly!</span>")
visible_message(SPAN_WARNING("[src] swings [implement] wildly!"))
if(INTENT_HELP)
visible_message("<span class='notice'>[src] seems to take a deep breath.</span>")
visible_message(SPAN_NOTICE("[src] seems to take a deep breath."))
return
if(isLivingSSD(victim))
visible_message("<span class='notice'>[src] [intent == INTENT_HARM ? "reluctantly " : ""]lowers [p_their()] [implement].</span>")
visible_message(SPAN_NOTICE("[src] [intent == INTENT_HARM ? "reluctantly " : ""]lowers [p_their()] [implement]."))
return
var/original_intent = a_intent
@@ -33,13 +33,13 @@
/mob/living/carbon/human/proc/dchat_resist()
if(!can_resist())
visible_message("<span class='warning'>[src] seems to be unable to do anything!</span>")
visible_message(SPAN_WARNING("[src] seems to be unable to do anything!"))
return
if(!restrained())
visible_message("<span class='notice'>[src] seems to be doing nothing in particular.</span>")
visible_message(SPAN_NOTICE("[src] seems to be doing nothing in particular."))
return
visible_message("<span class='warning'>[src] is trying to break free!</span>")
visible_message(SPAN_WARNING("[src] is trying to break free!"))
resist()
/mob/living/carbon/human/proc/dchat_pickup()
@@ -53,22 +53,22 @@
if(in_hand)
if(in_hand.flags & NODROP)
visible_message("<span class='warning'>[src] attempts to drop [in_hand], but it seems to be stuck to [p_their()] hand!</span>")
visible_message(SPAN_WARNING("[src] attempts to drop [in_hand], but it seems to be stuck to [p_their()] hand!"))
return
if(in_hand.flags & ABSTRACT)
visible_message("<span class='notice'>[src] seems to have [p_their()] hands full!</span>")
visible_message(SPAN_NOTICE("[src] seems to have [p_their()] hands full!"))
return
visible_message("<span class='notice'>[src] drops [in_hand] and picks up [thing] instead!</span>")
visible_message(SPAN_NOTICE("[src] drops [in_hand] and picks up [thing] instead!"))
unequip(in_hand)
in_hand.forceMove(old_loc)
else
visible_message("<span class='notice'>[src] picks up [thing]!</span>")
visible_message(SPAN_NOTICE("[src] picks up [thing]!"))
put_in_active_hand(thing)
/mob/living/carbon/human/proc/dchat_throw()
var/obj/item/in_hand = get_active_hand()
if(!in_hand || in_hand.flags & ABSTRACT)
visible_message("<span class='notice'>[src] makes a throwing motion!</span>")
visible_message(SPAN_NOTICE("[src] makes a throwing motion!"))
return
var/atom/possible_target
var/cur_turf = get_turf(src)
@@ -85,7 +85,7 @@
if(!possible_target)
possible_target = cur_turf
if(in_hand.flags & NODROP)
visible_message("<span class='warning'>[src] tries to throw [in_hand][isturf(possible_target) ? "" : " towards [possible_target]"], but it won't come off [p_their()] hand!</span>")
visible_message(SPAN_WARNING("[src] tries to throw [in_hand][isturf(possible_target) ? "" : " towards [possible_target]"], but it won't come off [p_their()] hand!"))
return
throw_item(possible_target)
@@ -93,7 +93,7 @@
var/turf/ahead = get_turf(get_step(src, dir))
var/mob/living/carbon/human/H = locate(/mob/living/carbon/human) in ahead
if(!H)
visible_message("<span class='notice'>[src] tries to shove something away!</span>")
visible_message(SPAN_NOTICE("[src] tries to shove something away!"))
return
dna?.species.disarm(src, H)
@@ -112,14 +112,14 @@
var/obj/item/gun/held_gun = get_active_hand()
if(!held_gun)
visible_message("<span class='warning'>[src] makes fingerguns towards [possible_target]!</span>")
visible_message(SPAN_WARNING("[src] makes fingerguns towards [possible_target]!"))
return
if(!istype(held_gun))
visible_message("<span class='warning'>[src] points [held_gun] towards [possible_target]!</span>")
visible_message(SPAN_WARNING("[src] points [held_gun] towards [possible_target]!"))
return
// for his neutral special, he wields a Gun
held_gun.afterattack__legacy__attackchain(possible_target, src)
visible_message("<span class='danger'>[src] fires [held_gun][isturf(possible_target) ? "" : " towards [possible_target]!"]</span>")
visible_message(SPAN_DANGER("[src] fires [held_gun][isturf(possible_target) ? "" : " towards [possible_target]!"]"))
/mob/living/carbon/human/proc/dchat_step(dir)
if(length(grabbed_by))
@@ -33,7 +33,7 @@
for(var/mob/M in src)
LAZYREMOVE(stomach_contents, M)
M.forceMove(drop_location())
visible_message("<span class='danger'>[M] bursts out of [src]!</span>")
visible_message(SPAN_DANGER("[M] bursts out of [src]!"))
if(!ismachineperson(src))
hgibs(loc, dna)
@@ -25,8 +25,8 @@ emp_act
reflected = is_type_in_list(P, safe_list) //And it's safe
if(reflected)
visible_message("<span class='danger'>[P] gets reflected by [src]!</span>", \
"<span class='userdanger'>[P] gets reflected by [src]!</span>")
visible_message(SPAN_DANGER("[P] gets reflected by [src]!"), \
SPAN_USERDANGER("[P] gets reflected by [src]!"))
add_attack_logs(P.firer, src, "hit by [P.type] but got reflected")
P.reflect_back(src)
return -1
@@ -49,10 +49,10 @@ emp_act
var/turf/T = get_turf(src)
P.firer = src
T.bullet_act(P)
visible_message("<span class='danger'>[src] deflects the projectile into the ground!</span>", "<span class='userdanger'>You deflect the projectile towards the ground beneath your feet!</span>")
visible_message(SPAN_DANGER("[src] deflects the projectile into the ground!"), SPAN_USERDANGER("You deflect the projectile towards the ground beneath your feet!"))
return FALSE
visible_message("<span class='danger'>[src] deflects the projectile!</span>", "<span class='userdanger'>You deflect the projectile!</span>")
visible_message(SPAN_DANGER("[src] deflects the projectile!"), SPAN_USERDANGER("You deflect the projectile!"))
if(mind.martial_art.reroute_deflection)
var/refl_angle = get_angle(loc, get_step(src, dir))
P.firer = src
@@ -70,10 +70,10 @@ emp_act
var/turf/T = get_turf(src)
P.firer = src
T.bullet_act(P)
visible_message("<span class='danger'>[src] deflects the projectile into the ground!</span>", "<span class='userdanger'>You deflect the projectile towards the ground beneath your feet!</span>")
visible_message(SPAN_DANGER("[src] deflects the projectile into the ground!"), SPAN_USERDANGER("You deflect the projectile towards the ground beneath your feet!"))
return FALSE
visible_message("<span class='danger'>[src] deflects the projectile!</span>", "<span class='userdanger'>You deflect the projectile!</span>")
visible_message(SPAN_DANGER("[src] deflects the projectile!"), SPAN_USERDANGER("You deflect the projectile!"))
P.firer = src
P.set_angle(rand(0, 360))
return -1
@@ -94,18 +94,18 @@ emp_act
var/obj/item/organ/external/S = bodyparts_by_name[user.zone_selected]
if(!S)
if(ismachineperson(src))
to_chat(user, "<span class='notice'>[p_they(TRUE)] [p_are()] missing that limb!</span>")
to_chat(user, SPAN_NOTICE("[p_they(TRUE)] [p_are()] missing that limb!"))
return TRUE
return
if(!S.is_robotic() || S.open == ORGAN_SYNTHETIC_OPEN)
return
. = TRUE
if(S.brute_dam > ROBOLIMB_SELF_REPAIR_CAP)
to_chat(user, "<span class='danger'>The damage is far too severe to patch over externally.</span>")
to_chat(user, SPAN_DANGER("The damage is far too severe to patch over externally."))
return
if(!S.brute_dam)
to_chat(user, "<span class='notice'>Nothing to fix!</span>")
to_chat(user, SPAN_NOTICE("Nothing to fix!"))
return
var/surgery_time = 0
@@ -138,10 +138,10 @@ emp_act
E.heal_damage(rembrute,0,0,1)
UpdateDamageIcon()
rembrute = nrembrute
user.visible_message("<span class='alert'>[user] patches some dents on [src]'s [E.name] with [I].</span>")
user.visible_message(SPAN_ALERT("[user] patches some dents on [src]'s [E.name] with [I]."))
if(bleed_rate && ismachineperson(src))
bleed_rate = 0
user.visible_message("<span class='alert'>[user] patches some leaks on [src] with [I].</span>")
user.visible_message(SPAN_ALERT("[user] patches some leaks on [src] with [I]."))
if(IgniteMob())
message_admins("[key_name_admin(user)] set [key_name_admin(src)] on fire with [I]")
log_game("[key_name(user)] set [key_name(src)] on fire with [I]")
@@ -298,7 +298,7 @@ emp_act
update_inv_wear_mask()
update_inv_head()
else
to_chat(src, "<span class='notice'>Your [head_clothes.name] protects your head and face from the acid!</span>")
to_chat(src, SPAN_NOTICE("Your [head_clothes.name] protects your head and face from the acid!"))
else
. = get_organ("head")
if(.)
@@ -321,7 +321,7 @@ emp_act
update_inv_w_uniform()
update_inv_wear_suit()
else
to_chat(src, "<span class='notice'>Your [chest_clothes.name] protects your body from the acid!</span>")
to_chat(src, SPAN_NOTICE("Your [chest_clothes.name] protects your body from the acid!"))
else
. = get_organ("chest")
if(.)
@@ -355,7 +355,7 @@ emp_act
update_inv_w_uniform()
update_inv_wear_suit()
else
to_chat(src, "<span class='notice'>Your [arm_clothes.name] protects your arms and hands from the acid!</span>")
to_chat(src, SPAN_NOTICE("Your [arm_clothes.name] protects your arms and hands from the acid!"))
else
. = get_organ("r_arm")
if(.)
@@ -381,7 +381,7 @@ emp_act
update_inv_w_uniform()
update_inv_wear_suit()
else
to_chat(src, "<span class='notice'>Your [leg_clothes.name] protects your legs and feet from the acid!</span>")
to_chat(src, SPAN_NOTICE("Your [leg_clothes.name] protects your legs and feet from the acid!"))
else
. = get_organ("r_leg")
if(.)
@@ -394,7 +394,7 @@ emp_act
//DAMAGE//
for(var/obj/item/organ/external/affecting in damaged)
affecting.receive_damage(acidity, 2 * acidity)
to_chat(src, "<span class='userdanger'>The acid burns you!</span>")
to_chat(src, SPAN_USERDANGER("The acid burns you!"))
playsound(src, 'sound/weapons/sear.ogg', 50, TRUE)
if(istype(affecting, /obj/item/organ/external/head))
@@ -436,12 +436,12 @@ emp_act
if(!istype(affecting))
return
if(!affecting.is_robotic())
to_chat(user, "<span class='warning'>That limb isn't robotic.</span>")
to_chat(user, SPAN_WARNING("That limb isn't robotic."))
return
if(affecting.sabotaged)
to_chat(user, "<span class='warning'>[src]'s [affecting.name] is already sabotaged!</span>")
to_chat(user, SPAN_WARNING("[src]'s [affecting.name] is already sabotaged!"))
else
to_chat(user, "<span class='warning'>You sneakily hack into the dataport on [src]'s [affecting.name] and short out the safeties.</span>")
to_chat(user, SPAN_WARNING("You sneakily hack into the dataport on [src]'s [affecting.name] and short out the safeties."))
affecting.sabotaged = TRUE
return TRUE
@@ -591,7 +591,7 @@ emp_act
L.add_embedded_object(I)
I.add_mob_blood(src)//it embedded itself in you, of course it's bloody!
L.receive_damage(I.w_class * I.embedded_impact_pain_multiplier)
visible_message("<span class='danger'>[I] embeds itself in [src]'s [L.name]!</span>","<span class='userdanger'>[I] embeds itself in your [L.name]!</span>")
visible_message(SPAN_DANGER("[I] embeds itself in [src]'s [L.name]!"),SPAN_USERDANGER("[I] embeds itself in your [L.name]!"))
return TRUE
/*
@@ -631,7 +631,7 @@ emp_act
/mob/living/carbon/human/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE)
if(user.a_intent == INTENT_HARM)
if(HAS_TRAIT(user, TRAIT_PACIFISM))
to_chat(user, "<span class='warning'>You don't want to hurt [src]!</span>")
to_chat(user, SPAN_WARNING("You don't want to hurt [src]!"))
return FALSE
var/hulk_verb = pick("smash", "pummel")
if(check_shields(user, 15, "the [hulk_verb]ing"))
@@ -640,7 +640,7 @@ emp_act
var/datum/unarmed_attack/unarmed = user.get_unarmed_attack()
playsound(loc, unarmed.attack_sound, 25, TRUE, -1)
var/message = "[user] has [hulk_verb]ed [src]!"
visible_message("<span class='danger'>[message]</span>", "<span class='userdanger'>[message]</span>")
visible_message(SPAN_DANGER("[message]"), SPAN_USERDANGER("[message]"))
adjustBruteLoss(15)
return TRUE
@@ -666,7 +666,7 @@ emp_act
/mob/living/carbon/human/attack_alien(mob/living/carbon/alien/humanoid/M)
if(check_shields(M, 0, M.name))
visible_message("<span class='danger'>[M] attempted to touch [src]!</span>")
visible_message(SPAN_DANGER("[M] attempted to touch [src]!"))
return 0
if(..())
@@ -677,8 +677,8 @@ emp_act
var/armor_block = run_armor_check(affecting, MELEE, armor_penetration_flat = 10)
playsound(loc, 'sound/weapons/slice.ogg', 25, TRUE, -1)
visible_message("<span class='danger'>[M] has slashed at [src]!</span>", \
"<span class='userdanger'>[M] has slashed at [src]!</span>")
visible_message(SPAN_DANGER("[M] has slashed at [src]!"), \
SPAN_USERDANGER("[M] has slashed at [src]!"))
apply_damage(M.alien_slash_damage, BRUTE, affecting, armor_block)
add_attack_logs(M, src, "Alien attacked")
@@ -686,7 +686,7 @@ emp_act
if(M.a_intent == INTENT_DISARM) //If not absorbed, you get disarmed, knocked down, and hit with stamina damage.
if(absorb_stun(0))
visible_message("<span class='warning'>[src] is not affected by [M]'s disarm attempt!</span>")
visible_message(SPAN_WARNING("[src] is not affected by [M]'s disarm attempt!"))
playsound(loc, 'sound/weapons/punchmiss.ogg', 25, TRUE, -1)
return FALSE
var/obj/item/organ/external/affecting = get_organ(ran_zone(M.zone_selected))
@@ -695,7 +695,7 @@ emp_act
M.changeNext_move(1.6 SECONDS)
apply_damage(M.alien_disarm_damage, STAMINA)
add_attack_logs(M, src, "Alien tackled")
visible_message("<span class='danger'>[M] has tackled down [src]!</span>", "<span class='hear'>You hear aggressive shuffling!</span>")
visible_message(SPAN_DANGER("[M] has tackled down [src]!"), SPAN_HEAR("You hear aggressive shuffling!"))
/mob/living/carbon/human/attack_animal(mob/living/simple_animal/M)
. = ..()
@@ -747,7 +747,7 @@ emp_act
/mob/living/carbon/human/mech_melee_attack(obj/mecha/M)
if(M.occupant.a_intent == INTENT_HARM)
if(HAS_TRAIT(M.occupant, TRAIT_PACIFISM))
to_chat(M.occupant, "<span class='warning'>You don't want to harm other living beings!</span>")
to_chat(M.occupant, SPAN_WARNING("You don't want to harm other living beings!"))
return
M.do_attack_animation(src)
if(M.damtype == "brute")
@@ -776,8 +776,8 @@ emp_act
UpdateDamageIcon()
updatehealth("mech melee attack")
M.occupant_message("<span class='danger'>You hit [src].</span>")
visible_message("<span class='danger'>[M.name] hits [src]!</span>", "<span class='userdanger'>[M.name] hits you!</span>")
M.occupant_message(SPAN_DANGER("You hit [src]."))
visible_message(SPAN_DANGER("[M.name] hits [src]!"), SPAN_USERDANGER("[M.name] hits you!"))
add_attack_logs(M.occupant, src, "Mecha-meleed with [M]")
else
@@ -819,10 +819,10 @@ emp_act
/mob/living/carbon/human/proc/reagent_safety_check(hot = TRUE)
if(wear_mask)
to_chat(src, "<span class='danger'>Your [wear_mask.name] protects you from the [hot ? "hot" : "cold"] liquid!</span>")
to_chat(src, SPAN_DANGER("Your [wear_mask.name] protects you from the [hot ? "hot" : "cold"] liquid!"))
return FALSE
if(head)
to_chat(src, "<span class='danger'>Your [head.name] protects you from the [hot ? "hot" : "cold"] liquid!</span>")
to_chat(src, SPAN_DANGER("Your [head.name] protects you from the [hot ? "hot" : "cold"] liquid!"))
return FALSE
return TRUE
@@ -879,7 +879,7 @@ emp_act
/mob/living/carbon/human/proc/peel_off_synthetic_skin()
var/obj/item/organ/external/external_limb = get_organ(zone_selected)
if(external_limb && external_limb.augmented_skin_cover_level)
visible_message("<span class='warning'>[src] begins to pull at their skin...</span>")
visible_message(SPAN_WARNING("[src] begins to pull at their skin..."))
if(!do_mob(src, src, 5 SECONDS))
return
external_limb.break_augmented_skin(TRUE)
@@ -53,7 +53,7 @@
if(!H.bodyparts_by_name[BODY_ZONE_L_ARM] || !H.bodyparts_by_name[BODY_ZONE_R_ARM])
if(!H.bodyparts_by_name[BODY_ZONE_L_ARM] && !H.bodyparts_by_name[BODY_ZONE_R_ARM])
// no arms...
to_chat(user, "<span class='warning'>You need arms to be able to clap.</span>")
to_chat(user, SPAN_WARNING("You need arms to be able to clap."))
else
// well, we've got at least one
user.visible_message("[user] makes the sound of one hand clapping.")
@@ -304,19 +304,19 @@
/datum/emote/living/carbon/human/johnny/run_emote(mob/user, params, type_override, intentional)
var/mob/living/carbon/human/H = user
if(!istype(H.wear_mask, /obj/item/clothing/mask/cigarette))
to_chat(user, "<span class='warning'>You can't be that cool without a cigarette between your lips.</span>")
to_chat(user, SPAN_WARNING("You can't be that cool without a cigarette between your lips."))
return TRUE
var/obj/item/clothing/mask/cigarette/cig = H.wear_mask
if(!cig.lit)
to_chat(user, "<span class='warning'>You have to light that [cig] first, cool cat.</span>")
to_chat(user, SPAN_WARNING("You have to light that [cig] first, cool cat."))
return TRUE
if(H.getOxyLoss() > 30)
user.visible_message(
"<span class='warning'>[user] gasps for air and swallows their cigarette!</span>",
"<span class='warning'>You gasp for air and accidentally swallow your [cig]!</span>"
SPAN_WARNING("[user] gasps for air and swallows their cigarette!"),
SPAN_WARNING("You gasp for air and accidentally swallow your [cig]!")
)
if(cig.lit)
to_chat(user, "<span class='userdanger'>The lit [cig] burns on the way down!")
@@ -357,9 +357,9 @@
else
smacking_hand = new /obj/item/slapper(user)
if(user.put_in_hands(smacking_hand))
to_chat(user, "<span class='notice'>You ready your slapping hand.</span>")
to_chat(user, SPAN_NOTICE("You ready your slapping hand."))
else
to_chat(user, "<span class='warning'>You're incapable of slapping in your current state.</span>")
to_chat(user, SPAN_WARNING("You're incapable of slapping in your current state."))
/datum/emote/living/carbon/human/wink
key = "wink"
@@ -408,16 +408,16 @@
/datum/emote/living/carbon/human/highfive/payme/run_emote(mob/living/user, params, type_override, intentional)
var/obj/item/eftpos/eftpos = user.is_holding_item_of_type(/obj/item/eftpos)
if(!eftpos)
to_chat(user, "<span class='warning'>You must be holding an EFTPOS to do that!</span>")
to_chat(user, SPAN_WARNING("You must be holding an EFTPOS to do that!"))
return TRUE
if(!eftpos.can_offer)
to_chat(user, "<span class='warning'>[eftpos] is too bulky to hold out to someone!</span>")
to_chat(user, SPAN_WARNING("[eftpos] is too bulky to hold out to someone!"))
return TRUE
if(!eftpos.transaction_locked)
to_chat(user, "<span class='warning'>You must lock [eftpos] before it can accept payments.</span>")
to_chat(user, SPAN_WARNING("You must lock [eftpos] before it can accept payments."))
return TRUE
if(user.has_status_effect(status))
user.visible_message("<span class='notice'>[user.name] shakes [eftpos] around slightly, impatiently waiting for someone to scan their card.</span>")
user.visible_message(SPAN_NOTICE("[user.name] shakes [eftpos] around slightly, impatiently waiting for someone to scan their card."))
return TRUE
var/datum/result = set_status(user)
@@ -488,7 +488,7 @@
return TRUE
if(prob(5) && !HAS_TRAIT(user, TRAIT_COOL))
user.visible_message("<span class='danger'><b>[user]</b> snaps [user.p_their()] fingers right off!</span>")
user.visible_message(SPAN_DANGER("<b>[user]</b> snaps [user.p_their()] fingers right off!"))
playsound(user.loc, 'sound/effects/snap.ogg', 50, 1)
return TRUE
return ..()
@@ -517,10 +517,10 @@
var/fingers = round(text2num(params), 1)
if(fingers > 10)
to_chat(user, "<span class='warning'>You don't have enough fingers!</span>")
to_chat(user, SPAN_WARNING("You don't have enough fingers!"))
return TRUE
else if(fingers < 0)
to_chat(user, "<span class='warning'>You're not entirely sure how to raise negative fingers.</span>")
to_chat(user, SPAN_WARNING("You're not entirely sure how to raise negative fingers."))
return TRUE
params = fingers
@@ -29,14 +29,14 @@
switch(limb_name)
if("hands")
if(blood_DNA)
return "<span class='warning'>[p_they(TRUE)] [p_have()] [hand_blood_color != "#030303" ? "blood-stained":"oil-stained"] hands!</span>\n"
return "[SPAN_WARNING("[p_they(TRUE)] [p_have()] [hand_blood_color != "#030303" ? "blood-stained":"oil-stained"] hands!")]\n"
if("eyes")
if(HAS_TRAIT(src, SCRYING))
if(IS_CULTIST(src) && HAS_TRAIT(src, CULT_EYES))
return "<span class='boldwarning'>[p_their(TRUE)] glowing red eyes are glazed over!</span>\n"
return "<span class='boldwarning'>[p_their(TRUE)] eyes are glazed over.</span>\n"
return "[SPAN_BOLDWARNING("[p_their(TRUE)] glowing red eyes are glazed over!")]\n"
return "[SPAN_BOLDWARNING("[p_their(TRUE)] eyes are glazed over.")]\n"
if(IS_CULTIST(src) && HAS_TRAIT(src, CULT_EYES))
return "<span class='boldwarning'>[p_their(TRUE)] eyes are glowing an unnatural red!</span>\n"
return "[SPAN_BOLDWARNING("[p_their(TRUE)] eyes are glowing an unnatural red!")]\n"
return msg
@@ -193,9 +193,9 @@
if(skills)
var/char_limit = 40
if(length(skills) <= char_limit)
msg += "<span class='deptradio'>Employment records:</span> [skills]\n"
msg += "[SPAN_DEPTRADIO("Employment records:")] [skills]\n"
else
msg += "<span class='deptradio'>Employment records: [copytext_preserve_html(skills, 1, char_limit-3)]...</span><a href='byond://?src=[UID()];employment_more=1'>More...</a>\n"
msg += "[SPAN_DEPTRADIO("Employment records: [copytext_preserve_html(skills, 1, char_limit-3)]...")]<a href='byond://?src=[UID()];employment_more=1'>More...</a>\n"
if(hasHUD(user, EXAMINE_HUD_MEDICAL_READ))
@@ -212,9 +212,9 @@
var/medical_status = hasHUD(user, EXAMINE_HUD_MEDICAL_WRITE) ? "<a href='byond://?src=[UID()];medical=1'>\[[medical]\]</a>" : "\[[medical]\]"
var/mental_status = hasHUD(user, EXAMINE_HUD_MEDICAL_WRITE) ? "<a href='byond://?src=[UID()];mental=1'>\[[mental]\]</a>" : "\[[mental]\]"
msg += "<span class='deptradio'>Physical status: </span>[medical_status]\n"
msg += "<span class='deptradio'>Mental Status: </span>[mental_status]\n"
msg += "<span class='deptradio'>Medical records:</span> <a href='byond://?src=[UID()];medrecord=`'>\[View\]</a> <a href='byond://?src=[UID()];medrecordComment=`'>\[View comment log\]</a> <a href='byond://?src=[UID()];medrecordadd=`'>\[Add comment\]</a>\n"
msg += "[SPAN_DEPTRADIO("Physical status: ")][medical_status]\n"
msg += "[SPAN_DEPTRADIO("Mental Status: ")][mental_status]\n"
msg += "[SPAN_DEPTRADIO("Medical records:")] <a href='byond://?src=[UID()];medrecord=`'>\[View\]</a> <a href='byond://?src=[UID()];medrecordComment=`'>\[View comment log\]</a> <a href='byond://?src=[UID()];medrecordadd=`'>\[Add comment\]</a>\n"
if(hasHUD(user, EXAMINE_HUD_SECURITY_READ))
var/perpname = get_visible_name(TRUE)
@@ -236,9 +236,9 @@
commentLatest = "No entries." //If present but without entries (=target is recognized crew)
var/criminal_status = hasHUD(user, EXAMINE_HUD_SECURITY_WRITE) ? "<a href='byond://?src=[UID()];criminal=1'>\[[criminal]\]</a>" : "\[[criminal]\]"
msg += "<span class='deptradio'>Criminal status:</span> [criminal_status]\n"
msg += "<span class='deptradio'>Security records:</span> <a href='byond://?src=[UID()];secrecord=`'>\[View\]</a> <a href='byond://?src=[UID()];secrecordComment=`'>\[View comment log\]</a> <a href='byond://?src=[UID()];secrecordadd=`'>\[Add comment\]</a>\n"
msg += "<span class='deptradio'>Latest entry:</span> [commentLatest]\n"
msg += "[SPAN_DEPTRADIO("Criminal status:")] [criminal_status]\n"
msg += "[SPAN_DEPTRADIO("Security records:")] <a href='byond://?src=[UID()];secrecord=`'>\[View\]</a> <a href='byond://?src=[UID()];secrecordComment=`'>\[View comment log\]</a> <a href='byond://?src=[UID()];secrecordadd=`'>\[Add comment\]</a>\n"
msg += "[SPAN_DEPTRADIO("Latest entry:")] [commentLatest]\n"
if(hasHUD(user, EXAMINE_HUD_MALF_READ))
var/perpname = get_visible_name(TRUE)
@@ -252,7 +252,7 @@
malf = E.fields["ai_target"]
var/malf_status = hasHUD(user, EXAMINE_HUD_MALF_WRITE) ? "<a href='byond://?src=[UID()];ai=`'>\[[malf]\]</a>" : "\[[malf]\]"
msg += "<span class='deptradio'>Target Status:</span> [malf_status]\n"
msg += "[SPAN_DEPTRADIO("Target Status:")] [malf_status]\n"
return msg
@@ -349,7 +349,7 @@
var/obj/item/clothing/under/uniform = src.w_uniform
uniform.attackby__legacy__attackchain(I, src)
else
to_chat(src, "<span class='warning'>You are trying to equip this item to an unsupported inventory slot. Report this to a coder!</span>")
to_chat(src, SPAN_WARNING("You are trying to equip this item to an unsupported inventory slot. Report this to a coder!"))
I.screen_loc = null
@@ -116,16 +116,16 @@
var/instability = DEFAULT_GENE_STABILITY - gene_stability
if(prob(instability * 0.1))
adjustFireLoss(min(10, instability * 0.67))
to_chat(src, "<span class='danger'>You feel like your skin is burning and bubbling off!</span>")
to_chat(src, SPAN_DANGER("You feel like your skin is burning and bubbling off!"))
if(gene_stability < GENETIC_DAMAGE_STAGE_2 - gene_bonus)
if(prob(instability * 0.83))
adjustCloneLoss(min(8, instability * 0.05))
to_chat(src, "<span class='danger'>You feel as if your body is warping.</span>")
to_chat(src, SPAN_DANGER("You feel as if your body is warping."))
if(prob(instability * 0.1))
adjustToxLoss(min(10, instability * 0.67))
to_chat(src, "<span class='danger'>You feel weak and nauseous.</span>")
to_chat(src, SPAN_DANGER("You feel weak and nauseous."))
if(gene_stability < (GENETIC_DAMAGE_STAGE_3 - gene_bonus) && prob(1))
to_chat(src, "<span class='biggerdanger'>You feel incredibly sick... Something isn't right!</span>")
to_chat(src, SPAN_BIGGERDANGER("You feel incredibly sick... Something isn't right!"))
spawn(300)
if(gene_stability < GENETIC_DAMAGE_STAGE_3)
gib()
@@ -592,15 +592,15 @@
metabolism_efficiency = 1
else if(nutrition > NUTRITION_LEVEL_FED && satiety > 80)
if(metabolism_efficiency != 1.25)
to_chat(src, "<span class='notice'>You feel vigorous.</span>")
to_chat(src, SPAN_NOTICE("You feel vigorous."))
metabolism_efficiency = 1.25
else if(nutrition < NUTRITION_LEVEL_STARVING + 50)
if(metabolism_efficiency != 0.8)
to_chat(src, "<span class='notice'>You feel sluggish.</span>")
to_chat(src, SPAN_NOTICE("You feel sluggish."))
metabolism_efficiency = 0.8
else
if(metabolism_efficiency == 1.25)
to_chat(src, "<span class='notice'>You no longer feel vigorous.</span>")
to_chat(src, SPAN_NOTICE("You no longer feel vigorous."))
metabolism_efficiency = 1
@@ -665,7 +665,7 @@
if(-99 to -80)
adjustOxyLoss(1)
if(prob(4))
to_chat(src, "<span class='userdanger'>Your chest hurts...</span>")
to_chat(src, SPAN_USERDANGER("Your chest hurts..."))
Paralyse(4 SECONDS)
var/datum/disease/D = new /datum/disease/critical/heart_failure
ForceContractDisease(D)
@@ -678,7 +678,7 @@
var/datum/disease/D = new /datum/disease/critical/heart_failure
ForceContractDisease(D)
if(prob(6))
to_chat(src, "<span class='userdanger'>You feel [pick("horrible pain", "awful", "like shit", "absolutely awful", "like death", "like you are dying", "nothing", "warm", "sweaty", "tingly", "really, really bad", "horrible")]!</span>")
to_chat(src, SPAN_USERDANGER("You feel [pick("horrible pain", "awful", "like shit", "absolutely awful", "like death", "like you are dying", "nothing", "warm", "sweaty", "tingly", "really, really bad", "horrible")]!"))
Weaken(6 SECONDS)
if(prob(3))
Paralyse(4 SECONDS)
@@ -688,7 +688,7 @@
var/datum/disease/D = new /datum/disease/critical/shock
ForceContractDisease(D)
if(prob(5))
to_chat(src, "<span class='userdanger'>You feel [pick("terrible", "awful", "like shit", "sick", "numb", "cold", "sweaty", "tingly", "horrible")]!</span>")
to_chat(src, SPAN_USERDANGER("You feel [pick("terrible", "awful", "like shit", "sick", "numb", "cold", "sweaty", "tingly", "horrible")]!"))
Weaken(6 SECONDS)
/mob/living/carbon/human/proc/can_metabolize(datum/reagent/reagent)
@@ -810,13 +810,13 @@
for(var/obj/item/I in BP.embedded_objects)
if(prob(I.embedded_pain_chance))
BP.receive_damage(I.w_class*I.embedded_pain_multiplier)
to_chat(src, "<span class='userdanger'>[I] embedded in your [BP.name] hurts!</span>")
to_chat(src, SPAN_USERDANGER("[I] embedded in your [BP.name] hurts!"))
if(prob(I.embedded_fall_chance))
BP.receive_damage(I.w_class*I.embedded_fall_pain_multiplier)
BP.remove_embedded_object(I)
I.forceMove(get_turf(src))
visible_message("<span class='danger'>[I] falls out of [name]'s [BP.name]!</span>","<span class='userdanger'>[I] falls out of your [BP.name]!</span>")
visible_message(SPAN_DANGER("[I] falls out of [name]'s [BP.name]!"),SPAN_USERDANGER("[I] falls out of your [BP.name]!"))
if(!has_embedded_objects())
clear_alert("embeddedobject")
@@ -898,9 +898,9 @@
continue //no puking if you can't smell!
// Humans can lack a mind datum, y'know
if(H.mind && HAS_TRAIT(H.mind, TRAIT_CORPSE_RESIST))
to_chat(H, "<span class='warning'>You smell something rotting nearby.</span>")
to_chat(H, SPAN_WARNING("You smell something rotting nearby."))
continue
to_chat(H, "<span class='warning'>You smell something foul...</span>")
to_chat(H, SPAN_WARNING("You smell something foul..."))
H.fakevomit()
/mob/living/carbon/human/proc/handle_heartbeat()
@@ -4,7 +4,7 @@
..()
if(ventcrawler)
to_chat(src, "<span class='notice'>You can ventcrawl! Use alt+click on vents to quickly travel about the station.</span>")
to_chat(src, SPAN_NOTICE("You can ventcrawl! Use alt+click on vents to quickly travel about the station."))
update_pipe_vision()
regenerate_icons()
SEND_SIGNAL(src, COMSIG_HUMAN_LOGIN)
@@ -338,7 +338,7 @@
/mob/living/carbon/human/blob_act(obj/structure/blob/B)
if(stat == DEAD)
return
show_message("<span class='userdanger'>The blob attacks you!</span>")
show_message(SPAN_USERDANGER("The blob attacks you!"))
var/dam_zone = pick("head", "chest", "groin", "l_arm", "l_hand", "r_arm", "r_hand", "l_leg", "l_foot", "r_leg", "r_foot")
var/obj/item/organ/external/affecting = get_organ(ran_zone(dam_zone))
apply_damage(5, BRUTE, affecting, run_armor_check(affecting, MELEE))
@@ -522,7 +522,7 @@
if(shock_damage * siemens_coeff >= 1 && prob(25))
set_heartattack(FALSE)
if(stat == CONSCIOUS)
to_chat(src, "<span class='notice'>You feel your heart beating again!</span>")
to_chat(src, SPAN_NOTICE("You feel your heart beating again!"))
dna.species.spec_electrocute_act(src, shock_damage, source, siemens_coeff, flags)
@@ -537,7 +537,7 @@
if(!I || I.loc != src) //no item, no limb, or item is not in limb or in the person anymore
return
var/time_taken = I.embedded_unsafe_removal_time*I.w_class
usr.visible_message("<span class='warning'>[usr] attempts to remove [I] from [usr.p_their()] [L.name].</span>","<span class='notice'>You attempt to remove [I] from your [L.name]... (It will take [time_taken/10] seconds.)</span>")
usr.visible_message(SPAN_WARNING("[usr] attempts to remove [I] from [usr.p_their()] [L.name]."),SPAN_NOTICE("You attempt to remove [I] from your [L.name]... (It will take [time_taken/10] seconds.)"))
if(do_after(usr, time_taken, needhand = 1, target = src))
if(!I || !L || I.loc != src || !(I in L.embedded_objects))
return
@@ -546,7 +546,7 @@
I.forceMove(get_turf(src))
usr.put_in_hands(I)
usr.emote("scream")
usr.visible_message("[usr] successfully rips [I] out of [usr.p_their()] [L.name]!","<span class='notice'>You successfully remove [I] from your [L.name].</span>")
usr.visible_message("[usr] successfully rips [I] out of [usr.p_their()] [L.name]!",SPAN_NOTICE("You successfully remove [I] from your [L.name]."))
if(!has_embedded_objects())
clear_alert("embeddedobject")
return
@@ -575,7 +575,7 @@
read = 1
if(!read)
to_chat(usr, "<span class='warning'>Unable to locate a data core entry for this person.</span>")
to_chat(usr, SPAN_WARNING("Unable to locate a data core entry for this person."))
if(href_list["secrecordComment"])
if(hasHUD(usr, EXAMINE_HUD_SECURITY_READ))
@@ -597,12 +597,12 @@
else
to_chat(usr, c)
else
to_chat(usr, "<span class='warning'>No comments found</span>")
to_chat(usr, SPAN_WARNING("No comments found"))
if(hasHUD(usr, EXAMINE_HUD_SECURITY_WRITE))
to_chat(usr, "<a href='byond://?src=[UID()];secrecordadd=`'>\[Add comment\]</a>")
if(!read)
to_chat(usr, "<span class='warning'>Unable to locate a data core entry for this person.</span>")
to_chat(usr, SPAN_WARNING("Unable to locate a data core entry for this person."))
if(href_list["secrecordadd"])
if(usr.incapacitated() || !hasHUD(usr, EXAMINE_HUD_SECURITY_WRITE))
@@ -634,7 +634,7 @@
GLOB.PDA_Manifest.Cut()
if(!modified)
to_chat(usr, "<span class='warning'>Unable to locate a data core entry for this person.</span>")
to_chat(usr, SPAN_WARNING("Unable to locate a data core entry for this person."))
if(href_list["mental"])
if(hasHUD(usr, EXAMINE_HUD_MEDICAL_WRITE))
@@ -655,7 +655,7 @@
modified = TRUE
if(!modified)
to_chat(usr, "<span class='warning'>Unable to locate a data core entry for this person.</span>")
to_chat(usr, SPAN_WARNING("Unable to locate a data core entry for this person."))
if(href_list["medrecord"])
if(hasHUD(usr, EXAMINE_HUD_MEDICAL_READ))
@@ -680,7 +680,7 @@
read = 1
if(!read)
to_chat(usr, "<span class='warning'>Unable to locate a data core entry for this person.</span>")
to_chat(usr, SPAN_WARNING("Unable to locate a data core entry for this person."))
if(href_list["medrecordComment"])
if(hasHUD(usr, EXAMINE_HUD_MEDICAL_READ))
@@ -699,11 +699,11 @@
for(var/c in R.fields["comments"])
to_chat(usr, c)
else
to_chat(usr, "<span class='warning'>No comment found</span>")
to_chat(usr, SPAN_WARNING("No comment found"))
to_chat(usr, "<a href='byond://?src=[UID()];medrecordadd=`'>\[Add comment\]</a>")
if(!read)
to_chat(usr, "<span class='warning'>Unable to locate a data core entry for this person.</span>")
to_chat(usr, SPAN_WARNING("Unable to locate a data core entry for this person."))
if(href_list["medrecordadd"])
if(usr.incapacitated() || !hasHUD(usr, EXAMINE_HUD_MEDICAL_WRITE))
@@ -726,7 +726,7 @@
skills = E.fields["notes"]
break
if(skills)
to_chat(usr, "<span class='deptradio'>Employment records: [skills]</span>\n")
to_chat(usr, "[SPAN_DEPTRADIO("Employment records: [skills]")]\n")
if(href_list["ai"])
try_set_malf_status(usr)
@@ -741,7 +741,7 @@
var/perpname = get_visible_name(TRUE)
if(perpname == "Unknown")
to_chat(user, "<span class='warning'>Unable to locate a record for this person.</span>")
to_chat(user, SPAN_WARNING("Unable to locate a record for this person."))
return
var/datum/data/record/found_record
@@ -754,11 +754,11 @@
break outer
if(!found_record)
to_chat(user, "<span class='warning'>Unable to locate a record for this person.</span>")
to_chat(user, SPAN_WARNING("Unable to locate a record for this person."))
return
if(found_record.fields["criminal"] == SEC_RECORD_STATUS_EXECUTE)
to_chat(user, "<span class='warning'>Unable to modify the criminal status of a person with an active Execution order. Use a security computer instead.</span>")
to_chat(user, SPAN_WARNING("Unable to modify the criminal status of a person with an active Execution order. Use a security computer instead."))
return
var/static/list/possible_status = list(
@@ -783,7 +783,7 @@
if(!hasHUD(user, EXAMINE_HUD_SECURITY_WRITE))
return
if(found_record.fields["criminal"] == SEC_RECORD_STATUS_EXECUTE)
to_chat(user, "<span class='warning'>Unable to modify the criminal status of a person with an active Execution order. Use a security computer instead.</span>")
to_chat(user, SPAN_WARNING("Unable to modify the criminal status of a person with an active Execution order. Use a security computer instead."))
return
var/rank
if(ishuman(user))
@@ -804,7 +804,7 @@
var/targetname = get_visible_name(TRUE)
if(targetname == "Unknown")
to_chat(user, "<span class='warning'>Unable to set a status for unknown persons.</span>")
to_chat(user, SPAN_WARNING("Unable to set a status for unknown persons."))
return
var/datum/data/record/found_record
@@ -817,7 +817,7 @@
break outer
if(!found_record)
to_chat(user, "<span class='warning'>Unable to locate a record for this person.</span>")
to_chat(user, SPAN_WARNING("Unable to locate a record for this person."))
return
var/static/list/possible_status = list(
@@ -915,7 +915,7 @@
/mob/living/carbon/human/proc/play_xylophone()
if(!src.xylophone)
visible_message("<span class='warning'>[src] begins playing [p_their()] ribcage like a xylophone. It's quite spooky.</span>","<span class='notice'>You begin to play a spooky refrain on your ribcage.</span>","<span class='warning'>You hear a spooky xylophone melody.</span>")
visible_message(SPAN_WARNING("[src] begins playing [p_their()] ribcage like a xylophone. It's quite spooky."),SPAN_NOTICE("You begin to play a spooky refrain on your ribcage."),SPAN_WARNING("You hear a spooky xylophone melody."))
var/song = pick('sound/effects/xylophone1.ogg','sound/effects/xylophone2.ogg','sound/effects/xylophone3.ogg')
playsound(loc, song, 50, TRUE, -1)
xylophone = 1
@@ -961,7 +961,7 @@
if(!. && error_msg && user)
if(!fail_msg)
fail_msg = "There is no exposed flesh or thin material [target_zone == "head" ? "on [p_their()] head" : "on [p_their()] body"] to inject into."
to_chat(user, "<span class='alert'>[fail_msg]</span>")
to_chat(user, SPAN_ALERT("[fail_msg]"))
///
/**
@@ -1393,20 +1393,20 @@
if(usr != src)
return FALSE //something is terribly wrong
if(incapacitated())
to_chat(src, "<span class='warning'>You can't write on the floor in your current state!</span>")
to_chat(src, SPAN_WARNING("You can't write on the floor in your current state!"))
return
if(bloody_hands <= 1)
remove_verb(src, /mob/living/carbon/human/proc/bloody_doodle)
to_chat(src, "<span class='warning'>Your hands aren't bloody enough!</span>")
to_chat(src, SPAN_WARNING("Your hands aren't bloody enough!"))
return
if(gloves)
to_chat(src, "<span class='warning'>[gloves] are preventing you from writing anything down!</span>")
to_chat(src, SPAN_WARNING("[gloves] are preventing you from writing anything down!"))
return
var/turf/simulated/T = loc
if(!istype(T)) //to prevent doodling out of mechs and lockers
to_chat(src, "<span class='warning'>You cannot reach the floor.</span>")
to_chat(src, SPAN_WARNING("You cannot reach the floor."))
return
var/turf/origin = T
@@ -1416,21 +1416,21 @@
if(direction != "Here")
T = get_step(T,text2dir(direction))
if(!istype(T))
to_chat(src, "<span class='warning'>You cannot doodle there.</span>")
to_chat(src, SPAN_WARNING("You cannot doodle there."))
return
var/num_doodles = 0
for(var/obj/effect/decal/cleanable/blood/writing/W in T)
num_doodles++
if(num_doodles > 4)
to_chat(src, "<span class='warning'>There is no space to write on!</span>")
to_chat(src, SPAN_WARNING("There is no space to write on!"))
return
var/max_length = (bloody_hands - 1) * 30 //tweeter style
var/message = tgui_input_text(src, "Write a message. It cannot be longer than [max_length] characters.", "Blood writing", max_length = max_length)
if(origin != loc)
to_chat(src, "<span class='notice'>Stay still while writing!</span>")
to_chat(src, SPAN_NOTICE("Stay still while writing!"))
return
if(message)
var/used_blood_amount = round(length(message) / 30, 1)
@@ -1438,9 +1438,9 @@
if(length(message) > max_length)
message += "-"
to_chat(src, "<span class='warning'>You ran out of blood to write with!</span>")
to_chat(src, SPAN_WARNING("You ran out of blood to write with!"))
else
to_chat(src, "<span class='notice'>You daub '[message]' on [T] in shiny red lettering.</span>")
to_chat(src, SPAN_NOTICE("You daub '[message]' on [T] in shiny red lettering."))
var/obj/effect/decal/cleanable/blood/writing/W = new(T)
W.message = message
W.add_fingerprint(src)
@@ -1569,7 +1569,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
for(var/obj/item/hand in get_both_hands(src))
if(prob(current_size * 5) && hand.w_class >= ((11-current_size)/2) && drop_item_to_ground(hand))
step_towards(hand, src)
to_chat(src, "<span class='warning'>\The [S] pulls \the [hand] from your grip!</span>")
to_chat(src, SPAN_WARNING("\The [S] pulls \the [hand] from your grip!"))
base_rad_act(S, current_size * 3, GAMMA_RAD)
/mob/living/carbon/human/narsie_act()
@@ -1596,16 +1596,16 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
)
if(H == src)
to_chat(src, "<span class='warning'>You cannot perform CPR on yourself!</span>")
to_chat(src, SPAN_WARNING("You cannot perform CPR on yourself!"))
return
if(!isnull(H.receiving_cpr_from)) // To prevent spam stacking
to_chat(src, "<span class='warning'>They are already receiving CPR!</span>")
to_chat(src, SPAN_WARNING("They are already receiving CPR!"))
return
if(!can_use_hands() || !has_both_hands())
to_chat(src, "<span class='warning'>You need two hands available to do CPR!</span>")
to_chat(src, SPAN_WARNING("You need two hands available to do CPR!"))
return
if(l_hand || r_hand)
to_chat(src, "<span class='warning'>You can't perform effective CPR with your hands full!</span>")
to_chat(src, SPAN_WARNING("You can't perform effective CPR with your hands full!"))
return
H.receiving_cpr_from = UID()
@@ -1613,8 +1613,8 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
if(H.stat == DEAD || HAS_TRAIT(H, TRAIT_FAKEDEATH))
if(ismachineperson(H) && do_mob(src, H, 4 SECONDS)) // hehe
visible_message(
"<span class='warning'>[src] bangs [p_their()] head on [H]'s chassis by accident!</span>",
"<span class='danger'>You go in for a rescue breath, and bang your head on [H]'s <i>machine</i> chassis. CPR's not going to work.</span>"
SPAN_WARNING("[src] bangs [p_their()] head on [H]'s chassis by accident!"),
SPAN_DANGER("You go in for a rescue breath, and bang your head on [H]'s <i>machine</i> chassis. CPR's not going to work.")
)
playsound(H, 'sound/weapons/ringslam.ogg', 50, TRUE)
adjustBruteLossByPart(2, "head")
@@ -1622,23 +1622,23 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
return
if(!H.is_revivable())
to_chat(src, "<span class='warning'>[H] is already too far gone for CPR...</span>")
to_chat(src, SPAN_WARNING("[H] is already too far gone for CPR..."))
H.receiving_cpr_from = null
return
visible_message("<span class='danger'>[src] is trying to perform CPR on [H]'s lifeless body!</span>", "<span class='danger'>You start trying to perform CPR on [H]'s lifeless body!</span>")
visible_message(SPAN_DANGER("[src] is trying to perform CPR on [H]'s lifeless body!"), SPAN_DANGER("You start trying to perform CPR on [H]'s lifeless body!"))
while(do_mob(src, H, 4 SECONDS) && (H.stat == DEAD || HAS_TRAIT(H, TRAIT_FAKEDEATH)) && H.is_revivable())
var/timer_restored
if(cpr_modifier == CPR_CHEST_COMPRESSION_ONLY)
visible_message("<span class='notice'>[src] gives [H] chest compressions.</span>", "<span class='notice'>You can't make rescue breaths work, so you do your best to give chest compressions.</span>")
visible_message(SPAN_NOTICE("[src] gives [H] chest compressions."), SPAN_NOTICE("You can't make rescue breaths work, so you do your best to give chest compressions."))
timer_restored = CPR_CHEST_COMPRESSION_RESTORATION // without rescue breaths, it won't stave off the death timer forever
else
visible_message("<span class='notice'>[src] gives [H] chest compressions and rescue breaths.</span>", "<span class='notice'>You give [H] chest compressions and rescue breaths.</span>")
visible_message(SPAN_NOTICE("[src] gives [H] chest compressions and rescue breaths."), SPAN_NOTICE("You give [H] chest compressions and rescue breaths."))
timer_restored = CPR_BREATHS_RESTORATION // this, however, should keep it indefinitely postponed assuming CPR continues
if(HAS_TRAIT(H, TRAIT_FAKEDEATH))
if(prob(25))
to_chat(H, "<span class='userdanger'>Your chest burns as you receive unnecessary CPR!</span>")
to_chat(H, SPAN_USERDANGER("Your chest burns as you receive unnecessary CPR!"))
continue
// this is the amount of time that should get added onto the timer.
@@ -1656,32 +1656,32 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
if(!H.is_revivable())
to_chat(src, "<span class='notice'>You feel [H]'s body is already starting to stiffen beneath you...it's too late for CPR now.</span>")
to_chat(src, SPAN_NOTICE("You feel [H]'s body is already starting to stiffen beneath you...it's too late for CPR now."))
else
visible_message("<span class='notice'>[src] stops giving [H] CPR.</span>", "<span class='notice'>You stop giving [H] CPR.</span>")
visible_message(SPAN_NOTICE("[src] stops giving [H] CPR."), SPAN_NOTICE("You stop giving [H] CPR."))
H.receiving_cpr_from = null
return
visible_message("<span class='danger'>[src] is trying to perform CPR on [H.name]!</span>", "<span class='danger'>You try to perform CPR on [H.name]!</span>")
visible_message(SPAN_DANGER("[src] is trying to perform CPR on [H.name]!"), SPAN_DANGER("You try to perform CPR on [H.name]!"))
if(cpr_modifier == CPR_CHEST_COMPRESSION_ONLY)
to_chat(src, "<span class='warning'>You can't get to [H]'s mouth, so your CPR will be less effective!</span>")
to_chat(src, SPAN_WARNING("You can't get to [H]'s mouth, so your CPR will be less effective!"))
while(do_mob(src, H, 4 SECONDS) && H.health <= HEALTH_THRESHOLD_CRIT)
H.adjustOxyLoss(-15 * cpr_modifier)
H.SetLoseBreath(0)
H.AdjustParalysis(-2 SECONDS)
H.updatehealth("cpr")
visible_message("<span class='danger'>[src] performs CPR on [H.name]!</span>", "<span class='notice'>You perform CPR on [H.name].</span>")
visible_message(SPAN_DANGER("[src] performs CPR on [H.name]!"), SPAN_NOTICE("You perform CPR on [H.name]."))
cpr_try_activate_bomb(H)
if(cpr_modifier == CPR_RESCUE_BREATHS)
to_chat(H, "<span class='notice'>You feel a breath of fresh air enter your lungs. It feels good.</span>")
to_chat(H, SPAN_NOTICE("You feel a breath of fresh air enter your lungs. It feels good."))
add_attack_logs(src, H, "CPRed", ATKLOG_ALL)
H.receiving_cpr_from = null
visible_message("<span class='notice'>[src] stops performing CPR on [H].</span>", "<span class='notice'>You stop performing CPR on [H].</span>")
to_chat(src, "<span class='danger'>You need to stay still while performing CPR!</span>")
visible_message(SPAN_NOTICE("[src] stops performing CPR on [H]."), SPAN_NOTICE("You stop performing CPR on [H]."))
to_chat(src, SPAN_DANGER("You need to stay still while performing CPR!"))
/mob/living/carbon/human/proc/get_cpr_mod(mob/living/carbon/human/H)
if(is_mouth_covered() || H.is_mouth_covered())
@@ -1692,7 +1692,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
return CPR_CHEST_COMPRESSION_ONLY
if(dna?.species.breathid != H.dna?.species.breathid) // sorry non oxy-breathers
to_chat(src, "<span class='warning'>You don't think you'd be able to give [H] very effective rescue breaths...</span>")
to_chat(src, SPAN_WARNING("You don't think you'd be able to give [H] very effective rescue breaths..."))
return CPR_CHEST_COMPRESSION_ONLY
return CPR_RESCUE_BREATHS
@@ -1713,7 +1713,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
if(istype(org) && istype(org.hidden, /obj/item/grenade))
var/obj/item/grenade/G = org.hidden
if(!G.active && prob(25))
to_chat(src, "<span class='notice'>You feel something <i>click</i> under your hands.</span>")
to_chat(src, SPAN_NOTICE("You feel something <i>click</i> under your hands."))
add_attack_logs(src, target, "activated an implanted grenade [G] in [target] with CPR.", ATKLOG_MOST)
playsound(target.loc, 'sound/weapons/armbomb.ogg', 60, TRUE)
G.active = TRUE
@@ -1790,7 +1790,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
/mob/living/carbon/human/selfFeed(obj/item/food/toEat, fullness)
if(!check_has_mouth())
if(!ismachineperson(src) || (ismachineperson(src) && !HAS_TRAIT(src, TRAIT_IPC_CAN_EAT)))
to_chat(src, "<span class='notice'>Where do you intend to put [toEat]? You don't have a mouth!</span>")
to_chat(src, SPAN_NOTICE("Where do you intend to put [toEat]? You don't have a mouth!"))
return FALSE
return ..()
@@ -1798,19 +1798,19 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
if(!check_has_mouth())
if(!ismachineperson(src) || !HAS_TRAIT(src, TRAIT_IPC_CAN_EAT))
if(!((istype(toEat, /obj/item/reagent_containers/drinks) && (ismachineperson(src)))))
to_chat(user, "<span class='notice'>Where do you intend to put [toEat]? \The [src] doesn't have a mouth!</span>")
to_chat(user, SPAN_NOTICE("Where do you intend to put [toEat]? \The [src] doesn't have a mouth!"))
return FALSE
return ..()
/mob/living/carbon/human/selfDrink(obj/item/reagent_containers/drinks/toDrink)
if(!check_has_mouth())
if(!ismachineperson(src))
to_chat(src, "<span class='notice'>Where do you intend to put \the [src]? You don't have a mouth!</span>")
to_chat(src, SPAN_NOTICE("Where do you intend to put \the [src]? You don't have a mouth!"))
return FALSE
else
to_chat(src, "<span class='notice'>You pour a bit of liquid from [toDrink] into your connection port.</span>")
to_chat(src, SPAN_NOTICE("You pour a bit of liquid from [toDrink] into your connection port."))
else
to_chat(src, "<span class='notice'>You swallow a gulp of [toDrink].</span>")
to_chat(src, SPAN_NOTICE("You swallow a gulp of [toDrink]."))
return TRUE
/mob/living/carbon/human/can_track(mob/living/user)
@@ -1857,11 +1857,11 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
if(G.trigger_guard == TRIGGER_GUARD_NORMAL)
if(HAS_TRAIT(src, TRAIT_CHUNKYFINGERS))
to_chat(src, "<span class='warning'>Your meaty finger is far too large for the trigger guard!</span>")
to_chat(src, SPAN_WARNING("Your meaty finger is far too large for the trigger guard!"))
return FALSE
if(mind && mind.martial_art && mind.martial_art.no_guns) //great dishonor to famiry
to_chat(src, "<span class='warning'>[mind.martial_art.no_guns_message]</span>")
to_chat(src, SPAN_WARNING("[mind.martial_art.no_guns_message]"))
return FALSE
/mob/living/carbon/human/proc/change_icobase(new_icobase, owner_sensitive)
@@ -2015,7 +2015,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
dna.UpdateSE()
/mob/living/carbon/human/get_spooked()
to_chat(src, "<span class='whisper'>[pick(GLOB.boo_phrases)]</span>")
to_chat(src, SPAN_WHISPER("[pick(GLOB.boo_phrases)]"))
return TRUE
/mob/living/carbon/human/extinguish_light(force = FALSE)
@@ -2025,7 +2025,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
var/obj/item/organ/internal/lantern/O = get_int_organ(/obj/item/organ/internal/lantern)
if(O && O.glowing)
O.toggle_biolum(TRUE)
visible_message("<span class='danger'>[src] is engulfed in shadows and fades into the darkness.</span>", "<span class='danger'>A sense of dread washes over you as you suddenly dim dark.</span>")
visible_message(SPAN_DANGER("[src] is engulfed in shadows and fades into the darkness."), SPAN_DANGER("A sense of dread washes over you as you suddenly dim dark."))
/mob/living/carbon/human/proc/get_perceived_trauma(shock_reduction)
return min(health, maxHealth) + shock_reduction
@@ -2111,7 +2111,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
possible_recipes[recipe] = "something? This shouldn't happen, make a bug report"
if(!length(possible_recipes))
to_chat(src, "<span class='warning'>You can't think of anything to cook with the items around you.</span>")
to_chat(src, SPAN_WARNING("You can't think of anything to cook with the items around you."))
return
var/list/message = list("You draw upon your extensive experience in space food, contemplating what you could make with the items around you...")
@@ -2246,18 +2246,18 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
for(var/obj/item/organ/external/E in src.bodyparts)
missing -= E.limb_name
if(E.status & ORGAN_DEAD)
analysis += "<span class='info'>You conclude [src]'s [E.name] is dead.</span>"
analysis += SPAN_INFO("You conclude [src]'s [E.name] is dead.")
if(E.status & ORGAN_INT_BLEEDING)
analysis += "<span class='info'>You conclude [src]'s [E.name] has internal bleeding.</span>"
analysis += SPAN_INFO("You conclude [src]'s [E.name] has internal bleeding.")
if(E.status & ORGAN_BURNT)
analysis += "<span class='info'>You conclude [src]'s [E.name] has been critically burned.</span>"
analysis += SPAN_INFO("You conclude [src]'s [E.name] has been critically burned.")
if(E.status & ORGAN_BROKEN)
if(!E.broken_description)
analysis += "<span class='info'>You conclude [src]'s [E.name] is broken.</span>"
analysis += SPAN_INFO("You conclude [src]'s [E.name] is broken.")
else
analysis += "<span class='info'>You conclude [src]'s [E.name] has a [E.broken_description].</span>"
analysis += SPAN_INFO("You conclude [src]'s [E.name] has a [E.broken_description].")
if(!length(analysis))
analysis += "<span class='info'>[src] appears to be in perfect health.</span>"
analysis += SPAN_INFO("[src] appears to be in perfect health.")
to_chat(user, chat_box_healthscan(analysis.Join("<br>")))
/mob/living/carbon/human/pointed(atom/A as mob|obj|turf in view())
@@ -51,7 +51,7 @@
if(E?.status & ORGAN_DEAD && HAS_TRAIT(src, TRAIT_I_WANT_BRAINS))
continue
if(E && !E.properly_attached && life_tick % 24 == 0)
to_chat(src, "<span class='danger'>Your [E] is hanging on by a thread! You need someone to surgically attach it for you!</span>")
to_chat(src, SPAN_DANGER("Your [E] is hanging on by a thread! You need someone to surgically attach it for you!"))
// let it fail even if just foot&leg. Also malfunctioning happens sporadically so it should impact more when it procs.
// Also, if you haven't gotten your leg properly attached surgically, you're not gonna have a good time trying to walk.
stance_damage += 2
@@ -102,8 +102,8 @@
if(!E.properly_attached)
visible_message(
"<span class='warning'>[src]'s [E.name] seems to be hanging loosely from [p_their()] wrist, completely fumbling what [p_they()] [p_were()] holding!</span>",
"<span class='userdanger'>You feel pain shoot through your [E.name] as it dangles limply from your [E.amputation_point], you need to get it surgically attached before you can hold anything with it!</span>"
SPAN_WARNING("[src]'s [E.name] seems to be hanging loosely from [p_their()] wrist, completely fumbling what [p_they()] [p_were()] holding!"),
SPAN_USERDANGER("You feel pain shoot through your [E.name] as it dangles limply from your [E.amputation_point], you need to get it surgically attached before you can hold anything with it!")
)
return
@@ -134,11 +134,11 @@
gloves.germ_level += 1
/mob/living/carbon/human/proc/becomeSlim()
to_chat(src, "<span class='notice'>You feel fit again!</span>")
to_chat(src, SPAN_NOTICE("You feel fit again!"))
REMOVE_TRAIT(src, TRAIT_FAT, OBESITY)
/mob/living/carbon/human/proc/becomeFat()
to_chat(src, "<span class='alert'>You suddenly feel blubbery!</span>")
to_chat(src, SPAN_ALERT("You suddenly feel blubbery!"))
ADD_TRAIT(src, TRAIT_FAT, OBESITY)
//Handles chem traces
@@ -61,8 +61,8 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list(
var/obj/item/clothing/accessory/A = jumpsuit.accessories[1]
var/thief_mode = in_thief_mode(user)
if(!thief_mode)
user.visible_message("<span class='danger'>[user] starts to take off [A] from [source]'s [jumpsuit]!</span>", \
"<span class='danger'>You start to take off [A] from [source]'s [jumpsuit]!</span>")
user.visible_message(SPAN_DANGER("[user] starts to take off [A] from [source]'s [jumpsuit]!"), \
SPAN_DANGER("You start to take off [A] from [source]'s [jumpsuit]!"))
if(!do_mob(user, source, POCKET_STRIP_DELAY, hidden = thief_mode))
return
@@ -70,8 +70,8 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list(
return
if(!thief_mode)
user.visible_message("<span class='danger'>[user] takes [A] off of [source]'s [jumpsuit]!</span>", \
"<span class='danger'>You take [A] off of [source]'s [jumpsuit]!</span>")
user.visible_message(SPAN_DANGER("[user] takes [A] off of [source]'s [jumpsuit]!"), \
SPAN_DANGER("You take [A] off of [source]'s [jumpsuit]!"))
jumpsuit.detach_accessory(A, user)
/datum/strippable_item/mob_item_slot/left_ear
@@ -153,7 +153,7 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list(
if(isnull(item))
return FALSE
to_chat(user, "<span class='notice'>You try to empty [source]'s [pocket_side] pocket.</span>")
to_chat(user, SPAN_NOTICE("You try to empty [source]'s [pocket_side] pocket."))
add_attack_logs(user, source, "Attempting pickpocketing of [item]")
item.add_fingerprint(user)
@@ -167,7 +167,7 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list(
return result
/datum/strippable_item/mob_item_slot/pocket/proc/warn_owner(atom/owner)
to_chat(owner, "<span class='warning'>You feel your [pocket_side] pocket being fumbled with!</span>")
to_chat(owner, SPAN_WARNING("You feel your [pocket_side] pocket being fumbled with!"))
/datum/strippable_item/mob_item_slot/pocket/left
key = STRIPPABLE_ITEM_LPOCKET
@@ -203,8 +203,8 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list(
return
carbon_source.visible_message(
"<span class='danger'>[user] tries to [(carbon_source.internal != item) ? "open" : "close"] the valve on [source]'s [item.name].</span>",
"<span class='userdanger'>[user] tries to [(carbon_source.internal != item) ? "open" : "close"] the valve on your [item.name].</span>",
SPAN_DANGER("[user] tries to [(carbon_source.internal != item) ? "open" : "close"] the valve on [source]'s [item.name]."),
SPAN_USERDANGER("[user] tries to [(carbon_source.internal != item) ? "open" : "close"] the valve on your [item.name]."),
)
if(!do_mob(user, carbon_source, INTERNALS_TOGGLE_DELAY))
@@ -218,8 +218,8 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list(
carbon_source.update_action_buttons_icon()
carbon_source.visible_message(
"<span class='danger'>[user] [isnull(carbon_source.internal) ? "closes": "opens"] the valve on [source]'s [item.name].</span>",
"<span class='userdanger'>[user] [isnull(carbon_source.internal) ? "closes": "opens"] the valve on your [item.name].</span>",
SPAN_DANGER("[user] [isnull(carbon_source.internal) ? "closes": "opens"] the valve on [source]'s [item.name]."),
SPAN_USERDANGER("[user] [isnull(carbon_source.internal) ? "closes": "opens"] the valve on your [item.name]."),
)
@@ -10,15 +10,15 @@
var/mob/dead/observer/ghost = get_ghost()
if(!client && !check_ghost_client() && !key)
if(!has_status_effect(STATUS_EFFECT_REVIVE_NOTICE))
visible_message("<span class='danger'>[src]'[p_s()] posibrain fails its power-on self-test. Any recovery from this state is unlikely.</span>")
visible_message(SPAN_DANGER("[src]'[p_s()] posibrain fails its power-on self-test. Any recovery from this state is unlikely."))
apply_status_effect(STATUS_EFFECT_REVIVE_NOTICE)
return
if(ghost)
if(!has_status_effect(STATUS_EFFECT_REVIVE_NOTICE))
to_chat(ghost, "<span class='ghostalert'>Your chassis has been repaired and repowered, re-enter if you want to continue playing!</span> (Verbs -> Ghost -> Re-enter corpse)")
to_chat(ghost, "[SPAN_GHOSTALERT("Your chassis has been repaired and repowered, re-enter if you want to continue playing!")] (Verbs -> Ghost -> Re-enter corpse)")
SEND_SOUND(ghost, sound('sound/effects/genetics.ogg'))
visible_message("<span class='notice'>[src]'[p_s()] posibrain buffers...</span>")
visible_message(SPAN_NOTICE("[src]'[p_s()] posibrain buffers..."))
apply_status_effect(STATUS_EFFECT_REVIVE_NOTICE)
return
@@ -40,7 +40,7 @@
if(!check_rights(R_SPAWN))
return
if(QDELETED(src))
to_chat(usr, "<span class='notice'>Mob doesn't exist anymore.</span>")
to_chat(usr, SPAN_NOTICE("Mob doesn't exist anymore."))
return
var/quirk_name = tgui_input_list(usr, "What quirk do you want to add to [src]?", "Quirk to add", GLOB.quirk_paths)
if(!quirk_name)
@@ -54,7 +54,7 @@
if(!check_rights(R_SPAWN))
return
if(QDELETED(src))
to_chat(usr, "<span class='notice'>Mob doesn't exist anymore.</span>")
to_chat(usr, SPAN_NOTICE("Mob doesn't exist anymore."))
return
var/datum/quirk/to_remove = tgui_input_list(usr, "What quirk do you want to remove from [src]?", "Quirk to remove", src.quirks)
if(!to_remove)
+1 -1
View File
@@ -76,7 +76,7 @@
if(!picked || !isturf(picked))
return
visible_message("<span class='warning'>[src] blinks away!</span>", "<span class='danger'>Your instincts kick in, and you blink away!</span>")
visible_message(SPAN_WARNING("[src] blinks away!"), SPAN_DANGER("Your instincts kick in, and you blink away!"))
INVOKE_ASYNC(src, PROC_REF(after_the_attack), picked)
playsound(get_turf(src), 'sound/magic/blink.ogg', 50, TRUE)
@@ -571,7 +571,7 @@
/datum/species/proc/harm(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style)
if(HAS_TRAIT(user, TRAIT_PACIFISM))
to_chat(user, "<span class='warning'>You don't want to harm [target]!</span>")
to_chat(user, SPAN_WARNING("You don't want to harm [target]!"))
return FALSE
if(target != user && handle_harm_antag(user, target))
return FALSE
@@ -593,7 +593,7 @@
user.do_attack_animation(target, attack.animation_type)
if(attack.harmless)
playsound(target.loc, attack.attack_sound, 25, TRUE, -1)
target.visible_message("<span class='danger'>[user] [pick(attack.attack_verb)]ed [target]!</span>")
target.visible_message(SPAN_DANGER("[user] [pick(attack.attack_verb)]ed [target]!"))
return FALSE
add_attack_logs(user, target, "Melee attacked with fists", target.ckey ? null : ATKLOG_ALL)
@@ -604,7 +604,7 @@
damage += user.physiology.melee_bonus
if(!damage)
playsound(target.loc, attack.miss_sound, 25, TRUE, -1)
target.visible_message("<span class='danger'>[user] tried to [pick(attack.attack_verb)] [target]!</span>")
target.visible_message(SPAN_DANGER("[user] tried to [pick(attack.attack_verb)] [target]!"))
return FALSE
@@ -618,11 +618,11 @@
playsound(target.loc, punch_sound, 25, TRUE, -1)
target.visible_message("<span class='danger'>[user] [pick(attack.attack_verb)]ed [target]!</span>")
target.visible_message(SPAN_DANGER("[user] [pick(attack.attack_verb)]ed [target]!"))
target.apply_damage(damage, BRUTE, affecting, armor_block, sharp = attack.sharp)
if((target.stat != DEAD) && damage >= user.dna.species.punchstunthreshold)
target.visible_message("<span class='danger'>[user] has knocked down [target]!</span>", \
"<span class='userdanger'>[user] has knocked down [target]!</span>")
target.visible_message(SPAN_DANGER("[user] has knocked down [target]!"), \
SPAN_USERDANGER("[user] has knocked down [target]!"))
target.KnockDown(4 SECONDS)
SEND_SIGNAL(target, COMSIG_ATTACK_BY)
@@ -632,7 +632,7 @@
if(SEND_SIGNAL(target, COMSIG_HUMAN_ATTACKED, user) & COMPONENT_CANCEL_ATTACK_CHAIN)
return FALSE
if(target.absorb_stun(0))
target.visible_message("<span class='warning'>[target] is not affected by [user]'s disarm attempt!</span>")
target.visible_message(SPAN_WARNING("[target] is not affected by [user]'s disarm attempt!"))
user.do_attack_animation(target, ATTACK_EFFECT_DISARM)
playsound(target.loc, 'sound/weapons/punchmiss.ogg', 25, TRUE, -1)
return FALSE
@@ -686,8 +686,8 @@
var/moved = target.Move(shove_to, shove_dir)
if(!moved) //they got pushed into a dense object
add_attack_logs(user, target, "Disarmed into a dense object", ATKLOG_ALL)
target.visible_message("<span class='warning'>[user] slams [target] into an obstacle!</span>", \
"<span class='userdanger'>You get slammed into the obstacle by [user]!</span>", \
target.visible_message(SPAN_WARNING("[user] slams [target] into an obstacle!"), \
SPAN_USERDANGER("You get slammed into the obstacle by [user]!"), \
"You hear a loud thud.")
if(!HAS_TRAIT(target, TRAIT_FLOORED))
target.KnockDown(3 SECONDS)
@@ -703,7 +703,7 @@
target.Slowed(2.5 SECONDS, 0.5)
var/obj/item/I = target.get_active_hand()
if(I)
to_chat(target, "<span class='warning'>Your grip on [I] loosens!</span>")
to_chat(target, SPAN_WARNING("Your grip on [I] loosens!"))
add_attack_logs(user, target, "Disarmed, shoved back", ATKLOG_ALL)
target.stop_pulling()
@@ -716,7 +716,7 @@
if(M.hand)
temp = M.bodyparts_by_name["l_hand"]
if(!temp || !temp.is_usable())
to_chat(M, "<span class='warning'>You can't use your hand.</span>")
to_chat(M, SPAN_WARNING("You can't use your hand."))
return
if(M.mind)
@@ -724,7 +724,7 @@
if((M != H) && M.a_intent != INTENT_HELP && H.check_shields(M, 0, M.name, attack_type = UNARMED_ATTACK))
add_attack_logs(M, H, "Melee attacked with fists (miss/block)")
H.visible_message("<span class='warning'>[M] attempted to touch [H]!</span>")
H.visible_message(SPAN_WARNING("[M] attempted to touch [H]!"))
return FALSE
switch(M.a_intent)
@@ -830,7 +830,7 @@
if(!H.w_uniform && !nojumpsuit && !(O?.status & ORGAN_ROBOT) && !(I.flags_2 & ALLOW_BELT_NO_JUMPSUIT_2))
if(!disable_warning)
to_chat(H, "<span class='alert'>You need a jumpsuit before you can attach this [I.name].</span>")
to_chat(H, SPAN_ALERT("You need a jumpsuit before you can attach this [I.name]."))
return FALSE
if(!(I.slot_flags & ITEM_SLOT_BELT))
return
@@ -852,7 +852,7 @@
if(!H.w_uniform && !nojumpsuit && !(O?.status & ORGAN_ROBOT))
if(!disable_warning)
to_chat(H, "<span class='alert'>You need a jumpsuit before you can attach this [I.name].</span>")
to_chat(H, SPAN_ALERT("You need a jumpsuit before you can attach this [I.name]."))
return FALSE
if(!(I.slot_flags & ITEM_SLOT_ID))
return FALSE
@@ -864,7 +864,7 @@
if(!H.w_uniform && !nojumpsuit && !(O?.status & ORGAN_ROBOT))
if(!disable_warning)
to_chat(H, "<span class='alert'>You need a jumpsuit before you can attach this [I.name].</span>")
to_chat(H, SPAN_ALERT("You need a jumpsuit before you can attach this [I.name]."))
return FALSE
if(!(I.slot_flags & ITEM_SLOT_PDA))
return FALSE
@@ -878,7 +878,7 @@
if(!H.w_uniform && !nojumpsuit && !(O?.status & ORGAN_ROBOT))
if(!disable_warning)
to_chat(H, "<span class='alert'>You need a jumpsuit before you can attach this [I.name].</span>")
to_chat(H, SPAN_ALERT("You need a jumpsuit before you can attach this [I.name]."))
return FALSE
if(I.w_class <= WEIGHT_CLASS_SMALL || (I.slot_flags & ITEM_SLOT_BOTH_POCKETS))
return TRUE
@@ -891,7 +891,7 @@
if(!H.w_uniform && !nojumpsuit && !(O?.status & ORGAN_ROBOT))
if(!disable_warning)
to_chat(H, "<span class='alert'>You need a jumpsuit before you can attach this [I.name].</span>")
to_chat(H, SPAN_ALERT("You need a jumpsuit before you can attach this [I.name]."))
return FALSE
if(I.w_class <= WEIGHT_CLASS_SMALL || (I.slot_flags & ITEM_SLOT_BOTH_POCKETS))
return TRUE
@@ -903,7 +903,7 @@
return FALSE
if(!H.wear_suit)
if(!disable_warning)
to_chat(H, "<span class='alert'>You need a suit before you can attach this [I.name].</span>")
to_chat(H, SPAN_ALERT("You need a suit before you can attach this [I.name]."))
return FALSE
if(!H.wear_suit.allowed)
if(!disable_warning)
@@ -911,7 +911,7 @@
return FALSE
if(I.w_class > H.wear_suit.max_suit_w)
if(!disable_warning)
to_chat(H, "<span class='warning'>[I] is too big to attach.</span>")
to_chat(H, SPAN_WARNING("[I] is too big to attach."))
return FALSE
if(istype(I, /obj/item/pda) || is_pen(I) || is_type_in_list(I, H.wear_suit.allowed))
return TRUE
@@ -938,11 +938,11 @@
var/obj/item/clothing/under/uniform = H.w_uniform
if(!uniform)
if(!disable_warning)
to_chat(H, "<span class='warning'>You need a jumpsuit before you can attach this [I.name].</span>")
to_chat(H, SPAN_WARNING("You need a jumpsuit before you can attach this [I.name]."))
return FALSE
if(length(uniform.accessories) && !uniform.can_attach_accessory(I))
if(!disable_warning)
to_chat(H, "<span class='warning'>You already have an accessory of this type attached to your [uniform].</span>")
to_chat(H, SPAN_WARNING("You already have an accessory of this type attached to your [uniform]."))
return FALSE
if(!(I.slot_flags & ITEM_SLOT_ACCESSORY))
return FALSE
@@ -962,14 +962,14 @@
if(!H.IsWeakened())
H.emote("collapse")
H.Weaken(RAD_MOB_KNOCKDOWN_AMOUNT)
to_chat(H, "<span class='danger'>You feel weak.</span>")
to_chat(H, SPAN_DANGER("You feel weak."))
if(radiation > RAD_MOB_VOMIT && prob(RAD_MOB_VOMIT_PROB))
H.vomit(10, TRUE)
if(radiation > RAD_MOB_MUTATE)
if(prob(1))
to_chat(H, "<span class='danger'>You mutate!</span>")
to_chat(H, SPAN_DANGER("You mutate!"))
randmutb(H)
H.emote("gasp")
domutcheck(H)
@@ -979,7 +979,7 @@
if(!istype(head_organ) || (NO_HAIR in species_traits))
return
if(prob(15) && head_organ.h_style != "Bald")
to_chat(H, "<span class='danger'>Your hair starts to fall out in clumps...</span>")
to_chat(H, SPAN_DANGER("Your hair starts to fall out in clumps..."))
addtimer(CALLBACK(src, PROC_REF(go_bald), H), 5 SECONDS)
/datum/species/proc/go_bald(mob/living/carbon/human/H)
@@ -1135,7 +1135,7 @@ It'll return null if the organ doesn't correspond, so include null checks when u
to_chat(user, "<span class='warning zombie'>Our bite fails to pierce [target]!</span>")
return FALSE
user.visible_message("<span class='danger'>[user] violently bites [target]!</span>")
user.visible_message(SPAN_DANGER("[user] violently bites [target]!"))
playsound(user.loc, 'sound/weapons/bite.ogg', 20, TRUE)
playsound(user.loc, 'sound/misc/moist_impact.ogg', 50, TRUE)
user.do_attack_animation(target, ATTACK_EFFECT_BITE)
@@ -1179,7 +1179,7 @@ It'll return null if the organ doesn't correspond, so include null checks when u
return TRUE
eat_brain.custom_pain("OH GOD!!! THEY'RE EATING MY [uppertext(eat_brain.name)]!!") // gnarly
user.visible_message("<span class='danger'>[user] digs their claws into [target]'s [brain_house.name], eating their [eat_brain]!</span>", "<span class='danger zombie'>We feast on [target]'s brains.</span>")
user.visible_message(SPAN_DANGER("[user] digs their claws into [target]'s [brain_house.name], eating their [eat_brain]!"), "<span class='danger zombie'>We feast on [target]'s brains.</span>")
if(!HAS_TRAIT(user, TRAIT_NON_INFECTIOUS_ZOMBIE))
if(!target.HasDisease(/datum/disease/zombie))
var/datum/disease/zombie/zomb = new /datum/disease/zombie
@@ -1208,13 +1208,13 @@ It'll return null if the organ doesn't correspond, so include null checks when u
var/datum/antagonist/vampire/V = user?.mind?.has_antag_datum(/datum/antagonist/vampire)
if(V && !V.draining && user.zone_selected == BODY_ZONE_HEAD)
if((NO_BLOOD in target.dna.species.species_traits) || !target.blood_volume)
to_chat(user, "<span class='warning'>They have no blood!</span>")
to_chat(user, SPAN_WARNING("They have no blood!"))
return TRUE
if(target.mind && (target.mind.has_antag_datum(/datum/antagonist/vampire) || target.mind.has_antag_datum(/datum/antagonist/mindslave/thrall)))
to_chat(user, "<span class='warning'>Your fangs fail to pierce [target.name]'s cold flesh!</span>")
to_chat(user, SPAN_WARNING("Your fangs fail to pierce [target.name]'s cold flesh!"))
return TRUE
if(HAS_TRAIT(target, TRAIT_SKELETONIZED))
to_chat(user, "<span class='warning'>There is no blood in a skeleton!</span>")
to_chat(user, SPAN_WARNING("There is no blood in a skeleton!"))
return TRUE
//we're good to suck the blood, blaah
V.handle_bloodsucking(target)
@@ -124,11 +124,11 @@
/datum/species/golem/plasma/handle_life(mob/living/carbon/human/H)
if(H.bodytemperature > 750)
if(!boom_warning && H.on_fire)
to_chat(H, "<span class='userdanger'>You feel like you could blow up at any moment!</span>")
to_chat(H, SPAN_USERDANGER("You feel like you could blow up at any moment!"))
boom_warning = TRUE
else
if(boom_warning)
to_chat(H, "<span class='notice'>You feel more stable.</span>")
to_chat(H, SPAN_NOTICE("You feel more stable."))
boom_warning = FALSE
if(H.bodytemperature > 850 && H.on_fire && prob(25))
@@ -162,9 +162,9 @@
if(ishuman(owner))
var/mob/living/carbon/human/H = owner
if(H.fire_stacks)
to_chat(owner, "<span class='notice'>You ignite yourself!</span>")
to_chat(owner, SPAN_NOTICE("You ignite yourself!"))
else
to_chat(owner, "<span class='warning'>You try to ignite yourself, but fail!</span>")
to_chat(owner, SPAN_WARNING("You try to ignite yourself, but fail!"))
H.IgniteMob() //firestacks are already there passively
//Harder to hurt
@@ -377,7 +377,7 @@
special_names = list("Castle", "Bag", "Dune", "Worm", "Storm")
/datum/species/golem/sand/handle_death(gibbed, mob/living/carbon/human/H)
H.visible_message("<span class='danger'>[H] turns into a pile of sand!</span>")
H.visible_message(SPAN_DANGER("[H] turns into a pile of sand!"))
for(var/obj/item/W in H)
H.drop_item_to_ground(W)
for(var/i=1, i <= rand(3, 5), i++)
@@ -388,8 +388,8 @@
if(!(P.original == H && P.firer == H))
if((P.flag == BULLET || P.flag == BOMB) && P.armor_penetration_percentage < 100)
playsound(H, 'sound/effects/shovel_dig.ogg', 70, 1)
H.visible_message("<span class='danger'>[P] sinks harmlessly in [H]'s sandy body!</span>", \
"<span class='userdanger'>[P] sinks harmlessly in [H]'s sandy body!</span>")
H.visible_message(SPAN_DANGER("[P] sinks harmlessly in [H]'s sandy body!"), \
SPAN_USERDANGER("[P] sinks harmlessly in [H]'s sandy body!"))
return FALSE
return TRUE
@@ -411,7 +411,7 @@
/datum/species/golem/glass/handle_death(gibbed, mob/living/carbon/human/H)
playsound(H, "shatter", 70, 1)
H.visible_message("<span class='danger'>[H] shatters!</span>")
H.visible_message(SPAN_DANGER("[H] shatters!"))
for(var/obj/item/W in H)
H.drop_item_to_ground(W)
for(var/i=1, i <= rand(3, 5), i++)
@@ -421,8 +421,8 @@
/datum/species/golem/glass/bullet_act(obj/projectile/P, mob/living/carbon/human/H)
if(!(P.original == H && P.firer == H)) //self-shots don't reflect
if(P.is_reflectable(REFLECTABILITY_ENERGY))
H.visible_message("<span class='danger'>[P] gets reflected by [H]'s glass skin!</span>", \
"<span class='userdanger'>[P] gets reflected by [H]'s glass skin!</span>")
H.visible_message(SPAN_DANGER("[P] gets reflected by [H]'s glass skin!"), \
SPAN_USERDANGER("[P] gets reflected by [H]'s glass skin!"))
return FALSE //Reflect back must be handled on the human bullet act for some arcane reason
return TRUE
@@ -445,7 +445,7 @@
var/tele_range = 6
/datum/species/golem/bluespace/proc/reactive_teleport(mob/living/carbon/human/H)
H.visible_message("<span class='warning'>[H] teleports!</span>", "<span class='danger'>You destabilize and teleport!</span>")
H.visible_message(SPAN_WARNING("[H] teleports!"), SPAN_DANGER("You destabilize and teleport!"))
var/list/turfs = list()
for(var/turf/T in orange(tele_range, H))
if(T.density)
@@ -520,13 +520,13 @@
/datum/action/innate/unstable_teleport/Activate()
activated = TRUE
var/mob/living/carbon/human/H = owner
H.visible_message("<span class='warning'>[H] starts vibrating!</span>", "<span class='danger'>You start charging your bluespace core...</span>")
H.visible_message(SPAN_WARNING("[H] starts vibrating!"), SPAN_DANGER("You start charging your bluespace core..."))
playsound(get_turf(H), 'sound/weapons/flash.ogg', 25, 1)
addtimer(CALLBACK(src, PROC_REF(teleport), H), 15)
/datum/action/innate/unstable_teleport/proc/teleport(mob/living/carbon/human/H)
activated = FALSE
H.visible_message("<span class='warning'>[H] teleports!</span>", "<span class='danger'>You teleport!</span>")
H.visible_message(SPAN_WARNING("[H] teleports!"), SPAN_DANGER("You teleport!"))
var/list/turfs = list()
for(var/turf/T in orange(tele_range, H))
if(isspaceturf(T))
@@ -706,11 +706,11 @@
if(gibbed)
return
if(H.on_fire)
H.visible_message("<span class='danger'>[H] burns into ash!</span>")
H.visible_message(SPAN_DANGER("[H] burns into ash!"))
H.dust()
return
H.visible_message("<span class='danger'>[H] falls apart into a pile of bandages!</span>")
H.visible_message(SPAN_DANGER("[H] falls apart into a pile of bandages!"))
new /obj/structure/cloth_pile(get_turf(H), H)
..()
@@ -734,7 +734,7 @@
H.unequip_everything()
H.forceMove(src)
cloth_golem = H
to_chat(cloth_golem, "<span class='notice'>You start gathering your life energy, preparing to rise again...</span>")
to_chat(cloth_golem, SPAN_NOTICE("You start gathering your life energy, preparing to rise again..."))
addtimer(CALLBACK(src, PROC_REF(revive)), revive_time)
else
return INITIALIZE_HINT_QDEL
@@ -744,7 +744,7 @@
return ..()
/obj/structure/cloth_pile/burn()
visible_message("<span class='danger'>[src] burns into ash!</span>")
visible_message(SPAN_DANGER("[src] burns into ash!"))
new /obj/effect/decal/cleanable/ash(get_turf(src))
..()
@@ -761,13 +761,13 @@
cloth_golem.grab_ghost() //won't pull if it's a suicide
sleep(20)
cloth_golem.forceMove(get_turf(src))
cloth_golem.visible_message("<span class='danger'>[src] rises and reforms into [cloth_golem]!</span>", "<span class='userdanger'>You reform into yourself!</span>")
cloth_golem.visible_message(SPAN_DANGER("[src] rises and reforms into [cloth_golem]!"), SPAN_USERDANGER("You reform into yourself!"))
cloth_golem = null
qdel(src)
/obj/structure/cloth_pile/item_interaction(mob/living/user, obj/item/used, list/modifiers)
if(!(resistance_flags & ON_FIRE) && used.get_heat())
visible_message("<span class='danger'>[src] bursts into flames!</span>")
visible_message(SPAN_DANGER("[src] bursts into flames!"))
fire_act()
return ITEM_INTERACT_COMPLETE
@@ -82,11 +82,11 @@
else
H.take_organ_damage(5, 10)
else
to_chat(H, "<span class='warning'>The water stings[volume < 10 ? " you, but isn't concentrated enough to harm you" : null]!</span>")
to_chat(H, SPAN_WARNING("The water stings[volume < 10 ? " you, but isn't concentrated enough to harm you" : null]!"))
if(volume >= 10)
H.adjustFireLoss(min(max(4, (volume - 10) * 2), 20))
H.emote("scream")
to_chat(H, "<span class='warning'>The water stings[volume < 10 ? " you, but isn't concentrated enough to harm you" : null]!</span>")
to_chat(H, SPAN_WARNING("The water stings[volume < 10 ? " you, but isn't concentrated enough to harm you" : null]!"))
/datum/species/grey/after_equip_job(datum/job/J, mob/living/carbon/human/H)
var/translator_pref = H.client.prefs.active_character.speciesprefs
@@ -101,7 +101,7 @@
var/obj/item/organ/internal/cyberimp/brain/speech_translator/implant = new
implant.insert(H)
if(!translator_pref && istype(J))
to_chat(H, "<span class='notice'>A speech translator implant has been installed due to your role on the station.</span>")
to_chat(H, SPAN_NOTICE("A speech translator implant has been installed due to your role on the station."))
/datum/species/grey/handle_reagents(mob/living/carbon/human/H, datum/reagent/R)
if(R.id == "sacid" || R.id == "facid")
@@ -136,16 +136,16 @@
return
if(prob(6))
to_chat(H, "<span class='warning'>Error 74: Microbattery critical malfunction, likely cause: Extended strain.</span>")
to_chat(H, SPAN_WARNING("Error 74: Microbattery critical malfunction, likely cause: Extended strain."))
microbattery.receive_damage(4, TRUE)
else if(prob(4))
H.Weaken(6 SECONDS)
H.Stuttering(20 SECONDS)
to_chat(H, "<span class='warning'>Power critical, shutting down superfluous functions.</span>")
to_chat(H, SPAN_WARNING("Power critical, shutting down superfluous functions."))
H.emote("collapse")
microbattery.receive_damage(2, TRUE)
else if(prob(4))
to_chat(H, "<span class='warning'>Redirecting excess power from servos to vital components.</span>")
to_chat(H, SPAN_WARNING("Redirecting excess power from servos to vital components."))
H.Slowed(rand(15 SECONDS, 32 SECONDS))
// Allows IPC's to change their monitor display
@@ -159,7 +159,7 @@
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
if(!head_organ) //If the rock'em-sock'em robot's head came off during a fight, they shouldn't be able to change their screen/optics.
to_chat(H, "<span class='warning'>Where's your head at? Can't change your monitor/display without one.</span>")
to_chat(H, SPAN_WARNING("Where's your head at? Can't change your monitor/display without one."))
return
var/datum/robolimb/robohead = GLOB.all_robolimbs[head_organ.model]
@@ -168,7 +168,7 @@
if(!robohead.is_monitor) //If they've got a prosthetic head and it isn't a monitor, they've no screen to adjust. Instead, let them change the colour of their optics!
var/optic_colour = tgui_input_color(H, "Please select an optic color", "Select Optic Color", H.m_colours["head"])
if(H.incapacitated(TRUE, TRUE))
to_chat(H, "<span class='warning'>You were interrupted while changing the color of your optics.</span>")
to_chat(H, SPAN_WARNING("You were interrupted while changing the color of your optics."))
return
if(!isnull(optic_colour))
H.change_markings(optic_colour, "head")
@@ -192,7 +192,7 @@
var/new_color = tgui_input_color(H, "Please select hair color.", "Monitor Color", head_organ.hair_colour)
if(H.incapacitated(TRUE, TRUE))
to_chat(H, "<span class='warning'>You were interrupted while changing your monitor display.</span>")
to_chat(H, SPAN_WARNING("You were interrupted while changing your monitor display."))
return
if(new_style)
@@ -231,7 +231,7 @@
"Daisy.... Daisy...."
)
var/error_message = pick(error_messages)
to_chat(H, "<span class='boldwarning'>[error_message]</span>")
to_chat(H, SPAN_BOLDWARNING("[error_message]"))
/datum/species/machine/do_compressor_grind(mob/living/carbon/human/H)
new /obj/item/stack/sheet/mineral/titanium(H.loc)
@@ -137,7 +137,7 @@
/datum/species/moth/proc/check_burn_wings(mob/living/carbon/human/H) //do not go into the extremely hot light. you will not survive
SIGNAL_HANDLER
if(H.on_fire && !H.has_status_effect(STATUS_EFFECT_BURNT_WINGS) && H.bodytemperature >= 400 && H.fire_stacks > 0)
to_chat(H, "<span class='warning'>Your precious wings burn to a crisp!</span>")
to_chat(H, SPAN_WARNING("Your precious wings burn to a crisp!"))
H.apply_status_effect(STATUS_EFFECT_BURNT_WINGS)
/datum/species/moth/proc/on_aheal(mob/living/carbon/human/H)
@@ -164,14 +164,14 @@
/datum/action/innate/cocoon/Activate()
var/mob/living/carbon/human/moth/H = owner
if(H.nutrition < COCOON_NUTRITION_AMOUNT)
to_chat(H, "<span class='warning'>You are too hungry to cocoon!</span>")
to_chat(H, SPAN_WARNING("You are too hungry to cocoon!"))
return
H.visible_message("<span class='notice'>[H] begins to hold still and concentrate on weaving a cocoon...</span>", "<span class='notice'>You begin to focus on weaving a cocoon... (This will take [COCOON_WEAVE_DELAY / 10] seconds, and you must hold still.)</span>")
H.visible_message(SPAN_NOTICE("[H] begins to hold still and concentrate on weaving a cocoon..."), SPAN_NOTICE("You begin to focus on weaving a cocoon... (This will take [COCOON_WEAVE_DELAY / 10] seconds, and you must hold still.)"))
if(do_after(H, COCOON_WEAVE_DELAY, FALSE, H))
if(H.incapacitated())
to_chat(H, "<span class='warning'>You cannot weave a cocoon in your current state.</span>")
to_chat(H, SPAN_WARNING("You cannot weave a cocoon in your current state."))
return
H.visible_message("<span class='notice'>[H] finishes weaving a cocoon!</span>", "<span class='notice'>You finish weaving your cocoon.</span>")
H.visible_message(SPAN_NOTICE("[H] finishes weaving a cocoon!"), SPAN_NOTICE("You finish weaving your cocoon."))
var/obj/structure/moth_cocoon/C = new(get_turf(H))
H.forceMove(C)
C.preparing_to_emerge = TRUE
@@ -180,7 +180,7 @@
H.create_log(MISC_LOG, "has woven a cocoon")
addtimer(CALLBACK(src, PROC_REF(emerge), C), COCOON_EMERGE_DELAY, TIMER_UNIQUE)
else
to_chat(H, "<span class='warning'>You need to hold still in order to weave a cocoon!</span>")
to_chat(H, SPAN_WARNING("You need to hold still in order to weave a cocoon!"))
/**
* Removes moth from cocoon, restores burnt wings
@@ -207,9 +207,9 @@
/obj/structure/moth_cocoon/Destroy()
if(!preparing_to_emerge)
visible_message("<span class='danger'>[src] splits open from within!</span>")
visible_message(SPAN_DANGER("[src] splits open from within!"))
else
visible_message("<span class='danger'>[src] is smashed open, harming the Nian within!</span>")
visible_message(SPAN_DANGER("[src] is smashed open, harming the Nian within!"))
for(var/mob/living/carbon/human/H in contents)
H.adjustBruteLoss(COCOON_HARM_AMOUNT)
H.adjustFireLoss(COCOON_HARM_AMOUNT)
@@ -179,7 +179,7 @@
if(environment.oxygen() && environment.oxygen() >= OXYCONCEN_PLASMEN_IGNITION) //Same threshhold that extinguishes fire
H.adjust_fire_stacks(0.5)
if(!H.on_fire && H.fire_stacks > 0)
H.visible_message("<span class='danger'>[H]'s body reacts with the atmosphere and bursts into flames!</span>","<span class='userdanger'>Your body reacts with the atmosphere and bursts into flame!</span>")
H.visible_message(SPAN_DANGER("[H]'s body reacts with the atmosphere and bursts into flames!"),SPAN_USERDANGER("Your body reacts with the atmosphere and bursts into flame!"))
H.IgniteMob()
else if(H.fire_stacks)
var/obj/item/clothing/under/plasmaman/P = H.w_uniform
@@ -212,8 +212,8 @@
if(!H.equip_to_appropriate_slot(internal_tank) && !H.put_in_any_hand_if_possible(internal_tank))
H.drop_item_to_ground(H.l_hand)
H.equip_or_collect(internal_tank, ITEM_SLOT_LEFT_HAND)
to_chat(H, "<span class='boldannounceooc'>Could not find an empty slot for internals! Please report this as a bug.</span>")
to_chat(H, SPAN_BOLDANNOUNCEOOC("Could not find an empty slot for internals! Please report this as a bug."))
stack_trace("Failed to equip plasmaman with a tank, with the job [J.type]")
H.internal = internal_tank
to_chat(H, "<span class='notice'>You are now running on plasma internals from [internal_tank]. Oxygen is toxic to your species, so you must breathe plasma only.</span>")
to_chat(H, SPAN_NOTICE("You are now running on plasma internals from [internal_tank]. Oxygen is toxic to your species, so you must breathe plasma only."))
H.update_action_buttons_icon()
@@ -136,7 +136,7 @@
/datum/action/innate/regrow/Activate()
var/mob/living/carbon/human/H = owner
if(H.nutrition < SLIMEPERSON_MINHUNGER)
to_chat(H, "<span class='warning'>You're too hungry to regenerate a limb!</span>")
to_chat(H, SPAN_WARNING("You're too hungry to regenerate a limb!"))
return
var/list/missing_limbs = list()
@@ -152,7 +152,7 @@
missing_limbs[initial(limb.name)] = l
if(!length(missing_limbs))
to_chat(H, "<span class='warning'>You're not missing any limbs!</span>")
to_chat(H, SPAN_WARNING("You're not missing any limbs!"))
return
var/limb_select = tgui_input_list(H, "Choose a limb to regrow", "Limb Regrowth", missing_limbs)
@@ -160,14 +160,14 @@
return
var/chosen_limb = missing_limbs[limb_select]
H.visible_message("<span class='notice'>[H] begins to hold still and concentrate on [H.p_their()] missing [limb_select]...</span>", "<span class='notice'>You begin to focus on regrowing your missing [limb_select]... (This will take [round(SLIMEPERSON_REGROWTHDELAY/10)] seconds, and you must hold still.)</span>")
H.visible_message(SPAN_NOTICE("[H] begins to hold still and concentrate on [H.p_their()] missing [limb_select]..."), SPAN_NOTICE("You begin to focus on regrowing your missing [limb_select]... (This will take [round(SLIMEPERSON_REGROWTHDELAY/10)] seconds, and you must hold still.)"))
if(do_after(H, SLIMEPERSON_REGROWTHDELAY, FALSE, H, extra_checks = list(CALLBACK(H, TYPE_PROC_REF(/mob/living, IsStunned))), use_default_checks = FALSE)) // Override the check for weakness, only check for stunned
if(H.incapacitated(extra_checks = list(CALLBACK(H, TYPE_PROC_REF(/mob/living, IsStunned))), use_default_checks = FALSE)) // Override the check for weakness, only check for stunned
to_chat(H, "<span class='warning'>You cannot regenerate missing limbs in your current state.</span>")
to_chat(H, SPAN_WARNING("You cannot regenerate missing limbs in your current state."))
return
if(H.nutrition < SLIMEPERSON_MINHUNGER)
to_chat(H, "<span class='warning'>You're too hungry to regenerate a limb!</span>")
to_chat(H, SPAN_WARNING("You're too hungry to regenerate a limb!"))
return
var/obj/item/organ/external/O = H.bodyparts_by_name[chosen_limb]
@@ -175,7 +175,7 @@
var/stored_brute = 0
var/stored_burn = 0
if(istype(O))
to_chat(H, "<span class='warning'>You distribute the damaged tissue around your body, out of the way of your new pseudopod!</span>")
to_chat(H, SPAN_WARNING("You distribute the damaged tissue around your body, out of the way of your new pseudopod!"))
var/obj/item/organ/external/doomedStump = O
stored_brute = doomedStump.brute_dam
stored_burn = doomedStump.burn_dam
@@ -186,7 +186,7 @@
// Parent check
var/obj/item/organ/external/potential_parent = H.bodyparts_by_name[initial(limb_path.parent_organ)]
if(!istype(potential_parent))
to_chat(H, "<span class='danger'>You've lost the organ that you've been growing your new part on!</span>")
to_chat(H, SPAN_DANGER("You've lost the organ that you've been growing your new part on!"))
return // No rayman for you
// Grah this line will leave a "not used" warning, in spite of the fact that the new() proc WILL do the thing.
// Bothersome.
@@ -198,10 +198,10 @@
H.updatehealth()
H.UpdateDamageIcon()
H.adjust_nutrition(-SLIMEPERSON_HUNGERCOST)
H.visible_message("<span class='notice'>[H] finishes regrowing [H.p_their()] missing [new_limb]!</span>", "<span class='notice'>You finish regrowing your [limb_select]</span>")
H.visible_message(SPAN_NOTICE("[H] finishes regrowing [H.p_their()] missing [new_limb]!"), SPAN_NOTICE("You finish regrowing your [limb_select]"))
new_limb.add_limb_flags()
else
to_chat(H, "<span class='warning'>You need to hold still in order to regrow a limb!</span>")
to_chat(H, SPAN_WARNING("You need to hold still in order to regrow a limb!"))
#undef SLIMEPERSON_COLOR_SHIFT_TRIGGER
#undef SLIMEPERSON_ICON_UPDATE_PERIOD
@@ -97,24 +97,24 @@
/datum/action/innate/unathi_ignite/Activate()
var/mob/living/carbon/human/user = owner
if(world.time <= cooldown)
to_chat(user, "<span class='warning'>Your throat hurts too much to do it right now. Wait [round((cooldown - world.time) / 10)] seconds and try again.</span>")
to_chat(user, SPAN_WARNING("Your throat hurts too much to do it right now. Wait [round((cooldown - world.time) / 10)] seconds and try again."))
return
if(!welding_fuel_used || user.reagents.has_reagent("fuel", welding_fuel_used))
if(ismask(user.wear_mask))
var/obj/item/clothing/mask/worn_mask = user.wear_mask
if((user.head?.flags_cover & HEADCOVERSMOUTH) || (worn_mask.flags_cover & MASKCOVERSMOUTH) && !worn_mask.up)
to_chat(user, "<span class='warning'>Your mouth is covered.</span>")
to_chat(user, SPAN_WARNING("Your mouth is covered."))
return
var/obj/item/match/unathi/fire = new(user.loc, src)
if(user.put_in_hands(fire))
to_chat(user, "<span class='notice'>You ignite a small flame in your mouth.</span>")
to_chat(user, SPAN_NOTICE("You ignite a small flame in your mouth."))
user.reagents.remove_reagent("fuel", 50) //slightly high, but I'd rather avoid it being TOO spammable.
cooldown = world.time + cooldown_duration
else
qdel(fire)
to_chat(user, "<span class='warning'>You don't have any free hands.</span>")
to_chat(user, SPAN_WARNING("You don't have any free hands."))
else
to_chat(user, "<span class='warning'>You need to drink welding fuel first.</span>")
to_chat(user, SPAN_WARNING("You need to drink welding fuel first."))
/datum/species/unathi/handle_death(gibbed, mob/living/carbon/human/H)
H.stop_tail_wagging()
@@ -93,9 +93,9 @@
if(!H.put_in_any_hand_if_possible(internal_tank))
H.drop_item_to_ground(H.l_hand)
H.equip_or_collect(internal_tank, ITEM_SLOT_LEFT_HAND)
to_chat(H, "<span class='boldannounceooc'>Could not find an empty slot for internals! Please report this as a bug</span>")
to_chat(H, SPAN_BOLDANNOUNCEOOC("Could not find an empty slot for internals! Please report this as a bug"))
H.internal = internal_tank
to_chat(H, "<span class='notice'>You are now running on nitrogen internals from [internal_tank]. Your species finds oxygen toxic, so you must breathe nitrogen only.</span>")
to_chat(H, SPAN_NOTICE("You are now running on nitrogen internals from [internal_tank]. Your species finds oxygen toxic, so you must breathe nitrogen only."))
H.update_action_buttons_icon()
/datum/species/vox/on_species_gain(mob/living/carbon/human/H)
+24 -24
View File
@@ -147,8 +147,8 @@
action_icon_state = "spell_greytide"
var/recruiting = 0
selection_activated_message = "<span class='notice'>You start preparing a mindblowing monologue. <b>Left-click to cast at a target!</b></span>"
selection_deactivated_message = "<span class='notice'>You decide to save your brilliance for another day.</span>"
selection_activated_message = SPAN_NOTICE("You start preparing a mindblowing monologue. <b>Left-click to cast at a target!</b>")
selection_deactivated_message = SPAN_NOTICE("You decide to save your brilliance for another day.")
/datum/spell/recruit/create_new_targeting()
var/datum/spell_targeting/click/T = new()
@@ -159,11 +159,11 @@
/datum/spell/recruit/can_cast(mob/user = usr, charge_check = TRUE, show_message = FALSE)
if(length(SSticker.mode.greyshirts) >= 3)
if(show_message)
to_chat(user, "<span class='warning'>You have already recruited the maximum number of henchmen.</span>")
to_chat(user, SPAN_WARNING("You have already recruited the maximum number of henchmen."))
return FALSE
if(recruiting)
if(show_message)
to_chat(user, "<span class='danger'>You are already recruiting!</span>")
to_chat(user, SPAN_DANGER("You are already recruiting!"))
return FALSE
return ..()
@@ -173,45 +173,45 @@
/datum/spell/recruit/cast(list/targets,mob/living/user = usr)
var/mob/living/carbon/human/target = targets[1]
if(target.mind.assigned_role != "Assistant")
to_chat(user, "<span class='warning'>You can only recruit Assistants.</span>")
to_chat(user, SPAN_WARNING("You can only recruit Assistants."))
revert_cast(user)
return
recruiting = TRUE
to_chat(user, "<span class='danger'>This target is valid. You begin the recruiting process.</span>")
to_chat(target, "<span class='userdanger'>[user] focuses in concentration. Your head begins to ache.</span>")
to_chat(user, SPAN_DANGER("This target is valid. You begin the recruiting process."))
to_chat(target, SPAN_USERDANGER("[user] focuses in concentration. Your head begins to ache."))
for(var/progress = 0, progress <= 3, progress++)
switch(progress)
if(1)
to_chat(user, "<span class='notice'>You begin by introducing yourself and explaining what you're about.</span>")
user.visible_message("<span class='danger'>[user] introduces [user.p_themselves()] and explains [user.p_their()] plans.</span>")
to_chat(user, SPAN_NOTICE("You begin by introducing yourself and explaining what you're about."))
user.visible_message(SPAN_DANGER("[user] introduces [user.p_themselves()] and explains [user.p_their()] plans."))
if(2)
to_chat(user, "<span class='notice'>You begin the recruitment of [target].</span>")
user.visible_message("<span class='danger'>[user] leans over towards [target], whispering excitedly as [user.p_they()] give[user.p_s()] a speech.</span>")
to_chat(target, "<span class='danger'>You feel yourself agreeing with [user], and a surge of loyalty begins building.</span>")
to_chat(user, SPAN_NOTICE("You begin the recruitment of [target]."))
user.visible_message(SPAN_DANGER("[user] leans over towards [target], whispering excitedly as [user.p_they()] give[user.p_s()] a speech."))
to_chat(target, SPAN_DANGER("You feel yourself agreeing with [user], and a surge of loyalty begins building."))
target.Weaken(24 SECONDS)
sleep(20)
if(ismindshielded(target))
to_chat(user, "<span class='notice'>[target.p_they(TRUE)] are enslaved by Nanotrasen. You feel [target.p_their()] interest in your cause wane and disappear.</span>")
user.visible_message("<span class='danger'>[user] stops talking for a moment, then moves back away from [target].</span>")
to_chat(target, "<span class='danger'>Your mindshield bio-chip activates, protecting you from conversion.</span>")
to_chat(user, SPAN_NOTICE("[target.p_they(TRUE)] are enslaved by Nanotrasen. You feel [target.p_their()] interest in your cause wane and disappear."))
user.visible_message(SPAN_DANGER("[user] stops talking for a moment, then moves back away from [target]."))
to_chat(target, SPAN_DANGER("Your mindshield bio-chip activates, protecting you from conversion."))
return
if(3)
to_chat(user, "<span class='notice'>You begin filling out the application form with [target].</span>")
user.visible_message("<span class='danger'>[user] pulls out a pen and paper and begins filling an application form with [target].</span>")
to_chat(target, "<span class='danger'>You are being convinced by [user] to fill out an application form to become a henchman.</span>")//Ow the edge
to_chat(user, SPAN_NOTICE("You begin filling out the application form with [target]."))
user.visible_message(SPAN_DANGER("[user] pulls out a pen and paper and begins filling an application form with [target]."))
to_chat(target, SPAN_DANGER("You are being convinced by [user] to fill out an application form to become a henchman."))//Ow the edge
if(!do_mob(user, target, 100)) //around 30 seconds total for enthralling, 45 for someone with a mindshield bio-chip
to_chat(user, "<span class='danger'>The enrollment process has been interrupted - you have lost the attention of [target].</span>")
to_chat(target, "<span class='warning'>You move away and are no longer under the charm of [user]. The application form is null and void.</span>")
to_chat(user, SPAN_DANGER("The enrollment process has been interrupted - you have lost the attention of [target]."))
to_chat(target, SPAN_WARNING("You move away and are no longer under the charm of [user]. The application form is null and void."))
recruiting = FALSE
return
recruiting = FALSE
to_chat(user, "<span class='notice'>You have recruited <b>[target]</b> as your henchman!</span>")
to_chat(target, "<span class='deadsay'><b>You have decided to enroll as a henchman for [user]. You are now part of the feared 'Greyshirts'.</b></span>")
to_chat(target, "<span class='deadsay'><b>You must follow the orders of [user], and help [user.p_them()] succeed in [user.p_their()] dastardly schemes.</b></span>")
to_chat(target, "<span class='deadsay'>You may not harm other Greyshirt or [user]. However, you do not need to obey other Greyshirts.</span>")
to_chat(user, SPAN_NOTICE("You have recruited <b>[target]</b> as your henchman!"))
to_chat(target, SPAN_DEADSAY("<b>You have decided to enroll as a henchman for [user]. You are now part of the feared 'Greyshirts'.</b>"))
to_chat(target, SPAN_DEADSAY("<b>You must follow the orders of [user], and help [user.p_them()] succeed in [user.p_their()] dastardly schemes.</b>"))
to_chat(target, SPAN_DEADSAY("You may not harm other Greyshirt or [user]. However, you do not need to obey other Greyshirts."))
SSticker.mode.greyshirts += target.mind
target.set_species(/datum/species/human)
var/obj/item/organ/external/head/head_organ = target.get_organ("head")
+3 -3
View File
@@ -88,9 +88,9 @@
for(var/P in GLOB.dead_mob_list)
var/mob/M = P
if((M.client?.prefs.toggles2 & PREFTOGGLE_2_DEATHMESSAGE) && (isobserver(M) || M.stat == DEAD))
to_chat(M, "<span class='deadsay'><b>[mind.name]</b> has died at <b>[area_name]</b>. (<a href='byond://?src=[M.UID()];jump=\ref[T]'>JMP</a>)</span>")
to_chat(M, SPAN_DEADSAY("<b>[mind.name]</b> has died at <b>[area_name]</b>. (<a href='byond://?src=[M.UID()];jump=\ref[T]'>JMP</a>)"))
if(last_words)
to_chat(M, "<span class='deadsay'><b>[p_their(TRUE)] last words were:</b> \"[last_words]\"</span>")
to_chat(M, SPAN_DEADSAY("<b>[p_their(TRUE)] last words were:</b> \"[last_words]\""))
if(SSticker && SSticker.mode)
SSticker.mode.check_win()
@@ -101,7 +101,7 @@
return TRUE
/mob/living/proc/delayed_gib(inflate_at_end = FALSE)
visible_message("<span class='danger'><b>[src]</b> starts convulsing violently!</span>", "You feel as if your body is tearing itself apart!")
visible_message(SPAN_DANGER("<b>[src]</b> starts convulsing violently!"), "You feel as if your body is tearing itself apart!")
Weaken(30 SECONDS)
do_jitter_animation(1000, -1) // jitter until they are gibbed
addtimer(CALLBACK(src, inflate_at_end ? PROC_REF(quick_explode_gib) : PROC_REF(gib)), rand(2 SECONDS, 10 SECONDS))
+6 -6
View File
@@ -3,12 +3,12 @@
set category = "IC"
if(!(language in languages) && !isnull(language))
to_chat(src, "<span class='warning'>You don't seem to know how to speak [language].</span>")
to_chat(src, SPAN_WARNING("You don't seem to know how to speak [language]."))
return
if(language)
to_chat(src, "<span class='notice'>You will now speak [language] if you do not specify a language when speaking.</span>")
to_chat(src, SPAN_NOTICE("You will now speak [language] if you do not specify a language when speaking."))
else
to_chat(src, "<span class='notice'>You will now speak whatever your standard default language is if you do not specify one when speaking.</span>")
to_chat(src, SPAN_NOTICE("You will now speak whatever your standard default language is if you do not specify one when speaking."))
default_language = language
// Silicons can't neccessarily speak everything in their languages list
@@ -17,10 +17,10 @@
set category = "IC"
if(!(language in speech_synthesizer_langs) && !isnull(language))
to_chat(src, "<span class='warning'>You don't seem to know how to speak [language].</span>")
to_chat(src, SPAN_WARNING("You don't seem to know how to speak [language]."))
return
if(language)
to_chat(src, "<span class='notice'>You will now speak [language] if you do not specify a language when speaking.</span>")
to_chat(src, SPAN_NOTICE("You will now speak [language] if you do not specify a language when speaking."))
else
to_chat(src, "<span class='notice'>You will now speak whatever your standard default language is if you do not specify one when speaking.</span>")
to_chat(src, SPAN_NOTICE("You will now speak whatever your standard default language is if you do not specify one when speaking."))
default_language = language
+27 -27
View File
@@ -108,7 +108,7 @@
var/mob/living/L = M
if(L.pulledby && L.pulledby != src && L.restrained())
if(!(world.time % 5))
to_chat(src, "<span class='warning'>[L] is restrained, you cannot push past.</span>")
to_chat(src, SPAN_WARNING("[L] is restrained, you cannot push past."))
return TRUE
if(pulledby == L && (a_intent != INTENT_HELP || L.a_intent != INTENT_HELP)) //prevents boosting the person pulling you, but you can still move through them on help intent
@@ -119,7 +119,7 @@
var/mob/P = L.pulling
if(P.restrained())
if(!(world.time % 5))
to_chat(src, "<span class='warning'>[L] is restrained, you cannot push past.</span>")
to_chat(src, SPAN_WARNING("[L] is restrained, you cannot push past."))
return TRUE
if(moving_diagonally) //no mob swap during diagonal moves.
@@ -235,9 +235,9 @@
for(var/datum/surgery/dissect/D in surgeries)
dissection = D
if(dissection)
. += "<span class='notice'>You detect the next dissection step will be: [dissection.get_surgery_step()]</span>"
. += SPAN_NOTICE("You detect the next dissection step will be: [dissection.get_surgery_step()]")
if(surgery_container && !contains_xeno_organ)
. += "<span class='warning'>[src] looks like [p_they()] [p_have()] had [p_their()] organs dissected!</span>"
. += SPAN_WARNING("[src] looks like [p_they()] [p_have()] had [p_their()] organs dissected!")
/mob/living/item_interaction(mob/living/user, obj/item/I, list/modifiers)
@@ -334,24 +334,24 @@
/mob/living/proc/do_succumb(cancel_on_no_words)
if(stat == DEAD)
to_chat(src, "<span class='notice'>It's too late, you're already dead!</span>")
to_chat(src, SPAN_NOTICE("It's too late, you're already dead!"))
return
if(health >= HEALTH_THRESHOLD_SUCCUMB)
to_chat(src, "<span class='warning'>You are unable to succumb to death! This life continues!</span>")
to_chat(src, SPAN_WARNING("You are unable to succumb to death! This life continues!"))
return
last_words = null // In case we kept some from last time
var/final_words = tgui_input_text(src, "Do you have any last words?", "Goodnight, Sweet Prince", encode = FALSE)
if(isnull(final_words) && cancel_on_no_words)
to_chat(src, "<span class='notice'>You decide you aren't quite ready to die.</span>")
to_chat(src, SPAN_NOTICE("You decide you aren't quite ready to die."))
return
if(stat == DEAD)
return
if(health >= HEALTH_THRESHOLD_SUCCUMB)
to_chat(src, "<span class='warning'>You are unable to succumb to death! This life continues!</span>")
to_chat(src, SPAN_WARNING("You are unable to succumb to death! This life continues!"))
return
if(!isnull(final_words))
@@ -374,7 +374,7 @@
addtimer(CALLBACK(src, PROC_REF(death)), 1 SECONDS)
else
death()
to_chat(src, "<span class='notice'>You have given up life and succumbed to death.</span>")
to_chat(src, SPAN_NOTICE("You have given up life and succumbed to death."))
apply_status_effect(STATUS_EFFECT_RECENTLY_SUCCUMBED)
/mob/living/proc/InCritical()
@@ -386,7 +386,7 @@
/mob/living/acid_act(acidpwr, acid_volume)
take_organ_damage(acidpwr * min(1, acid_volume * 0.1))
to_chat(src, "<span class='userdanger'>The acid burns you!</span>")
to_chat(src, SPAN_USERDANGER("The acid burns you!"))
playsound(src, 'sound/weapons/sear.ogg', 50, TRUE)
return 1
@@ -775,16 +775,16 @@
if(GRAB_AGGRESSIVE)
if(prob(60))
visible_message("<span class='danger'>[src] has broken free of [G.assailant]'s grip!</span>")
visible_message(SPAN_DANGER("[src] has broken free of [G.assailant]'s grip!"))
qdel(G)
if(GRAB_NECK)
if(prob(5))
visible_message("<span class='danger'>[src] has broken free of [G.assailant]'s headlock!</span>")
visible_message(SPAN_DANGER("[src] has broken free of [G.assailant]'s headlock!"))
qdel(G)
if(resisting)
visible_message("<span class='danger'>[src] resists!</span>")
visible_message(SPAN_DANGER("[src] resists!"))
return 1
/mob/living/proc/resist_buckle()
@@ -812,7 +812,7 @@
buckled.unbuckle_mob(src, force)
/mob/living/proc/Exhaust()
to_chat(src, "<span class='notice'>You're too exhausted to keep going...</span>")
to_chat(src, SPAN_NOTICE("You're too exhausted to keep going..."))
Weaken(10 SECONDS)
/mob/living/proc/get_visible_name()
@@ -952,7 +952,7 @@
/mob/living/proc/attempt_harvest(obj/item/I, mob/user)
if(user.a_intent == INTENT_HARM && stat == DEAD && butcher_results && I.sharp) //can we butcher it?
to_chat(user, "<span class='notice'>You begin to butcher [src]...</span>")
to_chat(user, SPAN_NOTICE("You begin to butcher [src]..."))
playsound(loc, 'sound/weapons/slice.ogg', 50, TRUE, -1)
if(user.mind && HAS_TRAIT(user.mind, TRAIT_BUTCHER))
if(do_mob(user, src, 3 SECONDS) && Adjacent(I))
@@ -970,15 +970,15 @@
for(var/i = 1, i <= butcher_results[path], i++)
new path(loc)
butcher_results.Remove(path) //In case you want to have things like simple_animals drop their butcher results on gib, so it won't double up below.
visible_message("<span class='notice'>[user] butchers [src].</span>")
visible_message(SPAN_NOTICE("[user] butchers [src]."))
gib()
/mob/living/proc/can_use(atom/movable/M, be_close = FALSE)
if(HAS_TRAIT(src, TRAIT_HANDS_BLOCKED))
to_chat(src, "<span class='warning'>You can't do that right now!</span>")
to_chat(src, SPAN_WARNING("You can't do that right now!"))
return FALSE
if(be_close && !in_range(M, src))
to_chat(src, "<span class='warning'>You are too far away!</span>")
to_chat(src, SPAN_WARNING("You are too far away!"))
return FALSE
return TRUE
@@ -1029,10 +1029,10 @@
/mob/living/proc/can_use_guns(obj/item/gun/G)
if(G.trigger_guard != TRIGGER_GUARD_ALLOW_ALL && !IsAdvancedToolUser() && !issmall(src))
to_chat(src, "<span class='warning'>You don't have the dexterity to do this!</span>")
to_chat(src, SPAN_WARNING("You don't have the dexterity to do this!"))
return FALSE
if(G.trigger_guard == TRIGGER_GUARD_NONE)
to_chat(src, "<span class='warning'>This gun is only built to be fired by machines!</span>")
to_chat(src, SPAN_WARNING("This gun is only built to be fired by machines!"))
return FALSE
return 1
@@ -1053,7 +1053,7 @@
return
stop_pulling()
if(AM.pulledby)
visible_message("<span class='danger'>[src] has pulled [AM] from [AM.pulledby]'s grip.</span>")
visible_message(SPAN_DANGER("[src] has pulled [AM] from [AM.pulledby]'s grip."))
AM.pulledby.stop_pulling() //an object can't be pulled by two mobs at once.
pulling = AM
AM.pulledby = src
@@ -1187,7 +1187,7 @@
var/amount = tgui_input_number(usr, "Deal how much damage to mob? (Negative values here heal)", "Adjust [Text]loss", min_value = -10000, max_value = 10000)
if(QDELETED(src))
to_chat(usr, "<span class='notice'>Mob doesn't exist anymore.</span>")
to_chat(usr, SPAN_NOTICE("Mob doesn't exist anymore."))
return
switch(Text)
@@ -1214,7 +1214,7 @@
if("stamina")
adjustStaminaLoss(amount)
else
to_chat(usr, "<span class='notice'>You caused an error. DEBUG: Text:[Text] Mob:[src]</span>")
to_chat(usr, SPAN_NOTICE("You caused an error. DEBUG: Text:[Text] Mob:[src]"))
return
if(amount != 0)
@@ -1270,7 +1270,7 @@
C.KnockDown(3 SECONDS)
C.visible_message("<span class='danger'>[C] crashes into [src], knocking them both over!</span>", "<span class='userdanger'>You violently crash into [src]!</span>")
C.visible_message(SPAN_DANGER("[C] crashes into [src], knocking them both over!"), SPAN_USERDANGER("You violently crash into [src]!"))
/**
* Sets the mob's direction lock towards a given atom.
@@ -1281,7 +1281,7 @@
*/
/mob/living/proc/set_forced_look(atom/A, track = FALSE)
forced_look = track ? A.UID() : get_cardinal_dir(src, A)
to_chat(src, "<span class='userdanger'>You are now facing [track ? A : dir2text(forced_look)]. To cancel this, shift-middleclick yourself.</span>")
to_chat(src, SPAN_USERDANGER("You are now facing [track ? A : dir2text(forced_look)]. To cancel this, shift-middleclick yourself."))
throw_alert("direction_lock", /atom/movable/screen/alert/direction_lock)
/**
@@ -1295,7 +1295,7 @@
return
forced_look = null
if(!quiet)
to_chat(src, "<span class='notice'>Cancelled direction lock.</span>")
to_chat(src, SPAN_NOTICE("Cancelled direction lock."))
clear_alert("direction_lock")
/mob/living/setDir(new_dir)
@@ -1337,7 +1337,7 @@
notransform = TRUE
status_flags |= GODMODE
addtimer(CALLBACK(plush_outcome, TYPE_PROC_REF(/obj/item/toy/plushie, un_plushify)), curse_time)
to_chat(plushvictim, "<span class='warning'>You have been cursed into an enchanted plush doll! At least you can still move around a bit...</span>")
to_chat(plushvictim, SPAN_WARNING("You have been cursed into an enchanted plush doll! At least you can still move around a bit..."))
/mob/living/proc/sec_hud_set_ID()
return
+39 -39
View File
@@ -21,19 +21,19 @@
. = getarmor(def_zone, armor_type)
if(. == INFINITY)
to_chat(src, "<span class='userdanger'>[absorb_text]</span>")
to_chat(src, SPAN_USERDANGER("[absorb_text]"))
return
if(. <= 0)
return
if(!armor_penetration_flat && !armor_penetration_percentage)
to_chat(src, "<span class='userdanger'>[soften_text]</span>")
to_chat(src, SPAN_USERDANGER("[soften_text]"))
return
. = max(0, . * (100 - armor_penetration_percentage) / 100 - armor_penetration_flat)
if(.)
to_chat(src, "<span class='userdanger'>[soften_text]</span>")
to_chat(src, SPAN_USERDANGER("[soften_text]"))
else
to_chat(src, "<span class='userdanger'>[penetrated_text]</span>")
to_chat(src, SPAN_USERDANGER("[penetrated_text]"))
/// Returns armor value of our mob.
/// As u can see, mobs have no armor by default so we override this proc on mob subtypes if we add them any armor
@@ -68,8 +68,8 @@
return NONE
source.visible_message(
"<span class='danger'>[source] [pick("dodges","jumps out of the way of","evades","dives out of the way of")] [hitting_projectile]!</span>",
"<span class='userdanger'>You evade [hitting_projectile]!</span>",
SPAN_DANGER("[source] [pick("dodges","jumps out of the way of","evades","dives out of the way of")] [hitting_projectile]!"),
SPAN_USERDANGER("You evade [hitting_projectile]!"),
)
playsound(source, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, TRUE)
// Chance to dodge multiple shotgun spreads, but not likely. Mainly: Infinite loop prevention from admins setting it to 100 and doing something stupid.
@@ -98,17 +98,17 @@
take_overall_damage(0, shock_damage, TRUE, used_weapon = "Electrocution")
if(shock_damage > 200)
visible_message(
"<span class='danger'>[src] was arc flashed by \the [source]!</span>",
"<span class='userdanger'>\The [source] arc flashes and electrocutes you!</span>",
"<span class='italics'>You hear a lightning-like crack!</span>")
SPAN_DANGER("[src] was arc flashed by \the [source]!"),
SPAN_USERDANGER("\The [source] arc flashes and electrocutes you!"),
SPAN_ITALICS("You hear a lightning-like crack!"))
playsound(loc, 'sound/effects/eleczap.ogg', 50, TRUE, -1)
explosion(loc, -1, 1, 3, 3, cause = "Extreme Electrocution from [source]")
else
apply_damage(shock_damage, STAMINA)
visible_message(
"<span class='danger'>[src] was shocked by \the [source]!</span>", \
"<span class='userdanger'>You feel a powerful shock coursing through your body!</span>", \
"<span class='hear'>You hear a heavy electrical crack.</span>" \
SPAN_DANGER("[src] was shocked by \the [source]!"), \
SPAN_USERDANGER("You feel a powerful shock coursing through your body!"), \
SPAN_HEAR("You hear a heavy electrical crack.") \
)
return shock_damage
@@ -142,7 +142,7 @@
add_attack_logs(thrower, src, "Hit with thrown [thrown_item]", !thrown_item.throwforce ? ATKLOG_ALMOSTALL : null) // Only message if the person gets damages
if(nosell_hit)
return ..()
visible_message("<span class='danger'>[src] is hit by [thrown_item]!</span>", "<span class='userdanger'>You're hit by [thrown_item]!</span>")
visible_message(SPAN_DANGER("[src] is hit by [thrown_item]!"), SPAN_USERDANGER("You're hit by [thrown_item]!"))
if(!thrown_item.throwforce)
return
var/armor = run_armor_check(
@@ -165,7 +165,7 @@
/mob/living/mech_melee_attack(obj/mecha/M)
if(M.occupant.a_intent == INTENT_HARM)
if(HAS_TRAIT(M.occupant, TRAIT_PACIFISM))
to_chat(M.occupant, "<span class='warning'>You don't want to harm other living beings!</span>")
to_chat(M.occupant, SPAN_WARNING("You don't want to harm other living beings!"))
return
M.do_attack_animation(src)
if(M.damtype == "brute")
@@ -183,20 +183,20 @@
else
return
updatehealth("mech melee attack")
M.occupant_message("<span class='danger'>You hit [src].</span>")
visible_message("<span class='danger'>[M.name] hits [src]!</span>", "<span class='userdanger'>[M.name] hits you!</span>")
M.occupant_message(SPAN_DANGER("You hit [src]."))
visible_message(SPAN_DANGER("[M.name] hits [src]!"), SPAN_USERDANGER("[M.name] hits you!"))
add_attack_logs(M.occupant, src, "Mecha-meleed with [M]")
else
step_away(src,M)
add_attack_logs(M.occupant, src, "Mecha-pushed with [M]", ATKLOG_ALL)
M.occupant_message("<span class='warning'>You push [src] out of the way.</span>")
visible_message("<span class='warning'>[M] pushes [src] out of the way.</span>")
M.occupant_message(SPAN_WARNING("You push [src] out of the way."))
visible_message(SPAN_WARNING("[M] pushes [src] out of the way."))
//Mobs on Fire
/mob/living/proc/IgniteMob()
if(fire_stacks > 0 && !on_fire && !HAS_TRAIT(src, TRAIT_NOFIRE))
on_fire = TRUE
visible_message("<span class='warning'>[src] catches fire!</span>", "<span class='userdanger'>You're set on fire!</span>")
visible_message(SPAN_WARNING("[src] catches fire!"), SPAN_USERDANGER("You're set on fire!"))
set_light(light_range + 3,l_color = "#ED9200")
throw_alert("fire", /atom/movable/screen/alert/fire)
update_fire()
@@ -306,12 +306,12 @@
return FALSE
// This if-statement checks if the user is horizontal, and if the user either has no martial art, or has judo, drunk fighting or krav, in which case it should also fail
if(IS_HORIZONTAL(user) && (!user.mind.martial_art || !user.mind.martial_art.can_horizontally_grab))
to_chat(user, "<span class='warning'>You fail to get a good grip on [src]!</span>")
to_chat(user, SPAN_WARNING("You fail to get a good grip on [src]!"))
return
for(var/obj/item/grab/G in grabbed_by)
if(G.assailant == user)
to_chat(user, "<span class='notice'>You already grabbed [src].</span>")
to_chat(user, SPAN_NOTICE("You already grabbed [src]."))
return
add_attack_logs(user, src, "Grabbed passively", ATKLOG_ALL)
@@ -327,10 +327,10 @@
G.state = GRAB_AGGRESSIVE
G.last_upgrade = world.time
if(!supress_message)
visible_message("<span class='warning'>[user] has grabbed [src] from behind!</span>")
visible_message(SPAN_WARNING("[user] has grabbed [src] from behind!"))
else*///This is an example of how you can make special types of grabs simply based on direction.
if(!supress_message)
visible_message("<span class='warning'>[user] has grabbed [src] passively!</span>")
visible_message(SPAN_WARNING("[user] has grabbed [src] passively!"))
return G
@@ -345,13 +345,13 @@
return // can't attack while eating!
if(HAS_TRAIT(src, TRAIT_PACIFISM))
to_chat(M, "<span class='warning'>You don't want to hurt anyone!</span>")
to_chat(M, SPAN_WARNING("You don't want to hurt anyone!"))
return FALSE
if(stat != DEAD)
add_attack_logs(M, src, "Slime'd")
M.do_attack_animation(src)
visible_message("<span class='danger'>\The [M.name] glomps [src]!</span>", "<span class='userdanger'>\The [M.name] glomps you!</span>")
visible_message(SPAN_DANGER("\The [M.name] glomps [src]!"), SPAN_USERDANGER("\The [M.name] glomps you!"))
return TRUE
/mob/living/attack_animal(mob/living/simple_animal/M)
@@ -362,14 +362,14 @@
M.custom_emote(EMOTE_VISIBLE, "[M.friendly] [src].")
return FALSE
if(HAS_TRAIT(M, TRAIT_PACIFISM))
to_chat(M, "<span class='warning'>You don't want to hurt anyone!</span>")
to_chat(M, SPAN_WARNING("You don't want to hurt anyone!"))
return FALSE
if(M.attack_sound)
playsound(loc, M.attack_sound, 50, TRUE, 1)
M.do_attack_animation(src)
visible_message("<span class='danger'>\The [M] [M.attacktext] [src]!</span>", \
"<span class='userdanger'>\The [M] [M.attacktext] [src]!</span>")
visible_message(SPAN_DANGER("\The [M] [M.attacktext] [src]!"), \
SPAN_USERDANGER("\The [M] [M.attacktext] [src]!"))
add_attack_logs(M, src, "Animal attacked")
return TRUE
@@ -380,51 +380,51 @@
attacker.custom_emote(EMOTE_VISIBLE, "[attacker.friendly_verb_continuous] [src].")
return FALSE
if(HAS_TRAIT(attacker, TRAIT_PACIFISM))
to_chat(attacker, "<span class='warning'>You don't want to hurt anyone!</span>")
to_chat(attacker, SPAN_WARNING("You don't want to hurt anyone!"))
return FALSE
if(attacker.attack_sound)
playsound(loc, attacker.attack_sound, 50, TRUE, 1)
attacker.do_attack_animation(src)
visible_message("<span class='danger'>[attacker] [attacker.attack_verb_continuous] [src]!</span>", \
"<span class='userdanger'>[attacker] [attacker.attack_verb_continuous] [src]!</span>")
visible_message(SPAN_DANGER("[attacker] [attacker.attack_verb_continuous] [src]!"), \
SPAN_USERDANGER("[attacker] [attacker.attack_verb_continuous] [src]!"))
add_attack_logs(attacker, src, "Basicmob attacked")
return TRUE
/mob/living/attack_larva(mob/living/carbon/alien/larva/L)
switch(L.a_intent)
if(INTENT_HELP)
visible_message("<span class='notice'>[L.name] rubs its head against [src].</span>")
visible_message(SPAN_NOTICE("[L.name] rubs its head against [src]."))
return 0
else
if(HAS_TRAIT(L, TRAIT_PACIFISM))
to_chat(L, "<span class='warning'>You don't want to hurt anyone!</span>")
to_chat(L, SPAN_WARNING("You don't want to hurt anyone!"))
return
L.do_attack_animation(src)
if(prob(90))
add_attack_logs(L, src, "Larva attacked")
visible_message("<span class='danger'>[L.name] bites [src]!</span>", \
"<span class='userdanger'>[L.name] bites [src]!</span>")
visible_message(SPAN_DANGER("[L.name] bites [src]!"), \
SPAN_USERDANGER("[L.name] bites [src]!"))
playsound(loc, 'sound/weapons/bite.ogg', 50, TRUE, -1)
return 1
else
visible_message("<span class='danger'>[L.name] has attempted to bite [src]!</span>", \
"<span class='userdanger'>[L.name] has attempted to bite [src]!</span>")
visible_message(SPAN_DANGER("[L.name] has attempted to bite [src]!"), \
SPAN_USERDANGER("[L.name] has attempted to bite [src]!"))
return 0
/mob/living/attack_alien(mob/living/carbon/alien/humanoid/M)
switch(M.a_intent)
if(INTENT_HELP)
visible_message("<span class='notice'>[M] caresses [src] with its scythe like arm.</span>")
visible_message(SPAN_NOTICE("[M] caresses [src] with its scythe like arm."))
return FALSE
if(INTENT_GRAB)
grabbedby(M)
return FALSE
if(INTENT_HARM)
if(HAS_TRAIT(M, TRAIT_PACIFISM))
to_chat(M, "<span class='warning'>You don't want to hurt anyone!</span>")
to_chat(M, SPAN_WARNING("You don't want to hurt anyone!"))
return FALSE
M.do_attack_animation(src)
return TRUE
+4 -4
View File
@@ -198,7 +198,7 @@
message_param = "tries to point at %t with a leg."
else
// nugget
message_param = "<span class='userdanger'>bumps [user.p_their()] head on the ground</span> trying to motion towards %t."
message_param = "[SPAN_USERDANGER("bumps [user.p_their()] head on the ground")] trying to motion towards %t."
return ..()
@@ -391,7 +391,7 @@
/datum/emote/living/custom/proc/check_invalid(mob/user, input)
var/static/regex/stop_bad_mime = regex(@"says|exclaims|yells|asks")
if(stop_bad_mime.Find(input, 1, 1))
to_chat(user, "<span class='danger'>Invalid emote.</span>")
to_chat(user, SPAN_DANGER("Invalid emote."))
return TRUE
return FALSE
@@ -402,7 +402,7 @@
if(QDELETED(user))
return FALSE
else if(check_mute(user?.client?.ckey, MUTE_IC))
to_chat(user, "<span class='boldwarning'>You cannot send IC messages (muted).</span>")
to_chat(user, SPAN_BOLDWARNING("You cannot send IC messages (muted)."))
return FALSE
else if(!params)
custom_emote = tgui_input_text(user, "Choose an emote to display.", "Custom Emote")
@@ -414,7 +414,7 @@
if("Hearable")
custom_emote_type = EMOTE_AUDIBLE
else
to_chat(user,"<span class='warning'>Unable to use this emote, must be either hearable or visible.</span>")
to_chat(user,SPAN_WARNING("Unable to use this emote, must be either hearable or visible."))
return
else
custom_emote = params

Some files were not shown because too many files have changed in this diff Show More