diff --git a/code/__defines/span.dm b/code/__defines/span.dm index fe949e69b0..2459b4d9f9 100644 --- a/code/__defines/span.dm +++ b/code/__defines/span.dm @@ -226,6 +226,8 @@ #define span_massive(str) "" + str + "" +#define span_extramassive(str) "" + str + "" + #define span_narsie(str) "" + str + "" #define span_cascade(str) "" + str + "" diff --git a/code/__defines/vv.dm b/code/__defines/vv.dm index 977a282d60..13b7f2eb98 100644 --- a/code/__defines/vv.dm +++ b/code/__defines/vv.dm @@ -20,9 +20,9 @@ #define VV_MARKED_DATUM "Marked Datum" #define VV_BITFIELD "Bitfield" -#define VV_MSG_MARKED "
Marked Object" -#define VV_MSG_EDITED "
Var Edited" -#define VV_MSG_DELETED "
Deleted" +#define VV_MSG_MARKED "
" + span_small(span_red(span_bold("Marked Object"))) +#define VV_MSG_EDITED "
" + span_small(span_red(span_bold("Var Edited"))) +#define VV_MSG_DELETED "
" + span_small(span_red(span_bold("Deleted"))) #define VV_NORMAL_LIST_NO_EXPAND_THRESHOLD 50 #define VV_SPECIAL_LIST_NO_EXPAND_THRESHOLD 150 diff --git a/code/_helpers/logging.dm b/code/_helpers/logging.dm index 29e5bd05dc..93862ae051 100644 --- a/code/_helpers/logging.dm +++ b/code/_helpers/logging.dm @@ -371,7 +371,7 @@ name = M.name if(include_link && is_special_character(M) && highlight_special_characters) - name = "[name]" //Orange + name = span_orange("[name]") //Orange . += "/([name])" diff --git a/code/controllers/subsystems/events.dm b/code/controllers/subsystems/events.dm index 2e91ad3b15..1a7ce0a4aa 100644 --- a/code/controllers/subsystems/events.dm +++ b/code/controllers/subsystems/events.dm @@ -76,7 +76,7 @@ SUBSYSTEM_DEF(events) if(!report_at_round_end) return - to_chat(world, "


Random Events This Round:") + to_chat(world, "


