mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-27 05:57:24 +01:00
Convert most spans to defines (#31080)
* spanish? * aaaagain * keep maptext * Update robot_items.dm * Update span_defines.dm * compiles * Update silicon_mob.dm * compile
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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!"))
|
||||
..()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
. = ..()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'>"
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user