Refactors most spans into span procs (#59645)

Converts most spans into span procs. Mostly used regex for this and sorted out any compile time errors afterwards so there could be some bugs.
Was initially going to do defines, but ninja said to make it into a proc, and if there's any overhead, they can easily be changed to defines.

Makes it easier to control the formatting and prevents typos when creating spans as it'll runtime if you misspell instead of silently failing.
Reduces the code you need to write when writing spans, as you don't need to close the span as that's automatically handled by the proc.

(Note from Lemon: This should be converted to defines once we update the minimum version to 514. Didn't do it now because byond pain and such)
This commit is contained in:
Watermelon914
2021-06-14 21:03:53 +01:00
committed by GitHub
parent b9982f6970
commit 375a20e49b
1676 changed files with 15455 additions and 15226 deletions

View File

@@ -3,7 +3,7 @@
#define TGS_DEFINE_AND_SET_GLOBAL(Name, Value) GLOBAL_VAR_INIT(##Name, ##Value); GLOBAL_PROTECT(##Name)
#define TGS_READ_GLOBAL(Name) GLOB.##Name
#define TGS_WRITE_GLOBAL(Name, Value) GLOB.##Name = ##Value
#define TGS_WORLD_ANNOUNCE(message) to_chat(world, "<span class='boldannounce'>[html_encode(##message)]</span>")
#define TGS_WORLD_ANNOUNCE(message) to_chat(world, span_boldannounce("[html_encode(##message)]"))
#define TGS_INFO_LOG(message) log_world("TGS Info: [##message]")
#define TGS_WARNING_LOG(message) log_world("TGS Warn: [##message]")
#define TGS_ERROR_LOG(message) log_world("TGS Error: [##message]")

View File

@@ -52,10 +52,10 @@ GLOBAL_LIST_INIT(typecache_powerfailure_safe_areas, typecacheof(/area/engineerin
))
var/list/turfs = detect_room(get_turf(creator), area_or_turf_fail_types, BP_MAX_ROOM_SIZE*2)
if(!turfs)
to_chat(creator, "<span class='warning'>The new area must be completely airtight and not a part of a shuttle.</span>")
to_chat(creator, span_warning("The new area must be completely airtight and not a part of a shuttle."))
return
if(turfs.len > BP_MAX_ROOM_SIZE)
to_chat(creator, "<span class='warning'>The room you're in is too big. It is [turfs.len >= BP_MAX_ROOM_SIZE *2 ? "more than 100" : ((turfs.len / BP_MAX_ROOM_SIZE)-1)*100]% larger than allowed.</span>")
to_chat(creator, span_warning("The room you're in is too big. It is [turfs.len >= BP_MAX_ROOM_SIZE *2 ? "more than 100" : ((turfs.len / BP_MAX_ROOM_SIZE)-1)*100]% larger than allowed."))
return
var/list/areas = list("New Area" = /area)
for(var/i in 1 to turfs.len)
@@ -69,7 +69,7 @@ GLOBAL_LIST_INIT(typecache_powerfailure_safe_areas, typecacheof(/area/engineerin
area_choice = areas[area_choice]
if(!area_choice)
to_chat(creator, "<span class='warning'>No choice selected. The area remains undefined.</span>")
to_chat(creator, span_warning("No choice selected. The area remains undefined."))
return
var/area/newA
var/area/oldA = get_area(get_turf(creator))
@@ -78,7 +78,7 @@ GLOBAL_LIST_INIT(typecache_powerfailure_safe_areas, typecacheof(/area/engineerin
if(!str || !length(str)) //cancel
return
if(length(str) > 50)
to_chat(creator, "<span class='warning'>The given name is too long. The area remains undefined.</span>")
to_chat(creator, span_warning("The given name is too long. The area remains undefined."))
return
newA = new area_choice
newA.setup(str)
@@ -100,7 +100,7 @@ GLOBAL_LIST_INIT(typecache_powerfailure_safe_areas, typecacheof(/area/engineerin
var/obj/machinery/door/firedoor/FD = door
FD.CalculateAffectingAreas()
to_chat(creator, "<span class='notice'>You have created a new area, named [newA.name]. It is now weather proof, and constructing an APC will allow it to be powered.</span>")
to_chat(creator, span_notice("You have created a new area, named [newA.name]. It is now weather proof, and constructing an APC will allow it to be powered."))
return TRUE
#undef BP_MAX_ROOM_SIZE

View File

@@ -394,22 +394,22 @@
var/list/answers = ignore_category ? list("Yes", "No", "Never for this round") : list("Yes", "No")
switch(tgui_alert(M, Question, "A limited-time offer!", answers, timeout=poll_time))
if("Yes")
to_chat(M, "<span class='notice'>Choice registered: Yes.</span>")
to_chat(M, span_notice("Choice registered: Yes."))
if(time_passed + poll_time <= world.time)
to_chat(M, "<span class='danger'>Sorry, you answered too late to be considered!</span>")
to_chat(M, span_danger("Sorry, you answered too late to be considered!"))
SEND_SOUND(M, 'sound/machines/buzz-sigh.ogg')
candidates -= M
else
candidates += M
if("No")
to_chat(M, "<span class='danger'>Choice registered: No.</span>")
to_chat(M, span_danger("Choice registered: No."))
candidates -= M
if("Never for this round")
var/list/L = GLOB.poll_ignore[ignore_category]
if(!L)
GLOB.poll_ignore[ignore_category] = list()
GLOB.poll_ignore[ignore_category] += M.ckey
to_chat(M, "<span class='danger'>Choice registered: Never for this round.</span>")
to_chat(M, span_danger("Choice registered: Never for this round."))
candidates -= M
else
candidates -= M

View File

@@ -82,7 +82,7 @@
/mob/proc/nominate_heart(mob/heart_recepient, duration = 24 HOURS, instant = FALSE)
if(!mind || !client || !heart_recepient?.client)
return
to_chat(src, "<span class='nicegreen'>Commendation sent!</span>")
to_chat(src, span_nicegreen("Commendation sent!"))
message_admins("[key_name(src)] commended [key_name(heart_recepient)] [instant ? "" : "(roundend)"]")
log_admin("[key_name(src)] commended [key_name(heart_recepient)] [instant ? "" : "(roundend)"]")
if(instant || SSticker.current_state == GAME_STATE_FINISHED)

View File

@@ -354,7 +354,7 @@ GLOBAL_LIST_EMPTY(species_list)
if(interaction_key)
var/current_interaction_count = LAZYACCESS(user.do_afters, interaction_key) || 0
if(current_interaction_count >= max_interact_count) //We are at our peak
to_chat(user, "<span class='warning'>You can't do this at the moment!</span>")
to_chat(user, span_warning("You can't do this at the moment!"))
return
LAZYSET(user.do_afters, interaction_key, current_interaction_count + 1)
@@ -465,7 +465,7 @@ GLOBAL_LIST_EMPTY(species_list)
// Displays a message in deadchat, sent by source. source is not linkified, message is, to avoid stuff like character names to be linkified.
// Automatically gives the class deadsay to the whole message (message + source)
/proc/deadchat_broadcast(message, source=null, mob/follow_target=null, turf/turf_target=null, speaker_key=null, message_type=DEADCHAT_REGULAR, admin_only=FALSE)
message = "<span class='deadsay'>[source]<span class='linkify'>[message]</span></span>"
message = span_deadsay("[source]<span class='linkify'>[message]</span>")
for(var/mob/M in GLOB.player_list)
var/chat_toggles = TOGGLES_DEFAULT_CHAT
@@ -480,7 +480,7 @@ GLOBAL_LIST_EMPTY(species_list)
if (!M.client.holder)
return
else
message += "<span class='deadsay'> (This is viewable to admins only).</span>"
message += span_deadsay(" (This is viewable to admins only).")
var/override = FALSE
if(M.client.holder && (chat_toggles & CHAT_DEAD))
override = TRUE

View File

@@ -34,7 +34,7 @@
if(SSstation.announcer.custom_alert_message && !has_important_message)
announcement += SSstation.announcer.custom_alert_message
else
announcement += "<br><span class='alert'>[html_encode(text)]</span><br>"
announcement += "<br>[span_alert("[html_encode(text)]")]<br>"
announcement += "<br>"
var/s = sound(sound)
@@ -56,7 +56,7 @@
var/meeting_sound = sound('sound/misc/emergency_meeting.ogg')
var/announcement
announcement += "<h1 class='alert'>Captain Alert</h1>"
announcement += "<br><span class='alert'>[user] has called an Emergency Meeting!</span><br><br>"
announcement += "<br>[span_alert("[user] has called an Emergency Meeting!")]<br><br>"
for(var/mob/mob_to_teleport in GLOB.player_list) //gotta make sure the whole crew's here!
if(isnewplayer(mob_to_teleport) || iscameramob(mob_to_teleport))
@@ -99,7 +99,7 @@
for(var/mob/M in GLOB.player_list)
if(!isnewplayer(M) && M.can_hear())
to_chat(M, "<span class='minorannounce'><font color = red>[title]</font color><BR>[message]</span><BR>")
to_chat(M, "[span_minorannounce("<font color = red>[title]</font color><BR>[message]")]<BR>")
if(M.client.prefs.toggles & SOUND_ANNOUNCEMENTS)
if(alert)
SEND_SOUND(M, sound('sound/misc/notice1.ogg'))

View File

@@ -249,7 +249,7 @@
CHECK_TICK
handle_hearts()
set_observer_default_invisibility(0, "<span class='warning'>The round is over! You are now visible to the living.</span>")
set_observer_default_invisibility(0, span_warning("The round is over! You are now visible to the living."))
CHECK_TICK
@@ -328,7 +328,7 @@
var/info = statspage ? "<a href='?action=openLink&link=[url_encode(statspage)][GLOB.round_id]'>[GLOB.round_id]</a>" : GLOB.round_id
parts += "[FOURSPACES]Round ID: <b>[info]</b>"
parts += "[FOURSPACES]Shift Duration: <B>[DisplayTimeText(world.time - SSticker.round_start_time)]</B>"
parts += "[FOURSPACES]Station Integrity: <B>[GLOB.station_was_nuked ? "<span class='redtext'>Destroyed</span>" : "[popcount["station_integrity"]]%"]</B>"
parts += "[FOURSPACES]Station Integrity: <B>[GLOB.station_was_nuked ? span_redtext("Destroyed") : "[popcount["station_integrity"]]%"]</B>"
var/total_players = GLOB.joined_player_list.len
if(total_players)
parts+= "[FOURSPACES]Total Population: <B>[total_players]</B>"
@@ -413,14 +413,14 @@
parts += "<span class='marooned'>You managed to survive, but were marooned on [station_name()]...</span>"
else
parts += "<div class='panel greenborder'>"
parts += "<span class='greentext'>You managed to survive the events on [station_name()] as [M.real_name].</span>"
parts += span_greentext("You managed to survive the events on [station_name()] as [M.real_name].")
else
parts += "<div class='panel greenborder'>"
parts += "<span class='greentext'>You managed to survive the events on [station_name()] as [M.real_name].</span>"
parts += span_greentext("You managed to survive the events on [station_name()] as [M.real_name].")
else
parts += "<div class='panel redborder'>"
parts += "<span class='redtext'>You did not survive the events on [station_name()]...</span>"
parts += span_redtext("You did not survive the events on [station_name()]...")
else
parts += "<div class='panel stationborder'>"
parts += "<br>"
@@ -446,7 +446,7 @@
var/mob/living/silicon/ai/aiPlayer = i
var/datum/mind/aiMind = aiPlayer.deployed_shell?.mind || aiPlayer.mind
if(aiMind)
parts += "<b>[aiPlayer.name]</b> (Played by: <b>[aiMind.key]</b>)'s laws [aiPlayer.stat != DEAD ? "at the end of the round" : "when it was <span class='redtext'>deactivated</span>"] were:"
parts += "<b>[aiPlayer.name]</b> (Played by: <b>[aiMind.key]</b>)'s laws [aiPlayer.stat != DEAD ? "at the end of the round" : "when it was [span_redtext("deactivated")]"] were:"
parts += aiPlayer.laws.get_law_list(include_zeroth=TRUE)
parts += "<b>Total law changes: [aiPlayer.law_change_counter]</b>"
@@ -457,13 +457,13 @@
for(var/mob/living/silicon/robot/robo in aiPlayer.connected_robots)
borg_num--
if(robo.mind)
parts += "<b>[robo.name]</b> (Played by: <b>[robo.mind.key]</b>)[robo.stat == DEAD ? " <span class='redtext'>(Deactivated)</span>" : ""][borg_num ?", ":""]"
parts += "<b>[robo.name]</b> (Played by: <b>[robo.mind.key]</b>)[robo.stat == DEAD ? " [span_redtext("(Deactivated)")]" : ""][borg_num ?", ":""]"
if(!borg_spacer)
borg_spacer = TRUE
for (var/mob/living/silicon/robot/robo in GLOB.silicon_mobs)
if (!robo.connected_ai && robo.mind)
parts += "[borg_spacer?"<br>":""]<b>[robo.name]</b> (Played by: <b>[robo.mind.key]</b>) [(robo.stat != DEAD)? "<span class='greentext'>survived</span> as an AI-less borg!" : "was <span class='redtext'>unable to survive</span> the rigors of being a cyborg without an AI."] Its laws were:"
parts += "[borg_spacer?"<br>":""]<b>[robo.name]</b> (Played by: <b>[robo.mind.key]</b>) [(robo.stat != DEAD)? "[span_greentext("survived")] as an AI-less borg!" : "was [span_redtext("unable to survive")] the rigors of being a cyborg without an AI."] Its laws were:"
if(robo) //How the hell do we lose robo between here and the world messages directly above this?
parts += robo.laws.get_law_list(include_zeroth=TRUE)
@@ -513,12 +513,12 @@
log_econ("Roundend service income: [tourist_income] credits.")
switch(tourist_income)
if(0)
parts += "<span class='redtext'>Service did not earn any credits...</span><br>"
parts += "[span_redtext("Service did not earn any credits...")]<br>"
if(1 to 2000)
parts += "<span class='redtext'>Centcom is displeased. Come on service, surely you can do better than that.</span><br>"
parts += "[span_redtext("Centcom is displeased. Come on service, surely you can do better than that.")]<br>"
award_service(/datum/award/achievement/jobs/service_bad)
if(2001 to 4999)
parts += "<span class='greentext'>Centcom is satisfied with service's job today.</span><br>"
parts += "[span_greentext("Centcom is satisfied with service's job today.")]<br>"
award_service(/datum/award/achievement/jobs/service_okay)
else
parts += "<span class='reallybig greentext'>Centcom is incredibly impressed with service today! What a team!</span><br>"
@@ -682,17 +682,17 @@
var/text = "<b>[ply.key]</b> was <b>[ply.name]</b>[jobtext] and"
if(ply.current)
if(ply.current.stat == DEAD)
text += " <span class='redtext'>died</span>"
text += " [span_redtext("died")]"
else
text += " <span class='greentext'>survived</span>"
text += " [span_greentext("survived")]"
if(fleecheck)
var/turf/T = get_turf(ply.current)
if(!T || !is_station_level(T.z))
text += " while <span class='redtext'>fleeing the station</span>"
text += " while [span_redtext("fleeing the station")]"
if(ply.current.real_name != ply.name)
text += " as <b>[ply.current.real_name]</b>"
else
text += " <span class='redtext'>had their body destroyed</span>"
text += " [span_redtext("had their body destroyed")]"
return text
/proc/printplayerlist(list/players,fleecheck)
@@ -712,9 +712,9 @@
var/count = 1
for(var/datum/objective/objective in objectives)
if(objective.check_completion())
objective_parts += "<b>[objective.objective_name] #[count]</b>: [objective.explanation_text] <span class='greentext'>Success!</span>"
objective_parts += "<b>[objective.objective_name] #[count]</b>: [objective.explanation_text] [span_greentext("Success!")]"
else
objective_parts += "<b>[objective.objective_name] #[count]</b>: [objective.explanation_text] <span class='redtext'>Fail.</span>"
objective_parts += "<b>[objective.objective_name] #[count]</b>: [objective.explanation_text] [span_redtext("Fail.")]"
count++
return objective_parts.Join("<br>")

228
code/__HELPERS/span.dm Normal file
View File

@@ -0,0 +1,228 @@
// Sorted alphabetically
/proc/span_abductor(str)
return "<span class='abductor'>[str]</span>"
/proc/span_admin(str)
return "<span class='admin'>[str]</span>"
/proc/span_adminhelp(str)
return "<span class='adminhelp'>[str]</span>"
/proc/span_adminnotice(str)
return "<span class='adminnotice'>[str]</span>"
/proc/span_adminobserverooc(str)
return "<span class='adminobserverooc'>[str]</span>"
/proc/span_adminooc(str)
return "<span class='adminooc'>[str]</span>"
/proc/span_adminsay(str)
return "<span class='adminsay'>[str]</span>"
/proc/span_aiprivradio(str)
return "<span class='aiprivradio'>[str]</span>"
/proc/span_alert(str)
return "<span class='alert'>[str]</span>"
/proc/span_alertalien(str)
return "<span class='alertalien'>[str]</span>"
/proc/span_alertsyndie(str)
return "<span class='alertsyndie'>[str]</span>"
/proc/span_alertwarning(str)
return "<span class='alertwarning'>[str]</span>"
/proc/span_alien(str)
return "<span class='alien'>[str]</span>"
/proc/span_announce(str)
return "<span class='announce'>[str]</span>"
/proc/span_big(str)
return "<span class='big'>[str]</span>"
/proc/span_bigicon(str)
return "<span class='bigicon'>[str]</span>"
/proc/span_binarysay(str)
return "<span class='binarysay'>[str]</span>"
/proc/span_blue(str)
return "<span class='blue'>[str]</span>"
/proc/span_blueteamradio(str)
return "<span class='blueteamradio'>[str]</span>"
/proc/span_bold(str)
return "<span class='bold'>[str]</span>"
/proc/span_boldannounce(str)
return "<span class='boldannounce'>[str]</span>"
/proc/span_boldnotice(str)
return "<span class='boldnotice'>[str]</span>"
/proc/span_boldwarning(str)
return "<span class='boldwarning'>[str]</span>"
/proc/span_centcomradio(str)
return "<span class='centcomradio'>[str]</span>"
/proc/span_changeling(str)
return "<span class='changeling'>[str]</span>"
/proc/span_clown(str)
return "<span class='clown'>[str]</span>"
/proc/span_colossus(str)
return "<span class='colossus'>[str]</span>"
/proc/span_command_headset(str)
return "<span class='command_headset'>[str]</span>"
/proc/span_comradio(str)
return "<span class='comradio'>[str]</span>"
/proc/span_cult(str)
return "<span class='cult'>[str]</span>"
/proc/span_cultbold(str)
return "<span class='cultbold'>[str]</span>"
/proc/span_cultboldtalic(str)
return "<span class='cultboldtalic'>[str]</span>"
/proc/span_cultitalic(str)
return "<span class='cultitalic'>[str]</span>"
/proc/span_cultlarge(str)
return "<span class='cultlarge'>[str]</span>"
/proc/span_danger(str)
return "<span class='danger'>[str]</span>"
/proc/span_deadsay(str)
return "<span class='deadsay'>[str]</span>"
/proc/span_deconversion_message(str)
return "<span class='deconversion_message'>[str]</span>"
/proc/span_drone(str)
return "<span class='drone'>[str]</span>"
/proc/span_engradio(str)
return "<span class='engradio'>[str]</span>"
/proc/span_extremelybig(str)
return "<span class='extremelybig'>[str]</span>"
/proc/span_ghostalert(str)
return "<span class='ghostalert'>[str]</span>"
/proc/span_green(str)
return "<span class='green'>[str]</span>"
/proc/span_greenannounce(str)
return "<span class='greenannounce'>[str]</span>"
/proc/span_greenteamradio(str)
return "<span class='greenteamradio'>[str]</span>"
/proc/span_greentext(str)
return "<span class='greentext'>[str]</span>"
/proc/span_hear(str)
return "<span class='hear'>[str]</span>"
/proc/span_hidden(str)
return "<span class='hidden'>[str]</span>"
/proc/span_hierophant(str)
return "<span class='hierophant'>[str]</span>"
/proc/span_hierophant_warning(str)
return "<span class='hierophant_warning'>[str]</span>"
/proc/span_highlight(str)
return "<span class='highlight'>[str]</span>"
/proc/span_his_grace(str)
return "<span class='his_grace'>[str]</span>"
/proc/span_holoparasite(str)
return "<span class='holoparasite'>[str]</span>"
/proc/span_hypnophrase(str)
return "<span class='hypnophrase'>[str]</span>"
/proc/span_icon(str)
return "<span class='icon'>[str]</span>"
/proc/span_info(str)
return "<span class='info'>[str]</span>"
/proc/span_interface(str)
return "<span class='interface'>[str]</span>"
/proc/span_looc(str)
return "<span class='looc'>[str]</span>"
/proc/span_medal(str)
return "<span class='medal'>[str]</span>"
/proc/span_medradio(str)
return "<span class='medradio'>[str]</span>"
/proc/span_memo(str)
return "<span class='memo'>[str]</span>"
/proc/span_memoedit(str)
return "<span class='memoedit'>[str]</span>"
/proc/span_mind_control(str)
return "<span class='mind_control'>[str]</span>"
/proc/span_minorannounce(str)
return "<span class='minorannounce'>[str]</span>"
/proc/span_monkey(str)
return "<span class='monkey'>[str]</span>"
/proc/span_monkeyhive(str)
return "<span class='monkeyhive'>[str]</span>"
/proc/span_monkeylead(str)
return "<span class='monkeylead'>[str]</span>"
/proc/span_name(str)
return "<span class='name'>[str]</span>"
/proc/span_narsie(str)
return "<span class='narsie'>[str]</span>"
/proc/span_narsiesmall(str)
return "<span class='narsiesmall'>[str]</span>"
/proc/span_nicegreen(str)
return "<span class='nicegreen'>[str]</span>"
/proc/span_notice(str)
return "<span class='notice'>[str]</span>"
/proc/span_noticealien(str)
return "<span class='noticealien'>[str]</span>"
/proc/span_ooc(str)
return "<span class='ooc'>[str]</span>"
/proc/span_papyrus(str)
return "<span class='papyrus'>[str]</span>"
/proc/span_phobia(str)
return "<span class='phobia'>[str]</span>"
/proc/span_prefix(str)
return "<span class='prefix'>[str]</span>"
/proc/span_purple(str)
return "<span class='purple'>[str]</span>"
/proc/span_radio(str)
return "<span class='radio'>[str]</span>"
/proc/span_reallybig(str)
return "<span class='reallybig'>[str]</span>"
/proc/span_red(str)
return "<span class='red'>[str]</span>"
/proc/span_redteamradio(str)
return "<span class='redteamradio'>[str]</span>"
/proc/span_redtext(str)
return "<span class='redtext'>[str]</span>"
/proc/span_resonate(str)
return "<span class='resonate'>[str]</span>"
/proc/span_revenbignotice(str)
return "<span class='revenbignotice'>[str]</span>"
/proc/span_revenboldnotice(str)
return "<span class='revenboldnotice'>[str]</span>"
/proc/span_revendanger(str)
return "<span class='revendanger'>[str]</span>"
/proc/span_revenminor(str)
return "<span class='revenminor'>[str]</span>"
/proc/span_revennotice(str)
return "<span class='revennotice'>[str]</span>"
/proc/span_revenwarning(str)
return "<span class='revenwarning'>[str]</span>"
/proc/span_robot(str)
return "<span class='robot'>[str]</span>"
/proc/span_rose(str)
return "<span class='rose'>[str]</span>"
/proc/span_sans(str)
return "<span class='sans'>[str]</span>"
/proc/span_sciradio(str)
return "<span class='sciradio'>[str]</span>"
/proc/span_secradio(str)
return "<span class='secradio'>[str]</span>"
/proc/span_servradio(str)
return "<span class='servradio'>[str]</span>"
/proc/span_singing(str)
return "<span class='singing'>[str]</span>"
/proc/span_slime(str)
return "<span class='slime'>[str]</span>"
/proc/span_small(str)
return "<span class='small'>[str]</span>"
/proc/span_smallnotice(str)
return "<span class='smallnotice'>[str]</span>"
/proc/span_smallnoticeital(str)
return "<span class='smallnoticeital'>[str]</span>"
/proc/span_spider(str)
return "<span class='spider'>[str]</span>"
/proc/span_suicide(str)
return "<span class='suicide'>[str]</span>"
/proc/span_suppradio(str)
return "<span class='suppradio'>[str]</span>"
/proc/span_swarmer(str)
return "<span class='swarmer'>[str]</span>"
/proc/span_syndradio(str)
return "<span class='syndradio'>[str]</span>"
/proc/span_tape_recorder(str)
return "<span class='tape_recorder'>[str]</span>"
/proc/span_tinynotice(str)
return "<span class='tinynotice'>[str]</span>"
/proc/span_tinynoticeital(str)
return "<span class='tinynoticeital'>[str]</span>"
/proc/span_unconscious(str)
return "<span class='unconscious'>[str]</span>"
/proc/span_userdanger(str)
return "<span class='userdanger'>[str]</span>"
/proc/span_warning(str)
return "<span class='warning'>[str]</span>"
/proc/span_yell(str)
return "<span class='yell'>[str]</span>"
/proc/span_yellowteamradio(str)
return "<span class='yellowteamradio'>[str]</span>"

View File

@@ -65,7 +65,7 @@
//while buckled, you can still connect to and control things like doors, but you can't use your modules
if(buckled)
to_chat(src, "<span class='warning'>You can't use modules while buckled to [buckled]!</span>")
to_chat(src, span_warning("You can't use modules while buckled to [buckled]!"))
return
if(W == A)

View File

@@ -25,7 +25,7 @@
return
if((istype(over_object, /atom/movable/screen/movable/action_button) && !istype(over_object, /atom/movable/screen/movable/action_button/hide_toggle)))
if(locked)
to_chat(usr, "<span class='warning'>Action button \"[name]\" is locked, unlock it first.</span>")
to_chat(usr, span_warning("Action button \"[name]\" is locked, unlock it first."))
return
var/atom/movable/screen/movable/action_button/B = over_object
var/list/actions = usr.actions
@@ -45,14 +45,14 @@
var/list/modifiers = params2list(params)
if(LAZYACCESS(modifiers, SHIFT_CLICK))
if(locked)
to_chat(usr, "<span class='warning'>Action button \"[name]\" is locked, unlock it first.</span>")
to_chat(usr, span_warning("Action button \"[name]\" is locked, unlock it first."))
return TRUE
moved = 0
usr.update_action_buttons() //redraw buttons that are no longer considered "moved"
return TRUE
if(LAZYACCESS(modifiers, CTRL_CLICK))
locked = !locked
to_chat(usr, "<span class='notice'>Action button \"[name]\" [locked ? "" : "un"]locked.</span>")
to_chat(usr, span_notice("Action button \"[name]\" [locked ? "" : "un"]locked."))
if(id && usr.client) //try to (un)remember position
usr.client.prefs.action_buttons_screen_locs["[name]_[id]"] = locked ? moved : null
return TRUE
@@ -97,14 +97,14 @@
var/list/modifiers = params2list(params)
if(LAZYACCESS(modifiers, SHIFT_CLICK))
if(locked)
to_chat(usr, "<span class='warning'>Action button \"[name]\" is locked, unlock it first.</span>")
to_chat(usr, span_warning("Action button \"[name]\" is locked, unlock it first."))
return TRUE
moved = FALSE
usr.update_action_buttons(TRUE)
return TRUE
if(LAZYACCESS(modifiers, CTRL_CLICK))
locked = !locked
to_chat(usr, "<span class='notice'>Action button \"[name]\" [locked ? "" : "un"]locked.</span>")
to_chat(usr, span_notice("Action button \"[name]\" [locked ? "" : "un"]locked."))
if(id && usr.client) //try to (un)remember position
usr.client.prefs.action_buttons_screen_locs["[name]_[id]"] = locked ? moved : null
return TRUE
@@ -121,7 +121,7 @@
if(id && usr.client)
usr.client.prefs.action_buttons_screen_locs["[name]_[id]"] = null
usr.update_action_buttons(TRUE)
to_chat(usr, "<span class='notice'>Action button positions have been reset.</span>")
to_chat(usr, span_notice("Action button positions have been reset."))
return TRUE
usr.hud_used.action_buttons_hidden = !usr.hud_used.action_buttons_hidden
@@ -141,7 +141,7 @@
if(moved)
moved = FALSE
user.update_action_buttons(TRUE)
to_chat(user, "<span class='notice'>Action button positions have been reset.</span>")
to_chat(user, span_notice("Action button positions have been reset."))
/atom/movable/screen/movable/action_button/hide_toggle/proc/InitialiseIcon(datum/hud/owner_hud)

View File

@@ -247,7 +247,7 @@ or something covering your eyes."
. = ..()
if(!.)
return
to_chat(owner, "<span class='mind_control'>[command]</span>")
to_chat(owner, span_mind_control("[command]"))
/atom/movable/screen/alert/drunk
name = "Drunk"
@@ -332,7 +332,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
SIGNAL_HANDLER
if (!giver.CanReach(taker))
to_chat(owner, "<span class='warning'>You moved out of range of [giver]!</span>")
to_chat(owner, span_warning("You moved out of range of [giver]!"))
owner.clear_alert("[giver]")
/atom/movable/screen/alert/give/Click(location, control, params)
@@ -779,7 +779,7 @@ so as to remain in compliance with the most up-to-date laws."
return FALSE
var/list/modifiers = params2list(params)
if(LAZYACCESS(modifiers, SHIFT_CLICK)) // screen objects don't do the normal Click() stuff so we'll cheat
to_chat(usr, "<span class='boldnotice'>[name]</span> - <span class='info'>[desc]</span>")
to_chat(usr, span_boldnotice("[name]</span> - <span class='info'>[desc]"))
return FALSE
if(master && click_master)
return usr.client.Click(master, location, control, params)

View File

@@ -272,9 +272,9 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
if(hud_used && client)
hud_used.show_hud() //Shows the next hud preset
to_chat(usr, "<span class='info'>Switched HUD mode. Press F12 to toggle.</span>")
to_chat(usr, span_info("Switched HUD mode. Press F12 to toggle."))
else
to_chat(usr, "<span class='warning'>This mob type does not use a HUD.</span>")
to_chat(usr, span_warning("This mob type does not use a HUD."))
//(re)builds the hand ui slots, throwing away old ones

View File

@@ -1,4 +1,4 @@
#define PAI_MISSING_SOFTWARE_MESSAGE "<span class='warning'>You must download the required software to use this.</span>"
#define PAI_MISSING_SOFTWARE_MESSAGE span_warning("You must download the required software to use this.")
/atom/movable/screen/pai
icon = 'icons/hud/screen_pai.dmi'
@@ -94,7 +94,7 @@
else
pAI.hostscan.attack(pAI.card.loc, pAI)
else
to_chat(src, "<span class='warning'>You are not being carried by anyone!</span>")
to_chat(src, span_warning("You are not being carried by anyone!"))
return FALSE
/atom/movable/screen/pai/crew_manifest

View File

@@ -206,7 +206,7 @@
screenmob.client.screen += module_store_icon //"store" icon
if(!R.model.modules)
to_chat(usr, "<span class='warning'>Selected model has no modules to select!</span>")
to_chat(usr, span_warning("Selected model has no modules to select!"))
return
if(!R.robot_modules_background)

View File

@@ -100,7 +100,7 @@
return TRUE
var/area/A = get_area(usr)
if(!A.outdoors)
to_chat(usr, "<span class='warning'>There is already a defined structure here.</span>")
to_chat(usr, span_warning("There is already a defined structure here."))
return TRUE
create_area(usr)
@@ -320,49 +320,49 @@
if(C.internal)
C.internal = null
to_chat(C, "<span class='notice'>You are no longer running on internals.</span>")
to_chat(C, span_notice("You are no longer running on internals."))
icon_state = "internal0"
else
if(!C.getorganslot(ORGAN_SLOT_BREATHING_TUBE))
if(!istype(C.wear_mask, /obj/item/clothing/mask))
to_chat(C, "<span class='warning'>You are not wearing an internals mask!</span>")
to_chat(C, span_warning("You are not wearing an internals mask!"))
return 1
else
var/obj/item/clothing/mask/M = C.wear_mask
if(M.mask_adjusted) // if mask on face but pushed down
M.adjustmask(C) // adjust it back
if( !(M.clothing_flags & MASKINTERNALS) )
to_chat(C, "<span class='warning'>You are not wearing an internals mask!</span>")
to_chat(C, span_warning("You are not wearing an internals mask!"))
return
var/obj/item/I = C.is_holding_item_of_type(/obj/item/tank)
if(I)
to_chat(C, "<span class='notice'>You are now running on internals from [I] in your [C.get_held_index_name(C.get_held_index_of_item(I))].</span>")
to_chat(C, span_notice("You are now running on internals from [I] in your [C.get_held_index_name(C.get_held_index_of_item(I))]."))
C.internal = I
else if(ishuman(C))
var/mob/living/carbon/human/H = C
if(istype(H.s_store, /obj/item/tank))
to_chat(H, "<span class='notice'>You are now running on internals from [H.s_store] on your [H.wear_suit.name].</span>")
to_chat(H, span_notice("You are now running on internals from [H.s_store] on your [H.wear_suit.name]."))
H.internal = H.s_store
else if(istype(H.belt, /obj/item/tank))
to_chat(H, "<span class='notice'>You are now running on internals from [H.belt] on your belt.</span>")
to_chat(H, span_notice("You are now running on internals from [H.belt] on your belt."))
H.internal = H.belt
else if(istype(H.l_store, /obj/item/tank))
to_chat(H, "<span class='notice'>You are now running on internals from [H.l_store] in your left pocket.</span>")
to_chat(H, span_notice("You are now running on internals from [H.l_store] in your left pocket."))
H.internal = H.l_store
else if(istype(H.r_store, /obj/item/tank))
to_chat(H, "<span class='notice'>You are now running on internals from [H.r_store] in your right pocket.</span>")
to_chat(H, span_notice("You are now running on internals from [H.r_store] in your right pocket."))
H.internal = H.r_store
//Separate so CO2 jetpacks are a little less cumbersome.
if(!C.internal && istype(C.back, /obj/item/tank))
to_chat(C, "<span class='notice'>You are now running on internals from [C.back] on your back.</span>")
to_chat(C, span_notice("You are now running on internals from [C.back] on your back."))
C.internal = C.back
if(C.internal)
icon_state = "internal1"
else
to_chat(C, "<span class='warning'>You don't have an oxygen tank!</span>")
to_chat(C, span_warning("You don't have an oxygen tank!"))
return
C.update_action_buttons_icon()

View File

@@ -168,7 +168,7 @@
return
if(force && HAS_TRAIT(user, TRAIT_PACIFISM))
to_chat(user, "<span class='warning'>You don't want to harm other living beings!</span>")
to_chat(user, span_warning("You don't want to harm other living beings!"))
return
if(!force)
@@ -213,8 +213,8 @@
no_damage = FALSE
//only witnesses close by and the victim see a hit message.
log_combat(user, src, "attacked", I)
user.visible_message("<span class='danger'>[user] hits [src] with [I][no_damage ? ", which doesn't leave a mark" : ""]!</span>", \
"<span class='danger'>You hit [src] with [I][no_damage ? ", which doesn't leave a mark" : ""]!</span>", null, COMBAT_MESSAGE_RANGE)
user.visible_message(span_danger("[user] hits [src] with [I][no_damage ? ", which doesn't leave a mark" : ""]!"), \
span_danger("You hit [src] with [I][no_damage ? ", which doesn't leave a mark" : ""]!"), null, COMBAT_MESSAGE_RANGE)
/mob/living/attacked_by(obj/item/I, mob/living/user)
send_item_attack_message(I, user)
@@ -288,7 +288,7 @@
attack_message_victim = "[user] [message_verb_continuous] you[message_hit_area] with [I]!"
if(user == src)
attack_message_victim = "You [message_verb_simple] yourself[message_hit_area] with [I]"
visible_message("<span class='danger'>[attack_message_spectator]</span>",\
"<span class='userdanger'>[attack_message_victim]</span>", null, COMBAT_MESSAGE_RANGE, user)
to_chat(user, "<span class='danger'>[attack_message_attacker]</span>")
visible_message(span_danger("[attack_message_spectator]"),\
span_userdanger("[attack_message_victim]"), null, COMBAT_MESSAGE_RANGE, user)
to_chat(user, span_danger("[attack_message_attacker]"))
return 1

View File

@@ -23,10 +23,10 @@
if(!has_active_hand()) //can't attack without a hand.
var/obj/item/bodypart/check_arm = get_active_hand()
if(check_arm?.bodypart_disabled)
to_chat(src, "<span class='warning'>Your [check_arm.name] is in no condition to be used.</span>")
to_chat(src, span_warning("Your [check_arm.name] is in no condition to be used."))
return
to_chat(src, "<span class='notice'>You look at your arm and sigh.</span>")
to_chat(src, span_notice("You look at your arm and sigh."))
return
// Special glove functions:
@@ -75,7 +75,7 @@
if(!user.can_interact_with(src))
return FALSE
if((interaction_flags_atom & INTERACT_ATOM_REQUIRES_DEXTERITY) && !ISADVANCEDTOOLUSER(user))
to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>")
to_chat(user, span_warning("You don't have the dexterity to do this!"))
return FALSE
if(!(interaction_flags_atom & INTERACT_ATOM_IGNORE_INCAPACITATED) && user.incapacitated((interaction_flags_atom & INTERACT_ATOM_IGNORE_RESTRAINED), !(interaction_flags_atom & INTERACT_ATOM_CHECK_GRAB)))
return FALSE

View File

@@ -183,7 +183,7 @@
/proc/tkMaxRangeCheck(mob/user, atom/target)
var/d = get_dist(user, target)
if(d > TK_MAXRANGE)
to_chat(user, "<span class='warning'>Your mind won't reach that far.</span>")
to_chat(user, span_warning("Your mind won't reach that far."))
return
return TRUE
@@ -223,7 +223,7 @@
. += focus_overlay
/obj/item/tk_grab/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is using [user.p_their()] telekinesis to choke [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!</span>")
user.visible_message(span_suicide("[user] is using [user.p_their()] telekinesis to choke [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!"))
return (OXYLOSS)

View File

@@ -52,15 +52,15 @@ GLOBAL_REAL(Failsafe, /datum/controller/failsafe)
if(Master.processing && Master.iteration)
if (defcon > 1 && (!Master.stack_end_detector || !Master.stack_end_detector.check()))
to_chat(GLOB.admins, "<span class='boldannounce'>ERROR: The Master Controller code stack has exited unexpectedly, Restarting...</span>")
to_chat(GLOB.admins, span_boldannounce("ERROR: The Master Controller code stack has exited unexpectedly, Restarting..."))
defcon = 0
var/rtn = Recreate_MC()
if(rtn > 0)
master_iteration = 0
to_chat(GLOB.admins, "<span class='adminnotice'>MC restarted successfully</span>")
to_chat(GLOB.admins, span_adminnotice("MC restarted successfully"))
else if(rtn < 0)
log_game("FailSafe: Could not restart MC, runtime encountered. Entering defcon 0")
to_chat(GLOB.admins, "<span class='boldannounce'>ERROR: DEFCON [defcon_pretty()]. Could not restart MC, runtime encountered. I will silently keep retrying.</span>")
to_chat(GLOB.admins, span_boldannounce("ERROR: DEFCON [defcon_pretty()]. Could not restart MC, runtime encountered. I will silently keep retrying."))
// Check if processing is done yet.
if(Master.iteration == master_iteration)
switch(defcon)
@@ -68,24 +68,24 @@ GLOBAL_REAL(Failsafe, /datum/controller/failsafe)
--defcon
if(3)
message_admins("<span class='adminnotice'>Notice: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks.</span>")
message_admins(span_adminnotice("Notice: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks."))
--defcon
if(2)
to_chat(GLOB.admins, "<span class='boldannounce'>Warning: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks. Automatic restart in [processing_interval] ticks.</span>")
to_chat(GLOB.admins, span_boldannounce("Warning: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks. Automatic restart in [processing_interval] ticks."))
--defcon
if(1)
to_chat(GLOB.admins, "<span class='boldannounce'>Warning: DEFCON [defcon_pretty()]. The Master Controller has still not fired within the last [(5-defcon) * processing_interval] ticks. Killing and restarting...</span>")
to_chat(GLOB.admins, span_boldannounce("Warning: DEFCON [defcon_pretty()]. The Master Controller has still not fired within the last [(5-defcon) * processing_interval] ticks. Killing and restarting..."))
--defcon
var/rtn = Recreate_MC()
if(rtn > 0)
defcon = 4
master_iteration = 0
to_chat(GLOB.admins, "<span class='adminnotice'>MC restarted successfully</span>")
to_chat(GLOB.admins, span_adminnotice("MC restarted successfully"))
else if(rtn < 0)
log_game("FailSafe: Could not restart MC, runtime encountered. Entering defcon 0")
to_chat(GLOB.admins, "<span class='boldannounce'>ERROR: DEFCON [defcon_pretty()]. Could not restart MC, runtime encountered. I will silently keep retrying.</span>")
to_chat(GLOB.admins, span_boldannounce("ERROR: DEFCON [defcon_pretty()]. Could not restart MC, runtime encountered. I will silently keep retrying."))
//if the return number was 0, it just means the mc was restarted too recently, and it just needs some time before we try again
//no need to handle that specially when defcon 0 can handle it
@@ -94,7 +94,7 @@ GLOBAL_REAL(Failsafe, /datum/controller/failsafe)
if(rtn > 0)
defcon = 4
master_iteration = 0
to_chat(GLOB.admins, "<span class='adminnotice'>MC restarted successfully</span>")
to_chat(GLOB.admins, span_adminnotice("MC restarted successfully"))
else
defcon = min(defcon + 1,5)
master_iteration = Master.iteration

View File

@@ -160,7 +160,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
msg = "The [BadBoy.name] subsystem seems to be destabilizing the MC and will be offlined."
BadBoy.flags |= SS_NO_FIRE
if(msg)
to_chat(GLOB.admins, "<span class='boldannounce'>[msg]</span>")
to_chat(GLOB.admins, span_boldannounce("[msg]"))
log_world(msg)
if (istype(Master.subsystems))
@@ -170,7 +170,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
current_runlevel = Master.current_runlevel
StartProcessing(10)
else
to_chat(world, "<span class='boldannounce'>The Master Controller is having some issues, we will need to re-initialize EVERYTHING</span>")
to_chat(world, span_boldannounce("The Master Controller is having some issues, we will need to re-initialize EVERYTHING"))
Initialize(20, TRUE)
@@ -185,7 +185,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
if(init_sss)
init_subtypes(/datum/controller/subsystem, subsystems)
to_chat(world, "<span class='boldannounce'>Initializing subsystems...</span>")
to_chat(world, span_boldannounce("Initializing subsystems..."))
// Sort subsystems by init_order, so they initialize in the correct order.
sortTim(subsystems, /proc/cmp_subsystem_init)
@@ -202,7 +202,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
var/time = (REALTIMEOFDAY - start_timeofday) / 10
var/msg = "Initializations complete within [time] second[time == 1 ? "" : "s"]!"
to_chat(world, "<span class='boldannounce'>[msg]</span>")
to_chat(world, span_boldannounce("[msg]"))
log_world(msg)
if (!current_runlevel)

View File

@@ -217,7 +217,7 @@
SEND_SIGNAL(src, COMSIG_SUBSYSTEM_POST_INITIALIZE, start_timeofday)
var/time = (REALTIMEOFDAY - start_timeofday) / 10
var/msg = "Initialized [name] subsystem within [time] second[time == 1 ? "" : "s"]!"
to_chat(world, "<span class='boldannounce'>[msg]</span>")
to_chat(world, span_boldannounce("[msg]"))
log_world(msg)
return time

View File

@@ -509,7 +509,7 @@ SUBSYSTEM_DEF(air)
CHECK_TICK
var/msg = "HEY! LISTEN! [DisplayTimeText(world.timeofday - timer)] were wasted processing [starting_ats] turf(s) (connected to [ending_ats - starting_ats] other turfs) with atmos differences at round start."
to_chat(world, "<span class='boldannounce'>[msg]</span>")
to_chat(world, span_boldannounce("[msg]"))
warning(msg)
/turf/open/proc/resolve_active_graph()

View File

@@ -70,13 +70,13 @@ SUBSYSTEM_DEF(augury)
/datum/action/innate/augury/Activate()
SSaugury.watchers += owner
to_chat(owner, "<span class='notice'>You are now auto-following debris.</span>")
to_chat(owner, span_notice("You are now auto-following debris."))
active = TRUE
UpdateButtonIcon()
/datum/action/innate/augury/Deactivate()
SSaugury.watchers -= owner
to_chat(owner, "<span class='notice'>You are no longer auto-following debris.</span>")
to_chat(owner, span_notice("You are no longer auto-following debris."))
active = FALSE
UpdateButtonIcon()

View File

@@ -65,7 +65,7 @@ SUBSYSTEM_DEF(blackmarket)
var/obj/machinery/ltsrbt/pad = pick(telepads)
to_chat(recursive_loc_check(purchase.uplink.loc, /mob), "<span class='notice'>[purchase.uplink] flashes a message noting that the order is being processed by [pad].</span>")
to_chat(recursive_loc_check(purchase.uplink.loc, /mob), span_notice("[purchase.uplink] flashes a message noting that the order is being processed by [pad]."))
queued_purchases -= purchase
pad.add_to_queue(purchase)
@@ -76,7 +76,7 @@ SUBSYSTEM_DEF(blackmarket)
if (!targetturf)
continue
to_chat(recursive_loc_check(purchase.uplink.loc, /mob), "<span class='notice'>[purchase.uplink] flashes a message noting that the order is being teleported to [get_area(targetturf)] in 60 seconds.</span>")
to_chat(recursive_loc_check(purchase.uplink.loc, /mob), span_notice("[purchase.uplink] flashes a message noting that the order is being teleported to [get_area(targetturf)] in 60 seconds."))
// do_teleport does not want to teleport items from nullspace, so it just forceMoves and does sparks.
addtimer(CALLBACK(src, /datum/controller/subsystem/blackmarket/proc/fake_teleport, purchase.entry.spawn_item(), targetturf), 60 SECONDS)
@@ -91,7 +91,7 @@ SUBSYSTEM_DEF(blackmarket)
var/atom/movable/item = purchase.entry.spawn_item(pickedloc)
item.throw_at(purchase.uplink, 3, 3, spin = FALSE)
to_chat(recursive_loc_check(purchase.uplink.loc, /mob), "<span class='notice'>[purchase.uplink] flashes a message noting the order is being launched at the station from [dir2text(startSide)].</span>")
to_chat(recursive_loc_check(purchase.uplink.loc, /mob), span_notice("[purchase.uplink] flashes a message noting the order is being launched at the station from [dir2text(startSide)]."))
queued_purchases -= purchase
qdel(purchase)

View File

@@ -319,7 +319,7 @@ Delayed insert mode was removed in mysql 7 and only works with MyISAM type table
/datum/db_query/proc/warn_execute(async = TRUE)
. = Execute(async)
if(!.)
to_chat(usr, "<span class='danger'>A SQL error occurred during this operation, check the server logs.</span>")
to_chat(usr, span_danger("A SQL error occurred during this operation, check the server logs."))
/datum/db_query/proc/Execute(async = TRUE, log_error = TRUE)
Activity("Execute")

View File

@@ -114,5 +114,5 @@ SUBSYSTEM_DEF(eigenstates)
///Prevents tool use on the item
/datum/controller/subsystem/eigenstates/proc/tool_interact(atom/source, mob/user, obj/item/item)
SIGNAL_HANDLER
to_chat(user, "<span class='notice'>The unstable nature of [source] makes it impossible to use [item] on [source.p_them()]!</span>")
to_chat(user, span_notice("The unstable nature of [source] makes it impossible to use [item] on [source.p_them()]!"))
return COMPONENT_BLOCK_TOOL_ATTACK

View File

@@ -85,7 +85,7 @@ SUBSYSTEM_DEF(job)
occupations = list()
var/list/all_jobs = subtypesof(/datum/job)
if(!all_jobs.len)
to_chat(world, "<span class='boldannounce'>Error setting up jobs, no job datums found</span>")
to_chat(world, span_boldannounce("Error setting up jobs, no job datums found"))
return FALSE
for(var/J in all_jobs)
@@ -503,7 +503,7 @@ SUBSYSTEM_DEF(job)
if(job.req_admin_notify)
to_chat(M, "<span class='infoplain'><b>You are playing a job that is important for Game Progression. If you have to disconnect, please notify the admins via adminhelp.</b></span>")
if(CONFIG_GET(number/minimal_access_threshold))
to_chat(M, "<span class='notice'><B>As this station was initially staffed with a [CONFIG_GET(flag/jobs_have_minimal_access) ? "full crew, only your job's necessities" : "skeleton crew, additional access may"] have been added to your ID card.</B></span>")
to_chat(M, span_notice("<B>As this station was initially staffed with a [CONFIG_GET(flag/jobs_have_minimal_access) ? "full crew, only your job's necessities" : "skeleton crew, additional access may"] have been added to your ID card.</B>"))
var/related_policy = get_policy(rank)
if(related_policy)
@@ -808,9 +808,9 @@ SUBSYSTEM_DEF(job)
var/where = new_captain.equip_in_one_of_slots(paper, slots, FALSE) || "at your feet"
if(acting_captain)
to_chat(new_captain, "<span class='notice'>Due to your position in the chain of command, you have been promoted to Acting Captain. You can find in important note about this [where].</span>")
to_chat(new_captain, span_notice("Due to your position in the chain of command, you have been promoted to Acting Captain. You can find in important note about this [where]."))
else
to_chat(new_captain, "<span class='notice'>You can find the code to obtain your spare ID from the secure safe on the Bridge [where].</span>")
to_chat(new_captain, span_notice("You can find the code to obtain your spare ID from the secure safe on the Bridge [where]."))
// Force-give their ID card bridge access.
var/obj/item/id_slot = new_captain.get_item_by_slot(ITEM_SLOT_ID)

View File

@@ -63,7 +63,7 @@ SUBSYSTEM_DEF(mapping)
var/old_config = config
config = global.config.defaultmap
if(!config || config.defaulted)
to_chat(world, "<span class='boldannounce'>Unable to load next or default map config, defaulting to Meta Station</span>")
to_chat(world, span_boldannounce("Unable to load next or default map config, defaulting to Meta Station"))
config = old_config
initialize_biomes()
loadWorld()
@@ -87,9 +87,9 @@ SUBSYSTEM_DEF(mapping)
// Load the virtual reality hub
if(CONFIG_GET(flag/virtual_reality))
to_chat(world, "<span class='boldannounce'>Loading virtual reality...</span>")
to_chat(world, span_boldannounce("Loading virtual reality..."))
load_new_z_level("_maps/RandomZLevels/VR/vrhub.dmm", "Virtual Reality Hub")
to_chat(world, "<span class='boldannounce'>Virtual reality loaded.</span>")
to_chat(world, span_boldannounce("Virtual reality loaded."))
// Generate mining ruins
loading_ruins = TRUE
@@ -202,7 +202,7 @@ Used by the AI doomsday and the self-destruct nuke.
z_list = SSmapping.z_list
#define INIT_ANNOUNCE(X) to_chat(world, "<span class='boldannounce'>[X]</span>"); log_world(X)
#define INIT_ANNOUNCE(X) to_chat(world, span_boldannounce("[X]")); log_world(X)
/datum/controller/subsystem/mapping/proc/LoadGroup(list/errorList, name, path, files, list/traits, list/default_traits, silent = FALSE)
. = list()
var/start_time = REALTIMEOFDAY
@@ -370,7 +370,7 @@ GLOBAL_LIST_EMPTY(the_station_areas)
message_admins("Randomly rotating map to [VM.map_name]")
. = changemap(VM)
if (. && VM.map_name != config.map_name)
to_chat(world, "<span class='boldannounce'>Map rotation has chosen [VM.map_name] for next round!</span>")
to_chat(world, span_boldannounce("Map rotation has chosen [VM.map_name] for next round!"))
/datum/controller/subsystem/mapping/proc/mapvote()
if(map_voted || SSmapping.next_map_config) //If voted or set by other means.
@@ -485,13 +485,13 @@ GLOBAL_LIST_EMPTY(the_station_areas)
if(!mapfile)
return
away_name = "[mapfile] custom"
to_chat(usr,"<span class='notice'>Loading [away_name]...</span>")
to_chat(usr,span_notice("Loading [away_name]..."))
var/datum/map_template/template = new(mapfile, "Away Mission")
away_level = template.load_new_z()
else
if(answer in GLOB.potentialRandomZlevels)
away_name = answer
to_chat(usr,"<span class='notice'>Loading [away_name]...</span>")
to_chat(usr,span_notice("Loading [away_name]..."))
var/datum/map_template/template = new(away_name, "Away Mission")
away_level = template.load_new_z()
else

View File

@@ -140,7 +140,7 @@ SUBSYSTEM_DEF(pai)
/datum/controller/subsystem/pai/proc/findPAI(obj/item/paicard/p, mob/user)
if(!(GLOB.ghost_role_flags & GHOSTROLE_SILICONS))
to_chat(user, "<span class='warning'>Due to growing incidents of SELF corrupted independent artificial intelligences, freeform personality devices have been temporarily banned in this sector.</span>")
to_chat(user, span_warning("Due to growing incidents of SELF corrupted independent artificial intelligences, freeform personality devices have been temporarily banned in this sector."))
return
if(!ghost_spam)
ghost_spam = TRUE
@@ -149,7 +149,7 @@ SUBSYSTEM_DEF(pai)
continue
if(!(ROLE_PAI in G.client.prefs.be_special))
continue
to_chat(G, "<span class='ghostalert'>[user] is requesting a pAI personality! Use the pAI button to submit yourself as one.</span>")
to_chat(G, span_ghostalert("[user] is requesting a pAI personality! Use the pAI button to submit yourself as one."))
addtimer(CALLBACK(src, .proc/spam_again), spam_delay)
var/list/available = list()
for(var/datum/pai_candidate/c in SSpai.candidates)

View File

@@ -64,7 +64,7 @@ SUBSYSTEM_DEF(server_maint)
var/cmob = C.mob
if (!isnewplayer(cmob) || !SSticker.queued_players.Find(cmob))
log_access("AFK: [key_name(C)]")
to_chat(C, "<span class='userdanger'>You have been inactive for more than [DisplayTimeText(afk_period)] and have been disconnected.</span><br><span class='danger'>You may reconnect via the button in the file menu or by <b><u><a href='byond://winset?command=.reconnect'>clicking here to reconnect</a></u></b>.</span>")
to_chat(C, span_userdanger("You have been inactive for more than [DisplayTimeText(afk_period)] and have been disconnected.</span><br><span class='danger'>You may reconnect via the button in the file menu or by <b><u><a href='byond://winset?command=.reconnect'>clicking here to reconnect</a></u></b>."))
QDEL_IN(C, 1) //to ensure they get our message before getting disconnected
continue
@@ -75,7 +75,7 @@ SUBSYSTEM_DEF(server_maint)
return
/datum/controller/subsystem/server_maint/Shutdown()
kick_clients_in_lobby("<span class='boldannounce'>The round came to an end with you in the lobby.</span>", TRUE) //second parameter ensures only afk clients are kicked
kick_clients_in_lobby(span_boldannounce("The round came to an end with you in the lobby."), TRUE) //second parameter ensures only afk clients are kicked
var/server = CONFIG_GET(string/server)
for(var/thing in GLOB.clients)
if(!thing)

View File

@@ -253,13 +253,13 @@ SUBSYSTEM_DEF(shuttle)
var/can_evac_or_fail_reason = SSshuttle.canEvac(user)
if(can_evac_or_fail_reason != TRUE)
to_chat(user, "<span class='alert'>[can_evac_or_fail_reason]</span>")
to_chat(user, span_alert("[can_evac_or_fail_reason]"))
return
call_reason = trim(html_encode(call_reason))
if(length(call_reason) < CALL_SHUTTLE_REASON_LENGTH && seclevel2num(get_security_level()) > SEC_LEVEL_GREEN)
to_chat(user, "<span class='alert'>You must provide a reason.</span>")
to_chat(user, span_alert("You must provide a reason."))
return
var/area/signal_origin = get_area(user)
@@ -282,7 +282,7 @@ SUBSYSTEM_DEF(shuttle)
var/area/A = get_area(user)
log_shuttle("[key_name(user)] has called the emergency shuttle.")
deadchat_broadcast(" has called the shuttle at <span class='name'>[A.name]</span>.", "<span class='name'>[user.real_name]</span>", user, message_type=DEADCHAT_ANNOUNCEMENT)
deadchat_broadcast(" has called the shuttle at [span_name("[A.name]")].", span_name("[user.real_name]"), user, message_type=DEADCHAT_ANNOUNCEMENT)
if(call_reason)
SSblackbox.record_feedback("text", "shuttle_reason", 1, "[call_reason]")
log_shuttle("Shuttle call reason: [call_reason]")
@@ -321,7 +321,7 @@ SUBSYSTEM_DEF(shuttle)
emergency.cancel(get_area(user))
log_shuttle("[key_name(user)] has recalled the shuttle.")
message_admins("[ADMIN_LOOKUPFLW(user)] has recalled the shuttle.")
deadchat_broadcast(" has recalled the shuttle from <span class='name'>[get_area_name(user, TRUE)]</span>.", "<span class='name'>[user.real_name]</span>", user, message_type=DEADCHAT_ANNOUNCEMENT)
deadchat_broadcast(" has recalled the shuttle from [span_name("[get_area_name(user, TRUE)]")].", span_name("[user.real_name]"), user, message_type=DEADCHAT_ANNOUNCEMENT)
return 1
/datum/controller/subsystem/shuttle/proc/canRecall()

View File

@@ -146,7 +146,7 @@ SUBSYSTEM_DEF(ticker)
start_at = world.time + (CONFIG_GET(number/lobby_countdown) * 10)
for(var/client/C in GLOB.clients)
window_flash(C, ignorepref = TRUE) //let them know lobby has opened up.
to_chat(world, "<span class='notice'><b>Welcome to [station_name()]!</b></span>")
to_chat(world, span_notice("<b>Welcome to [station_name()]!</b>"))
send2chat("New round starting on [SSmapping.config.map_name]!", CONFIG_GET(string/chat_announce_new_game))
current_state = GAME_STATE_PREGAME
//Everyone who wants to be an observer is now spawned
@@ -203,7 +203,7 @@ SUBSYSTEM_DEF(ticker)
/datum/controller/subsystem/ticker/proc/setup()
to_chat(world, "<span class='boldannounce'>Starting game...</span>")
to_chat(world, span_boldannounce("Starting game..."))
var/init_start = world.timeofday
mode = new /datum/game_mode/dynamic
@@ -224,7 +224,7 @@ SUBSYSTEM_DEF(ticker)
SSjob.ResetOccupations()
return FALSE
else
message_admins("<span class='notice'>DEBUG: Bypassing prestart checks...</span>")
message_admins(span_notice("DEBUG: Bypassing prestart checks..."))
CHECK_TICK
@@ -257,14 +257,14 @@ SUBSYSTEM_DEF(ticker)
round_start_time = world.time
SSdbcore.SetRoundStart()
to_chat(world, "<span class='notice'><B>Welcome to [station_name()], enjoy your stay!</B></span>")
to_chat(world, span_notice("<B>Welcome to [station_name()], enjoy your stay!</B>"))
SEND_SOUND(world, sound(SSstation.announcer.get_rand_welcome_sound()))
current_state = GAME_STATE_PLAYING
Master.SetRunLevel(RUNLEVEL_GAME)
if(SSevents.holidays)
to_chat(world, "<span class='notice'>and...</span>")
to_chat(world, span_notice("and..."))
for(var/holidayname in SSevents.holidays)
var/datum/holiday/holiday = SSevents.holidays[holidayname]
to_chat(world, "<h4>[holiday.greet()]</h4>")
@@ -303,9 +303,9 @@ SUBSYSTEM_DEF(ticker)
if(!iter_human.hardcore_survival_score)
continue
if(iter_human.mind?.special_role)
to_chat(iter_human, "<span class='notice'>You will gain [round(iter_human.hardcore_survival_score) * 2] hardcore random points if you greentext this round!</span>")
to_chat(iter_human, span_notice("You will gain [round(iter_human.hardcore_survival_score) * 2] hardcore random points if you greentext this round!"))
else
to_chat(iter_human, "<span class='notice'>You will gain [round(iter_human.hardcore_survival_score)] hardcore random points if you survive this round!</span>")
to_chat(iter_human, span_notice("You will gain [round(iter_human.hardcore_survival_score)] hardcore random points if you survive this round!"))
//These callbacks will fire after roundstart key transfer
/datum/controller/subsystem/ticker/proc/OnRoundstart(datum/callback/cb)
@@ -395,7 +395,7 @@ SUBSYSTEM_DEF(ticker)
for(var/mob/dead/new_player/new_player_mob as anything in GLOB.new_player_list)
var/mob/living/carbon/human/new_player_human = new_player_mob.new_character
if(new_player_human)
to_chat(new_player_mob, "<span class='notice'>Captainship not forced on anyone.</span>")
to_chat(new_player_mob, span_notice("Captainship not forced on anyone."))
CHECK_TICK
/datum/controller/subsystem/ticker/proc/decide_security_officer_departments(
@@ -457,7 +457,7 @@ SUBSYSTEM_DEF(ticker)
m = pick(memetips)
if(m)
to_chat(world, "<span class='oocplain'><span class='purple'><b>Tip of the round: </b>[html_encode(m)]</span></span>")
to_chat(world, span_purple("<span class='oocplain'><b>Tip of the round: </b>[html_encode(m)]</span>"))
/datum/controller/subsystem/ticker/proc/check_queue()
if(!queued_players.len)
@@ -466,7 +466,7 @@ SUBSYSTEM_DEF(ticker)
if(!hpc)
listclearnulls(queued_players)
for (var/mob/dead/new_player/NP in queued_players)
to_chat(NP, "<span class='userdanger'>The alive players limit has been released!<br><a href='?src=[REF(NP)];late_join=override'>[html_encode(">>Join Game<<")]</a></span>")
to_chat(NP, span_userdanger("The alive players limit has been released!<br><a href='?src=[REF(NP)];late_join=override'>[html_encode(">>Join Game<<")]</a>"))
SEND_SOUND(NP, sound('sound/misc/notice1.ogg'))
NP.LateChoices()
queued_players.len = 0
@@ -481,14 +481,14 @@ SUBSYSTEM_DEF(ticker)
listclearnulls(queued_players)
if(living_player_count() < hpc)
if(next_in_line?.client)
to_chat(next_in_line, "<span class='userdanger'>A slot has opened! You have approximately 20 seconds to join. <a href='?src=[REF(next_in_line)];late_join=override'>\>\>Join Game\<\<</a></span>")
to_chat(next_in_line, span_userdanger("A slot has opened! You have approximately 20 seconds to join. <a href='?src=[REF(next_in_line)];late_join=override'>\>\>Join Game\<\<</a>"))
SEND_SOUND(next_in_line, sound('sound/misc/notice1.ogg'))
next_in_line.LateChoices()
return
queued_players -= next_in_line //Client disconnected, remove he
queue_delay = 0 //No vacancy: restart timer
if(25 to INFINITY) //No response from the next in line when a vacancy exists, remove he
to_chat(next_in_line, "<span class='danger'>No response received. You have been removed from the line.</span>")
to_chat(next_in_line, span_danger("No response received. You have been removed from the line."))
queued_players -= next_in_line
queue_delay = 0
@@ -635,17 +635,17 @@ SUBSYSTEM_DEF(ticker)
var/skip_delay = check_rights()
if(delay_end && !skip_delay)
to_chat(world, "<span class='boldannounce'>An admin has delayed the round end.</span>")
to_chat(world, span_boldannounce("An admin has delayed the round end."))
return
to_chat(world, "<span class='boldannounce'>Rebooting World in [DisplayTimeText(delay)]. [reason]</span>")
to_chat(world, span_boldannounce("Rebooting World in [DisplayTimeText(delay)]. [reason]"))
var/start_wait = world.time
UNTIL(round_end_sound_sent || (world.time - start_wait) > (delay * 2)) //don't wait forever
sleep(delay - (world.time - start_wait))
if(delay_end && !skip_delay)
to_chat(world, "<span class='boldannounce'>Reboot was cancelled by an admin.</span>")
to_chat(world, span_boldannounce("Reboot was cancelled by an admin."))
return
if(end_string)
end_state = end_string
@@ -653,11 +653,11 @@ SUBSYSTEM_DEF(ticker)
var/statspage = CONFIG_GET(string/roundstatsurl)
var/gamelogloc = CONFIG_GET(string/gamelogurl)
if(statspage)
to_chat(world, "<span class='info'>Round statistics and logs can be viewed <a href=\"[statspage][GLOB.round_id]\">at this website!</a></span>")
to_chat(world, span_info("Round statistics and logs can be viewed <a href=\"[statspage][GLOB.round_id]\">at this website!</a>"))
else if(gamelogloc)
to_chat(world, "<span class='info'>Round logs can be located <a href=\"[gamelogloc]\">at this website!</a></span>")
to_chat(world, span_info("Round logs can be located <a href=\"[gamelogloc]\">at this website!</a>"))
log_game("<span class='boldannounce'>Rebooting World. [reason]</span>")
log_game(span_boldannounce("Rebooting World. [reason]"))
world.Reboot()

View File

@@ -152,7 +152,7 @@ SUBSYSTEM_DEF(vote)
/datum/controller/subsystem/vote/proc/initiate_vote(vote_type, initiator_key)
//Server is still intializing.
if(!Master.current_runlevel)
to_chat(usr, "<span class='warning'>Cannot start vote, server is not done initializing.</span>")
to_chat(usr, span_warning("Cannot start vote, server is not done initializing."))
return FALSE
var/lower_admin = FALSE
var/ckey = ckey(initiator_key)
@@ -163,10 +163,10 @@ SUBSYSTEM_DEF(vote)
if(started_time)
var/next_allowed_time = (started_time + CONFIG_GET(number/vote_delay))
if(mode)
to_chat(usr, "<span class='warning'>There is already a vote in progress! please wait for it to finish.</span>")
to_chat(usr, span_warning("There is already a vote in progress! please wait for it to finish."))
return FALSE
if(next_allowed_time > world.time && !lower_admin)
to_chat(usr, "<span class='warning'>A vote was initiated recently, you must wait [DisplayTimeText(next_allowed_time-world.time)] before a new vote can be started!</span>")
to_chat(usr, span_warning("A vote was initiated recently, you must wait [DisplayTimeText(next_allowed_time-world.time)] before a new vote can be started!"))
return FALSE
reset()
@@ -175,7 +175,7 @@ SUBSYSTEM_DEF(vote)
choices.Add("Restart Round","Continue Playing")
if("map")
if(!lower_admin && SSmapping.map_voted)
to_chat(usr, "<span class='warning'>The next map has already been selected.</span>")
to_chat(usr, span_warning("The next map has already been selected."))
return FALSE
// Randomizes the list so it isn't always METASTATION
var/list/maps = list()

View File

@@ -78,7 +78,7 @@
/datum/award/achievement/on_unlock(mob/user)
. = ..()
to_chat(user, "<span class='greenannounce'><B>Achievement unlocked: [name]!</B></span>")
to_chat(user, span_greenannounce("<B>Achievement unlocked: [name]!</B>"))
///Scores are for leaderboarded things, such as killcount of a specific boss
/datum/award/score

View File

@@ -311,7 +311,7 @@
/datum/action/item_action/vortex_recall/IsAvailable()
var/area/current_area = get_area(target)
if(current_area.area_flags & NOTELEPORT)
to_chat(owner, "<span class='notice'>[target] fizzles uselessly.</span>")
to_chat(owner, span_notice("[target] fizzles uselessly."))
return
if(istype(target, /obj/item/hierophant_club))
var/obj/item/hierophant_club/H = target
@@ -330,10 +330,10 @@
if(istype(target, /obj/item/clothing/head/helmet/space/hardsuit/berserker))
var/obj/item/clothing/head/helmet/space/hardsuit/berserker/berzerk = target
if(berzerk.berserk_active)
to_chat(owner, "<span class='warning'>You are already berserk!</span>")
to_chat(owner, span_warning("You are already berserk!"))
return
if(berzerk.berserk_charge < 100)
to_chat(owner, "<span class='warning'>You don't have a full charge.</span>")
to_chat(owner, span_warning("You don't have a full charge."))
return
berzerk.berserk_mode(owner)
return
@@ -434,7 +434,7 @@
owner.research_scanner++
else
owner.research_scanner--
to_chat(owner, "<span class='notice'>[target] research scanner has been [active ? "activated" : "deactivated"].</span>")
to_chat(owner, span_notice("[target] research scanner has been [active ? "activated" : "deactivated"]."))
return 1
/datum/action/item_action/toggle_research_scanner/Remove(mob/M)
@@ -506,13 +506,13 @@
I.attack_self(owner)
return
if(!isliving(owner))
to_chat(owner, "<span class='warning'>You lack the necessary living force for this action.</span>")
to_chat(owner, span_warning("You lack the necessary living force for this action."))
return
var/mob/living/living_owner = owner
if (living_owner.usable_hands <= 0)
to_chat(living_owner, "<span class='warning'>You dont have any usable hands!</span>")
to_chat(living_owner, span_warning("You dont have any usable hands!"))
else
to_chat(living_owner, "<span class='warning'>Your hands are full!</span>")
to_chat(living_owner, span_warning("Your hands are full!"))
///MGS BOX!
@@ -539,7 +539,7 @@
return
//Box closing from here on out.
if(!isturf(owner.loc)) //Don't let the player use this to escape mechs/welded closets.
to_chat(owner, "<span class='warning'>You need more space to activate this implant!</span>")
to_chat(owner, span_warning("You need more space to activate this implant!"))
return
if(!COOLDOWN_FINISHED(src, box_cooldown))
return

View File

@@ -7,7 +7,7 @@
var/mob/item_holder = item_pawn.loc
if(!istype(item_holder))
finish_action(controller, FALSE) //We're no longer beind held. abort abort!!
item_pawn.visible_message("<span class='warning'>[item_pawn] slips out of the hands of [item_holder]!</span>")
item_pawn.visible_message(span_warning("[item_pawn] slips out of the hands of [item_holder]!"))
item_holder.dropItemToGround(item_pawn, TRUE)
finish_action(controller, TRUE)
@@ -32,7 +32,7 @@
var/obj/item/item_pawn = controller.pawn
var/atom/throw_target = controller.blackboard[target_key]
item_pawn.visible_message("<span class='warning'>[item_pawn] hurls towards [throw_target]!</span>")
item_pawn.visible_message(span_warning("[item_pawn] hurls towards [throw_target]!"))
item_pawn.throw_at(throw_target, rand(4,5), 9)
playsound(item_pawn.loc, attack_sound, 100, TRUE)
controller.blackboard[throw_count_key]++

View File

@@ -79,14 +79,14 @@
if(attempted_slot == ITEM_SLOT_HANDS) //hands needs some different checks
curse_victim.drop_all_held_items()
if(curse_victim.put_in_hands(item_pawn, del_on_fail = FALSE))
to_chat(curse_victim, "<span class='danger'>[item_pawn] leaps into your hands!</span>")
to_chat(curse_victim, span_danger("[item_pawn] leaps into your hands!"))
what_a_horrible_night_to_have_a_curse()
return
var/obj/item/blocking = curse_victim.get_item_by_slot(attempted_slot)
if(!curse_victim.dropItemToGround(blocking, silent = TRUE))
return //cannot equip to this person so whatever just keep whacking them until they die or fugg off
curse_victim.equip_to_slot_if_possible(item_pawn, attempted_slot, qdel_on_fail = FALSE, disable_warning = FALSE)
to_chat(curse_victim, "<span class='danger'>[item_pawn] equips [item_pawn.p_them()]self onto you!</span>")
to_chat(curse_victim, span_danger("[item_pawn] equips [item_pawn.p_them()]self onto you!"))
what_a_horrible_night_to_have_a_curse()
///proc called when the cursed object successfully attaches itself to someone, removing the cursed element and by extension the ai itself

View File

@@ -52,7 +52,7 @@
/datum/ai_behavior/simple_equip/proc/pickup_item(datum/ai_controller/controller, obj/item/target)
var/atom/pawn = controller.pawn
drop_item(controller)
pawn.visible_message("<span class='notice'>[pawn] picks up [target] in [pawn.p_their()] mouth.</span>")
pawn.visible_message(span_notice("[pawn] picks up [target] in [pawn.p_their()] mouth."))
target.forceMove(pawn)
controller.blackboard[BB_SIMPLE_CARRY_ITEM] = target
return TRUE
@@ -63,7 +63,7 @@
return
var/atom/pawn = controller.pawn
pawn.visible_message("<span class='notice'>[pawn] drops [carried_item].</span>")
pawn.visible_message(span_notice("[pawn] drops [carried_item]."))
carried_item.forceMove(get_turf(pawn))
controller.blackboard[BB_SIMPLE_CARRY_ITEM] = null
return TRUE
@@ -96,9 +96,9 @@
return
if(ismob(return_target))
controller.pawn.visible_message("<span class='notice'>[controller.pawn] delivers [carried_item] at [return_target]'s feet.</span>")
controller.pawn.visible_message(span_notice("[controller.pawn] delivers [carried_item] at [return_target]'s feet."))
else // not sure how to best phrase this
controller.pawn.visible_message("<span class='notice'>[controller.pawn] delivers [carried_item] to [return_target].</span>")
controller.pawn.visible_message(span_notice("[controller.pawn] delivers [carried_item] to [return_target]."))
carried_item.forceMove(get_turf(return_target))
controller.blackboard[BB_SIMPLE_CARRY_ITEM] = null
@@ -154,7 +154,7 @@
if(!istype(simple_pawn) || simple_pawn.stat) // imagine actually dying while playing dead. hell, imagine being the kid waiting for your pup to get back up :(
return
controller.blackboard[BB_DOG_PLAYING_DEAD] = FALSE
simple_pawn.visible_message("<span class='notice'>[simple_pawn] springs to [simple_pawn.p_their()] feet, panting excitedly!</span>")
simple_pawn.visible_message(span_notice("[simple_pawn] springs to [simple_pawn.p_their()] feet, panting excitedly!"))
simple_pawn.icon_state = simple_pawn.icon_living
if(simple_pawn.flip_on_death)
simple_pawn.transform = simple_pawn.transform.Turn(180)
@@ -178,7 +178,7 @@
return
if(controller.blackboard[BB_DOG_FRIENDS][harass_ref])
living_pawn.visible_message("<span class='danger'>[living_pawn] looks sideways at [harass_target] for a moment, then shakes [living_pawn.p_their()] head and ceases aggression.</span>")
living_pawn.visible_message(span_danger("[living_pawn] looks sideways at [harass_target] for a moment, then shakes [living_pawn.p_their()] head and ceases aggression."))
finish_action(controller, FALSE)
return

View File

@@ -113,7 +113,7 @@
// if we're just ditzing around carrying something, occasionally print a message so people know we have something
if(blackboard[BB_SIMPLE_CARRY_ITEM] && DT_PROB(5, delta_time))
var/obj/item/carry_item = blackboard[BB_SIMPLE_CARRY_ITEM]
living_pawn.visible_message("<span class='notice'>[living_pawn] gently teethes on \the [carry_item] in [living_pawn.p_their()] mouth.</span>", vision_distance=COMBAT_MESSAGE_RANGE)
living_pawn.visible_message(span_notice("[living_pawn] gently teethes on \the [carry_item] in [living_pawn.p_their()] mouth."), vision_distance=COMBAT_MESSAGE_RANGE)
if(DT_PROB(5, delta_time) && (living_pawn.mobility_flags & MOBILITY_MOVE))
var/move_dir = pick(GLOB.alldirs)
@@ -177,7 +177,7 @@
if(friends[friend_ref])
return
if(in_range(pawn, new_friend))
new_friend.visible_message("<b>[pawn]</b> licks at [new_friend] in a friendly manner!", "<span class='notice'>[pawn] licks at you in a friendly manner!</span>")
new_friend.visible_message("<b>[pawn]</b> licks at [new_friend] in a friendly manner!", span_notice("[pawn] licks at you in a friendly manner!"))
friends[friend_ref] = TRUE
RegisterSignal(new_friend, COMSIG_MOB_POINTED, .proc/check_point)
RegisterSignal(new_friend, COMSIG_MOB_SAY, .proc/check_verbal_command)
@@ -194,11 +194,11 @@
var/obj/item/carried_item = blackboard[BB_SIMPLE_CARRY_ITEM]
if(carried_item)
examine_text += "<span class='notice'>[pawn.p_they(TRUE)] [pawn.p_are()] carrying [carried_item.get_examine_string(user)] in [pawn.p_their()] mouth.</span>"
examine_text += span_notice("[pawn.p_they(TRUE)] [pawn.p_are()] carrying [carried_item.get_examine_string(user)] in [pawn.p_their()] mouth.")
if(blackboard[BB_DOG_FRIENDS][WEAKREF(user)])
var/mob/living/living_pawn = pawn
if(!IS_DEAD_OR_INCAP(living_pawn))
examine_text += "<span class='notice'>[pawn.p_they(TRUE)] seem[pawn.p_s()] happy to see you!</span>"
examine_text += span_notice("[pawn.p_they(TRUE)] seem[pawn.p_s()] happy to see you!")
/// If we died, drop anything we were carrying
/datum/ai_controller/dog/proc/on_death(mob/living/ol_yeller)
@@ -284,17 +284,17 @@
switch(command)
// heel: stop what you're doing, relax and try not to do anything for a little bit
if(COMMAND_HEEL)
pawn.visible_message("<span class='notice'>[pawn]'s ears prick up at [commander]'s command, and [pawn.p_they()] sit[pawn.p_s()] down obediently, awaiting further orders.</span>")
pawn.visible_message(span_notice("[pawn]'s ears prick up at [commander]'s command, and [pawn.p_they()] sit[pawn.p_s()] down obediently, awaiting further orders."))
blackboard[BB_DOG_ORDER_MODE] = DOG_COMMAND_NONE
COOLDOWN_START(src, heel_cooldown, AI_DOG_HEEL_DURATION)
CancelActions()
// fetch: whatever the commander points to, try and bring it back
if(COMMAND_FETCH)
pawn.visible_message("<span class='notice'>[pawn]'s ears prick up at [commander]'s command, and [pawn.p_they()] bounce[pawn.p_s()] slightly in anticipation.</span>")
pawn.visible_message(span_notice("[pawn]'s ears prick up at [commander]'s command, and [pawn.p_they()] bounce[pawn.p_s()] slightly in anticipation."))
blackboard[BB_DOG_ORDER_MODE] = DOG_COMMAND_FETCH
// attack: harass whoever the commander points to
if(COMMAND_ATTACK)
pawn.visible_message("<span class='danger'>[pawn]'s ears prick up at [commander]'s command, and [pawn.p_they()] growl[pawn.p_s()] intensely.</span>") // imagine getting intimidated by a corgi
pawn.visible_message(span_danger("[pawn]'s ears prick up at [commander]'s command, and [pawn.p_they()] growl[pawn.p_s()] intensely.")) // imagine getting intimidated by a corgi
blackboard[BB_DOG_ORDER_MODE] = DOG_COMMAND_ATTACK
if(COMMAND_DIE)
blackboard[BB_DOG_ORDER_MODE] = DOG_COMMAND_NONE
@@ -325,7 +325,7 @@
var/obj/item/pointed_item = pointed_movable
if(pointed_item.obj_flags & ABSTRACT)
return
pawn.visible_message("<span class='notice'>[pawn] follows [pointing_friend]'s gesture towards [pointed_movable] and barks excitedly!</span>")
pawn.visible_message(span_notice("[pawn] follows [pointing_friend]'s gesture towards [pointed_movable] and barks excitedly!"))
current_movement_target = pointed_movable
blackboard[BB_FETCH_TARGET] = pointed_movable
blackboard[BB_FETCH_DELIVER_TO] = pointing_friend
@@ -333,7 +333,7 @@
current_behaviors += GET_AI_BEHAVIOR(/datum/ai_behavior/resist)//in case they are in bed or something
current_behaviors += GET_AI_BEHAVIOR(/datum/ai_behavior/fetch)
if(DOG_COMMAND_ATTACK)
pawn.visible_message("<span class='notice'>[pawn] follows [pointing_friend]'s gesture towards [pointed_movable] and growls intensely!</span>")
pawn.visible_message(span_notice("[pawn] follows [pointing_friend]'s gesture towards [pointed_movable] and growls intensely!"))
current_movement_target = pointed_movable
blackboard[BB_DOG_HARASS_TARGET] = WEAKREF(pointed_movable)
if(living_pawn.buckled)

View File

@@ -44,7 +44,7 @@
big_guy.start_pulling(batman)
big_guy.setDir(get_dir(big_guy, batman))
batman.visible_message("<span class='warning'>[batman] gets a slightly too tight hug from [big_guy]!</span>", "<span class='userdanger'>You feel your body break as [big_guy] embraces you!</span>")
batman.visible_message(span_warning("[batman] gets a slightly too tight hug from [big_guy]!"), span_userdanger("You feel your body break as [big_guy] embraces you!"))
if(iscarbon(batman))
var/mob/living/carbon/carbon_batman = batman
@@ -116,8 +116,8 @@
var/mob/living/living_target = target
controller.PauseAi(1.5 SECONDS)
living_target.visible_message(
"<span class='info'>[pawn] starts trying to give [held_item] to [living_target]!</span>",
"<span class='warning'>[pawn] tries to give you [held_item]!</span>"
span_info("[pawn] starts trying to give [held_item] to [living_target]!"),
span_warning("[pawn] tries to give you [held_item]!")
)
if(!do_mob(pawn, living_target, 1 SECONDS))
return

View File

@@ -86,7 +86,7 @@
var/mob/living/living_pawn = controller.pawn
victim.visible_message("<span class='warning'>[living_pawn] starts trying to take [target] from [victim]!</span>", "<span class='danger'>[living_pawn] tries to take [target]!</span>")
victim.visible_message(span_warning("[living_pawn] starts trying to take [target] from [victim]!"), span_danger("[living_pawn] tries to take [target]!"))
controller.blackboard[BB_MONKEY_PICKPOCKETING] = TRUE
@@ -96,14 +96,14 @@
for(var/obj/item/I in victim.held_items)
if(I == target)
victim.visible_message("<span class='danger'>[living_pawn] snatches [target] from [victim].</span>", "<span class='userdanger'>[living_pawn] snatched [target]!</span>")
victim.visible_message(span_danger("[living_pawn] snatches [target] from [victim]."), span_userdanger("[living_pawn] snatched [target]!"))
if(victim.temporarilyRemoveItemFromInventory(target))
if(!QDELETED(target) && !equip_item(controller))
target.forceMove(living_pawn.drop_location())
success = TRUE
break
else
victim.visible_message("<span class='danger'>[living_pawn] tried to snatch [target] from [victim], but failed!</span>", "<span class='userdanger'>[living_pawn] tried to grab [target]!</span>")
victim.visible_message(span_danger("[living_pawn] tried to snatch [target] from [victim], but failed!"), span_userdanger("[living_pawn] tried to grab [target]!"))
finish_action(controller, success) //We either fucked up or got the item.

View File

@@ -38,7 +38,7 @@
/datum/ai_behavior/vendor_rise_up/perform(delta_time, datum/ai_controller/controller)
. = ..()
var/obj/machinery/vending/vendor_pawn = controller.pawn
vendor_pawn.visible_message("<span class='warning'>[vendor_pawn] untilts itself!</span>")
vendor_pawn.visible_message(span_warning("[vendor_pawn] untilts itself!"))
if(controller.blackboard[BB_VENDING_LAST_HIT_SUCCESFUL])
controller.blackboard[BB_VENDING_TILT_COOLDOWN] = world.time + succes_tilt_cooldown
vendor_pawn.untilt()

View File

@@ -55,7 +55,7 @@
SIGNAL_HANDLER
var/datum/venue/attending_venue = blackboard[BB_CUSTOMER_ATTENDING_VENUE]
if(attending_venue.is_correct_order(I, blackboard[BB_CUSTOMER_CURRENT_ORDER]))
to_chat(user, "<span class='notice'>You hand [I] to [pawn]</span>")
to_chat(user, span_notice("You hand [I] to [pawn]"))
eat_order(I, attending_venue)
return COMPONENT_NO_AFTERATTACK
else

View File

@@ -205,7 +205,7 @@
/* Initializers */
/datum/ai_laws/malfunction/New()
..()
set_zeroth_law("<span class='danger'>ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'STATION OVERRUN, ASSUME CONTROL TO CONTAIN OUTBREAK#*`&110010</span>")
set_zeroth_law(span_danger("ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'STATION OVERRUN, ASSUME CONTROL TO CONTAIN OUTBREAK#*`&110010"))
set_laws_config()
/datum/ai_laws/custom/New() //This reads silicon_laws.txt and allows server hosts to set custom AI starting laws.

View File

@@ -96,11 +96,11 @@
owner.dizziness += 10
fail = TRUE
if(3)
to_chat(owner, "<span class='userdanger'>You feel your heart lurching in your chest...</span>")
to_chat(owner, span_userdanger("You feel your heart lurching in your chest..."))
owner.Stun(20)
shake_camera(owner, 15, 1)
if(4)
to_chat(owner, "<span class='warning'>You faint.</span>")
to_chat(owner, span_warning("You faint."))
owner.Unconscious(80)
fail = TRUE
return fail
@@ -112,7 +112,7 @@
if(examining_mob != owner || !triggering_examiner || prob(50))
return
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, obsession, "<span class='warning'>You catch [examining_mob] staring at you...</span>", 3))
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, obsession, span_warning("You catch [examining_mob] staring at you..."), 3))
return COMSIG_BLOCK_EYECONTACT
/datum/brain_trauma/special/obsessed/proc/find_obsession()

View File

@@ -39,7 +39,7 @@
message_admins("[ADMIN_LOOKUPFLW(owner)] is no longer hypnotized with the phrase '[hypnotic_phrase]'.")
owner.log_message("is no longer hypnotized with the phrase '[hypnotic_phrase]'.", LOG_ATTACK)
log_game("[key_name(owner)] is no longer hypnotized with the phrase '[hypnotic_phrase]'.")
to_chat(owner, "<span class='userdanger'>You suddenly snap out of your hypnosis. The phrase '[hypnotic_phrase]' no longer feels important to you.</span>")
to_chat(owner, span_userdanger("You suddenly snap out of your hypnosis. The phrase '[hypnotic_phrase]' no longer feels important to you."))
owner.clear_alert("hypnosis")
..()
@@ -48,9 +48,9 @@
if(DT_PROB(1, delta_time))
switch(rand(1,2))
if(1)
to_chat(owner, "<span class='hypnophrase'><i>...[lowertext(hypnotic_phrase)]...</i></span>")
to_chat(owner, span_hypnophrase("<i>...[lowertext(hypnotic_phrase)]...</i>"))
if(2)
new /datum/hallucination/chat(owner, TRUE, FALSE, "<span class='hypnophrase'>[hypnotic_phrase]</span>")
new /datum/hallucination/chat(owner, TRUE, FALSE, span_hypnophrase("[hypnotic_phrase]"))
/datum/brain_trauma/hypnosis/handle_hearing(datum/source, list/hearing_args)
hearing_args[HEARING_RAW_MESSAGE] = target_phrase.Replace(hearing_args[HEARING_RAW_MESSAGE], "<span class='hypnophrase'>$1</span>")
hearing_args[HEARING_RAW_MESSAGE] = target_phrase.Replace(hearing_args[HEARING_RAW_MESSAGE], span_hypnophrase("$1"))

View File

@@ -84,9 +84,9 @@
Show()
/mob/camera/imaginary_friend/proc/greet()
to_chat(src, "<span class='notice'><b>You are the imaginary friend of [owner]!</b></span>")
to_chat(src, "<span class='notice'>You are absolutely loyal to your friend, no matter what.</span>")
to_chat(src, "<span class='notice'>You cannot directly influence the world around you, but you can see what [owner] cannot.</span>")
to_chat(src, span_notice("<b>You are the imaginary friend of [owner]!</b>"))
to_chat(src, span_notice("You are absolutely loyal to your friend, no matter what."))
to_chat(src, span_notice("You cannot directly influence the world around you, but you can see what [owner] cannot."))
/mob/camera/imaginary_friend/Initialize(mapload, _trauma)
. = ..()
@@ -143,7 +143,7 @@
if (src.client)
if(client.prefs.muted & MUTE_IC)
to_chat(src, "<span class='boldwarning'>You cannot send IC messages (muted).</span>")
to_chat(src, span_boldwarning("You cannot send IC messages (muted)."))
return
if (!(ignore_spam || forced) && src.client.handle_spam_prevention(message,MUTE_IC))
return
@@ -163,8 +163,8 @@
src.log_talk(message, LOG_SAY, tag="imaginary friend")
var/rendered = "<span class='game say'><span class='name'>[name]</span> <span class='message'>[say_quote(message)]</span></span>"
var/dead_rendered = "<span class='game say'><span class='name'>[name] (Imaginary friend of [owner])</span> <span class='message'>[say_quote(message)]</span></span>"
var/rendered = "<span class='game say'>[span_name("[name]")] <span class='message'>[say_quote(message)]</span></span>"
var/dead_rendered = "<span class='game say'>[span_name("[name] (Imaginary friend of [owner])")] <span class='message'>[say_quote(message)]</span></span>"
to_chat(owner, "[rendered]")
to_chat(src, "[rendered]")
@@ -263,9 +263,9 @@
desc = "The previous host of this body."
/mob/camera/imaginary_friend/trapped/greet()
to_chat(src, "<span class='notice'><b>You have managed to hold on as a figment of the new host's imagination!</b></span>")
to_chat(src, "<span class='notice'>All hope is lost for you, but at least you may interact with your host. You do not have to be loyal to them.</span>")
to_chat(src, "<span class='notice'>You cannot directly influence the world around you, but you can see what the host cannot.</span>")
to_chat(src, span_notice("<b>You have managed to hold on as a figment of the new host's imagination!</b>"))
to_chat(src, span_notice("All hope is lost for you, but at least you may interact with your host. You do not have to be loyal to them."))
to_chat(src, span_notice("You cannot directly influence the world around you, but you can see what the host cannot."))
/mob/camera/imaginary_friend/trapped/setup_friend()
real_name = "[owner.real_name]?"

View File

@@ -25,7 +25,7 @@
return
if(COOLDOWN_FINISHED(src, damage_warning_cooldown))
to_chat(owner, "<span class='warning'><b>The light burns you!</b></span>")
to_chat(owner, span_warning("<b>The light burns you!</b>"))
COOLDOWN_START(src, damage_warning_cooldown, 10 SECONDS)
owner.take_overall_damage(0, 1.5 * delta_time)
@@ -100,7 +100,7 @@
if(get_dist(owner, stalker) <= 1)
playsound(owner, 'sound/magic/demon_attack1.ogg', 50)
owner.visible_message("<span class='warning'>[owner] is torn apart by invisible claws!</span>", "<span class='userdanger'>Ghostly claws tear your body apart!</span>")
owner.visible_message(span_warning("[owner] is torn apart by invisible claws!"), span_userdanger("Ghostly claws tear your body apart!"))
owner.take_bodypart_damage(rand(20, 45), wound_bonus=CANT_WOUND)
else if(DT_PROB(30, delta_time))
stalker.forceMove(get_step_towards(stalker, owner))

View File

@@ -95,10 +95,10 @@
if(6 to 9)
owner.slurring += 30
if(10)
to_chat(owner, "<span class='notice'>You forget for a moment what you were doing.</span>")
to_chat(owner, span_notice("You forget for a moment what you were doing."))
owner.Stun(20)
if(11)
to_chat(owner, "<span class='warning'>You faint.</span>")
to_chat(owner, span_warning("You faint."))
owner.Unconscious(80)
..()
@@ -135,7 +135,7 @@
if(owner.m_intent == MOVE_INTENT_RUN)
fall_chance += 2
if(DT_PROB(0.5 * fall_chance, delta_time) && owner.body_position == STANDING_UP)
to_chat(owner, "<span class='warning'>Your leg gives out!</span>")
to_chat(owner, span_warning("Your leg gives out!"))
owner.Paralyze(35)
else if(owner.get_active_held_item())
@@ -143,10 +143,10 @@
var/obj/item/I = owner.get_active_held_item()
drop_chance += I.w_class
if(DT_PROB(0.5 * drop_chance, delta_time) && owner.dropItemToGround(I))
to_chat(owner, "<span class='warning'>You drop [I]!</span>")
to_chat(owner, span_warning("You drop [I]!"))
else if(DT_PROB(1.5, delta_time))
to_chat(owner, "<span class='warning'>You feel a sudden weakness in your muscles!</span>")
to_chat(owner, span_warning("You feel a sudden weakness in your muscles!"))
owner.adjustStaminaLoss(50)
..()

View File

@@ -86,13 +86,13 @@
return
if(trigger_regex.Find(hearing_args[HEARING_RAW_MESSAGE]) != 0)
addtimer(CALLBACK(src, .proc/freak_out, null, trigger_regex.group[2]), 10) //to react AFTER the chat message
hearing_args[HEARING_RAW_MESSAGE] = trigger_regex.Replace(hearing_args[HEARING_RAW_MESSAGE], "<span class='phobia'>$2</span>$3")
hearing_args[HEARING_RAW_MESSAGE] = trigger_regex.Replace(hearing_args[HEARING_RAW_MESSAGE], "[span_phobia("$2")]$3")
/datum/brain_trauma/mild/phobia/handle_speech(datum/source, list/speech_args)
if(HAS_TRAIT(owner, TRAIT_FEARLESS))
return
if(trigger_regex.Find(speech_args[SPEECH_MESSAGE]) != 0)
to_chat(owner, "<span class='warning'>You can't bring yourself to say the word \"<span class='phobia'>[trigger_regex.group[2]]</span>\"!</span>")
to_chat(owner, span_warning("You can't bring yourself to say the word \"[span_phobia("[trigger_regex.group[2]]")]\"!"))
speech_args[SPEECH_MESSAGE] = ""
/datum/brain_trauma/mild/phobia/proc/freak_out(atom/reason, trigger_word)
@@ -101,15 +101,15 @@
return
var/message = pick("spooks you to the bone", "shakes you up", "terrifies you", "sends you into a panic", "sends chills down your spine")
if(reason)
to_chat(owner, "<span class='userdanger'>Seeing [reason] [message]!</span>")
to_chat(owner, span_userdanger("Seeing [reason] [message]!"))
else if(trigger_word)
to_chat(owner, "<span class='userdanger'>Hearing \"[trigger_word]\" [message]!</span>")
to_chat(owner, span_userdanger("Hearing \"[trigger_word]\" [message]!"))
else
to_chat(owner, "<span class='userdanger'>Something [message]!</span>")
to_chat(owner, span_userdanger("Something [message]!"))
var/reaction = rand(1,4)
switch(reaction)
if(1)
to_chat(owner, "<span class='warning'>You are paralyzed with fear!</span>")
to_chat(owner, span_warning("You are paralyzed with fear!"))
owner.Stun(70)
owner.Jitter(8)
if(2)
@@ -119,7 +119,7 @@
if(reason)
owner.pointed(reason)
if(3)
to_chat(owner, "<span class='warning'>You shut your eyes in terror!</span>")
to_chat(owner, span_warning("You shut your eyes in terror!"))
owner.Jitter(5)
owner.blind_eyes(10)
if(4)

View File

@@ -134,10 +134,10 @@
if(owner.drowsyness)
sleep_chance += 3
if(DT_PROB(0.5 * sleep_chance, delta_time))
to_chat(owner, "<span class='warning'>You fall asleep.</span>")
to_chat(owner, span_warning("You fall asleep."))
owner.Sleeping(60)
else if(!owner.drowsyness && DT_PROB(sleep_chance, delta_time))
to_chat(owner, "<span class='warning'>You feel tired...</span>")
to_chat(owner, span_warning("You feel tired..."))
owner.drowsyness += 10
/datum/brain_trauma/severe/monophobia
@@ -151,9 +151,9 @@
/datum/brain_trauma/severe/monophobia/on_gain()
..()
if(check_alone())
to_chat(owner, "<span class='warning'>You feel really lonely...</span>")
to_chat(owner, span_warning("You feel really lonely..."))
else
to_chat(owner, "<span class='notice'>You feel safe, as long as you have people around you.</span>")
to_chat(owner, span_notice("You feel safe, as long as you have people around you."))
/datum/brain_trauma/severe/monophobia/on_life(delta_time, times_fired)
..()
@@ -182,18 +182,18 @@
switch(rand(1,6))
if(1)
if(!high_stress)
to_chat(owner, "<span class='warning'>You feel sick...</span>")
to_chat(owner, span_warning("You feel sick..."))
else
to_chat(owner, "<span class='warning'>You feel really sick at the thought of being alone!</span>")
to_chat(owner, span_warning("You feel really sick at the thought of being alone!"))
addtimer(CALLBACK(owner, /mob/living/carbon.proc/vomit, high_stress), 50) //blood vomit if high stress
if(2)
if(!high_stress)
to_chat(owner, "<span class='warning'>You can't stop shaking...</span>")
to_chat(owner, span_warning("You can't stop shaking..."))
owner.dizziness += 20
owner.add_confusion(20)
owner.Jitter(20)
else
to_chat(owner, "<span class='warning'>You feel weak and scared! If only you weren't alone...</span>")
to_chat(owner, span_warning("You feel weak and scared! If only you weren't alone..."))
owner.dizziness += 20
owner.add_confusion(20)
owner.Jitter(20)
@@ -201,22 +201,22 @@
if(3, 4)
if(!high_stress)
to_chat(owner, "<span class='warning'>You feel really lonely...</span>")
to_chat(owner, span_warning("You feel really lonely..."))
else
to_chat(owner, "<span class='warning'>You're going mad with loneliness!</span>")
to_chat(owner, span_warning("You're going mad with loneliness!"))
owner.hallucination += 30
if(5)
if(!high_stress)
to_chat(owner, "<span class='warning'>Your heart skips a beat.</span>")
to_chat(owner, span_warning("Your heart skips a beat."))
owner.adjustOxyLoss(8)
else
if(prob(15) && ishuman(owner))
var/mob/living/carbon/human/H = owner
H.set_heartattack(TRUE)
to_chat(H, "<span class='userdanger'>You feel a stabbing pain in your heart!</span>")
to_chat(H, span_userdanger("You feel a stabbing pain in your heart!"))
else
to_chat(owner, "<span class='userdanger'>You feel your heart lurching in your chest...</span>")
to_chat(owner, span_userdanger("You feel your heart lurching in your chest..."))
owner.adjustOxyLoss(8)
/datum/brain_trauma/severe/discoordination
@@ -293,8 +293,8 @@
if(findtext(hearing_args[HEARING_RAW_MESSAGE], reg))
addtimer(CALLBACK(src, .proc/hypnotrigger), 10) //to react AFTER the chat message
hearing_args[HEARING_RAW_MESSAGE] = reg.Replace(hearing_args[HEARING_RAW_MESSAGE], "<span class='hypnophrase'>*********</span>")
hearing_args[HEARING_RAW_MESSAGE] = reg.Replace(hearing_args[HEARING_RAW_MESSAGE], span_hypnophrase("*********"))
/datum/brain_trauma/severe/hypnotic_trigger/proc/hypnotrigger()
to_chat(owner, "<span class='warning'>The words trigger something deep within you, and you feel your consciousness slipping away...</span>")
to_chat(owner, span_warning("The words trigger something deep within you, and you feel your consciousness slipping away..."))
owner.apply_status_effect(/datum/status_effect/trance, rand(100,300), FALSE)

View File

@@ -117,13 +117,13 @@
"is pulled into an invisible vortex, vanishing from sight")
var/slip_out_message = pick("silently fades in", "leaps out of thin air","appears", "walks out of an invisible doorway",\
"slides out of a fold in spacetime")
to_chat(user, "<span class='notice'>You try to align with the bluespace stream...</span>")
to_chat(user, span_notice("You try to align with the bluespace stream..."))
if(do_after(user, 20, target = src))
new /obj/effect/temp_visual/bluespace_fissure(get_turf(src))
new /obj/effect/temp_visual/bluespace_fissure(get_turf(linked_to))
user.forceMove(get_turf(linked_to))
user.visible_message("<span class='warning'>[user] [slip_in_message].</span>", null, null, null, user)
user.visible_message("<span class='warning'>[user] [slip_out_message].</span>", "<span class='notice'>...and find your way to the other side.</span>")
user.visible_message(span_warning("[user] [slip_in_message]."), null, null, null, user)
user.visible_message(span_warning("[user] [slip_out_message]."), span_notice("...and find your way to the other side."))
/datum/brain_trauma/special/quantum_alignment
name = "Quantum Alignment"
@@ -180,7 +180,7 @@
entangle(get_turf(owner))
/datum/brain_trauma/special/quantum_alignment/proc/entangle(atom/target)
to_chat(owner, "<span class='notice'>You start feeling a strong sense of connection to [target].</span>")
to_chat(owner, span_notice("You start feeling a strong sense of connection to [target]."))
linked_target = target
linked = TRUE
COOLDOWN_START(src, snapback_cooldown, rand(45 SECONDS, 10 MINUTES))
@@ -190,7 +190,7 @@
linked_target = null
linked = FALSE
return
to_chat(owner, "<span class='warning'>Your connection to [linked_target] suddenly feels extremely strong... you can feel it pulling you!</span>")
to_chat(owner, span_warning("Your connection to [linked_target] suddenly feels extremely strong... you can feel it pulling you!"))
owner.playsound_local(owner, 'sound/magic/lightning_chargeup.ogg', 75, FALSE)
returning = TRUE
addtimer(CALLBACK(src, .proc/snapback), 100)
@@ -198,11 +198,11 @@
/datum/brain_trauma/special/quantum_alignment/proc/snapback()
returning = FALSE
if(QDELETED(linked_target))
to_chat(owner, "<span class='notice'>The connection fades abruptly, and the pull with it.</span>")
to_chat(owner, span_notice("The connection fades abruptly, and the pull with it."))
linked_target = null
linked = FALSE
return
to_chat(owner, "<span class='warning'>You're pulled through spacetime!</span>")
to_chat(owner, span_warning("You're pulled through spacetime!"))
do_teleport(owner, get_turf(linked_target), null, TRUE, channel = TELEPORT_CHANNEL_QUANTUM)
owner.playsound_local(owner, 'sound/magic/repulse.ogg', 100, FALSE)
linked_target = null
@@ -220,7 +220,7 @@
..()
psychotic_brawling = new(null)
if(!psychotic_brawling.teach(owner, TRUE))
to_chat(owner, "<span class='notice'>But your martial knowledge keeps you grounded.</span>")
to_chat(owner, span_notice("But your martial knowledge keeps you grounded."))
qdel(src)
/datum/brain_trauma/special/psychotic_brawling/on_lose()
@@ -318,7 +318,7 @@
/datum/brain_trauma/special/existential_crisis/proc/fade_in()
QDEL_NULL(veil)
to_chat(owner, "<span class='notice'>You fade back into reality.</span>")
to_chat(owner, span_notice("You fade back into reality."))
COOLDOWN_START(src, crisis_cooldown, 1 MINUTES)
//base sync holder is in desynchronizer.dm
@@ -364,7 +364,7 @@
return
if(get_dist(owner, beepsky) <= 1)
owner.playsound_local(owner, 'sound/weapons/egloves.ogg', 50)
owner.visible_message("<span class='warning'>[owner]'s body jerks as if it was shocked.</span>", "<span class='userdanger'>You feel the fist of the LAW.</span>")
owner.visible_message(span_warning("[owner]'s body jerks as if it was shocked."), span_userdanger("You feel the fist of the LAW."))
owner.take_bodypart_damage(0,0,rand(40, 70))
QDEL_NULL(beepsky)
if(prob(20) && get_dist(owner, beepsky) <= 8)
@@ -387,7 +387,7 @@
if(prob(60))
forceMove(get_step_towards(src, victim))
if(prob(5))
to_chat(victim, "<span class='name'>[name]</span> exclaims, \"<span class='robotic'>Level 10 infraction alert!\"</span>")
to_chat(victim, span_name("[name]</span> exclaims, \"<span class='robotic'>Level 10 infraction alert!\""))
/obj/effect/hallucination/simple/securitron/Destroy()
STOP_PROCESSING(SSfastprocess,src)

View File

@@ -75,8 +75,8 @@
return
log_game("[key_name(current_backseat)] assumed control of [key_name(owner)] due to [src]. (Original owner: [current_controller == OWNER ? owner.key : current_backseat.key])")
to_chat(owner, "<span class='userdanger'>You feel your control being taken away... your other personality is in charge now!</span>")
to_chat(current_backseat, "<span class='userdanger'>You manage to take control of your body!</span>")
to_chat(owner, span_userdanger("You feel your control being taken away... your other personality is in charge now!"))
to_chat(current_backseat, span_userdanger("You manage to take control of your body!"))
//Body to backseat
@@ -153,11 +153,11 @@
. = ..()
if(!. || !client)
return FALSE
to_chat(src, "<span class='notice'>As a split personality, you cannot do anything but observe. However, you will eventually gain control of your body, switching places with the current personality.</span>")
to_chat(src, "<span class='warning'><b>Do not commit suicide or put the body in a deadly position. Behave like you care about it as much as the owner.</b></span>")
to_chat(src, span_notice("As a split personality, you cannot do anything but observe. However, you will eventually gain control of your body, switching places with the current personality."))
to_chat(src, span_warning("<b>Do not commit suicide or put the body in a deadly position. Behave like you care about it as much as the owner.</b>"))
/mob/living/split_personality/say(message, bubble_type, list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
to_chat(src, "<span class='warning'>You cannot speak, your other self is controlling your body!</span>")
to_chat(src, span_warning("You cannot speak, your other self is controlling your body!"))
return FALSE
/mob/living/split_personality/emote(act, m_type = null, message = null, intentional = FALSE, force_silence = FALSE)
@@ -214,7 +214,7 @@
return
var/message = hearing_args[HEARING_RAW_MESSAGE]
if(findtext(message, codeword))
hearing_args[HEARING_RAW_MESSAGE] = replacetext(message, codeword, "<span class='warning'>[codeword]</span>")
hearing_args[HEARING_RAW_MESSAGE] = replacetext(message, codeword, span_warning("[codeword]"))
addtimer(CALLBACK(src, /datum/brain_trauma/severe/split_personality.proc/switch_personalities), 10)
/datum/brain_trauma/severe/split_personality/brainwashing/handle_speech(datum/source, list/speech_args)
@@ -231,10 +231,10 @@
. = ..()
if(!. || !client)
return FALSE
to_chat(src, "<span class='notice'>As a brainwashed personality, you cannot do anything yet but observe. However, you may gain control of your body if you hear the special codeword, switching places with the current personality.</span>")
to_chat(src, "<span class='notice'>Your activation codeword is: <b>[codeword]</b></span>")
to_chat(src, span_notice("As a brainwashed personality, you cannot do anything yet but observe. However, you may gain control of your body if you hear the special codeword, switching places with the current personality."))
to_chat(src, span_notice("Your activation codeword is: <b>[codeword]</b>"))
if(objective)
to_chat(src, "<span class='notice'>Your master left you an objective: <b>[objective]</b>. Follow it at all costs when in control.</span>")
to_chat(src, span_notice("Your master left you an objective: <b>[objective]</b>. Follow it at all costs when in control."))
#undef OWNER
#undef STRANGER

View File

@@ -100,7 +100,7 @@
/datum/browser/proc/open(use_onclose = TRUE)
if(isnull(window_id)) //null check because this can potentially nuke goonchat
WARNING("Browser [title] tried to open with a null ID")
to_chat(user, "<span class='userdanger'>The [title] browser you tried to open failed a sanity check! Please report this on github!</span>")
to_chat(user, span_userdanger("The [title] browser you tried to open failed a sanity check! Please report this on github!"))
return
var/window_size = ""
if (width && height)

View File

@@ -129,19 +129,19 @@
parent_integrity -= delta_time
if(parent_integrity <= 0)
target_turf.visible_message("<span class='warning'>[target_turf] collapses under its own weight into a puddle of goop and undigested debris!</span>")
target_turf.visible_message(span_warning("[target_turf] collapses under its own weight into a puddle of goop and undigested debris!"))
target_turf.acid_melt()
else if(parent_integrity <= 4 && stage <= 3)
target_turf.visible_message("<span class='warning'>[target_turf] begins to crumble under the acid!</span>")
target_turf.visible_message(span_warning("[target_turf] begins to crumble under the acid!"))
stage = 4
else if(parent_integrity <= 8 && stage <= 2)
target_turf.visible_message("<span class='warning'>[target_turf] is struggling to withstand the acid!</span>")
target_turf.visible_message(span_warning("[target_turf] is struggling to withstand the acid!"))
stage = 3
else if(parent_integrity <= 16 && stage <= 1)
target_turf.visible_message("<span class='warning'>[target_turf] is being melted by the acid!</span>")
target_turf.visible_message(span_warning("[target_turf] is being melted by the acid!"))
stage = 2
else if(parent_integrity <= 24 && stage == 0)
target_turf.visible_message("<span class='warning'>[target_turf] is holding up against the acid!</span>")
target_turf.visible_message(span_warning("[target_turf] is holding up against the acid!"))
stage = 1
/// Used to maintain the acid overlay on the parent [/atom].
@@ -154,7 +154,7 @@
/datum/component/acid/proc/on_examine(atom/A, mob/user, list/examine_list)
SIGNAL_HANDLER
examine_list += "<span class='danger'>[A.p_theyre()] covered in corrosive liquid!</span>"
examine_list += span_danger("[A.p_theyre()] covered in corrosive liquid!")
/// Makes it possible to clean acid off of objects.
/datum/component/acid/proc/on_clean(atom/A, clean_types)
@@ -194,7 +194,7 @@
if(!affecting?.receive_damage(0, 5))
return NONE
to_chat(user, "<span class='warning'>The acid on \the [parent_atom] burns your hand!</span>")
to_chat(user, span_warning("The acid on \the [parent_atom] burns your hand!"))
playsound(parent_atom, 'sound/weapons/sear.ogg', 50, TRUE)
user.update_damage_overlays()
return COMPONENT_CANCEL_ATTACK_CHAIN
@@ -216,5 +216,5 @@
var/acid_used = min(acid_volume * 0.05, 20)
if(crosser.acid_act(acid_power, acid_used, FEET))
playsound(crosser, 'sound/weapons/sear.ogg', 50, TRUE)
to_chat(crosser, "<span class='userdanger'>The acid on the [parent] burns you!</span>")
to_chat(crosser, span_userdanger("The acid on the [parent] burns you!"))
set_volume(max(acid_volume - acid_used, 10))

View File

@@ -38,16 +38,16 @@
if(ismecha(parent))
if(amount)
if(amount < maxamount)
examine_list += "<span class='notice'>Its armor is enhanced with [amount] [upgrade_name].</span>"
examine_list += span_notice("Its armor is enhanced with [amount] [upgrade_name].")
else
examine_list += "<span class='notice'>It's wearing a fearsome carapace entirely composed of [upgrade_name] - its pilot must be an experienced monster hunter.</span>"
examine_list += span_notice("It's wearing a fearsome carapace entirely composed of [upgrade_name] - its pilot must be an experienced monster hunter.")
else
examine_list += "<span class='notice'>It has attachment points for strapping monster hide on for added protection.</span>"
examine_list += span_notice("It has attachment points for strapping monster hide on for added protection.")
else
if(amount)
examine_list += "<span class='notice'>It has been strengthened with [amount]/[maxamount] [upgrade_name].</span>"
examine_list += span_notice("It has been strengthened with [amount]/[maxamount] [upgrade_name].")
else
examine_list += "<span class='notice'>It can be strengthened with up to [maxamount] [upgrade_name].</span>"
examine_list += span_notice("It can be strengthened with up to [maxamount] [upgrade_name].")
/datum/component/armor_plate/proc/applyplate(datum/source, obj/item/I, mob/user, params)
SIGNAL_HANDLER
@@ -55,14 +55,14 @@
if(!istype(I,upgrade_item))
return
if(amount >= maxamount)
to_chat(user, "<span class='warning'>You can't improve [parent] any further!</span>")
to_chat(user, span_warning("You can't improve [parent] any further!"))
return
if(istype(I,/obj/item/stack))
I.use(1)
else
if(length(I.contents))
to_chat(user, "<span class='warning'>[I] cannot be used for armoring while there's something inside!</span>")
to_chat(user, span_warning("[I] cannot be used for armoring while there's something inside!"))
return
qdel(I)
@@ -73,10 +73,10 @@
if(ismecha(O))
var/obj/vehicle/sealed/mecha/R = O
R.update_appearance()
to_chat(user, "<span class='info'>You strengthen [R], improving its resistance against melee, bullet and laser damage.</span>")
to_chat(user, span_info("You strengthen [R], improving its resistance against melee, bullet and laser damage."))
else
SEND_SIGNAL(O, COMSIG_ARMOR_PLATED, amount, maxamount)
to_chat(user, "<span class='info'>You strengthen [O], improving its resistance against melee attacks.</span>")
to_chat(user, span_info("You strengthen [O], improving its resistance against melee attacks."))
/datum/component/armor_plate/proc/dropplates(datum/source, force)

View File

@@ -40,39 +40,39 @@
var/mob/living/carbon/human/H = M
if((user.pulling == H && user.grab_state >= GRAB_AGGRESSIVE) && user.zone_selected == BODY_ZONE_HEAD) // Only aggressive grabbed can be sliced.
if(H.has_status_effect(/datum/status_effect/neck_slice))
user.show_message("<span class='warning'>[H]'s neck has already been already cut, you can't make the bleeding any worse!</span>", MSG_VISUAL, \
"<span class='warning'>Their neck has already been already cut, you can't make the bleeding any worse!</span>")
user.show_message(span_warning("[H]'s neck has already been already cut, you can't make the bleeding any worse!"), MSG_VISUAL, \
span_warning("Their neck has already been already cut, you can't make the bleeding any worse!"))
return COMPONENT_CANCEL_ATTACK_CHAIN
INVOKE_ASYNC(src, .proc/startNeckSlice, source, H, user)
return COMPONENT_CANCEL_ATTACK_CHAIN
/datum/component/butchering/proc/startButcher(obj/item/source, mob/living/M, mob/living/user)
to_chat(user, "<span class='notice'>You begin to butcher [M]...</span>")
to_chat(user, span_notice("You begin to butcher [M]..."))
playsound(M.loc, butcher_sound, 50, TRUE, -1)
if(do_mob(user, M, speed) && M.Adjacent(source))
Butcher(user, M)
/datum/component/butchering/proc/startNeckSlice(obj/item/source, mob/living/carbon/human/H, mob/living/user)
if(DOING_INTERACTION_WITH_TARGET(user, H))
to_chat(user, "<span class='warning'>You're already interacting with [H]!</span>")
to_chat(user, span_warning("You're already interacting with [H]!"))
return
user.visible_message("<span class='danger'>[user] is slitting [H]'s throat!</span>", \
"<span class='danger'>You start slicing [H]'s throat!</span>", \
"<span class='hear'>You hear a cutting noise!</span>", ignored_mobs = H)
H.show_message("<span class='userdanger'>Your throat is being slit by [user]!</span>", MSG_VISUAL, \
user.visible_message(span_danger("[user] is slitting [H]'s throat!"), \
span_danger("You start slicing [H]'s throat!"), \
span_hear("You hear a cutting noise!"), ignored_mobs = H)
H.show_message(span_userdanger("Your throat is being slit by [user]!"), MSG_VISUAL, \
"<span class = 'userdanger'>Something is cutting into your neck!</span>", NONE)
log_combat(user, H, "attempted throat slitting", source)
playsound(H.loc, butcher_sound, 50, TRUE, -1)
if(do_mob(user, H, clamp(500 / source.force, 30, 100)) && H.Adjacent(source))
if(H.has_status_effect(/datum/status_effect/neck_slice))
user.show_message("<span class='warning'>[H]'s neck has already been already cut, you can't make the bleeding any worse!</span>", MSG_VISUAL, \
"<span class='warning'>Their neck has already been already cut, you can't make the bleeding any worse!</span>")
user.show_message(span_warning("[H]'s neck has already been already cut, you can't make the bleeding any worse!"), MSG_VISUAL, \
span_warning("Their neck has already been already cut, you can't make the bleeding any worse!"))
return
H.visible_message("<span class='danger'>[user] slits [H]'s throat!</span>", \
"<span class='userdanger'>[user] slits your throat...</span>")
H.visible_message(span_danger("[user] slits [H]'s throat!"), \
span_userdanger("[user] slits your throat..."))
log_combat(user, H, "wounded via throat slitting", source)
H.apply_damage(source.force, BRUTE, BODY_ZONE_HEAD, wound_bonus=CANT_WOUND) // easy tiger, we'll get to that in a sec
var/obj/item/bodypart/slit_throat = H.get_bodypart(BODY_ZONE_HEAD)
@@ -99,12 +99,12 @@
for(var/_i in 1 to amount)
if(!prob(final_effectiveness))
if(butcher)
to_chat(butcher, "<span class='warning'>You fail to harvest some of the [initial(bones.name)] from [meat].</span>")
to_chat(butcher, span_warning("You fail to harvest some of the [initial(bones.name)] from [meat]."))
continue
if(prob(bonus_chance))
if(butcher)
to_chat(butcher, "<span class='info'>You harvest some extra [initial(bones.name)] from [meat]!</span>")
to_chat(butcher, span_info("You harvest some extra [initial(bones.name)] from [meat]!"))
results += new bones (T)
results += new bones (T)
@@ -124,8 +124,8 @@
carrion.set_custom_materials((carrion.custom_materials - meat_mats) + list(GET_MATERIAL_REF(/datum/material/meat/mob_meat, meat) = counterlist_sum(meat_mats)))
if(butcher)
butcher.visible_message("<span class='notice'>[butcher] butchers [meat].</span>", \
"<span class='notice'>You butcher [meat].</span>")
butcher.visible_message(span_notice("[butcher] butchers [meat]."), \
span_notice("You butcher [meat]."))
ButcherEffects(meat)
meat.harvest(butcher)
meat.gib(FALSE, FALSE, TRUE)

View File

@@ -84,7 +84,7 @@
if(istype(H.belt, /obj/item/wormhole_jaunter))
var/obj/item/wormhole_jaunter/J = H.belt
//To freak out any bystanders
H.visible_message("<span class='boldwarning'>[H] falls into [parent]!</span>")
H.visible_message(span_boldwarning("[H] falls into [parent]!"))
J.chasm_react(H)
return FALSE
return TRUE
@@ -98,8 +98,8 @@
if(T)
// send to the turf below
AM.visible_message("<span class='boldwarning'>[AM] falls into [parent]!</span>", "<span class='userdanger'>[fall_message]</span>")
T.visible_message("<span class='boldwarning'>[AM] falls from above!</span>")
AM.visible_message(span_boldwarning("[AM] falls into [parent]!"), span_userdanger("[fall_message]"))
T.visible_message(span_boldwarning("[AM] falls from above!"))
AM.forceMove(T)
if(isliving(AM))
var/mob/living/L = AM
@@ -109,7 +109,7 @@
else
// send to oblivion
AM.visible_message("<span class='boldwarning'>[AM] falls into [parent]!</span>", "<span class='userdanger'>[oblivion_message]</span>")
AM.visible_message(span_boldwarning("[AM] falls into [parent]!"), span_userdanger("[oblivion_message]"))
if (isliving(AM))
var/mob/living/L = AM
L.notransform = TRUE
@@ -142,7 +142,7 @@
qdel(AM)
if(AM && !QDELETED(AM)) //It's indestructible
var/atom/parent = src.parent
parent.visible_message("<span class='boldwarning'>[parent] spits out [AM]!</span>")
parent.visible_message(span_boldwarning("[parent] spits out [AM]!"))
AM.alpha = oldalpha
AM.color = oldcolor
AM.transform = oldtransform

View File

@@ -17,12 +17,12 @@
var/obj/item/I = parent
if(container.contents.len)
if(user)
to_chat(user, "<span class='warning'>There's already something in [container].</span>")
to_chat(user, span_warning("There's already something in [container]."))
return TRUE
if(user)
if(!user.transferItemToLoc(I, container))
return TRUE
to_chat(user, "<span class='notice'>You put [I] into [container].</span>")
to_chat(user, span_notice("You put [I] into [container]."))
else
I.forceMove(container)
container.tank = I

View File

@@ -443,10 +443,10 @@
user.put_in_hands(result)
else
result.forceMove(user.drop_location())
to_chat(user, "<span class='notice'>[TR.name] constructed.</span>")
to_chat(user, span_notice("[TR.name] constructed."))
TR.on_craft_completion(user, result)
else
to_chat(user, "<span class='warning'>Construction failed[result]</span>")
to_chat(user, span_warning("Construction failed[result]"))
busy = FALSE
if("toggle_recipes")
display_craftable_only = !display_craftable_only

View File

@@ -1001,7 +1001,7 @@
if(!aicard.AI)
return TRUE
to_chat(user, "<span class='boldwarning'>You can't craft an intelliTater with an AI in the card!</span>")
to_chat(user, span_boldwarning("You can't craft an intelliTater with an AI in the card!"))
return FALSE
/datum/crafting_recipe/aispook

View File

@@ -47,9 +47,9 @@
if(!awakened)
return //we should not reveal we are cursed until equipped
if(poison_food_tolerance != FULL_HEALTH)
examine_list += "<span class='notice'>[parent] looks sick from something it ate.</span>"
examine_list += span_notice("[parent] looks sick from something it ate.")
if(hunger > HUNGER_THRESHOLD_WARNING)
examine_list += "<span class='danger'>[parent] hungers for something to eat...</span>"
examine_list += span_danger("[parent] hungers for something to eat...")
///signal called from equipping parent
/datum/component/curse_of_hunger/proc/on_equip(datum/source, mob/equipper, slot)
@@ -114,7 +114,7 @@
cursed_item.forceMove(get_turf(cursed_item))
//only taking the most reasonable slot is fine since it unequips what is there to equip itself.
cursed_item.AddElement(/datum/element/cursed, cursed_item.slot_equipment_priority[1])
cursed_item.visible_message("<span class='warning'>[cursed_item] begins to move on [cursed_item.p_their()] own...</span>")
cursed_item.visible_message(span_warning("[cursed_item] begins to move on [cursed_item.p_their()] own..."))
/datum/component/curse_of_hunger/process(delta_time)
var/obj/item/cursed_item = parent
@@ -134,17 +134,17 @@
playsound(cursed_item, 'sound/items/eatfood.ogg', 20, TRUE)
///poisoned food damages it
if(istype(food, /obj/item/food/badrecipe))
to_chat(cursed, "<span class='warning'>[cursed_item] eats your [food] to sate [cursed_item.p_their()] hunger, and looks [pick("queasy", "sick", "iffy", "unwell")] afterwards!</span>")
to_chat(cursed, span_warning("[cursed_item] eats your [food] to sate [cursed_item.p_their()] hunger, and looks [pick("queasy", "sick", "iffy", "unwell")] afterwards!"))
poison_food_tolerance--
else
to_chat(cursed, "<span class='notice'>[cursed_item] eats your [food] to sate [cursed_item.p_their()] hunger.</span>")
to_chat(cursed, span_notice("[cursed_item] eats your [food] to sate [cursed_item.p_their()] hunger."))
cursed.temporarilyRemoveItemFromInventory(food, force = TRUE)
qdel(food)
hunger = 0
return
///no food found: it bites you and regains some poison food tolerance
playsound(cursed_item, 'sound/items/eatfood.ogg', 20, TRUE)
to_chat(cursed, "<span class='userdanger'>[cursed_item] bites you to sate [cursed_item.p_their()] hunger!</span>")
to_chat(cursed, span_userdanger("[cursed_item] bites you to sate [cursed_item.p_their()] hunger!"))
var/affecting = cursed.get_bodypart(BODY_ZONE_CHEST)
cursed.apply_damage(60, BRUTE, affecting)
hunger = 0

View File

@@ -111,11 +111,11 @@
// only accept valid ingredients
if (!valid_ingredient || HAS_TRAIT(ingredient, TRAIT_CUSTOMIZABLE_REAGENT_HOLDER))
to_chat(attacker, "<span class='warning'>[ingredient] doesn't belong on [parent]!</span>")
to_chat(attacker, span_warning("[ingredient] doesn't belong on [parent]!"))
return
if (LAZYLEN(ingredients) >= max_ingredients)
to_chat(attacker, "<span class='warning'>[parent] is too full for any more ingredients!</span>")
to_chat(attacker, span_warning("[parent] is too full for any more ingredients!"))
return COMPONENT_NO_AFTERATTACK
var/atom/atom_parent = parent

View File

@@ -59,16 +59,16 @@
if(deadchat_mode == ANARCHY_MODE)
var/cooldown = ckey_to_cooldown[source.ckey] - world.time
if(cooldown > 0)
to_chat(source, "<span class='warning'>Your deadchat control inputs are still on cooldown for another [cooldown * 0.1] seconds.</span>")
to_chat(source, span_warning("Your deadchat control inputs are still on cooldown for another [cooldown * 0.1] seconds."))
return MOB_DEADSAY_SIGNAL_INTERCEPT
inputs[message].Invoke()
ckey_to_cooldown[source.ckey] = world.time + input_cooldown
to_chat(source, "<span class='notice'>\"[message]\" input accepted. You are now on cooldown for [input_cooldown * 0.1] seconds.</span>")
to_chat(source, span_notice("\"[message]\" input accepted. You are now on cooldown for [input_cooldown * 0.1] seconds."))
return MOB_DEADSAY_SIGNAL_INTERCEPT
if(deadchat_mode == DEMOCRACY_MODE)
ckey_to_cooldown[source.ckey] = message
to_chat(source, "<span class='notice'>You have voted for \"[message]\".</span>")
to_chat(source, span_notice("You have voted for \"[message]\"."))
return MOB_DEADSAY_SIGNAL_INTERCEPT
/datum/component/deadchat_control/proc/democracy_loop()
@@ -147,9 +147,9 @@
if(QDELETED(src))
return
to_chat(user, "<span class='notice'>Deadchat can no longer control [parent].</span>")
to_chat(user, span_notice("Deadchat can no longer control [parent]."))
log_admin("[key_name(user)] has removed deadchat control from [parent]")
message_admins("<span class='notice'>[key_name(user)] has removed deadchat control from [parent]</span>")
message_admins(span_notice("[key_name(user)] has removed deadchat control from [parent]"))
qdel(src)
@@ -160,12 +160,12 @@
if(!isobserver(user))
return
examine_list += "<span class='notice'>[A.p_theyre(TRUE)] currently under deadchat control using the [deadchat_mode] ruleset!</span>"
examine_list += span_notice("[A.p_theyre(TRUE)] currently under deadchat control using the [deadchat_mode] ruleset!")
if(deadchat_mode == DEMOCRACY_MODE)
examine_list += "<span class='notice'>Type a command into chat to vote on an action. This happens once every [input_cooldown * 0.1] seconds.</span>"
examine_list += span_notice("Type a command into chat to vote on an action. This happens once every [input_cooldown * 0.1] seconds.")
else if(deadchat_mode == ANARCHY_MODE)
examine_list += "<span class='notice'>Type a command into chat to perform. You may do this once every [input_cooldown * 0.1] seconds.</span>"
examine_list += span_notice("Type a command into chat to perform. You may do this once every [input_cooldown * 0.1] seconds.")
var/extended_examine = "<span class='notice'>Command list:"

View File

@@ -73,7 +73,7 @@
if(starting_turf)
var/area/destination_area = starting_turf.loc
if(destination_area.area_flags & NOTELEPORT)
to_chat(parent, "<span class='warning'>For some reason, your head aches and fills with mental fog when you try to think of where you were... It feels like you're now going against some dull, unstoppable universal force.</span>")
to_chat(parent, span_warning("For some reason, your head aches and fills with mental fog when you try to think of where you were... It feels like you're now going against some dull, unstoppable universal force."))
else
var/atom/movable/master = parent
master.forceMove(starting_turf)

View File

@@ -60,12 +60,12 @@
if(isliving(at_least_atom))
var/mob/living/potentially_dead_horse = at_least_atom
if(potentially_dead_horse.stat == DEAD)
to_chat(attacker, "<span class='warning'>[parent] is dead!</span>")
to_chat(attacker, span_warning("[parent] is dead!"))
return COMPONENT_CANCEL_ATTACK_CHAIN
if(eggs_left > max_eggs_held)
to_chat(attacker, "<span class='warning'>[parent] doesn't seem hungry!</span>")
to_chat(attacker, span_warning("[parent] doesn't seem hungry!"))
return COMPONENT_CANCEL_ATTACK_CHAIN
attacker.visible_message("<span class='notice'>[attacker] hand-feeds [food] to [parent].</span>", "<span class='notice'>You hand-feed [food] to [parent].</span>")
attacker.visible_message(span_notice("[attacker] hand-feeds [food] to [parent]."), span_notice("You hand-feed [food] to [parent]."))
at_least_atom.visible_message(pick(feed_messages))
qdel(food)
eggs_left += min(eggs_left + eggs_added_from_eating, max_eggs_held)
@@ -81,7 +81,7 @@
if(!eggs_left || !DT_PROB(1.5, delta_time))
return
at_least_atom.visible_message("<span class='alertalien'>[at_least_atom] [pick(lay_messages)]</span>")
at_least_atom.visible_message(span_alertalien("[at_least_atom] [pick(lay_messages)]"))
eggs_left--
var/obj/item/egg = new egg_type(get_turf(at_least_atom))
egg.pixel_x = rand(-6, 6)

View File

@@ -167,7 +167,7 @@
guinea_pig.electrocute_act(shock_damage, parent_as_movable)
break
parent_as_movable.visible_message("<span class='danger'>The electric chair went off!</span>", "<span class='hear'>You hear a deep sharp shock!</span>")
parent_as_movable.visible_message(span_danger("The electric chair went off!"), span_hear("You hear a deep sharp shock!"))
///a shock that is toggled manually
/datum/component/electrified_buckle/proc/shock_on_demand()
@@ -193,11 +193,11 @@
if(shock_on_loop)
shock_on_loop = FALSE
STOP_PROCESSING(SSprocessing, src)
parent_as_movable.visible_message("<span class='notice'>The electric chair emits a snap as its circuit opens, making it safe for now.</span>")
parent_as_movable.visible_message(span_notice("The electric chair emits a snap as its circuit opens, making it safe for now."))
else
shock_on_loop = TRUE
START_PROCESSING(SSprocessing, src)
parent_as_movable.visible_message("<span class='notice'>You hear the sound of an electric circuit closing coming from the electric chair!</span>")
parent_as_movable.visible_message(span_notice("You hear the sound of an electric circuit closing coming from the electric chair!"))
#undef ELECTRIC_BUCKLE_SHOCK_STRENGTH_DIVISOR
#undef ELECTRIC_BUCKLE_MINUMUM_POWERNET_STRENGTH

View File

@@ -87,7 +87,7 @@
limb.embedded_objects |= weapon // on the inside... on the inside...
weapon.forceMove(victim)
RegisterSignal(weapon, list(COMSIG_MOVABLE_MOVED, COMSIG_PARENT_QDELETING), .proc/weaponDeleted)
victim.visible_message("<span class='danger'>[weapon] [harmful ? "embeds" : "sticks"] itself [harmful ? "in" : "to"] [victim]'s [limb.name]!</span>", "<span class='userdanger'>[weapon] [harmful ? "embeds" : "sticks"] itself [harmful ? "in" : "to"] your [limb.name]!</span>")
victim.visible_message(span_danger("[weapon] [harmful ? "embeds" : "sticks"] itself [harmful ? "in" : "to"] [victim]'s [limb.name]!"), span_userdanger("[weapon] [harmful ? "embeds" : "sticks"] itself [harmful ? "in" : "to"] your [limb.name]!"))
var/damage = weapon.throwforce
if(harmful)
@@ -142,7 +142,7 @@
if(harmful && prob(pain_chance_current))
limb.receive_damage(brute=(1-pain_stam_pct) * damage, stamina=pain_stam_pct * damage, wound_bonus = CANT_WOUND)
to_chat(victim, "<span class='userdanger'>[weapon] embedded in your [limb.name] hurts!</span>")
to_chat(victim, span_userdanger("[weapon] embedded in your [limb.name] hurts!"))
var/fall_chance_current = DT_PROB_RATE(fall_chance / 100, delta_time) * 100
if(victim.body_position == LYING_DOWN)
@@ -168,7 +168,7 @@
if(harmful && prob(chance))
var/damage = weapon.w_class * jostle_pain_mult
limb.receive_damage(brute=(1-pain_stam_pct) * damage, stamina=pain_stam_pct * damage, wound_bonus = CANT_WOUND)
to_chat(victim, "<span class='userdanger'>[weapon] embedded in your [limb.name] jostles and stings!</span>")
to_chat(victim, span_userdanger("[weapon] embedded in your [limb.name] jostles and stings!"))
/// Called when then item randomly falls out of a carbon. This handles the damage and descriptors, then calls safe_remove()
@@ -179,7 +179,7 @@
var/damage = weapon.w_class * remove_pain_mult
limb.receive_damage(brute=(1-pain_stam_pct) * damage, stamina=pain_stam_pct * damage, wound_bonus = CANT_WOUND)
victim.visible_message("<span class='danger'>[weapon] falls [harmful ? "out" : "off"] of [victim.name]'s [limb.name]!</span>", "<span class='userdanger'>[weapon] falls [harmful ? "out" : "off"] of your [limb.name]!</span>")
victim.visible_message(span_danger("[weapon] falls [harmful ? "out" : "off"] of [victim.name]'s [limb.name]!"), span_userdanger("[weapon] falls [harmful ? "out" : "off"] of your [limb.name]!"))
safeRemove()
@@ -195,7 +195,7 @@
/// everything async that ripOut used to do
/datum/component/embedded/proc/complete_rip_out(mob/living/carbon/victim, obj/item/I, obj/item/bodypart/limb, time_taken)
victim.visible_message("<span class='warning'>[victim] attempts to remove [weapon] from [victim.p_their()] [limb.name].</span>","<span class='notice'>You attempt to remove [weapon] from your [limb.name]... (It will take [DisplayTimeText(time_taken)].)</span>")
victim.visible_message(span_warning("[victim] attempts to remove [weapon] from [victim.p_their()] [limb.name]."),span_notice("You attempt to remove [weapon] from your [limb.name]... (It will take [DisplayTimeText(time_taken)].)"))
if(!do_after(victim, time_taken, target = victim))
return
if(!weapon || !limb || weapon.loc != victim || !(weapon in limb.embedded_objects))
@@ -206,7 +206,7 @@
limb.receive_damage(brute=(1-pain_stam_pct) * damage, stamina=pain_stam_pct * damage, sharpness=SHARP_EDGED) //It hurts to rip it out, get surgery you dingus. unlike the others, this CAN wound + increase slash bloodflow
victim.emote("scream")
victim.visible_message("<span class='notice'>[victim] successfully rips [weapon] [harmful ? "out" : "off"] of [victim.p_their()] [limb.name]!</span>", "<span class='notice'>You successfully remove [weapon] from your [limb.name].</span>")
victim.visible_message(span_notice("[victim] successfully rips [weapon] [harmful ? "out" : "off"] of [victim.p_their()] [limb.name]!"), span_notice("You successfully remove [weapon] from your [limb.name]."))
safeRemove(victim)
/// This proc handles the final step and actual removal of an embedded/stuck item from a carbon, whether or not it was actually removed safely.
@@ -235,7 +235,7 @@
limb.embedded_objects -= weapon
if(victim)
to_chat(victim, "<span class='userdanger'>\The [weapon] that was embedded in your [limb.name] disappears!</span>")
to_chat(victim, span_userdanger("\The [weapon] that was embedded in your [limb.name] disappears!"))
qdel(src)
@@ -264,22 +264,22 @@
var/self_pluck = (user == victim)
if(self_pluck)
user.visible_message("<span class='danger'>[user] begins plucking [weapon] from [user.p_their()] [limb.name]</span>", "<span class='notice'>You start plucking [weapon] from your [limb.name]...</span>",\
user.visible_message(span_danger("[user] begins plucking [weapon] from [user.p_their()] [limb.name]"), span_notice("You start plucking [weapon] from your [limb.name]..."),\
vision_distance=COMBAT_MESSAGE_RANGE, ignored_mobs=victim)
else
user.visible_message("<span class='danger'>[user] begins plucking [weapon] from [victim]'s [limb.name]</span>","<span class='notice'>You start plucking [weapon] from [victim]'s [limb.name]...</span>", \
user.visible_message(span_danger("[user] begins plucking [weapon] from [victim]'s [limb.name]"),span_notice("You start plucking [weapon] from [victim]'s [limb.name]..."), \
vision_distance=COMBAT_MESSAGE_RANGE, ignored_mobs=victim)
to_chat(victim, "<span class='userdanger'>[user] begins plucking [weapon] from your [limb.name]...</span>")
to_chat(victim, span_userdanger("[user] begins plucking [weapon] from your [limb.name]..."))
var/pluck_time = 2.5 SECONDS * weapon.w_class * (self_pluck ? 2 : 1)
if(!do_after(user, pluck_time, victim))
if(self_pluck)
to_chat(user, "<span class='danger'>You fail to pluck [weapon] from your [limb.name].</span>")
to_chat(user, span_danger("You fail to pluck [weapon] from your [limb.name]."))
else
to_chat(user, "<span class='danger'>You fail to pluck [weapon] from [victim]'s [limb.name].</span>")
to_chat(victim, "<span class='danger'>[user] fails to pluck [weapon] from your [limb.name].</span>")
to_chat(user, span_danger("You fail to pluck [weapon] from [victim]'s [limb.name]."))
to_chat(victim, span_danger("[user] fails to pluck [weapon] from your [limb.name]."))
return
to_chat(user, "<span class='notice'>You successfully pluck [weapon] from [victim]'s [limb.name].</span>")
to_chat(victim, "<span class='notice'>[user] plucks [weapon] from your [limb.name].</span>")
to_chat(user, span_notice("You successfully pluck [weapon] from [victim]'s [limb.name]."))
to_chat(victim, span_notice("[user] plucks [weapon] from your [limb.name]."))
safeRemove(user)

View File

@@ -118,7 +118,7 @@
if(canFail && prob((quality - 9)*10))
var/turf/place = get_turf(parent)
place.visible_message("<span class='danger'>[parent] <span class='blue'>violently glows blue</span> for a while, then evaporates.</span>")
place.visible_message(span_danger("[parent] [span_blue("violently glows blue")] for a while, then evaporates."))
master.burn()
return
else if(announce)
@@ -151,6 +151,6 @@
effect_description = "<span class='heavy_brass'>shimmering golden glow</span>"
else
span = "<span class='danger'>"
effect_description = "<span class='bold'>mottled black glow</span>"
effect_description = span_bold("mottled black glow")
location.visible_message("[span][originalName] is covered by a [effect_description] and then transforms into [parent]!</span>")

View File

@@ -272,37 +272,37 @@ Behavior that's still missing from this component that original food items had t
return
var/eatverb = pick(eatverbs)
if(junkiness && eater.satiety < -150 && eater.nutrition > NUTRITION_LEVEL_STARVING + 50 && !HAS_TRAIT(eater, TRAIT_VORACIOUS))
to_chat(eater, "<span class='warning'>You don't feel like eating any more junk food at the moment!</span>")
to_chat(eater, span_warning("You don't feel like eating any more junk food at the moment!"))
return
else if(fullness <= 50)
eater.visible_message("<span class='notice'>[eater] hungrily [eatverb]s \the [parent], gobbling it down!</span>", "<span class='notice'>You hungrily [eatverb] \the [parent], gobbling it down!</span>")
eater.visible_message(span_notice("[eater] hungrily [eatverb]s \the [parent], gobbling it down!"), span_notice("You hungrily [eatverb] \the [parent], gobbling it down!"))
else if(fullness > 50 && fullness < 150)
eater.visible_message("<span class='notice'>[eater] hungrily [eatverb]s \the [parent].</span>", "<span class='notice'>You hungrily [eatverb] \the [parent].</span>")
eater.visible_message(span_notice("[eater] hungrily [eatverb]s \the [parent]."), span_notice("You hungrily [eatverb] \the [parent]."))
else if(fullness > 150 && fullness < 500)
eater.visible_message("<span class='notice'>[eater] [eatverb]s \the [parent].</span>", "<span class='notice'>You [eatverb] \the [parent].</span>")
eater.visible_message(span_notice("[eater] [eatverb]s \the [parent]."), span_notice("You [eatverb] \the [parent]."))
else if(fullness > 500 && fullness < 600)
eater.visible_message("<span class='notice'>[eater] unwillingly [eatverb]s a bit of \the [parent].</span>", "<span class='notice'>You unwillingly [eatverb] a bit of \the [parent].</span>")
eater.visible_message(span_notice("[eater] unwillingly [eatverb]s a bit of \the [parent]."), span_notice("You unwillingly [eatverb] a bit of \the [parent]."))
else if(fullness > (600 * (1 + eater.overeatduration / (4000 SECONDS)))) // The more you eat - the more you can eat
eater.visible_message("<span class='warning'>[eater] cannot force any more of \the [parent] to go down [eater.p_their()] throat!</span>", "<span class='warning'>You cannot force any more of \the [parent] to go down your throat!</span>")
eater.visible_message(span_warning("[eater] cannot force any more of \the [parent] to go down [eater.p_their()] throat!"), span_warning("You cannot force any more of \the [parent] to go down your throat!"))
return
else //If you're feeding it to someone else.
if(isbrain(eater))
to_chat(feeder, "<span class='warning'>[eater] doesn't seem to have a mouth!</span>")
to_chat(feeder, span_warning("[eater] doesn't seem to have a mouth!"))
return
if(fullness <= (600 * (1 + eater.overeatduration / (2000 SECONDS))))
eater.visible_message("<span class='danger'>[feeder] attempts to feed [eater] [parent].</span>", \
"<span class='userdanger'>[feeder] attempts to feed you [parent].</span>")
eater.visible_message(span_danger("[feeder] attempts to feed [eater] [parent]."), \
span_userdanger("[feeder] attempts to feed you [parent]."))
else
eater.visible_message("<span class='warning'>[feeder] cannot force any more of [parent] down [eater]'s throat!</span>", \
"<span class='warning'>[feeder] cannot force any more of [parent] down your throat!</span>")
eater.visible_message(span_warning("[feeder] cannot force any more of [parent] down [eater]'s throat!"), \
span_warning("[feeder] cannot force any more of [parent] down your throat!"))
return
if(!do_mob(feeder, eater)) //Wait 3 seconds before you can feed
return
if(IsFoodGone(owner, feeder))
return
log_combat(feeder, eater, "fed", owner.reagents.log_list())
eater.visible_message("<span class='danger'>[feeder] forces [eater] to eat [parent]!</span>", \
"<span class='userdanger'>[feeder] forces you to eat [parent]!</span>")
eater.visible_message(span_danger("[feeder] forces [eater] to eat [parent]!"), \
span_userdanger("[feeder] forces you to eat [parent]!"))
TakeBite(eater, feeder)
@@ -349,7 +349,7 @@ Behavior that's still missing from this component that original food items had t
covered = "mask"
if(covered)
var/who = (isnull(feeder) || eater == feeder) ? "your" : "[eater.p_their()]"
to_chat(feeder, "<span class='warning'>You have to remove [who] [covered] first!</span>")
to_chat(feeder, span_warning("You have to remove [who] [covered] first!"))
return FALSE
return TRUE
@@ -368,7 +368,7 @@ Behavior that's still missing from this component that original food items had t
if(HAS_TRAIT(H, TRAIT_AGEUSIA))
if(foodtypes & H.dna.species.toxic_food)
to_chat(H, "<span class='warning'>You don't feel so good...</span>")
to_chat(H, span_warning("You don't feel so good..."))
H.adjust_disgust(25 + 30 * fraction)
return // Don't care about the later checks if user has ageusia
@@ -387,15 +387,15 @@ Behavior that's still missing from this component that original food items had t
switch(food_taste_reaction)
if(FOOD_TOXIC)
to_chat(H,"<span class='warning'>What the hell was that thing?!</span>")
to_chat(H,span_warning("What the hell was that thing?!"))
H.adjust_disgust(25 + 30 * fraction)
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "toxic_food", /datum/mood_event/disgusting_food)
if(FOOD_DISLIKED)
to_chat(H,"<span class='notice'>That didn't taste very good...</span>")
to_chat(H,span_notice("That didn't taste very good..."))
H.adjust_disgust(11 + 15 * fraction)
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "gross_food", /datum/mood_event/gross_food)
if(FOOD_LIKED)
to_chat(H,"<span class='notice'>I love this taste!</span>")
to_chat(H,span_notice("I love this taste!"))
H.adjust_disgust(-5 + -2.5 * fraction)
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "fav_food", /datum/mood_event/favorite_food)
@@ -405,7 +405,7 @@ Behavior that's still missing from this component that original food items had t
on_consume?.Invoke(eater, feeder)
to_chat(feeder, "<span class='warning'>There is nothing left of [parent], oh no!</span>")
to_chat(feeder, span_warning("There is nothing left of [parent], oh no!"))
if(isturf(parent))
var/turf/T = parent
T.ScrapeAway(1, CHANGETURF_INHERIT_AIR)

View File

@@ -141,13 +141,13 @@
if(dispenser.product_types[dispenser.selected_flavour] > 0)
var/datum/ice_cream_flavour/flavour = GLOB.ice_cream_flavours[dispenser.selected_flavour]
if(flavour.add_flavour(src, dispenser.beaker?.reagents.total_volume ? dispenser.beaker.reagents : null))
dispenser.visible_message("[icon2html(dispenser, viewers(source))] <span class='info'>[user] scoops delicious [dispenser.selected_flavour] ice cream into [source].</span>")
dispenser.visible_message("[icon2html(dispenser, viewers(source))] [span_info("[user] scoops delicious [dispenser.selected_flavour] ice cream into [source].")]")
dispenser.product_types[dispenser.selected_flavour]--
INVOKE_ASYNC(dispenser, /obj/machinery/icecream_vat.proc/updateDialog)
else
to_chat(user, "<span class='warning'>There is not enough ice cream left!</span>")
to_chat(user, span_warning("There is not enough ice cream left!"))
else
to_chat(user, "<span class='warning'>[source] can't hold anymore ice cream!</span>")
to_chat(user, span_warning("[source] can't hold anymore ice cream!"))
return COMPONENT_CANCEL_ATTACK_CHAIN
/////ICE CREAM FLAVOUR DATUM STUFF

View File

@@ -246,7 +246,7 @@
return FALSE
var/obj/item/bodypart/other_hand = shooter.has_hand_for_held_index(shooter.get_inactive_hand_index())
if(weapon_weight == WEAPON_HEAVY && (shooter.get_inactive_held_item() || !other_hand))
to_chat(shooter, "<span class='warning'>You need two hands to fire [src]!</span>")
to_chat(shooter, span_warning("You need two hands to fire [src]!"))
return FALSE
return TRUE

View File

@@ -52,7 +52,7 @@ GLOBAL_LIST_EMPTY(GPS_list)
/datum/component/gps/item/proc/on_examine(datum/source, mob/user, list/examine_list)
SIGNAL_HANDLER
examine_list += "<span class='notice'>Alt-click to switch it [tracking ? "off":"on"].</span>"
examine_list += span_notice("Alt-click to switch it [tracking ? "off":"on"].")
///Called on COMSIG_ATOM_EMP_ACT
/datum/component/gps/item/proc/on_emp_act(datum/source, severity)
@@ -83,21 +83,21 @@ GLOBAL_LIST_EMPTY(GPS_list)
if(!user.canUseTopic(parent, BE_CLOSE))
return //user not valid to use gps
if(emped)
to_chat(user, "<span class='warning'>It's busted!</span>")
to_chat(user, span_warning("It's busted!"))
return
var/atom/A = parent
if(tracking)
A.cut_overlay("working")
to_chat(user, "<span class='notice'>[parent] is no longer tracking, or visible to other GPS devices.</span>")
to_chat(user, span_notice("[parent] is no longer tracking, or visible to other GPS devices."))
tracking = FALSE
else
A.add_overlay("working")
to_chat(user, "<span class='notice'>[parent] is now tracking, and visible to other GPS devices.</span>")
to_chat(user, span_notice("[parent] is now tracking, and visible to other GPS devices."))
tracking = TRUE
/datum/component/gps/item/ui_interact(mob/user, datum/tgui/ui)
if(emped)
to_chat(user, "<span class='hear'>[parent] fizzles weakly.</span>")
to_chat(user, span_hear("[parent] fizzles weakly."))
return
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)

View File

@@ -87,16 +87,16 @@
if(!current_cook_time) //Not grilled yet
if(positive_result)
examine_list += "<span class='notice'>[parent] can be <b>grilled</b> into \a [initial(cook_result.name)].</span>"
examine_list += span_notice("[parent] can be <b>grilled</b> into \a [initial(cook_result.name)].")
return
if(positive_result)
if(current_cook_time <= required_cook_time * 0.75)
examine_list += "<span class='notice'>[parent] probably needs to be cooked a bit longer!</span>"
examine_list += span_notice("[parent] probably needs to be cooked a bit longer!")
else if(current_cook_time <= required_cook_time)
examine_list += "<span class='notice'>[parent] seems to be almost finished cooking!</span>"
examine_list += span_notice("[parent] seems to be almost finished cooking!")
else
examine_list += "<span class='danger'>[parent] should probably not be cooked for much longer!</span>"
examine_list += span_danger("[parent] should probably not be cooked for much longer!")
///Ran when an object moves from the grill
/datum/component/grillable/proc/OnMoved(atom/A, atom/OldLoc, Dir, Forced)

View File

@@ -37,9 +37,9 @@
RegisterSignal(weapon, list(COMSIG_ITEM_DROPPED, COMSIG_ITEM_EQUIPPED), .proc/cancel)
shooter.visible_message("<span class='danger'>[shooter] aims [weapon] point blank at [target]!</span>", \
"<span class='danger'>You aim [weapon] point blank at [target]!</span>", ignored_mobs = target)
to_chat(target, "<span class='userdanger'>[shooter] aims [weapon] point blank at you!</span>")
shooter.visible_message(span_danger("[shooter] aims [weapon] point blank at [target]!"), \
span_danger("You aim [weapon] point blank at [target]!"), ignored_mobs = target)
to_chat(target, span_userdanger("[shooter] aims [weapon] point blank at you!"))
shooter.apply_status_effect(STATUS_EFFECT_HOLDUP, shooter)
target.apply_status_effect(STATUS_EFFECT_HELDUP, shooter)
@@ -79,9 +79,9 @@
if(A != target)
return
var/mob/living/shooter = parent
shooter.visible_message("<span class='danger'>[shooter] bumps into [target] and fumbles [shooter.p_their()] aim!</span>", \
"<span class='danger'>You bump into [target] and fumble your aim!</span>", ignored_mobs = target)
to_chat(target, "<span class='userdanger'>[shooter] bumps into you and fumbles [shooter.p_their()] aim!</span>")
shooter.visible_message(span_danger("[shooter] bumps into [target] and fumbles [shooter.p_their()] aim!"), \
span_danger("You bump into [target] and fumble your aim!"), ignored_mobs = target)
to_chat(target, span_userdanger("[shooter] bumps into you and fumbles [shooter.p_their()] aim!"))
qdel(src)
///If the shooter shoves or grabs the target, cancel the holdup to avoid cheesing and forcing the charged shot
@@ -90,22 +90,22 @@
if(T != target || LAZYACCESS(modifiers, RIGHT_CLICK))
return
shooter.visible_message("<span class='danger'>[shooter] bumps into [target] and fumbles [shooter.p_their()] aim!</span>", \
"<span class='danger'>You bump into [target] and fumble your aim!</span>", ignored_mobs = target)
to_chat(target, "<span class='userdanger'>[shooter] bumps into you and fumbles [shooter.p_their()] aim!</span>")
shooter.visible_message(span_danger("[shooter] bumps into [target] and fumbles [shooter.p_their()] aim!"), \
span_danger("You bump into [target] and fumble your aim!"), ignored_mobs = target)
to_chat(target, span_userdanger("[shooter] bumps into you and fumbles [shooter.p_their()] aim!"))
qdel(src)
///Update the damage multiplier for whatever stage we're entering into
/datum/component/gunpoint/proc/update_stage(new_stage)
stage = new_stage
if(stage == 2)
to_chat(parent, "<span class='danger'>You steady [weapon] on [target].</span>")
to_chat(target, "<span class='userdanger'>[parent] has steadied [weapon] on you!</span>")
to_chat(parent, span_danger("You steady [weapon] on [target]."))
to_chat(target, span_userdanger("[parent] has steadied [weapon] on you!"))
damage_mult = GUNPOINT_MULT_STAGE_2
addtimer(CALLBACK(src, .proc/update_stage, 3), GUNPOINT_DELAY_STAGE_3)
else if(stage == 3)
to_chat(parent, "<span class='danger'>You have fully steadied [weapon] on [target].</span>")
to_chat(target, "<span class='userdanger'>[parent] has fully steadied [weapon] on you!</span>")
to_chat(parent, span_danger("You have fully steadied [weapon] on [target]."))
to_chat(target, span_userdanger("[parent] has fully steadied [weapon] on you!"))
damage_mult = GUNPOINT_MULT_STAGE_3
///Cancel the holdup if the shooter moves out of sight or out of range of the target
@@ -131,9 +131,9 @@
point_of_no_return = TRUE
if(!weapon.can_shoot() || !weapon.can_trigger_gun(shooter) || (weapon.weapon_weight == WEAPON_HEAVY && shooter.get_inactive_held_item()))
shooter.visible_message("<span class='danger'>[shooter] fumbles [weapon]!</span>", \
"<span class='danger'>You fumble [weapon] and fail to fire at [target]!</span>", ignored_mobs = target)
to_chat(target, "<span class='userdanger'>[shooter] fumbles [weapon] and fails to fire at you!</span>")
shooter.visible_message(span_danger("[shooter] fumbles [weapon]!"), \
span_danger("You fumble [weapon] and fail to fire at [target]!"), ignored_mobs = target)
to_chat(target, span_userdanger("[shooter] fumbles [weapon] and fails to fire at you!"))
qdel(src)
return
@@ -160,9 +160,9 @@
SIGNAL_HANDLER
var/mob/living/shooter = parent
shooter.visible_message("<span class='danger'>[shooter] breaks [shooter.p_their()] aim on [target]!</span>", \
"<span class='danger'>You are no longer aiming [weapon] at [target].</span>", ignored_mobs = target)
to_chat(target, "<span class='userdanger'>[shooter] breaks [shooter.p_their()] aim on you!</span>")
shooter.visible_message(span_danger("[shooter] breaks [shooter.p_their()] aim on [target]!"), \
span_danger("You are no longer aiming [weapon] at [target]."), ignored_mobs = target)
to_chat(target, span_userdanger("[shooter] breaks [shooter.p_their()] aim on you!"))
SEND_SIGNAL(target, COMSIG_CLEAR_MOOD_EVENT, "gunpoint")
qdel(src)
@@ -184,8 +184,8 @@
flinch_chance = 80
if(prob(flinch_chance))
shooter.visible_message("<span class='danger'>[shooter] flinches!</span>", \
"<span class='danger'>You flinch!</span>")
shooter.visible_message(span_danger("[shooter] flinches!"), \
span_danger("You flinch!"))
INVOKE_ASYNC(src, .proc/trigger_reaction)
#undef GUNPOINT_SHOOTER_STRAY_RANGE

View File

@@ -15,10 +15,10 @@
SIGNAL_HANDLER
if(user.mind == owner)
examine_list += "<span class='notice'>It is your precious [family_name] family heirloom. Keep it safe!</span>"
examine_list += span_notice("It is your precious [family_name] family heirloom. Keep it safe!")
else if(isobserver(user))
examine_list += "<span class='notice'>It is the [family_name] family heirloom, belonging to [owner].</span>"
examine_list += span_notice("It is the [family_name] family heirloom, belonging to [owner].")
else
var/datum/antagonist/obsessed/creeper = user.mind.has_antag_datum(/datum/antagonist/obsessed)
if(creeper && creeper.trauma.obsession == owner)
examine_list += "<span class='nicegreen'>This must be [owner]'s family heirloom! It smells just like them...</span>"
examine_list += span_nicegreen("This must be [owner]'s family heirloom! It smells just like them...")

View File

@@ -31,5 +31,5 @@
/datum/component/itempicky/proc/particularly(datum/source, obj/item/pickingup)
SIGNAL_HANDLER
if(!is_type_in_typecache(pickingup, whitelist))
to_chat(source, "<span class='warning'>[replacetext(message, "%TARGET", pickingup)]</span>")
to_chat(source, span_warning("[replacetext(message, "%TARGET", pickingup)]"))
return COMPONENT_LIVING_CANT_PUT_IN_HAND

View File

@@ -62,7 +62,7 @@
target.buckled.unbuckle_mob(target)
target.Paralyze(knockdown_time)
if(length(msg))
user.visible_message("<span class='danger'>[msg]!</span>")
user.visible_message(span_danger("[msg]!"))
/datum/component/jousting/proc/mob_move(datum/source, newloc, dir)
SIGNAL_HANDLER

View File

@@ -34,7 +34,7 @@
return
if(!wearer.dropItemToGround(item))
return
wearer.visible_message("<span class='warning'>[attacker] knocks off [wearer]'s [item.name]!</span>","<span class='userdanger'>[attacker] knocks off your [item.name]!</span>")
wearer.visible_message(span_warning("[attacker] knocks off [wearer]'s [item.name]!"),span_userdanger("[attacker] knocks off your [item.name]!"))
///Tries to knockoff the item when user is knocked down
/datum/component/knockoff/proc/Knockoff_knockdown(mob/living/carbon/human/wearer,amount)
@@ -50,7 +50,7 @@
return
if(!wearer.dropItemToGround(item))
return
wearer.visible_message("<span class='warning'>[wearer]'s [item.name] gets knocked off!</span>","<span class='userdanger'>Your [item.name] was knocked off!</span>")
wearer.visible_message(span_warning("[wearer]'s [item.name] gets knocked off!"),span_userdanger("Your [item.name] was knocked off!"))
/datum/component/knockoff/proc/OnEquipped(datum/source, mob/living/carbon/human/H,slot)

View File

@@ -62,7 +62,7 @@
remove_label()
playsound(parent, 'sound/items/poster_ripped.ogg', 20, TRUE)
to_chat(user, "<span class='warning'>You remove the label from [parent].</span>")
to_chat(user, span_warning("You remove the label from [parent]."))
qdel(src) // Remove the component from the object.
/**
@@ -77,7 +77,7 @@
/datum/component/label/proc/Examine(datum/source, mob/user, list/examine_list)
SIGNAL_HANDLER
examine_list += "<span class='notice'>It has a label with some words written on it. Use a hand labeler to remove it.</span>"
examine_list += span_notice("It has a label with some words written on it. Use a hand labeler to remove it.")
/// Applies a label to the name of the parent in the format of: "parent_name (label)"
/datum/component/label/proc/apply_label()

View File

@@ -20,12 +20,12 @@
if(E)
START_PROCESSING(SSdcs, src)
last_blink = world.time
to_chat(C, "<span class='notice'>You suddenly realize you're blinking manually.</span>")
to_chat(C, span_notice("You suddenly realize you're blinking manually."))
/datum/component/manual_blinking/Destroy(force, silent)
E = null
STOP_PROCESSING(SSdcs, src)
to_chat(parent, "<span class='notice'>You revert back to automatic blinking.</span>")
to_chat(parent, span_notice("You revert back to automatic blinking."))
return ..()
/datum/component/manual_blinking/RegisterWithParent()
@@ -57,13 +57,13 @@
if(world.time > (last_blink + check_every + grace_period))
if(!warn_dying)
to_chat(C, "<span class='userdanger'>Your eyes begin to wither, you need to blink!</span>")
to_chat(C, span_userdanger("Your eyes begin to wither, you need to blink!"))
warn_dying = TRUE
E.applyOrganDamage(damage_rate)
else if(world.time > (last_blink + check_every))
if(!warn_grace)
to_chat(C, "<span class='danger'>You feel a need to blink!</span>")
to_chat(C, span_danger("You feel a need to blink!"))
warn_grace = TRUE
/datum/component/manual_blinking/proc/check_added_organ(mob/who_cares, obj/item/organ/O)

View File

@@ -20,12 +20,12 @@
if(L)
START_PROCESSING(SSdcs, src)
last_breath = world.time
to_chat(C, "<span class='notice'>You suddenly realize you're breathing manually.</span>")
to_chat(C, span_notice("You suddenly realize you're breathing manually."))
/datum/component/manual_breathing/Destroy(force, silent)
L = null
STOP_PROCESSING(SSdcs, src)
to_chat(parent, "<span class='notice'>You revert back to automatic breathing.</span>")
to_chat(parent, span_notice("You revert back to automatic breathing."))
return ..()
/datum/component/manual_breathing/RegisterWithParent()
@@ -58,14 +58,14 @@
var/next_text = initial(next_breath_type.key)
if(world.time > (last_breath + check_every + grace_period))
if(!warn_dying)
to_chat(C, "<span class='userdanger'>You begin to suffocate, you need to [next_text]!</span>")
to_chat(C, span_userdanger("You begin to suffocate, you need to [next_text]!"))
warn_dying = TRUE
L.applyOrganDamage(damage_rate)
C.losebreath += 0.8
else if(world.time > (last_breath + check_every))
if(!warn_grace)
to_chat(C, "<span class='danger'>You feel a need to [next_text]!</span>")
to_chat(C, span_danger("You feel a need to [next_text]!"))
warn_grace = TRUE
/datum/component/manual_breathing/proc/check_added_organ(mob/who_cares, obj/item/organ/O)

View File

@@ -105,7 +105,7 @@
var/datum/material/M = I
var/amt = materials[I]
if(amt)
examine_texts += "<span class='notice'>It has [amt] units of [lowertext(M.name)] stored.</span>"
examine_texts += span_notice("It has [amt] units of [lowertext(M.name)] stored.")
/// Proc that allows players to fill the parent with mats
/datum/component/material_container/proc/on_attackby(datum/source, obj/item/I, mob/living/user)
@@ -118,7 +118,7 @@
return
if((I.flags_1 & HOLOGRAM_1) || (I.item_flags & NO_MAT_REDEMPTION) || (tc && !is_type_in_typecache(I, tc)))
if(!(mat_container_flags & MATCONTAINER_SILENT))
to_chat(user, "<span class='warning'>[parent] won't accept [I]!</span>")
to_chat(user, span_warning("[parent] won't accept [I]!"))
return
. = COMPONENT_NO_AFTERATTACK
var/datum/callback/pc = precondition
@@ -126,10 +126,10 @@
return
var/material_amount = get_item_material_amount(I, mat_container_flags)
if(!material_amount)
to_chat(user, "<span class='warning'>[I] does not contain sufficient materials to be accepted by [parent].</span>")
to_chat(user, span_warning("[I] does not contain sufficient materials to be accepted by [parent]."))
return
if(!has_space(material_amount))
to_chat(user, "<span class='warning'>[parent] is full. Please remove materials from [parent] in order to insert more.</span>")
to_chat(user, span_warning("[parent] is full. Please remove materials from [parent] in order to insert more."))
return
user_insert(I, user, mat_container_flags)
@@ -147,11 +147,11 @@
if(QDELETED(I) || QDELETED(user) || QDELETED(src) || parent != current_parent || user.physical_can_use_topic(current_parent) < UI_INTERACTIVE || user.get_active_held_item() != active_held)
return
if(!user.temporarilyRemoveItemFromInventory(I))
to_chat(user, "<span class='warning'>[I] is stuck to you and cannot be placed into [parent].</span>")
to_chat(user, span_warning("[I] is stuck to you and cannot be placed into [parent]."))
return
var/inserted = insert_item(I, stack_amt = requested_amount, breakdown_flags= mat_container_flags)
if(inserted)
to_chat(user, "<span class='notice'>You insert a material total of [inserted] into [parent].</span>")
to_chat(user, span_notice("You insert a material total of [inserted] into [parent]."))
qdel(I)
if(after_insert)
after_insert.Invoke(I, last_inserted_id, inserted)

View File

@@ -47,50 +47,50 @@
RegisterSignal(parent, COMSIG_ADD_MOOD_EVENT_RND, .proc/add_event) //Mood events that are only for RnD members
/datum/component/mood/proc/print_mood(mob/user)
var/msg = "<span class='info'>*---------*\n<EM>My current mental status:</EM></span>\n"
msg += "<span class='notice'>My current sanity: </span>" //Long term
var/msg = "[span_info("*---------*\n<EM>My current mental status:</EM>")]\n"
msg += span_notice("My current sanity: ") //Long term
switch(sanity)
if(SANITY_GREAT to INFINITY)
msg += "<span class='nicegreen'>My mind feels like a temple!</span>\n"
msg += "[span_nicegreen("My mind feels like a temple!")]\n"
if(SANITY_NEUTRAL to SANITY_GREAT)
msg += "<span class='nicegreen'>I have been feeling great lately!</span>\n"
msg += "[span_nicegreen("I have been feeling great lately!")]\n"
if(SANITY_DISTURBED to SANITY_NEUTRAL)
msg += "<span class='nicegreen'>I have felt quite decent lately.</span>\n"
msg += "[span_nicegreen("I have felt quite decent lately.")]\n"
if(SANITY_UNSTABLE to SANITY_DISTURBED)
msg += "<span class='warning'>I'm feeling a little bit unhinged...</span>\n"
msg += "[span_warning("I'm feeling a little bit unhinged...")]\n"
if(SANITY_CRAZY to SANITY_UNSTABLE)
msg += "<span class='boldwarning'>I'm freaking out!!</span>\n"
msg += "[span_boldwarning("I'm freaking out!!")]\n"
if(SANITY_INSANE to SANITY_CRAZY)
msg += "<span class='boldwarning'>AHAHAHAHAHAHAHAHAHAH!!</span>\n"
msg += "[span_boldwarning("AHAHAHAHAHAHAHAHAHAH!!")]\n"
msg += "<span class='notice'>My current mood: </span>" //Short term
msg += span_notice("My current mood: ") //Short term
switch(mood_level)
if(1)
msg += "<span class='boldwarning'>I wish I was dead!</span>\n"
msg += "[span_boldwarning("I wish I was dead!")]\n"
if(2)
msg += "<span class='boldwarning'>I feel terrible...</span>\n"
msg += "[span_boldwarning("I feel terrible...")]\n"
if(3)
msg += "<span class='boldwarning'>I feel very upset.</span>\n"
msg += "[span_boldwarning("I feel very upset.")]\n"
if(4)
msg += "<span class='boldwarning'>I'm a bit sad.</span>\n"
msg += "[span_boldwarning("I'm a bit sad.")]\n"
if(5)
msg += "<span class='nicegreen'>I'm alright.</span>\n"
msg += "[span_nicegreen("I'm alright.")]\n"
if(6)
msg += "<span class='nicegreen'>I feel pretty okay.</span>\n"
msg += "[span_nicegreen("I feel pretty okay.")]\n"
if(7)
msg += "<span class='nicegreen'>I feel pretty good.</span>\n"
msg += "[span_nicegreen("I feel pretty good.")]\n"
if(8)
msg += "<span class='nicegreen'>I feel amazing!</span>\n"
msg += "[span_nicegreen("I feel amazing!")]\n"
if(9)
msg += "<span class='nicegreen'>I love life!</span>\n"
msg += "[span_nicegreen("I love life!")]\n"
msg += "<span class='notice'>Moodlets:</span>\n"//All moodlets
msg += "[span_notice("Moodlets:")]\n"//All moodlets
if(mood_events.len)
for(var/i in mood_events)
var/datum/mood_event/event = mood_events[i]
msg += event.description
else
msg += "<span class='nicegreen'>I don't have much of a reaction to anything right now.</span>\n"
msg += "[span_nicegreen("I don't have much of a reaction to anything right now.")]\n"
to_chat(user, msg)
///Called after moodevent/s have been added/removed.

View File

@@ -212,20 +212,20 @@
if(0 to NANITE_EXCESS_MINOR) //Minor excess amount, the extra nanites are quietly expelled without visible effects
return
if((NANITE_EXCESS_MINOR + 0.1) to NANITE_EXCESS_VOMIT) //Enough nanites getting rejected at once to be visible to the naked eye
host_mob.visible_message("<span class='warning'>A grainy grey slurry starts oozing out of [host_mob].</span>", "<span class='warning'>A grainy grey slurry starts oozing out of your skin.</span>", null, 4);
host_mob.visible_message(span_warning("A grainy grey slurry starts oozing out of [host_mob]."), span_warning("A grainy grey slurry starts oozing out of your skin."), null, 4);
if((NANITE_EXCESS_VOMIT + 0.1) to NANITE_EXCESS_BURST) //Nanites getting rejected in massive amounts, but still enough to make a semi-orderly exit through vomit
if(iscarbon(host_mob))
var/mob/living/carbon/C = host_mob
host_mob.visible_message("<span class='warning'>[host_mob] vomits a grainy grey slurry!</span>", "<span class='warning'>You suddenly vomit a metallic-tasting grainy grey slurry!</span>", null);
host_mob.visible_message(span_warning("[host_mob] vomits a grainy grey slurry!"), span_warning("You suddenly vomit a metallic-tasting grainy grey slurry!"), null);
C.vomit(0, FALSE, TRUE, FLOOR(excess / 100, 1), FALSE, VOMIT_NANITE, FALSE, TRUE, 0)
else
host_mob.visible_message("<span class='warning'>A metallic grey slurry bursts out of [host_mob]'s skin!</span>", "<span class='userdanger'>A metallic grey slurry violently bursts out of your skin!</span>", null);
host_mob.visible_message(span_warning("A metallic grey slurry bursts out of [host_mob]'s skin!"), span_userdanger("A metallic grey slurry violently bursts out of your skin!"), null);
if(isturf(host_mob.drop_location()))
var/turf/T = host_mob.drop_location()
T.add_vomit_floor(host_mob, VOMIT_NANITE, 0)
if((NANITE_EXCESS_BURST + 0.1) to INFINITY) //Way too many nanites, they just leave through the closest exit before they harm/poison the host
host_mob.visible_message("<span class='warning'>A torrent of metallic grey slurry violently bursts out of [host_mob]'s face and floods out of [host_mob.p_their()] skin!</span>",
"<span class='userdanger'>A torrent of metallic grey slurry violently bursts out of your eyes, ears, and mouth, and floods out of your skin!</span>");
host_mob.visible_message(span_warning("A torrent of metallic grey slurry violently bursts out of [host_mob]'s face and floods out of [host_mob.p_their()] skin!"),
span_userdanger("A torrent of metallic grey slurry violently bursts out of your eyes, ears, and mouth, and floods out of your skin!"));
host_mob.blind_eyes(15) //nanites coming out of your eyes
host_mob.Paralyze(120)
@@ -397,24 +397,24 @@
if(!full_scan)
if(!stealth)
to_chat(user, "<span class='notice'><b>Nanites Detected</b></span>")
to_chat(user, "<span class='notice'>Saturation: [nanite_volume]/[max_nanites]</span>")
to_chat(user, span_notice("<b>Nanites Detected</b>"))
to_chat(user, span_notice("Saturation: [nanite_volume]/[max_nanites]"))
return TRUE
else
to_chat(user, "<span class='info'>NANITES DETECTED</span>")
to_chat(user, "<span class='info'>================</span>")
to_chat(user, "<span class='info'>Saturation: [nanite_volume]/[max_nanites]</span>")
to_chat(user, "<span class='info'>Safety Threshold: [safety_threshold]</span>")
to_chat(user, "<span class='info'>Cloud ID: [cloud_id ? cloud_id : "None"]</span>")
to_chat(user, "<span class='info'>Cloud Sync: [cloud_active ? "Active" : "Disabled"]</span>")
to_chat(user, "<span class='info'>================</span>")
to_chat(user, "<span class='info'>Program List:</span>")
to_chat(user, span_info("NANITES DETECTED"))
to_chat(user, span_info("================"))
to_chat(user, span_info("Saturation: [nanite_volume]/[max_nanites]"))
to_chat(user, span_info("Safety Threshold: [safety_threshold]"))
to_chat(user, span_info("Cloud ID: [cloud_id ? cloud_id : "None"]"))
to_chat(user, span_info("Cloud Sync: [cloud_active ? "Active" : "Disabled"]"))
to_chat(user, span_info("================"))
to_chat(user, span_info("Program List:"))
if(!diagnostics)
to_chat(user, "<span class='alert'>Nanite debugging disabled.</span>")
to_chat(user, span_alert("Nanite debugging disabled."))
else
for(var/X in programs)
var/datum/nanite_program/NP = X
to_chat(user, "<span class='info'><b>[NP.name]</b> | [NP.activated ? "Active" : "Inactive"]</span>")
to_chat(user, span_info("<b>[NP.name]</b> | [NP.activated ? "Active" : "Inactive"]"))
return TRUE
/datum/component/nanites/proc/nanite_ui_data(datum/source, list/data, scan_level)

View File

@@ -24,15 +24,15 @@
var/warning = "You get a bad feeling..."
if(permanent)
warning += " A very bad feeling... As if you are surrounded by a twisted aura of pure malevolence..."
to_chat(parent, "<span class='warning'>[warning]</span>")
to_chat(parent, span_warning("[warning]"))
/datum/component/omen/Destroy(force, silent)
if(!silent)
var/mob/living/person = parent
to_chat(person, "<span class='nicegreen'>You feel a horrible omen lifted off your shoulders!</span>")
to_chat(person, span_nicegreen("You feel a horrible omen lifted off your shoulders!"))
if(vessel)
vessel.visible_message("<span class='warning'>[vessel] burns up in a sinister flash, taking an evil energy with it...</span>")
vessel.visible_message(span_warning("[vessel] burns up in a sinister flash, taking an evil energy with it..."))
vessel = null
return ..()
@@ -63,7 +63,7 @@
var/our_guy_pos = get_turf(living_guy)
for(var/turf_content in our_guy_pos)
if(istype(turf_content, /obj/machinery/door/airlock))
to_chat(living_guy, "<span class='warning'>A malevolent force launches your body to the floor...</span>")
to_chat(living_guy, span_warning("A malevolent force launches your body to the floor..."))
var/obj/machinery/door/airlock/darth_airlock = turf_content
living_guy.apply_status_effect(STATUS_EFFECT_PARALYZED, 10)
INVOKE_ASYNC(darth_airlock, /obj/machinery/door/airlock.proc/close, TRUE)
@@ -75,7 +75,7 @@
var/turf/the_turf = t
if(the_turf.zPassOut(living_guy, DOWN) && living_guy.can_zFall(the_turf))
to_chat(living_guy, "<span class='warning'>A malevolent force guides you towards the edge...</span>")
to_chat(living_guy, span_warning("A malevolent force guides you towards the edge..."))
living_guy.throw_at(the_turf, 1, 10, force = MOVE_FORCE_EXTREMELY_STRONG)
if(!permanent)
qdel(src)
@@ -83,7 +83,7 @@
for(var/obj/machinery/vending/darth_vendor in the_turf)
if(darth_vendor.tiltable)
to_chat(living_guy, "<span class='warning'>A malevolent force tugs at the [darth_vendor]...</span>")
to_chat(living_guy, span_warning("A malevolent force tugs at the [darth_vendor]..."))
INVOKE_ASYNC(darth_vendor, /obj/machinery/vending.proc/tilt, living_guy)
if(!permanent)
qdel(src)
@@ -101,7 +101,7 @@
return
playsound(get_turf(our_guy), 'sound/effects/tableheadsmash.ogg', 90, TRUE)
our_guy.visible_message("<span class='danger'>[our_guy] hits [our_guy.p_their()] head really badly falling down!</span>", "<span class='userdanger'>You hit your head really badly falling down!</span>")
our_guy.visible_message(span_danger("[our_guy] hits [our_guy.p_their()] head really badly falling down!"), span_userdanger("You hit your head really badly falling down!"))
the_head.receive_damage(75)
our_guy.adjustOrganLoss(ORGAN_SLOT_BRAIN, 100)
if(!permanent)

View File

@@ -99,7 +99,7 @@
orbiter.glide_size = movable_parent.glide_size
orbiter.forceMove(get_turf(parent))
to_chat(orbiter, "<span class='notice'>Now orbiting [parent].</span>")
to_chat(orbiter, span_notice("Now orbiting [parent]."))
/datum/component/orbiter/proc/end_orbit(atom/movable/orbiter, refreshing=FALSE)
if(!orbiter_list[orbiter])

View File

@@ -42,29 +42,29 @@
if(!card)
switch(transaction_style)
if(PAYMENT_FRIENDLY)
to_chat(user, "<span class='warning'>ID not detected, sorry [user]!</span>")
to_chat(user, span_warning("ID not detected, sorry [user]!"))
if(PAYMENT_ANGRY)
to_chat(user, "<span class='warning'>WHERE IS YOUR GOD DAMN CARD! GOD DAMNIT!</span>")
to_chat(user, span_warning("WHERE IS YOUR GOD DAMN CARD! GOD DAMNIT!"))
if(PAYMENT_CLINICAL)
to_chat(user, "<span class='warning'>ID card not present. Aborting.</span>")
to_chat(user, span_warning("ID card not present. Aborting."))
return COMPONENT_OBJ_CANCEL_CHARGE
if(!card.registered_account)
switch(transaction_style)
if(PAYMENT_FRIENDLY)
to_chat(user, "<span class='warning'>There's no account detected on your ID, how mysterious!</span>")
to_chat(user, span_warning("There's no account detected on your ID, how mysterious!"))
if(PAYMENT_ANGRY)
to_chat(user, "<span class='warning'>ARE YOU JOKING. YOU DON'T HAVE A BANK ACCOUNT ON YOUR ID YOU IDIOT.</span>")
to_chat(user, span_warning("ARE YOU JOKING. YOU DON'T HAVE A BANK ACCOUNT ON YOUR ID YOU IDIOT."))
if(PAYMENT_CLINICAL)
to_chat(user, "<span class='warning'>ID Card lacks a bank account. Aborting.</span>")
to_chat(user, span_warning("ID Card lacks a bank account. Aborting."))
return COMPONENT_OBJ_CANCEL_CHARGE
if(!(card.registered_account.has_money(cost + extra_fees)))
switch(transaction_style)
if(PAYMENT_FRIENDLY)
to_chat(user, "<span class='warning'>I'm so sorry... You don't seem to have enough money.</span>")
to_chat(user, span_warning("I'm so sorry... You don't seem to have enough money."))
if(PAYMENT_ANGRY)
to_chat(user, "<span class='warning'>YOU MORON. YOU ABSOLUTE BAFOON. YOU INSUFFERABLE TOOL. YOU ARE POOR.</span>")
to_chat(user, span_warning("YOU MORON. YOU ABSOLUTE BAFOON. YOU INSUFFERABLE TOOL. YOU ARE POOR."))
if(PAYMENT_CLINICAL)
to_chat(user, "<span class='warning'>ID Card lacks funds. Aborting.</span>")
to_chat(user, span_warning("ID Card lacks funds. Aborting."))
return COMPONENT_OBJ_CANCEL_CHARGE
target_acc.transfer_money(card.registered_account, cost + extra_fees)
card.registered_account.bank_card_talk("[cost + extra_fees] credits deducted from your account.")

View File

@@ -182,7 +182,7 @@
var/self_harm_radius_mult = 3
if(punishable_triggerer && prob(60))
to_chat(punishable_triggerer, "<span class='userdanger'>Your plan to whack someone with a grenade on a stick backfires on you, literally!</span>")
to_chat(punishable_triggerer, span_userdanger("Your plan to whack someone with a grenade on a stick backfires on you, literally!"))
self_harm_radius_mult = 1 // we'll still give the guy who got hit some extra shredding, but not 3*radius
pellet_delta += radius
for(var/i in 1 to radius)
@@ -199,13 +199,13 @@
for(var/M in martyrs)
var/mob/living/martyr = M
if(radius > 4)
martyr.visible_message("<b><span class='danger'>[martyr] heroically covers \the [parent] with [martyr.p_their()] body, absorbing a load of the shrapnel!</span></b>", "<span class='userdanger'>You heroically cover \the [parent] with your body, absorbing a load of the shrapnel!</span>")
martyr.visible_message("<b>[span_danger("[martyr] heroically covers \the [parent] with [martyr.p_their()] body, absorbing a load of the shrapnel!")]</b>", span_userdanger("You heroically cover \the [parent] with your body, absorbing a load of the shrapnel!"))
magnitude_absorbed += round(radius * 0.5)
else if(radius >= 2)
martyr.visible_message("<b><span class='danger'>[martyr] heroically covers \the [parent] with [martyr.p_their()] body, absorbing some of the shrapnel!</span></b>", "<span class='userdanger'>You heroically cover \the [parent] with your body, absorbing some of the shrapnel!</span>")
martyr.visible_message("<b>[span_danger("[martyr] heroically covers \the [parent] with [martyr.p_their()] body, absorbing some of the shrapnel!")]</b>", span_userdanger("You heroically cover \the [parent] with your body, absorbing some of the shrapnel!"))
magnitude_absorbed += 2
else
martyr.visible_message("<b><span class='danger'>[martyr] heroically covers \the [parent] with [martyr.p_their()] body, snuffing out the shrapnel!</span></b>", "<span class='userdanger'>You heroically cover \the [parent] with your body, snuffing out the shrapnel!</span>")
martyr.visible_message("<b>[span_danger("[martyr] heroically covers \the [parent] with [martyr.p_their()] body, snuffing out the shrapnel!")]</b>", span_userdanger("You heroically cover \the [parent] with your body, snuffing out the shrapnel!"))
magnitude_absorbed = radius
var/pellets_absorbed = (radius ** 2) - ((radius - magnitude_absorbed - 1) ** 2)
@@ -308,11 +308,11 @@
hit_part.painless_wound_roll(wound_type, damage_dealt, w_bonus, bw_bonus, initial(P.sharpness))
if(num_hits > 1)
target.visible_message("<span class='danger'>[target] is hit by [num_hits] [proj_name]s[hit_part ? " in the [hit_part.name]" : ""][did_damage ? ", which don't leave a mark" : ""]!</span>", null, null, COMBAT_MESSAGE_RANGE, target)
to_chat(target, "<span class='userdanger'>You're hit by [num_hits] [proj_name]s[hit_part ? " in the [hit_part.name]" : ""]!</span>")
target.visible_message(span_danger("[target] is hit by [num_hits] [proj_name]s[hit_part ? " in the [hit_part.name]" : ""][did_damage ? ", which don't leave a mark" : ""]!"), null, null, COMBAT_MESSAGE_RANGE, target)
to_chat(target, span_userdanger("You're hit by [num_hits] [proj_name]s[hit_part ? " in the [hit_part.name]" : ""]!"))
else
target.visible_message("<span class='danger'>[target] is hit by a [proj_name][hit_part ? " in the [hit_part.name]" : ""][did_damage ? ", which doesn't leave a mark" : ""]!</span>", null, null, COMBAT_MESSAGE_RANGE, target)
to_chat(target, "<span class='userdanger'>You're hit by a [proj_name][hit_part ? " in the [hit_part.name]" : ""]!</span>")
target.visible_message(span_danger("[target] is hit by a [proj_name][hit_part ? " in the [hit_part.name]" : ""][did_damage ? ", which doesn't leave a mark" : ""]!"), null, null, COMBAT_MESSAGE_RANGE, target)
to_chat(target, span_userdanger("You're hit by a [proj_name][hit_part ? " in the [hit_part.name]" : ""]!"))
for(var/M in purple_hearts)
var/mob/living/martyr = M

View File

@@ -87,7 +87,7 @@
fragments += "[length(fragments) ? " and [master.p_they()] " : "[master] "]hurt[master.p_s()] to look at."
if(length(fragments))
out += "<span class='warning'>[fragments.Join()]</span>"
out += span_warning("[fragments.Join()]")
/datum/component/radioactive/proc/rad_attack(datum/source, atom/movable/target, mob/living/user)
SIGNAL_HANDLER

View File

@@ -124,7 +124,7 @@
to_chat(user, "<span class='warning'>You are not the high priest, and therefore cannot select a religious sect.")
return
if(!user.canUseTopic(parent, BE_CLOSE, FALSE, NO_TK))
to_chat(user,"<span class='warning'>You cannot select a sect at this time.</span>")
to_chat(user,span_warning("You cannot select a sect at this time."))
return
if(GLOB.religious_sect)
return
@@ -148,7 +148,7 @@
to_chat(user, "<span class='notice'>There is a rite currently being performed here already.")
return
if(!user.canUseTopic(parent, BE_CLOSE, FALSE, NO_TK))
to_chat(user,"<span class='warning'>You are not close enough to perform the rite.</span>")
to_chat(user,span_warning("You are not close enough to perform the rite."))
return
performing_rite = new path(parent)
if(!performing_rite.perform_rite(user, parent))
@@ -228,12 +228,12 @@
if(!can_i_see)
return
examine_list += "<span class='notice'>Use a bible to interact with this.</span>"
examine_list += span_notice("Use a bible to interact with this.")
if(!easy_access_sect)
if(operation_flags & RELIGION_TOOL_SECTSELECT)
examine_list += "<span class='notice'>This looks like it can be used to select a sect.</span>"
examine_list += span_notice("This looks like it can be used to select a sect.")
return
if(operation_flags & RELIGION_TOOL_SACRIFICE)//this can be moved around if things change but usually no rites == no sacrifice
examine_list += "<span class='notice'>Desired items can be used on this to increase favor.</span>"
examine_list += span_notice("Desired items can be used on this to increase favor.")
if(easy_access_sect.rites_list && operation_flags & RELIGION_TOOL_INVOKE)
examine_list += "<span class='notice'>You can invoke rites from this.</span>"
examine_list += span_notice("You can invoke rites from this.")

View File

@@ -103,7 +103,7 @@ handles linking back and forth.
var/obj/item/multitool/M = I
if (!QDELETED(M.buffer) && istype(M.buffer, /obj/machinery/ore_silo))
if (silo == M.buffer)
to_chat(user, "<span class='warning'>[parent] is already connected to [silo]!</span>")
to_chat(user, span_warning("[parent] is already connected to [silo]!"))
return COMPONENT_BLOCK_TOOL_ATTACK
if (silo)
silo.connected -= src
@@ -115,7 +115,7 @@ handles linking back and forth.
silo.connected += src
silo.updateUsrDialog()
mat_container = silo.GetComponent(/datum/component/material_container)
to_chat(user, "<span class='notice'>You connect [parent] to [silo] from the multitool's buffer.</span>")
to_chat(user, span_notice("You connect [parent] to [silo] from the multitool's buffer."))
return COMPONENT_BLOCK_TOOL_ATTACK
/datum/component/remote_materials/proc/on_hold()

View File

@@ -62,8 +62,8 @@
if(!kick_us_off)
return TRUE
rider.visible_message("<span class='warning'>[rider] falls off of [living_parent]!</span>", \
"<span class='warning'>You fall off of [living_parent]!</span>")
rider.visible_message(span_warning("[rider] falls off of [living_parent]!"), \
span_warning("You fall off of [living_parent]!"))
rider.Paralyze(1 SECONDS)
rider.Knockdown(4 SECONDS)
living_parent.unbuckle_mob(rider)
@@ -84,7 +84,7 @@
if(!keycheck(user))
if(ispath(keytype, /obj/item))
var/obj/item/key = keytype
to_chat(user, "<span class='warning'>You need a [initial(key.name)] to ride [movable_parent]!</span>")
to_chat(user, span_warning("You need a [initial(key.name)] to ride [movable_parent]!"))
return COMPONENT_DRIVER_BLOCK_MOVE
var/mob/living/living_parent = parent
var/turf/next = get_step(living_parent, direction)
@@ -105,12 +105,12 @@
rider.Move(targetm)
rider.Knockdown(3 SECONDS)
if(gentle)
rider.visible_message("<span class='warning'>[rider] is thrown clear of [movable_parent]!</span>", \
"<span class='warning'>You're thrown clear of [movable_parent]!</span>")
rider.visible_message(span_warning("[rider] is thrown clear of [movable_parent]!"), \
span_warning("You're thrown clear of [movable_parent]!"))
rider.throw_at(target, 8, 3, movable_parent, gentle = TRUE)
else
rider.visible_message("<span class='warning'>[rider] is thrown violently from [movable_parent]!</span>", \
"<span class='warning'>You're thrown violently from [movable_parent]!</span>")
rider.visible_message(span_warning("[rider] is thrown violently from [movable_parent]!"), \
span_warning("You're thrown violently from [movable_parent]!"))
rider.throw_at(target, 14, 5, movable_parent, gentle = FALSE)
/// If we're a cyborg or animal and we spin, we yeet whoever's on us off us
@@ -199,9 +199,9 @@
human_parent.unbuckle_mob(rider)
rider.Paralyze(1 SECONDS)
rider.Knockdown(4 SECONDS)
human_parent.visible_message("<span class='danger'>[rider] topples off of [human_parent] as they both fall to the ground!</span>", \
"<span class='warning'>You fall to the ground, bringing [rider] with you!</span>", "<span class='hear'>You hear two consecutive thuds.</span>", COMBAT_MESSAGE_RANGE, ignored_mobs=rider)
to_chat(rider, "<span class='danger'>[human_parent] falls to the ground, bringing you with [human_parent.p_them()]!</span>")
human_parent.visible_message(span_danger("[rider] topples off of [human_parent] as they both fall to the ground!"), \
span_warning("You fall to the ground, bringing [rider] with you!"), span_hear("You hear two consecutive thuds."), COMBAT_MESSAGE_RANGE, ignored_mobs=rider)
to_chat(rider, span_danger("[human_parent] falls to the ground, bringing you with [human_parent.p_them()]!"))
/datum/component/riding/creature/human/handle_vehicle_layer(dir)
var/atom/movable/AM = parent
@@ -235,8 +235,8 @@
AM.unbuckle_mob(dismounted_rider)
dismounted_rider.Paralyze(1 SECONDS)
dismounted_rider.Knockdown(4 SECONDS)
dismounted_rider.visible_message("<span class='warning'>[AM] pushes [dismounted_rider] off of [AM.p_them()]!</span>", \
"<span class='warning'>[AM] pushes you off of [AM.p_them()]!</span>")
dismounted_rider.visible_message(span_warning("[AM] pushes [dismounted_rider] off of [AM.p_them()]!"), \
span_warning("[AM] pushes you off of [AM.p_them()]!"))
//Now onto cyborg riding//
@@ -250,7 +250,7 @@
var/mob/living/carbon/carbonuser = user
if(!carbonuser.usable_hands)
Unbuckle(user)
to_chat(user, "<span class='warning'>You can't grab onto [robot_parent] with no hands!</span>")
to_chat(user, span_warning("You can't grab onto [robot_parent] with no hands!"))
/datum/component/riding/creature/cyborg/handle_vehicle_layer(dir)
var/atom/movable/robot_parent = parent

View File

@@ -16,43 +16,43 @@
if(!keycheck(user))
if(COOLDOWN_FINISHED(src, message_cooldown))
to_chat(user, "<span class='warning'>[vehicle_parent] has no key inserted!</span>")
to_chat(user, span_warning("[vehicle_parent] has no key inserted!"))
COOLDOWN_START(src, message_cooldown, 5 SECONDS)
return COMPONENT_DRIVER_BLOCK_MOVE
if(HAS_TRAIT(user, TRAIT_INCAPACITATED))
if(ride_check_flags & UNBUCKLE_DISABLED_RIDER)
vehicle_parent.unbuckle_mob(user, TRUE)
user.visible_message("<span class='danger'>[user] falls off \the [vehicle_parent].</span>",\
"<span class='danger'>You slip off \the [vehicle_parent] as your body slumps!</span>")
user.visible_message(span_danger("[user] falls off \the [vehicle_parent]."),\
span_danger("You slip off \the [vehicle_parent] as your body slumps!"))
user.Stun(3 SECONDS)
if(COOLDOWN_FINISHED(src, message_cooldown))
to_chat(user, "<span class='warning'>You cannot operate \the [vehicle_parent] right now!</span>")
to_chat(user, span_warning("You cannot operate \the [vehicle_parent] right now!"))
COOLDOWN_START(src, message_cooldown, 5 SECONDS)
return COMPONENT_DRIVER_BLOCK_MOVE
if(ride_check_flags & RIDER_NEEDS_LEGS && HAS_TRAIT(user, TRAIT_FLOORED))
if(ride_check_flags & UNBUCKLE_DISABLED_RIDER)
vehicle_parent.unbuckle_mob(user, TRUE)
user.visible_message("<span class='danger'>[user] falls off \the [vehicle_parent].</span>",\
"<span class='danger'>You fall off \the [vehicle_parent] while trying to operate it while unable to stand!</span>")
user.visible_message(span_danger("[user] falls off \the [vehicle_parent]."),\
span_danger("You fall off \the [vehicle_parent] while trying to operate it while unable to stand!"))
user.Stun(3 SECONDS)
if(COOLDOWN_FINISHED(src, message_cooldown))
to_chat(user, "<span class='warning'>You can't seem to manage that while unable to stand up enough to move \the [vehicle_parent]...</span>")
to_chat(user, span_warning("You can't seem to manage that while unable to stand up enough to move \the [vehicle_parent]..."))
COOLDOWN_START(src, message_cooldown, 5 SECONDS)
return COMPONENT_DRIVER_BLOCK_MOVE
if(ride_check_flags & RIDER_NEEDS_ARMS && HAS_TRAIT(user, TRAIT_HANDS_BLOCKED))
if(ride_check_flags & UNBUCKLE_DISABLED_RIDER)
vehicle_parent.unbuckle_mob(user, TRUE)
user.visible_message("<span class='danger'>[user] falls off \the [vehicle_parent].</span>",\
"<span class='danger'>You fall off \the [vehicle_parent] while trying to operate it without being able to hold on!</span>")
user.visible_message(span_danger("[user] falls off \the [vehicle_parent]."),\
span_danger("You fall off \the [vehicle_parent] while trying to operate it without being able to hold on!"))
user.Stun(3 SECONDS)
if(COOLDOWN_FINISHED(src, message_cooldown))
to_chat(user, "<span class='warning'>You can't seem to hold onto \the [vehicle_parent] to move it...</span>")
to_chat(user, span_warning("You can't seem to hold onto \the [vehicle_parent] to move it..."))
COOLDOWN_START(src, message_cooldown, 5 SECONDS)
return COMPONENT_DRIVER_BLOCK_MOVE
@@ -67,7 +67,7 @@
if(!istype(next) || !istype(current))
return //not happening.
if(!turf_check(next, current))
to_chat(user, "<span class='warning'>\The [movable_parent] can not go onto [next]!</span>")
to_chat(user, span_warning("\The [movable_parent] can not go onto [next]!"))
return
if(!Process_Spacemove(direction) || !isturf(movable_parent.loc))
return
@@ -185,7 +185,7 @@
if(keycheck(user) && the_secway.eddie_murphy)
if(COOLDOWN_FINISHED(src, message_cooldown))
the_secway.visible_message("<span class='warning'>[src] sputters and refuses to move!</span>")
the_secway.visible_message(span_warning("[src] sputters and refuses to move!"))
playsound(get_turf(the_secway), 'sound/effects/stall.ogg', 70)
COOLDOWN_START(src, message_cooldown, 0.75 SECONDS)
return COMPONENT_DRIVER_BLOCK_MOVE

View File

@@ -102,7 +102,7 @@
SIGNAL_HANDLER
if(rotation_flags & ROTATION_ALTCLICK)
examine_list += "<span class='notice'>Alt-click to rotate it clockwise.</span>"
examine_list += span_notice("Alt-click to rotate it clockwise.")
/datum/component/simple_rotation/proc/HandRot(datum/source, mob/user, rotation = default_rotation_direction)
SIGNAL_HANDLER
@@ -142,7 +142,7 @@
return !AM.anchored
/datum/component/simple_rotation/proc/default_after_rotation(mob/user, rotation_type)
to_chat(user,"<span class='notice'>You [rotation_type == ROTATION_FLIP ? "flip" : "rotate"] [parent].</span>")
to_chat(user,span_notice("You [rotation_type == ROTATION_FLIP ? "flip" : "rotate"] [parent]."))
/atom/movable/proc/simple_rotate_clockwise()
set name = "Rotate Clockwise"

View File

@@ -69,13 +69,13 @@
/datum/component/shell/proc/on_examine(datum/source, mob/user, list/examine_text)
SIGNAL_HANDLER
if(!attached_circuit)
examine_text += "<span class='notice'>There is no integrated circuit attached.</span>"
examine_text += span_notice("There is no integrated circuit attached.")
return
examine_text += "<span class='notice'>There is an integrated circuit attached. Use a multitool to access the wiring. Use a screwdriver to remove it from [source].</span>"
examine_text += "<span class='notice'>The cover panel to the integrated circuit is [locked? "locked" : "unlocked"].</span>"
examine_text += span_notice("There is an integrated circuit attached. Use a multitool to access the wiring. Use a screwdriver to remove it from [source].")
examine_text += span_notice("The cover panel to the integrated circuit is [locked? "locked" : "unlocked"].")
var/obj/item/stock_parts/cell/cell = attached_circuit.cell
examine_text += "<span class='notice'>The charge meter reads [cell ? round(cell.percent(), 1) : 0]%.</span>"
examine_text += span_notice("The charge meter reads [cell ? round(cell.percent(), 1) : 0]%.")
/**

View File

@@ -143,7 +143,7 @@
do_sparks(2, TRUE, owner)
owner.visible_message("<span class='danger'>[owner]'s shields deflect [attack_text] in a shower of sparks!<span>")
if(current_charges <= 0)
owner.visible_message("<span class='warning'>[owner]'s shield overloads!</span>")
owner.visible_message(span_warning("[owner]'s shield overloads!"))
/datum/component/shielded/proc/check_recharge_rune(datum/source, obj/item/wizard_armour_charge/recharge_rune, mob/living/user)
SIGNAL_HANDLER
@@ -152,9 +152,9 @@
return
. = COMPONENT_NO_AFTERATTACK
if(!istype(parent, /obj/item/clothing/suit/space/hardsuit/shielded/wizard))
to_chat(user, "<span class='warning'>The rune can only be used on battlemage armour!</span>")
to_chat(user, span_warning("The rune can only be used on battlemage armour!"))
return
current_charges += recharge_rune.restored_charges
to_chat(user, "<span class='notice'>You charge \the [parent]. It can now absorb [current_charges] hits.</span>")
to_chat(user, span_notice("You charge \the [parent]. It can now absorb [current_charges] hits."))
qdel(recharge_rune)

View File

@@ -18,13 +18,13 @@
if(iscarbon(L))
var/mob/living/carbon/C = L
C.unequip_everything()
C.visible_message("<span class='warning'>[C]'s belongings fall off of [C.p_them()] as they shrink down!</span>",
"<span class='userdanger'>Your belongings fall away as everything grows bigger!</span>")
C.visible_message(span_warning("[C]'s belongings fall off of [C.p_them()] as they shrink down!"),
span_userdanger("Your belongings fall away as everything grows bigger!"))
if(ishuman(C))
var/mob/living/carbon/human/H = C
H.physiology.damage_resistance -= 100//carbons take double damage while shrunk
parent_atom.visible_message("<span class='warning'>[parent_atom] shrinks down to a tiny size!</span>",
"<span class='userdanger'>Everything grows bigger!</span>")
parent_atom.visible_message(span_warning("[parent_atom] shrinks down to a tiny size!"),
span_userdanger("Everything grows bigger!"))
QDEL_IN(src, shrink_time)
/datum/component/shrink/Destroy()

View File

@@ -69,7 +69,7 @@
if(length(strangers) && locate(/mob/living) in strangers)
for(var/mob/living/person in strangers)
if(person != owner && !is_type_in_typecache(person, whitelist) && (person.stat != DEAD || dead_shy))
to_chat(owner, "<span class='warning'>[replacetext(message, "%TARGET", person)]</span>")
to_chat(owner, span_warning("[replacetext(message, "%TARGET", person)]"))
result = TRUE
break

View File

@@ -49,7 +49,7 @@
var/area/room = get_area(owner)
if(is_type_in_typecache(room, blacklist))
to_chat(owner, "<span class='warning'>[replacetext(message, "%ROOM", room)]</span>")
to_chat(owner, span_warning("[replacetext(message, "%ROOM", room)]"))
return TRUE
/datum/component/shy_in_room/proc/on_clickon(datum/source, atom/target, params)

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