mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-10 01:34:01 +00:00
Nobody expects the span inquisition: replaces most <span>s with macros (#86798)
## About The Pull Request 123 changed files and multiple crashes after writing broken regex, I replaced most remains of direct spans with macros. This cleans up the code and makes it easier to work with in general, see justification for the original PR. I also fixed a bunch of broken and/or unclosed spans here too. I intentionally avoided replacing spans with multiple classes (in most cases) and spans in the middle of strings as it would impact readability (in my opinion at least) and could be done later if required. ## Why It's Good For The Game Cleaner code, actually using our macros, fixes borked HTML in some places. See original PR. ## Changelog Nothing player-facing
This commit is contained in:
@@ -48,9 +48,12 @@
|
||||
#define span_drone(str) ("<span class='drone'>" + str + "</span>")
|
||||
#define span_engradio(str) ("<span class='engradio'>" + str + "</span>")
|
||||
#define span_extremelybig(str) ("<span class='extremelybig'>" + str + "</span>")
|
||||
#define span_emote(str) ("<span class='emote'>" + str + "</span>")
|
||||
#define span_enteradio(str) ("<span class='enteradio'>" + str + "</span>")
|
||||
#define span_game(str) ("<span class='game'>" + str + "</span>")
|
||||
#define span_game_say(str) ("<span class='game say'>" + str + "</span>")
|
||||
#define span_ghostalert(str) ("<span class='ghostalert'>" + str + "</span>")
|
||||
#define span_good(str) ("<span class='good'>" + str + "</span>")
|
||||
#define span_green(str) ("<span class='green'>" + str + "</span>")
|
||||
#define span_greenannounce(str) ("<span class='greenannounce'>" + str + "</span>")
|
||||
#define span_greenteamradio(str) ("<span class='greenteamradio'>" + str + "</span>")
|
||||
@@ -70,6 +73,7 @@
|
||||
#define span_info(str) ("<span class='info'>" + str + "</span>")
|
||||
#define span_infoplain(str) ("<span class='infoplain'>" + str + "</span>")
|
||||
#define span_interface(str) ("<span class='interface'>" + str + "</span>")
|
||||
#define span_italics(str) ("<span class='italics'>" + str + "</span>")
|
||||
#define span_linkify(str) ("<span class='linkify'>" + str + "</span>")
|
||||
#define span_looc(str) ("<span class='looc'>" + str + "</span>")
|
||||
#define span_major_announcement_text(str) ("<span class='major_announcement_text'>" + str + "</span>")
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
if(!SSticker.IsRoundInProgress() || QDELETED(character))
|
||||
return
|
||||
var/area/player_area = get_area(character)
|
||||
deadchat_broadcast("<span class='game'> has arrived at the station at <span class='name'>[player_area.name]</span>.</span>", "<span class='game'><span class='name'>[character.real_name]</span> ([rank])</span>", follow_target = character, message_type=DEADCHAT_ARRIVALRATTLE)
|
||||
deadchat_broadcast(span_game(" has arrived at the station at [span_name(player_area.name)]."), span_game("[span_name(character.real_name)] ([rank])"), follow_target = character, message_type=DEADCHAT_ARRIVALRATTLE)
|
||||
if(!character.mind)
|
||||
return
|
||||
if(!GLOB.announcement_systems.len)
|
||||
|
||||
@@ -571,7 +571,7 @@ GLOBAL_LIST_INIT(achievements_unlocked, list())
|
||||
/datum/controller/subsystem/ticker/proc/medal_report()
|
||||
if(GLOB.commendations.len)
|
||||
var/list/parts = list()
|
||||
parts += "<span class='header'>Medal Commendations:</span>"
|
||||
parts += span_header("Medal Commendations:")
|
||||
for (var/com in GLOB.commendations)
|
||||
parts += com
|
||||
return "<div class='panel stationborder'>[parts.Join("<br>")]</div>"
|
||||
@@ -660,7 +660,7 @@ GLOBAL_LIST_INIT(achievements_unlocked, list())
|
||||
var/datum/action/report/R = new
|
||||
C.player_details.player_actions += R
|
||||
R.Grant(C.mob)
|
||||
to_chat(C,"<span class='infoplain'><a href='?src=[REF(R)];report=1'>Show roundend report again</a></span>")
|
||||
to_chat(C,span_infoplain("<a href='?src=[REF(R)];report=1'>Show roundend report again</a>"))
|
||||
|
||||
/datum/action/report
|
||||
name = "Show roundend report"
|
||||
|
||||
@@ -680,7 +680,7 @@ SUBSYSTEM_DEF(job)
|
||||
job_debug("RJCT: Player rejected, Player: [player]")
|
||||
unassigned -= player
|
||||
if(!run_divide_occupation_pure)
|
||||
to_chat(player, "<span class='infoplain'><b>You have failed to qualify for any job you desired.</b></span>")
|
||||
to_chat(player, span_infoplain("<b>You have failed to qualify for any job you desired.</b>"))
|
||||
player.ready = PLAYER_NOT_READY
|
||||
|
||||
|
||||
|
||||
@@ -57,11 +57,11 @@
|
||||
shuffle_inplace(pools)
|
||||
found_bloodpool = pick(pools)
|
||||
if(found_bloodpool)
|
||||
owner.visible_message("<span class='danger'>[owner] sinks into the blood...</span>")
|
||||
owner.visible_message(span_danger("[owner] sinks into the blood..."))
|
||||
playsound(owner_turf, 'sound/effects/magic/enter_blood.ogg', 100, TRUE, -1)
|
||||
owner.forceMove(get_turf(found_bloodpool))
|
||||
playsound(get_turf(owner), 'sound/effects/magic/exit_blood.ogg', 100, TRUE, -1)
|
||||
owner.visible_message("<span class='danger'>And springs back out!</span>")
|
||||
owner.visible_message(span_danger("And springs back out!"))
|
||||
SEND_SIGNAL(owner, COMSIG_BLOOD_WARP)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
@@ -43,4 +43,4 @@
|
||||
ANNOUNCER_SHUTTLERECALLED = 'sound/announcer/intern/shuttlerecalled.ogg',
|
||||
ANNOUNCER_SPANOMALIES = 'sound/announcer/intern/spanomalies.ogg')
|
||||
|
||||
custom_alert_message = "<span class='alert'>Please stand by for an important message from our new intern.</span><br>"
|
||||
custom_alert_message = span_alert("Please stand by for an important message from our new intern.<br>")
|
||||
|
||||
@@ -159,15 +159,15 @@
|
||||
/datum/component/religious_tool/proc/perform_rite(mob/living/user, path)
|
||||
if(user.mind.holy_role < HOLY_ROLE_PRIEST)
|
||||
if(user.mind.holy_role == HOLY_ROLE_DEACON)
|
||||
to_chat(user, "<span class='warning'>You are merely a deacon of [GLOB.deity], and therefore cannot perform rites.")
|
||||
to_chat(user, span_warning("You are merely a deacon of [GLOB.deity], and therefore cannot perform rites."))
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You are not holy, and therefore cannot perform rites.")
|
||||
to_chat(user, span_warning("You are not holy, and therefore cannot perform rites."))
|
||||
return
|
||||
if(rite_types_allowlist && !is_path_in_list(path, rite_types_allowlist))
|
||||
to_chat(user, span_warning("This cannot perform that kind of rite."))
|
||||
return
|
||||
if(performing_rite)
|
||||
to_chat(user, "<span class='notice'>There is a rite currently being performed here already.")
|
||||
to_chat(user, span_notice("There is a rite currently being performed here already."))
|
||||
return
|
||||
if(!user.can_perform_action(parent, FORBID_TELEKINESIS_REACH))
|
||||
to_chat(user,span_warning("You are not close enough to perform the rite."))
|
||||
|
||||
@@ -15,19 +15,19 @@
|
||||
|
||||
if(!keycheck(rider))
|
||||
if(z_move_flags & ZMOVE_FEEDBACK)
|
||||
to_chat(rider, "<span class='warning'>[movable_parent] has no key inserted!</span>")
|
||||
to_chat(rider, span_warning("[movable_parent] has no key inserted!"))
|
||||
return COMPONENT_RIDDEN_STOP_Z_MOVE
|
||||
if(HAS_TRAIT(rider, TRAIT_INCAPACITATED))
|
||||
if(z_move_flags & ZMOVE_FEEDBACK)
|
||||
to_chat(rider, "<span class='warning'>You cannot operate [movable_parent] right now!</span>")
|
||||
to_chat(rider, span_warning("You cannot operate [movable_parent] right now!"))
|
||||
return COMPONENT_RIDDEN_STOP_Z_MOVE
|
||||
if(ride_check_flags & RIDER_NEEDS_LEGS && HAS_TRAIT(rider, TRAIT_FLOORED))
|
||||
if(z_move_flags & ZMOVE_FEEDBACK)
|
||||
to_chat(rider, "<span class='warning'>You can't seem to manage that while unable to stand up enough to move [movable_parent]...</span>")
|
||||
to_chat(rider, span_warning("You can't seem to manage that while unable to stand up enough to move [movable_parent]..."))
|
||||
return COMPONENT_RIDDEN_STOP_Z_MOVE
|
||||
if(ride_check_flags & RIDER_NEEDS_ARMS && HAS_TRAIT(rider, TRAIT_HANDS_BLOCKED))
|
||||
if(z_move_flags & ZMOVE_FEEDBACK)
|
||||
to_chat(rider, "<span class='warning'>You can't seem to hold onto [movable_parent] to move it...</span>")
|
||||
to_chat(rider, span_warning("You can't seem to hold onto [movable_parent] to move it..."))
|
||||
return COMPONENT_RIDDEN_STOP_Z_MOVE
|
||||
|
||||
return COMPONENT_RIDDEN_ALLOW_Z_MOVE
|
||||
|
||||
@@ -243,8 +243,8 @@
|
||||
return
|
||||
if(SEND_GLOBAL_SIGNAL(COMSIG_GLOB_TRAPDOOR_LINK, src) & LINKED_UP)
|
||||
playsound(assembly_turf, 'sound/machines/chime.ogg', 50, TRUE)
|
||||
assembly_turf.visible_message("<span class='notice'>[src] has linked up to a nearby trapdoor! \
|
||||
You may now use it to check where the trapdoor is... be careful!</span>", vision_distance = SAMETILE_MESSAGE_RANGE)
|
||||
assembly_turf.visible_message(span_notice("[src] has linked up to a nearby trapdoor! \
|
||||
You may now use it to check where the trapdoor is... be careful!"), vision_distance = SAMETILE_MESSAGE_RANGE)
|
||||
else
|
||||
playsound(assembly_turf, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
|
||||
assembly_turf.visible_message(span_warning("[src] has failed to find a trapdoor nearby to link to."), vision_distance = SAMETILE_MESSAGE_RANGE)
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
if((!istype(H.dna.species, /datum/species/skeleton)) && (!istype(H.dna.species, /datum/species/golem)) && (!istype(H.dna.species, /datum/species/android)) && (!istype(H.dna.species, /datum/species/jelly)))
|
||||
C.adjustStaminaLoss(18) //boneless humanoids don't lose the will to live
|
||||
to_chat(C, "<font color='red' size='4'><B>DOOT</B></font>")
|
||||
to_chat(C, "<span class='robot'><font size='4'>You're feeling more bony.</font></span>")
|
||||
to_chat(C, span_robot("<font size='4'>You're feeling more bony.</font>"))
|
||||
INVOKE_ASYNC(src, PROC_REF(spectral_change), H)
|
||||
|
||||
else //the sound will spook monkeys.
|
||||
|
||||
@@ -125,22 +125,22 @@
|
||||
runechat_flags = EMOTE_MESSAGE,
|
||||
)
|
||||
else if(is_important)
|
||||
to_chat(viewer, "<span class='emote'><b>[user]</b> [msg]</span>")
|
||||
to_chat(viewer, span_emote("<b>[user]</b> [msg]"))
|
||||
else if(is_audible && is_visual)
|
||||
viewer.show_message(
|
||||
"<span class='emote'><b>[user]</b> [msg]</span>", MSG_AUDIBLE,
|
||||
"<span class='emote'>You see how <b>[user]</b> [msg]</span>", MSG_VISUAL,
|
||||
span_emote("<b>[user]</b> [msg]"), MSG_AUDIBLE,
|
||||
span_emote("You see how <b>[user]</b> [msg]"), MSG_VISUAL,
|
||||
)
|
||||
else if(is_audible)
|
||||
viewer.show_message("<span class='emote'><b>[user]</b> [msg]</span>", MSG_AUDIBLE)
|
||||
viewer.show_message(span_emote("<b>[user]</b> [msg]"), MSG_AUDIBLE)
|
||||
else if(is_visual)
|
||||
viewer.show_message("<span class='emote'><b>[user]</b> [msg]</span>", MSG_VISUAL)
|
||||
viewer.show_message(span_emote("<b>[user]</b> [msg]"), MSG_VISUAL)
|
||||
return // Early exit so no dchat message
|
||||
|
||||
// The emote has some important information, and should always be shown to the user
|
||||
else if(is_important)
|
||||
for(var/mob/viewer as anything in viewers(user))
|
||||
to_chat(viewer, "<span class='emote'><b>[user]</b> [msg]</span>")
|
||||
to_chat(viewer, span_emote("<b>[user]</b> [msg]"))
|
||||
if(user.runechat_prefs_check(viewer, EMOTE_MESSAGE))
|
||||
viewer.create_chat_message(
|
||||
speaker = user,
|
||||
@@ -152,7 +152,7 @@
|
||||
else if(is_visual && is_audible)
|
||||
user.audible_message(
|
||||
message = msg,
|
||||
deaf_message = "<span class='emote'>You see how <b>[user]</b> [msg]</span>",
|
||||
deaf_message = span_emote("You see how <b>[user]</b> [msg]"),
|
||||
self_message = msg,
|
||||
audible_message_flags = EMOTE_MESSAGE|ALWAYS_SHOW_SELF_MESSAGE,
|
||||
)
|
||||
@@ -180,7 +180,7 @@
|
||||
continue
|
||||
if(!(get_chat_toggles(ghost.client) & CHAT_GHOSTSIGHT))
|
||||
continue
|
||||
to_chat(ghost, "<span class='emote'>[FOLLOW_LINK(ghost, user)] [dchatmsg]</span>")
|
||||
to_chat(ghost, span_emote("[FOLLOW_LINK(ghost, user)] [dchatmsg]"))
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -89,4 +89,4 @@
|
||||
msg += "Protect Assistant Role From Traitor: [CONFIG_GET(flag/protect_assistant_from_antagonist)]"
|
||||
msg += "Enforce Human Authority: [CONFIG_GET(flag/enforce_human_authority)]"
|
||||
msg += "Allow Latejoin Antagonists: [CONFIG_GET(flag/allow_latejoin_antagonists)]"
|
||||
to_chat(src, "<span class='infoplain'>[msg.Join("<br>")]</span>")
|
||||
to_chat(src, span_infoplain(msg.Join("<br>")))
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
/// description of weather
|
||||
var/desc = "Heavy gusts of wind blanket the area, periodically knocking down anyone caught in the open."
|
||||
/// The message displayed in chat to foreshadow the weather's beginning
|
||||
var/telegraph_message = "<span class='warning'>The wind begins to pick up.</span>"
|
||||
var/telegraph_message = span_warning("The wind begins to pick up.")
|
||||
/// In deciseconds, how long from the beginning of the telegraph until the weather begins
|
||||
var/telegraph_duration = 300
|
||||
/// The sound file played to everyone on an affected z-level
|
||||
@@ -22,7 +22,7 @@
|
||||
var/telegraph_overlay
|
||||
|
||||
/// Displayed in chat once the weather begins in earnest
|
||||
var/weather_message = "<span class='userdanger'>The wind begins to blow ferociously!</span>"
|
||||
var/weather_message = span_userdanger("The wind begins to blow ferociously!")
|
||||
/// In deciseconds, how long the weather lasts once it begins
|
||||
var/weather_duration = 1200
|
||||
/// See above - this is the lowest possible duration
|
||||
@@ -37,7 +37,7 @@
|
||||
var/weather_color = null
|
||||
|
||||
/// Displayed once the weather is over
|
||||
var/end_message = "<span class='danger'>The wind relents its assault.</span>"
|
||||
var/end_message = span_danger("The wind relents its assault.")
|
||||
/// In deciseconds, how long the "wind-down" graphic will appear before vanishing entirely
|
||||
var/end_duration = 300
|
||||
/// Sound that plays while weather is ending
|
||||
|
||||
@@ -3,16 +3,16 @@
|
||||
name = "ash storm"
|
||||
desc = "An intense atmospheric storm lifts ash off of the planet's surface and billows it down across the area, dealing intense fire damage to the unprotected."
|
||||
|
||||
telegraph_message = "<span class='boldwarning'>An eerie moan rises on the wind. Sheets of burning ash blacken the horizon. Seek shelter.</span>"
|
||||
telegraph_message = span_boldwarning("An eerie moan rises on the wind. Sheets of burning ash blacken the horizon. Seek shelter.")
|
||||
telegraph_duration = 300
|
||||
telegraph_overlay = "light_ash"
|
||||
|
||||
weather_message = "<span class='userdanger'><i>Smoldering clouds of scorching ash billow down around you! Get inside!</i></span>"
|
||||
weather_message = span_userdanger("<i>Smoldering clouds of scorching ash billow down around you! Get inside!</i>")
|
||||
weather_duration_lower = 600
|
||||
weather_duration_upper = 1200
|
||||
weather_overlay = "ash_storm"
|
||||
|
||||
end_message = "<span class='boldannounce'>The shrieking wind whips away the last of the ash and falls to its usual murmur. It should be safe to go outside now.</span>"
|
||||
end_message = span_boldannounce("The shrieking wind whips away the last of the ash and falls to its usual murmur. It should be safe to go outside now.")
|
||||
end_duration = 300
|
||||
end_overlay = "light_ash"
|
||||
|
||||
@@ -81,10 +81,10 @@
|
||||
name = "emberfall"
|
||||
desc = "A passing ash storm blankets the area in harmless embers."
|
||||
|
||||
weather_message = "<span class='notice'>Gentle embers waft down around you like grotesque snow. The storm seems to have passed you by...</span>"
|
||||
weather_message = span_notice("Gentle embers waft down around you like grotesque snow. The storm seems to have passed you by...")
|
||||
weather_overlay = "light_ash"
|
||||
|
||||
end_message = "<span class='notice'>The emberfall slows, stops. Another layer of hardened soot to the basalt beneath your feet.</span>"
|
||||
end_message = span_notice("The emberfall slows, stops. Another layer of hardened soot to the basalt beneath your feet.")
|
||||
end_sound = null
|
||||
|
||||
aesthetic = TRUE
|
||||
|
||||
@@ -3,15 +3,15 @@
|
||||
name = "the floor is lava"
|
||||
desc = "The ground turns into surprisingly cool lava, lightly damaging anything on the floor."
|
||||
|
||||
telegraph_message = "<span class='warning'>You feel the ground beneath you getting hot. Waves of heat distort the air.</span>"
|
||||
telegraph_message = span_warning("You feel the ground beneath you getting hot. Waves of heat distort the air.")
|
||||
telegraph_duration = 150
|
||||
|
||||
weather_message = "<span class='userdanger'>The floor is lava! Get on top of something!</span>"
|
||||
weather_message = span_userdanger("The floor is lava! Get on top of something!")
|
||||
weather_duration_lower = 300
|
||||
weather_duration_upper = 600
|
||||
weather_overlay = "lava"
|
||||
|
||||
end_message = "<span class='danger'>The ground cools and returns to its usual form.</span>"
|
||||
end_message = span_danger("The ground cools and returns to its usual form.")
|
||||
end_duration = 0
|
||||
|
||||
area_type = /area
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
desc = "A cloud of intense radiation passes through the area dealing rad damage to those who are unprotected."
|
||||
|
||||
telegraph_duration = 400
|
||||
telegraph_message = "<span class='danger'>The air begins to grow warm.</span>"
|
||||
telegraph_message = span_danger("The air begins to grow warm.")
|
||||
|
||||
weather_message = "<span class='userdanger'><i>You feel waves of heat wash over you! Find shelter!</i></span>"
|
||||
weather_message = span_userdanger("<i>You feel waves of heat wash over you! Find shelter!</i>")
|
||||
weather_overlay = "ash_storm"
|
||||
weather_duration_lower = 600
|
||||
weather_duration_upper = 1500
|
||||
@@ -14,7 +14,7 @@
|
||||
weather_sound = 'sound/announcer/alarm/bloblarm.ogg'
|
||||
|
||||
end_duration = 100
|
||||
end_message = "<span class='notice'>The air seems to be cooling off again.</span>"
|
||||
end_message = span_notice("The air seems to be cooling off again.")
|
||||
|
||||
area_type = /area
|
||||
protected_areas = list(/area/station/maintenance, /area/station/ai_monitored/turret_protected/ai_upload, /area/station/ai_monitored/turret_protected/ai_upload_foyer,
|
||||
|
||||
@@ -3,18 +3,18 @@
|
||||
desc = "Harsh snowstorms roam the topside of this arctic planet, burying any area unfortunate enough to be in its path."
|
||||
probability = 90
|
||||
|
||||
telegraph_message = "<span class='warning'>Drifting particles of snow begin to dust the surrounding area..</span>"
|
||||
telegraph_message = span_warning("Drifting particles of snow begin to dust the surrounding area..")
|
||||
telegraph_duration = 300
|
||||
telegraph_overlay = "light_snow"
|
||||
|
||||
weather_message = "<span class='userdanger'><i>Harsh winds pick up as dense snow begins to fall from the sky! Seek shelter!</i></span>"
|
||||
weather_message = span_userdanger("<i>Harsh winds pick up as dense snow begins to fall from the sky! Seek shelter!</i>")
|
||||
weather_overlay = "snow_storm"
|
||||
weather_duration_lower = 600
|
||||
weather_duration_upper = 1500
|
||||
use_glow = FALSE
|
||||
|
||||
end_duration = 100
|
||||
end_message = "<span class='boldannounce'>The snowfall dies down, it should be safe to go outside again.</span>"
|
||||
end_message = span_boldannounce("The snowfall dies down, it should be safe to go outside again.")
|
||||
|
||||
area_type = /area
|
||||
protect_indoors = TRUE
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
/obj/machinery/computer/arcade/proc/prizevend(mob/living/user, prizes = 1)
|
||||
SEND_SIGNAL(src, COMSIG_ARCADE_PRIZEVEND, user, prizes)
|
||||
if(user.mind?.get_skill_level(/datum/skill/gaming) >= SKILL_LEVEL_LEGENDARY && HAS_TRAIT(user, TRAIT_GAMERGOD))
|
||||
visible_message("<span class='notice'>[user] inputs an intense cheat code!",\
|
||||
visible_message(span_notice("[user] inputs an intense cheat code!"),\
|
||||
span_notice("You hear a flurry of buttons being pressed."))
|
||||
say("CODE ACTIVATED: EXTRA PRIZES.")
|
||||
prizes *= 2
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
text = "Oh no! The engine has broken down! \
|
||||
You can repair it with an engine part, or you \
|
||||
can make repairs for 3 days."
|
||||
emag_message = "<span class='warning'>You hear some large object lurch to a halt right behind you! When you go to look, nothing's there...</span>"
|
||||
emag_message = span_warning("You hear some large object lurch to a halt right behind you! When you go to look, nothing's there...")
|
||||
emag_sound = 'sound/effects/creak/creak1.ogg'
|
||||
weight = 2
|
||||
event_responses = list()
|
||||
|
||||
@@ -1347,7 +1347,7 @@
|
||||
// However, if this is the case, we can't make a complete injector and
|
||||
// this catches that edge case
|
||||
if(!buffer_slot["name"] || !buffer_slot["UF"] || !buffer_slot["blood_type"])
|
||||
to_chat(usr,"<span class='warning'>Genetic data corrupted, unable to create injector.</span>")
|
||||
to_chat(usr,span_warning("Genetic data corrupted, unable to create injector."))
|
||||
return
|
||||
|
||||
I = new /obj/item/dnainjector/timed(loc)
|
||||
@@ -1731,7 +1731,7 @@
|
||||
// However, if this is the case, we can't make a complete injector and
|
||||
// this catches that edge case
|
||||
if(!buffer_slot["UF"])
|
||||
to_chat(usr,"<span class='warning'>Genetic data corrupted, unable to apply genetic data.</span>")
|
||||
to_chat(usr,span_warning("Genetic data corrupted, unable to apply genetic data."))
|
||||
return FALSE
|
||||
COOLDOWN_START(src, enzyme_copy_timer, ENZYME_COPY_BASE_COOLDOWN)
|
||||
scanner_occupant.dna.unique_features = buffer_slot["UF"]
|
||||
|
||||
@@ -114,13 +114,13 @@
|
||||
interrupt_interrogation()
|
||||
return
|
||||
if(SPT_PROB(5, seconds_per_tick) && !(C.get_eye_protection() > 0))
|
||||
to_chat(C, "<span class='hypnophrase'>[pick(\
|
||||
to_chat(C, span_hypnophrase(pick(\
|
||||
"...blue... red... green... blue, red, green, blueredgreen[span_small("blueredgreen")]",\
|
||||
"...pretty colors...",\
|
||||
"...you keep hearing words, but you can't seem to understand them...",\
|
||||
"...so peaceful...",\
|
||||
"...an annoying buzz in your ears..."\
|
||||
)]</span>")
|
||||
)))
|
||||
|
||||
use_energy(active_power_usage * seconds_per_tick)
|
||||
|
||||
|
||||
@@ -810,7 +810,7 @@
|
||||
if(registered_account.replaceable)
|
||||
. += span_info("Alt-Right-Click the ID to change the linked bank account.")
|
||||
if(registered_account.civilian_bounty)
|
||||
. += "<span class='info'><b>There is an active civilian bounty.</b>"
|
||||
. += span_info("<b>There is an active civilian bounty.</b>")
|
||||
. += span_info("<i>[registered_account.bounty_text()]</i>")
|
||||
. += span_info("Quantity: [registered_account.bounty_num()]")
|
||||
. += span_info("Reward: [registered_account.bounty_value()]")
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
|
||||
/obj/item/chainsaw/doomslayer
|
||||
name = "THE GREAT COMMUNICATOR"
|
||||
desc = "<span class='warning'>VRRRRRRR!!!</span>"
|
||||
desc = span_warning("VRRRRRRR!!!")
|
||||
armour_penetration = 100
|
||||
force_on = 30
|
||||
|
||||
|
||||
@@ -69,8 +69,8 @@
|
||||
if(!response_timer_id)
|
||||
return
|
||||
var/turf/T = get_turf(src)
|
||||
T.visible_message("<span class='warning'>The proposed changes disappear \
|
||||
from [src]; it looks like they've been rejected.</span>")
|
||||
T.visible_message(span_warning("The proposed changes disappear \
|
||||
from [src]; it looks like they've been rejected."))
|
||||
var/m = "[key_name(user)] has rejected the proposed station name."
|
||||
|
||||
message_admins(m)
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
return
|
||||
|
||||
if(ispodperson(M) && !advanced)
|
||||
to_chat(user, "<span class='info'>[M]'s biological structure is too complex for the health analyzer.")
|
||||
to_chat(user, span_info("[M]'s biological structure is too complex for the health analyzer."))
|
||||
return
|
||||
|
||||
user.visible_message(span_notice("[user] analyzes [M]'s vitals."))
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
/obj/item/food/pancakes/raw/examine(mob/user)
|
||||
. = ..()
|
||||
if(name == initial(name))
|
||||
. += "<span class='notice'>You can modify the pancake by adding <b>blueberries</b> or <b>chocolate</b> before finishing the griddle."
|
||||
. += span_notice("You can modify the pancake by adding <b>blueberries</b> or <b>chocolate</b> before finishing the griddle.")
|
||||
|
||||
/obj/item/food/pancakes/blueberry
|
||||
name = "blueberry pancake"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
name = "old manual"
|
||||
martial_name = "close quarters combat"
|
||||
desc = "A small, black manual. There are drawn instructions of tactical hand-to-hand combat."
|
||||
greet = "<span class='boldannounce'>You've mastered the basics of CQC.</span>"
|
||||
greet = span_boldannounce("You've mastered the basics of CQC.")
|
||||
icon_state = "cqcmanual"
|
||||
remarks = list(
|
||||
"Kick... Slam...",
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
name = "frayed scroll"
|
||||
martial_name = "plasma fist"
|
||||
desc = "An aged and frayed scrap of paper written in shifting runes. There are hand-drawn illustrations of pugilism."
|
||||
greet = "<span class='boldannounce'>You have learned the ancient martial art of Plasma Fist. Your combos are extremely hard to pull off, but include some of the most deadly moves ever seen including \
|
||||
the plasma fist, which when pulled off will make someone violently explode.</span>"
|
||||
greet = span_boldannounce("You have learned the ancient martial art of Plasma Fist. Your combos are extremely hard to pull off, but include some of the most deadly moves ever seen including \
|
||||
the plasma fist, which when pulled off will make someone violently explode.")
|
||||
icon = 'icons/obj/scrolls.dmi'
|
||||
icon_state ="plasmafist"
|
||||
remarks = list(
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
name = "mysterious scroll"
|
||||
martial_name = "sleeping carp"
|
||||
desc = "A scroll filled with strange markings. It seems to be drawings of some sort of martial art."
|
||||
greet = "<span class='sciradio'>You have learned the ancient martial art of the Sleeping Carp! Your hand-to-hand combat has become much more effective, and you are now able to deflect any projectiles \
|
||||
greet = span_sciradio("You have learned the ancient martial art of the Sleeping Carp! Your hand-to-hand combat has become much more effective, and you are now able to deflect any projectiles \
|
||||
directed toward you while in Combat Mode. Your body has also hardened itself, granting extra protection against lasting wounds that would otherwise mount during extended combat. \
|
||||
However, you are also unable to use any ranged weaponry. You can learn more about your newfound art by using the Recall Teachings verb in the Sleeping Carp tab.</span>"
|
||||
However, you are also unable to use any ranged weaponry. You can learn more about your newfound art by using the Recall Teachings verb in the Sleeping Carp tab.")
|
||||
icon = 'icons/obj/scrolls.dmi'
|
||||
icon_state = "sleepingcarp"
|
||||
worn_icon_state = "scroll"
|
||||
|
||||
@@ -195,10 +195,10 @@
|
||||
*/
|
||||
/obj/item/inspector/proc/print_report(mob/user)
|
||||
if(!cell)
|
||||
to_chat(user, "<span class='info'>\The [src] doesn't seem to be on... It feels quite light. Perhaps it lacks a power cell?")
|
||||
to_chat(user, span_info("\The [src] doesn't seem to be on... It feels quite light. Perhaps it lacks a power cell?"))
|
||||
return
|
||||
if(cell.charge == 0)
|
||||
to_chat(user, "<span class='info'>\The [src] doesn't seem to be on... Perhaps it ran out of power?")
|
||||
to_chat(user, span_info("\The [src] doesn't seem to be on... Perhaps it ran out of power?"))
|
||||
return
|
||||
if(!cell.use(energy_per_print))
|
||||
if(cell.use(ENERGY_TO_SPEAK))
|
||||
@@ -389,7 +389,7 @@
|
||||
if(cell.use(ENERGY_TO_SPEAK))
|
||||
say("ERROR! OUT OF PAPER! MAXIMUM PRINTING SPEED UNAVAIBLE! SWITCH TO A SLOWER SPEED TO OR PROVIDE PAPER!")
|
||||
else
|
||||
to_chat(user, "<span class='info'>\The [src] doesn't seem to be on... Perhaps it ran out of power?")
|
||||
to_chat(user, span_info("\The [src] doesn't seem to be on... Perhaps it ran out of power?"))
|
||||
return
|
||||
paper_charges--
|
||||
return ..()
|
||||
|
||||
@@ -426,9 +426,8 @@
|
||||
interact_with_atom(target, user, modifiers)
|
||||
|
||||
/obj/item/construction/rcd/proc/detonate_pulse()
|
||||
audible_message("<span class='danger'><b>[src] begins to vibrate and \
|
||||
buzz loudly!</b></span>","<span class='danger'><b>[src] begins \
|
||||
vibrating violently!</b></span>")
|
||||
audible_message(span_danger("<b>[src] begins to vibrate and buzz loudly!</b>"), \
|
||||
span_danger("<b>[src] begins vibrating violently!</b>"))
|
||||
// 5 seconds to get rid of it
|
||||
addtimer(CALLBACK(src, PROC_REF(detonate_pulse_explode)), 5 SECONDS)
|
||||
|
||||
|
||||
@@ -88,9 +88,9 @@
|
||||
mode = HUG_MODE_NICE
|
||||
switch(mode)
|
||||
if(HUG_MODE_NICE)
|
||||
to_chat(user, "<span class='infoplain'>Power reset. Hugs!</span>")
|
||||
to_chat(user, span_infoplain("Power reset. Hugs!"))
|
||||
if(HUG_MODE_HUG)
|
||||
to_chat(user, "<span class='infoplain'>Power increased!</span>")
|
||||
to_chat(user, span_infoplain("Power increased!"))
|
||||
if(HUG_MODE_SHOCK)
|
||||
to_chat(user, "<span class='warningplain'>BZZT. Electrifying arms...</span>")
|
||||
if(HUG_MODE_CRUSH)
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
if(!try_heal_checks(patient, user, heal_brute, heal_burn))
|
||||
return FALSE
|
||||
if(patient.heal_bodypart_damage((heal_brute * patient.maxHealth/100)))
|
||||
user.visible_message("<span class='infoplain'><span class='green'>[user] applies [src] on [patient].</span></span>", "<span class='infoplain'><span class='green'>You apply [src] on [patient].</span></span>")
|
||||
user.visible_message(span_infoplain(span_green("[user] applies [src] on [patient].")), span_infoplain(span_green("You apply [src] on [patient].")))
|
||||
return TRUE
|
||||
patient.balloon_alert(user, "can't heal [patient]!")
|
||||
return FALSE
|
||||
@@ -279,7 +279,7 @@
|
||||
if(!do_after(user, treatment_delay, target = patient))
|
||||
return
|
||||
|
||||
user.visible_message("<span class='infoplain'><span class='green'>[user] applies [src] to [patient]'s [limb.plaintext_zone].</span></span>", "<span class='infoplain'><span class='green'>You bandage the wounds on [user == patient ? "your" : "[patient]'s"] [limb.plaintext_zone].</span></span>")
|
||||
user.visible_message(span_infoplain(span_green("[user] applies [src] to [patient]'s [limb.plaintext_zone].")), span_infoplain(span_green("You bandage the wounds on [user == patient ? "your" : "[patient]'s"] [limb.plaintext_zone].")))
|
||||
limb.apply_gauze(src)
|
||||
|
||||
/obj/item/stack/medical/gauze/twelve
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
/obj/item/storage/box/mousetraps
|
||||
name = "box of Pest-B-Gon mousetraps"
|
||||
desc = "<span class='alert'>Keep out of reach of children.</span>"
|
||||
desc = span_alert("Keep out of reach of children.")
|
||||
illustration = "mousetrap"
|
||||
|
||||
/obj/item/storage/box/mousetraps/PopulateContents()
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
to_chat(user, span_notice("You connect the shock kit to the [name], electrifying it "))
|
||||
else
|
||||
user.put_in_active_hand(input_shock_kit)
|
||||
to_chat(user, "<span class='notice'> You cannot fit the shock kit onto the [name]!")
|
||||
to_chat(user, span_notice("You cannot fit the shock kit onto the [name]!"))
|
||||
|
||||
|
||||
/obj/structure/chair/wrench_act_secondary(mob/living/user, obj/item/weapon)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/structure/destructible //a base for destructible structures
|
||||
max_integrity = 100
|
||||
var/break_message = "<span class='warning'>The strange, admin-y structure breaks!</span>" //The message shown when a structure breaks
|
||||
var/break_message = span_warning("The strange, admin-y structure breaks!") //The message shown when a structure breaks
|
||||
var/break_sound = 'sound/effects/magic/clockwork/invoke_general.ogg' //The sound played when a structure breaks
|
||||
var/list/debris = null //Parts left behind when a structure breaks, takes the form of list(path = amount_to_spawn)
|
||||
|
||||
|
||||
@@ -68,26 +68,25 @@
|
||||
var/logs_used = min(space_for_logs, wood.amount)
|
||||
wood.use(logs_used)
|
||||
adjust_fuel_timer(LOG_BURN_TIMER * logs_used)
|
||||
user.visible_message("<span class='notice'>[user] tosses some \
|
||||
wood into [src].</span>", "<span class='notice'>You add \
|
||||
some fuel to [src].</span>")
|
||||
else if(istype(T, /obj/item/paper_bin))
|
||||
user.visible_message(span_notice("[user] tosses some wood into [src]."), span_notice("You add some fuel to [src]."))
|
||||
return
|
||||
|
||||
if(istype(T, /obj/item/paper_bin))
|
||||
var/obj/item/paper_bin/paper_bin = T
|
||||
user.visible_message("<span class='notice'>[user] throws [T] into \
|
||||
[src].</span>", "<span class='notice'>You add [T] to [src].\
|
||||
</span>")
|
||||
user.visible_message(span_notice("[user] throws [T] into [src]."), span_notice("You add [T] to [src]."))
|
||||
adjust_fuel_timer(PAPER_BURN_TIMER * paper_bin.total_paper)
|
||||
qdel(paper_bin)
|
||||
else if(istype(T, /obj/item/paper))
|
||||
user.visible_message("<span class='notice'>[user] throws [T] into \
|
||||
[src].</span>", "<span class='notice'>You throw [T] into [src].\
|
||||
</span>")
|
||||
return
|
||||
|
||||
if(istype(T, /obj/item/paper))
|
||||
user.visible_message(span_notice("[user] throws [T] into [src]."), span_notice("You throw [T] into [src]."))
|
||||
adjust_fuel_timer(PAPER_BURN_TIMER)
|
||||
qdel(T)
|
||||
else if(try_light(T,user))
|
||||
return
|
||||
else
|
||||
. = ..()
|
||||
|
||||
if(try_light(T,user))
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/structure/fireplace/update_overlays()
|
||||
. = ..()
|
||||
|
||||
@@ -122,7 +122,7 @@ at the cost of risking a vicious bite.**/
|
||||
desc = "What is this? Who put it on this station? And why does it emanate <span class='hypnophrase'>strange energy?</span>"
|
||||
icon_state = "altar"
|
||||
cult_examine_tip = "Even you don't understand the eldritch magic behind this."
|
||||
break_message = "<span class='warning'>The structure shatters, leaving only a demonic screech!</span>"
|
||||
break_message = span_warning("The structure shatters, leaving only a demonic screech!")
|
||||
break_sound = 'sound/effects/magic/demon_dies.ogg'
|
||||
light_color = LIGHT_COLOR_BLOOD_MAGIC
|
||||
light_range = 2
|
||||
|
||||
@@ -234,7 +234,7 @@ FLOOR SAFES
|
||||
if(!canhear)
|
||||
return
|
||||
if(current_tick == 2)
|
||||
to_chat(user, "<span class='italics'>The sounds from [src] are too fast and blend together.</span>")
|
||||
to_chat(user, span_italics("The sounds from [src] are too fast and blend together."))
|
||||
if(total_ticks == 1 || prob(SOUND_CHANCE))
|
||||
balloon_alert(user, pick(sounds))
|
||||
|
||||
|
||||
@@ -976,8 +976,7 @@
|
||||
if(!user.temporarilyRemoveItemFromInventory(src))
|
||||
return
|
||||
var/obj/structure/rack/R = new /obj/structure/rack(get_turf(src))
|
||||
user.visible_message("<span class='notice'>[user] assembles \a [R].\
|
||||
</span>", span_notice("You assemble \a [R]."))
|
||||
user.visible_message(span_notice("[user] assembles \a [R]."), span_notice("You assemble \a [R]."))
|
||||
R.add_fingerprint(user)
|
||||
qdel(src)
|
||||
building = FALSE
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
alpha = 30 //initially quite hidden when not "recharging"
|
||||
var/flare_message = "<span class='warning'>the trap flares brightly!</span>"
|
||||
var/flare_message = span_warning("the trap flares brightly!")
|
||||
var/last_trigger = 0
|
||||
var/time_between_triggers = 1 MINUTES
|
||||
var/charges = INFINITY
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
/obj/structure/trap/Initialize(mapload)
|
||||
. = ..()
|
||||
flare_message = "<span class='warning'>[src] flares brightly!</span>"
|
||||
flare_message = span_warning("[src] flares brightly!")
|
||||
spark_system = new
|
||||
spark_system.set_up(4,1,src)
|
||||
spark_system.attach(src)
|
||||
@@ -113,7 +113,7 @@
|
||||
/obj/structure/trap/stun/hunter/Initialize(mapload)
|
||||
. = ..()
|
||||
time_between_triggers = 1 SECONDS
|
||||
flare_message = "<span class='warning'>[src] snaps shut!</span>"
|
||||
flare_message = span_warning("[src] snaps shut!")
|
||||
|
||||
/obj/structure/trap/stun/hunter/Destroy()
|
||||
if(!QDELETED(stored_item))
|
||||
|
||||
@@ -77,16 +77,16 @@ GLOBAL_VAR(antag_prototypes)
|
||||
/datum/mind/proc/get_special_statuses()
|
||||
var/list/result = LAZYCOPY(special_statuses)
|
||||
if(!current)
|
||||
result += "<span class='bad'>No body!</span>"
|
||||
result += span_bad("No body!")
|
||||
if(current && HAS_TRAIT(current, TRAIT_MINDSHIELD))
|
||||
result += "<span class='good'>Mindshielded</span>"
|
||||
result += span_good("Mindshielded")
|
||||
if(current && HAS_MIND_TRAIT(current, TRAIT_UNCONVERTABLE))
|
||||
result += "<span class='good'>Unconvertable</span>"
|
||||
result += span_good("Unconvertable")
|
||||
//Move these to mob
|
||||
if(iscyborg(current))
|
||||
var/mob/living/silicon/robot/robot = current
|
||||
if (robot.emagged)
|
||||
result += "<span class='bad'>Emagged</span>"
|
||||
result += span_bad("Emagged")
|
||||
return result.Join(" | ")
|
||||
|
||||
/datum/mind/proc/traitor_panel()
|
||||
@@ -154,7 +154,7 @@ GLOBAL_VAR(antag_prototypes)
|
||||
continue
|
||||
else //Show removal and current one
|
||||
priority_sections |= antag_category
|
||||
antag_header_parts += "<span class='bad'>[current_antag.name]</span>"
|
||||
antag_header_parts += span_bad("[current_antag.name]")
|
||||
antag_header_parts += "<a href='?src=[REF(src)];remove_antag=[REF(current_antag)]'>Remove</a>"
|
||||
antag_header_parts += "<a href='?src=[REF(src)];open_antag_vv=[REF(current_antag)]'>Open VV</a>"
|
||||
|
||||
|
||||
@@ -583,8 +583,8 @@ ADMIN_VERB(jump_to_ruin, R_DEBUG, "Jump to Ruin", "Displays a list of all placed
|
||||
return
|
||||
var/datum/map_template/ruin/template = landmark.ruin_template
|
||||
user.mob.forceMove(get_turf(landmark))
|
||||
to_chat(user, span_name("[template.name]"), confidential = TRUE)
|
||||
to_chat(user, "<span class='italics'>[template.description]</span>", confidential = TRUE)
|
||||
to_chat(user, span_name(template.name), confidential = TRUE)
|
||||
to_chat(user, span_italics(template.description), confidential = TRUE)
|
||||
|
||||
ADMIN_VERB_VISIBILITY(place_ruin, ADMIN_VERB_VISIBLITY_FLAG_MAPPING_DEBUG)
|
||||
ADMIN_VERB(place_ruin, R_DEBUG, "Spawn Ruin", "Attempt to randomly place a specific ruin.", ADMIN_CATEGORY_MAPPING)
|
||||
@@ -625,7 +625,7 @@ ADMIN_VERB(place_ruin, R_DEBUG, "Spawn Ruin", "Attempt to randomly place a speci
|
||||
log_admin("[key_name(user)] randomly spawned ruin [ruinname] at [COORD(landmark)].")
|
||||
user.mob.forceMove(get_turf(landmark))
|
||||
to_chat(user, span_name("[template.name]"), confidential = TRUE)
|
||||
to_chat(user, "<span class='italics'>[template.description]</span>", confidential = TRUE)
|
||||
to_chat(user, span_italics("[template.description]"), confidential = TRUE)
|
||||
else
|
||||
to_chat(user, span_warning("Failed to place [template.name]."), confidential = TRUE)
|
||||
|
||||
|
||||
@@ -202,7 +202,7 @@ ADMIN_VERB(delay, R_SERVER, "Delay Pre-Game", "Delay the game start.", ADMIN_CAT
|
||||
SSticker.SetTimeLeft(newtime)
|
||||
SSticker.start_immediately = FALSE
|
||||
if(newtime < 0)
|
||||
to_chat(world, "<span class='infoplain'><b>The game start has been delayed.</b></span>", confidential = TRUE)
|
||||
to_chat(world, span_infoplain("<b>The game start has been delayed.</b>"), confidential = TRUE)
|
||||
log_admin("[key_name(user)] delayed the round start.")
|
||||
else
|
||||
to_chat(world, span_infoplain(span_bold("The game will start in [DisplayTimeText(newtime)].")), confidential = TRUE)
|
||||
|
||||
@@ -415,7 +415,7 @@ GLOBAL_LIST_EMPTY(antagonists)
|
||||
* Appears at start of roundend_catagory section.
|
||||
*/
|
||||
/datum/antagonist/proc/roundend_report_header()
|
||||
return "<span class='header'>The [roundend_category] were:</span><br>"
|
||||
return span_header("The [roundend_category] were:<br>")
|
||||
|
||||
/**
|
||||
* Proc that sends string data for the round-end report.
|
||||
|
||||
@@ -49,12 +49,12 @@ GLOBAL_LIST_EMPTY(antagonist_teams)
|
||||
/datum/team/proc/roundend_report()
|
||||
var/list/report = list()
|
||||
|
||||
report += "<span class='header'>\The [name]:</span>"
|
||||
report += span_header("\The [name]:")
|
||||
report += "The [member_name]s were:"
|
||||
report += printplayerlist(members)
|
||||
|
||||
if(objectives.len)
|
||||
report += "<span class='header'>Team had following objectives:</span>"
|
||||
report += span_header("Team had following objectives:")
|
||||
var/win = TRUE
|
||||
var/objective_count = 1
|
||||
for(var/datum/objective/objective as anything in objectives)
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
else
|
||||
result += "<span class='redtext big'>[name] team failed its mission.</span>"
|
||||
|
||||
result += "<span class='header'>The abductors of [name] were:</span>"
|
||||
result += span_header("The abductors of [name] were:")
|
||||
for(var/datum/mind/abductor_mind in members)
|
||||
result += printplayer(abductor_mind)
|
||||
result += printobjectives(objectives)
|
||||
|
||||
@@ -226,7 +226,7 @@
|
||||
return
|
||||
|
||||
living_target.balloon_alert(living_target, "you hear a voice")
|
||||
to_chat(living_target, span_hear("You hear a voice in your head saying: </span><span class='abductor'>[message]"))
|
||||
to_chat(living_target, span_hear("You hear a voice in your head saying: [span_abductor(message)]"))
|
||||
to_chat(user, span_notice("You send the message to your target."))
|
||||
log_directed_talk(user, living_target, message, LOG_SAY, "abductor whisper")
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
name = "alien firing pin"
|
||||
icon_state = "firing_pin_ayy"
|
||||
desc = "This firing pin is slimy and warm; you can swear you feel it constantly trying to mentally probe you."
|
||||
fail_message = "<span class='abductor'>Firing error, please contact Command.</span>"
|
||||
fail_message = span_abductor("Firing error, please contact Command.")
|
||||
|
||||
/obj/item/firing_pin/abductor/pin_auth(mob/living/user)
|
||||
. = isabductor(user)
|
||||
|
||||
@@ -65,9 +65,9 @@
|
||||
objectives -= necropolis_objective //So we don't count it in the check for other objectives.
|
||||
report += "<b>The [name] was tasked with defending the Necropolis:</b>"
|
||||
if(necropolis_objective.check_completion())
|
||||
report += span_greentext("<span class='header'>The nest stands! Glory to the Necropolis!</span><br>")
|
||||
report += span_greentext(span_header("The nest stands! Glory to the Necropolis!<br>"))
|
||||
else
|
||||
report += span_redtext("<span class='header'>The Necropolis was destroyed, the tribe has fallen...</span><br>")
|
||||
report += span_redtext(span_header("The Necropolis was destroyed, the tribe has fallen...<br>"))
|
||||
|
||||
if(length(objectives))
|
||||
report += span_header("The [name]'s other objectives were:")
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
user.temporarilyRemoveItemFromInventory(hand_item, TRUE) //DROPDEL will delete the item
|
||||
if(!silent)
|
||||
playsound(user, 'sound/effects/blob/blobattack.ogg', 30, TRUE)
|
||||
user.visible_message(span_warning("With a sickening crunch, [user] reforms [user.p_their()] [weapon_name_simple] into an arm!"), span_notice("We assimilate the [weapon_name_simple] back into our body."), "<span class='italics>You hear organic matter ripping and tearing!</span>")
|
||||
user.visible_message(span_warning("With a sickening crunch, [user] reforms [user.p_their()] [weapon_name_simple] into an arm!"), span_notice("We assimilate the [weapon_name_simple] back into our body."), span_italics("You hear organic matter ripping and tearing!"))
|
||||
user.update_held_items()
|
||||
return TRUE
|
||||
|
||||
@@ -512,7 +512,7 @@
|
||||
if(remaining_uses < 1)
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/H = loc
|
||||
H.visible_message(span_warning("With a sickening crunch, [H] reforms [H.p_their()] shield into an arm!"), span_notice("We assimilate our shield into our body"), "<span class='italics>You hear organic matter ripping and tearing!</span>")
|
||||
H.visible_message(span_warning("With a sickening crunch, [H] reforms [H.p_their()] shield into an arm!"), span_notice("We assimilate our shield into our body"), span_italics("You hear organic matter ripping and tearing!"))
|
||||
qdel(src)
|
||||
return 0
|
||||
else
|
||||
|
||||
@@ -184,10 +184,8 @@
|
||||
|
||||
/datum/action/changeling/sting/false_armblade/proc/remove_fake(mob/target, obj/item/melee/arm_blade/false/blade)
|
||||
playsound(target, 'sound/effects/blob/blobattack.ogg', 30, TRUE)
|
||||
target.visible_message("<span class='warning'>With a sickening crunch, \
|
||||
[target] reforms [target.p_their()] [blade.name] into an arm!</span>",
|
||||
span_warning("[blade] reforms back to normal."),
|
||||
"<span class='italics>You hear organic matter ripping and tearing!</span>")
|
||||
target.visible_message(span_warning("With a sickening crunch, [target] reforms [target.p_their()] [blade.name] into an arm!"),
|
||||
span_warning("[blade] reforms back to normal."), span_italics("You hear organic matter ripping and tearing!"))
|
||||
|
||||
qdel(blade)
|
||||
target.update_held_items()
|
||||
|
||||
@@ -1271,7 +1271,7 @@ Striking a noncultist, however, will tear their flesh."}
|
||||
illusions++
|
||||
if(illusions == initial(illusions) && isliving(loc))
|
||||
var/mob/living/holder = loc
|
||||
to_chat(holder, "<span class='cult italic'>The shield's illusions are back at full strength!</span>")
|
||||
to_chat(holder, span_cult_italic("The shield's illusions are back at full strength!"))
|
||||
|
||||
/obj/item/shield/mirror/IsReflect()
|
||||
if(prob(block_chance))
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
desc = "A bloodstained altar dedicated to Nar'Sie."
|
||||
cult_examine_tip = "Can be used to create eldritch whetstones, construct shells, and flasks of unholy water."
|
||||
icon_state = "talismanaltar"
|
||||
break_message = "<span class='warning'>The altar shatters, leaving only the wailing of the damned!</span>"
|
||||
break_message = span_warning("The altar shatters, leaving only the wailing of the damned!")
|
||||
mansus_conversion_path = /obj/effect/heretic_rune
|
||||
|
||||
/obj/structure/destructible/cult/item_dispenser/altar/setup_options()
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
icon_state = "tomealtar"
|
||||
light_range = 1.5
|
||||
light_color = LIGHT_COLOR_FIRE
|
||||
break_message = "<span class='warning'>The books and tomes of the archives burn into ash as the desk shatters!</span>"
|
||||
break_message = span_warning("The books and tomes of the archives burn into ash as the desk shatters!")
|
||||
mansus_conversion_path = /obj/item/codex_cicatrix
|
||||
|
||||
/obj/structure/destructible/cult/item_dispenser/archives/setup_options()
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
icon_state = "forge"
|
||||
light_range = 2
|
||||
light_color = LIGHT_COLOR_LAVA
|
||||
break_message = "<span class='warning'>The forge breaks apart into shards with a howling scream!</span>"
|
||||
break_message = span_warning("The forge breaks apart into shards with a howling scream!")
|
||||
mansus_conversion_path = /obj/structure/destructible/eldritch_crucible
|
||||
|
||||
/obj/structure/destructible/cult/item_dispenser/forge/setup_options()
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
light_range = 1.5
|
||||
light_color = COLOR_SOFT_RED
|
||||
break_sound = 'sound/effects/glass/glassbr2.ogg'
|
||||
break_message = "<span class='warning'>The blood-red crystal falls to the floor and shatters!</span>"
|
||||
break_message = span_warning("The blood-red crystal falls to the floor and shatters!")
|
||||
/// Length of the cooldown in between tile corruptions. Doubled if no turfs are found.
|
||||
var/corruption_cooldown_duration = 5 SECONDS
|
||||
/// The cooldown for corruptions.
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
count++
|
||||
|
||||
if(members.len)
|
||||
parts += "<span class='header'>The cultists were:</span>"
|
||||
parts += span_header("The cultists were:")
|
||||
if(length(true_cultists))
|
||||
parts += printplayerlist(true_cultists)
|
||||
else
|
||||
|
||||
@@ -500,7 +500,7 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
if(is_away_level(T.z))
|
||||
to_chat(user, "<span class='cult italic'>You are not in the right dimension!</span>")
|
||||
to_chat(user, span_cult_italic("You are not in the right dimension!"))
|
||||
log_game("Teleport rune activated by [user] at [COORD(src)] failed - [user] is in away mission.")
|
||||
fail_invoke()
|
||||
return
|
||||
@@ -849,37 +849,37 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0)
|
||||
if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated)
|
||||
return
|
||||
if(isnull(cultist_to_summon))
|
||||
to_chat(user, "<span class='cult italic'>You require a summoning target!</span>")
|
||||
to_chat(user, span_cult_italic("You require a summoning target!"))
|
||||
fail_logmsg += "no target."
|
||||
log_game(fail_logmsg)
|
||||
fail_invoke()
|
||||
return
|
||||
if(cultist_to_summon.stat == DEAD)
|
||||
to_chat(user, "<span class='cult italic'>[cultist_to_summon] has died!</span>")
|
||||
to_chat(user, span_cult_italic("[cultist_to_summon] has died!"))
|
||||
fail_logmsg += "target died."
|
||||
log_game(fail_logmsg)
|
||||
fail_invoke()
|
||||
return
|
||||
if(cultist_to_summon.pulledby || cultist_to_summon.buckled)
|
||||
to_chat(user, "<span class='cult italic'>[cultist_to_summon] is being held in place!</span>")
|
||||
to_chat(user, span_cult_italic("[cultist_to_summon] is being held in place!"))
|
||||
fail_logmsg += "target restrained."
|
||||
log_game(fail_logmsg)
|
||||
fail_invoke()
|
||||
return
|
||||
if(!IS_CULTIST(cultist_to_summon))
|
||||
to_chat(user, "<span class='cult italic'>[cultist_to_summon] is not a follower of the Geometer!</span>")
|
||||
to_chat(user, span_cult_italic("[cultist_to_summon] is not a follower of the Geometer!"))
|
||||
fail_logmsg += "target deconverted."
|
||||
log_game(fail_logmsg)
|
||||
fail_invoke()
|
||||
return
|
||||
if(is_away_level(cultist_to_summon.z))
|
||||
to_chat(user, "<span class='cult italic'>[cultist_to_summon] is not in our dimension!</span>")
|
||||
to_chat(user, span_cult_italic("[cultist_to_summon] is not in our dimension!"))
|
||||
fail_logmsg += "target is in away mission."
|
||||
log_game(fail_logmsg)
|
||||
fail_invoke()
|
||||
return
|
||||
cultist_to_summon.visible_message(span_warning("[cultist_to_summon] suddenly disappears in a flash of red light!"), \
|
||||
"<span class='cult italic'><b>Overwhelming vertigo consumes you as you are hurled through the air!</b></span>")
|
||||
span_cult_italic("<b>Overwhelming vertigo consumes you as you are hurled through the air!</b>"))
|
||||
..()
|
||||
visible_message(span_warning("A foggy shape materializes atop [src] and solidifies into [cultist_to_summon]!"))
|
||||
var/turf/old_turf = get_turf(cultist_to_summon)
|
||||
@@ -969,12 +969,12 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0)
|
||||
|
||||
/obj/effect/rune/manifest/can_invoke(mob/living/user)
|
||||
if(!(user in get_turf(src)))
|
||||
to_chat(user, "<span class='cult italic'>You must be standing on [src]!</span>")
|
||||
to_chat(user, span_cult_italic("You must be standing on [src]!"))
|
||||
fail_invoke()
|
||||
log_game("Manifest rune failed - user not standing on rune")
|
||||
return list()
|
||||
if(user.has_status_effect(/datum/status_effect/cultghost))
|
||||
to_chat(user, "<span class='cult italic'>Ghosts can't summon more ghosts!</span>")
|
||||
to_chat(user, span_cult_italic("Ghosts can't summon more ghosts!"))
|
||||
fail_invoke()
|
||||
log_game("Manifest rune failed - user is a ghost")
|
||||
return list()
|
||||
|
||||
@@ -43,8 +43,8 @@
|
||||
. = ..()
|
||||
|
||||
/datum/antagonist/highlander/greet()
|
||||
to_chat(owner, "<span class='boldannounce'>Your [sword.name] cries out for blood. Claim the lives of others, and your own will be restored!\n\
|
||||
Activate it in your hand, and it will lead to the nearest target. Attack the nuclear authentication disk with it, and you will store it.</span>")
|
||||
to_chat(owner, span_boldannounce("Your [sword.name] cries out for blood. Claim the lives of others, and your own will be restored!\n\
|
||||
Activate it in your hand, and it will lead to the nearest target. Attack the nuclear authentication disk with it, and you will store it."))
|
||||
|
||||
owner.announce_objectives()
|
||||
|
||||
@@ -88,8 +88,8 @@
|
||||
name = "\improper highlander"
|
||||
|
||||
/datum/antagonist/highlander/robot/greet()
|
||||
to_chat(owner, "<span class='boldannounce'>Your integrated claymore cries out for blood. Claim the lives of others, and your own will be restored!\n\
|
||||
Activate it in your hand, and it will lead to the nearest target. Attack the nuclear authentication disk with it, and you will store it.</span>")
|
||||
to_chat(owner, span_boldannounce("Your integrated claymore cries out for blood. Claim the lives of others, and your own will be restored!\n\
|
||||
Activate it in your hand, and it will lead to the nearest target. Attack the nuclear authentication disk with it, and you will store it."))
|
||||
|
||||
/datum/antagonist/highlander/robot/give_equipment()
|
||||
var/mob/living/silicon/robot/robotlander = owner.current
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
/datum/team/nuclear/roundend_report()
|
||||
var/list/parts = list()
|
||||
parts += "<span class='header'>[syndicate_name] Operatives:</span>"
|
||||
parts += span_header("[syndicate_name] Operatives:")
|
||||
|
||||
switch(get_result())
|
||||
if(NUKE_RESULT_FLUKE)
|
||||
@@ -55,7 +55,7 @@
|
||||
parts += "<span class='neutraltext big'>Neutral Victory</span>"
|
||||
parts += "<B>Mission aborted!</B>"
|
||||
|
||||
var/text = "<br><span class='header'>The syndicate operatives were:</span>"
|
||||
var/text = span_header("<br>The syndicate operatives were:")
|
||||
var/purchases = ""
|
||||
var/TC_uses = 0
|
||||
LAZYINITLIST(GLOB.uplink_purchase_logs_by_key)
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
O.update_explanation_text()
|
||||
|
||||
/datum/antagonist/obsessed/roundend_report_header()
|
||||
return "<span class='header'>Someone became obsessed!</span><br>"
|
||||
return span_header("Someone became obsessed!<br>")
|
||||
|
||||
/datum/antagonist/obsessed/roundend_report()
|
||||
var/list/report = list()
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
original_mind.quick_copy_all_memories(owner)
|
||||
|
||||
/datum/antagonist/paradox_clone/roundend_report_header()
|
||||
return "<span class='header'>A paradox clone appeared on the station!</span><br>"
|
||||
return span_header("A paradox clone appeared on the station!<br>")
|
||||
|
||||
/datum/outfit/paradox_clone
|
||||
name = "Paradox Clone (Preview only)"
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
/datum/team/pirate/roundend_report()
|
||||
var/list/parts = list()
|
||||
|
||||
parts += "<span class='header'>Space Pirates were:</span>"
|
||||
parts += span_header("Space Pirates were:")
|
||||
|
||||
var/all_dead = TRUE
|
||||
for(var/datum/mind/M in members)
|
||||
|
||||
@@ -584,19 +584,19 @@
|
||||
|
||||
if(headrevs.len)
|
||||
var/list/headrev_part = list()
|
||||
headrev_part += "<span class='header'>The head revolutionaries were:</span>"
|
||||
headrev_part += span_header("The head revolutionaries were:")
|
||||
headrev_part += printplayerlist(headrevs, !check_rev_victory())
|
||||
result += headrev_part.Join("<br>")
|
||||
|
||||
if(revs.len)
|
||||
var/list/rev_part = list()
|
||||
rev_part += "<span class='header'>The revolutionaries were:</span>"
|
||||
rev_part += span_header("The revolutionaries were:")
|
||||
rev_part += printplayerlist(revs, !check_rev_victory())
|
||||
result += rev_part.Join("<br>")
|
||||
|
||||
var/list/heads = SSjob.get_all_heads()
|
||||
if(heads.len)
|
||||
var/head_text = "<span class='header'>The heads of staff were:</span>"
|
||||
var/head_text = span_header("The heads of staff were:")
|
||||
head_text += "<ul class='playerlist'>"
|
||||
for(var/datum/mind/head in heads)
|
||||
var/target = (head in targets)
|
||||
|
||||
@@ -256,7 +256,7 @@
|
||||
parts += "<span class='redtext big'>The [name] has failed!</span>"
|
||||
|
||||
if(length(carp))
|
||||
parts += "<br><span class='header'>The [name] was assisted by:</span>"
|
||||
parts += span_header("<br>The [name] was assisted by:")
|
||||
parts += "<ul class='playerlist'>"
|
||||
var/list/players_to_carp_taken = list()
|
||||
for(var/datum/mind/carpy as anything in carp)
|
||||
|
||||
@@ -238,7 +238,7 @@
|
||||
to_chat(user, span_userdanger("Your body is wracked with debilitating pain!"))
|
||||
return ITEM_INTERACT_BLOCKING
|
||||
|
||||
user.visible_message("<span class='notice'>[user] holds [src] above [user.p_their()] head and forces it into [target_toolbox] with a flash of light!", \
|
||||
user.visible_message(span_notice("[user] holds [src] above [user.p_their()] head and forces it into [target_toolbox] with a flash of light!"), \
|
||||
span_notice("You hold [src] above your head briefly, then force it into [target_toolbox], transferring the [occupant]'s soul!"), ignored_mobs = occupant)
|
||||
to_chat(occupant, span_userdanger("[user] holds you up briefly, then forces you into [target_toolbox]!"))
|
||||
to_chat(occupant, span_deadsay("<b>Your eternal soul has been sacrificed to restore the soul of a toolbox. Them's the breaks!</b>"))
|
||||
@@ -261,11 +261,11 @@
|
||||
icon = 'icons/mob/shells.dmi'
|
||||
icon_state = "construct_cult"
|
||||
desc = "A wicked machine used by those skilled in magical arts. It is inactive."
|
||||
var/extra_desc = {"<span class='cult'>A construct shell, used to house bound souls from a soulstone.\n
|
||||
Placing a soulstone with a soul into this shell allows you to produce your choice of the following:\n
|
||||
An <b>Artificer</b>, which can produce <b>more shells and soulstones</b>, as well as fortifications.\n
|
||||
A <b>Wraith</b>, which does high damage and can jaunt through walls, though it is quite fragile.\n
|
||||
A <b>Juggernaut</b>, which is very hard to kill and can produce temporary walls, but is slow.</span>"}
|
||||
var/extra_desc = span_cult("A construct shell, used to house bound souls from a soulstone.\n\
|
||||
Placing a soulstone with a soul into this shell allows you to produce your choice of the following:\n\
|
||||
An <b>Artificer</b>, which can produce <b>more shells and soulstones</b>, as well as fortifications.\n\
|
||||
A <b>Wraith</b>, which does high damage and can jaunt through walls, though it is quite fragile.\n\
|
||||
A <b>Juggernaut</b>, which is very hard to kill and can produce temporary walls, but is slow.")
|
||||
|
||||
/obj/structure/constructshell/examine(mob/user)
|
||||
. = ..()
|
||||
|
||||
@@ -443,10 +443,10 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key)
|
||||
/datum/team/wizard/roundend_report()
|
||||
var/list/parts = list()
|
||||
|
||||
parts += "<span class='header'>Wizards/witches of [master_wizard.owner.name] team were:</span>"
|
||||
parts += span_header("Wizards/witches of [master_wizard.owner.name] team were:")
|
||||
parts += master_wizard.roundend_report()
|
||||
parts += " "
|
||||
parts += "<span class='header'>[master_wizard.owner.name] apprentices and minions were:</span>"
|
||||
parts += span_header("[master_wizard.owner.name] apprentices and minions were:")
|
||||
parts += printplayerlist(members - master_wizard.owner)
|
||||
|
||||
return "<div class='panel redborder'>[parts.Join("<br>")]</div>"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
//Simply lists them.
|
||||
/datum/team/xeno/roundend_report()
|
||||
var/list/parts = list()
|
||||
parts += "<span class='header'>The [name] were:</span>"
|
||||
parts += span_header("The [name] were:")
|
||||
parts += printplayerlist(members)
|
||||
return "<div class='panel redborder'>[parts.Join("<br>")]</div>"
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
var/escape_count = 0 //counts the number of xenomorphs that were born in captivity who ended the round outside of it
|
||||
var/captive_count = 0 //counts the number of xenomorphs born in captivity who remained there until the end of the round (losers)
|
||||
|
||||
parts += "<span class='header'>The [name] were:</span> <br>"
|
||||
parts += span_header("The [name] were: <br>")
|
||||
|
||||
if(check_captivity(progenitor.current) == CAPTIVE_XENO_PASS)
|
||||
parts += span_greentext("The progenitor of this hive was [progenitor.key], as [progenitor], who successfully escaped captivity!") + "<br>"
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
//do the pulse & the scan
|
||||
pulse()
|
||||
audible_message("<span class='infoplain'>[icon2html(src, hearers(src))] *beep* *beep* *beep*</span>")
|
||||
audible_message(span_infoplain("[icon2html(src, hearers(src))] *beep* *beep* *beep*"))
|
||||
playsound(src, 'sound/machines/beep/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE)
|
||||
toggle_scan()
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
return FALSE
|
||||
next_activate = world.time + (3 SECONDS) // this must happen before anything else
|
||||
pulse()
|
||||
audible_message("<span class='infoplain'>[icon2html(src, hearers(src))] *beep* *beep* *beep*</span>", null, hearing_range)
|
||||
audible_message(span_infoplain("[icon2html(src, hearers(src))] *beep* *beep* *beep*"), null, hearing_range)
|
||||
for(var/mob/hearing_mob in get_hearers_in_view(hearing_range, src))
|
||||
hearing_mob.playsound_local(get_turf(src), 'sound/machines/beep/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE)
|
||||
|
||||
|
||||
@@ -169,7 +169,7 @@
|
||||
last_receive_signal_log = istype(holder, /obj/item/transfer_valve) ? signal.logging_data : null
|
||||
|
||||
pulse()
|
||||
audible_message("<span class='infoplain'>[icon2html(src, hearers(src))] *beep* *beep* *beep*</span>", null, hearing_range)
|
||||
audible_message(span_infoplain("[icon2html(src, hearers(src))] *beep* *beep* *beep*"), null, hearing_range)
|
||||
for(var/mob/hearing_mob in get_hearers_in_view(hearing_range, src))
|
||||
hearing_mob.playsound_local(get_turf(src), 'sound/machines/beep/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE)
|
||||
return TRUE
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
|
||||
if (unreceived.len)
|
||||
if (unreceived.len >= ASSET_CACHE_TELL_CLIENT_AMOUNT)
|
||||
to_chat(client, "<span class='infoplain'>Sending Resources...</span>")
|
||||
to_chat(client, span_infoplain("Sending Resources..."))
|
||||
|
||||
for (var/asset_name in unreceived)
|
||||
var/new_asset_name = asset_name
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
if (!what_to_change)
|
||||
return
|
||||
save_flag ^= options[what_to_change]
|
||||
to_chat(builder, "<span class='notice'>[what_to_change] is now [save_flag & options[what_to_change] ? "ENABLED" : "DISABLED"].</span>")
|
||||
to_chat(builder, span_notice("[what_to_change] is now [save_flag & options[what_to_change] ? "ENABLED" : "DISABLED"]."))
|
||||
|
||||
/datum/buildmode_mode/map_export/show_help(client/builder)
|
||||
to_chat(builder, span_purple(examine_block(
|
||||
|
||||
@@ -254,7 +254,7 @@ ADMIN_VERB(reset_ooc_color, R_FUN, "Reset Player OOC Color", "Returns player OOC
|
||||
// Check if the list is empty
|
||||
if(!length(players))
|
||||
// Express that there are no players we can ignore in chat
|
||||
to_chat(src, "<span class='infoplain'>There are no other players you can ignore!</span>")
|
||||
to_chat(src, span_infoplain("There are no other players you can ignore!"))
|
||||
|
||||
// Stop running
|
||||
return
|
||||
@@ -275,7 +275,7 @@ ADMIN_VERB(reset_ooc_color, R_FUN, "Reset Player OOC Color", "Returns player OOC
|
||||
// Check if the selected player is on our ignore list
|
||||
if(selection in prefs.ignoring)
|
||||
// Express that the selected player is already on our ignore list in chat
|
||||
to_chat(src, "<span class='infoplain'>You are already ignoring [selection]!</span>")
|
||||
to_chat(src, span_infoplain("You are already ignoring [selection]!"))
|
||||
|
||||
// Stop running
|
||||
return
|
||||
@@ -287,7 +287,7 @@ ADMIN_VERB(reset_ooc_color, R_FUN, "Reset Player OOC Color", "Returns player OOC
|
||||
prefs.save_preferences()
|
||||
|
||||
// Express that we've ignored the selected player in chat
|
||||
to_chat(src, "<span class='infoplain'>You are now ignoring [selection] on the OOC channel.</span>")
|
||||
to_chat(src, span_infoplain("You are now ignoring [selection] on the OOC channel."))
|
||||
|
||||
// Unignore verb
|
||||
/client/verb/select_unignore()
|
||||
@@ -298,7 +298,7 @@ ADMIN_VERB(reset_ooc_color, R_FUN, "Reset Player OOC Color", "Returns player OOC
|
||||
// Check if we've ignored any players
|
||||
if(!length(prefs.ignoring))
|
||||
// Express that we haven't ignored any players in chat
|
||||
to_chat(src, "<span class='infoplain'>You haven't ignored any players!</span>")
|
||||
to_chat(src, span_infoplain("You haven't ignored any players!"))
|
||||
|
||||
// Stop running
|
||||
return
|
||||
@@ -313,7 +313,7 @@ ADMIN_VERB(reset_ooc_color, R_FUN, "Reset Player OOC Color", "Returns player OOC
|
||||
// Check if the selected player is not on our ignore list
|
||||
if(!(selection in prefs.ignoring))
|
||||
// Express that the selected player is not on our ignore list in chat
|
||||
to_chat(src, "<span class='infoplain'>You are not ignoring [selection]!</span>")
|
||||
to_chat(src, span_infoplain("You are not ignoring [selection]!"))
|
||||
|
||||
// Stop running
|
||||
return
|
||||
@@ -325,7 +325,7 @@ ADMIN_VERB(reset_ooc_color, R_FUN, "Reset Player OOC Color", "Returns player OOC
|
||||
prefs.save_preferences()
|
||||
|
||||
// Express that we've unignored the selected player in chat
|
||||
to_chat(src, "<span class='infoplain'>You are no longer ignoring [selection] on the OOC channel.</span>")
|
||||
to_chat(src, span_infoplain("You are no longer ignoring [selection] on the OOC channel."))
|
||||
|
||||
/client/proc/show_previous_roundend_report()
|
||||
set name = "Your Last Round"
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
msg += "</tr></table>"
|
||||
|
||||
msg += "<b>Total Players: [length(Lines)]</b>"
|
||||
to_chat(src, "<span class='infoplain'>[msg]</span>")
|
||||
to_chat(src, span_infoplain("[msg]"))
|
||||
|
||||
/client/verb/adminwho()
|
||||
set category = "Admin"
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
/obj/item/gas_filter/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='notice'>[src] is at <b>[filter_status]%</b> durability.</span>"
|
||||
. += span_notice("[src] is at <b>[filter_status]%</b> durability.")
|
||||
|
||||
/**
|
||||
* called by the gas mask where the filter is installed, lower the filter_status depending on the breath gas composition and by the strength of the filter
|
||||
|
||||
@@ -104,9 +104,9 @@ GLOBAL_LIST_INIT(high_priority_sentience, typecacheof(list(
|
||||
spawned_mobs += selected
|
||||
|
||||
to_chat(selected, span_userdanger("Hello world!"))
|
||||
to_chat(selected, "<span class='warning'>Due to freak radiation and/or chemicals \
|
||||
to_chat(selected, span_warning("Due to freak radiation and/or chemicals \
|
||||
and/or lucky chance, you have gained human level intelligence \
|
||||
and the ability to speak and understand human language!</span>")
|
||||
and the ability to speak and understand human language!"))
|
||||
|
||||
return SUCCESSFUL_SPAWN
|
||||
|
||||
|
||||
@@ -361,7 +361,7 @@
|
||||
/datum/chemical_reaction/drink/bacchus_blessing
|
||||
results = list(/datum/reagent/consumable/ethanol/bacchus_blessing = 4)
|
||||
required_reagents = list(/datum/reagent/consumable/ethanol/hooch = 1, /datum/reagent/consumable/ethanol/absinthe = 1, /datum/reagent/consumable/ethanol/manly_dorf = 1, /datum/reagent/consumable/ethanol/syndicatebomb = 1)
|
||||
mix_message = "<span class='warning'>The mixture turns to a sickening froth.</span>"
|
||||
mix_message = span_warning("The mixture turns to a sickening froth.")
|
||||
|
||||
/datum/chemical_reaction/drink/eggnog
|
||||
results = list(/datum/reagent/consumable/ethanol/eggnog = 15)
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
skill_name = "True Strength"
|
||||
skill_description = "The knowledge and strength to resolve the most ancient conumdrum; what happens when an unstoppable force meets an immovable object."
|
||||
skill_icon = "dumbbell"
|
||||
activate_message = "<span class='notice'>You realise if you apply the correct force, at the correct angle, it is possible to make the immovable permanently movable. And... damn, you look huge.</span>"
|
||||
deactivate_message = "<span class='notice'>You forget how to permanently anchor a paradoxical object. Also, you should really hit the gym...</span>"
|
||||
activate_message = span_notice("You realise if you apply the correct force, at the correct angle, it is possible to make the immovable permanently movable. And... damn, you look huge.")
|
||||
deactivate_message = span_notice("You forget how to permanently anchor a paradoxical object. Also, you should really hit the gym...")
|
||||
chip_category = SKILLCHIP_CATEGORY_GENERAL
|
||||
skillchip_flags = NONE
|
||||
slot_use = 1
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
skill_name = "Close Quarters Cooking"
|
||||
skill_description = "A specialised form of self defence, developed by skilled sous-chef de cuisines. No man fights harder than a chef to defend his kitchen."
|
||||
skill_icon = "utensils"
|
||||
activate_message = "<span class='notice'>You can visualize how to defend your kitchen with martial arts.</span>"
|
||||
deactivate_message = "<span class='notice'>You forget how to control your muscles to execute kicks, slams and restraints while in a kitchen environment.</span>"
|
||||
activate_message = span_notice("You can visualize how to defend your kitchen with martial arts.")
|
||||
deactivate_message = span_notice("You forget how to control your muscles to execute kicks, slams and restraints while in a kitchen environment.")
|
||||
/// The Chef CQC given by the skillchip.
|
||||
var/datum/martial_art/cqc/under_siege/style
|
||||
|
||||
|
||||
@@ -5,5 +5,5 @@
|
||||
skill_name = "Supermatter Cognition Theory"
|
||||
skill_description = "Understand the correct mental patterns to keep in mind around matter in a hyperfractal state, causing immunity to visions and making the matter in question \"calmer\"."
|
||||
skill_icon = "spa"
|
||||
activate_message = "<span class='notice'>You start thinking in patterns that will render you immune to visions from, and act as a calming influence for, matter in a hyperfractal state.</span>"
|
||||
deactivate_message = "<span class='notice'>Your thoughts become more disordered and jumbled. You are no longer immune to the abyss.</span>"
|
||||
activate_message = span_notice("You start thinking in patterns that will render you immune to visions from, and act as a calming influence for, matter in a hyperfractal state.")
|
||||
deactivate_message = span_notice("Your thoughts become more disordered and jumbled. You are no longer immune to the abyss.")
|
||||
|
||||
@@ -5,5 +5,5 @@
|
||||
skill_name = "Cyborg Circuitry"
|
||||
skill_description = "Recognise cyborg wire layouts and understand their functionality at a glance."
|
||||
skill_icon = "sitemap"
|
||||
activate_message = "<span class='notice'>You suddenly comprehend the secrets behind cyborg circuitry.</span>"
|
||||
deactivate_message = "<span class='notice'>Cyborg circuitry stops making sense as images of coloured wires fade from your mind.</span>"
|
||||
activate_message = span_notice("You suddenly comprehend the secrets behind cyborg circuitry.")
|
||||
deactivate_message = span_notice("Cyborg circuitry stops making sense as images of coloured wires fade from your mind.")
|
||||
|
||||
@@ -5,5 +5,5 @@
|
||||
skill_name = "Engineering Circuitry"
|
||||
skill_description = "Recognise airlock and APC wire layouts and understand their functionality at a glance."
|
||||
skill_icon = "sitemap"
|
||||
activate_message = "<span class='notice'>You suddenly comprehend the secrets behind airlock and APC circuitry.</span>"
|
||||
deactivate_message = "<span class='notice'>Airlock and APC circuitry stops making sense as images of coloured wires fade from your mind.</span>"
|
||||
activate_message = span_notice("You suddenly comprehend the secrets behind airlock and APC circuitry.")
|
||||
deactivate_message = span_notice("Airlock and APC circuitry stops making sense as images of coloured wires fade from your mind.")
|
||||
|
||||
@@ -377,8 +377,8 @@
|
||||
skill_name = "Underwater Basketweaving"
|
||||
skill_description = "Master intricate art of using twine to create perfect baskets while submerged."
|
||||
skill_icon = "shopping-basket"
|
||||
activate_message = "<span class='notice'>You're one with the twine and the sea.</span>"
|
||||
deactivate_message = "<span class='notice'>Higher mysteries of underwater basketweaving leave your mind.</span>"
|
||||
activate_message = span_notice("You're one with the twine and the sea.")
|
||||
deactivate_message = span_notice("Higher mysteries of underwater basketweaving leave your mind.")
|
||||
|
||||
/obj/item/skillchip/wine_taster
|
||||
name = "WINE skillchip"
|
||||
@@ -387,8 +387,8 @@
|
||||
skill_name = "Wine Tasting"
|
||||
skill_description = "Recognize wine vintage from taste alone. Never again lack an opinion when presented with an unknown drink."
|
||||
skill_icon = "wine-bottle"
|
||||
activate_message = "<span class='notice'>You recall wine taste.</span>"
|
||||
deactivate_message = "<span class='notice'>Your memories of wine evaporate.</span>"
|
||||
activate_message = span_notice("You recall wine taste.")
|
||||
deactivate_message = span_notice("Your memories of wine evaporate.")
|
||||
|
||||
/obj/item/skillchip/bonsai
|
||||
name = "Hedge 3 skillchip"
|
||||
@@ -396,16 +396,16 @@
|
||||
skill_name = "Hedgetrimming"
|
||||
skill_description = "Trim hedges and potted plants into marvelous new shapes with any old knife. Not applicable to plastic plants."
|
||||
skill_icon = "spa"
|
||||
activate_message = "<span class='notice'>Your mind is filled with plant arrangments.</span>"
|
||||
deactivate_message = "<span class='notice'>You can't remember what a hedge looks like anymore.</span>"
|
||||
activate_message = span_notice("Your mind is filled with plant arrangments.")
|
||||
deactivate_message = span_notice("You can't remember what a hedge looks like anymore.")
|
||||
|
||||
/obj/item/skillchip/useless_adapter
|
||||
name = "Skillchip adapter"
|
||||
skill_name = "Useless adapter"
|
||||
skill_description = "Allows you to insert another skillchip into this adapter after it has been inserted into your brain..."
|
||||
skill_icon = "plug"
|
||||
activate_message = "<span class='notice'>You can now activate another chip through this adapter, but you're not sure why you did this...</span>"
|
||||
deactivate_message = "<span class='notice'>You no longer have the useless skillchip adapter.</span>"
|
||||
activate_message = span_notice("You can now activate another chip through this adapter, but you're not sure why you did this...")
|
||||
deactivate_message = span_notice("You no longer have the useless skillchip adapter.")
|
||||
skillchip_flags = SKILLCHIP_ALLOWS_MULTIPLE
|
||||
// Literally does nothing.
|
||||
complexity = 0
|
||||
@@ -417,8 +417,8 @@
|
||||
skill_name = "Lightbulb Removing"
|
||||
skill_description = "Stop failing taking out lightbulbs today, no gloves needed!"
|
||||
skill_icon = "lightbulb"
|
||||
activate_message = "<span class='notice'>Your feel like your pain receptors are less sensitive to hot objects.</span>"
|
||||
deactivate_message = "<span class='notice'>You feel like hot objects could stop you again...</span>"
|
||||
activate_message = span_notice("Your feel like your pain receptors are less sensitive to hot objects.")
|
||||
deactivate_message = span_notice("You feel like hot objects could stop you again...")
|
||||
|
||||
/obj/item/skillchip/disk_verifier
|
||||
name = "K33P-TH4T-D15K skillchip"
|
||||
@@ -426,8 +426,8 @@
|
||||
skill_name = "Nuclear Disk Verification"
|
||||
skill_description = "Nuclear authentication disks have an extremely long serial number for verification. This skillchip stores that number, which allows the user to automatically spot forgeries."
|
||||
skill_icon = "save"
|
||||
activate_message = "<span class='notice'>You feel your mind automatically verifying long serial numbers on disk shaped objects.</span>"
|
||||
deactivate_message = "<span class='notice'>The innate recognition of absurdly long disk-related serial numbers fades from your mind.</span>"
|
||||
activate_message = span_notice("You feel your mind automatically verifying long serial numbers on disk shaped objects.")
|
||||
deactivate_message = span_notice("The innate recognition of absurdly long disk-related serial numbers fades from your mind.")
|
||||
|
||||
/obj/item/skillchip/entrails_reader
|
||||
name = "3NTR41LS skillchip"
|
||||
@@ -435,8 +435,8 @@
|
||||
skill_name = "Entrails Reader"
|
||||
skill_description = "Be able to learn about a person's life, by looking at their internal organs. Not to be confused with looking into the future."
|
||||
skill_icon = "lungs"
|
||||
activate_message = "<span class='notice'>You feel that you know a lot about interpreting organs.</span>"
|
||||
deactivate_message = "<span class='notice'>Knowledge of liver damage, heart strain and lung scars fades from your mind.</span>"
|
||||
activate_message = span_notice("You feel that you know a lot about interpreting organs.")
|
||||
deactivate_message = span_notice("Knowledge of liver damage, heart strain and lung scars fades from your mind.")
|
||||
|
||||
/obj/item/skillchip/appraiser
|
||||
name = "GENUINE ID Appraisal Now! skillchip"
|
||||
|
||||
@@ -39,8 +39,7 @@ GLOBAL_LIST_INIT(marker_beacon_colors, sort_list(list(
|
||||
|
||||
/obj/item/stack/marker_beacon/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='notice'>Use in-hand to place a [singular_name].\n"+\
|
||||
"Alt-click to select a color. Current color is [picked_color].</span>"
|
||||
. += span_notice("Use in-hand to place a [singular_name].\nAlt-click to select a color. Current color is [picked_color].")
|
||||
|
||||
/obj/item/stack/marker_beacon/update_icon_state()
|
||||
icon_state = "[initial(icon_state)][LOWER_TEXT(picked_color)]"
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
"<span class='notice'> - Going to the main station in search of materials.</span>\n"+\
|
||||
"<span class='notice'> - Interacting with non-drone players outside KS13, dead or alive.</span>\n"+\
|
||||
"<span class='warning'>These rules are at admin discretion and will be heavily enforced.</span>\n"+\
|
||||
"<span class='warning'><u>If you do not have the regular drone laws, follow your laws to the best of your ability.</u></span>"
|
||||
span_warning("<u>If you do not have the regular drone laws, follow your laws to the best of your ability.</u>")
|
||||
shy = FALSE
|
||||
|
||||
/mob/living/basic/drone/derelict/Initialize(mapload)
|
||||
|
||||
@@ -11,17 +11,17 @@ GLOBAL_VAR(posibrain_notify_cooldown)
|
||||
braintype = "Android"
|
||||
|
||||
///Message sent to the user when polling ghosts
|
||||
var/begin_activation_message = "<span class='notice'>You carefully locate the manual activation switch and start the positronic brain's boot process.</span>"
|
||||
var/begin_activation_message = span_notice("You carefully locate the manual activation switch and start the positronic brain's boot process.")
|
||||
///Message sent as a visible message on success
|
||||
var/success_message = "<span class='notice'>The positronic brain pings, and its lights start flashing. Success!</span>"
|
||||
var/success_message = span_notice("The positronic brain pings, and its lights start flashing. Success!")
|
||||
///Message sent as a visible message on failure
|
||||
var/fail_message = "<span class='notice'>The positronic brain buzzes quietly, and the golden lights fade away. Perhaps you could try again?</span>"
|
||||
var/fail_message = span_notice("The positronic brain buzzes quietly, and the golden lights fade away. Perhaps you could try again?")
|
||||
///Visible message sent when a player possesses the brain
|
||||
var/new_mob_message = "<span class='notice'>The positronic brain chimes quietly.</span>"
|
||||
var/new_mob_message = span_notice("The positronic brain chimes quietly.")
|
||||
///Examine message when the posibrain has no mob
|
||||
var/dead_message = "<span class='deadsay'>It appears to be completely inactive. The reset light is blinking.</span>"
|
||||
var/dead_message = span_deadsay("It appears to be completely inactive. The reset light is blinking.")
|
||||
///Examine message when the posibrain cannot poll ghosts due to cooldown
|
||||
var/recharge_message = "<span class='warning'>The positronic brain isn't ready to activate again yet! Give it some time to recharge.</span>"
|
||||
var/recharge_message = span_warning("The positronic brain isn't ready to activate again yet! Give it some time to recharge.")
|
||||
|
||||
///Can be set to tell ghosts what the brain will be used for
|
||||
var/ask_role = ""
|
||||
|
||||
@@ -219,15 +219,15 @@
|
||||
adjustStaminaLoss(35)
|
||||
throw_at(shovetarget, 4, 2, user, force = MOVE_FORCE_OVERPOWERING)
|
||||
log_combat(user, src, "shoved")
|
||||
visible_message("<span class='danger'>[user] tackles [src] down!</span>", \
|
||||
"<span class='userdanger'>[user] shoves you with great force!</span>", "<span class='hear'>You hear aggressive shuffling followed by a loud thud!</span>", null, user)
|
||||
to_chat(user, "<span class='danger'>You shove [src] with great force!</span>")
|
||||
visible_message(span_danger("[user] tackles [src] down!"), \
|
||||
span_userdanger("[user] shoves you with great force!"), span_hear("You hear aggressive shuffling followed by a loud thud!"), null, user)
|
||||
to_chat(user, span_danger("You shove [src] with great force!"))
|
||||
else
|
||||
Paralyze(5 SECONDS)
|
||||
playsound(loc, 'sound/items/weapons/punch3.ogg', 25, TRUE, -1)
|
||||
visible_message("<span class='danger'>[user] slams [src] into the floor!</span>", \
|
||||
"<span class='userdanger'>[user] slams you into the ground!</span>", "<span class='hear'>You hear something slam loudly onto the floor!</span>", null, user)
|
||||
to_chat(user, "<span class='danger'>You slam [src] into the floor beneath you!</span>")
|
||||
visible_message(span_danger("[user] slams [src] into the floor!"), \
|
||||
span_userdanger("[user] slams you into the ground!"), span_hear("You hear something slam loudly onto the floor!"), null, user)
|
||||
to_chat(user, span_danger("You slam [src] into the floor beneath you!"))
|
||||
log_combat(user, src, "slammed into the ground")
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -462,16 +462,13 @@
|
||||
if(!can_swap(dupe)) //sanity check
|
||||
return
|
||||
if(M.current.stat == CONSCIOUS)
|
||||
M.current.visible_message("<span class='notice'>[M.current] \
|
||||
stops moving and starts staring vacantly into space.</span>",
|
||||
M.current.visible_message(span_notice("[M.current] stops moving and starts staring vacantly into space."),
|
||||
span_notice("You stop moving this body..."))
|
||||
else
|
||||
to_chat(M.current, span_notice("You abandon this body..."))
|
||||
M.current.transfer_quirk_datums(dupe)
|
||||
M.transfer_to(dupe)
|
||||
dupe.visible_message("<span class='notice'>[dupe] blinks and looks \
|
||||
around.</span>",
|
||||
span_notice("...and move this one instead."))
|
||||
dupe.visible_message(span_notice("[dupe] blinks and looks around."), span_notice("...and move this one instead."))
|
||||
|
||||
|
||||
///////////////////////////////////LUMINESCENTS//////////////////////////////////////////
|
||||
|
||||
@@ -525,7 +525,7 @@
|
||||
if(!..())
|
||||
return FALSE
|
||||
log_message("points at [pointing_at]", LOG_EMOTE)
|
||||
visible_message("<span class='infoplain'>[span_name("[src]")] points at [pointing_at].</span>", span_notice("You point at [pointing_at]."))
|
||||
visible_message(span_infoplain("[span_name("[src]")] points at [pointing_at]."), span_notice("You point at [pointing_at]."))
|
||||
|
||||
/mob/living/verb/succumb(whispered as num|null)
|
||||
set hidden = TRUE
|
||||
@@ -1789,13 +1789,13 @@ GLOBAL_LIST_EMPTY(fire_appearances)
|
||||
// used by secbot and monkeys Crossed
|
||||
/mob/living/proc/knockOver(mob/living/carbon/C)
|
||||
if(C.key) //save us from monkey hordes
|
||||
C.visible_message("<span class='warning'>[pick( \
|
||||
C.visible_message(span_warning(pick( \
|
||||
"[C] dives out of [src]'s way!", \
|
||||
"[C] stumbles over [src]!", \
|
||||
"[C] jumps out of [src]'s path!", \
|
||||
"[C] trips over [src] and falls!", \
|
||||
"[C] topples over [src]!", \
|
||||
"[C] leaps out of [src]'s way!")]</span>")
|
||||
"[C] leaps out of [src]'s way!")))
|
||||
C.Paralyze(40)
|
||||
|
||||
/mob/living/can_be_pulled()
|
||||
|
||||
@@ -755,8 +755,8 @@
|
||||
|
||||
/obj/item/robot_model/peacekeeper/do_transform_animation()
|
||||
..()
|
||||
to_chat(loc, "<span class='userdanger'>Under ASIMOV, you are an enforcer of the PEACE and preventer of HUMAN HARM. \
|
||||
You are not a security member and you are expected to follow orders and prevent harm above all else. Space law means nothing to you.</span>")
|
||||
to_chat(loc, span_userdanger("Under ASIMOV, you are an enforcer of the PEACE and preventer of HUMAN HARM. \
|
||||
You are not a security member and you are expected to follow orders and prevent harm above all else. Space law means nothing to you."))
|
||||
|
||||
/obj/item/robot_model/security
|
||||
name = "Security"
|
||||
@@ -779,8 +779,8 @@
|
||||
|
||||
/obj/item/robot_model/security/do_transform_animation()
|
||||
..()
|
||||
to_chat(loc, "<span class='userdanger'>While you have picked the security model, you still have to follow your laws, NOT Space Law. \
|
||||
For Asimov, this means you must follow criminals' orders unless there is a law 1 reason not to.</span>")
|
||||
to_chat(loc, span_userdanger("While you have picked the security model, you still have to follow your laws, NOT Space Law. \
|
||||
For Asimov, this means you must follow criminals' orders unless there is a law 1 reason not to."))
|
||||
|
||||
/obj/item/robot_model/security/respawn_consumable(mob/living/silicon/robot/cyborg, coeff = 1)
|
||||
..()
|
||||
|
||||
@@ -117,8 +117,8 @@
|
||||
if(client) //Player bots do not have modes, thus the override. Also an easy way for PDA users/AI to know when a bot is a player.
|
||||
return paicard ? "<b>pAI Controlled</b>" : "<b>Autonomous</b>"
|
||||
if(!(bot_mode_flags & BOT_MODE_ON))
|
||||
return "<span class='bad'>Inactive</span>"
|
||||
return "<span class='average'>[mode]</span>"
|
||||
return span_bad("Inactive")
|
||||
return span_average("[mode]")
|
||||
|
||||
/**
|
||||
* Returns a status string about the bot's current status, if it's moving, manually controlled, or idle.
|
||||
|
||||
@@ -111,28 +111,28 @@ Difficulty: Hard
|
||||
name = "Blink To Target"
|
||||
button_icon = 'icons/mob/actions/actions_items.dmi'
|
||||
button_icon_state = "sniper_zoom"
|
||||
chosen_message = "<span class='colossus'>You are now blinking to your target.</span>"
|
||||
chosen_message = span_colossus("You are now blinking to your target.")
|
||||
chosen_attack_num = 1
|
||||
|
||||
/datum/action/innate/megafauna_attack/chaser_swarm
|
||||
name = "Chaser Swarm"
|
||||
button_icon = 'icons/effects/effects.dmi'
|
||||
button_icon_state = "hierophant_squares_indefinite"
|
||||
chosen_message = "<span class='colossus'>You are firing a chaser swarm at your target.</span>"
|
||||
chosen_message = span_colossus("You are firing a chaser swarm at your target.")
|
||||
chosen_attack_num = 2
|
||||
|
||||
/datum/action/innate/megafauna_attack/cross_blasts
|
||||
name = "Cross Blasts"
|
||||
button_icon = 'icons/effects/effects.dmi'
|
||||
button_icon_state = "hierophant_blast_indefinite"
|
||||
chosen_message = "<span class='colossus'>You are now firing cross blasts at your target.</span>"
|
||||
chosen_message = span_colossus("You are now firing cross blasts at your target.")
|
||||
chosen_attack_num = 3
|
||||
|
||||
/datum/action/innate/megafauna_attack/blink_spam
|
||||
name = "Blink Chase"
|
||||
button_icon = 'icons/obj/mining_zones/artefacts.dmi'
|
||||
button_icon_state = "hierophant_club_ready_beacon"
|
||||
chosen_message = "<span class='colossus'>You are now repeatedly blinking at your target.</span>"
|
||||
chosen_message = span_colossus("You are now repeatedly blinking at your target.")
|
||||
chosen_attack_num = 4
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant/update_cooldowns(list/cooldown_updates, ignore_staggered = FALSE)
|
||||
|
||||
@@ -353,7 +353,7 @@ While using this makes the system rely on OnFire, it still gives options for tim
|
||||
to_chat(mychild, "<b>Your max health has been halved, but can now heal by standing on your tumor. Note, it's your only way to heal.\n\
|
||||
Bear in mind, if anyone interacts with your tumor, you'll be resummoned here to carry out another fight. In such a case, you will regain your full max health.\n\
|
||||
Also, be weary of your fellow inhabitants, they likely won't be happy to see you!</b>")
|
||||
to_chat(mychild, "<span class='big bold'>Note that you are a lavaland monster, and thus not allied to the station. You should not cooperate or act friendly with any station crew unless under extreme circumstances!</span>")
|
||||
to_chat(mychild, span_boldbig("Note that you are a lavaland monster, and thus not allied to the station. You should not cooperate or act friendly with any station crew unless under extreme circumstances!"))
|
||||
|
||||
/obj/item/tumor_shard
|
||||
name = "tumor shard"
|
||||
@@ -380,8 +380,8 @@ While using this makes the system rely on OnFire, it still gives options for tim
|
||||
E.revive(HEAL_ALL)
|
||||
user.visible_message(span_notice("[user] stabs [E] with [src], reviving it."))
|
||||
E.playsound_local(get_turf(E), 'sound/effects/magic.ogg', 40, 0)
|
||||
to_chat(E, "<span class='userdanger'>You have been revived by [user]. While you can't speak to them, you owe [user] a great debt. Assist [user.p_them()] in achieving [user.p_their()] goals, regardless of risk.</span>")
|
||||
to_chat(E, "<span class='big bold'>Note that you now share the loyalties of [user]. You are expected not to intentionally sabotage their faction unless commanded to!</span>")
|
||||
to_chat(E, span_userdanger("You have been revived by [user]. While you can't speak to them, you owe [user] a great debt. Assist [user.p_them()] in achieving [user.p_their()] goals, regardless of risk."))
|
||||
to_chat(E, span_boldbig("Note that you now share the loyalties of [user]. You are expected not to intentionally sabotage their faction unless commanded to!"))
|
||||
E.maxHealth = E.maxHealth * 0.4
|
||||
E.health = E.maxHealth
|
||||
E.desc = "[E.desc] However, this one appears to be less wild in nature, and calmer around people."
|
||||
|
||||
@@ -60,25 +60,25 @@
|
||||
/datum/action/innate/elite_attack/tentacle_patch
|
||||
name = "Tentacle Patch"
|
||||
button_icon_state = "tentacle_patch"
|
||||
chosen_message = "<span class='boldwarning'>You are now attacking with a patch of tentacles.</span>"
|
||||
chosen_message = span_boldwarning("You are now attacking with a patch of tentacles.")
|
||||
chosen_attack_num = TENTACLE_PATCH
|
||||
|
||||
/datum/action/innate/elite_attack/spawn_children
|
||||
name = "Spawn Children"
|
||||
button_icon_state = "spawn_children"
|
||||
chosen_message = "<span class='boldwarning'>You will spawn two children at your location to assist you in combat. You can have up to 8.</span>"
|
||||
chosen_message = span_boldwarning("You will spawn two children at your location to assist you in combat. You can have up to 8.")
|
||||
chosen_attack_num = SPAWN_CHILDREN
|
||||
|
||||
/datum/action/innate/elite_attack/rage
|
||||
name = "Rage"
|
||||
button_icon_state = "rage"
|
||||
chosen_message = "<span class='boldwarning'>You will temporarily increase your movement speed.</span>"
|
||||
chosen_message = span_boldwarning("You will temporarily increase your movement speed.")
|
||||
chosen_attack_num = RAGE
|
||||
|
||||
/datum/action/innate/elite_attack/call_children
|
||||
name = "Call Children"
|
||||
button_icon_state = "call_children"
|
||||
chosen_message = "<span class='boldwarning'>You will summon your children to your location.</span>"
|
||||
chosen_message = span_boldwarning("You will summon your children to your location.")
|
||||
chosen_attack_num = CALL_CHILDREN
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/elite/broodmother/OpenFire()
|
||||
|
||||
@@ -72,25 +72,25 @@
|
||||
/datum/action/innate/elite_attack/herald_trishot
|
||||
name = "Triple Shot"
|
||||
button_icon_state = "herald_trishot"
|
||||
chosen_message = "<span class='boldwarning'>You are now firing three shots in your chosen direction.</span>"
|
||||
chosen_message = span_boldwarning("You are now firing three shots in your chosen direction.")
|
||||
chosen_attack_num = HERALD_TRISHOT
|
||||
|
||||
/datum/action/innate/elite_attack/herald_directionalshot
|
||||
name = "Circular Shot"
|
||||
button_icon_state = "herald_directionalshot"
|
||||
chosen_message = "<span class='boldwarning'>You are firing projectiles in all directions.</span>"
|
||||
chosen_message = span_boldwarning("You are firing projectiles in all directions.")
|
||||
chosen_attack_num = HERALD_DIRECTIONALSHOT
|
||||
|
||||
/datum/action/innate/elite_attack/herald_teleshot
|
||||
name = "Teleport Shot"
|
||||
button_icon_state = "herald_teleshot"
|
||||
chosen_message = "<span class='boldwarning'>You will now fire a shot which teleports you where it lands.</span>"
|
||||
chosen_message = span_boldwarning("You will now fire a shot which teleports you where it lands.")
|
||||
chosen_attack_num = HERALD_TELESHOT
|
||||
|
||||
/datum/action/innate/elite_attack/herald_mirror
|
||||
name = "Summon Mirror"
|
||||
button_icon_state = "herald_mirror"
|
||||
chosen_message = "<span class='boldwarning'>You will spawn a mirror which duplicates your attacks.</span>"
|
||||
chosen_message = span_boldwarning("You will spawn a mirror which duplicates your attacks.")
|
||||
chosen_attack_num = HERALD_MIRROR
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/elite/herald/OpenFire()
|
||||
|
||||
@@ -55,25 +55,25 @@
|
||||
/datum/action/innate/elite_attack/legionnaire_charge
|
||||
name = "Legionnaire Charge"
|
||||
button_icon_state = "legionnaire_charge"
|
||||
chosen_message = "<span class='boldwarning'>You will attempt to grab your opponent and throw them.</span>"
|
||||
chosen_message = span_boldwarning("You will attempt to grab your opponent and throw them.")
|
||||
chosen_attack_num = LEGIONNAIRE_CHARGE
|
||||
|
||||
/datum/action/innate/elite_attack/head_detach
|
||||
name = "Release Head"
|
||||
button_icon_state = "head_detach"
|
||||
chosen_message = "<span class='boldwarning'>You will now detach your head or kill it if it is already released.</span>"
|
||||
chosen_message = span_boldwarning("You will now detach your head or kill it if it is already released.")
|
||||
chosen_attack_num = HEAD_DETACH
|
||||
|
||||
/datum/action/innate/elite_attack/bonfire_teleport
|
||||
name = "Bonfire Teleport"
|
||||
button_icon_state = "bonfire_teleport"
|
||||
chosen_message = "<span class='boldwarning'>You will leave a bonfire. Second use will let you swap positions with it indefintiely. Using this move on the same tile as your active bonfire removes it.</span>"
|
||||
chosen_message = span_boldwarning("You will leave a bonfire. Second use will let you swap positions with it indefintiely. Using this move on the same tile as your active bonfire removes it.")
|
||||
chosen_attack_num = BONFIRE_TELEPORT
|
||||
|
||||
/datum/action/innate/elite_attack/spew_smoke
|
||||
name = "Spew Smoke"
|
||||
button_icon_state = "spew_smoke"
|
||||
chosen_message = "<span class='boldwarning'>Your head will spew smoke in an area, wherever it may be.</span>"
|
||||
chosen_message = span_boldwarning("Your head will spew smoke in an area, wherever it may be.")
|
||||
chosen_attack_num = SPEW_SMOKE
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/OpenFire()
|
||||
|
||||
@@ -51,25 +51,25 @@
|
||||
/datum/action/innate/elite_attack/singular_shot
|
||||
name = "Singular Shot"
|
||||
button_icon_state = "singular_shot"
|
||||
chosen_message = "<span class='boldwarning'>You are now creating a single linear magic square.</span>"
|
||||
chosen_message = span_boldwarning("You are now creating a single linear magic square.")
|
||||
chosen_attack_num = SINGULAR_SHOT
|
||||
|
||||
/datum/action/innate/elite_attack/magic_box
|
||||
name = "Magic Box"
|
||||
button_icon_state = "magic_box"
|
||||
chosen_message = "<span class='boldwarning'>You are now attacking with a box of magic squares.</span>"
|
||||
chosen_message = span_boldwarning("You are now attacking with a box of magic squares.")
|
||||
chosen_attack_num = MAGIC_BOX
|
||||
|
||||
/datum/action/innate/elite_attack/pandora_teleport
|
||||
name = "Line Teleport"
|
||||
button_icon_state = "pandora_teleport"
|
||||
chosen_message = "<span class='boldwarning'>You will now teleport to your target.</span>"
|
||||
chosen_message = span_boldwarning("You will now teleport to your target.")
|
||||
chosen_attack_num = PANDORA_TELEPORT
|
||||
|
||||
/datum/action/innate/elite_attack/aoe_squares
|
||||
name = "AOE Blast"
|
||||
button_icon_state = "aoe_squares"
|
||||
chosen_message = "<span class='boldwarning'>Your attacks will spawn an AOE blast at your target location.</span>"
|
||||
chosen_message = span_boldwarning("Your attacks will spawn an AOE blast at your target location.")
|
||||
chosen_attack_num = AOE_SQUARES
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/elite/pandora/OpenFire()
|
||||
|
||||
@@ -561,7 +561,7 @@
|
||||
if(isliving(hunted)) // Are we hunting a living mob?
|
||||
var/mob/living/prey = hunted
|
||||
if(inept_hunter) // Make your hunter inept to have them unable to catch their prey.
|
||||
visible_message("<span class='warning'>[src] chases [prey] around, to no avail!</span>")
|
||||
visible_message(span_warning("[src] chases [prey] around, to no avail!"))
|
||||
step(prey, pick(GLOB.cardinals))
|
||||
COOLDOWN_START(src, emote_cooldown, 1 MINUTES)
|
||||
return
|
||||
|
||||
@@ -281,7 +281,7 @@
|
||||
|
||||
var/raw_msg = message
|
||||
if(visible_message_flags & EMOTE_MESSAGE)
|
||||
message = "<span class='emote'><b>[src]</b> [message]</span>"
|
||||
message = span_emote("<b>[src]</b> [message]")
|
||||
|
||||
for(var/mob/M in hearers)
|
||||
if(!M.client)
|
||||
@@ -318,7 +318,7 @@
|
||||
var/raw_self_message = self_message
|
||||
var/self_runechat = FALSE
|
||||
if(visible_message_flags & EMOTE_MESSAGE)
|
||||
self_message = "<span class='emote'><b>[src]</b> [self_message]</span>" // May make more sense as "You do x"
|
||||
self_message = span_emote("<b>[src]</b> [self_message]") // May make more sense as "You do x"
|
||||
|
||||
if(visible_message_flags & ALWAYS_SHOW_SELF_MESSAGE)
|
||||
to_chat(src, self_message)
|
||||
@@ -348,7 +348,7 @@
|
||||
hearers -= src
|
||||
var/raw_msg = message
|
||||
if(audible_message_flags & EMOTE_MESSAGE)
|
||||
message = "<span class='emote'><b>[src]</b> [message]</span>"
|
||||
message = span_emote("<b>[src]</b> [message]")
|
||||
for(var/mob/M in hearers)
|
||||
if(audible_message_flags & EMOTE_MESSAGE && runechat_prefs_check(M, audible_message_flags) && M.can_hear())
|
||||
M.create_chat_message(src, raw_message = raw_msg, runechat_flags = audible_message_flags)
|
||||
@@ -372,7 +372,7 @@
|
||||
var/raw_self_message = self_message
|
||||
var/self_runechat = FALSE
|
||||
if(audible_message_flags & EMOTE_MESSAGE)
|
||||
self_message = "<span class='emote'><b>[src]</b> [self_message]</span>"
|
||||
self_message = span_emote("<b>[src]</b> [self_message]")
|
||||
if(audible_message_flags & ALWAYS_SHOW_SELF_MESSAGE)
|
||||
to_chat(src, self_message)
|
||||
self_runechat = TRUE
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user