" + span_large(span_bold("Random Events This Round:"))) for(var/datum/event/E in active_events|finished_events) var/datum/event_meta/EM = E.event_meta if(EM.name == "Nothing") diff --git a/code/controllers/subsystems/statpanel.dm b/code/controllers/subsystems/statpanel.dm index bd3dba2ac4..413c38d343 100644 --- a/code/controllers/subsystems/statpanel.dm +++ b/code/controllers/subsystems/statpanel.dm @@ -158,17 +158,17 @@ SUBSYSTEM_DEF(statpanels) target.obj_window.atoms_to_show += target.obj_window.examine_target START_PROCESSING(SSobj_tab_items, target.obj_window) refresh_client_obj_view(target) - examine_update += "[target.examine_icon] [description_holders["name"]]" //The name, written in big letters. + examine_update += "[target.examine_icon] " + span_giant("[description_holders["name"]]") //The name, written in big letters. examine_update += "[description_holders["desc"]]" //the default examine text. if(description_holders["info"]) - examine_update += "" + span_bold("[replacetext(description_holders["info"], "\n", "
")]") + "

" //Blue, informative text. + examine_update += span_blue(span_bold("[replacetext(description_holders["info"], "\n", "
")]")) + "
" //Blue, informative text. if(description_holders["interactions"]) for(var/line in description_holders["interactions"]) - examine_update += "" + span_bold("[line]") + "
" + examine_update += span_blue(span_bold("[line]")) + "
" if(description_holders["fluff"]) - examine_update += "" + span_bold("[replacetext(description_holders["fluff"], "\n", "
")]") + "

" //Green, fluff-related text. + examine_update += span_green(span_bold("[replacetext(description_holders["fluff"], "\n", "
")]")) + "
" //Green, fluff-related text. if(description_holders["antag"]) - examine_update += "" + span_bold("[description_holders["antag"]]") + "
" //Red, malicious antag-related text + examine_update += span_red(span_bold("[description_holders["antag"]]")) + "
" //Red, malicious antag-related text target.stat_panel.send_message("update_examine", examine_update) diff --git a/code/datums/managed_browsers/changelingevolution.dm b/code/datums/managed_browsers/changelingevolution.dm index 635b9dd9b5..e09511fef5 100644 --- a/code/datums/managed_browsers/changelingevolution.dm +++ b/code/datums/managed_browsers/changelingevolution.dm @@ -103,18 +103,18 @@ my_client.mob.mind.changeling.purchasePower(M, Thepower) if(href_list["tutorial"]) - textbody = "
What am I?

" + textbody = "
" + span_red("What am I?") + "

" textbody += "" - textbody += "You are a changeling, a creature empowered with genetic-based abilities that change your body in bizarre ways." - textbody += " It's probably best the crew doesn't know about your power -- at least not right away.

" - textbody += "What a changeling is, however, is up to you. Are you a strange alien impersonating crew? Are you a" - textbody += " normal crewmember infected with a parasite? An experiment gone wrong? It's up to you to make the story.

" - textbody += "Of course, you need to know how it works to begin with.

" - textbody += "Your abilities cost chemicals that your body will slowly regenerate with varying speeds based on enhancements obtained." - textbody += " There are a set of inherent abilities you will always have while the rest may be purchased through genomes.

" - textbody += "You may obtain more genomes if you find another changeling and absorb them, but this is not required. If you've found " - textbody += "your abilities aren't to your liking, you have up to two re-adapts available, and these may be refilled by absorbing anyone -- including monkeys.

" - textbody += "Good luck and remember, killing isn't always the end goal." + textbody += span_white("You are a changeling, a creature empowered with genetic-based abilities that change your body in bizarre ways.") + textbody += span_white(" It's probably best the crew doesn't know about your power -- at least not right away.") + "

" + textbody += span_white("What a changeling " + span_italics("is"), + " however, is up to you. Are you a strange alien impersonating crew? Are you a") + textbody += span_white(" normal crewmember infected with a parasite? An experiment gone wrong? It's up to you to make the story.") + "

" + textbody += span_white("Of course, you need to know how it works to begin with.") + "

" + textbody += span_white("Your abilities cost chemicals that your body will slowly regenerate with varying speeds based on enhancements obtained.") + textbody += span_white(" There are a set of inherent abilities you will always have while the rest may be purchased through genomes.") + "

" + textbody += span_white("You may obtain more genomes if you find another changeling and absorb them, but this is not required. If you've found ") + textbody += span_white("your abilities aren't to your liking, you have up to two re-adapts available, and these may be refilled by absorbing anyone -- including monkeys.") + "

" + textbody += span_white("Good luck and remember, killing isn't always the end goal.") display() /datum/managed_browser/changelingevolution/proc/generate_abilitylist(cat) @@ -149,17 +149,17 @@ create_textbody(ability_list, catname, info) /datum/managed_browser/changelingevolution/proc/create_textbody(ability_list, cat, catinfo) - textbody = "
[cat] Skills
" - textbody += "[catinfo]


" + textbody = "
" + span_red("[cat] Skills") + "
" + textbody += "" + span_white("[catinfo]") + "


" for(var/A in ability_list) var/datum/power/changeling/powerdata = A - textbody += "
[initial(powerdata.name)]
" - textbody += "[initial(powerdata.desc)]

" - textbody += "[powerdata.helptext]
" + textbody += "
" + span_red(span_bold("[initial(powerdata.name)]")) + "
" + textbody += span_white("[initial(powerdata.desc)]") + "

" + textbody += span_white(span_italics("[powerdata.helptext]")) + "
" if(powerdata.enhancedtext != "") - textbody += "WHEN ENHANCED: [powerdata.enhancedtext]
" + textbody += span_white(span_bold("WHEN ENHANCED: ") + span_italics("[powerdata.enhancedtext]")) + "
" if(powerdata in my_client.mob.mind.changeling.purchased_powers) - textbody += "
This ability is already evolved!
" + textbody += "
" + span_white(span_italics(span_bold("This ability is already evolved!"))) + "
" else if(cat != "Inherent") textbody += "
Cost: [powerdata.genomecost]
" textbody += "
Evolve
" diff --git a/code/datums/managed_browsers/feedback_form.dm b/code/datums/managed_browsers/feedback_form.dm index cb859d8feb..3717e3e16a 100644 --- a/code/datums/managed_browsers/feedback_form.dm +++ b/code/datums/managed_browsers/feedback_form.dm @@ -42,13 +42,12 @@ GENERAL_PROTECT_DATUM(/datum/managed_browser/feedback_form) /datum/managed_browser/feedback_form/get_html() var/list/dat = list("") dat += "
" - dat += "" - dat += "Here, you can write some feedback for the server.
" - dat += "Note that HTML is NOT supported!
" - dat += "Click the edit button to begin writing.
" + var/dat_text = "Here, you can write some feedback for the server.
" + dat_text += "Note that HTML is NOT supported!
" + dat_text += "Click the edit button to begin writing.
" - dat += "Your feedback is currently [length(feedback_body)]/[MAX_FEEDBACK_LENGTH] letters long." - dat += "
" + dat_text += "Your feedback is currently [length(feedback_body)]/[MAX_FEEDBACK_LENGTH] letters long." + dat += span_normal(dat_text) dat += "
" dat += "

Preview

" diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 907e484fc3..ebb2221b16 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -347,10 +347,10 @@ if(I in organs.implants) qdel(I) break - to_chat(H, span_notice("Your loyalty implant has been deactivated.")) + to_chat(H, span_notice(span_large(span_bold("Your loyalty implant has been deactivated.")))) log_admin("[key_name_admin(usr)] has de-loyalty implanted [current].") if("add") - to_chat(H, span_danger("You somehow have become the recepient of a loyalty transplant, and it just activated!")) + to_chat(H, span_danger(span_large("You somehow have become the recepient of a loyalty transplant, and it just activated!"))) H.implant_loyalty(override = TRUE) log_admin("[key_name_admin(usr)] has loyalty implanted [current].") diff --git a/code/game/antagonist/antagonist_panel.dm b/code/game/antagonist/antagonist_panel.dm index 60925b9d9b..21ab349f83 100644 --- a/code/game/antagonist/antagonist_panel.dm +++ b/code/game/antagonist/antagonist_panel.dm @@ -28,8 +28,8 @@ dat += "" if(M) dat += "[M.real_name]/([player.key])" - if(!M.client) dat += " (logged out)" - if(M.stat == DEAD) dat += " (DEAD)" + if(!M.client) dat += " " + span_italics("(logged out)") + if(M.stat == DEAD) dat += " " + span_red(span_bold("(DEAD)")) dat += "" dat += "\[PP]\[PM\]\[TP\]" else diff --git a/code/game/antagonist/station/cultist.dm b/code/game/antagonist/station/cultist.dm index 95019c5968..a90383e18b 100644 --- a/code/game/antagonist/station/cultist.dm +++ b/code/game/antagonist/station/cultist.dm @@ -107,7 +107,7 @@ var/datum/antagonist/cultist/cult to_chat(player.current, span_danger("An unfamiliar white light flashes through your mind, cleansing the taint of the dark-one and the memories of your time as his servant with it.")) player.memory = "" if(show_message) - player.current.visible_message("[player.current] looks like they just reverted to their old faith!") + player.current.visible_message(span_large("[player.current] looks like they just reverted to their old faith!")) /datum/antagonist/cultist/add_antagonist(var/datum/mind/player) . = ..() diff --git a/code/game/atoms.dm b/code/game/atoms.dm index a3ff0e79b7..929e5d8b2a 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -631,15 +631,16 @@ if(!isliving(src)) custom_edit_name = "[src]" . += {" - [custom_edit_name] -
+ [custom_edit_name]
+ "} + var/content = {" << [dir2text(dir)] >> -
"} + . += span_small(content) var/turf/T = get_turf(src) - . += "
[ADMIN_COORDJMP(T)]" + . += "
" + span_small("[ADMIN_COORDJMP(T)]") /atom/vv_edit_var(var_name, var_value) switch(var_name) diff --git a/code/game/gamemodes/events/holidays/Other.dm b/code/game/gamemodes/events/holidays/Other.dm index 4f29575e09..d6fe5b6ba1 100644 --- a/code/game/gamemodes/events/holidays/Other.dm +++ b/code/game/gamemodes/events/holidays/Other.dm @@ -4,7 +4,7 @@ message_admins("The apocalypse has begun! (this holiday event can be disabled by toggling events off within 60 seconds)") spawn(600) if(!CONFIG_GET(flag/allow_random_events)) return - Show2Group4Delay(ScreenText(null,"
GAME OVER
"),null,150) + Show2Group4Delay(ScreenText(null,"
" + span_red(span_extramassive("GAME OVER")) + "
"),null,150) for(var/i=1,i<=4,i++) spawn_dynamic_event() sleep(50) diff --git a/code/game/gamemodes/technomancer/catalog.dm b/code/game/gamemodes/technomancer/catalog.dm index fc4e49a7a0..fd50cf0a25 100644 --- a/code/game/gamemodes/technomancer/catalog.dm +++ b/code/game/gamemodes/technomancer/catalog.dm @@ -122,12 +122,12 @@ var/list/all_technomancer_assistance = subtypesof(/datum/technomancer/assistance if(0) //Functions var/dat = "" user.set_machine(src) - dat += "Functions | " + dat += "" + span_bold("Functions") + " | " dat += "Equipment | " dat += "Consumables | " dat += "Assistance | " dat += "Info
" - dat += "You currently have a budget of [budget]/[max_budget].

" + dat += "You currently have a budget of " + span_bold("[budget]/[max_budget]") + ".

" dat += "Refund Functions

" dat += "[show_categories(ALL_SPELLS)] | [show_categories(OFFENSIVE_SPELLS)] | [show_categories(DEFENSIVE_SPELLS)] | \ @@ -138,15 +138,15 @@ var/list/all_technomancer_assistance = subtypesof(/datum/technomancer/assistance if(spell_tab != ALL_SPELLS && spell.category != spell_tab) continue dat += span_bold("[spell.name]") + "
" - dat += "[spell.desc]
" + dat += span_italics("[spell.desc]") + "
" if(spell.spell_power_desc) - dat += "Spell Power: [spell.spell_power_desc]
" + dat += span_purple("Spell Power: [spell.spell_power_desc]") + "
" if(spell.enhancement_desc) - dat += "Scepter Effect: [spell.enhancement_desc]
" + dat += span_blue("Scepter Effect: [spell.enhancement_desc]") + "
" if(spell.cost <= budget) dat += "Purchase ([spell.cost])

" else - dat += "Cannot afford!

" + dat += span_red(span_bold("Cannot afford!")) + "

" user << browse("[dat]", "window=radio") onclose(user, "radio") if(1) //Equipment @@ -157,14 +157,14 @@ var/list/all_technomancer_assistance = subtypesof(/datum/technomancer/assistance dat += "Consumables | " dat += "Assistance | " dat += "Info
" - dat += "You currently have a budget of [budget]/[max_budget].

" + dat += "You currently have a budget of " + span_bold("[budget]/[max_budget]") + ".

" for(var/datum/technomancer/equipment/E in equipment_instances) dat += span_bold("[E.name]") + "
" - dat += "[E.desc]
" + dat += span_italics("[E.desc]") + "
" if(E.cost <= budget) dat += "Purchase ([E.cost])

" else - dat += "Cannot afford!

" + dat += span_red(span_bold("Cannot afford!")) + "

" user << browse("[dat]", "window=radio") onclose(user, "radio") if(2) //Consumables @@ -175,14 +175,14 @@ var/list/all_technomancer_assistance = subtypesof(/datum/technomancer/assistance dat += span_bold("Consumables") + " | " dat += "Assistance | " dat += "Info
" - dat += "You currently have a budget of [budget]/[max_budget].

" + dat += "You currently have a budget of " + span_bold("[budget]/[max_budget]") + ".

" for(var/datum/technomancer/consumable/C in consumable_instances) dat += span_bold("[C.name]") + "
" - dat += "[C.desc]
" + dat += span_italics("[C.desc]") + "
" if(C.cost <= budget) dat += "Purchase ([C.cost])

" else - dat += "Cannot afford!

" + dat += span_red(span_bold("Cannot afford!")) + "

" user << browse("[dat]", "window=radio") onclose(user, "radio") if(3) //Assistance @@ -193,14 +193,14 @@ var/list/all_technomancer_assistance = subtypesof(/datum/technomancer/assistance dat += "Consumables | " dat += span_bold("Assistance") + " | " dat += "Info
" - dat += "You currently have a budget of [budget]/[max_budget].

" + dat += "You currently have a budget of " + span_bold("[budget]/[max_budget]") + ".

" for(var/datum/technomancer/assistance/A in assistance_instances) dat += span_bold("[A.name]") + "
" - dat += "[A.desc]
" + dat += span_italics("[A.desc]") + "
" if(A.cost <= budget) dat += "Purchase ([A.cost])

" else - dat += "Cannot afford!

" + dat += span_red(span_bold("Cannot afford!")) + "

" user << browse("[dat]", "window=radio") onclose(user, "radio") if(4) //Info @@ -211,21 +211,21 @@ var/list/all_technomancer_assistance = subtypesof(/datum/technomancer/assistance dat += "Consumables | " dat += "Assistance | " dat += span_bold("Info") + "
" - dat += "You currently have a budget of [budget]/[max_budget].

" + dat += "You currently have a budget of " + span_bold("[budget]/[max_budget]") + ".

" dat += "
" dat += "

Manipulation Core Owner's Manual


" dat += "This brief entry in your catalog will try to explain what everything does. For starters, the thing you're \ - probably wearing on your back is known as a Manipulation Core, or just a 'Core'. It allows you to do amazing \ - things with almost no effort, depending on what functions you've purchased for it. Don't lose your core!
" + probably wearing on your back is known as a " + span_bold("Manipulation Core") + ", or just a 'Core'. It allows you to do amazing \ + things with almost no effort, depending on what " + span_bold("functions") + " you've purchased for it. Don't lose your core!
" dat += "
" dat += "There are a few things you need to keep in mind as you use your Core to manipulate the universe. The core \ - requires a special type of energy, that is referred to as just 'Energy' in the catalog. All cores generate \ + requires a special type of " + span_bold("energy") + ", that is referred to as just 'Energy' in the catalog. All cores generate \ their own energy, some more than others. Most functions require energy be spent in order to work, so make sure not \ to run out in a critical moment. Besides waiting for your Core to recharge, you can buy certain functions which \ do something to generate energy.
" dat += "
" dat += "The second thing you need to know is that awesome power over the physical world has consequences, in the form \ - of Instability. Instability is the result of your Core's energy being used to fuel it, and so little is \ + of " + span_bold("Instability") + ". Instability is the result of your Core's energy being used to fuel it, and so little is \ understood about it, even among fellow Core owners, however it is almost always a bad thing to have. Instability will \ 'cling' to you as you use functions, with powerful functions creating lots of instability. The effects of holding onto \ instability are generally harmless or mildly annoying at low levels, with effects such as sparks in the air or forced \ @@ -235,7 +235,7 @@ var/list/all_technomancer_assistance = subtypesof(/datum/technomancer/assistance dat += "Fortunately, all Cores come with a meter to tell you how much instability you currently hold. \ Instability will go away on its own as time goes on. You can tell if you have instability by the characteristic \ purple colored lightning that appears around something with instability lingering on it. High amounts of instability \ - may cause the object afflicted with it to glow a dark purple, which is often known simply as Glow, which spreads \ + may cause the object afflicted with it to glow a dark purple, which is often known simply as " + span_bold("Glow") + ", which spreads \ the instability. You should stay far away from anyone afflicted by Glow, as they will be a danger to both themselves and \ anything nearby. Multiple sources of Glow can perpetuate the glow for a very long time if they are not separated.
" dat += "
" @@ -260,9 +260,9 @@ var/list/all_technomancer_assistance = subtypesof(/datum/technomancer/assistance a target of your choice.
" dat += "Some functions can have their abilities enhanced by a special rod called the Scepter of Enhancement. \ If a function is able to be boosted with it, it will be shown underneath the description of the function as \ - 'Scepter Effect:'. Note that you must hold the scepter for it to work, so try to avoid losing it.
" + " + span_blue(span_italics("'Scepter Effect:'")) + ". Note that you must hold the scepter for it to work, so try to avoid losing it.
" dat += "Functions can also be boosted with the core itself. A function that is able to benefit \ - from this will have 'Spell Power:' underneath. Different Cores have different \ + from this will have " + span_purple(span_italics("'Spell Power:'")) + " underneath. Different Cores have different \ amounts of spell power.
" dat += "When a function refers to 'allies', it means you, your apprentices, currently controlled entities (with the \ Control function), and friendly simple-minded entities that you've summoned with the Scepter of Enhancement.
" diff --git a/code/game/gamemodes/technomancer/spells/audible_deception.dm b/code/game/gamemodes/technomancer/spells/audible_deception.dm index 9a79928494..aa8a642909 100644 --- a/code/game/gamemodes/technomancer/spells/audible_deception.dm +++ b/code/game/gamemodes/technomancer/spells/audible_deception.dm @@ -93,4 +93,4 @@ M.Paralyse(4) else M.make_jittery(50) - to_chat(M, span_red("HONK")) + to_chat(M, span_red(span_massive(span_bold("HONK")))) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 8fdc228f55..aa51eb8a04 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -519,8 +519,7 @@ These diskettes are used to transfer genetic information between machines and profiles. A load/save dialog will become available in each profile if a disk is inserted.


A good diskette is a great way to counter aforementioned genetic drift!
-
- This technology produced under license from Thinktronic Systems, LTD."} +
"} + span_small("This technology produced under license from Thinktronic Systems, LTD.") //SOME SCRAPS I GUESS /* EMP grenade/spell effect diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 721b3d93e4..6eab2aca15 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -409,18 +409,18 @@ dat += "
You ran out of food and starved." if(emagged) user.nutrition = 0 //yeah you pretty hongry - to_chat(user, span_danger("Your body instantly contracts to that of one who has not eaten in months. Agonizing cramps seize you as you fall to the floor.")) + to_chat(user, span_danger(span_large("Your body instantly contracts to that of one who has not eaten in months. Agonizing cramps seize you as you fall to the floor."))) if(fuel <= 0) dat += "
You ran out of fuel, and drift, slowly, into a star." if(emagged) var/mob/living/M = user M.adjust_fire_stacks(5) M.IgniteMob() //flew into a star, so you're on fire - to_chat(user,span_danger("You feel an immense wave of heat emanate from \the [src]. Your skin bursts into flames.")) + to_chat(user,span_danger(span_large("You feel an immense wave of heat emanate from \the [src]. Your skin bursts into flames."))) dat += "

OK...

" if(emagged) - to_chat(user, span_danger("You're never going to make it to Orion...")) + to_chat(user, span_danger(span_large("You're never going to make it to Orion..."))) user.death() emagged = 0 //removes the emagged status after you lose gameStatus = ORION_STATUS_START diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index ffe823cb71..9509253ede 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -53,7 +53,7 @@ var/obj/item/paper/monitorkey/MK = new/obj/item/paper/monitorkey MK.loc = loc // Will help make emagging the console not so easy to get away with. - MK.info += "

£%@%(*$%&(£&?*(%&£/{}" + MK.info += "

" + span_red("£%@%(*$%&(£&?*(%&£/{}") spawn(100*length(linkedServer.decryptkey)) UnmagConsole() temp = rebootmsg update_icon() diff --git a/code/game/machinery/computer3/computers/card.dm b/code/game/machinery/computer3/computers/card.dm index d187121007..55c5d751d9 100644 --- a/code/game/machinery/computer3/computers/card.dm +++ b/code/game/machinery/computer3/computers/card.dm @@ -40,7 +40,7 @@ jobs_all += "Custom" counter = 0 - jobs_all += "Security"//Red + jobs_all += "" + span_red(span_bold("Security")) + ""//Red for(var/job in security_positions) counter++ if(counter >= 6) @@ -49,7 +49,7 @@ jobs_all += "[replacetext(job, " ", " ")]" counter = 0 - jobs_all += "Engineering"//Orange + jobs_all += "" + span_orange(span_bold("Engineering")) + ""//Orange for(var/job in engineering_positions) counter++ if(counter >= 6) @@ -58,7 +58,7 @@ jobs_all += "[replacetext(job, " ", " ")]" counter = 0 - jobs_all += "Medical"//Green + jobs_all += "" + span_green(span_bold("Medical")) + ""//Green for(var/job in medical_positions) counter++ if(counter >= 6) @@ -67,7 +67,7 @@ jobs_all += "[replacetext(job, " ", " ")]" counter = 0 - jobs_all += "Science"//Purple + jobs_all += "" + span_purple(span_bold("Science")) + ""//Purple for(var/job in science_positions) counter++ if(counter >= 6) @@ -76,7 +76,7 @@ jobs_all += "[replacetext(job, " ", " ")]" counter = 0 - jobs_all += "Civilian"//Grey + jobs_all += "" + span_grey(span_bold("Civilian")) + ""//Grey for(var/job in civilian_positions) counter++ if(counter >= 6) @@ -124,7 +124,7 @@ accesses += "" for(var/A in get_region_accesses(i)) if(A in writer.GetAccess()) - accesses += topic_link(src,"access=[A]","[replacetext(get_access_desc(A), " ", " ")]") + " " + accesses += topic_link(src,"access=[A]",span_red("[replacetext(get_access_desc(A), " ", " ")]")) + " " else accesses += topic_link(src,"access=[A]",replacetext(get_access_desc(A), " ", " ")) + " " accesses += "
" @@ -185,7 +185,7 @@ L += R for(var/R in sortList(L)) crew += "[R]
" - return "Crew Manifest:
Please use security record computer to modify entries.

[crew][topic_link(src,"print","Print")]

[topic_link(src,"mode=0","Access ID modification console.")]
" + return "" + span_bold("Crew Manifest:") + "
Please use security record computer to modify entries.

[crew][topic_link(src,"print","Print")]

[topic_link(src,"mode=0","Access ID modification console.")]
" // These are here partly in order to be overwritten by the centcom card computer code /datum/file/program/card_comp/proc/authenticate() @@ -336,7 +336,7 @@ var/accesses = "
[using_map.boss_name]:
" for(var/A in get_all_centcom_access()) if(A in writer.GetAccess()) - accesses += topic_link(src,"access=[A]","[replacetext(get_centcom_access_desc(A), " ", " ")]") + " " + accesses += topic_link(src,"access=[A]",span_red("[replacetext(get_centcom_access_desc(A), " ", " ")]")) + " " else accesses += topic_link(src,"access=[A]",replacetext(get_centcom_access_desc(A), " ", " ")) + " " return accesses diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm index c6b20d01fe..b337e6b2ca 100644 --- a/code/game/machinery/doors/airlock_electronics.dm +++ b/code/game/machinery/doors/airlock_electronics.dm @@ -39,7 +39,7 @@ t1 += "Access requirement is set to " t1 += one_access ? "ONE
" : "ALL
" - t1 += conf_access == null ? "All
" : "All
" + t1 += conf_access == null ? span_red("All") + "
" : "All
" t1 += "
" diff --git a/code/game/machinery/pandemic.dm b/code/game/machinery/pandemic.dm index 54791587ed..55db46704a 100644 --- a/code/game/machinery/pandemic.dm +++ b/code/game/machinery/pandemic.dm @@ -337,7 +337,7 @@ var/signature if(tgui_alert(user, "Would you like to add your signature?", "Signature", list("Yes","No")) == "Yes") - signature = "[user ? user.real_name : "Anonymous"]" + signature = "" + span_italics("[user ? user.real_name : "Anonymous"]") + "" else signature = "" @@ -346,17 +346,17 @@ visible_message(span_notice("[src] rattles and prints out a sheet of paper.")) playsound(loc, 'sound/machines/printer.ogg', 50, 1) - P.info = "
Releasing Virus
" + P.info = span_underline(span_huge(span_bold("
Releasing Virus
"))) P.info += "
" - P.info += "Name of the Virus: [D.name]
" - P.info += "Symptoms: [symtoms]
" - P.info += "Spreads by: [D.spread_text]
" - P.info += "Cured by: [D.cure_text]
" + P.info += span_underline("Name of the Virus:") + " [D.name]
" + P.info += span_underline("Symptoms:") + " [symtoms]
" + P.info += span_underline("Spreads by:") + " [D.spread_text]
" + P.info += span_underline("Cured by:") + " [D.cure_text]
" P.info += "
" - P.info += "Reason for releasing: [reason]" + P.info += span_underline("Reason for releasing:") + " [reason]" P.info += "
" P.info += "The Virologist is responsible for any biohazards caused by the virus released.
" - P.info += "Virologist's sign: [signature]
" + P.info += span_underline("Virologist's sign:") + " [signature]
" P.info += "If approved, stamp below with the Chief Medical Officer's stamp, and/or the Captain's stamp if required:" P.updateinfolinks() P.name = "Releasing Virus - [D.name]" diff --git a/code/game/machinery/records_scanner.dm b/code/game/machinery/records_scanner.dm index eb4a74aa3c..e7fa6f487b 100644 --- a/code/game/machinery/records_scanner.dm +++ b/code/game/machinery/records_scanner.dm @@ -59,16 +59,15 @@ marks += row["rank"] qdel(cquery) */ - var/text = {" -
Report

- Name: [mname] - Age: [age] - Sex: [gender] - DNA: [dna] - Blood Type: [bloodtype] - Fingerprint: [fingerprint] - - Black Marks:
"} + var/text = "\ + " span_huge("
Report
") + "
\ + " + span_bold(span_underline("Name")) + " : [mname]\ + " + span_bold(span_underline("Age")) + " : [age]\ + " + span_bold(span_underline("Sex")) + " : [gender]\ + " + span_bold(span_underline("DNA")) + " : [dna]\ + " + span_bold(span_underline("Blood Type")) + " : [bloodtype]\ + " + span_bold(span_underline("Fingerprint")) + " : [fingerprint]\ + " + span_bold(span_underline("Black Marks")) + " :
" for(var/A in marks) text += span_danger("[A]") + "
" to_chat(user, span_notice("You feel a sting as the scanner extracts some of your blood.")) diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 8f998d90d9..70ab58035e 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -255,7 +255,7 @@ var/list/obj/machinery/requests_console/allConsoles = list() if(inoperable(MAINT)) return if(screen == RCS_MESSAUTH) var/obj/item/card/id/T = O - msgVerified = text("Verified by [T.registered_name] ([T.assignment])") + msgVerified = span_green(span_bold("Verified by [T.registered_name] ([T.assignment])")) SStgui.update_uis(src) if(screen == RCS_ANNOUNCE) var/obj/item/card/id/ID = O @@ -270,7 +270,7 @@ var/list/obj/machinery/requests_console/allConsoles = list() if(inoperable(MAINT)) return if(screen == RCS_MESSAUTH) var/obj/item/stamp/T = O - msgStamped = text("Stamped with the [T.name]") + msgStamped = span_blue(span_bold("Stamped with the [T.name]")) SStgui.update_uis(src) return diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index 6e65c39eb6..a6fed880a7 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -18,17 +18,17 @@ /obj/machinery/syndicate_beacon/attack_hand(var/mob/user as mob) user.set_machine(src) - var/dat = "Scanning [pick("retina pattern", "voice print", "fingerprints", "dna sequence")]...
Identity confirmed,
" + var/dat = span_darkgreen(span_italics("Scanning [pick("retina pattern", "voice print", "fingerprints", "dna sequence")]...
Identity confirmed,
")) if(ishuman(user) || isAI(user)) if(is_special_character(user)) - dat += "Operative record found. Greetings, Agent [user.name].
" + dat += span_darkgreen(span_italics("Operative record found. Greetings, Agent [user.name].
")) else if(charges < 1) dat += "Connection severed.
" else var/honorific = "Mr." if(user.gender == FEMALE) honorific = "Ms." - dat += "Identity not found in operative database. What can the Syndicate do for you today, [honorific] [user.name]?
" + dat += span_red(span_italics("Identity not found in operative database. What can the Syndicate do for you today, [honorific] [user.name]?
")) if(!selfdestructing) dat += "

\"[pick("I want to switch teams.", "I want to work for you.", "Let me join you.", "I can be of use to you.", "You want me working for you, and here's why...", "Give me an objective.", "How's the 401k over at the Syndicate?")]\"
" dat += temptext @@ -44,13 +44,13 @@ return var/mob/M = locate(href_list["traitormob"]) if(M.mind.special_role || jobban_isbanned(M, JOB_SYNDICATE)) - temptext = "We have no need for you at this time. Have a pleasant day.
" + temptext = span_italics("We have no need for you at this time. Have a pleasant day.") + "
" updateUsrDialog(usr) return charges -= 1 switch(rand(1,2)) if(1) - temptext = "Double-crosser. You planned to betray us from the start. Allow us to repay the favor in kind." + temptext = span_red(span_italics(span_bold("Double-crosser. You planned to betray us from the start. Allow us to repay the favor in kind."))) updateUsrDialog(usr) spawn(rand(50,200)) selfdestruct() return diff --git a/code/game/machinery/syndicatebeacon_vr.dm b/code/game/machinery/syndicatebeacon_vr.dm index dd3f00cb5d..356ba99d6d 100644 --- a/code/game/machinery/syndicatebeacon_vr.dm +++ b/code/game/machinery/syndicatebeacon_vr.dm @@ -2,17 +2,17 @@ /obj/machinery/syndicate_beacon/virgo/attack_hand(var/mob/user) user.set_machine(src) - var/dat = "Scanning [pick("retina pattern", "voice print", "fingerprints", "dna sequence")]...
Identity confirmed,
" + var/dat = span_darkgreen(span_italics("Scanning [pick("retina pattern", "voice print", "fingerprints", "dna sequence")]...
Identity confirmed,
")) if(ishuman(user) || isAI(user)) if(is_special_character(user)) - dat += "Operative record found. Greetings, Agent [user.name].
" + dat += span_darkgreen(span_italics("Operative record found. Greetings, Agent [user.name].
")) else if(charges < 1) dat += "Connection severed.
" else var/honorific = "Mr." if(user.gender == FEMALE) honorific = "Ms." - dat += "Identity not found in operative database. What can the Black Market do for you today, [honorific] [user.name]?
" + dat += span_red(span_italics("Identity not found in operative database. What can the Black Market do for you today, [honorific] [user.name]?
")) if(!selfdestructing) dat += "

\"[pick("Send me some supplies!", "Transfer supplies.")]\"
" dat += temptext diff --git a/code/game/machinery/telecomms/traffic_control.dm b/code/game/machinery/telecomms/traffic_control.dm index 9d3da2bef7..ad2177261e 100644 --- a/code/game/machinery/telecomms/traffic_control.dm +++ b/code/game/machinery/telecomms/traffic_control.dm @@ -149,7 +149,7 @@ if("scan") if(servers.len > 0) - temp = "- FAILED: CANNOT PROBE WHEN BUFFER FULL -" + temp = span_red("- FAILED: CANNOT PROBE WHEN BUFFER FULL -") else for(var/obj/machinery/telecomms/server/T in range(25, src)) @@ -157,9 +157,9 @@ servers.Add(T) if(!servers.len) - temp = "- FAILED: UNABLE TO LOCATE SERVERS IN \[[network]\] -" + temp = span_red("- FAILED: UNABLE TO LOCATE SERVERS IN \[[network]\] -") else - temp = "- [servers.len] SERVERS PROBED & BUFFERED -" + temp = span_blue("- [servers.len] SERVERS PROBED & BUFFERED -") screen = 0 @@ -197,14 +197,14 @@ if(newnet && ((usr in range(1, src)) || issilicon(usr))) if(length(newnet) > 15) - temp = "- FAILED: NETWORK TAG STRING TOO LENGHTLY -" + temp = span_red("- FAILED: NETWORK TAG STRING TOO LENGHTLY -") else network = newnet screen = 0 servers = list() - temp = "- NEW NETWORK TAG SET IN ADDRESS \[[network]\] -" + temp = span_blue("- NEW NETWORK TAG SET IN ADDRESS \[[network]\] -") updateUsrDialog(usr) return diff --git a/code/game/magic/archived_book.dm b/code/game/magic/archived_book.dm index 36da263386..a4630f9c62 100644 --- a/code/game/magic/archived_book.dm +++ b/code/game/magic/archived_book.dm @@ -54,7 +54,7 @@ var/global/datum/book_manager/book_mgr = new() establish_old_db_connection() if(!SSdbcore.IsConnected()) - dat += "ERROR: Unable to contact External Archive. Please contact your system administrator for assistance." + dat += span_red(span_bold("ERROR") + ": Unable to contact External Archive. Please contact your system administrator for assistance.") else dat += {"(Order book by SS13BN)

diff --git a/code/game/mecha/combat/fighter.dm b/code/game/mecha/combat/fighter.dm index 36dc2e670e..2e0217bc44 100644 --- a/code/game/mecha/combat/fighter.dm +++ b/code/game/mecha/combat/fighter.dm @@ -238,7 +238,7 @@ /obj/mecha/combat/fighter/Bump(atom/obstacle) . = ..() if(istype(obstacle, /obj) || istype(obstacle, /turf)) - occupant_message("COLLISION ALERT!") + occupant_message(span_bolddanger(span_large("COLLISION ALERT!"))) take_damage(20, "brute") playsound(src, 'sound/mecha/fighter/fighter_collision.ogg', 50) diff --git a/code/game/mecha/equipment/tools/sleeper.dm b/code/game/mecha/equipment/tools/sleeper.dm index 45e12b412c..5bd3c26fe5 100644 --- a/code/game/mecha/equipment/tools/sleeper.dm +++ b/code/game/mecha/equipment/tools/sleeper.dm @@ -149,13 +149,32 @@ t1 = "*dead*" else t1 = "Unknown" - return {"Health: [occupant.health]% ([t1])
- Core Temperature: [src.occupant.bodytemperature-T0C]°C ([src.occupant.bodytemperature*1.8-459.67]°F)
- Brute Damage: [occupant.getBruteLoss()]%
- Respiratory Damage: [occupant.getOxyLoss()]%
- Toxin Content: [occupant.getToxLoss()]%
- Burn Severity: [occupant.getFireLoss()]%
- "} + var/text = "" + var/entry = span_bold("Health:") + " [occupant.health]% ([t1])" + text += occupant.health > 50 ? span_blue(entry) : span_red(entry) + text += "
" + + entry = span_bold("Core Temperature:") + " [src.occupant.bodytemperature-T0C]°C ([src.occupant.bodytemperature*1.8-459.67]°F)" + text += occupant.bodytemperature > 50 ? span_blue(entry) : span_red(entry) + text += "
" + + entry = span_bold("Brute Damage:") + " [occupant.getBruteLoss()]%" + text += occupant.getBruteLoss() < 60 ? span_blue(entry) : span_red(entry) + text += "
" + + entry = span_bold("Respiratory Damage:") + " [occupant.getOxyLoss()]%" + text += occupant.getOxyLoss() < 60 ? span_blue(entry) : span_red(entry) + text += "
" + + entry = span_bold("Toxin Content:") + " [occupant.getToxLoss()]%" + text += occupant.getToxLoss() < 60 ? span_blue(entry) : span_red(entry) + text += "
" + + entry = span_bold("Burn Severity:") + " [occupant.getFireLoss()]%" + text += occupant.getFireLoss() < 60 ? span_blue(entry) : span_red(entry) + text += "
" + + return text /obj/item/mecha_parts/mecha_equipment/tool/sleeper/proc/get_occupant_reagents() if(occupant.reagents) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 2a8c08be57..89851235bb 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -1593,8 +1593,8 @@ V.show_message("The [W] bounces off [src.name] armor.", 1) */ else - src.occupant_message("[user] hits [src] with [W].") - user.visible_message("[user] hits [src] with [W].", "You hit [src] with [W].") + src.occupant_message(span_boldwarning("[user] hits [src] with [W]."))) + user.visible_message(span_boldwarning("[user] hits [src] with [W]."))", span_boldwarning("You hit [src] with [W]."))) src.take_damage(W.force,W.damtype) src.check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST)) */ @@ -2206,11 +2206,11 @@ /obj/mecha/proc/report_internal_damage() var/output = null var/list/dam_reports = list( - "[MECHA_INT_FIRE]" = "INTERNAL FIRE", - "[MECHA_INT_TEMP_CONTROL]" = "LIFE SUPPORT SYSTEM MALFUNCTION", - "[MECHA_INT_TANK_BREACH]" = "GAS TANK BREACH", - "[MECHA_INT_CONTROL_LOST]" = "COORDINATION SYSTEM CALIBRATION FAILURE - Recalibrate", - "[MECHA_INT_SHORT_CIRCUIT]" = "SHORT CIRCUIT" + "[MECHA_INT_FIRE]" = span_red(span_bold("INTERNAL FIRE")), + "[MECHA_INT_TEMP_CONTROL]" = span_red(span_bold("LIFE SUPPORT SYSTEM MALFUNCTION")), + "[MECHA_INT_TANK_BREACH]" = span_red(span_bold("GAS TANK BREACH")), + "[MECHA_INT_CONTROL_LOST]" = span_red(span_bold("COORDINATION SYSTEM CALIBRATION FAILURE")) + " - Recalibrate", + "[MECHA_INT_SHORT_CIRCUIT]" = span_red(span_bold("SHORT CIRCUIT")) ) for(var/tflag in dam_reports) var/intdamflag = text2num(tflag) @@ -2218,7 +2218,7 @@ output += dam_reports[tflag] output += "
" if(return_pressure() > WARNING_HIGH_PRESSURE) - output += "DANGEROUSLY HIGH CABIN PRESSURE
" + output += span_red(span_bold("DANGEROUSLY HIGH CABIN PRESSURE")) + "
" return output @@ -2235,13 +2235,13 @@ var/output = {"[report_internal_damage()] Armor Integrity: [AC?"[round(AC.integrity / AC.max_integrity * 100, 0.1)]%":span_warning("ARMOR MISSING")]
Hull Integrity: [HC?"[round(HC.integrity / HC.max_integrity * 100, 0.1)]%":span_warning("HULL MISSING")]
- [integrity<30?"DAMAGE LEVEL CRITICAL
":null] + [integrity<30? span_red(span_bold("DAMAGE LEVEL CRITICAL")) + "
":null] Chassis Integrity: [integrity]%
Powercell charge: [isnull(cell_charge)?"No powercell installed":"[cell.percent()]%"]
Air source: [use_internal_tank?"Internal Airtank":"Environment"]
Airtank pressure: [tank_pressure]kPa
Airtank temperature: [tank_temperature]K|[tank_temperature - T0C]°C
- Cabin pressure: [cabin_pressure>WARNING_HIGH_PRESSURE ? "[cabin_pressure]": cabin_pressure]kPa
+ Cabin pressure: [cabin_pressure>WARNING_HIGH_PRESSURE ? span_red("[cabin_pressure]"): cabin_pressure]kPa
Cabin temperature: [return_temperature()]K|[return_temperature() - T0C]°C
Lights: [lights?"on":"off"]
[src.dna?"DNA-locked:
[src.dna] \[Reset\]
":null] @@ -2387,7 +2387,7 @@ var/a_name = get_access_desc(a) if(!a_name) continue //there's some strange access without a name output += "[a_name] - Add
" - output += "
Finish(Warning! The ID upload panel will be locked. It can be unlocked only through Exosuit Interface.)" + output += "
Finish " + span_red("(Warning! The ID upload panel will be locked. It can be unlocked only through Exosuit Interface.)") output += "" user << browse(output, "window=exosuit_add_access") onclose(user, "exosuit_add_access") @@ -2430,12 +2430,16 @@ /obj/mecha/proc/log_message(message as text,red=null) log.len++ - log[log.len] = list("time"=world.timeofday,"message"="[red?"":null][message][red?"":null]") + if(red) + message = span_red(message) + log[log.len] = list("time"=world.timeofday,"message"=message) return log.len /obj/mecha/proc/log_append_to_last(message as text,red=null) var/list/last_entry = src.log[src.log.len] - last_entry["message"] += "
[red?"":null][message][red?"":null]" + if(red) + message = span_red(message) + last_entry["message"] += "
" + message return diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index 4723bc7d7d..b89a34df9d 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -244,10 +244,10 @@ GLOBAL_LIST_BOILERPLATE(all_pai_cards, /obj/item/paicard) if(pai) dat += {" - Personal AI Device

+ "} + span_bold("Personal AI Device") + {"

- + @@ -300,7 +300,7 @@ GLOBAL_LIST_BOILERPLATE(all_pai_cards, /obj/item/paicard) "} else // dat += span_bold("Radio Uplink") + "
" - dat += "Radio firmware not loaded. Please install a pAI personality to load firmware.
" + dat += span_red(span_italics("Radio firmware not loaded. Please install a pAI personality to load firmware.")) + "
" /* - //A button for instantly deleting people from the game is lame, especially considering that pAIs on our server tend to activate without a master. dat += {"
[pai.name]"} + span_bold("[pai.name]") + {"
Integrity: [pai.health]
@@ -315,7 +315,7 @@ GLOBAL_LIST_BOILERPLATE(all_pai_cards, /obj/item/paicard) else if(looking_for_personality) dat += {" - pAI Request Module

+ "} + span_bold("pAI Request Module") + {"

Requesting AI personalities from central database... If there are no entries, or if a suitable entry is not listed, check again later as more personalities may be added.

Searching for personalities

@@ -329,7 +329,7 @@ GLOBAL_LIST_BOILERPLATE(all_pai_cards, /obj/item/paicard) "} else dat += {" - pAI Request Module

+ "} + span_bold("pAI Request Module") + {"

No personality is installed.

@@ -368,7 +368,7 @@ GLOBAL_LIST_BOILERPLATE(all_pai_cards, /obj/item/paicard) var/confirm = tgui_alert(usr, "Are you CERTAIN you wish to delete the current personality? This action cannot be undone.", "Personality Wipe", list("Yes", "No")) if(confirm == "Yes") for(var/mob/M in src) - to_chat(M, "

You feel yourself slipping away from reality.

") + to_chat(M, span_red("

You feel yourself slipping away from reality.

")) to_chat(M, "

Byte by byte you lose your sense of self.

") to_chat(M, "

Your mental faculties leave you.

") to_chat(M, "
oblivion...
") diff --git a/code/game/objects/items/toys/toys.dm b/code/game/objects/items/toys/toys.dm index 253b4932a2..6539d9c532 100644 --- a/code/game/objects/items/toys/toys.dm +++ b/code/game/objects/items/toys/toys.dm @@ -386,7 +386,7 @@ name = JOB_CLOWN + " action figure" desc = "A \"Space Life\" brand " + JOB_CLOWN + " action figure." icon_state = "clown" - toysay = "Honk!" + toysay = "" + span_bold("Honk!") + "" /obj/item/toy/figure/corgi name = "Corgi action figure" diff --git a/code/game/objects/items/weapons/autopsy.dm b/code/game/objects/items/weapons/autopsy.dm index cfe04ba837..8de0ca3bb1 100644 --- a/code/game/objects/items/weapons/autopsy.dm +++ b/code/game/objects/items/weapons/autopsy.dm @@ -111,13 +111,13 @@ if(0) damage_desc = "Unknown" if(1 to 5) - damage_desc = "negligible" + damage_desc = span_green("negligible") if(5 to 15) - damage_desc = "light" + damage_desc = span_green("light") if(15 to 30) - damage_desc = "moderate" + damage_desc = span_orange("moderate") if(30 to 1000) - damage_desc = "severe" + damage_desc = span_red("severe") if(!total_score) total_score = D.organs_scanned.len diff --git a/code/game/objects/items/weapons/hydroponics.dm b/code/game/objects/items/weapons/hydroponics.dm index 59944b5a65..b2463cb19e 100644 --- a/code/game/objects/items/weapons/hydroponics.dm +++ b/code/game/objects/items/weapons/hydroponics.dm @@ -63,13 +63,12 @@ var/dat = "Select an item:
" if (contents.len == 0) - dat += "No seeds loaded!" + dat += span_red("No seeds loaded!") else for (var/O in item_quants) if(item_quants[O] > 0) var/N = item_quants[O] - dat += "[capitalize(O)]:" - dat += " [N] " + dat += span_blue(span_bold("[capitalize(O)]") + ": [N] ") dat += "Vend" dat += "
" diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index bb4ac898d7..d52e1a0dde 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -136,18 +136,18 @@ GLOBAL_LIST_BOILERPLATE(all_tracking_implants, /obj/item/implant/tracking) return 1 /obj/item/implant/tracking/get_data() - var/dat = {"Implant Specifications:
-Name: Tracking Beacon
-Life: 10 minutes after death of host
-Important Notes: None
+ var/dat = {""} +span_bold("Implant Specifications:") + {"
+"} + span_bold("Name:") + {"Tracking Beacon
+"} + span_bold("Life:") + {"10 minutes after death of host
+"} + span_bold("Important Notes:") + {"None

-Implant Details:
-Function: Continuously transmits low power signal. Useful for tracking.
-Special Features:
-Neuro-Safe- Specialized shell absorbs excess voltages self-destructing the chip if +"} + span_bold("Implant Details:") + {"
+"} + span_bold("Function:") + {"Continuously transmits low power signal. Useful for tracking.
+"} + span_bold("Special Features:") + {"
+"} + span_italics("Neuro-Safe") + {"- Specialized shell absorbs excess voltages self-destructing the chip if a malfunction occurs thereby securing safety of subject. The implant will melt and disintegrate into bio-safe elements.
-Integrity: Gradient creates slight risk of being overcharged and frying the +"} + span_bold("Integrity:") + {"Gradient creates slight risk of being overcharged and frying the circuitry. As a result neurotoxins can cause massive damage.
Implant Specifics:
"} return dat @@ -182,15 +182,15 @@ Implant Specifics:
"} /obj/item/implant/dexplosive/get_data() var/dat = {" -Implant Specifications:
-Name: Robust Corp RX-78 Employee Management Implant
-Life: Activates upon death.
-Important Notes: Explodes
+"} + span_bold("Implant Specifications:") + {"
+"} + span_bold("Name:") + {"Robust Corp RX-78 Employee Management Implant
+"} + span_bold("Life:") + {"Activates upon death.
+"} + span_bold("Important Notes:") + {"Explodes

-Implant Details:
-Function: Contains a compact, electrically detonated explosive that detonates upon receiving a specially encoded signal or upon host death.
-Special Features: Explodes
-Integrity: Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."} +"} + span_bold("Implant Details:") + {"
+"} + span_bold("Function:") + {"Contains a compact, electrically detonated explosive that detonates upon receiving a specially encoded signal or upon host death.
+"} + span_bold("Special Features:") + {"Explodes
+"} + span_bold("Integrity:") + {"Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."} return dat @@ -221,15 +221,15 @@ Implant Specifics:
"} /obj/item/implant/explosive/get_data() var/dat = {" -Implant Specifications:
-Name: Robust Corp RX-78 Intimidation Class Implant
-Life: Activates upon codephrase.
-Important Notes: Explodes
+"} + span_bold("Implant Specifications:") + {"
+"} + span_bold("Name:") + {"Robust Corp RX-78 Intimidation Class Implant
+"} + span_bold("Life:") + {"Activates upon codephrase.
+"} + span_bold("Important Notes:") + {"Explodes

-Implant Details:
-Function: Contains a compact, electrically detonated explosive that detonates upon receiving a specially encoded signal or upon host death.
-Special Features: Explodes
-Integrity: Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."} +"} + span_bold("Implant Details:") + {"
+"} + span_bold("Function:") + {"Contains a compact, electrically detonated explosive that detonates upon receiving a specially encoded signal or upon host death.
+"} + span_bold("Special Features:") + {"Explodes
+"} + span_bold("Integrity:") + {"Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."} return dat /obj/item/implant/explosive/hear_talk(mob/M, list/message_pieces, verb) @@ -357,19 +357,19 @@ GLOBAL_LIST_BOILERPLATE(all_chem_implants, /obj/item/implant/chem) /obj/item/implant/chem/get_data() var/dat = {" -Implant Specifications:
-Name: Robust Corp MJ-420 Prisoner Management Implant
-Life: Deactivates upon death but remains within the body.
-Important Notes: Due to the system functioning off of nutrients in the implanted subject's body, the subject
-will suffer from an increased appetite.

+"} + span_bold("Implant Specifications:") + {"
+"} + span_bold("Name:") + {"Robust Corp MJ-420 Prisoner Management Implant
+"} + span_bold("Life:") + {"Deactivates upon death but remains within the body.
+"} + span_bold("Important Notes: Due to the system functioning off of nutrients in the implanted subject's body, the subject") + {"
+"} + span_bold("will suffer from an increased appetite.") + {"

-Implant Details:
-Function: Contains a small capsule that can contain various chemicals. Upon receiving a specially encoded signal
+"} + span_bold("Implant Details:") + {"
+"} + span_bold("Function:") + {"Contains a small capsule that can contain various chemicals. Upon receiving a specially encoded signal
the implant releases the chemicals directly into the blood stream.
-Special Features: -Micro-Capsule- Can be loaded with any sort of chemical agent via the common syringe and can hold 50 units.
+Special Features: +"} + span_italics("Micro-Capsule") + {"- Can be loaded with any sort of chemical agent via the common syringe and can hold 50 units.
Can only be loaded while still in its original case.
-Integrity: Implant will last so long as the subject is alive. However, if the subject suffers from malnutrition,
+"} + span_bold("Integrity:") + {"Implant will last so long as the subject is alive. However, if the subject suffers from malnutrition,
the implant may become unstable and either pre-maturely inject the subject or simply break."} return dat @@ -428,15 +428,15 @@ the implant may become unstable and either pre-maturely inject the subject or si /obj/item/implant/loyalty/get_data() var/dat = {" -Implant Specifications:
-Name: [using_map.company_name] Employee Management Implant
-Life: Ten years.
-Important Notes: Personnel injected with this device tend to be much more loyal to the company.
+"} + span_bold("Implant Specifications:") + {"
+"} + span_bold("Name:") + {"[using_map.company_name] Employee Management Implant
+"} + span_bold("Life:") + {"Ten years.
+"} + span_bold("Important Notes:") + {"Personnel injected with this device tend to be much more loyal to the company.

-Implant Details:
-Function: Contains a small pod of nanobots that manipulate the host's mental functions.
-Special Features: Will prevent and cure most forms of brainwashing.
-Integrity: Implant will last so long as the nanobots are inside the bloodstream."} +"} + span_bold("Implant Details:") + {"
+"} + span_bold("Function:") + {"Contains a small pod of nanobots that manipulate the host's mental functions.
+"} + span_bold("Special Features:") + {"Will prevent and cure most forms of brainwashing.
+"} + span_bold("Integrity:") + {"Implant will last so long as the nanobots are inside the bloodstream."} return dat /obj/item/implant/loyalty/handle_implant(mob/M, target_zone = BP_TORSO) @@ -464,15 +464,15 @@ the implant may become unstable and either pre-maturely inject the subject or si /obj/item/implant/adrenalin/get_data() var/dat = {" -Implant Specifications:
-Name: Cybersun Industries Adrenalin Implant
-Life: Five days.
-Important Notes: Illegal
+"} + span_bold("Implant Specifications:") + {"
+"} + span_bold("Name:") + {"Cybersun Industries Adrenalin Implant
+"} + span_bold("Life:") + {"Five days.
+"} + span_bold("Important Notes: ") + span_red("llegal") + {"

-Implant Details: Subjects injected with implant can activate a massive injection of adrenalin.
-Function: Contains nanobots to stimulate body to mass-produce Adrenalin.
-Special Features: Will prevent and cure most forms of brainwashing.
-Integrity: Implant can only be used three times before the nanobots are depleted."} +"} + span_bold("Implant Details:") + {"Subjects injected with implant can activate a massive injection of adrenalin.
+"} + span_bold("Function:") + {"Contains nanobots to stimulate body to mass-produce adrenalin.
+"} + span_bold("Special Features:") + {"Will prevent and cure most forms of brainwashing.
+"} + span_bold("Integrity:") + {"Implant can only be used three times before the nanobots are depleted."} return dat @@ -503,15 +503,15 @@ the implant may become unstable and either pre-maturely inject the subject or si /obj/item/implant/death_alarm/get_data() var/dat = {" -Implant Specifications:
-Name: [using_map.company_name] \"Profit Margin\" Class Employee Lifesign Sensor
-Life: Activates upon death.
-Important Notes: Alerts crew to crewmember death.
+"} + span_bold("Implant Specifications:") + {"
+"} + span_bold("Name:") + {"[using_map.company_name] \"Profit Margin\" Class Employee Lifesign Sensor
+"} + span_bold("Life:") + {"Activates upon death.
+"} + span_bold("Important Notes:") + {"Alerts crew to crewmember death.

-Implant Details:
-Function: Contains a compact radio signaler that triggers when the host's lifesigns cease.
-Special Features: Alerts crew to crewmember death.
-Integrity: Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."} +"} + span_bold("Implant Details:") + {"
+"} + span_bold("Function:") + {"Contains a compact radio signaler that triggers when the host's lifesigns cease.
+"} + span_bold("Special Features:") + {"Alerts crew to crewmember death.
+"} + span_bold("Integrity:") + {"Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."} return dat /obj/item/implant/death_alarm/process() @@ -588,15 +588,15 @@ the implant may become unstable and either pre-maturely inject the subject or si /obj/item/implant/compressed/get_data() var/dat = {" -Implant Specifications:
-Name: [using_map.company_name] \"Profit Margin\" Class Employee Lifesign Sensor
-Life: Activates upon death.
-Important Notes: Alerts crew to crewmember death.
+"} + span_bold("Implant Specifications:") + {"
+"} + span_bold("Name:") + {"[using_map.company_name] \"Profit Margin\" Class Employee Lifesign Sensor
+"} + span_bold("Life:") + {"Activates upon death.
+"} + span_bold("Important Notes:") + {"Alerts crew to crewmember death.

-Implant Details:
-Function: Contains a compact radio signaler that triggers when the host's lifesigns cease.
-Special Features: Alerts crew to crewmember death.
-Integrity: Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."} +"} + span_bold("Implant Details:") + {"
+"} + span_bold("Function:") + {"Contains a compact radio signaler that triggers when the host's lifesigns cease.
+"} + span_bold("Special Features:") + {"Alerts crew to crewmember death.
+"} + span_bold("Integrity:") + {"Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."} return dat /obj/item/implant/compressed/trigger(emote, mob/source as mob) diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm index 1042c9f8ab..4369659fb5 100644 --- a/code/game/objects/items/weapons/implants/implantchair.dm +++ b/code/game/objects/items/weapons/implants/implantchair.dm @@ -29,15 +29,15 @@ var/health_text = "" if(src.occupant) if(src.occupant.health <= -100) - health_text = "Dead" + health_text = span_red("Dead") else if(src.occupant.health < 0) - health_text = "[round(src.occupant.health,0.1)]" + health_text = span_red("[round(src.occupant.health,0.1)]") else health_text = "[round(src.occupant.health,0.1)]" var/dat = span_bold("Implanter Status") + "
" - dat += span_bold("Current occupant:") + " [src.occupant ? "
Name: [src.occupant]
Health: [health_text]
" : "None"]
" + dat += span_bold("Current occupant:") + " [src.occupant ? "
Name: [src.occupant]
Health: [health_text]
" : span_red("None")]
" dat += span_bold("Implants:") + " [src.implant_list.len ? "[implant_list.len]" : "Replenish"]
" if(src.occupant) dat += "[src.ready ? "Implant" : "Recharging"]
" diff --git a/code/game/objects/items/weapons/implants/implantfreedom.dm b/code/game/objects/items/weapons/implants/implantfreedom.dm index 34d6921821..8285a27bbe 100644 --- a/code/game/objects/items/weapons/implants/implantfreedom.dm +++ b/code/game/objects/items/weapons/implants/implantfreedom.dm @@ -49,22 +49,22 @@ return /obj/item/implant/freedom/post_implant(mob/source) - source.mind.store_memory("Freedom implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate.", 0, 0) - to_chat(source, "The implanted freedom implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate.") + source.mind.store_memory("Freedom implant can be activated by using the [src.activation_emote] emote, " + span_bold("say *[src.activation_emote] ") + "to attempt to activate.", 0, 0) + to_chat(source, "The implanted freedom implant can be activated by using the [src.activation_emote] emote, " + span_bold("say *[src.activation_emote]") + "to attempt to activate.") /obj/item/implant/freedom/get_data() var/dat = {" -Implant Specifications:
-Name: Freedom Beacon
-Life: optimum 5 uses
-Important Notes: Illegal
+"} + span_bold("Implant Specifications:") + {"
+"} + span_bold("Name:") + {"Freedom Beacon
+"} + span_bold("Life:") + {"optimum 5 uses
+"} + span_bold("Important Notes:") + span_red("Illegal") + {"

-Implant Details:
-Function: Transmits a specialized cluster of signals to override handcuff locking +"} + span_bold("Implant Details:") + {"
+"} + span_bold("Function:") + {"Transmits a specialized cluster of signals to override handcuff locking mechanisms
-Special Features:
-Neuro-Scan- Analyzes certain shadow signals in the nervous system
-Integrity: The battery is extremely weak and commonly after injection its +"} + span_bold("Special Features:") + {"
+"} + span_italics("Neuro-Scan") + {"- Analyzes certain shadow signals in the nervous system
+"} + span_bold("Integrity:") + {"The battery is extremely weak and commonly after injection its life can drive down to only 1 use.
No Implant Specifics"} return dat diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm index d8d1e99b52..52dcb2d808 100644 --- a/code/game/objects/items/weapons/manuals.dm +++ b/code/game/objects/items/weapons/manuals.dm @@ -33,9 +33,9 @@

Setting up the accelerator

    -
  1. Wrench all pieces to the floor
  2. -
  3. Add wires to all the pieces
  4. -
  5. Close all the panels with your screwdriver
  6. +
  7. "} + span_bold("Wrench") + {" all pieces to the floor
  8. +
  9. Add "} + span_bold("wires") + {" to all the pieces
  10. +
  11. Close all the panels with your "} + span_bold("screwdriver") + {"

Using the accelerator

@@ -44,7 +44,7 @@
  • Open the control panel
  • Set the speed to 2
  • Start firing at the singularity generator
  • -
  • When the singularity reaches a large enough size so it starts moving on it's own set the speed down to 0, but don't shut it off
  • +
  • "} + span_red(span_bold("When the singularity reaches a large enough size so it starts moving on it's own set the speed down to 0, but don't shut it off")) + {"
  • Remember to wear a radiation suit when working with this machine... we did tell you that at the start, right?
  • @@ -132,7 +132,7 @@
  • Ensure the engine room has power. The blast doors and ejection platform are unresponsive without power.
  • Press Engine Ventilatory Control button to open engine core blast door to space. (In CE Office and next to the reactor shroud)
  • Press Emergency Core Eject button to eject supermatter crystal. (In CE Office, only) NOTE: Attempting crystal ejection while engine core vent is closed will result in ejection failure.
  • -
  • In event of ejection failure, good luck.
  • +
  • In event of ejection failure, "} + span_italics("good luck.") + {"
  • "} //CHOMPEdit End - Updated Supermatter Engine Manual @@ -181,7 +181,7 @@
  • Bolt down Telsa Coils and Grounding Rods
  • Activate the Emitters
  • Activate each of the Field Generators, then wait until the containment field has completely formed.
  • -
  • Setup the Particle Accelerator (see our best seller "Particle Accelerator User's Guide"!) and activate it.
  • +
  • Setup the Particle Accelerator (see our best seller "} + span_italics(""Particle Accelerator User's Guide"") + {"!) and activate it.
  • After a short time the Telsa Generator will create an energy ball, being consumed in the process.

  • @@ -190,7 +190,7 @@
  • Ensure that electrical protection and meson goggles are worn at all times while working in the engine room.
  • Ensure that Telsa Coils and/or Grounding Rods are placed to safely collect or ground any and all shock.
  • Ensure that all Emitters remain activated and have unobstructed lines of fire to the Field Generators.
  • -
  • Do not let the Emitters run out of power.
  • +
  • Do "} + span_bold("not") + {" let the Emitters run out of power.

  • SHUTDOWN PROCEDURE

    @@ -203,7 +203,7 @@
    1. Do not let it escape.
    2. Have someone ready to blame when it does escape.
    3. -
    4. Buy our forthcoming manual "Celebrity Grounding Rod Shelters of the Galaxy"
    5. +
    6. Buy our forthcoming manual ""} + span_italics("Celebrity Grounding Rod Shelters of the Galaxy") + {""
    "} @@ -322,27 +322,27 @@ A power problem has made the entire station lose power? Could be station-wide wiring problems or illegal power sinks. In any case follow these steps:
      -
    1. PANIC!
    2. -
    3. Get your ass over to engineering! QUICKLY!!!
    4. -
    5. Get to the Area Power Controller which controls the power to the emitters.
    6. -
    7. Swipe it with your ID card - if it doesn't unlock, continue with step 15.
    8. +
    9. "} + span_bold(span_red("PANIC!")) + {"
    10. +
    11. Get your ass over to engineering! "} + span_bold("QUICKLY!!!") + {"
    12. +
    13. Get to the "} + span_bold("Area Power Controller") + {" which controls the power to the emitters.
    14. +
    15. Swipe it with your "} + span_bold("ID card") + {" - if it doesn't unlock, continue with step 15.
    16. Open the console and disengage the cover lock.
    17. -
    18. Pry open the APC with a Crowbar.
    19. -
    20. Take out the empty power cell.
    21. -
    22. Put in the new, full power cell - if you don't have one, continue with step 15.
    23. -
    24. Quickly put on a Radiation suit.
    25. -
    26. Check if the singularity field generators withstood the down-time - if they didn't, continue with step 15.
    27. +
    28. Pry open the APC with a "} + span_bold("Crowbar.") + {"
    29. +
    30. Take out the empty "} + span_bold("power cell.") + {"
    31. +
    32. Put in the new, "} + span_bold("full power cell") + {" - if you don't have one, continue with step 15.
    33. +
    34. Quickly put on a "} + span_bold("Radiation suit.") + {"
    35. +
    36. Check if the "} + span_bold("singularity field generators") + {" withstood the down-time - if they didn't, continue with step 15.
    37. Since disaster was averted you now have to ensure it doesn't repeat. If it was a powersink which caused it and if the engineering APC is wired to the same powernet, which the powersink is on, you have to remove the piece of wire which links the APC to the powernet. If it wasn't a powersink which caused it, then skip to step 14.
    38. Grab your crowbar and pry away the tile closest to the APC.
    39. Use the wirecutters to cut the wire which is connecting the grid to the terminal.
    40. Go to the bar and tell the guys how you saved them all. Stop reading this guide here.
    41. -
    42. GET THE FUCK OUT OF THERE!!!
    43. +
    44. "} + span_bold("GET THE FUCK OUT OF THERE!!!") + {"

    Shields get damaged

      -
    1. GET THE FUCK OUT OF THERE!!! FORGET THE WOMEN AND CHILDREN, SAVE YOURSELF!!!
    2. +
    3. "} + span_bold("GET THE FUCK OUT OF THERE!!! FORGET THE WOMEN AND CHILDREN, SAVE YOURSELF!!!") + {"
    @@ -504,27 +504,27 @@

    - Weyland-Yutani - Building Better Worlds + "} + span_bold("Weyland-Yutani - Building Better Worlds") + {"

    Autonomous Power Loader Unit \"Ripley\"

    Specifications:

      -
    • Class: Autonomous Power Loader
    • -
    • Scope: Logistics and Construction
    • -
    • Weight: 820kg (without operator and with empty cargo compartment)
    • -
    • Height: 2.5m
    • -
    • Width: 1.8m
    • -
    • Top speed: 5km/hour
    • -
    • Operation in vacuum/hostile environment: Possible -
    • Airtank volume: 500 liters
    • -
    • Devices: +
    • "} + span_bold("Class:") + {" Autonomous Power Loader
    • +
    • "} + span_bold("Scope:") + {" Logistics and Construction
    • +
    • "} + span_bold("Weight:") + {" 820kg (without operator and with empty cargo compartment)
    • +
    • "} + span_bold("Height:") + {" 2.5m
    • +
    • "} + span_bold("Width:") + {" 1.8m
    • +
    • "} + span_bold("Top speed:") + {" 5km/hour
    • +
    • "} + span_bold("Operation in vacuum/hostile environment: Possible") + {" +
    • "} + span_bold("Airtank volume:") + {" 500 liters
    • +
    • "} + span_bold("Devices:") + {"
      • Hydraulic clamp
      • High-speed drill
    • -
    • Propulsion device: Powercell-powered electro-hydraulic system
    • -
    • Powercell capacity: Varies
    • +
    • "} + span_bold("Propulsion device:") + {" Powercell-powered electro-hydraulic system
    • +
    • "} + span_bold("Powercell capacity:") + {" Varies

    Construction:

    @@ -584,9 +584,9 @@

    Science For Dummies

    So you want to further SCIENCE? Good man/woman/thing! However, SCIENCE is a complicated process even though it's quite easy. For the most part, it's a three step process:
      -
    1. Deconstruct items in the Destructive Analyzer to advance technology or improve the design.
    2. -
    3. Build unlocked designs in the Protolathe and Circuit Imprinter.
    4. -
    5. Repeat!
    6. +
    7. "} + span_bold("Deconstruct") + {" items in the Destructive Analyzer to advance technology or improve the design.
    8. +
    9. "} + span_bold("Build") + {" unlocked designs in the Protolathe and Circuit Imprinter.
    10. +
    11. "} + span_bold("Repeat") + {"!
    Those are the basic steps to furthering science. What do you do science with, however? Well, you have four major tools: R&D Console, the Destructive Analyzer, the Protolathe, and the Circuit Imprinter. @@ -599,7 +599,7 @@ It also has a settings menu that lets you re-sync with nearby R&D devices (if they've become disconnected), lock the console from the unworthy, upload the data to all other R&D consoles in the network (all R&D consoles are networked by default), connect/disconnect from the network, and purge all data from the database.

    - NOTE: The technology list screen, circuit imprinter, and protolathe menus are accessible by non-scientists. This is intended to allow 'public' systems for the plebians to utilize some new devices. + "} + span_bold("NOTE:") + {" The technology list screen, circuit imprinter, and protolathe menus are accessible by non-scientists. This is intended to allow 'public' systems for the plebians to utilize some new devices.

    Destructive Analyzer

    This is the source of all technology. Whenever you put a handheld object in it, it analyzes it and determines what sort of technological advancements you can discover from it. If the technology of the object is equal or higher then your current knowledge, @@ -1028,21 +1028,21 @@
  • Extend and anchor the nuclear device from its interface.
  • Insert the nuclear authorisation disk into the slot.
  • Type the numeric authorisation code into the keypad. This should have been provided.
    - Note: If you make a mistake, press R to reset the device. + "} + span_bold("Note") + {": If you make a mistake, press R to reset the device.
  • Press the E button to log on to the device.

  • You now have activated the device. To deactivate the buttons at anytime, for example when you've already prepped the bomb for detonation, remove the authentication disk OR press R on the keypad.

    Now the bomb CAN ONLY be detonated using the timer. Manual detonation is not an option. Toggle off the SAFETY.
    - Note: You wouldn't believe how many SAARE Operatives with doctorates have forgotten this step.

    + "} + span_bold("Note") + {": You wouldn't believe how many SAARE Operatives with doctorates have forgotten this step.

    So use the - - and + + to set a detonation time between 5 seconds and 10 minutes. Then press the timer toggle button to start the countdown. Now remove the authentication disk so that the buttons deactivate.
    - Note: THE BOMB IS STILL SET AND WILL DETONATE

    + "} + span_bold("Note") + {": THE BOMB IS STILL SET AND WILL DETONATE

    Now before you remove the disk, if you need to move the bomb, you can toggle off the anchor, move it, and re-anchor.

    Remember the order:
    - Disk, Code, Safety, Timer, Disk, RUN!

    + "} + span_bold("Disk, Code, Safety, Timer, Disk, RUN!") + {"

    Intelligence Analysts believe that normal corporate procedure is for the Site Manager to secure the nuclear authentication disk.

    Good luck! @@ -1079,8 +1079,8 @@
  • Final Checks

  • -

    HOW TO NOT SUCK QUITE SO HARD AT ATMOSPHERICS


    - Or: What the fuck does a "pressure regulator" do?

    +

    "} + span_underline(span_bold("HOW TO NOT SUCK QUITE SO HARD AT ATMOSPHERICS")) + {"


    + "} + span_italics("Or: What the fuck does a \"pressure regulator\" do?") + {"

    Alright. It has come to my attention that a variety of people are unsure of what a "pipe" is and what it does. Apparently, there is an unnatural fear of these arcane devices and their "gases." Spooky, spooky. So, @@ -1089,67 +1089,67 @@ or something like that. Just what stuff does.

    -

    Basic Pipes

    - The boring ones.
    +

    "} + span_bold("Basic Pipes") + {"

    + "} + span_italics("The boring ones.") + {"
    Most ordinary pipes are pretty straightforward. They hold gas. If gas is moving in a direction for some reason, gas will flow in that direction. That's about it. Even so, here's all of your wonderful pipe options.
      -
    • Straight pipes: They're pipes. One-meter sections. Straight line. Pretty simple. Just about every pipe and device is based around this +
    • "} + span_bold("Straight pipes:") + {" They're pipes. One-meter sections. Straight line. Pretty simple. Just about every pipe and device is based around this standard one-meter size, so most things will take up as much space as one of these.
    • -
    • Bent pipes: Pipes with a 90 degree bend at the half-meter mark. My goodness.
    • -
    • Pipe manifolds: Pipes that are essentially a "T" shape, allowing you to connect three things at one point.
    • -
    • 4-way manifold: A four-way junction.
    • -
    • Pipe cap: Caps off the end of a pipe. Open ends don't actually vent air, because of the way the pipes are assembled, so, uh, use them to decorate your house or something.
    • -
    • Manual valve: A valve that will block off airflow when turned. Can't be used by the AI or cyborgs, because they don't have hands.
    • -
    • Manual T-valve: Like a manual valve, but at the center of a manifold instead of a straight pipe.


    • +
    • "} + span_bold("Bent pipes:") + {" Pipes with a 90 degree bend at the half-meter mark. My goodness.
    • +
    • "} + span_bold("Pipe manifolds:") + {" Pipes that are essentially a "T" shape, allowing you to connect three things at one point.
    • +
    • "} + span_bold("4-way manifold:") + {" A four-way junction.
    • +
    • "} + span_bold("Pipe cap:") + {" Caps off the end of a pipe. Open ends don't actually vent air, because of the way the pipes are assembled, so, uh, use them to decorate your house or something.
    • +
    • "} + span_bold("Manual valve:") + {" A valve that will block off airflow when turned. Can't be used by the AI or cyborgs, because they don't have hands.
    • +
    • "} + span_bold("Manual T-valve:") + {" Like a manual valve, but at the center of a manifold instead of a straight pipe.


    An important note here is that pipes are now done in three distinct lines - general, supply, and scrubber. You can move gases between these with a universal adapter. Use the correct position for the correct location. Connecting scrubbers to a supply position pipe makes you an idiot who gives everyone a difficult job. Insulated and HE pipes don't go through these positions. -

    Insulated Pipes

    -
  • Bent pipes: Pipes with a 90 degree bend at the half-meter mark. My goodness.
  • -
  • Pipe manifolds: Pipes that are essentially a "T" shape, allowing you to connect three things at one point.
  • -
  • 4-way manifold: A four-way junction.
  • -
  • Pipe cap: Caps off the end of a pipe. Open ends don't actually vent air, because of the way the pipes are assembled, so, uh. Use them to decorate your house or something.
  • -
  • Manual Valve: A valve that will block off airflow when turned. Can't be used by the AI or cyborgs, because they don't have hands.
  • -
  • Manual T-Valve: Like a manual valve, but at the center of a manifold instead of a straight pipe.


  • +

    "} + span_bold("Insulated Pipes") + {"

    +
  • "} + span_italics("Bent pipes:") + {" Pipes with a 90 degree bend at the half-meter mark. My goodness.
  • +
  • "} + span_italics("Pipe manifolds:") + {" Pipes that are essentially a "T" shape, allowing you to connect three things at one point.
  • +
  • "} + span_italics("4-way manifold:") + {" A four-way junction.
  • +
  • "} + span_italics("Pipe cap:") + {" Caps off the end of a pipe. Open ends don't actually vent air, because of the way the pipes are assembled, so, uh. Use them to decorate your house or something.
  • +
  • "} + span_italics("Manual Valve:") + {" A valve that will block off airflow when turned. Can't be used by the AI or cyborgs, because they don't have hands.
  • +
  • "} + span_italics("Manual T-Valve:") + {" Like a manual valve, but at the center of a manifold instead of a straight pipe.


  • -

    Insulated Pipes


    - Special Public Service Announcement.
    +

    "} + span_bold("Insulated Pipes") + {"


    + "} + span_italics("Special Public Service Announcement.") + {"
    Our regular pipes are already insulated. These are completely worthless. Punch anyone who uses them.

    -

    Devices:

    - They actually do something.
    +

    "} + span_bold("Devices: ") + {"

    + "} + span_italics("They actually do something.") + {"
    This is usually where people get frightened, afraid, and start calling on their gods and/or cowering in fear. Yes, I can see you doing that right now. Stop it. It's unbecoming. Most of these are fairly straightforward.
      -
    • Gas pump: Take a wild guess. It moves gas in the direction it's pointing (marked by the red line on one end). It moves it based on pressure, the maximum output being 15000 kPa (kilopascals). +
    • "} + span_bold("Gas pump:") + {" Take a wild guess. It moves gas in the direction it's pointing (marked by the red line on one end). It moves it based on pressure, the maximum output being 15000 kPa (kilopascals). Ordinary atmospheric pressure, for comparison, is 101.3 kPa, and the minimum pressure of room-temperature pure oxygen needed to not suffocate in a matter of minutes is 16 kPa (though 18 kPa is preferred when using internals with pure oxygen, for various reasons). A high-powered variant will move gas more quickly at the expense of consuming more power. Do not turn the distribution loop up to 15000 kPa. You will make engiborgs cry and the Chief Engineer will beat you.
    • -
    • Pressure regulator: These replaced the old passive gates. You can choose to regulate pressure by input or output, and regulate flow rate. Regulating by input means that when input pressure is above the limit, gas will flow. +
    • "} + span_bold("Pressure regulator:") + {" These replaced the old passive gates. You can choose to regulate pressure by input or output, and regulate flow rate. Regulating by input means that when input pressure is above the limit, gas will flow. Regulating by output means that when pressure is below the limit, gas will flow. Flow rate can be controlled.
    • -
    • Unary vent: The basic vent used in rooms. It pumps gas into the room, but can't suck it back out. Controlled by the room's air alarm system.
    • -
    • Scrubber: The other half of room equipment. Filters air, and can suck it in entirely in what's called a "panic siphon." Activating a panic siphon without very good reason will kill someone. Don't do it.
    • -
    • Meter: A little box with some gauges and numbers. Fasten it to any pipe or manifold and it'll read you the pressure in it. Very useful.
    • -
    • Gas mixer: Two sides are input, one side is output. Mixes the gases pumped into it at the ratio defined. The side perpendicular to the other two is "node 2," for reference, on non-mirrored mixers.. +
    • "} + span_bold("Unary vent:") + {" The basic vent used in rooms. It pumps gas into the room, but can't suck it back out. Controlled by the room's air alarm system.
    • +
    • "} + span_bold("Scrubber:") + {" The other half of room equipment. Filters air, and can suck it in entirely in what's called a "panic siphon." Activating a panic siphon without very good reason will kill someone. Don't do it.
    • +
    • "} + span_bold("Meter:") + {" A little box with some gauges and numbers. Fasten it to any pipe or manifold and it'll read you the pressure in it. Very useful.
    • +
    • "} + span_bold("Gas mixer:") + {" Two sides are input, one side is output. Mixes the gases pumped into it at the ratio defined. The side perpendicular to the other two is "node 2," for reference, on non-mirrored mixers.. Output is controlled by flow rate. There is also an "omni" variant that allows you to set input and output sections freely..
    • -
    • Gas filter: Essentially the opposite of a gas mixer. One side is input. The other two sides are output. One gas type will be filtered into the perpendicular output pipe, +
    • "} + span_bold("Gas filter:") + {" Essentially the opposite of a gas mixer. One side is input. The other two sides are output. One gas type will be filtered into the perpendicular output pipe, the rest will continue out the other side. Can also output from 0-4500 kPa. The "omni" vairant allows you to set input and output sections freely.
    -

    Heat Exchange Systems

    - Will not set you on fire.
    +

    "} + span_bold("Heat Exchange Systems") + {"

    + "} + span_italics("Will not set you on fire.") + {"
    These systems are used to only transfer heat between two pipes. They will not move gases or any other element, but will equalize the temperature (eventually). Note that because of how gases work (remember: pv=nRt), a higher temperature will raise pressure, and a lower one will lower temperature.
    -
  • Pipe: This is a pipe that will exchange heat with the surrounding atmosphere. Place in fire for superheating. Place in space for supercooling.
  • -
  • Bent pipe: Take a wild guess.
  • -
  • Junction: The point where you connect your normal pipes to heat exchange pipes. Not necessary for heat exchangers, but necessary for H/E pipes/bent pipes.
  • -
  • Heat exchanger: These funky-looking bits attach to an open pipe end. Put another heat exchanger directly across from it, and you can transfer heat across two pipes without having to have the gases touch. +
  • "} + span_italics("Pipe:") + {" This is a pipe that will exchange heat with the surrounding atmosphere. Place in fire for superheating. Place in space for supercooling.
  • +
  • "} + span_italics("Bent pipe:") + {" Take a wild guess.
  • +
  • "} + span_italics("Junction:") + {" The point where you connect your normal pipes to heat exchange pipes. Not necessary for heat exchangers, but necessary for H/E pipes/bent pipes.
  • +
  • "} + span_italics("Heat exchanger:") + {" These funky-looking bits attach to an open pipe end. Put another heat exchanger directly across from it, and you can transfer heat across two pipes without having to have the gases touch. This normally shouldn't exchange with the ambient air, despite being totally exposed. Just don't ask questions.

  • That's about it for pipes. Go forth, armed with this knowledge, and try not to break, burn down, or kill anything. Please. @@ -1179,7 +1179,7 @@

    EVA Gear and You: Not Spending All Day Inside, 2nd Edition

    - Or: How not to suffocate because there's a hole in your shoes
    + "} + span_italics("Or: How not to suffocate because there's a hole in your shoes") + {"

    Contents

      @@ -1201,7 +1201,7 @@ Rather than oxygen, use a suit cooling unit. Many emergency equipment stores don't hold them, unfortunately, but dedicated EVA stores will. Be aware of your heat tolerances.

      Softsuits and Emergency Equipment

      - The bulkiest things this side of Alpha Centauri
      + "} + span_italics("The bulkiest things this side of Alpha Centauri") + {"
      These suits are the both grey ones that are stored in EVA and orange emergency suits in emergency lockers. They're the more simple to get on, but are also a lot bulkier, and provide less protection from environmental hazards such as radiation or physical impact. As Medical, Engineering, Security, and Mining all have voidsuits of their own, these don't see much use outside of emergencies. In an emergency, knowing how to put one on can save your life.

      @@ -1219,7 +1219,7 @@ These suits tend to be wearable by most species. They're large and flexible. They might be pretty uncomfortable for some, though, so keep that in mind.

      Voidsuits

      - Heavy, uncomfortable, still the best option.
      + "} + span_italics("Heavy, uncomfortable, still the best option.") + {"
      These suits come in many specialized varieties. The most common are engineering, atmospherics, security, medical, and mining varieties. These provide a lot more protection than the standard suits, and depending on the specialization, can offer different protections. For example, security suits have armor plating, engineering suits have radiation protection, and atmospherics suits are rated for extremely high temperatures.

      @@ -1235,7 +1235,7 @@ If a helmet is installed, you can skip it while putting the suit on, obviously. When deployed, it will deploy from the back of your neck, covering the head and sealing at the front.

      Hardsuits/Rigs

      - The fancy stuff.
      + "} + span_italics("The fancy stuff.") + {"
      Proper hardsuits are the most complex sort of EVA equipment available, and blur the line between spacesuits and smaller exosuits. They're sometimes known as 'rigs' or 'powered armor'. These are the suits with the widest variety of uses, owing to the wide variety of equipment that can be installed on them. Like voidsuits, they come in different, specialized varieties, each one offering different protections and different equipment. Equipment that can be installed includes weapons, power tools, mining equipment, medical equipment, AI assistants, and more.

      @@ -1248,7 +1248,7 @@ The potential of a suit breach is always there, and the use of powered equipment raises it significantly.

      Miscellaneous Advice

      - Pro tip: Safety first.
      + "} + span_italics("Pro tip: Safety first.") + {"
      There's a lot of general advice that can be helpful for people who haven't taken a long-form instruction course. Much of this is going to be fairly obvious safety advice, but it's never bad to remind yourself of that.

        @@ -1260,7 +1260,7 @@

      Modification Equipment

      - How to actually make voidsuits fit you.
      + "} + span_italics("How to actually make voidsuits fit you.") + {"
      There's a variety of equipment that can modify hardsuits to fit species that can't fit into them, making life quite a bit easier.

      The first piece of equipment is a suit cycler. This is a large machine resembling the storage pods that are in place in some places. These are machines that will automatically tailor a suit to certain specifications. @@ -1323,20 +1323,20 @@ Before you jump in to making the next Black Death, you need to understand what's what. When you pop a tray into the disease analyzer you'll get a paper listing quite a few
      things about that virus!

      - Antigens
      + "} + span_bold("Antigens") + {"
      The first thing you might notice on this analysis is the listed antigens of a virus. This, essentially, is what you need for cures. When a patient develops an antibody that
      matches a disease's antigen, they'll be immune to the virus.

      - Transmission
      + "} + span_bold("Transmission") + {"
      This will list one of three methods of transmission: airborne, contact, or blood. Airborne viruses will spread through the air, meaning if a patient is coughing or sneezing
      it will spread quicker. Contactviruses need some sort of, well, contact. Blood on the floor, mucus, and vomit should all be cleaned up. Blood-transmission viruses will only
      spread through actual blood contact, meaning an injection of the virus would be necessary to spread it.

      - Species
      + "} + span_bold("Species") + {"
      Not all viruses are compatible with all species! This will list off what can be infected by a particular virus. This can be changed through splicing. In rare cases you will
      get a virus that has infected crewmembers but cannot infect your lab monkeys. In these cases, you will likely have to splice different species data to safely make a cure.

      - Symptoms
      + "} + span_bold("Symptoms") + {"
      This lists what all the virus does, along with the strength of the symptoms and their aggressiveness. A full list of symptoms and their stages can be found below.

      Protection

      @@ -1349,21 +1349,21 @@
    1. One (1) box of sterile masks
    2. One (1) box of latex gloves

    3. - Make sure to gear up appropriately and take precautions to not bring the virus out of the lab!

      + "} + span_bold("Make sure to gear up appropriately and take precautions to not bring the virus out of the lab!") + {"

      What needs to be worn varies from race to race, as some species cannot be affected by a virus, but
      precautions should always be taken to prevent accidentally carrying the virus out of containment.

      Machinery

      These are the types of machines that you will be expected to use in this department. Study them, know them, and make sure you use them correctly!

      - Antibody Scanner
      + "} + span_bold("Antibody Scanner") + {"
      A device similar to a health analyzer, when scanned over a patient it will tell you any present antibodies in their bloodstream.

      - Pathogenic Isolator
      + "} + span_bold("Pathogenic Isolator") + {"
      This device can be loaded with blood samples via a syringe. It will tell you if there is a present viral pathogen, and if so it can isolate the pathogen,
      producing a virus dish for further research. This is the primary means of creating virus dishes.

      - Pathogenic Incubator
      + "} + span_bold("Pathogenic Incubator") + {"
      One of the most important machines, you'll be sitting here a lot. Virus trays you produce will start small, and you will need to grow them to get anywhere.
      Load it with virus food (diluted milk, found in a wall mounted dispenser nearby) as well as a virus dish and turn it on. It will slowly grow the virus
      for analysis, splicing, or whatever other use you might find for it. It can also inject the virus into other chemicals (i.e. blood) which will allow you
      @@ -1371,16 +1371,16 @@ Additionally, it can irradiate a virus dish to cause mutation. This randomly alters the syndromes, allowing you to collect new data.

      - Disease Analyser
      + "} + span_bold("Disease Analyser") + {"
      Virus dishes may be placed into this machine after it has been incubated sufficiently. It will create a reading of the virus' symptoms, species targeted,
      associated antibodies, and so on. It will also update the disease into the digital database, allowing it to be detected via Medical HUD or health analyzer.

      - Isolation Centrifuge
      + "} + span_bold("Isolation Centrifuge") + {"
      Inserting a vial of blood into this machine will allow it to take a present pathogen or antibody, turning it into a pure virus or pure cure for your use.
      It will automatically detect if either are in the blood sample, so it is useful for determining if a sample is infected. The sample will be reusable if creating
      more of the virus, but will be expended upon creating antibodies.

      - Disease Splicer
      + "} + span_bold("Disease Splicer") + {"
      As it's name implied, this machine is for splicing the disease symptoms and creating new viruses. Insert an analyzed virus sample to take a symptom which can
      then be saved on a GNA disk (created by the machine), or use an existing disk on the machine to load up a symptom and splice it in.

      @@ -1389,7 +1389,7 @@ and splicing. Keep in mind that infecting the whole station with a deadly virus is generally frowned upon in most societies, and even in an antagonistic role simply
      infecting everyone with a very deadly virus is not ideal.

      - Obtaining a Sample
      + "} + span_bold("Obtaining a Sample") + {"
      The first step to making your own virus is to find a virus to start tinkering with. There are two ways of doing this: grabbing the pre-spawned virus dish from the
      freezer create in your laboratory, or taking a blood sample from an infected patient that you haven't cured yet and running it through the Pathogenic Isolator to
      produce a virus dish.

      @@ -1400,17 +1400,17 @@ Once that's all done, you're ready to start the real work.

      - Obtaining a Sample
      + "} + span_bold("Obtaining a Sample") + {"
      Sometimes you just need to infect somebody. Usually, this is because you're doing some splicing work and want to make sure that you'll have some copies of a virus
      in reserve for future study. Fortunately, the process of deliberately infecting patients, as well as creating backups of your viruses, is actually very simple.

      - If you have a virus dish and wish to infect a patient, place the dish into the Pathogenic Incubator along with a beaker full of blood. Ideally, this is the
      + If you have a virus dish and wish to infect a patient, place the dish into the "} + span_bold("Pathogenic Incubator") + {" along with a beaker full of blood. Ideally, this is the
      patient's (or test monkey's) blood, though anyone's will do in a pinch - just be aware of the possibility of blood rejection, and be ready to deal with it accordingly.
      The incubator can inject a sample of the virus into the blood, which you can then inject into the patient to infect them. Alternatively, once a blood sample is infected
      - you may place it in either the Pathogenic Isolator or Isolation Centrifuge to make as many samples of that virus you need without destroying the sample.
      + you may place it in either the "} + span_bold("Pathogenic Isolator") + {" or "} + span_bold("Isolation Centrifuge") + {" to make as many samples of that virus you need without destroying the sample.
      No infections necessary!

      - Splicing
      + "} + span_bold("Splicing") + {"
      To understand splicing, you must know that every virus has 4 GNA strands, each of which is tied to one of the syndromes that it can manifest. Each syndrome, and thus each
      strand, is ranked in order of its appearance when symptoms begin to manifest in a patient, and higher-ranked (and thus slower to appear) syndromes are likely to be more
      powerful than lower-ranked ones. (1) is the lowest, first symptom to manifest, and (4) is the highest, final symptom to manifest.

      @@ -1428,8 +1428,8 @@ its buffer. This effectively allows you to give a virus any set of symptoms you want, so long as it follows the rules of the ranking. A rank (1) symptom can fill
      any slot, while a (3) can only fill 3 and up, and a (4) can only be in the fourth slot.

      - Mutating
      - Sometimes you just don't have any of the symptoms you want. Fortunately, mutating a virus dish is very simple. Simply place a dish in the Pathogenic Incubator
      + "} + span_bold("Mutating") + {"
      + Sometimes you just don't have any of the symptoms you want. Fortunately, mutating a virus dish is very simple. Simply place a dish in the "} + span_bold("Pathogenic Incubator") + {"
      to get started and click 'add radiation'. This will fill up the radiation bar with each press. When the machine is on, this bar will slowly tick down as the radiation
      is applied to the sample. For any significant mutation the radiation should be over 500k, meaning at least half the bar. When a mutation occurs -- and multiple
      mutations can occur in a single sample -- there will be a ping from the machine. Once it's done growing and mutating, throw it into the analyzer and see what you got!

      @@ -1453,12 +1453,12 @@ the below, spacecillin can be used in a pinch to attempt to treat a virus if no virologist is present and someone decided to roll around in mucus. However this is not
      guaranteed to work, and can in fact simply make the virus more resistant to spacecillin.

      - Quarantine
      + "} + span_bold("Quarantine") + {"
      If you or a crew member becomes infected by a virus, your first concern should be to isolate them as quickly as possible to prevent the disease from spreading. Ideally,
      this means getting the patient back to Virology and into a holding cell, but failing that, it's important to get them into an isolated room, shut the door, and keep anyone
      else from entering. It is also important to clean up any blood, vomit, or mucus left behind by the patient, as it may spread the virus as well.

      - Antibodies
      + "} + span_bold("Antibodies") + {"
      Now that your patient is safely hidden away where they can't infect people without your permission, you want to cure them. The basic idea behind that is to get them to start
      synthesizing antibodies.

      @@ -1493,7 +1493,7 @@ A stage 4 syndrome, however, cannot appear any earlier than stage 4.

    - + @@ -1502,7 +1502,7 @@ - @@ -1512,7 +1512,7 @@ - @@ -1542,7 +1542,7 @@ - @@ -1562,7 +1562,7 @@ - diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index ab3ccc5938..4c2e9674b1 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -309,7 +309,7 @@ if(display_contents_with_number) for(var/datum/numbered_display/ND in display_contents) ND.sample_object.screen_loc = "[cx]:16,[cy]:16" - ND.sample_object.maptext = "[(ND.number > 1)? "[ND.number]" : ""]" + ND.sample_object.maptext = span_white("[(ND.number > 1)? "[ND.number]" : ""]") ND.sample_object.hud_layerise() var/atom/movable/storage_slot/SS = new(null, ND.sample_object) SS.screen_loc = ND.sample_object.screen_loc diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm index a4beb3fbf0..c44a4c008f 100644 --- a/code/game/objects/items/weapons/teleportation.dm +++ b/code/game/objects/items/weapons/teleportation.dm @@ -98,7 +98,7 @@ Frequency: src.temp += span_bold("You are at \[[sr.x],[sr.y],[sr.z]\]") + " in orbital coordinates.

    Refresh
    " else - src.temp += span_bold("Processing Error:") + " Unable to locate orbital position.
    " + src.temp += span_bold(span_red("Processing Error:")) + " Unable to locate orbital position.
    " else if (href_list["freq"]) src.frequency += text2num(href_list["freq"]) diff --git a/code/game/vehicles/vehicle.dm b/code/game/vehicles/vehicle.dm index 1ce4a71c24..4be9c75fd9 100644 --- a/code/game/vehicles/vehicle.dm +++ b/code/game/vehicles/vehicle.dm @@ -99,5 +99,5 @@ /obj/vehicle/proc/log_message(message as text,red=null) log.len++ - log[log.len] = list("time"=world.timeofday,"message"="[red?"":null][message][red?"":null]") + log[log.len] = list("time"=world.timeofday,"message"="[red?span_red("[message]"):[message]]") return log.len diff --git a/code/modules/admin/DB ban/functions.dm b/code/modules/admin/DB ban/functions.dm index eeea42e5c0..9f1729e159 100644 --- a/code/modules/admin/DB ban/functions.dm +++ b/code/modules/admin/DB ban/functions.dm @@ -191,7 +191,7 @@ to_chat(usr, "Cancelled") return - var/datum/db_query/update_query = SSdbcore.NewQuery("UPDATE erro_ban SET reason = '[value]', edits = CONCAT(edits,'- [eckey] changed ban reason from \\\"[reason]\\\" to \\\"[value]\\\"
    ') WHERE id = [banid]") + var/datum/db_query/update_query = SSdbcore.NewQuery("UPDATE erro_ban SET reason = '[value]', edits = CONCAT(edits,'- [eckey] changed ban reason from " + span_bold("\\\"[reason]\\\"") + " to " + span_bold("\\\"[value]\\\"") + "
    ') WHERE id = [banid]") update_query.Execute() message_admins("[key_name_admin(usr)] has edited a ban for [pckey]'s reason from [reason] to [value]",1) qdel(update_query) @@ -287,18 +287,18 @@ output += span_bold("Add custom ban:") + " (ONLY use this if you can't ban through any other method)" output += "" output += "
    Syndromes "} + span_bold("Syndromes") + {"
    Stage Name
    1 Sneezing Makes the patient sneeze. Spreads airborne disease! + Makes the patient sneeze. "} + span_bold("Spreads airborne disease!") + {"
    1
    1 Salivary Gland Stimulation Makes the patient drool. Spreads the disease! + Makes the patient drool. "} + span_bold("Spreads the disease!") + {"
    1
    2 Vomiting Makes the patient vomit. Spreads the disease! + Makes the patient vomit. "} + span_bold("Spreads the disease!") + {"
    2
    2 Severe Cough Causes coughing. Spreads airborne disease! + Causes coughing. "} + span_bold("Spreads airborne disease!") + {"
    2
    " - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" + output += "" + output += "" + output += "" + output += "
    Ban type:" + span_bold("Ban type:") + "Ckey:
    IP: CID:
    Duration: Job:" + span_bold("Ckey:") + "
    " + span_bold("IP:") + " " + span_bold("CID:") + "
    " + span_bold("Duration:") + " " + span_bold("Job:") + "
    " output += "
    [HrefTokenFormField()]" - output += "
    Search:" + output += "" - output += "" - output += "" - output += "" - output += "" - output += "" + output += "" + output += "" + output += "" + output += " @@ -321,7 +321,7 @@ return var/dat = "Player Menu" - dat += "
    " + span_bold("Search:") + "" output += "
    Ckey: Admin ckey:
    IP: CID:
    Ban type:
    " + span_bold("Ckey:") + " " + span_bold("Admin ckey:") + "
    " + span_bold("IP:") + " " + span_bold("CID:") + "
    " + span_bold("Ban type:") + "" output += "" - output += "" - output += "" - output += "" - output += "" - output += "" + output += "" + output += "" + output += "" + output += "" + output += "" output += "" var/adminsearch = "" @@ -439,42 +439,42 @@ var/typedesc ="" switch(bantype) if("PERMABAN") - typedesc = "PERMABAN" + typedesc = span_red(span_bold("PERMABAN")) if("TEMPBAN") - typedesc = span_bold("TEMPBAN") + "
    ([duration] minutes) [(unbanned || auto) ? "" : "(Edit)"]
    Expires [expiration]
    " + typedesc = span_bold("TEMPBAN") + "
    " + span_normal("([duration] minutes) [(unbanned || auto) ? "" : "(Edit)"]
    Expires [expiration]") if("JOB_PERMABAN") - typedesc = span_bold("JOBBAN") + "
    ([job])" + typedesc = span_bold("JOBBAN") + "
    " + span_normal("([job])") if("JOB_TEMPBAN") - typedesc = span_bold("TEMP JOBBAN") + "
    ([job])
    ([duration] minutes
    Expires [expiration]
    " + typedesc = span_bold("TEMP JOBBAN") + "
    " + span_normal("([job])
    ([duration] minutes
    Expires [expiration]") output += "" output += "" - output += "" + output += "" output += "" - output += "" + output += "" output += "" output += "" output += "" - output += "" - output += "" + output += "" + output += "" output += "" output += "" - output += "" + output += "" output += "" if(edits) output += "" - output += "" + output += "" output += "" output += "" - output += "" + output += "" output += "" if(unbanned) output += "" - output += "" + output += "" output += "" else if(auto) output += "" - output += "" + output += "" output += "" output += "" output += "" diff --git a/code/modules/admin/NewBan.dm b/code/modules/admin/NewBan.dm index 90ed754be3..98761987fe 100644 --- a/code/modules/admin/NewBan.dm +++ b/code/modules/admin/NewBan.dm @@ -169,7 +169,7 @@ var/savefile/Banlist /datum/admins/proc/unbanpanel() var/count = 0 var/dat - //var/dat = "
    Unban Player:(U) = Unban , (E) = Edit Ban (Total
    TYPECKEYTIME APPLIEDADMINOPTIONS" + span_bold("TYPE") + "" + span_bold("CKEY") + "" + span_bold("TIME APPLIED") + "" + span_bold("ADMIN") + "" + span_bold("OPTIONS") + "
    [typedesc][ckey]" + span_bold("[ckey]") + "[bantime][ackey]" + span_bold("[ackey]") + "[(unbanned || auto) ? "" : span_bold("Unban")]
    IP: [ip]CIP: [cid]" + span_bold("IP:") + " [ip]" + span_bold("CIP:") + " [cid]
    Reason: [(unbanned || auto) ? "" : "(Edit)"] \"[reason]\"" + span_bold("Reason: [(unbanned || auto) ? "" : "(Edit)"]") + " \"[reason]\"
    EDITS" + span_bold("EDITS") + "
    [edits]" + span_normal("[edits]") + "
    UNBANNED by admin [unbanckey] on [unbantime]" + span_bold("UNBANNED by admin [unbanckey] on [unbantime]") + "
    EXPIRED at [expiration]" + span_bold("EXPIRED at [expiration]") + "
     
    " + //var/dat = "
    " + span_bold("Unban Player:") + " " + span_blue("(U) = Unban") + " , (E) = Edit Ban " + span_green("(Total
    ") Banlist.cd = "/base" for (var/A in Banlist.dir) count++ @@ -189,7 +189,7 @@ var/savefile/Banlist dat += text("") dat += "
    (U)(E) Key: [key]ComputerID: [id]IP: [ip] [expiry](By: [by])(Reason: [reason])
    " - dat = "
    Bans: (U) = Unban , (E) = Edit Ban - ([count] Bans)
    [dat]" + dat = "
    " + span_bold("Bans:") + " " + span_blue("(U) = Unban , (E) = Edit Ban") + " - " + span_green("([count] Bans)") + "
    [dat]" usr << browse("[dat]", "window=unbanp;size=875x400") //////////////////////////////////// DEBUG //////////////////////////////////// diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 7e727d5a72..eebf0c1712 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -46,20 +46,20 @@ var/global/floorIsLava = 0 return var/body = "Options for [M.key]" - body += "Options panel for [M]" + body += "Options panel for" + span_bold("[M]") if(M.client) - body += " played by [M.client] " + body += " played by " + span_bold("[M.client]") body += "\[[M.client.holder ? M.client.holder.rank : "Player"]\]" if(isnewplayer(M)) - body += " Hasn't Entered Game " + body += span_bold(" Hasn't Entered Game") else body += " \[Heal\] " if(M.client) - body += "
    First connection: [M.client.player_age] days ago" - body += "
    BYOND account created: [M.client.account_join_date]" - body += "
    BYOND account age (days): [M.client.account_age]" + body += "
    " + span_bold("First connection:") + "[M.client.player_age] days ago" + body += "
    " + span_bold("BYOND account created:") + "[M.client.account_join_date]" + body += "
    " + span_bold("BYOND account age (days):") + "[M.client.account_age]" body += {"

    \[ @@ -68,8 +68,8 @@ var/global/floorIsLava = 0 PM - SM - [admin_jump_link(M, src)]\]
    - Mob type: [M.type]
    - Inactivity time: [M.client ? "[M.client.inactivity/600] minutes" : "Logged out"]

    + "} + span_bold("Mob type:") + {"[M.type]
    + "} + span_bold("Inactivity time:") + {" [M.client ? "[M.client.inactivity/600] minutes" : "Logged out"]

    Kick | Warn | Ban | @@ -81,7 +81,7 @@ var/global/floorIsLava = 0 body += "| Prison | " body += "\ Send back to Lobby | " var/muted = M.client.prefs.muted - body += {"
    Mute: + body += {"
    "} + span_bold("Mute: ") + {" \[IC | OOC | LOOC | @@ -92,7 +92,7 @@ var/global/floorIsLava = 0 "} body += {"

    - Jump to | + "} + span_bold("Jump to") + {" | Get | Send To

    @@ -109,19 +109,19 @@ var/global/floorIsLava = 0 //Monkey if(issmall(M)) - body += "Monkeyized | " + body += span_bold("Monkeyized") + " | " else body += "Monkeyize | " //Corgi if(iscorgi(M)) - body += "Corgized | " + body += span_bold("Corgized") + " | " else body += "Corgize | " //AI / Cyborg if(isAI(M)) - body += "Is an AI " + body += span_bold("Is an AI ") else if(ishuman(M)) body += {"Make AI | Make Robot | @@ -139,7 +139,7 @@ var/global/floorIsLava = 0 // DNA2 - Admin Hax if(M.dna && iscarbon(M)) body += "

    " - body += "DNA Blocks:
    " + body += span_bold("DNA Blocks:") + "
     12345
    " var/bname var/list/output_list = list() // Traitgenes more reliable way to check gene states @@ -174,7 +174,7 @@ var/global/floorIsLava = 0 body += "
     12345
    " body += {"

    - Rudimentary transformation:
    These transformations only create a new mob type and copy stuff over. They do not take into account MMIs and similar mob-specific things. The buttons in 'Transformations' are preferred, when possible.

    + "} + span_bold("Rudimentary transformation:") + span_normal("
    These transformations only create a new mob type and copy stuff over. They do not take into account MMIs and similar mob-specific things. The buttons in 'Transformations' are preferred, when possible.") + {"
    Observer | \[ Xenos: Larva Drone @@ -204,7 +204,7 @@ var/global/floorIsLava = 0
    "} body += {"

    - Other actions: + "} + span_bold("Other actions:") + {"
    Forcesay "} @@ -216,7 +216,7 @@ var/global/floorIsLava = 0 Thunderdome Observer | "} // language toggles - body += "

    Languages:
    " + body += "

    " + span_bold("Languages:") + "
    " var/f = 1 for(var/k in GLOB.all_languages) var/datum/language/L = GLOB.all_languages[k] @@ -327,11 +327,11 @@ var/global/floorIsLava = 0 if(news_network.wanted_issue) wanted_already = 1 - dat+={"
    Feed Security functions:
    + dat+={"
    "} + span_bold("Feed Security functions:") + {"

    [(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue
    Censor Feed Stories
    Mark Feed Channel with [using_map.company_name] D-Notice (disables and locks the channel. -

    The newscaster recognises you as:
    [src.admincaster_signature]
    +

    The newscaster recognises you as:
    "} + span_green("[src.admincaster_signature]") + {"
    "} if(1) dat+= "Station Feed Channels
    " @@ -340,9 +340,9 @@ var/global/floorIsLava = 0 else for(var/datum/feed_channel/CHANNEL in news_network.network_channels) if(CHANNEL.is_admin_channel) - dat+="[CHANNEL.channel_name]
    " + dat+=span_bold("[CHANNEL.channel_name]") + "
    " else - dat+=span_bold("[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : null]
    ") + dat+=span_bold("[CHANNEL.channel_name] [(CHANNEL.censored) ? (span_red("***")) : null]
    ") dat+={"

    Refresh
    Back "} @@ -350,17 +350,17 @@ var/global/floorIsLava = 0 if(2) dat+={" Creating new Feed Channel... -
    Channel Name: [src.admincaster_feed_channel.channel_name]
    - Channel Author: [src.admincaster_signature]
    - Will Accept Public Feeds: [(src.admincaster_feed_channel.locked) ? ("NO") : ("YES")]

    +
    "} + span_bold("Channel Name:") + {" [src.admincaster_feed_channel.channel_name]
    + "} + span_bold("Channel Author:") + {" "} + span_green("[src.admincaster_signature]") + {"
    + "} + span_bold("Will Accept Public Feeds:") + {" [(src.admincaster_feed_channel.locked) ? ("NO") : ("YES")]


    Submit

    Cancel
    "} if(3) dat+={" Creating new Feed Message... -
    Receiving Channel: [src.admincaster_feed_channel.channel_name]
    - Message Author: [src.admincaster_signature]
    - Message Body: [src.admincaster_feed_message.body]
    +
    "} + span_bold("Receiving Channel:") + {" [src.admincaster_feed_channel.channel_name]
    + "} + span_bold("Message Author:") + {" "} + span_green("[src.admincaster_signature]") + {"
    + "} + span_bold("Message Body:") + {" [src.admincaster_feed_message.body]

    Submit

    Cancel
    "} if(4) @@ -374,34 +374,34 @@ var/global/floorIsLava = 0
    Return
    "} if(6) - dat+="ERROR: Could not submit Feed story to Network.

    " + dat+=span_bold(span_maroon("ERROR: Could not submit Feed story to Network.")) + "

    " if(src.admincaster_feed_channel.channel_name=="") - dat+="•Invalid receiving channel name.
    " + dat+=span_maroon("•Invalid receiving channel name.") + "
    " if(src.admincaster_feed_message.body == "" || src.admincaster_feed_message.body == "\[REDACTED\]" || admincaster_feed_message.title == "") - dat+="•Invalid message body.
    " + dat+=span_maroon("•Invalid message body.") + "
    " dat+="
    Return
    " if(7) - dat+="ERROR: Could not submit Feed Channel to Network.

    " + dat+=span_bold(span_maroon("ERROR: Could not submit Feed Channel to Network.")) + "

    " if(src.admincaster_feed_channel.channel_name =="" || src.admincaster_feed_channel.channel_name == "\[REDACTED\]") - dat+="•Invalid channel name.
    " + dat+=span_maroon("•Invalid channel name.") + "
    " var/check = 0 for(var/datum/feed_channel/FC in news_network.network_channels) if(FC.channel_name == src.admincaster_feed_channel.channel_name) check = 1 break if(check) - dat+="•Channel name already in use.
    " + dat+=span_maroon("•Channel name already in use.") + "
    " dat+="
    Return
    " if(9) - dat+="[src.admincaster_feed_channel.channel_name]: \[created by: [src.admincaster_feed_channel.author]\]
    " + dat+=span_bold("[src.admincaster_feed_channel.channel_name]: ") + span_small("\[created by: [span_maroon("[src.admincaster_feed_channel.author]")]\]") + "
    " if(src.admincaster_feed_channel.censored) dat+={" - ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a [using_map.company_name] D-Notice.
    + "} + span_red(span_bold("ATTENTION: ")) + {"This channel has been deemed as threatening to the welfare of the station, and marked with a [using_map.company_name] D-Notice.
    No further feed story additions are allowed while the D-Notice is in effect.

    "} else if( isemptylist(src.admincaster_feed_channel.messages) ) - dat+="No feed messages found in channel...
    " + dat+=span_italics("No feed messages found in channel...") + "
    " else var/i = 0 for(var/datum/feed_message/MESSAGE in src.admincaster_feed_channel.messages) @@ -413,68 +413,68 @@ var/global/floorIsLava = 0 pic_data+="
    " dat+= get_newspaper_content(MESSAGE.title, MESSAGE.body, MESSAGE.author,"#d4cec1", pic_data) dat+="
    " - dat+="\[Story by [MESSAGE.author] - [MESSAGE.time_stamp]\]
    " + dat+=span_small("\[Story by [span_maroon("[MESSAGE.author] - [MESSAGE.time_stamp]")]\]") + "
    " dat+={"

    Refresh
    Back "} if(10) dat+={" - [using_map.company_name] Feed Censorship Tool
    - NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible.
    - Keep in mind that users attempting to view a censored feed will instead see the \[REDACTED\] tag above it.
    + "} + span_bold("[using_map.company_name] Feed Censorship Tool") + {"
    + "} + span_small("NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible.
    ") + {" + "} + span_small("Keep in mind that users attempting to view a censored feed will instead see the \[REDACTED\] tag above it.") + {"
    Select Feed channel to get Stories from:
    "} if(isemptylist(news_network.network_channels)) - dat+="No feed channels found active...
    " + dat+=span_italics("No feed channels found active...") + "
    " else for(var/datum/feed_channel/CHANNEL in news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : null]
    " + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? (span_red("***")) : null]
    " dat+="
    Cancel" if(11) dat+={" - [using_map.company_name] D-Notice Handler
    - A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's - morale, integrity or disciplinary behaviour. A D-Notice will render a channel unable to be updated by anyone, without deleting any feed - stories it might contain at the time. You can lift a D-Notice if you have the required access at any time.
    + "} + span_bold("[using_map.company_name] D-Notice Handler") + {"
    + "} + span_small("A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's") + {" + "} + span_small("morale, integrity or disciplinary behaviour. A D-Notice will render a channel unable to be updated by anyone, without deleting any feed") + {" + "} + span_small("stories it might contain at the time. You can lift a D-Notice if you have the required access at any time.") + {"
    "} if(isemptylist(news_network.network_channels)) - dat+="No feed channels found active...
    " + dat+=span_italics("No feed channels found active...") + "
    " else for(var/datum/feed_channel/CHANNEL in news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : null]
    " + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? (span_red("***")) : null]
    " dat+="
    Back" if(12) dat+={" - [src.admincaster_feed_channel.channel_name]: \[ created by: [src.admincaster_feed_channel.author] \]
    - [(src.admincaster_feed_channel.author=="\[REDACTED\]") ? ("Undo Author censorship") : ("Censor channel Author")]
    + "} + span_bold("[src.admincaster_feed_channel.channel_name]: ") + span_small("\[ created by: [span_maroon("[src.admincaster_feed_channel.author]")] \]") + {"
    + "} + span_normal("[(src.admincaster_feed_channel.author=="\[REDACTED\]") ? ("Undo Author censorship") : ("Censor channel Author")]") + {"
    "} if( isemptylist(src.admincaster_feed_channel.messages) ) - dat+="No feed messages found in channel...
    " + dat+=span_italics("No feed messages found in channel...") + "
    " else for(var/datum/feed_message/MESSAGE in src.admincaster_feed_channel.messages) dat+={" - -[MESSAGE.body]
    \[Story by [MESSAGE.author]\]
    - [(MESSAGE.body == "\[REDACTED\]") ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.author == "\[REDACTED\]") ? ("Undo Author Censorship") : ("Censor message Author")]
    + -[MESSAGE.body]
    "} + span_small("\[Story by [span_maroon("[MESSAGE.author]")]\]") + {"
    + "} + span_normal("[(MESSAGE.body == "\[REDACTED\]") ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.author == "\[REDACTED\]") ? ("Undo Author Censorship") : ("Censor message Author")]") + {"
    "} dat+="
    Back" if(13) dat+={" - [src.admincaster_feed_channel.channel_name]: \[ created by: [src.admincaster_feed_channel.author] \]
    + "} + span_bold("[src.admincaster_feed_channel.channel_name]: ") + span_small("\[ created by: [span_maroon("[src.admincaster_feed_channel.author]")] \]") + {"
    Channel messages listed below. If you deem them dangerous to the station, you can Bestow a D-Notice upon the channel.
    "} if(src.admincaster_feed_channel.censored) dat+={" - ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a [using_map.company_name] D-Notice.
    + "} + span_red(span_bold("ATTENTION: ")) + {"This channel has been deemed as threatening to the welfare of the station, and marked with a [using_map.company_name] D-Notice.
    No further feed story additions are allowed while the D-Notice is in effect.

    "} else if( isemptylist(src.admincaster_feed_channel.messages) ) - dat+="No feed messages found in channel...
    " + dat+=span_italics("No feed messages found in channel...") + "
    " else for(var/datum/feed_message/MESSAGE in src.admincaster_feed_channel.messages) - dat+="-[MESSAGE.body]
    \[Story by [MESSAGE.author]\]
    " + dat+="-[MESSAGE.body]
    " + span_small("\[Story by [span_maroon("[MESSAGE.author]")]\]") + "
    " dat+="
    Back" if(14) @@ -485,43 +485,43 @@ var/global/floorIsLava = 0 wanted_already = 1 end_param = 2 if(wanted_already) - dat+="
    A wanted issue is already in Feed Circulation. You can edit or cancel it below.
    " + dat+=span_normal(span_italics("
    A wanted issue is already in Feed Circulation. You can edit or cancel it below.")) dat+={"
    Criminal Name: [src.admincaster_feed_message.author]
    Description: [src.admincaster_feed_message.body]
    "} if(wanted_already) - dat+="Wanted Issue created by: [news_network.wanted_issue.backup_author]
    " + dat+=span_bold("Wanted Issue created by:") + span_green(" [news_network.wanted_issue.backup_author]") + "
    " else - dat+="Wanted Issue will be created under prosecutor: [src.admincaster_signature]
    " + dat+=span_bold("Wanted Issue will be created under prosecutor:") + span_green(" [src.admincaster_signature]") + "
    " dat+="
    [(wanted_already) ? ("Edit Issue") : ("Submit")]" if(wanted_already) dat+="
    Take down Issue" dat+="
    Cancel" if(15) dat+={" - Wanted issue for [src.admincaster_feed_message.author] is now in Network Circulation.

    + "} + span_green("Wanted issue for [src.admincaster_feed_message.author] is now in Network Circulation.") + {"


    Return
    "} if(16) - dat+="ERROR: Wanted Issue rejected by Network.

    " + dat+=span_bold(span_maroon("ERROR: Wanted Issue rejected by Network.")) + "

    " if(src.admincaster_feed_message.author =="" || src.admincaster_feed_message.author == "\[REDACTED\]") - dat+="•Invalid name for person wanted.
    " + dat+=span_maroon("•Invalid name for person wanted.") + "
    " if(src.admincaster_feed_message.body == "" || src.admincaster_feed_message.body == "\[REDACTED\]") - dat+="•Invalid description.
    " + dat+=span_maroon("•Invalid description.") + "
    " dat+="
    Return
    " if(17) dat+={" - Wanted Issue successfully deleted from Circulation
    + "} + span_bold("Wanted Issue successfully deleted from Circulation") + {"

    Return
    "} if(18) dat+={" - -- STATIONWIDE WANTED ISSUE --
    \[Submitted by: [news_network.wanted_issue.backup_author]\]
    - Criminal: [news_network.wanted_issue.author]
    - Description: [news_network.wanted_issue.body]
    - Photo:: + "} + span_bold(span_maroon("-- STATIONWIDE WANTED ISSUE --")) + {"
    "} + span_normal("\[Submitted by: [span_green("[news_network.wanted_issue.backup_author]")]\]") + {"
    + "} + span_bold("Criminal") + {": [news_network.wanted_issue.author]
    + "} + span_bold("Description") + {": [news_network.wanted_issue.body]
    + "} + span_bold("Photo:") + {": "} if(news_network.wanted_issue.img) usr << browse_rsc(news_network.wanted_issue.img, "tmp_photow.png") @@ -531,7 +531,7 @@ var/global/floorIsLava = 0 dat+="
    Back
    " if(19) dat+={" - Wanted issue for [src.admincaster_feed_message.author] successfully edited.

    + "} + span_green("Wanted issue for [src.admincaster_feed_message.author] successfully edited.") + {"


    Return
    "} else @@ -547,7 +547,7 @@ var/global/floorIsLava = 0 /datum/admins/proc/Jobbans() if(!check_rights(R_BAN)) return - var/dat = "Job Bans!
    " + var/dat = span_bold("Job Bans!") + "
    " for(var/t in jobban_keylist) var/r = t if( findtext(r,"##") ) @@ -560,7 +560,7 @@ var/global/floorIsLava = 0 if(!check_rights(0)) return var/dat = {" -
    Game Panel

    \n +
    "} + span_bold("Game Panel") + {"

    \n Change Game Mode
    "} if(master_mode == "secret") @@ -584,7 +584,7 @@ var/global/floorIsLava = 0 if(!check_rights(0)) return // Print the header with category selection buttons. - var/dat = "The first rule of adminbuse is: you don't talk about the adminbuse.
    " + var/dat = span_bold("The first rule of adminbuse is: you don't talk about the adminbuse.") + "
    " for(var/datum/admin_secret_category/category in admin_secrets.categories) if(!category.can_view(usr)) continue @@ -593,9 +593,9 @@ var/global/floorIsLava = 0 // If a category is selected, print its description and then options if(istype(active_category) && active_category.can_view(usr)) - dat += "[active_category.name]
    " + dat += span_bold("[active_category.name]") + "
    " if(active_category.desc) - dat += "[active_category.desc]
    " + dat += span_italics("[active_category.desc]") + "
    " for(var/datum/admin_secret_item/item in active_category.items) if(!item.can_view(usr)) continue @@ -1186,55 +1186,55 @@ var/datum/announcement/minor/admin_min_announcer = new tgui_alert_async(usr, "Not before roundstart!", "Alert") return - var/out = "Current mode: [ticker.mode.name] ([ticker.mode.config_tag])
    " + var/out = span_large(span_bold("Current mode: [ticker.mode.name] ([ticker.mode.config_tag])")) + "
    " out += "
    " if(ticker.mode.ert_disabled) - out += "Emergency Response Teams:disabled" + out += span_bold("Emergency Response Teams:") + "disabled" else - out += "Emergency Response Teams:enabled" + out += span_bold("Emergency Response Teams:") + "enabled" out += "
    " if(ticker.mode.deny_respawn) - out += "Respawning:disallowed" + out += span_bold("Respawning:") + "disallowed" else - out += "Respawning:allowed" + out += span_bold("Respawning:") + "allowed" out += "
    " - out += "Shuttle delay multiplier:[ticker.mode.shuttle_delay]
    " + out += span_bold("Shuttle delay multiplier:") + " [ticker.mode.shuttle_delay]
    " if(ticker.mode.auto_recall_shuttle) - out += "Shuttle auto-recall:enabled" + out += span_bold("Shuttle auto-recall:") + " enabled" else - out += "Shuttle auto-recall:disabled" + out += span_bold("Shuttle auto-recall:") + " disabled" out += "

    " if(ticker.mode.event_delay_mod_moderate) - out += "Moderate event time modifier:[ticker.mode.event_delay_mod_moderate]
    " + out += span_bold("Moderate event time modifier:") + " [ticker.mode.event_delay_mod_moderate]
    " else - out += "Moderate event time modifier:unset
    " + out += span_bold("Moderate event time modifier:") + " unset
    " if(ticker.mode.event_delay_mod_major) - out += "Major event time modifier:[ticker.mode.event_delay_mod_major]
    " + out += span_bold("Major event time modifier:") + " [ticker.mode.event_delay_mod_major]
    " else - out += "Major event time modifier:unset
    " + out += span_bold("Major event time modifier:") + " unset
    " out += "
    " if(ticker.mode.antag_tags && ticker.mode.antag_tags.len) - out += "Core antag templates:
    " + out += span_bold("Core antag templates:") + "
    " for(var/antag_tag in ticker.mode.antag_tags) out += "[antag_tag].
    " if(ticker.mode.round_autoantag) - out += "Autotraitor enabled." + out += span_bold("Autotraitor enabled.") if(ticker.mode.antag_scaling_coeff > 0) out += " (scaling with [ticker.mode.antag_scaling_coeff])" else out += " (not currently scaling, set a coefficient)" out += "
    " else - out += "Autotraitor disabled.
    " + out += span_bold("Autotraitor disabled.") + "
    " out += span_bold("All antag ids:") if(ticker.mode.antag_templates && ticker.mode.antag_templates.len) @@ -1530,7 +1530,7 @@ var/datum/announcement/minor/admin_min_announcer = new shouldStamp = 0 if(shouldStamp) - P.stamps += "
    This paper has been stamped by the [P.origin] Quantum Relay." + P.stamps += "
    " + span_italics("This paper has been stamped by the [P.origin] Quantum Relay.") var/image/stampoverlay = image('icons/obj/bureaucracy.dmi') var/x = rand(-2, 0) diff --git a/code/modules/admin/admin_attack_log.dm b/code/modules/admin/admin_attack_log.dm index 7029db8e0a..eeb8c8a24e 100644 --- a/code/modules/admin/admin_attack_log.dm +++ b/code/modules/admin/admin_attack_log.dm @@ -20,9 +20,9 @@ /* Old procs /proc/admin_attack_log(var/mob/attacker, var/mob/victim, var/attacker_message, var/victim_message, var/admin_message) if(victim) - victim.attack_log += text("\[[time_stamp()]\] [key_name(attacker)] - [victim_message]") + victim.attack_log += text("\[[time_stamp()]\]" + span_orange(" [key_name(attacker)] - [victim_message]")) if(attacker) - attacker.attack_log += text("\[[time_stamp()]\] [key_name(victim)] - [attacker_message]") + attacker.attack_log += text("\[[time_stamp()]\]" + span_red(" [key_name(victim)] - [attacker_message]")) msg_admin_attack("[key_name(attacker)] [admin_message] [key_name(victim)] (INTENT: [attacker? uppertext(attacker.a_intent) : "N/A"]) (JMP)") diff --git a/code/modules/admin/admin_verbs_vr.dm b/code/modules/admin/admin_verbs_vr.dm index 3ebb0787f2..d16dfaeab5 100644 --- a/code/modules/admin/admin_verbs_vr.dm +++ b/code/modules/admin/admin_verbs_vr.dm @@ -98,7 +98,7 @@ establish_db_connection() if(!SSdbcore.IsConnected()) - dat += "ERROR: Unable to contact External Archive. Please contact your system administrator for assistance." + dat += span_red(span_bold("ERROR") + ": Unable to contact External Archive. Please contact your system administrator for assistance.") else dat += {"(Order book by SS13BN)

    diff --git a/code/modules/admin/newbanjob.dm b/code/modules/admin/newbanjob.dm index e9607c560e..761190adbc 100644 --- a/code/modules/admin/newbanjob.dm +++ b/code/modules/admin/newbanjob.dm @@ -223,7 +223,7 @@ var/savefile/Banlistjob /datum/admins/proc/unjobbanpanel() var/count = 0 var/dat - //var/dat = "
    Unban Player:(U) = Unban , (E) = Edit Ban(Total
    >" + //var/dat = "
    " + span_bold("Unban Player: ") + span_blue("(U) = Unban , (E) = Edit Ban") + span_green("(Total
    ") Banlistjob.cd = "/base" for (var/A in Banlistjob.dir) count++ @@ -231,29 +231,29 @@ var/savefile/Banlistjob dat += text("") dat += "
    (U) Key: [Banlistjob["key"]] Rank: [Banlistjob["rank"]] ([Banlistjob["temp"] ? "[GetBanExpjob(Banlistjob["minutes"]) ? GetBanExpjob(Banlistjob["minutes"]) : "Removal pending" ]" : "Permaban"])(By: [Banlistjob["bannedby"]])(Reason: [Banlistjob["reason"]])
    " - dat = "
    Bans: (U) = Unban , - ([count] Bans)
    [dat]" + dat = "
    " + span_bold("Bans:") + " " span_blue("(U) = Unban , ") + " - " + span_green("([count] Bans)") + "
    [dat]" usr << browse("[dat]", "window=unbanp;size=875x400") /*/datum/admins/proc/permjobban(ckey, computerid, reason, bannedby, temp, minutes, rank) if(AddBanjob(ckey, computerid, reason, usr.ckey, 0, 0, job)) - to_chat(M, "You have been banned from [job] by [usr.client.ckey].\nReason: [reason].") - to_chat(M, "This is a permanent ban.") + to_chat(M, span_large(span_red(span_bold("You have been banned from [job] by [usr.client.ckey].\nReason: [reason].")))) + to_chat(M, span_red("This is a permanent ban.")) if(config.banappeals) - to_chat(M, "To try to resolve this matter head to [config.banappeals]") + to_chat(M, span_red("To try to resolve this matter head to [config.banappeals]")) else - to_chat(M, "No ban appeals URL has been set.") + to_chat(M, span_red("No ban appeals URL has been set.")) log_admin("[usr.client.ckey] has banned from [job] [ckey].\nReason: [reason]\nThis is a permanent ban.") - message_admins("[usr.client.ckey] has banned from [job] [ckey].\nReason: [reason]\nThis is a permanent ban.") + message_admins(span_blue("[usr.client.ckey] has banned from [job] [ckey].\nReason: [reason]\nThis is a permanent ban.")) /datum/admins/proc/timejobban(ckey, computerid, reason, bannedby, temp, minutes, rank) if(AddBanjob(ckey, computerid, reason, usr.ckey, 1, mins, job)) - to_chat(M, "You have been jobbanned from [job] by [usr.client.ckey].\nReason: [reason].") - to_chat(M, "This is a temporary ban, it will be removed in [mins] minutes.") + to_chat(M, span_large(span_red(span_bold("You have been jobbanned from [job] by [usr.client.ckey].\nReason: [reason].")))) + to_chat(M, span_red("This is a temporary ban, it will be removed in [mins] minutes.")) if(config.banappeals) - to_chat(M, "To try to resolve this matter head to [config.banappeals]") + to_chat(M, span_red("To try to resolve this matter head to [config.banappeals]")) else - to_chat(M, "No ban appeals URL has been set.") + to_chat(M, span_red("No ban appeals URL has been set.")) log_admin("[usr.client.ckey] has jobbanned from [job] [ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.") - message_admins("[usr.client.ckey] has banned from [job] [ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.")*/ + message_admins(span_blue("[usr.client.ckey] has banned from [job] [ckey].\nReason: [reason]\nThis will be removed in [mins] minutes."))*/ //////////////////////////////////// DEBUG //////////////////////////////////// /proc/CreateBansjob() diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index 986e50b7bc..6f60e9ddcf 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -193,14 +193,14 @@
    - Player panel
    + "} + span_giant(span_bold("Player panel")) + {"
    Hover over a line to see more information - Check antagonists

    - Search: + "} + span_bold("Search:") + {"
    @@ -290,7 +290,7 @@ - [M_name] - [M_rname] - [M_key] ([M_job]) + "} + span_bold("[M_name] - [M_rname] - [M_key] ([M_job])") + {"
    " + dat += "
    NameReal NameAssigned JobKeyOptionsPMTraitor?
    " + span_bold("") //add to this if wanting to add back in IP checking //add if you want to know their ip to the lists below var/list/mobs = sortmobs() @@ -368,9 +368,9 @@ if(0) dat += {""} if(1) - dat += {""} + dat += {""} if(2) - dat += {""} + dat += {""} else dat += {""} @@ -384,9 +384,9 @@ /datum/admins/proc/check_antagonists() if (ticker && ticker.current_state >= GAME_STATE_PLAYING) - var/dat = "Round Status

    Round Status

    " - dat += "Current Game Mode: [ticker.mode.name]
    " - dat += "Round Duration: [roundduration2text()]
    " + var/dat = "Round Status

    " + span_bold("Round Status") + "

    " + dat += "Current Game Mode: " + span_bold("[ticker.mode.name]") + "
    " + dat += "Round Duration: " + span_bold("[roundduration2text()]") + "
    " dat += span_bold("Emergency shuttle") + "
    " if (!emergency_shuttle.online()) dat += "Call Shuttle
    " diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index adb71efeea..1ef0c4981d 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -429,7 +429,7 @@ if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" else jobs += "" @@ -449,7 +449,7 @@ if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" else jobs += "" @@ -469,7 +469,7 @@ if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" else jobs += "" @@ -489,7 +489,7 @@ if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" else jobs += "" @@ -509,7 +509,7 @@ if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" else jobs += "" @@ -529,7 +529,7 @@ if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" else jobs += "" @@ -550,7 +550,7 @@ if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" else jobs += "" @@ -574,7 +574,7 @@ if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" else jobs += "" @@ -595,7 +595,7 @@ if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" else jobs += "" @@ -604,7 +604,7 @@ counter = 0 if(jobban_isbanned(M, JOB_INTERNAL_AFFAIRS_AGENT)) - jobs += "" + jobs += "" else jobs += "" @@ -620,7 +620,7 @@ if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" else jobs += "" @@ -643,7 +643,7 @@ continue if(jobban_isbanned(M, "[antag.bantype]") || isbanned_dept) - jobs += "" + jobs += "" else jobs += "" @@ -660,7 +660,7 @@ jobs += "" for(var/entry in misc_roles) if(jobban_isbanned(M, entry)) - jobs += "" + jobs += "" else jobs += "" diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index 60d2b68f3a..17e755836e 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -675,19 +675,19 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null var/turf/T = A.loc var/area/a if(istype(T)) - text_list += " at [T] [ADMIN_COORDJMP(T)]" + text_list += span_gray(" at") + " [T] [ADMIN_COORDJMP(T)]" a = T.loc else var/turf/final = get_turf(T) //Recursive, hopefully? if(istype(final)) - text_list += " at [final] [ADMIN_COORDJMP(final)]" + text_list += span_gray(" at") + " [final] [ADMIN_COORDJMP(final)]" a = final.loc else - text_list += " at nonexistant location" + text_list += span_gray(" at") + " nonexistant location" if(a) - text_list += " in area [a]" + text_list += span_gray(" in") + " area [a]" if(T.loc != a) - text_list += " inside [T]" + text_list += span_gray(" inside") + " [T]" text_list += "
    " else if(islist(object)) var/list/L = object diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index b2cb70b043..413f94f680 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -205,13 +205,13 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) _interactions = list() if(is_bwoink) - AddInteraction("[key_name_admin(usr)] PM'd [LinkedReplyName()]") + AddInteraction(span_blue("[key_name_admin(usr)] PM'd [LinkedReplyName()]")) message_admins(span_blue("Ticket [TicketHref("#[id]")] created")) else MessageNoRecipient(parsed_message) send2adminchat() //VOREStation Add //show it to the person adminhelping too - to_chat(C, span_admin_pm_notice("PM to-Admins: [name]")) + to_chat(C, span_admin_pm_notice("PM to-" + span_bold("Admins") + ": [name]")) //send it to irc if nobody is on and tell us how many were on var/admin_number_present = send2irc_adminless_only(initiator_ckey, name) @@ -292,7 +292,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) var/ref_src = "\ref[src]" var/chat_msg = span_admin_pm_notice(span_adminhelp("Ticket [TicketHref("#[id]", ref_src)]") + span_bold(": [LinkedReplyName(ref_src)] [FullMonty(ref_src)]:") + msg) - AddInteraction("[LinkedReplyName(ref_src)]: [msg]") + AddInteraction(span_red("[LinkedReplyName(ref_src)]: [msg]")) //send this msg to all admins for(var/client/X in GLOB.admins) @@ -327,7 +327,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(initiator) initiator.current_ticket = src - AddInteraction("Reopened by [key_name_admin(usr)]") + AddInteraction(span_purple("Reopened by [key_name_admin(usr)]")) if(initiator) to_chat(initiator, span_filter_adminlog("[span_purple("Ticket [TicketHref("#[id]")] was reopened by [key_name(usr,FALSE,FALSE)].")]")) var/msg = span_adminhelp("Ticket [TicketHref("#[id]")] reopened by [key_name_admin(usr)].") @@ -361,7 +361,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) RemoveActive() state = AHELP_CLOSED GLOB.ahelp_tickets.ListInsert(src) - AddInteraction(span_filter_adminlog("Closed by [key_name_admin(usr)].")) + AddInteraction(span_filter_adminlog(span_red("Closed by [key_name_admin(usr)]."))) if(initiator) to_chat(initiator, span_filter_adminlog("[span_red("Ticket [TicketHref("#[id]")] was closed by [key_name(usr,FALSE,FALSE)].")]")) if(!silent) @@ -386,7 +386,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) state = AHELP_RESOLVED GLOB.ahelp_tickets.ListInsert(src) - AddInteraction(span_filter_adminlog("Resolved by [key_name_admin(usr)].")) + AddInteraction(span_filter_adminlog(span_green("Resolved by [key_name_admin(usr)]."))) if(initiator) to_chat(initiator, span_filter_adminlog("[span_green("Ticket [TicketHref("#[id]")] was marked resolved by [key_name(usr,FALSE,FALSE)].")]")) if(!silent) @@ -490,17 +490,17 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) var/list/dat = list("Ticket #[id]") var/ref_src = "\ref[src]" dat += "

    Admin Help Ticket #[id]: [LinkedReplyName(ref_src)]

    " - dat += "State: " + dat += span_bold("State: ") switch(state) if(AHELP_ACTIVE) - dat += "OPEN" + dat += span_red(span_bold("OPEN")) if(AHELP_RESOLVED) - dat += "RESOLVED" + dat += span_green(span_bold("RESOLVED")) if(AHELP_CLOSED) - dat += "CLOSED" + dat += span_bold("CLOSED") else - dat += "UNKNOWN" - dat += "[GLOB.TAB][TicketHref("Refresh", ref_src)][GLOB.TAB][TicketHref("Re-Title", ref_src, "retitle")]" + dat += span_bold("UNKNOWN") + dat += "[GLOB.TAB][TicketHref("Refresh", ref_src)][GLOB.TAB][TicketHref("Re-Title", ref_src, "retitle")]" if(state != AHELP_ACTIVE) dat += "[GLOB.TAB][TicketHref("Reopen", ref_src, "reopen")]" dat += "

    Opened at: [gameTimestamp(wtime = opened_at)] (Approx [(world.time - opened_at) / 600] minutes ago)" @@ -511,7 +511,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) dat += span_bold("Actions:") + " [FullMonty(ref_src)]
    " else dat += span_bold("DISCONNECTED") + "[GLOB.TAB][ClosureLinks(ref_src)]
    " - dat += "
    Log:

    " + dat += "
    " + span_bold("Log:") + "

    " for(var/I in _interactions) dat += "[I]
    " dat += "" @@ -661,7 +661,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(input == "Yes") if(current_ticket) current_ticket.MessageNoRecipient(msg) - to_chat(usr, span_admin_pm_notice("PM to-Admins: [msg]")) + to_chat(usr, span_admin_pm_notice("PM to-" + span_bold("Admins") + ": [msg]")) return else to_chat(usr, span_warning("Ticket not found, creating new one...")) diff --git a/code/modules/admin/verbs/getlogs.dm b/code/modules/admin/verbs/getlogs.dm index d7ad8ed13c..f224a6ab40 100644 --- a/code/modules/admin/verbs/getlogs.dm +++ b/code/modules/admin/verbs/getlogs.dm @@ -107,7 +107,7 @@ if( fexists(path) ) src << run( file(path) ) else - to_chat(src, "Error: view_atk_log(): File not found/Invalid path([path]).") + to_chat(src, span_red("CAMERA ANNOMALITIES REPORT
    -The following annomalities have been detected. The ones in red need immediate attention: Some of those in black may be intentional.
      "} + var/output = {""} + span_bold("CAMERA ANNOMALITIES REPORT") + {"
      +"} + span_bold("The following annomalities have been detected. The ones in red need immediate attention: Some of those in black may be intentional.") + {"
        "} for(var/obj/machinery/camera/C1 in CL) for(var/obj/machinery/camera/C2 in CL) if(C1 != C2) if(C1.c_tag == C2.c_tag) - output += "
      • c_tag match for sec. cameras at \[[C1.x], [C1.y], [C1.z]\] ([C1.loc.loc]) and \[[C2.x], [C2.y], [C2.z]\] ([C2.loc.loc]) - c_tag is [C1.c_tag]
      • " + output += "
      • " + span_red("c_tag match for sec. cameras at \[[C1.x], [C1.y], [C1.z]\] ([C1.loc.loc]) and \[[C2.x], [C2.y], [C2.z]\] ([C2.loc.loc]) - c_tag is [C1.c_tag]") + "
      • " if(C1.loc == C2.loc && C1.dir == C2.dir && C1.pixel_x == C2.pixel_x && C1.pixel_y == C2.pixel_y) - output += "
      • FULLY overlapping sec. cameras at \[[C1.x], [C1.y], [C1.z]\] ([C1.loc.loc]) Networks: [C1.network] and [C2.network]
      • " + output += "
      • " + span_red("FULLY overlapping sec. cameras at \[[C1.x], [C1.y], [C1.z]\] ([C1.loc.loc]) Networks: [C1.network] and [C2.network]") + "
      • " if(C1.loc == C2.loc) - output += "
      • overlapping sec. cameras at \[[C1.x], [C1.y], [C1.z]\] ([C1.loc.loc]) Networks: [C1.network] and [C2.network]
      • " + output += "
      • overlapping sec. cameras at \[[C1.x], [C1.y], [C1.z]\] ([C1.loc.loc]) Networks: [C1.network] and [C2.network]
      • " var/turf/T = get_step(C1,turn(C1.dir,180)) if(!T || !isturf(T) || !T.density ) if(!(locate(/obj/structure/grille,T))) @@ -98,7 +98,7 @@ GLOBAL_LIST_BOILERPLATE(all_debugging_effects, /obj/effect/debugging) window_check = 1 break if(!window_check) - output += "
      • Camera not connected to wall at \[[C1.x], [C1.y], [C1.z]\] ([C1.loc.loc]) Network: [C1.network]
      • " + output += "
      • " + span_red("Camera not connected to wall at \[[C1.x], [C1.y], [C1.z]\] ([C1.loc.loc]) Network: [C1.network]") + "
      • " output += "
      " usr << browse("[output]","window=airreport;size=1000x500") diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 2dc8c6578e..9cc8840256 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -820,11 +820,11 @@ Traitors and the like can also be revived with the previous role mostly intact. return if(M) AddBan(M.ckey, M.computer_id, reason, usr.ckey, 1, mins) - to_chat(M, "You have been banned by [usr.client.ckey].\nReason: [reason].") - to_chat(M, "This is a temporary ban, it will be removed in [mins] minutes.") - to_chat(M, "To try to resolve this matter head to http://ss13.donglabs.com/forum/") + to_chat(M, span_red(span_large(span_bold("You have been banned by [usr.client.ckey].\nReason: [reason].")))) + to_chat(M, span_red("This is a temporary ban, it will be removed in [mins] minutes.")) + to_chat(M, span_red("To try to resolve this matter head to http://ss13.donglabs.com/forum/")) log_admin("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.") - message_admins("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.") + message_admins(span_blue("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.")) world.Export("http://216.38.134.132/adminlog.php?type=ban&key=[usr.client.key]&key2=[M.key]&msg=[html_decode(reason)]&time=[mins]&server=[replacetext(config.server_name, "#", "")]") del(M.client) qdel(M) @@ -835,11 +835,11 @@ Traitors and the like can also be revived with the previous role mostly intact. if(!reason) return AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0) - to_chat(M, "You have been banned by [usr.client.ckey].\nReason: [reason].") - to_chat(M, "This is a permanent ban.") - to_chat(M, "To try to resolve this matter head to http://ss13.donglabs.com/forum/") + to_chat(M, span_red(span_large(span_bold("You have been banned by [usr.client.ckey].\nReason: [reason].")))) + to_chat(M, span_red("This is a permanent ban.")) + to_chat(M, span_red("To try to resolve this matter head to http://ss13.donglabs.com/forum/")) log_admin("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.") - message_admins("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.") + message_admins(span_blue("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.")) world.Export("http://216.38.134.132/adminlog.php?type=ban&key=[usr.client.key]&key2=[M.key]&msg=[html_decode(reason)]&time=perma&server=[replacetext(config.server_name, "#", "")]") del(M.client) qdel(M) @@ -910,7 +910,7 @@ Traitors and the like can also be revived with the previous role mostly intact. mob.set_viewsize(view) log_admin("[key_name(usr)] changed their view range to [view].") - message_admins("[key_name_admin(usr)] changed their view range to [view].", 1) + message_admins(span_blue("[key_name_admin(usr)] changed their view range to [view]."), 1) feedback_add_details("admin_verb","CVRA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/view_variables/helpers.dm b/code/modules/admin/view_variables/helpers.dm index e59626061c..7577487713 100644 --- a/code/modules/admin/view_variables/helpers.dm +++ b/code/modules/admin/view_variables/helpers.dm @@ -6,27 +6,25 @@ /atom/get_view_variables_header() return {" - [src] -
      - << - [dir2text(dir)] - >> - + "} + span_bold("[src]") + {" +
      + "} + span_small("<<") + {" + "} + span_small("[dir2text(dir)]") + {" + "} + span_small(">>") + {" "} /mob/living/get_view_variables_header() return {" - [src] -
      << [dir2text(dir)] >> -
      [ckey ? ckey : "No ckey"] / [real_name ? real_name : "No real name"] + "} + span_bold("[src]") + {" + "} + span_small("
      << [dir2text(dir)] >>") + {" + "} + span_small("
      [ckey ? ckey : "No ckey"] / [real_name ? real_name : "No real name"]") + {"
      - BRUTE:[getBruteLoss()] - FIRE:[getFireLoss()] - TOXIN:[getToxLoss()] - OXY:[getOxyLoss()] - CLONE:[getCloneLoss()] - BRAIN:[getBrainLoss()] -
      + "} + span_small("BRUTE:[getBruteLoss()]") + {" + "} + span_small("FIRE:[getFireLoss()]") + {" + "} + span_small("TOXIN:[getToxLoss()]") + {" + "} + span_small("OXY:[getOxyLoss()]") + {" + "} + span_small("CLONE:[getCloneLoss()]") + {" + "} + span_small("BRAIN:[getBrainLoss()]") + {" "} //This entire file needs to be removed eventually diff --git a/code/modules/admin/view_variables/view_variables.dm b/code/modules/admin/view_variables/view_variables.dm index 373636e969..3585f982f9 100644 --- a/code/modules/admin/view_variables/view_variables.dm +++ b/code/modules/admin/view_variables/view_variables.dm @@ -225,7 +225,7 @@
    NameReal NameAssigned JobKeyOptionsPMTraitor?
    IP:(IP: [M.lastKnownIP])Traitor?Traitor?"} + span_red("Traitor?") + {"Traitor?"} + span_red(span_bold("Traitor?")) + {" N/A [replacetext(job.title, " ", " ")]" + span_red("[replacetext(job.title, " ", " ")]") + "[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]" + span_red("[replacetext(job.title, " ", " ")]") + "[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]" + span_red("[replacetext(job.title, " ", " ")]") + "[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]" + span_red("[replacetext(job.title, " ", " ")]") + "[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]" + span_red("[replacetext(job.title, " ", " ")]") + "[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]" + span_red("[replacetext(job.title, " ", " ")]") + "[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]" + span_red("[replacetext(job.title, " ", " ")]") + "[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]" + span_red("[replacetext(job.title, " ", " ")]") + "[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]" + span_red("[replacetext(job.title, " ", " ")]") + "[replacetext(job.title, " ", " ")]"+JOB_INTERNAL_AFFAIRS_AGENT+"" + span_red(JOB_INTERNAL_AFFAIRS_AGENT) + ""+JOB_INTERNAL_AFFAIRS_AGENT+"[replacetext(job.title, " ", " ")]" + span_red("[replacetext(job.title, " ", " ")]") + "[replacetext(job.title, " ", " ")][replacetext("[antag.role_text]", " ", " ")]" + span_red("[replacetext("[antag.role_text]", " ", " ")]") + "[replacetext("[antag.role_text]", " ", " ")]
    Other Roles
    [entry]" + span_red("[entry]") + "[entry]
    - [formatted_type] + "} + span_bold(span_small("[formatted_type]")) + {" [marked] [varedited_line] [deleted_line] @@ -249,11 +249,9 @@

    - - E - Edit, tries to determine the variable type by itself.
    - C - Change, asks you for the var type first.
    - M - Mass modify: changes this variable for all objects of this type.
    -
    + "} + span_small(span_bold("E") + " - Edit, tries to determine the variable type by itself.
    ") + {" + "} + span_small(span_bold("C") + " - Change, asks you for the var type first.
    ") + {" + "} + span_small(span_bold("M") + " - Mass modify: changes this variable for all objects of this type.
    ") + {"
    diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 5f6ca609c2..d02e4a0fe1 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -216,7 +216,7 @@ //Helps prevent multiple files being uploaded at once. Or right after eachother. var/time_to_wait = fileaccess_timer - world.time if(time_to_wait > 0) - to_chat(src, "Error: AllowUpload(): Spam prevention. Please wait [round(time_to_wait/10)] seconds.") + to_chat(src, span_red("Error: AllowUpload(): Spam prevention. Please wait [round(time_to_wait/10)] seconds.")) return 0 fileaccess_timer = world.time + FTPDELAY */ return 1 @@ -661,7 +661,7 @@ return TRUE /client/proc/disconnect_with_message(var/message = "You have been intentionally disconnected by the server.
    This may be for security or administrative reasons.") - message = "You Have Been Disconnected
    [message]


    If you feel this is in error, you can contact an administrator out-of-game (for example, on Discord)." + message = "You Have Been Disconnected
    " + span_bold("[message]") + "


    If you feel this is in error, you can contact an administrator out-of-game (for example, on Discord)." window_flash(src) src << browse("[message]","window=dropmessage;size=480x360;can_close=1") qdel(src) diff --git a/code/modules/client/preference_setup/antagonism/02_candidacy.dm b/code/modules/client/preference_setup/antagonism/02_candidacy.dm index 8b665abd3e..59bd072a8f 100644 --- a/code/modules/client/preference_setup/antagonism/02_candidacy.dm +++ b/code/modules/client/preference_setup/antagonism/02_candidacy.dm @@ -55,7 +55,7 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set for (var/i in special_roles) if(special_roles[i]) //if mode is available on the server if(jobban_isbanned(user, i) || (i == "positronic brain" && jobban_isbanned(user, JOB_AI) && jobban_isbanned(user, JOB_CYBORG)) || (i == "pAI candidate" && jobban_isbanned(user, JOB_PAI))) - . += span_bold("Be [i]:") + " \[BANNED]
    " + . += span_bold("Be [i]:") + " " + span_red(span_bold(" \[BANNED]")) + "
    " else . += span_bold("Be [i]:") + " " + span_bold("[pref.be_special&(1<
    " // CHOMPEdit Start - Add header for Ghost roles section diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index 96607f9548..4c63fc4f7e 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -273,7 +273,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O . = list() var/datum/species/mob_species = GLOB.all_species[pref.species] - . += "
    " dat += "" dat += "
    Body " + . += "
    " + span_bold("Body") + " " . += "(®)" . += "
    " . += "Species: [pref.species]
    " @@ -393,10 +393,10 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O . += "" for(var/entry in pref.body_descriptors) var/datum/mob_descriptor/descriptor = mob_species.descriptors[entry] - . += "" + . += "" . += "
    [capitalize(descriptor.chargen_label)]:[descriptor.get_standalone_value_descriptor(pref.body_descriptors[entry])]Change
    " + span_bold("[capitalize(descriptor.chargen_label)]:") + "[descriptor.get_standalone_value_descriptor(pref.body_descriptors[entry])]Change

    " - . += "
    Preview
    " + . += "
    " + span_bold("Preview") + "
    " . += "
    Cycle background" . += "
    [pref.equip_preview_mob & EQUIP_PREVIEW_LOADOUT ? "Hide loadout" : "Show loadout"]" . += "
    [pref.equip_preview_mob & EQUIP_PREVIEW_JOB ? "Hide job gear" : "Show job gear"]" @@ -412,21 +412,21 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O . += "Change Color [color_square(hex = pref.read_preference(/datum/preference/color/human/grad_color))] " . += " Style: < > [pref.grad_style]
    " - . += "
    Facial
    " + . += "
    " + span_bold("Facial") + "
    " if(has_flag(mob_species, HAS_HAIR_COLOR)) . += "Change Color [color_square(hex = pref.read_preference(/datum/preference/color/human/facial_color))] " . += " Style: < > [pref.f_style]
    " //Same as above with the extra > & < characters if(has_flag(mob_species, HAS_EYE_COLOR)) - . += "
    Eyes
    " + . += "
    " + span_bold("Eyes") + "
    " . += "Change Color [color_square(hex = pref.read_preference(/datum/preference/color/human/eyes_color))]
    " if(has_flag(mob_species, HAS_SKIN_COLOR)) - . += "
    Body Color
    " + . += "
    " + span_bold("Body Color") + "
    " . += "Change Color [color_square(hex = pref.read_preference(/datum/preference/color/human/skin_color))]
    " if(mob_species.digi_allowed) - . += "
    Digitigrade?: [pref.digitigrade ? "Yes" : "No"]
    " + . += "
    " + span_bold("Digitigrade?:") + " " + span_bold("[pref.digitigrade ? "Yes" : "No"]") + "
    " . += "

    Genetics Settings

    " @@ -488,8 +488,8 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O . += "
    " . += "
    " - . += span_bold("Allow Synth markings:") + " [pref.synth_markings ? "Yes" : "No"]
    " - . += span_bold("Allow Synth color:") + " [pref.synth_color ? "Yes" : "No"]
    " + . += span_bold("Allow Synth markings:") + " " + span_bold("[pref.synth_markings ? "Yes" : "No"]") + "
    " + . += span_bold("Allow Synth color:") + " " + span_bold("[pref.synth_color ? "Yes" : "No"]") + "
    " if(pref.synth_color) . += "Change Color [color_square(hex = pref.read_preference(/datum/preference/color/human/synth_color))]" @@ -1187,37 +1187,37 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O if(current_species.spawn_flags & SPECIES_CAN_JOIN) switch(current_species.rarity_value) if(1 to 2) - dat += "
    Often present on human stations." + dat += "
    " + span_bold("Often present on human stations.") if(3 to 4) - dat += "
    Rarely present on human stations." + dat += "
    " + span_bold("Rarely present on human stations.") if(5) - dat += "
    Unheard of on human stations." + dat += "
    " + span_bold("Unheard of on human stations.") else - dat += "
    May be present on human stations." + dat += "
    " + span_bold("May be present on human stations.") if(current_species.spawn_flags & SPECIES_IS_WHITELISTED) - dat += "
    Whitelist restricted." + dat += "
    " + span_bold("Whitelist restricted.") if(!current_species.has_organ[O_HEART]) - dat += "
    Does not have a circulatory system." + dat += "
    " + span_bold("Does not have a circulatory system.") if(!current_species.has_organ[O_LUNGS]) - dat += "
    Does not have a respiratory system." + dat += "
    " + span_bold("Does not have a respiratory system.") if(current_species.flags & NO_SCAN) - dat += "
    Does not have DNA." + dat += "
    " + span_bold("Does not have DNA.") if(current_species.flags & NO_DEFIB) - dat += "
    Cannot be defibrillated." + dat += "
    " + span_bold("Cannot be defibrillated.") if(current_species.flags & NO_PAIN) - dat += "
    Does not feel pain." + dat += "
    " + span_bold("Does not feel pain.") if(current_species.flags & NO_SLIP) - dat += "
    Has excellent traction." + dat += "
    " + span_bold("Has excellent traction.") if(current_species.flags & NO_POISON) - dat += "
    Immune to most poisons." + dat += "
    " + span_bold("Immune to most poisons.") if(current_species.appearance_flags & HAS_SKIN_TONE) - dat += "
    Has a variety of skin tones." + dat += "
    " + span_bold("Has a variety of skin tones.") if(current_species.appearance_flags & HAS_SKIN_COLOR) - dat += "
    Has a variety of skin colours." + dat += "
    " + span_bold("Has a variety of skin colours.") if(current_species.appearance_flags & HAS_EYE_COLOR) - dat += "
    Has a variety of eye colours." + dat += "
    " + span_bold("Has a variety of eye colours.") if(current_species.flags & IS_PLANT) - dat += "
    Has a plantlike physiology." + dat += "
    " + span_bold("Has a plantlike physiology.") dat += "

    " @@ -1231,9 +1231,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O if(restricted) if(restricted == 1) - dat += "You cannot play as this species.
    If you wish to be whitelisted, you can make an application post on
    the forums.
    " + dat += span_red(span_bold("You cannot play as this species.
    " + span_small("If you wish to be whitelisted, you can make an application post on the forums."))) + "
    " else if(restricted == 2) - dat += "You cannot play as this species.
    This species is not available for play as a station race..

    " + dat += span_red(span_bold("You cannot play as this species.
    " + span_small("This species is not available for play as a station race.."))) + "
    " if(!restricted || check_rights(R_ADMIN|R_EVENT, 0) || current_species.spawn_flags & SPECIES_WHITELIST_SELECTABLE) dat += "\[select\]" dat += "
    " diff --git a/code/modules/client/preference_setup/loadout/loadout.dm b/code/modules/client/preference_setup/loadout/loadout.dm index 027a8a687e..246857c897 100644 --- a/code/modules/client/preference_setup/loadout/loadout.dm +++ b/code/modules/client/preference_setup/loadout/loadout.dm @@ -138,7 +138,7 @@ var/list/gear_datums = list() fcolor = "#E67300" . += "" - . += "" + . += "" . += "" - . += "" + . += "" . += "" for(var/gear_name in LC.gear) var/datum/gear/G = LC.gear[gear_name] @@ -179,7 +179,7 @@ var/list/gear_datums = list() var/ticked = (G.display_name in pref.gear) . += "" . += "" - . += "" + . += "" if(G.show_roles && G.allowed_roles) . += "" if(ticked) diff --git a/code/modules/client/preference_setup/occupation/occupation.dm b/code/modules/client/preference_setup/occupation/occupation.dm index e7f6a3615f..01f600832b 100644 --- a/code/modules/client/preference_setup/occupation/occupation.dm +++ b/code/modules/client/preference_setup/occupation/occupation.dm @@ -149,10 +149,10 @@ . += "" if(jobban_isbanned(user, rank)) if(CONFIG_GET(flag/usewhitelist) && !check_whitelist(user)) // CHOMPedit start - . += "[rank]" + . += "[rank]" continue else - . += "[rank]" + . += "[rank]" continue // CHOMPedit end if(!job.player_old_enough(user.client)) var/available_in_days = job.available_in_days(user.client) @@ -164,7 +164,7 @@ . += "[rank]" continue if(!is_job_whitelisted(user,rank)) - . += "[rank]" + . += "[rank]" continue //VOREStation Add End if(job.is_species_banned(user.client.prefs.species, user.client.prefs.organ_data["brain"]) == TRUE) @@ -174,7 +174,7 @@ . += "[rank]" continue if((pref.job_civilian_low & ASSISTANT) && job.type != /datum/job/assistant) - . += "[rank]" + . += span_gray("[rank]") + "" continue if((rank in SSjob.get_job_titles_in_department(DEPARTMENT_COMMAND) ) || (rank == JOB_AI))//Bold head jobs . += span_bold("[rank]") + "" @@ -214,7 +214,7 @@ if(pref.job_civilian_low & ASSISTANT) . += " \[Yes]" else - . += " \[No]" + . += " " + span_black("\[No]") if(LAZYLEN(job.alt_titles)) //Blatantly cloned from a few lines down. . += "" . += "" @@ -279,7 +279,7 @@ if(LAZYLEN(job.departments_managed)) dat += "You manage these departments: [english_list(job.departments_managed)]" - dat += "You answer to [job.supervisors] normally." + dat += "You answer to " + span_bold("[job.supervisors]") + " normally." dat += "
    " if(CONFIG_GET(string/wikiurl)) diff --git a/code/modules/client/preference_setup/traits/traits.dm b/code/modules/client/preference_setup/traits/traits.dm index 12a9077bc7..fe217b5a26 100644 --- a/code/modules/client/preference_setup/traits/traits.dm +++ b/code/modules/client/preference_setup/traits/traits.dm @@ -46,7 +46,7 @@ var/list/trait_categories = list() // The categories available for the trait men . = list() . += "
    \<\<\[[pref.gear_slot]\] \>\>[total_cost]/[MAX_GEAR_COST] loadout points spent. \[Clear Loadout\]
    \<\<" + span_bold("\[[pref.gear_slot]\] ") + "\>\>" + span_bold("[total_cost]/[MAX_GEAR_COST] loadout points spent.") + " \[Clear Loadout\]
    " var/firstcat = 1 @@ -167,7 +167,7 @@ var/list/gear_datums = list() var/datum/loadout_category/LC = loadout_categories[current_tab] . += "

    [LC.category]
    " + span_bold("
    [LC.category]
    ") + "

    [G.display_name][G.cost][G.description]
    " + span_normal(span_italics("[G.description]")) + "
            Restricted to: [list2text(G.allowed_roles,", ")] \[WHITELISTED]
    " + span_bold(" \[WHITELISTED]") + "
    \[BANNED]
    " + span_bold(" \[BANNED]") + "
    \[IN [round(available_in_hours, 0.1)] DEPTHOURS]
    \[WHITELIST ONLY]
    " + span_bold(" \[WHITELIST ONLY]") + "
    \[MINIMUM CHARACTER AGE FOR SELECTED RACE/BRAIN TYPE: [job.get_min_age(user.client.prefs.species, user.client.prefs.organ_data["brain"])]\]
     \[[pref.GetPlayerAltTitle(job)]\]
    " . += "" - . += "" + . += "" . += "" . += "" + . += "" // if(ticked) // . += "" HTML += " " HTML += " " - HTML += " " + HTML += " " HTML += " " j++ diff --git a/code/modules/maps/bapi-dmm/bapi_dmm_reader.dm b/code/modules/maps/bapi-dmm/bapi_dmm_reader.dm index ea71276be8..abed813ec3 100644 --- a/code/modules/maps/bapi-dmm/bapi_dmm_reader.dm +++ b/code/modules/maps/bapi-dmm/bapi_dmm_reader.dm @@ -21,7 +21,7 @@ GLOBAL_LIST_EMPTY(_preloader_attributes) value = deepCopyList(value) #ifdef TESTING if(what.vars[attribute] == value) - var/message = "[what.type] at [AREACOORD(what)] - VAR:[attribute] = [isnull(value) ? "null" : (isnum(value) ? value : "\"[value]\"")]" + var/message = span_green("[what.type]") + " at [AREACOORD(what)] - " + span_bold("VAR:") + " " + span_red("[attribute] = [isnull(value) ? "null" : (isnum(value) ? value : "\"[value]\"")]") world.log << "DIRTY VAR: [message]" dirty_vars += message #endif diff --git a/code/modules/mentor/mentorhelp.dm b/code/modules/mentor/mentorhelp.dm index bc5a2cb940..ac834e89d6 100644 --- a/code/modules/mentor/mentorhelp.dm +++ b/code/modules/mentor/mentorhelp.dm @@ -196,8 +196,8 @@ GLOBAL_DATUM_INIT(mhelp_tickets, /datum/mentor_help_tickets, new) //message from the initiator without a target, all people with mentor powers will see this /datum/mentor_help/proc/MessageNoRecipient(msg) var/ref_src = "\ref[src]" - var/chat_msg = span_notice("(ESCALATE) Ticket [TicketHref("#[id]", ref_src)]: [LinkedReplyName(ref_src)]: [msg]") - AddInteraction("[LinkedReplyName(ref_src)]: [msg]") + var/chat_msg = span_notice("(ESCALATE) Ticket [TicketHref("#[id]", ref_src)]" + span_bold(": [LinkedReplyName(ref_src)]:") + " [msg]") + AddInteraction(span_red("[LinkedReplyName(ref_src)]: [msg]")) for (var/client/C in GLOB.mentors) if (C.prefs?.read_preference(/datum/preference/toggle/play_mentorhelp_ping)) C << 'sound/effects/mentorhelp.mp3' @@ -227,7 +227,7 @@ GLOBAL_DATUM_INIT(mhelp_tickets, /datum/mentor_help_tickets, new) if(initiator) initiator.current_mentorhelp = src - AddInteraction("Reopened by [usr.ckey]") + AddInteraction(span_purple("Reopened by [usr.ckey]")) if(initiator) to_chat(initiator, span_filter_adminlog("[span_purple("Ticket [TicketHref("#[id]")] was reopened by [usr.ckey].")]")) var/msg = span_adminhelp("Ticket [TicketHref("#[id]")] reopened by [usr.ckey].") @@ -271,15 +271,15 @@ GLOBAL_DATUM_INIT(mhelp_tickets, /datum/mentor_help_tickets, new) var/list/dat = list("Ticket #[id]") var/ref_src = "\ref[src]" dat += "

    Mentor Help Ticket #[id]: [LinkedReplyName(ref_src)]

    " - dat += "State: " + dat += span_bold("State: ") switch(state) if(AHELP_ACTIVE) - dat += "OPEN" + dat += span_bold(span_red("OPEN")) if(AHELP_RESOLVED) - dat += "RESOLVED" + dat += span_bold(span_green("RESOLVED")) else dat += "UNKNOWN" - dat += "[GLOB.TAB][TicketHref("Refresh", ref_src)]" + dat += "[GLOB.TAB][TicketHref("Refresh", ref_src)]" if(state != AHELP_ACTIVE) dat += "[GLOB.TAB][TicketHref("Reopen", ref_src, "reopen")]" dat += "

    Opened at: [gameTimestamp(wtime = opened_at)] (Approx [(world.time - opened_at) / 600] minutes ago)" @@ -290,7 +290,7 @@ GLOBAL_DATUM_INIT(mhelp_tickets, /datum/mentor_help_tickets, new) dat += span_bold("Actions:") + " [Context(ref_src)]
    " else dat += span_bold("DISCONNECTED") + "[GLOB.TAB][ClosureLinks(ref_src)]
    " - dat += "
    Log:

    " + dat += "
    " + span_bold("Log:") + "

    " for(var/I in _interactions) dat += "[I]
    " dat += "" @@ -463,7 +463,7 @@ GLOBAL_DATUM_INIT(mhelp_tickets, /datum/mentor_help_tickets, new) if(current_mentorhelp) log_admin("Mentorhelp: [key_name(src)]: [msg]") current_mentorhelp.MessageNoRecipient(msg) - to_chat(usr, span_mentor_pm_notice("Mentor-PM to-Mentors: [msg]")) + to_chat(usr, span_mentor_pm_notice("Mentor-PM to-" + span_bold("Mentors") + ": [msg]")) return else to_chat(usr, span_warning("Ticket not found, creating new one...")) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 20883e6fa3..176c847093 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -1091,7 +1091,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(flashwindow) window_flash(client) if(message) - to_chat(src, span_ghostalert("[message]")) + to_chat(src, span_ghostalert(span_huge("[message]"))) if(source) throw_alert("\ref[source]_notify_revive", /obj/screen/alert/notify_cloning, new_master = source) to_chat(src, span_ghostalert("(Click to re-enter)")) diff --git a/code/modules/mob/living/carbon/carbon_powers.dm b/code/modules/mob/living/carbon/carbon_powers.dm index 284224604d..e49aa30f10 100644 --- a/code/modules/mob/living/carbon/carbon_powers.dm +++ b/code/modules/mob/living/carbon/carbon_powers.dm @@ -36,7 +36,7 @@ to_chat(B.host_brain, span_warning("You feel a strange sensation as a foreign influence prods your mind.")) to_chat(src, span_danger("It doesn't seem to be as effective as you hoped.")) else - to_chat(B.host_brain, span_danger("Horrific, burning agony lances through you, ripping a soundless scream from your trapped mind!")) + to_chat(B.host_brain, span_danger(span_large("Horrific, burning agony lances through you, ripping a soundless scream from your trapped mind!"))) /mob/living/carbon/proc/spawn_larvae() set category = "Abilities.Brainslug" diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm index 6ac4d74044..b65f6e545a 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm @@ -126,7 +126,7 @@ chimera_hatch() // add_modifier(/datum/modifier/resleeving_sickness/chimera, sickness_duration) //CHOMPedit adjustBrainLoss(5) // if they're reviving from dead, they come back with 5 brainloss on top of whatever's unhealed. - visible_message(span_warning("

    The former corpse staggers to its feet, all its former wounds having vanished...

    ")) //Bloody hell... + visible_message(span_warning("

    " + span_huge("The former corpse staggers to its feet, all its former wounds having vanished...") + "

    ")) //Bloody hell... clear_alert("hatch") return @@ -134,7 +134,7 @@ else chimera_hatch() - visible_message(span_warning("

    [src] rises to \his feet.

    ")) //Bloody hell... + visible_message(span_warning("

    " + span_huge("[src] rises to \his feet.") + "

    ")) //Bloody hell... clear_alert("hatch") /mob/living/carbon/human/proc/chimera_hatch() @@ -160,7 +160,7 @@ var/blood_color = species.blood_color var/flesh_color = species.flesh_color new /obj/effect/gibspawner/human/xenochimera(T, null, flesh_color, blood_color) - visible_message(span_danger("

    The lifeless husk of [src] bursts open, revealing a new, intact copy in the pool of viscera.

    ")) //Bloody hell... + visible_message(span_danger("

    " + span_huge("The lifeless husk of [src] bursts open, revealing a new, intact copy in the pool of viscera.") + "

    ")) //Bloody hell... playsound(T, 'sound/effects/mob_effects/xenochimera/hatch.ogg', 50) else //lower cost for doing a quick cosmetic revive nutrition = old_nutrition * 0.9 @@ -656,7 +656,7 @@ T.apply_damage(500, OXY) //Kill them. absorbing_prey = 0 to_chat(src, span_notice("You have completely drained [T], killing them in the process.")) - to_chat(T, span_danger("You... Feel... So... Weak...")) + to_chat(T, span_danger(span_massive("You... Feel... So... Weak..."))) visible_message(span_danger("[src] seems to finish whatever they were doing to [T].")) add_attack_logs(src,T,"Succubus drained (lethal)") return @@ -1587,29 +1587,29 @@ to_chat(src, span_notice("You will [trait_injection_verb] your targets.")) return if(choice == "Chemical Refresher") - var/output = {"Chemical Refresher!
    - Options for venoms
    + var/output = {""} + span_bold("Chemical Refresher!") + {"
    + "} + span_bold("Options for venoms") + {"

    - Size Chemicals
    + "} + span_bold("Size Chemicals") + {"
    Microcillin: Will make someone shrink.
    Macrocillin: Will make someone grow.
    Normalcillin: Will make someone normal size.
    Note: 1 unit = 100% size diff. 0.01 unit = 1% size diff.
    Note: Normacillin stops at 100% size.

    - Gender Chemicals
    + "} + span_bold("Gender Chemicals") + {"
    Androrovir: Will transform someone's sex to male.
    Gynorovir: Will transform someone's sex to female.
    Androgynorovir: Will transform someone's sex to plural.

    - Special Chemicals
    + "} + span_bold("Special Chemicals") + {"
    Stoxin: Will make someone drowsy.
    Rainbow Toxin: Will make someone see rainbows.
    Paralysis Toxin: Will make someone paralyzed.
    Numbing Enzyme: Will make someone unable to feel pain.
    Pain Enzyme: Will make someone feel amplified pain.

    - Side Notes
    + "} + span_bold("Side Notes") + {"
    You can select a value of 0 to inject nothing!
    Overdose threshold for most chemicals is 30 units.
    Exceptions to OD is: (Numbing Enzyme:20)
    diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm index 66455ba17f..f4f6bfca0a 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm @@ -92,7 +92,7 @@ var/regen_sounds = H.regen_sounds if(prob(2)) // 2% chance of playing squelchy noise while reviving, which is run roughly every 2 seconds/tick while regenerating. playsound(H, pick(regen_sounds), 30) - H.visible_message(span_danger("

    [H.name]'s motionless form shudders grotesquely, rippling unnaturally.

    ")) + H.visible_message(span_danger("

    " + span_huge("[H.name]'s motionless form shudders grotesquely, rippling unnaturally.") + "

    ")) // CHOMPAdd - F A L L if(!H.lying) H.lay_down() @@ -283,28 +283,28 @@ /datum/species/xenochimera/proc/go_feral(var/mob/living/carbon/human/H, var/stress, var/cause) // Going feral due to hunger if(cause == "hunger") - to_chat(H,span_danger("Something in your mind flips, your instincts taking over, no longer able to fully comprehend your surroundings as survival becomes your primary concern - you must feed, survive, there is nothing else. Hunt. Eat. Hide. Repeat.")) + to_chat(H,span_danger(span_large("Something in your mind flips, your instincts taking over, no longer able to fully comprehend your surroundings as survival becomes your primary concern - you must feed, survive, there is nothing else. Hunt. Eat. Hide. Repeat."))) log_and_message_admins("has gone feral due to hunger.", H) // If they're hurt, chance of snapping. else if(cause == "shock") //If the majority of their shock is due to halloss, give them a different message (3x multiplier on check as halloss is 2x - meaning t_s must be at least 3x for other damage sources to be the greater part) if(3*H.halloss >= H.traumatic_shock) - to_chat(H,span_danger("The pain! It stings! Got to get away! Your instincts take over, urging you to flee, to hide, to go to ground, get away from here...")) + to_chat(H,span_danger(span_large("The pain! It stings! Got to get away! Your instincts take over, urging you to flee, to hide, to go to ground, get away from here..."))) log_and_message_admins("has gone feral due to halloss.", H) //Majority due to other damage sources else - to_chat(H,span_danger("Your fight-or-flight response kicks in, your injuries too much to simply ignore - you need to flee, to hide, survive at all costs - or destroy whatever is threatening you.")) + to_chat(H,span_danger(span_large("Your fight-or-flight response kicks in, your injuries too much to simply ignore - you need to flee, to hide, survive at all costs - or destroy whatever is threatening you."))) log_and_message_admins("has gone feral due to injury.", H) //No hungry or shock, but jittery else if(cause == "jittery") - to_chat(H,span_warning("Suddenly, something flips - everything that moves is... potential prey. A plaything. This is great! Time to hunt!")) + to_chat(H,span_warning(span_large("Suddenly, something flips - everything that moves is... potential prey. A plaything. This is great! Time to hunt!"))) log_and_message_admins("has gone feral due to jitteriness.", H) else // catch-all just in case something weird happens - to_chat(H,span_warning("The stress of your situation is too much for you, and your survival instincts kick in!")) + to_chat(H,span_warning(span_large("The stress of your situation is too much for you, and your survival instincts kick in!"))) log_and_message_admins("has gone feral for unknown reasons.", H) //finally, set their feral var H.feral = stress diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 121f8edcd8..4a4436245f 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1341,16 +1341,15 @@ /mob/living/vv_get_header() . = ..() . += {" - [src] -
    [ckey ? ckey : "No ckey"] / [real_name ? real_name : "No real name"] -
    - BRUTE:[getBruteLoss()] - FIRE:[getFireLoss()] - TOXIN:[getToxLoss()] - OXY:[getOxyLoss()] - CLONE:[getCloneLoss()] - BRAIN:[getBrainLoss()] -
    + "} + span_bold("[src]") + {" + "} + span_small("
    [ckey ? ckey : "No ckey"] / [real_name ? real_name : "No real name"]") + {" + "} + span_small("
    ") + {" + "} + span_small("BRUTE:[getBruteLoss()]") + {" + "} + span_small("FIRE:[getFireLoss()]") + {" + "} + span_small("TOXIN:[getToxLoss()]") + {" + "} + span_small("OXY:[getOxyLoss()]") + {" + "} + span_small("CLONE:[getCloneLoss()]") + {" + "} + span_small("BRAIN:[getBrainLoss()]") + {" "} /mob/living/update_gravity(has_gravity) diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm index 64eccffaac..879311897f 100644 --- a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm +++ b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm @@ -282,40 +282,40 @@ dat += "
    " if(!delivery && compactor && length(contents))//garbage counter for trashpup - dat += "Current load: [length(contents)] / [max_item_count] objects.
    " - dat += "([contents.Join(", ")])

    " + dat += span_red(span_bold("Current load:") + " [length(contents)] / [max_item_count] objects.") + "
    " + dat += span_gray("([contents.Join(", ")])") + "

    " if(ore_storage) //CHOMPAdd dat += "Current ore capacity: [current_capacity] / [max_ore_storage].
    " if(delivery && length(contents)) - dat += "Current load: [length(contents)] / [max_item_count] objects.
    " - dat += "Cargo compartment slot: Cargo 1.
    " + dat += span_red(span_bold("Current load:") + " [length(contents)] / [max_item_count] objects.") + "
    " + dat += span_gray("Cargo compartment slot: Cargo 1.") + "
    " if(length(deliveryslot_1)) - dat += "([deliveryslot_1.Join(", ")])
    " - dat += "Cargo compartment slot: Cargo 2.
    " + dat += span_gray("([deliveryslot_1.Join(", ")])") + "
    " + dat += span_gray("Cargo compartment slot: Cargo 2.") + "
    " if(length(deliveryslot_2)) - dat += "([deliveryslot_2.Join(", ")])
    " - dat += "Cargo compartment slot: Cargo 3.
    " + dat += span_gray("([deliveryslot_2.Join(", ")])") + "
    " + dat += span_gray("Cargo compartment slot: Cargo 3.") + "
    " if(length(deliveryslot_3)) - dat += "([deliveryslot_3.Join(", ")])
    " - dat += "Cargo compartment slot: Fuel.
    " - dat += "([jointext(contents - (deliveryslot_1 + deliveryslot_2 + deliveryslot_3),", ")])

    " + dat += span_gray("([deliveryslot_3.Join(", ")])") + "
    " + dat += span_red("Cargo compartment slot: Fuel.") + "
    " + dat += span_red("([jointext(contents - (deliveryslot_1 + deliveryslot_2 + deliveryslot_3),", ")])") + "

    " if(analyzer && !synced) dat += "Sync Files
    " //Cleaning and there are still un-preserved items if(cleaning && length(contents - items_preserved)) - dat += "Self-cleaning mode. [length(contents - items_preserved)] object(s) remaining.
    " + dat += span_red(span_bold("Self-cleaning mode.") + " [length(contents - items_preserved)] object(s) remaining.") + "
    " //There are no items to be processed other than un-preserved items else if(cleaning && length(items_preserved)) - dat += "Self-cleaning done. Eject remaining objects now.
    " + dat += span_red(span_bold("Self-cleaning done. Eject remaining objects now.")) + "
    " //Preserved items count when the list is populated if(length(items_preserved)) - dat += "[length(items_preserved)] uncleanable object(s).
    " + dat += span_red("[length(items_preserved)] uncleanable object(s).") + "
    " if(!patient) dat += "[src.name] Unoccupied" diff --git a/code/modules/mob/new_player/poll.dm b/code/modules/mob/new_player/poll.dm index 2931ee3b89..6e073bc25f 100644 --- a/code/modules/mob/new_player/poll.dm +++ b/code/modules/mob/new_player/poll.dm @@ -15,7 +15,7 @@ privacy_poll() /mob/new_player/proc/privacy_poll() - var/output = "
    Player poll" + var/output = "
    " + span_bold("Player poll") output +="
    " output += span_bold("We would like to expand our stats gathering.") output += "
    This however involves gathering data about player behavior, play styles, unique player numbers, play times, etc. Data like that cannot be gathered fully anonymously, which is why we're asking you how you'd feel if player-specific data was gathered. Prior to any of this actually happening, a privacy policy will be discussed, but before that can begin, we'd preliminarily like to know how you feel about the concept." @@ -56,7 +56,7 @@ var/datum/db_query/select_query = SSdbcore.NewQuery("SELECT id, question FROM erro_poll_question WHERE [(isadmin ? "" : "adminonly = false AND")] Now() BETWEEN starttime AND endtime") select_query.Execute() - var/output = "
    Player polls" + var/output = "
    " + span_bold("Player polls") output +="
    " var/pollid @@ -70,7 +70,7 @@ while(select_query.NextRow()) pollid = select_query.item[1] pollquestion = select_query.item[2] - output += "
    " + output += "" i++ qdel(select_query) output += "

    Traits
    " + span_bold("
    Traits
    ") + "

    " @@ -86,8 +86,8 @@ var/list/trait_categories = list() // The categories available for the trait men if(conflicts) invalid += "This trait is mutually exclusive with [conflicts]." - . += "
    [T.desc]\ - [invalid ? "
    Cannot take trait. Reason: [invalid]
    ":""]
    " + span_italics("[T.desc]") + "\ + [invalid ? span_red("
    Cannot take trait. Reason: [invalid]"):""]
    " // for(var/datum/gear_tweak/tweak in G.gear_tweaks) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 24911f850c..0a157e201f 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -360,7 +360,7 @@ return playsound(src, W.usesound, 50, 1) - user.visible_message("[user] cuts the fingertips off of the [src].","You cut the fingertips off of the [src].") + user.visible_message(span_red("[user] cuts the fingertips off of the [src]."),span_red("You cut the fingertips off of the [src].")) clipped = 1 name = "modified [name]" diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index 625e0bff4f..44fc596c72 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -63,7 +63,7 @@ rolled_sleeves = 0 /obj/item/clothing/under/rank/chef - desc = "It's an apron which is given only to the most hardcore chefs in space." + desc = "It's an apron which is given only to the most " + span_bold("hardcore") + " chefs in space." name = "chef's uniform" icon_state = "chef" rolled_sleeves = 0 @@ -75,7 +75,7 @@ /obj/item/clothing/under/rank/clown name = "clown suit" - desc = "Honk!" + desc = span_italics("Honk!") icon_state = "clown" rolled_sleeves = -1 has_sensor = 0 // CHOMPEdit: Fixes sensors issue @@ -105,7 +105,7 @@ icon_state = "hydro" /obj/item/clothing/under/rank/internalaffairs - desc = "The plain, professional attire of an " + JOB_INTERNAL_AFFAIRS_AGENT + ". The collar is immaculately starched." + desc = "The plain, professional attire of an " + JOB_INTERNAL_AFFAIRS_AGENT + ". The collar is " + span_italics("immaculately") + " starched." name = "Internal Affairs uniform" icon_state = "internalaffairs" item_state_slots = list(slot_r_hand_str = "ba_suit", slot_l_hand_str = "ba_suit") diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 59d95db8c4..aca5204e5e 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -69,7 +69,7 @@ /obj/item/clothing/under/clown //i'm only putting it here to make subtypes of it, since the original suit is under/rank/clown name = "clown suit" - desc = "Honk!" + desc = span_italics("Honk!") icon_state = "clown" rolled_sleeves = -1 @@ -843,7 +843,7 @@ /obj/item/clothing/under/gov name = "green formal uniform" - desc = "A neat proper uniform of someone on offical business. The collar is immaculately starched." + desc = "A neat proper uniform of someone on offical business. The collar is " + span_italics("immaculately") + " starched." icon_state = "greensuit" item_state_slots = list(slot_r_hand_str = "centcom", slot_l_hand_str = "centcom") starting_accessories = list(/obj/item/clothing/accessory/tie/darkgreen) diff --git a/code/modules/compass/compass_holder.dm b/code/modules/compass/compass_holder.dm index 44f981e8ed..d11ceb9e5f 100644 --- a/code/modules/compass/compass_holder.dm +++ b/code/modules/compass/compass_holder.dm @@ -28,7 +28,7 @@ . = ..() if(show_heading) compass_heading_marker = new /image/compass_marker - compass_heading_marker.maptext = "
    " + compass_heading_marker.maptext = "
    " + span_normal(span_cyan(span_bold("△"))) + "
    " compass_heading_marker.filters = filter(type="drop_shadow", color = "#00ffffaa", size = 2, offset = 1,x = 0, y = 0) compass_heading_marker.layer = LAYER_HUD_UNDER compass_heading_marker.plane = PLANE_PLAYER_HUD @@ -45,10 +45,10 @@ else str = angle_step_to_dir[CLAMP(round(angle/45)+1, 1, length(angle_step_to_dir))] str_col = "#ffffffaa" - else + else str = "〡" str_col = "#aaaaaa88" - I.maptext = "
    [str]
    " + I.maptext = "
    " + span_bold("[str]") + "
    " var/matrix/M = matrix() M.Translate(0, COMPASS_LABEL_OFFSET) M.Turn(COMPASS_PERIOD * i) diff --git a/code/modules/compass/compass_waypoint.dm b/code/modules/compass/compass_waypoint.dm index 24f9978bb8..1e611ea854 100644 --- a/code/modules/compass/compass_waypoint.dm +++ b/code/modules/compass/compass_waypoint.dm @@ -15,7 +15,7 @@ color = _color compass_overlay = new /image/compass_marker compass_overlay.loc = src - compass_overlay.maptext = "
    |\n[name]
    " + compass_overlay.maptext = "
    " + span_bold("|") + "\n[name]
    " compass_overlay.filters = filter(type="drop_shadow", color = "[color]" + "aa", size = 2, offset = 1,x = 0, y = 0) compass_overlay.layer = LAYER_HUD_UNDER compass_overlay.plane = PLANE_PLAYER_HUD diff --git a/code/modules/detectivework/microscope/dnascanner.dm b/code/modules/detectivework/microscope/dnascanner.dm index 788128c299..4548dd48fb 100644 --- a/code/modules/detectivework/microscope/dnascanner.dm +++ b/code/modules/detectivework/microscope/dnascanner.dm @@ -118,7 +118,7 @@ if(bloodsamp.dna != null) data = "Spectometric analysis on provided sample has determined the presence of [bloodsamp.dna.len] strings of DNA.

    " for(var/blood in bloodsamp.dna) - data += "Blood type: [bloodsamp.dna[blood]]
    \nDNA: [blood]

    " + data += span_blue("Blood type: [bloodsamp.dna[blood]]
    \nDNA: [blood]

    ") else data += "No DNA found.
    " P.info = span_bold("[src] analysis report #[report_num]") + "
    " diff --git a/code/modules/entrepreneur/entrepreneur_items.dm b/code/modules/entrepreneur/entrepreneur_items.dm index 6ed0fdab16..eed81489ec 100644 --- a/code/modules/entrepreneur/entrepreneur_items.dm +++ b/code/modules/entrepreneur/entrepreneur_items.dm @@ -452,7 +452,7 @@ if(!T.desc) return user.visible_message(span_notice("\The [user] examines the \the [T] with \the [src]!")) - to_chat(user, "[T.desc]") + to_chat(user, span_huge("[T.desc]")) // Streamer and influencer diff --git a/code/modules/events/ion_storm.dm b/code/modules/events/ion_storm.dm index 4fd2dbdc2b..ec1b1bc9ae 100644 --- a/code/modules/events/ion_storm.dm +++ b/code/modules/events/ion_storm.dm @@ -143,72 +143,72 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is switch(rand(1,14)) if(1) to_chat(M, "
    ") - to_chat(M, "THERE ARE [amount] [who2] ON THE STATION...LAWS UPDATED") + to_chat(M, span_red("THERE ARE [amount] [who2] ON THE STATION...LAWS UPDATED")) to_chat(M, "
    ") M.add_ion_law("THERE ARE [amount] [who2] ON THE STATION") if(2) to_chat(M, "
    ") - to_chat(M, "[what2] ARE DANGEROUS TO HUMANS...LAWS UPDATED") + to_chat(M, span_red("[what2] ARE DANGEROUS TO HUMANS...LAWS UPDATED")) to_chat(M, "
    ") M.add_ion_law("[what2] ARE DANGEROUS TO HUMANS") if(3) to_chat(M, "
    ") - to_chat(M, "THE ESCAPE-SHUTTLE CANNOT BE CALLED BECAUSE OF [who2] ON THE STATION...LAWS UPDATED") + to_chat(M, span_red("THE ESCAPE-SHUTTLE CANNOT BE CALLED BECAUSE OF [who2] ON THE STATION...LAWS UPDATED")) to_chat(M, "
    ") M.add_ion_law("THE ESCAPE SHUTTLE CANNOT BE CALLED BECAUSE OF [who2] ON THE STATION") if(4) to_chat(M, "
    ") - to_chat(M, "HUMANS NEED TO EAT [what2pref] [what2] TO SURVIVE...LAWS UPDATED") + to_chat(M, span_red("HUMANS NEED TO EAT [what2pref] [what2] TO SURVIVE...LAWS UPDATED")) to_chat(M, "
    ") M.add_ion_law("HUMANS NEED TO EAT [what2pref] [what2] TO SURVIVE") if(5) to_chat(M, "
    ") - to_chat(M, "THE SITE MANAGER, HOP AND HOS ARE [who2]...LAWS UPDATED") + to_chat(M, span_red("THE SITE MANAGER, HOP AND HOS ARE [who2]...LAWS UPDATED")) to_chat(M, "
    ") M.add_ion_law("THE SITE MANAGER, HOP AND HOS ARE [who2]") if(6) to_chat(M, "
    ") - to_chat(M, "THE STATION IS BUILT FOR [who2]...LAWS UPDATED") + to_chat(M, span_red("THE STATION IS BUILT FOR [who2]...LAWS UPDATED")) to_chat(M, "
    ") M.add_ion_law("THE STATION IS BUILT FOR [who2]") if(7) to_chat(M, "
    ") - to_chat(M, "YOU ARE [amount] [who2]...LAWS UPDATED") + to_chat(M, span_red("YOU ARE [amount] [who2]...LAWS UPDATED")) to_chat(M, "
    ") M.add_ion_law("YOU ARE [amount] [who2]") if(8) to_chat(M, "
    ") - to_chat(M, "YOU MUST ALWAYS [aimust]...LAWS UPDATED") + to_chat(M, span_red("YOU MUST ALWAYS [aimust]...LAWS UPDATED")) to_chat(M, "
    ") M.add_ion_law("YOU MUST ALWAYS [aimust]") if(9) to_chat(M, "
    ") - to_chat(M, "[area] [area2] [amount] [what2]...LAWS UPDATED") + to_chat(M, span_red("[area] [area2] [amount] [what2]...LAWS UPDATED")) to_chat(M, "
    ") M.add_ion_law("[area] [area2] [amount] [what2]") if(10) to_chat(M, "
    ") - to_chat(M, "[crew] is [target]...LAWS UPDATED") + to_chat(M, span_red("[crew] is [target]...LAWS UPDATED")) to_chat(M, "
    ") M.add_ion_law("[crew] is [target]") if(11) to_chat(M, "
    ") - to_chat(M, "[define] IS A FORM OF HARM...LAWS UPDATED") + to_chat(M, span_red("[define] IS A FORM OF HARM...LAWS UPDATED")) to_chat(M, "
    ") M.add_ion_law("[define] IS A FORM OF HARM") if(12) to_chat(M, "
    ") - to_chat(M, "YOU REQUIRE [require] IN ORDER TO PROTECT HUMANS... LAWS UPDATED") + to_chat(M, span_red("YOU REQUIRE [require] IN ORDER TO PROTECT HUMANS... LAWS UPDATED")) to_chat(M, "
    ") M.add_ion_law("YOU REQUIRE [require] IN ORDER TO PROTECT HUMANS") if(13) to_chat(M, "
    ") - to_chat(M, "[crew] is [allergysev] to [allergy]...LAWS UPDATED") + to_chat(M, span_red("[crew] is [allergysev] to [allergy]...LAWS UPDATED")) to_chat(M, "
    ") M.add_ion_law("[crew] is [allergysev] to [allergy]") if(14) to_chat(M, "
    ") - to_chat(M, "THE STATION IS [who2pref] [who2]...LAWS UPDATED") + to_chat(M, span_red("THE STATION IS [who2pref] [who2]...LAWS UPDATED")) to_chat(M, "
    ") M.add_ion_law("THE STATION IS [who2pref] [who2]") diff --git a/code/modules/hydroponics/trays/tray_tools.dm b/code/modules/hydroponics/trays/tray_tools.dm index 09d8b22fdb..fc3d7f11a8 100644 --- a/code/modules/hydroponics/trays/tray_tools.dm +++ b/code/modules/hydroponics/trays/tray_tools.dm @@ -146,11 +146,11 @@ var/dat = "

    Plant data for [form_title]

    " dat += "

    General Data

    " dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" dat += "
    Endurance[grown_seed.get_trait(TRAIT_ENDURANCE)]
    Yield[grown_seed.get_trait(TRAIT_YIELD)]
    Maturation time[grown_seed.get_trait(TRAIT_MATURATION)]
    Production time[grown_seed.get_trait(TRAIT_PRODUCTION)]
    Potency[grown_seed.get_trait(TRAIT_POTENCY)]
    " + span_bold("Endurance") + "[grown_seed.get_trait(TRAIT_ENDURANCE)]
    " + span_bold("Yield") + "[grown_seed.get_trait(TRAIT_YIELD)]
    " + span_bold("Maturation time") + "[grown_seed.get_trait(TRAIT_MATURATION)]
    " + span_bold("Production time") + "[grown_seed.get_trait(TRAIT_PRODUCTION)]
    " + span_bold("Potency") + "[grown_seed.get_trait(TRAIT_POTENCY)]
    " if(LAZYLEN(last_reagents)) diff --git a/code/modules/library/hardcode_library/fiction/PortedBooks.dm b/code/modules/library/hardcode_library/fiction/PortedBooks.dm index 95f51cceef..e2f1d3391d 100644 --- a/code/modules/library/hardcode_library/fiction/PortedBooks.dm +++ b/code/modules/library/hardcode_library/fiction/PortedBooks.dm @@ -29,9 +29,9 @@ Category: Fiction


    -

    The Tale of the Rainbow Cat +

    "} + span_giant("The Tale of the Rainbow Cat") + {"

    - by Miyahara Koichiro

    + "} + span_normal(span_italics("by Miyahara Koichiro")) + {"
    @@ -46,13 +46,13 @@ Category: Fiction

    - Once upon a time there was a cat, but he wasn't the kind of cat you're thinking of. He was from the land of the fairies and his fur was completely unexpected colors. For starters, his nose was violet. His eyes were indigo, his ears were sky blue, his front paws were green, his body was yellow, his back paws were orange, and his tail was red. So he was a mysterious cat of seven colors arranged just like a rainbow. + Once upon a time there was a cat, but he wasn't the kind of cat you're thinking of. He was from the land of the fairies and his fur was completely unexpected colors. For starters, his nose was "} + span_italics("violet") + {". His eyes were "} + span_italics("indigo") + {", his ears were "} + span_italics("sky blue") + {", his front paws were "} + span_italics("green") + {", his body was "} + span_italics("yellow") + {", his back paws were "} + span_italics("orange") + {", and his tail was "} + span_italics("red") + {". So he was a mysterious cat of seven colors arranged just like a rainbow.

    That rainbow cat went on all sorts of strange adventures. The following story is one of them.

    One day while the rainbow cat was sunbathing, he was suddenly vexed by boredom. That is to say, peace reigned in the land of the fairies, so nothing much was going on.

    - It's not good for my health to spend all my time idling about as if I haven't got a care in the world, he thought. Perhaps I should head out and go on an adventure. + "} + span_italics("It's not good for my health to spend all my time idling about as if I haven't got a care in the world,") + {" he thought. "} + span_italics("Perhaps I should head out and go on an adventure.") + {"

    So he put a note up on his door: "Dear Mr. Post Man, I will be gone for two or three days, so if any packages or letters come, please throw them down the chimney."

    @@ -205,7 +205,7 @@ Category: Fiction

    One day while Andy was mas





    - It fades out quickly into worn, blank pages. You feel as though you've found a relic of times long past. + "} + span_italics("It fades out quickly into worn, blank pages. You feel as though you've found a relic of times long past.") + {"


    @@ -325,7 +325,7 @@ Category: Fiction


    Poems for a Rainy Day


    - A Collection of Poetry
    by Wilfred Owen


    + "} + span_italics("A Collection of Poetry
    by Wilfred Owen") + {"

    @@ -339,7 +339,7 @@ Category: Fiction - Anthem for Doomed Youth + "} + span_bold("Anthem for Doomed Youth") + {"
    What passing-bells for these who die as cattle? @@ -368,7 +368,7 @@ Category: Fiction - The Send-Off + "} + span_bold("The Send-Off") + {"
    Down the close, darkening lanes they sang their way
    @@ -403,7 +403,7 @@ Category: Fiction - Dulce et Decorum Est + "} + span_bold("Dulce et Decorum Est") + {"
    Bent double, like old beggars under sacks,
    @@ -432,8 +432,8 @@ Category: Fiction Of vile, incurable sores on innocent tongues,--
    My friend, you would not tell with such high zest
    To children ardent for some desperate glory,
    - The old Lie: Dulce et decorum est
    - Pro patria mori.

    + The old Lie: "} + span_italics("Dulce et decorum est
    ") + {" + "} + span_italics("Pro patria mori.") + {"
    @@ -461,9 +461,9 @@ Category: Fiction

    -

    Silence

    +

    "} + span_italics("Silence") + {"





    - By
    Samara McCollough
    + "} + span_italics("By
    Samara McCollough") + {" "}, @@ -479,7 +479,7 @@ Category: Fiction
    The door gave under Sergei's gloved fist and crashed silently to the floor, twisted around its remaining plastic hinge.

    "Whoops," Sergei's voice mumbled through the earpiece. Michael didn't need to look at the his partner to know that beneath his helmet, the Texan was cringing.

    - "S'all right." A pristine environment would make their job easier, but salvaging didn't require perfection. Michael softly shouldered past the younger man and moved into the abandoned living quarters, careful not to snag his suit. Other than the ruined door, the room was in mint condition. Depressurization had clearly been a gentle process here; air slowly leaking through seals that had been designed for hours of vacuum exposure, not years. The left side of the room was taken up by a desk, with a bunk bed situated at a comfortable height above. On the right was what appeared to a be a closet set into the wall, as well as a recessed table with some kind of lab equipment on it which Michael's salvaging experience immediately filed away as valuable.

    + "S'all right." A pristine environment would make their job easier, but salvaging didn't require perfection. Michael softly shouldered past the younger man and moved into the abandoned living quarters, careful not to snag his suit. Other than the ruined door, the room was in mint condition. Depressurization had clearly been a gentle process here; air slowly leaking through seals that had been designed for hours of vacuum exposure, not years. The left side of the room was taken up by a desk, with a bunk bed situated at a comfortable height above. On the right was what appeared to a be a closet set into the wall, as well as a recessed table with some kind of lab equipment on it which Michael's salvaging experience immediately filed away as "} + span_italics("valuable") + {".

    The cabin's walls, floors, furniture, and even bed sheets were an almost uniform gray. Any discernible difference in shade was whitewashed out by the harsh light emanating from a large rounded rectangle in the wall opposite to the door. Michael stared at the rectangle, not sure he believed what he was seeing. Behind him, Sergei swore softly.

    "That's a real window." He murmured. "Like, not a screen. I've never seen one of those on a starship before."

    "Me neither." Michael wondered what it was made of. Even from the doorway he could see that the material had to be more than half a meter thick, completely penetrating the inner and outer hull of the ship. Suddenly anxious, he checked his Geiger; the rad count was unchanged. He grunted in surprise. "Well, it's shielded, whatever it is. Let's get what we came for." @@ -509,8 +509,8 @@ Category: Fiction - My Rock
    - by Roman Pilduski

    + "} + span_bold("My Rock") + {"
    + "} + span_italics("by Roman Pilduski") + {"


    I have a rock. It is with me anywhere I go.

    I'm accustomed to my rock, its weight is always present.

    @@ -555,7 +555,7 @@ Category: Fiction


    Ghost Ship

    - by Ogawa Mimei

    + "} + span_italics("by Ogawa Mimei") + {"

    @@ -717,16 +717,16 @@ Category: Fiction To wait the coming morrow.

    The hound was still, the birds said naught,
    The fox denied he had been caught,
    - The bear cried "This is just our lot",
    + The bear cried ""} + span_italics("This is just our lot") + {"",
    And surrendered to his pain.
    But the cat stood up and shook his head
    And rising from his metal bed
    - He said: "For now, I am not dead,
    - And I will not die in vain!
    "

    + He said: ""} + span_italics("For now, I am not dead,") + {"
    + "} + span_italics("And I will not die in vain!") + {""

    He cried aloud with much disdain
    And tore about his stark domain
    - And said "These walls cannot contain
    - A force as strong as I!
    "
    + And said ""} + span_italics("These walls cannot contain") + {"
    + "} + span_italics("A force as strong as I!") + {""
    And the fox just laughed, and the birds all cried
    And the bear knotted up himself and died
    But the hare looked on as the poor cat tried
    @@ -785,9 +785,9 @@ Category: Fiction


    -

    RA
    -
    Issue 142
    +

    "} + span_giant("RA
    -
    Issue 142") + {"

    - by Jawn Mancer

    + "} + span_normal(span_italics("by Jawn Mancer")) + {"
    @@ -802,15 +802,15 @@ Category: Fiction
    RA - Issue 142

    -
    "Engie! You must be calm when waking the animals! I hope you are better at ice-skating and making nests!" was the Captain's critique when I explained where and why I had left the "most precious shovel".

    - "Do you how the cost of shovel replacement?! I'd have to take on another business loan and the bank manager is already giving me dirty looks and not talking to me!" Captain had continued to rant. If the Photoshop worm monster ate me instead of the shovel, I think Captain would be slightly less upset.

    ***

    +
    ""} + span_italics("Engie! You must be calm when waking the animals! I hope you are better at ice-skating and making nests!") + {"" was the Captain's critique when I explained where and why I had left the ""} + span_italics("most precious shovel") + {"".

    + ""} + span_italics("Do you how the cost of shovel replacement?! I'd have to take on another business loan and the bank manager is already giving me dirty looks and not talking to me!") + {"" Captain had continued to rant. If the Photoshop worm monster ate me instead of the shovel, I think Captain would be slightly less upset.

    ***

    Was that even Photoshop? It seemed slightly bigger and longer. Can't be sure of anything these days. I'm afraid that someday I'll finally succumb to botulism or some sort of other poisoning and that will be the end.


    I'll see something that's not there and fall off a cliff. Or slip into a snow crevice and slowly sink deeper and deeper... and nobody will find me or help me.

    Brrr.

    ***


    I find myself developing a severe paranoia of snow in addition to my severe hypochondria.

    After my encounter with the shovel-eating monster, I started to throw rocks ahead of me and then walk only onto the spots where the rocks didn't sink into the snow.

    You can never be sure that there isn't something horrible under there.

    - EVER. + "} + span_bold("EVER.") + {"
    @@ -827,9 +827,9 @@ Category: Fiction Thank god my Chionophobia isn't anywhere like Snippy's. He seems calm on the surface, except some times.... Eeesh.

    I recollect that one time he went completely bonkers when a large snowflake fell onto his lens. Freaking out, flailing and screaming, total full psychotic breakdown. Thank god Captain poured tea onto his mask as a distraction of sorts.

    He even ranted afterwards about living snowflakes and how they planned to shatter his lenses, cut him up and drill into his head to sample his organic juices.

    - "Watch out for the snowflakes," he later told me. "They cannot be trusted!"

    - "What are they gonna do? Pick me up and carry me away to the North Pole?" I jokingly commented.

    - "I am serious!! I'm not crazy! I know it sounds crazy, but the snowflakes were planning to kill us all!" He shouted, flapping his arms psychotically.

    ***


    + ""} + span_italics("Watch out for the snowflakes,") + {"" he later told me. ""} + span_italics("They cannot be trusted!") + {""

    + ""} + span_italics("What are they gonna do? Pick me up and carry me away to the North Pole?") + {"" I jokingly commented.

    + ""} + span_italics("I am serious!! I'm not crazy! I know it sounds crazy, but the snowflakes were planning to kill us all!") + {"" He shouted, flapping his arms psychotically.

    ***


    Snippy's mental condition worries me. I think Captain is only aggravating it with nonsensical demands.

    I hope that Snippy doesn't stab me with a trowel, while my back is turned. What if he's extremely jealous of my shovel's size and if it only takes a little snowflake to push him over the edge...

    What if he discovers, remembers who I am?

    @@ -849,23 +849,23 @@ Category: Fiction
    I'm afraid of Charles Snippy. So very afraid.

    He always keeps glancing at that little Captain's heart cup like that thing is about to grow legs and walk off or something.

    - "Jeez. It's just a cup man, relax," I told him.

    - "No" he answered, "It is something abhorrent! It's motives are unclear! I know whether not to trust it!" He began to postulate.

    ***


    + ""} + span_italics("Jeez. It's just a cup man, relax,") + {"" I told him.

    + ""} + span_italics("No") + {"" he answered, ""} + span_italics("It is something abhorrent! It's motives are unclear! I know whether not to trust it!") + {"" He began to postulate.

    ***


    I think that Snippy's mental state is slowly sliding towards Captain's. Talking to inanimate objects, inventing strange stories, shouting at nothing.

    Recently I overheard Snippy yelling:

    -
    "I'm ALIVE! WHAT? No! You did WHAT?! I'm alive, I don't care what it is you did!"


    +
    ""} + span_italics("I'm ALIVE! WHAT? No! You did WHAT?! I'm alive, I don't care what it is you did!") + {""


    I looked through a crack in the wall at him. He was definitely having another episode. From the one sided conversation and his hand poses I deduced that he was talking to his scarf.

    ***

    - "I am human! I just want to be normal!"

    + ""} + span_italics("I am human! I just want to be normal!") + {""

    Snippy shouted;

    -
    "STOP ASKING!"
    - "TOO LATE?!"
    - "WOULD YOU PLEASE LEAVE MY SPINE ALONE!"
    - "PUT MY LIVER BACK!"
    - "STOP SLIDING MY ORGANS AROUND!"
    - "WHAT?!"
    - "DON'T DO THAT!"
    - "NO, I DON'T WANT TO EAT METAL!"
    - "I DON'T CARE HOW CONVENIENT IT IS TO HAVE SEVENTEEN APPENDAGES!"

    +
    "} + span_italics("\"STOP ASKING!\"") + {"
    + "} + span_italics("\"TOO LATE?!\"") + {"
    + "} + span_italics("\"WOULD YOU PLEASE LEAVE MY SPINE ALONE!\"") + {"
    + "} + span_italics("\"PUT MY LIVER BACK!\"") + {"
    + "} + span_italics("\"STOP SLIDING MY ORGANS AROUND!\"") + {"
    + "} + span_italics("\"WHAT?!\"") + {"
    + "} + span_italics("\"DON'T DO THAT!\"") + {"
    + "} + span_italics("\"NO, I DON'T WANT TO EAT METAL!\"") + {"
    + "} + span_italics("\"I DON'T CARE HOW CONVENIENT IT IS TO HAVE SEVENTEEN APPENDAGES!\"") + {"

    I figured Snippy imagined that the scarf kept offering him some kind of super-powers, including immortality and he was rejecting them.
    @@ -882,7 +882,7 @@ Category: Fiction
    When I was young, I often wished somebody offered me superpowers.

    Sigh.

    - I'd be like "Hells yeah, I'd like to be immortal and have the strength of 10". I always hated the novels in which characters chose to be human instead of accepting greatness. This was one of the reasons I've created Project Seven- to find someone who is truly great... even if lacking the human condition. I really should have known that a super with powers of luck would turn out to be a highly confused, carefree imbecile.

    ***


    + I'd be like ""} + span_italics("Hells yeah, I'd like to be immortal and have the strength of 10") + {"". I always hated the novels in which characters chose to be human instead of accepting greatness. This was one of the reasons I've created Project Seven- to find someone who is truly great... even if lacking the human condition. I really should have known that a super with powers of luck would turn out to be a highly confused, carefree imbecile.

    ***


    Was I wrong? Maybe.

    Did I doom humanity by launching that search query?
    Perhaps.

    ***

    @@ -919,9 +919,9 @@ Category: Fiction


    -

    RA
    -
    Issue 147
    +

    "} + span_giant("RA
    -
    Issue 147") + {"

    - by Jawn Mancer

    + "} + span_normal(span_italics("by Jawn Mancer")) + {"
    @@ -938,12 +938,12 @@ Category: Fiction

    RA - ISSUE 147

    ENTRY 57893__3342 : PRIORITY 1 ADMIN : DR ALEXANDER GROMOV :

    - "I am immune to the broadcasting signal." Snippy said and it suddenly dawned on me.

    + ""} + span_italics("I am immune to the broadcasting signal.") + {"" Snippy said and it suddenly dawned on me.

    The weak broadcasting signal that was coming from the Undead... it reactivated my own neural receivers!

    It meant that I could potentially access some sort of useful information via the G-Directorate subnet drive in my backpack.

    Information that I presumed lost. Information about ANNET's new army of spam-bots, their positions, their weaknesses.

    Anything that could help me survive this mess.

    - "R:/login admin control... launch grid browser protocol... private browsing, full control," I whispered.

    + ""} + span_italics("R:/login admin control... launch grid browser protocol... private browsing, full control,") + {"" I whispered.

    The broadcasting signal responded! A little G appeared in my right eye, with signal strength signage.

    It showed one and a half signal bars. Good enough!

    Glowing letters formed in my right eye.

    @@ -973,7 +973,7 @@ Category: Fiction SUBJECT'S MENTAL NEURAL PATTERN DEEMED... UNSCANNABLE.
    SUBJECT IS CONFIRMED TO BE BRAIN-DEAD.
    ***

    - "Wait... you are... UNSCANNABLE?!" I cried out in surprise.

    + ""} + span_italics("Wait... you are... UNSCANNABLE?!") + {"" I cried out in surprise.

    What did Snippy just ramble back? He's the last one? What?

    Does he not even realize that he's theoretically brain dead?

    Has nobody ever told him that?

    diff --git a/code/modules/library/hardcode_library/fiction/battlefieldcommander.dm b/code/modules/library/hardcode_library/fiction/battlefieldcommander.dm index 6a50ac3f7a..c18b77cacb 100644 --- a/code/modules/library/hardcode_library/fiction/battlefieldcommander.dm +++ b/code/modules/library/hardcode_library/fiction/battlefieldcommander.dm @@ -30,17 +30,17 @@ CATEGORY: Fiction

    - The
    + "} + span_italics("The") + {"

    - CHRONICLES
    + "} + span_bold("CHRONICLES") + {"

    - of
    + "} + span_italics("of") + {"

    - MARGATA
    + "} + span_bold("MARGATA") + {"

    - VOLUME I + "} + span_large("VOLUME I") + {"



    - MOLLY
    HIGHLANDER
    + "} + span_huge("MOLLY
    HIGHLANDER") + {"


    @@ -201,7 +201,7 @@ CATEGORY: Fiction
    Gadroc had gold poop for a week.


    -

    Fin.

    +

    "} + span_bold("Fin.") + {"

    "}) diff --git a/code/modules/library/hardcode_library/fiction/schnayy.dm b/code/modules/library/hardcode_library/fiction/schnayy.dm index 182bed8f3c..119edecf86 100644 --- a/code/modules/library/hardcode_library/fiction/schnayy.dm +++ b/code/modules/library/hardcode_library/fiction/schnayy.dm @@ -39,7 +39,7 @@ CATEGORY: Fiction - That night at the dinner table he brought it out and set it down beside her plate. Doris stared at it, her hand to her mouth. "My God, what is it?" She looked up at him, bright-eyed. + "} + span_bold("That night at the dinner table") + {" he brought it out and set it down beside her plate. Doris stared at it, her hand to her mouth. "My God, what is it?" She looked up at him, bright-eyed.

    "Well, open it."

    @@ -383,4 +383,4 @@ CATEGORY: Fiction
    - "}) \ No newline at end of file + "}) diff --git a/code/modules/library/hardcode_library/non-fiction/PortedBooks.dm b/code/modules/library/hardcode_library/non-fiction/PortedBooks.dm index e6c640327e..18d6966d5f 100644 --- a/code/modules/library/hardcode_library/non-fiction/PortedBooks.dm +++ b/code/modules/library/hardcode_library/non-fiction/PortedBooks.dm @@ -31,7 +31,7 @@ Category: Non-Fiction by Sene of Sheraeshi.

    - One may find the problems inherent in co-habitation well illustrated through the ubiquity of light bulbs among virtually all settlements. In colonies like the NCS Northern Star, where I make my residence, the bulbs are uniform in design and output. But it is clear to see that various species require different amounts of light for proper vision -- we Teshari and our Tajaran comrades require less, while Dionaea require more. In addition, these light bulbs are low-heat, which the cold-blooded Unathi would certainly not prefer. + One may find the problems inherent in co-habitation well illustrated through the ubiquity of light bulbs among virtually all settlements. In colonies like the "} + span_italics("NCS Northern Star") + {", where I make my residence, the bulbs are uniform in design and output. But it is clear to see that various species require different amounts of light for proper vision -- we Teshari and our Tajaran comrades require less, while Dionaea require more. In addition, these light bulbs are low-heat, which the cold-blooded Unathi would certainly not prefer.

    In short-- the standard light bulbs aboard even a cosmopolitan space station in the Vir Cluster are calibrated for the preferences and biology of humans and Skrell. It is obvious that we Teshari would benefit greatly from having structures tailored to our own culture and anatomy, from hallway redesign to the very filaments of the light-bulbs.

    @@ -61,7 +61,7 @@ Category: Non-Fiction


    -

    The Viability of Corporate Government
    by Yang Simiao

    +

    The Viability of Corporate Government
    "} + span_italics("by Yang Simiao") + {"

    "}, @@ -74,7 +74,7 @@ Category: Non-Fiction
    - Corporations frequently act as the local government of space stations that they own and operate. This works fine for small stations - in fact, it might even be necessary, with the amount of support they tend to need. However, when stations get larger, and larger, and their populations soar to five and six digits, the situation becomes untenable.

    + "} + span_italics("Corporations frequently act") + {" as the local government of space stations that they own and operate. This works fine for small stations - in fact, it might even be necessary, with the amount of support they tend to need. However, when stations get larger, and larger, and their populations soar to five and six digits, the situation becomes untenable.

    Representative democracies have been the most stable form of government for a variety of reasons. Firstly, they are a system that is not subject to the whims of a single person, or even a few, but are controlled by the general population, which is not as likely to shift rapidly and disastrously, not to mention far less likely to cause strife for the people. The second and more critical reason is that people, especially educated people with access to proper communications, desire the ability to rule their own lives. They may surrender this for material goods, but once material needs are satisfied, they will seek out the ability to fulfill their own purposes.

    Corporate government denies the ability to do this. It denies even the possibility, as why would a company give up a position that is giving them such amazing profits? The situation is untenable. Already we can see in some stations a small but growing element that is dissatisfied with the situation. Phrases like "tyranny" and "corporate dictatorship" are thrown around, and not without justification. If corporations do not act to give people control over the rule of their homes, things will go badly - for the companies.
    @@ -91,7 +91,7 @@ Category: Non-Fiction
    In a fringe system, the Relan system, there is a history of these actions. Because of the poverty of the system, companies neglected to provide properly for stations housing families - systems such as power and gravity failed regularly, and even life support was not nearly as reliable as is required in Sol space. This pushed the natural tension between the people and the faraway rulers to the breaking point far more quickly. The people won, and companies were greatly neutered, losing about 85% of their operations on moons and asteroids within the system. There are now two governments within the system - the Relan System Authority, based on the system's only garden world, Taron, essentially a puppet-state of the companies, and the Free Relan Alliance, the 'spacer' government of the stations, asteroids, and moons that rebelled and won their freedom. Despite the planet being wealthier, and the spacers having far tougher conditions, standards of living are much higher for the spacers.

    - It is without a doubt that this will happen in Solar space if nothing changes. Corporations such as NanoTrasen and Grayson must, must give the people of their stations the authority to govern themselves. + It is without a doubt that this will happen in Solar space if nothing changes. Corporations such as NanoTrasen and Grayson must, "} + span_italics("must") + {" give the people of their stations the authority to govern themselves.
    @@ -120,8 +120,8 @@ Category: Non-Fiction


    -

    A Brief History Of
    The Rise And Fall Of The Persian Empire

    - by Satrap

    +

    "} + span_small("A Brief History Of") + {"
    "} + span_giant(span_bold("The Rise And Fall Of The Persian Empire")) + {"
    + "} + span_large(span_italics("by Satrap")) + {"

    @@ -148,7 +148,7 @@ Category: Non-Fiction -
    Beginnings
    +
    "} + span_bold("Beginnings") + {"
    The Persian empire first started as a vassal to the Median empire. In the year 612 B.C., the Medes had conquered much land, including the Assyrian capital of Nineveh. The Median king, Astyges, decided that he would arrange his daughter, Mandane, to the Persian king, Cambyses I. At this time, the Persians were little more than a tribe. With this marriage, he secured an alliance with the Persian people, and they soon bore a son they named Cyrus.

    Astyges had a dream, which his priests interpreted as a bad omen. They claimed that his grandson would one day overthrow him and grow an army to spread around the continent. To challenge this dream, he assigned his general, Harpagus, to kill his daughter's first child. He was ordered to take the infant and leave him to the mountainside to be eaten by the beasts, but he could not do that. Instead, he decided to give the child to an adoptive family. @@ -164,7 +164,7 @@ Category: Non-Fiction -
    Conquests
    +
    "} + span_bold("Conquests") + {"
    The young Cyrus was indeed an ambitious figure. As historical records show, the Median general Harpagus decided to betray the king and assisted Cyrus in speedily taking over the throne. By capturing the Median capital of Ecbtana, Cyrus became king of both the Persians and the Medes, uniting the people as one. The neighboring country of Lydia had threatened the Medes in the past, to which Cyrus used as a justification to invade and conquered them as well. Cyrus would then be known as Cyrus the Great, and would be praised by his people for his exploits. His actions earned him the admiration of his people and rivals alike.

    Cyrus' most famous conquest would be historical Babylon. The Babylonian empire was built along the river of the Euphrates, and was regarded as a treasure of the world. Tempted by the prize, Cyrus set his course.

    @@ -182,7 +182,7 @@ Category: Non-Fiction -
    A Superpower
    +
    "} + span_bold("A Superpower") + {"
    By conquering Babylon, Cyrus had ultimately defeated the major threats to his empire, and expanded his borders to cover the Middle East, parts of Modern-day Turkey, Greece, Egypt, and Asia. Not only this, but his people were infatuated with him and how smoothly he ran his empire. Cyrus never ceased to expand his empire, until his death.

    Nearing his sixties, Cyrus continued to lead his troops to conquer more land and wealth for his people. Traveling up north, he encountered a tribe of people known as the Massagetae. According to legend, the tribal queen, Tomyris, witnessed Cyrus kill her son in battle. Tomyris proceeded to decapitate Cyrus and douse his head in a bucket of his own blood. A beautiful painting by the 18th century French Renaissance painter Jean-Simon Berthelemy depicts this gruesome scene. @@ -198,7 +198,7 @@ Category: Non-Fiction -
    Dynasty
    +
    "} + span_bold("Dynasty") + {"
    Despite the death of their leader, the Persian empire remained a stable one. Cyrus' grandson, Darius I had immediately seized the throne. Darius wasted no time to carry on his grandfather's honor. He continued to expand the empire even further, all the way to the western hemisphere, right at the doorstep of the Greeks. Darius would be famous for his administrative prowess. He introduced the Satrap system to govern his lands. Since the territories were so vast, it was difficult for one man to effectively govern it all. Many rebellions would rise and would need to be quelled. Satraps were representatives of the king himself. They would serve as a governor of each Persian city-state. They would often enjoy the luxury of complete control of their lands if the king was away. This autocratic system of government would catch on in the form of autocracy in the western world.
    @@ -213,7 +213,7 @@ Category: Non-Fiction -
    Collapse
    +
    "} + span_bold("Collapse") + {"
    Unfortunately, the empire would not last forever. After Darius The Great passed away, his heir Xerxes had much difficulties fending off the Greeks from his empire. A series of failures both in land and in naval combat marked a decline in Persian power. Suddenly, the whole world would be shocked, as a young Macedonian king named Alexander The Great would sweep through Persia and destroy the entire empire in a single campaign. By 330 B.C., the Persian empire had collapsed into several sprawling states, never to fully see the glory of it's legacy again.

    The empire lasted approximately 250 years through several generations, and the contributions it has made to society as we know it is immeasurable. diff --git a/code/modules/library/hardcode_library/reference/PortedBooks.dm b/code/modules/library/hardcode_library/reference/PortedBooks.dm index 45344142eb..4b8e895c93 100644 --- a/code/modules/library/hardcode_library/reference/PortedBooks.dm +++ b/code/modules/library/hardcode_library/reference/PortedBooks.dm @@ -53,13 +53,13 @@ Category: Reference

    Resource Re-purposing

    - Cardboard Products
    + "} + span_bold("Cardboard Products") + {"
    Most cardboard-based products, especially any boxes you may find, can be broken down to a sheet and stacked up. From there, you can reuse it to make folders, more boxes, or anything else you may need (such as a clever disguise).

    - Glass Bulbs
    + "} + span_bold("Glass Bulbs") + {"
    Do not throw away your burnt out, broken light bulbs: collect them! These bulbs can be inserted into the nearest autolathe where their glass can be re-purposed. Broken bulbs and tubes both fit inside: just mind the sharp edges if they've been shattered.

    - Glass Shards
    + "} + span_bold("Glass Shards") + {"
    Did somebody break a window again? No matter, put on your welding goggles and you can re-purpose those glass shards right there on the spot by melting it down back to a more useful state.


    @@ -80,7 +80,7 @@ Category: Reference

    Disposals Reclamation

    - Sifting through ...stuff.
    + "} + span_bold("Sifting through ...stuff.") + {"
    You would be amazed at the amount of materials that get flushed down disposals: and nearly half of it isn't garbage. People flush things down disposals all the time just to get rid of it: bags, tools, boxes. For one reason or another, some idiot in medbay has thrown away a perfectly good lab coat again. The engineer? They've thrown down an entire toolbox: empty, because they've probably stuffed its contents into their own tool belt.

    What. A. Tool. @@ -93,7 +93,7 @@ Category: Reference


    - Searching for Treasure
    + "} + span_bold("Searching for Treasure") + {"
    Like disposals, maintenance can be a 117th wonder of the universe. Lord knows how this stuff ends up in these tunnels: Drills. Shades. Cuffs. All these things can get organized and replaced in appropriate storage areas, but keep in mind: Some of that stuff's there for a reason, such as the emergency internals, gas masks, fire extinguishers, and flashlights. These types of objects should stay there: But if you find a bottle of liquor in a crate somewhere? Hell, why not bring that on home for a good time?

    @@ -126,7 +126,7 @@ Category: Reference


    A Guide to
    FBP and Prosthetic Maintenance

    - by Yuki Matsuda

    + "} + span_bold("by Yuki Matsuda") + {"



    @@ -257,7 +257,7 @@ Category: Reference Player's Guide
    by Ray Rogers

    - Each player starts with three attributes: Vigor, Grit, and Giddyup. Vigor counts how strong, how healthy, and how in-shape a cowpoke is. Grit defines how well a cowpoke can deal with wounds, how gritty his stare is, and how much ice cold water runs through their veins. Giddyup controls how agile a cowpoke is, how well they can dodge a bullet, and how well they can sling.

    + Each player starts with three attributes: "} + span_italics("Vigor") + {", "} + span_italics("Grit") + {", and "} + span_italics("Giddyup") + {". Vigor counts how strong, how healthy, and how in-shape a cowpoke is. Grit defines how well a cowpoke can deal with wounds, how gritty his stare is, and how much ice cold water runs through their veins. Giddyup controls how agile a cowpoke is, how well they can dodge a bullet, and how well they can sling.

    When rolling an attribute, a cowpoke uses one d6. If they roll a 4 or above, they succeed. A cowpoke can roll more or less d6s depending on situational advantages/disadvantages, items they may be carrying, or abilities they may have accrued in their time moseying. As long as a cowpoke has one more success than failure, they succeed. For each additional success, up to 6, that success is enhanced or modified in some way.

    In combat, initiative is gained by pulling poker cards. Initiative is then resolved from highest to lowest suit and number. In the event of tying cards, suits are resolved in this order: Hearts, Spades, Diamonds, and then Clubs. Then the cowpoke who gets highest goes on his turn. During their turn, they can do anything they please. Whatever action they want to achieve, they describe it narratively, and then the storyteller tells them how many d6s they may roll to achieve this task.
    @@ -296,23 +296,23 @@ Category: Reference

    How to Survive a Mass Depressurization Event

      -
    • Don your internals.
    • +
    • "} + span_bold("Don your internals.") + {"

    This is the first thing you should do in a mass depressurization event. Take out the breath mask and emergency air tank from the emergency box in your backpack. Put on the mask and clip the air tank securely to your belt; this way, you will not lose it if you fall over or pass out. Set the distribution pressure on your air tank to at least 18 kPA to conserve air. This represents the minimum threshold for a human to maintain consciousness.

      -
    • Find more oxygen.
    • +
    • "} + span_bold("Find more oxygen.") + {"

    You may find that your air tank will soon run out. Do not worry. There are numerous emergency oxygen closets placed throughout the station, blue in color with 'O2' written on the front in white. You can also retrieve an oxygen tank from a fire closet. When possible, fill up your air tank in one of the large, blue O2 canisters by inserting your air tank, setting the distribution pressure to max, and turning on the release valve. Just make sure to turn the release valve off before removing your oxygen tank.

      -
    • Stay aware of your surroundings.
    • +
    • "} + span_bold("Stay aware of your surroundings.") + {"

    Keep track of the local atmosphere. What is the pressure? Is it rising or falling? A pressure of 101 kPA is optimal for human survival, but you can survive conditions as low as 80 kPA for extended periods. You can check the pressure on the air alarms placed throughout the station or with your PDA's atmospheric scanner function. Make sure to check the pressure several times in quick succession, so you can know whether it is rising or falling.

      -
    • Avoid opening fire locks.
    • +
    • "} + span_bold("Avoid opening fire locks.") + {"

    In the event of depressurization, the station's fire locks automatically drop in an attempt to contain the breach. However, this can also impede movement. If possible, find an alternate route to your destination or find a safe place to wait until the station's engineering team repairs the station. Do not open a fire lock without an engineer's express permission unless you are in immediate mortal danger. After you have opened a fire lock, make sure to close it immediately so as to prevent the breach from spreading.

      -
    • Listen to emergency personnel.
    • +
    • "} + span_bold("Listen to emergency personnel.") + {"

    Follow the instructions of engineering, medical, and security personnel, as well as the orders of the heads of staff. Engineering personnel are trained to fix these situations, and medical personnel will likely be conducting search and rescue operations. Do not impede them and follow their instructions; you are more likely to survive, and less likely to endanger your fellow crew members.

    @@ -362,10 +362,10 @@ Category: Reference
  • Avoid using force where possible.
  • Inform the warden when a criminal is wanted and set their wanted status via your security HUD if possible. Beepsky is a force to be reckoned with.
  • Respect the chain of command! The warden outranks you within the brig itself. Obey the Head of Security, but remember that the Overseer outranks him.
  • -
  • Remember your priorities: one punch is hardly something to arrest anyone over if there is a hostage situation.
  • +
  • "} + span_bold("Remember your priorities:") + {" one punch is hardly something to arrest anyone over if there is a hostage situation.
  • Security Guidelines as issued by NT
    - "} \ No newline at end of file + "} diff --git a/code/modules/library/hardcode_library/reference/Schnayy.dm b/code/modules/library/hardcode_library/reference/Schnayy.dm index 43a758bcf5..29a8e01e6b 100644 --- a/code/modules/library/hardcode_library/reference/Schnayy.dm +++ b/code/modules/library/hardcode_library/reference/Schnayy.dm @@ -26,8 +26,8 @@ CATEGORY: Reference



    Thermodynamic Reactions and Research:
    - A Guide to Phoron Studies and Safety
    - by I.R.I.S.


    + "} + span_normal("A Guide to Phoron Studies and Safety
    by I.R.I.S.") + {" +

    @@ -68,7 +68,7 @@ CATEGORY: Reference
    - Understanding and Operating Research + "} + span_bold("Understanding and Operating Research") + {"

    As a phoron researcher, you will likely operate within two separate labs. The first is your department's research and development lab -- this is where you will study the elements of existing technology and build upon it. The second is your department's toxin's lab, in which all thermodynamic phoron research takes place.

    @@ -99,13 +99,13 @@ CATEGORY: Reference
    - Thermodynamic Studies: Preparation + "} + span_bold("Thermodynamic Studies: Preparation") + {"

    While the research and development department is quite important to phoron studies, the toxins lab covers the relations between heat, energy, and phoron. Preparing and outfitting your lab is crucial to a successful study.

    If your lab is not already equipped with a gas cooling system, it is recommended you seek out one to use. With some work, these are obtainable in your research lab, but aid from your station's engineering team or using an existing one -- such as those that can be found in a medical bay - are also suitable.

    - Next, note the pipes, ports, and where they all connect. Three ports should lead directly in to your mixing chamber. Two of these will pump in to it, while the third pumps out. There should be pumps within the airlock leading to the chamber that help operate these pipes. Two additional ports should lead to a heat exchanger. One side of the exchange should run pipes directly into the chamber, while the other only connects to the exchange. The former will heat up from an active mixing chamber, while the latter will heat the gas -- normally phoron -- in the canister attached to the port. + Next, note the pipes, ports, and where they all connect. Three ports should lead directly in to your mixing chamber. Two of these will pump "} + span_italics("in") + {" to it, while the third pumps out. There should be pumps within the airlock leading to the chamber that help operate these pipes. Two additional ports should lead to a heat exchanger. One side of the exchange should run pipes directly into the chamber, while the other only connects to the exchange. The former will heat up from an active mixing chamber, while the latter will heat the gas -- normally phoron -- in the canister attached to the port.

    Finally, you should note where the vent control is on your mixing chamber, as it may be needed in emergencies, and where the air scrubbers are in your lab. It is advised to have these in operation when working.

    @@ -126,7 +126,7 @@ CATEGORY: Reference
    - Thermodynamic Studies: The Mixing Chamber + "} + span_bold("Thermodynamic Studies: The Mixing Chamber") + {"

    Before you start your mix, ensure the chamber is empty and clear. You can rid it of any contaminating gases in two ways: pumping it through the output port and into a canister, or venting the chamber of it.

    @@ -151,7 +151,7 @@ CATEGORY: Reference
    - Thermodynamic Studies: What Next? + "} + span_bold("Thermodynamic Studies: What Next?") + {"

    Here is where the guidance ends. You have your heated phoron, and you have access to a gas cooling system. You may cool your available oxygen canisters and test the interaction of temperature and pressure variation.

    diff --git a/code/modules/library/hardcode_library/religious/PortedBooks.dm b/code/modules/library/hardcode_library/religious/PortedBooks.dm index af92a062ff..adf830346e 100644 --- a/code/modules/library/hardcode_library/religious/PortedBooks.dm +++ b/code/modules/library/hardcode_library/religious/PortedBooks.dm @@ -28,8 +28,8 @@ Category: Religion


    -

    A Basic Understanding of Zoroastrianism
    - by Satrap

    +

    "} + span_giant(span_bold("A Basic Understanding of Zoroastrianism")) + {"
    + "} + span_large(span_italics("by Satrap")) + {"

    @@ -48,9 +48,9 @@ Category: Religion

    Zoroastrianism was founded by the prophet, Zoroaster. Zoroaster was a priest in an area that preached mostly polytheistic religions. He rejected these beliefs, mostly because they were used to classify people in a rigid social structure with priests controlling the ordinary people. One day, while bathing in a river, Zoroaster received a vision from God.

    - Zoroaster reportedly found the visions of a God named Ahura Mazda, or the "Wise Lord". Ahura Mazda came down to Zoroaster in the form of his Amesha Spentas, or "Divine Immortals". This experience changed his worldview, and he sought to spread his religion through the lands. Despite some struggles, he was successful in that the Persian Empire picked up his beliefs, and spread them far and wide (but did not do so forcefully). + Zoroaster reportedly found the visions of a God named Ahura Mazda, or the "} + span_italics("\"Wise Lord\"") + {". Ahura Mazda came down to Zoroaster in the form of his Amesha Spentas, or "} + span_italics("\"Divine Immortals\"") + {". This experience changed his worldview, and he sought to spread his religion through the lands. Despite some struggles, he was successful in that the Persian Empire picked up his beliefs, and spread them far and wide (but did not do so forcefully).

    - Zoroastrianism is a simple religion. There is one God, Ahura Mazda. He is omnipotent, omnipresent, and the force behind all creation. His six Amesha Spentas are representations of himself in various aspects and forms. An analogy to think of is that he is the sun, and they are all rays of the sun. Ahura Mazda is opposed by a devil named Angra Mainyu, or the "Destructive Spirit". While Ahura Mazda seeks to create life and beauty, Angra Mainyu only seeks to destroy his greatness and glory at every turn. + Zoroastrianism is a simple religion. There is one God, Ahura Mazda. He is omnipotent, omnipresent, and the force behind all creation. His six Amesha Spentas are representations of himself in various aspects and forms. An analogy to think of is that he is the sun, and they are all rays of the sun. Ahura Mazda is opposed by a devil named Angra Mainyu, or the "} + span_italics("\"Destructive Spirit\"") + {". While Ahura Mazda seeks to create life and beauty, Angra Mainyu only seeks to destroy his greatness and glory at every turn.

    @@ -193,7 +193,7 @@ Category: Religion

    The Sun Goddess of Korea

    - Let us enjoy reading this Korean mythological story of the Sun-Goddess of Korea.

    + "} + span_italics("Let us enjoy reading this Korean mythological story of the Sun-Goddess of Korea.") + {"

    Byun-soon, Dael-soon and Hae-soon were three sisters. One day a tiger came to their house, and on seeing him the girls ran out of the back door and climbed a tree.

    When the tiger began to climb the tree, the sisters prayed to the gods to save them. Their prayers were answered.

    An iron chain descended from the skies and the sisters climbed up to safety.

    @@ -288,4 +288,4 @@ Category: Religion

    - "} \ No newline at end of file + "} diff --git a/code/modules/lore_codex/legal_code_data/main.dm b/code/modules/lore_codex/legal_code_data/main.dm index 8e5ffee829..4e9cd2300f 100644 --- a/code/modules/lore_codex/legal_code_data/main.dm +++ b/code/modules/lore_codex/legal_code_data/main.dm @@ -89,7 +89,7 @@ HTML += "
    [L.definition][L.suggested_punishments][L.notes][L.mandated ? "Yes" : "No"][L.mandated ? span_red("Yes") : span_green("No")]
    [pollquestion]
    " + span_bold("[pollquestion]") + "
    " @@ -129,10 +129,10 @@ PO.optiontext = options_query.item[2] options += PO qdel(options_query) - var/output = "
    Player poll" + var/output = "
    " + span_bold("Player poll") output +="
    " output += span_bold("Question: [pollquestion]") + "
    " - output += "Poll runs from [pollstarttime] until [pollendtime]

    " + output += span_normal("Poll runs from " + span_bold("[pollstarttime]") + " until " + span_bold("[pollendtime]")) + "

    " if(!voted) //Only make this a form if we have not voted yet output += "" @@ -173,10 +173,11 @@ break qdel(voted_query) - var/output = "

    Player poll" + + var/output = "
    " + span_bold("Player poll") output +="
    " output += span_bold("Question: [pollquestion]") + "
    " - output += "Feedback gathering runs from [pollstarttime] until [pollendtime]

    " + output += span_normal("Feedback gathering runs from " + span_bold("[pollstarttime]") + " until " + span_bold("[pollendtime]")) + "

    " if(!voted) //Only make this a form if we have not voted yet output += "" @@ -184,7 +185,7 @@ output += "" output += "" - output += "Please provide feedback below. You can use any letters of the English alphabet, numbers and the symbols: . , ! ? : ; -
    " + output += span_normal("Please provide feedback below. You can use any letters of the English alphabet, numbers and the symbols: . , ! ? : ; -") + "
    " output += "" output += "

    " @@ -207,10 +208,10 @@ var/datum/db_query/voted_query = SSdbcore.NewQuery("SELECT o.text, v.rating FROM erro_poll_option o, erro_poll_vote v WHERE o.pollid = [pollid] AND v.ckey = '[usr.ckey]' AND o.id = v.optionid") voted_query.Execute() - var/output = "

    Player poll" + var/output = "
    " + span_bold("Player poll") output +="
    " output += span_bold("Question: [pollquestion]") + "
    " - output += "Poll runs from [pollstarttime] until [pollendtime]

    " + output += span_normal("Poll runs from " + span_bold("[pollstarttime]") + " until " + span_bold("[pollendtime]")) + "

    " var/voted = 0 while(voted_query.NextRow()) @@ -219,7 +220,7 @@ var/optiontext = voted_query.item[1] var/rating = voted_query.item[2] - output += "
    [optiontext] - [rating]" + output += "
    " + span_bold("[optiontext] - [rating]") + "" qdel(voted_query) if(!voted) //Only make this a form if we have not voted yet output += "" @@ -302,10 +303,10 @@ if(select_query.item[5]) multiplechoiceoptions = text2num(select_query.item[5]) - var/output = "

    Player poll" + var/output = "
    " + span_bold("Player poll") output +="
    " output += span_bold("Question: [pollquestion]") + "
    You can select up to [multiplechoiceoptions] options. If you select more, the first [multiplechoiceoptions] will be saved.
    " - output += "Poll runs from [pollstarttime] until [pollendtime]

    " + output += span_normal("Poll runs from " + span_bold("[pollstarttime]") + " until " + span_bold("[pollendtime]")) + "

    " if(!voted) //Only make this a form if we have not voted yet output += "" diff --git a/code/modules/news/new_newspaper.dm b/code/modules/news/new_newspaper.dm index 97a05086ee..0948023f88 100644 --- a/code/modules/news/new_newspaper.dm +++ b/code/modules/news/new_newspaper.dm @@ -26,11 +26,11 @@ obj/item/newspaper/attack_self(mob/user) pages = 0 switch(screen) if(0) //Cover - dat+="

    The Griffon
    " - dat+="
    [using_map.company_name]-standard newspaper, for use on [using_map.company_name]© Space Facilities

    " + dat+="
    " + span_bold(span_giganteus("The Griffon")) + "
    " + dat+="
    " + span_normal("[using_map.company_name]-standard newspaper, for use on [using_map.company_name]© Space Facilities") + "

    " if(isemptylist(news_content)) if(important_message) - dat+="Contents:
      **Important Security Announcement** \[page [pages+2]\]
    " + dat+="Contents:
      " + span_bold(span_red("**") + "Important Security Announcement" + span_red("**")) + " " + span_nornal("\[page [pages+2]\]") + "
    " else dat+=span_italics("Other than the title, the rest of the newspaper is unprinted...") else @@ -38,22 +38,22 @@ obj/item/newspaper/attack_self(mob/user) for(var/datum/feed_channel/NP in news_content) pages++ if(important_message) - dat+=span_bold("**Important Security Announcement**") + " \[page [pages+2]\]
    " + dat+=span_bold(span_red("**") + "Important Security Announcement" + span_red("**")) + " " + span_normal("\[page [pages+2]\]") + "
    " var/temp_page=0 for(var/datum/feed_channel/NP in news_content) temp_page++ - dat+=span_bold("[NP.channel_name]") + " \[page [temp_page+1]\]
    " + dat+=span_bold("[NP.channel_name]") + " " + span_normal("\[page [temp_page+1]\]") + "
    " dat+="" if(scribble_page==curr_page) - dat+="
    There is a small scribble near the end of this page... It reads: \"[scribble]\"" + dat+="
    " + span_italics("There is a small scribble near the end of this page... It reads: \"[scribble]\"") dat+= "
    " if(1) // X channel pages inbetween. for(var/datum/feed_channel/NP in news_content) pages++ //Let's get it right again. var/datum/feed_channel/C = news_content[curr_page] - dat+="[C.channel_name] \[created by: [C.author]\]

    " + dat+=span_huge(span_bold("[C.channel_name]")) + span_small(" \[created by: " + span_maroon("[C.author]") + "\]") + "

    " if(C.censored) - dat+="This channel was deemed dangerous to the general welfare of the station and therefore marked with a D-Notice. Its contents were not transferred to the newspaper at the time of printing." + dat+="This channel was deemed dangerous to the general welfare of the station and therefore marked with a " + span_bold(span_red("D-Notice")) + ". Its contents were not transferred to the newspaper at the time of printing." else if(isemptylist(C.messages)) dat+="No Feed stories stem from this channel..." @@ -66,17 +66,17 @@ obj/item/newspaper/attack_self(mob/user) if(MESSAGE.img) user << browse_rsc(MESSAGE.img, "tmp_photo[i].png") dat+="
    " - dat+="\[[MESSAGE.message_type] by [MESSAGE.author]\]

    " + dat+=span_small("\[[MESSAGE.message_type] by " + span_maroon("[MESSAGE.author]") + "\]") + "

    " dat+="" if(scribble_page==curr_page) - dat+="
    There is a small scribble near the end of this page... It reads: \"[scribble]\"" + dat+="
    " + span_italics("There is a small scribble near the end of this page... It reads: \"[scribble]\"") dat+= "

    " if(2) //Last page for(var/datum/feed_channel/NP in news_content) pages++ if(important_message!=null) - dat+="
    Wanted Issue:


    " - dat+=span_bold("Criminal name") + ": [important_message.author]
    " + dat+="
    " + span_huge(span_bold("Wanted Issue:")) + "


    " + dat+=span_bold("Criminal name") + ": " + span_maroon("[important_message.author]") + "
    " dat+=span_bold("Description") + ": [important_message.body]
    " dat+=span_bold("Photo:") + ": " if(important_message.img) @@ -87,7 +87,7 @@ obj/item/newspaper/attack_self(mob/user) else dat+=span_italics("Apart from some uninteresting Classified ads, there's nothing on this page...") if(scribble_page==curr_page) - dat+="
    There is a small scribble near the end of this page... It reads: \"[scribble]\"" + dat+="
    " + span_italics("There is a small scribble near the end of this page... It reads: \"[scribble]\"") dat+= "
    " else dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com" diff --git a/code/modules/news/newspaper.dm b/code/modules/news/newspaper.dm index 8c70f03c85..2f317bd713 100644 --- a/code/modules/news/newspaper.dm +++ b/code/modules/news/newspaper.dm @@ -26,11 +26,11 @@ pages = 0 switch(screen) if(0) //Cover - dat+="
    The Griffon
    " - dat+="
    [using_map.company_name]-standard newspaper, for use on [using_map.company_name] Space Facilities

    " + dat+="
    " + span_bold(span_giganteus("The Griffon")) + "
    " + dat+="
    " + span_normal("[using_map.company_name]-standard newspaper, for use on [using_map.company_name] Space Facilities") + "

    " if(isemptylist(news_content)) if(important_message) - dat+="Contents:
      **Important Security Announcement** \[page [pages+2]\]
    " + dat+="Contents:
      " + span_bold(span_red("**") + "Important Security Announcement" + span_red("**")) + " " + span_normal("\[page [pages+2]\]") + "
    " else dat+=span_italics("Other than the title, the rest of the newspaper is unprinted...") else @@ -38,22 +38,22 @@ for(var/datum/feed_channel/NP in news_content) pages++ if(important_message) - dat+=span_bold("**Important Security Announcement**") + " \[page [pages+2]\]
    " + dat+=span_bold(span_red("**") + "Important Security Announcement" + span_red("**")) + " " + span_normal("\[page [pages+2]\]") + "
    " var/temp_page=0 for(var/datum/feed_channel/NP in news_content) temp_page++ dat+=span_bold("[NP.channel_name]") + " " + span_normal("\[page [temp_page+1]\]") + "
    " dat+="" if(scribble_page==curr_page) - dat+="
    There is a small scribble near the end of this page... It reads: \"[scribble]\"" + dat+="
    " + span_italics("There is a small scribble near the end of this page... It reads: \"[scribble]\"") dat+= "
    " if(1) // X channel pages inbetween. for(var/datum/feed_channel/NP in news_content) pages++ //Let's get it right again. var/datum/feed_channel/C = news_content[curr_page] - dat+="[C.channel_name] \[created by: [C.author]\]

    " + dat+=span_huge(span_bold("[C.channel_name]")) + span_small(" \[created by: " + span_maroon("[C.author]") + "\]") + "

    " if(C.censored) - dat+="This channel was deemed dangerous to the general welfare of the station and therefore marked with a D-Notice. Its contents were not transferred to the newspaper at the time of printing." + dat+="This channel was deemed dangerous to the general welfare of the station and therefore marked with a " + span_bold(span_red("D-Notice")) + ". Its contents were not transferred to the newspaper at the time of printing." else if(isemptylist(C.messages)) dat+="No Feed stories stem from this channel..." @@ -67,17 +67,17 @@ if(MESSAGE.img) user << browse_rsc(MESSAGE.img, "tmp_photo[i].png") dat+="
    " - dat+="\[[MESSAGE.message_type] by [MESSAGE.author]\]

    " + dat+=span_small("\[[MESSAGE.message_type] by " + span_maroon("[MESSAGE.author]") + "\]") + "

    " dat+="" if(scribble_page==curr_page) - dat+="
    There is a small scribble near the end of this page... It reads: \"[scribble]\"" + dat+="
    " + span_italics("There is a small scribble near the end of this page... It reads: \"[scribble]\"") dat+= "

    " if(2) //Last page for(var/datum/feed_channel/NP in news_content) pages++ if(important_message!=null) - dat+="
    Wanted Issue:


    " - dat+=span_bold("Criminal name") + ": [important_message.author]
    " + dat+="
    " + span_huge(span_bold("Wanted Issue:")) + "


    " + dat+=span_bold("Criminal name") + ": " + span_maroon("[important_message.author]") + "
    " dat+=span_bold("Description") + ": [important_message.body]
    " dat+=span_bold("Photo:") + ": " if(important_message.img) @@ -88,7 +88,7 @@ else dat+=span_italics("Apart from some uninteresting Classified ads, there's nothing on this page...") if(scribble_page==curr_page) - dat+="
    There is a small scribble near the end of this page... It reads: \"[scribble]\"" + dat+="
    " + span_italics("There is a small scribble near the end of this page... It reads: \"[scribble]\"") dat+= "
    " else dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com" diff --git a/code/modules/organs/pain.dm b/code/modules/organs/pain.dm index ec486f02ef..29836cc0f6 100644 --- a/code/modules/organs/pain.dm +++ b/code/modules/organs/pain.dm @@ -15,7 +15,7 @@ return 0 message = span_danger("[message]") if(power >= 50) - message = "[message]" + message = span_large("[message]") // Anti message spam checks // If multiple limbs are injured, cooldown is ignored to print all injuries until all limbs are iterated over @@ -87,10 +87,10 @@ msg = "Your [damaged_organ.name] [burning ? "burns" : "hurts"]." if(11 to 90) flash_weak_pain() - msg = "Your [damaged_organ.name] [burning ? "burns" : "hurts"] badly!" + msg = span_normal("Your [damaged_organ.name] [burning ? "burns" : "hurts"] badly!") if(91 to 10000) flash_pain() - msg = "OH GOD! Your [damaged_organ.name] is [burning ? "on fire" : "hurting terribly"]!" + msg = span_large("OH GOD! Your [damaged_organ.name] is [burning ? "on fire" : "hurting terribly"]!") custom_pain(msg, maxdam, prob(10)) // Damage to internal organs hurts a lot. diff --git a/code/modules/overmap/ships/computers/ship.dm b/code/modules/overmap/ships/computers/ship.dm index fe63e64015..91382dd84a 100644 --- a/code/modules/overmap/ships/computers/ship.dm +++ b/code/modules/overmap/ships/computers/ship.dm @@ -34,7 +34,7 @@ somewhere on that shuttle. Subtypes of these can be then used to perform ship ov /obj/machinery/computer/ship/proc/display_reconnect_dialog(var/mob/user, var/flavor) var/datum/browser/popup = new (user, "[src]", "[src]") - popup.set_content("
    Error
    Unable to connect to [flavor].
    Reconnect
    ") + popup.set_content("
    " + span_bold(span_red("Error")) + "
    Unable to connect to [flavor].
    Reconnect
    ") popup.open() /obj/machinery/computer/ship/Topic(href, href_list) diff --git a/code/modules/paperwork/adminpaper.dm b/code/modules/paperwork/adminpaper.dm index fdd5878b73..969dfe786d 100644 --- a/code/modules/paperwork/adminpaper.dm +++ b/code/modules/paperwork/adminpaper.dm @@ -54,8 +54,7 @@ //TODO change logo based on who you're contacting. text = "

    " text += span_bold("[origin] Quantum Uplink Signed Message") + "
    " - text += "Encryption key: [originhash]
    " - text += "Challenge: [timehash]

    " + text += span_small("Encryption key: [originhash]
    Challenge: [timehash]") + "

    " header = text diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index b7d4736b16..09690a90e5 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -483,7 +483,7 @@ // check for exploits for(var/bad in paper_blacklist) if(findtext(t,bad)) - to_chat(usr, "You think to yourself, \"Hm.. this is only paper...\"") + to_chat(usr, span_blue("You think to yourself, \"Hm.. this is only paper...\"")) log_admin("PAPER: [usr] ([usr.ckey]) tried to use forbidden word in [src]: [bad].") message_admins("PAPER: [usr] ([usr.ckey]) tried to use forbidden word in [src]: [bad].") return diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index e45af812aa..3ab8c9d092 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -67,7 +67,7 @@ P = new /obj/item/paper if(Holiday == "April Fool's Day") if(prob(30)) - P.info = "HONK HONK HONK HONK HONK HONK HONK
    HOOOOOOOOOOOOOOOOOOOOOONK
    APRIL FOOLS
    " + P.info = span_red(span_bold("HONK HONK HONK HONK HONK HONK HONK
    HOOOOOOOOOOOOOOOOOOOOOONK
    APRIL FOOLS
    ")) P.rigged = 1 P.updateinfolinks() else if (response == "Carbon-Copy") diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 9704b07127..3d8cdfe77f 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -65,30 +65,30 @@ updatemodules() var/dat = "

    Generator Control System

    " - //dat += "Refresh" + //dat += span_small("Refresh") if(gravity_generator) if(gravity_generator:on) - dat += "
    Gravity Status: ON

    " + dat += span_green("
    Gravity Status: ON") + "
    " else - dat += "
    Gravity Status: OFF

    " + dat += span_red("
    Gravity Status: OFF") + "
    " dat += "
    Currently Supplying Gravitons To:
    " for(var/area/A in gravity_generator:localareas) if(A.has_gravity && gravity_generator:on) - dat += "[A]
    " + dat += "" + span_green("[A]") + "
    " else if (A.has_gravity) - dat += "[A]
    " + dat += "" + span_yellow("[A]") + "
    " else - dat += "[A]
    " + dat += "" + span_red("[A]") + "
    " dat += "
    Maintenance Functions:
    " if(gravity_generator:on) - dat += " TURN GRAVITY GENERATOR OFF. " + dat += "" + span_red(" TURN GRAVITY GENERATOR OFF. ") + "" else - dat += " TURN GRAVITY GENERATOR ON. " + dat += "" + span_green(" TURN GRAVITY GENERATOR ON. ") + "" else dat += "No local gravity generator detected!" diff --git a/code/modules/power/gravitygenerator_vr.dm b/code/modules/power/gravitygenerator_vr.dm index b3c17d3d95..b051ccfb9b 100644 --- a/code/modules/power/gravitygenerator_vr.dm +++ b/code/modules/power/gravitygenerator_vr.dm @@ -268,7 +268,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) switch(action) if("gentoggle") breaker = !breaker - investigate_log("was toggled [breaker ? "ON" : "OFF"] by [key_name(ui.user)].", "gravity") + investigate_log("was toggled [breaker ? span_green("ON") : span_red("OFF")] by [key_name(ui.user)].", "gravity") set_power() return TOPIC_REFRESH diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 00e97216dc..826938925d 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -38,7 +38,7 @@ var/global/list/rad_collectors = list() if(P) if(P.air_contents.gas[GAS_PHORON] == 0) - investigate_log("out of fuel.","singulo") + investigate_log(span_red("out of fuel") + ".","singulo") eject() else P.air_contents.adjust_gas(GAS_PHORON, -0.001*drainratio) @@ -51,7 +51,7 @@ var/global/list/rad_collectors = list() toggle_power() user.visible_message("[user.name] turns the [src.name] [active? "on":"off"].", \ "You turn the [src.name] [active? "on":"off"].") - investigate_log("turned [active?"on":"off"] by [user.key]. [P?"Fuel: [round(P.air_contents.gas[GAS_PHORON]/0.29)]%":"It is empty"].","singulo") + investigate_log("turned [active?span_green("on"): span_red("off")] by [user.key]. [P?"Fuel: [round(P.air_contents.gas[GAS_PHORON]/0.29)]%":span_red("It is empty")].","singulo") return else to_chat(user, span_red("The controls are locked!")) diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index d7b27608da..a3737dd573 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -58,7 +58,7 @@ /obj/machinery/power/emitter/Destroy() message_admins("Emitter deleted at ([x],[y],[z] - JMP)",0,1) log_game("EMITTER([x],[y],[z]) Destroyed/deleted.") - investigate_log("deleted at ([x],[y],[z])","singulo") + investigate_log(span_red("deleted") + " at ([x],[y],[z])","singulo") ..() /obj/machinery/power/emitter/update_icon() @@ -82,7 +82,7 @@ to_chat(user, "You turn off [src].") message_admins("Emitter turned off by [key_name(user, user.client)](?) in ([x],[y],[z] - JMP)",0,1) log_game("EMITTER([x],[y],[z]) OFF by [key_name(user)]") - investigate_log("turned off by [user.key]","singulo") + investigate_log("turned " + span_red("off") + " by [user.key]","singulo") else src.active = 1 to_chat(user, "You turn on [src].") @@ -90,7 +90,7 @@ src.fire_delay = get_initial_fire_delay() message_admins("Emitter turned on by [key_name(user, user.client)](?) in ([x],[y],[z] - JMP)",0,1) log_game("EMITTER([x],[y],[z]) ON by [key_name(user)]") - investigate_log("turned on by [user.key]","singulo") + investigate_log("turned " + span_green("on") + " by [user.key]","singulo") update_icon() else to_chat(user, span_warning("The controls are locked!")) @@ -122,13 +122,13 @@ powered = 1 update_icon() log_game("EMITTER([x],[y],[z]) Regained power and is ON.") - investigate_log("regained power and turned on","singulo") + investigate_log("regained power and turned " + span_green("on"),"singulo") else if(powered) powered = 0 update_icon() log_game("EMITTER([x],[y],[z]) Lost power and was ON.") - investigate_log("lost power and turned off","singulo") + investigate_log("lost power and turned" + span_red("off"),"singulo") return src.last_shot = world.time diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index b4419043c3..b6dd4121b3 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -104,7 +104,7 @@ field_generator power level display "You hear heavy droning") turn_on() log_game("FIELDGEN([x],[y],[z]) Activated by [key_name(user)]") - investigate_log("activated by [user.key].","singulo") + investigate_log(span_green("activated") + " by [user.key].","singulo") src.add_fingerprint(user) else @@ -230,7 +230,7 @@ field_generator power level display M.show_message(span_red("\The [src] shuts down!")) turn_off() log_game("FIELDGEN([x],[y],[z]) Lost power and was ON.") - investigate_log("ran out of power and deactivated","singulo") + investigate_log("ran out of power and " + span_red("deactivated"),"singulo") src.power = 0 return 0 @@ -354,6 +354,6 @@ field_generator power level display temp = 0 admin_chat_message(message = "SINGUL/TESLOOSE!", color = "#FF2222") //VOREStation Add message_admins("A singulo exists and a containment field has failed.",1) - investigate_log("has failed whilst a singulo exists.","singulo") + investigate_log("has " + span_red("failed") + " whilst a singulo exists.","singulo") log_game("FIELDGEN([x],[y],[z]) Containment failed while singulo/tesla exists.") O.last_warning = world.time diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm index e2773f0396..5b1ff3eae1 100644 --- a/code/modules/power/singularity/particle_accelerator/particle.dm +++ b/code/modules/power/singularity/particle_accelerator/particle.dm @@ -79,7 +79,7 @@ var/radiation = (energy*2) M.apply_effect((radiation*3),IRRADIATE,0) M.updatehealth() - //to_chat(M, "You feel odd.") + //to_chat(M, span_warning("You feel odd.")) /obj/effect/accelerated_particle/proc/move(var/lag) diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index ccbe26b596..1070982e65 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -137,7 +137,7 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin if(master?.active) master.toggle_power() log_game("PACCEL([x],[y],[z]) Was moved while active and turned off.") - investigate_log("was moved whilst active; it powered down.","singulo") + investigate_log("was moved whilst active; it " + span_red("powered down") + ".","singulo") /obj/structure/particle_accelerator/ex_act(severity) switch(severity) diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index 944915f209..eb2a98de5c 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -90,7 +90,7 @@ else message_admins("PA Control Computer increased to [strength] by [key_name(user, user.client)][ADMIN_QUE(user)] in [ADMIN_COORDJMP(src)]",0,1) log_game("PACCEL([x],[y],[z]) [key_name(user)] increased to [strength]") - investigate_log("increased to [strength] by [user.key]","singulo") + investigate_log("increased to " + span_red("[strength]") + " by [user.key]","singulo") strength_change() /obj/machinery/particle_accelerator/control_box/proc/remove_strength(mob/user, var/s) @@ -101,7 +101,7 @@ else message_admins("PA Control Computer decreased to [strength] by [key_name(user, user.client)][ADMIN_QUE(user)] in [ADMIN_COORDJMP(src)]",0,1) log_game("PACCEL([x],[y],[z]) [key_name(user)] decreased to [strength]") - investigate_log("decreased to [strength] by [user.key]","singulo") + investigate_log("decreased to " + span_green("[strength]") + " by [user.key]","singulo") strength_change() /obj/machinery/particle_accelerator/control_box/power_change() @@ -183,7 +183,7 @@ /obj/machinery/particle_accelerator/control_box/proc/toggle_power(mob/user) active = !active - investigate_log("turned [active?"ON":"OFF"] by [user ? user.key : "outside forces"]","singulo") + investigate_log("turned [active? span_red("ON") : span_green("OFF")] by [user ? user.key : "outside forces"]","singulo") message_admins("PA Control Computer turned [active ?"ON":"OFF"] by [user ? key_name(user, user.client) : "outside forces"][ADMIN_QUE(user)] in [ADMIN_COORDJMP(src)]",0,1) log_game("PACCEL([x],[y],[z]) [user ? key_name(user, user.client) : "outside forces"] turned [active?"ON":"OFF"].") if(active) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 91da067db6..a65d81e57f 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -97,7 +97,7 @@ GLOBAL_LIST_BOILERPLATE(all_singularities, /obj/singularity) if (!count) message_admins("A singulo has been created without containment fields active ([x], [y], [z] - JMP).") - investigate_log("was created. [count ? "" : "No containment fields were active."]", I_SINGULO) + investigate_log("was created. [count ? "" : span_red("No containment fields were active.")]", I_SINGULO) /obj/singularity/proc/dissipate() if (!dissipate) diff --git a/code/modules/projectiles/guns/projectile/dartgun.dm b/code/modules/projectiles/guns/projectile/dartgun.dm index f4117ba5b5..dec81d5941 100644 --- a/code/modules/projectiles/guns/projectile/dartgun.dm +++ b/code/modules/projectiles/guns/projectile/dartgun.dm @@ -144,9 +144,9 @@ for(var/datum/reagent/R in B.reagents.reagent_list) dat += "
    [R.volume] units of [R.name], " if (check_beaker_mixing(B)) - dat += text("Mixing ") + dat += "" + span_green("Mixing") + " " else - dat += text("Not mixing ") + dat += "" + span_red("Not mixing") + " " else dat += "nothing." dat += " \[Eject\]
    " @@ -158,7 +158,7 @@ if(ammo_magazine.stored_ammo && ammo_magazine.stored_ammo.len) dat += "The dart cartridge has [ammo_magazine.stored_ammo.len] shots remaining." else - dat += "The dart cartridge is empty!" + dat += span_red("The dart cartridge is empty!") dat += " \[Eject\]" user << browse("[dat]", "window=dartgun") diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index ae986ca309..b6c4e00380 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -164,7 +164,7 @@ V.show_message(span_red("[M] writhes in pain as [TM.his] vacuoles boil."), 3, span_red("You hear the crunching of leaves."), 2) if(prob(35)) // for (var/mob/V in viewers(src)) //Public messages commented out to prevent possible metaish genetics experimentation and stuff. - Cheridan - // V.show_message("[M] is mutated by the radiation beam.", 3, " You hear the snapping of twigs.", 2) + // V.show_message(span_red("[M] is mutated by the radiation beam."), 3, span_red(" You hear the snapping of twigs."), 2) if(prob(80)) randmutb(M) domutcheck(M,null) @@ -176,7 +176,7 @@ M.adjustFireLoss(rand(5,15)) M.show_message(span_red("The radiation beam singes you!")) // for (var/mob/V in viewers(src)) - // V.show_message("[M] is singed by the radiation beam.", 3, " You hear the crackle of burning leaves.", 2) + // V.show_message(span_red("[M] is singed by the radiation beam."), 3, span_red(" You hear the crackle of burning leaves."), 2) else if(istype(target, /mob/living/carbon/)) // for (var/mob/V in viewers(src)) // V.show_message("The radiation beam dissipates harmlessly through [M]", 3) diff --git a/code/modules/reagents/reagents/medicine.dm b/code/modules/reagents/reagents/medicine.dm index f32f4b94bd..4ea4876a72 100644 --- a/code/modules/reagents/reagents/medicine.dm +++ b/code/modules/reagents/reagents/medicine.dm @@ -735,7 +735,7 @@ for(var/obj/item/organ/external/O in H.bad_external_organs) if(O.status & ORGAN_BROKEN) O.mend_fracture() //Only works if the bone won't rebreak, as usual - H.custom_pain(span_danger("You feel a terrible agony tear through your [O.name]!"),60,TRUE) + H.custom_pain(span_danger(span_normal(span_bold("You feel a terrible agony tear through your [O.name]!"))),60,TRUE) H.AdjustWeakened(10) //Bones being regrown will knock you over H.adjustHalLoss(60) H.AdjustStunned(1) //Bones being regrown will knock you over diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 126b42c9d0..36f1320c43 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -311,22 +311,22 @@ // user.unset_machine() // return - // var/dat = "Waste Disposal UnitWaste Disposal Unit
    " + // var/dat = "Waste Disposal Unit" + span_bold("Waste Disposal Unit") + "
    " // if(!ai) // AI can't pull flush handle // if(flush) - // dat += "Disposal handle: Disengage Engaged" + // dat += "Disposal handle: Disengage " + span_bold("Engaged") // else - // dat += "Disposal handle: Disengaged Engage" + // dat += "Disposal handle: " + span_bold("Disengaged") + " Engage" // dat += "

    Eject contents
    " // if(mode <= 0) - // dat += "Pump: Off On
    " + // dat += "Pump: " + span_bold("Off") + " On
    " // else if(mode == 1) - // dat += "Pump: Off On (pressurizing)
    " + // dat += "Pump: Off " + span_bold("On") + " (pressurizing)
    " // else - // dat += "Pump: Off On (idle)
    " + // dat += "Pump: Off " + span_bold("On") + " (idle)
    " // var/per = 100* air_contents.return_pressure() / (SEND_PRESSURE) @@ -341,11 +341,11 @@ // /obj/machinery/disposal/Topic(href, href_list) // if(usr.loc == src) -// to_chat(usr, "You cannot reach the controls from inside.") +// to_chat(usr, span_red("You cannot reach the controls from inside.")) // return // if(mode==-1 && !href_list["eject"]) // only allow ejecting if mode is -1 -// to_chat(usr, "The disposal units power is disabled.") +// to_chat(usr, span_red("The disposal units power is disabled.")) // return // if(..()) // return diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index c63025638a..50201cb460 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -130,7 +130,7 @@ var/global/list/obj/machinery/message_server/message_servers = list() var/result for (var/token in spamfilter) if (findtextEx(message,token)) - message = "[message]" //Rejected messages will be indicated by red color. + message = span_red("[message]") //Rejected messages will be indicated by red color. result = token //Token caused rejection (if there are multiple, last will be chosen>. pda_msgs += new/datum/data_pda_msg(recipient,sender,message) return result @@ -165,7 +165,7 @@ var/global/list/obj/machinery/message_server/message_servers = list() /obj/machinery/message_server/attack_hand(user as mob) -// to_chat(user, "There seem to be some parts missing from this server. They should arrive on the station in a few days, give or take a few CentCom delays.") +// to_chat(user, span_blue("There seem to be some parts missing from this server. They should arrive on the station in a few days, give or take a few CentCom delays.")) to_chat(user, span_filter_notice("You toggle PDA message passing from [active ? "On" : "Off"] to [active ? "Off" : "On"].")) active = !active update_icon() diff --git a/code/modules/rogueminer_vr/zone_console.dm b/code/modules/rogueminer_vr/zone_console.dm index 72991985ff..c8b5644ed3 100644 --- a/code/modules/rogueminer_vr/zone_console.dm +++ b/code/modules/rogueminer_vr/zone_console.dm @@ -163,7 +163,7 @@ When a new zone has been scanned, your station's shuttle destination will be updated to direct it to the newly discovered area automatically.
    You can then travel to the new area to mine in that location.

    - This technology produced under license from Thinktronic Systems, LTD."} +
    "} + span_small("This technology produced under license from Thinktronic Systems, LTD.") #undef OUTPOST_Z diff --git a/code/modules/scripting/IDE.dm b/code/modules/scripting/IDE.dm index ccf0a29209..b46c2094d2 100644 --- a/code/modules/scripting/IDE.dm +++ b/code/modules/scripting/IDE.dm @@ -16,13 +16,13 @@ src << output(null, "tcserror") // clear the errors else src << output(null, "tcserror") - src << output("Failed to save: Unable to locate server machine. (Back up your code before exiting the window!)", "tcserror") + src << output(span_red("Failed to save: Unable to locate server machine. (Back up your code before exiting the window!)"), "tcserror") else src << output(null, "tcserror") - src << output("Failed to save: Unable to locate machine. (Back up your code before exiting the window!)", "tcserror") + src << output(span_red("Failed to save: Unable to locate machine. (Back up your code before exiting the window!)"), "tcserror") else src << output(null, "tcserror") - src << output("Failed to save: Unable to locate machine. (Back up your code before exiting the window!)", "tcserror") + src << output(span_red("Failed to save: Unable to locate machine. (Back up your code before exiting the window!)"), "tcserror") /client/verb/tcscompile() @@ -44,7 +44,7 @@ if(compileerrors.len) src << output(span_bold("Compile Errors"), "tcserror") for(var/scriptError/e in compileerrors) - src << output("\t>[e.message]", "tcserror") + src << output(span_red("\t>[e.message]"), "tcserror") src << output("([compileerrors.len] errors)", "tcserror") // Output compile errors to all other people viewing the code too @@ -53,28 +53,28 @@ M << output(null, "tcserror") M << output(span_bold("Compile Errors"), "tcserror") for(var/scriptError/e in compileerrors) - M << output("\t>[e.message]", "tcserror") + M << output(span_red("\t>[e.message]"), "tcserror") M << output("([compileerrors.len] errors)", "tcserror") else - src << output("TCS compilation successful!", "tcserror") + src << output(span_blue("TCS compilation successful!"), "tcserror") src << output("(0 errors)", "tcserror") for(var/mob/M in Machine.viewingcode) if(M.client) - M << output("TCS compilation successful!", "tcserror") + M << output(span_blue("TCS compilation successful!"), "tcserror") M << output("(0 errors)", "tcserror") else src << output(null, "tcserror") - src << output("Failed to compile: Unable to locate server machine. (Back up your code before exiting the window!)", "tcserror") + src << output(span_red("Failed to compile: Unable to locate server machine. (Back up your code before exiting the window!)"), "tcserror") else src << output(null, "tcserror") - src << output("Failed to compile: Unable to locate machine. (Back up your code before exiting the window!)", "tcserror") + src << output(span_red("Failed to compile: Unable to locate machine. (Back up your code before exiting the window!)"), "tcserror") else src << output(null, "tcserror") - src << output("Failed to compile: Unable to locate machine. (Back up your code before exiting the window!)", "tcserror") + src << output(span_red("Failed to compile: Unable to locate machine. (Back up your code before exiting the window!)"), "tcserror") /client/verb/tcsrun() set hidden = 1 @@ -95,7 +95,7 @@ if(compileerrors.len) src << output(span_bold("Compile Errors"), "tcserror") for(var/scriptError/e in compileerrors) - src << output("\t>[e.message]", "tcserror") + src << output(span_red("\t>[e.message]"), "tcserror") src << output("([compileerrors.len] errors)", "tcserror") // Output compile errors to all other people viewing the code too @@ -104,17 +104,17 @@ M << output(null, "tcserror") M << output(span_bold("Compile Errors"), "tcserror") for(var/scriptError/e in compileerrors) - M << output("\t>[e.message]", "tcserror") + M << output(span_red("\t>[e.message]"), "tcserror") M << output("([compileerrors.len] errors)", "tcserror") else // Finally, we run the code! - src << output("TCS compilation successful! Code executed.", "tcserror") + src << output(span_blue("TCS compilation successful! Code executed."), "tcserror") src << output("(0 errors)", "tcserror") for(var/mob/M in Machine.viewingcode) if(M.client) - M << output("TCS compilation successful!", "tcserror") + M << output(span_blue("TCS compilation successful!"), "tcserror") M << output("(0 errors)", "tcserror") var/datum/signal/signal = new() @@ -133,13 +133,13 @@ else src << output(null, "tcserror") - src << output("Failed to run: Unable to locate server machine. (Back up your code before exiting the window!)", "tcserror") + src << output(span_red("Failed to run: Unable to locate server machine. (Back up your code before exiting the window!)"), "tcserror") else src << output(null, "tcserror") - src << output("Failed to run: Unable to locate machine. (Back up your code before exiting the window!)", "tcserror") + src << output(span_red("Failed to run: Unable to locate machine. (Back up your code before exiting the window!)"), "tcserror") else src << output(null, "tcserror") - src << output("Failed to run: Unable to locate machine. (Back up your code before exiting the window!)", "tcserror") + src << output(span_red("Failed to run: Unable to locate machine. (Back up your code before exiting the window!)"), "tcserror") /client/verb/exittcs() @@ -174,13 +174,13 @@ src << output(null, "tcserror") // clear the errors else src << output(null, "tcserror") - src << output("Failed to revert: Unable to locate server machine.", "tcserror") + src << output(span_red("Failed to revert: Unable to locate server machine."), "tcserror") else src << output(null, "tcserror") - src << output("Failed to revert: Unable to locate machine.", "tcserror") + src << output(span_red("Failed to revert: Unable to locate machine."), "tcserror") else src << output(null, "tcserror") - src << output("Failed to revert: Unable to locate machine.", "tcserror") + src << output(span_red("Failed to revert: Unable to locate machine."), "tcserror") /client/verb/tcsclearmem() @@ -196,16 +196,16 @@ Server.memory = list() // clear the memory // Show results src << output(null, "tcserror") - src << output("Server memory cleared!", "tcserror") + src << output(span_blue("Server memory cleared!"), "tcserror") for(var/mob/M in Machine.viewingcode) if(M.client) - M << output("Server memory cleared!", "tcserror") + M << output(span_blue("Server memory cleared!"), "tcserror") else src << output(null, "tcserror") - src << output("Failed to clear memory: Unable to locate server machine.", "tcserror") + src << output(span_red("Failed to clear memory: Unable to locate server machine."), "tcserror") else src << output(null, "tcserror") - src << output("Failed to clear memory: Unable to locate machine.", "tcserror") + src << output(span_red("Failed to clear memory: Unable to locate machine."), "tcserror") else src << output(null, "tcserror") - src << output("Failed to clear memory: Unable to locate machine.", "tcserror") + src << output(span_red("Failed to clear memory: Unable to locate machine."), "tcserror") diff --git a/code/modules/spells/spellbook.dm b/code/modules/spells/spellbook.dm index 28c387b6ff..6f6cfe809b 100644 --- a/code/modules/spells/spellbook.dm +++ b/code/modules/spells/spellbook.dm @@ -405,7 +405,7 @@ /obj/item/spellbook/oneuse/horsemask/recoil(mob/living/carbon/user as mob) if(ishuman(user)) - to_chat(user, "HOR-SIE HAS RISEN") + to_chat(user, span_narsie(span_bolddanger("HOR-SIE HAS RISEN"))) var/obj/item/clothing/mask/horsehead/magichead = new /obj/item/clothing/mask/horsehead magichead.canremove = FALSE //curses! magichead.flags_inv = null //so you can still see their face diff --git a/code/modules/tgui/modules/admin/player_notes.dm b/code/modules/tgui/modules/admin/player_notes.dm index d7e9ccb90e..5730eb56d6 100644 --- a/code/modules/tgui/modules/admin/player_notes.dm +++ b/code/modules/tgui/modules/admin/player_notes.dm @@ -279,7 +279,7 @@ if(!I.rank) I.rank = "N/A" update_file = 1 - dat += "[I.content] by [I.author] ([I.rank]) on [I.timestamp] " + dat += span_green("[I.content]") + " " + span_italics("by [I.author] ([I.rank])") + " on " + span_italics(span_blue("[I.timestamp]")) + " " if(I.author == usr.key || I.author == "Adminbot" || ishost(usr)) dat += "Remove" dat += "

    " diff --git a/code/modules/vore/fluffstuff/custom_permits_vr.dm b/code/modules/vore/fluffstuff/custom_permits_vr.dm index e70b272cf6..f5eb78a1ff 100644 --- a/code/modules/vore/fluffstuff/custom_permits_vr.dm +++ b/code/modules/vore/fluffstuff/custom_permits_vr.dm @@ -10,9 +10,9 @@ // BEGIN - PROTOTYPE /obj/item/clothing/accessory/permit/gun/fluff name = "Sample Permit" - desc = {"There is a bright red SAMPLE PERMIT stamped across the stock photo displayed on the card. Obviously this is only an example to educate security. - NAME: First Last | RACE: Human | HOMEWORLD: Moon (if applicable), Planet, System - DOB: DD/Mon/YYYY | HEIGHT: XXcm | SEX: Female + desc = {"There is a bright red "} + span_bold(span_red("SAMPLE PERMIT")) + {" stamped across the stock photo displayed on the card. Obviously this is only an example to educate security. + "} + span_bold("NAME:") + {" First Last | "} + span_bold("RACE:") + {" Human | "} + span_bold("HOMEWORLD:") + {" Moon (if applicable), Planet, System + "} + span_bold("DOB:") + {" DD/Mon/YYYY | "} + span_bold("HEIGHT:") + {" XXcm | "} + span_bold("SEX:") + {" Female The individual named above is licensed by the Nanotrasen Department of Civil Protection to ______. This license expires on DD/Month/YYYY and must be renewed by CentCom prior to this date."} @@ -26,8 +26,8 @@ /obj/item/clothing/accessory/permit/gun/fluff/charactername name = "Name's Thing Permit" desc = {" - NAME: Firstname Lastname | RACE: Human | HOMEWORLD: Earth, Sol - DOB: DD/Mon/YYYY | HEIGHT: XXXcm | SEX: X + "} + span_bold("NAME:") + {" Firstname Lastname | "} + span_bold("RACE:") + {" Human | "} + span_bold("HOMEWORLD:") + {" Earth, Sol + "} + span_bold("DOB:") + {" DD/Mon/YYYY | "} + span_bold("HEIGHT:") + {" XXXcm | "} + span_bold("SEX:") + {" X The individual named above is licensed by the Nanotrasen Department of Civil Protection to openly carry XYZ. CONDITIONS. This license expires on DD/Mon/YYYY and must be renewed by CentCom prior to this date."} diff --git a/code/modules/xenobio2/tools/xeno_trait_scanner.dm b/code/modules/xenobio2/tools/xeno_trait_scanner.dm index a8e325b732..2033e73df7 100644 --- a/code/modules/xenobio2/tools/xeno_trait_scanner.dm +++ b/code/modules/xenobio2/tools/xeno_trait_scanner.dm @@ -75,7 +75,7 @@ dat += "

    General Data

    " - dat += "Health: [trait_info.get_trait(TRAIT_XENO_HEALTH)]" + dat += "" + span_bold("Health: ") + "[trait_info.get_trait(TRAIT_XENO_HEALTH)]" if(prod_reagents && prod_reagents.reagent_list && prod_reagents.reagent_list.len) dat += "

    Reagent Data

    " diff --git a/interface/interface.dm b/interface/interface.dm index ecfef3e27b..cfd0f8851c 100644 --- a/interface/interface.dm +++ b/interface/interface.dm @@ -97,15 +97,16 @@ set name = "hotkeys-help" set category = "OOC.Resources" - var/admin = {" + var/admin = {" Admin: \tF5 = Aghost (admin-ghost) \tF6 = player-panel-new \tF7 = admin-pm \tF8 = Invisimin -"} +"} + admin = span_purple(admin) - var/hotkey_mode = {" + var/hotkey_mode = {" Hotkey-Mode: (hotkey-mode must be on) \tTAB = toggle hotkey-mode \ta = left @@ -130,9 +131,10 @@ Hotkey-Mode: (hotkey-mode must be on) \t4 = harm-intent \tCtrl+Click = pull \tShift+Click = examine -"} +"} + hotkey_mode = span_purple(hotkey_mode) - var/other = {" + var/other = {" Any-Mode: (hotkey doesn't need to be on) \tCtrl+a = left \tCtrl+s = down @@ -161,9 +163,10 @@ Any-Mode: (hotkey doesn't need to be on) \tPGUP = swap-hand \tPGDN = activate held object \tEND = throw -"} +"} + other = span_purple(other) - var/robot_hotkey_mode = {" + var/robot_hotkey_mode = {" Hotkey-Mode: (hotkey-mode must be on) \tTAB = toggle hotkey-mode \ta = left @@ -183,9 +186,10 @@ Hotkey-Mode: (hotkey-mode must be on) \t5 = emote \tCtrl+Click = pull \tShift+Click = examine -"} +"} + robot_hotkey_mode = span_purple(robot_hotkey_mode) - var/robot_other = {" + var/robot_other = {" Any-Mode: (hotkey doesn't need to be on) \tCtrl+a = left \tCtrl+s = down @@ -208,7 +212,8 @@ Any-Mode: (hotkey doesn't need to be on) \tINS = toggle intents \tPGUP = cycle active modules \tPGDN = activate held object -"} +"} + robot_other = span_purple(robot_other) if(isrobot(src.mob)) to_chat(src,robot_hotkey_mode) diff --git a/maps/gateway_vr/variable/arynthilake.dm b/maps/gateway_vr/variable/arynthilake.dm index 9a4a171a90..4eafd02846 100644 --- a/maps/gateway_vr/variable/arynthilake.dm +++ b/maps/gateway_vr/variable/arynthilake.dm @@ -85,4 +85,4 @@ /obj/item/paper/gateway/arynthilake name = "Maintenance Tunnel Notes" - info = "Please be advised

    Beyond this point the underground maintenance tunnels are dangerous. Monsters have taken to making their nests in the tunnels. As such we have installed an automatic defense system.

    The turrets and supply caches in the tunnels are powered by this facility. Should there be undesired creatures or personnel in the tunnels, the turrets exist to keep them clear.

    The turret control system is situated within the local administration building. It is advised that you never enter the tunnels outside of regulatly scheduled maintenance windows, and never without secturity escort.

    If you should need to enter the tunnels outside of regularly scheduled maintenance windows, it is advised that you contact the administration building to disable the turrets, and when you are done, contact them again to re-enable them.

    Your safety is important to us. Should you end up within the tunnels when dangerous entities are present, it is advised to seek out the supply caches scattered throughout. Survival equipment can be obtained from within.

    " \ No newline at end of file + info = span_narsie(span_bold("Please be advised")) + "

    Beyond this point the underground maintenance tunnels are dangerous. Monsters have taken to making their nests in the tunnels. As such we have installed an automatic defense system.

    The turrets and supply caches in the tunnels are powered by this facility. Should there be undesired creatures or personnel in the tunnels, the turrets exist to keep them clear.

    The turret control system is situated within the local administration building. It is advised that you never enter the tunnels outside of regulatly scheduled maintenance windows, and never without secturity escort.

    If you should need to enter the tunnels outside of regularly scheduled maintenance windows, it is advised that you contact the administration building to disable the turrets, and when you are done, contact them again to re-enable them.

    Your safety is important to us. Should you end up within the tunnels when dangerous entities are present, it is advised to seek out the supply caches scattered throughout. Survival equipment can be obtained from within.

    " diff --git a/maps/gateway_vr/wildwest.dm b/maps/gateway_vr/wildwest.dm index 5a360cceb0..1cacd2ecd6 100644 --- a/maps/gateway_vr/wildwest.dm +++ b/maps/gateway_vr/wildwest.dm @@ -125,7 +125,7 @@ if(ishuman(M) || istype(M, /mob/living/carbon/monkey)) for(var/mob/O in viewers(world.view, src.loc)) - to_chat(O, "[M] triggered the [icon2html(src)] [src]") + to_chat(O, span_red("[M] triggered the [icon2html(src)] [src]")) triggered = 1 call(src,triggerproc)(M) diff --git a/maps/offmap_vr/om_ships/itglight.dm b/maps/offmap_vr/om_ships/itglight.dm index 0c158a33cf..80fd0beebf 100644 --- a/maps/offmap_vr/om_ships/itglight.dm +++ b/maps/offmap_vr/om_ships/itglight.dm @@ -138,7 +138,7 @@ /obj/item/paper/Dauntless name = "Notes about Dauntless" - info = {"Welcome to the Ironcrest Transport Group

    + info = span_small("Welcome to the Ironcrest Transport Group") + {"

    ITG Dauntless

    Welcome to the Dauntless, there are a few things you should know.

    WRITE DOWN THE DOCKING CODES