diff --git a/code/__DEFINES/chat.dm b/code/__DEFINES/chat.dm
index ed0c5d0fd315..4c66ba43ada7 100644
--- a/code/__DEFINES/chat.dm
+++ b/code/__DEFINES/chat.dm
@@ -19,3 +19,6 @@
#define MESSAGE_TYPE_DEBUG "debug"
#define MESSAGE_TYPE_MENTORPM "mentorpm"
#define MESSAGE_TYPE_DONATOR "donator"
+
+/// Adds a generic box around whatever message you're sending in chat. Really makes things stand out.
+#define examine_block(str) ("
" + str + "
")
diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index 8b58d573000b..32df6f5f0029 100755
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -467,7 +467,7 @@ SUBSYSTEM_DEF(ticker)
m = pick(memetips)
if(m)
- to_chat(world, span_purple("Tip of the round: [html_encode(m)]"))
+ to_chat(world, span_purple(examine_block("Tip of the round: [html_encode(m)]")))
/datum/controller/subsystem/ticker/proc/check_queue()
if(!queued_players.len)
diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm
index 1281d6813b0c..74d18d75cb18 100644
--- a/code/datums/components/mood.dm
+++ b/code/datums/components/mood.dm
@@ -35,7 +35,7 @@
return ..()
/datum/component/mood/proc/print_mood(mob/user)
- var/msg = "*---------*\nYour current mood\n"
+ var/msg = "[span_info("Your Current Mood:")]\n"
msg += span_notice("My mental status: ") //Long term
switch(sanity)
if(SANITY_GREAT to INFINITY)
@@ -79,7 +79,7 @@
msg += event.description
else
msg += "I don't have much of a reaction to anything right now.\n"
- to_chat(user || parent, msg)
+ to_chat(user || parent, examine_block(msg))
/datum/component/mood/proc/update_mood() //Called whenever a mood event is added or removed
mood = 0
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index f5e43498dd2b..309c24502f9e 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -444,10 +444,10 @@
* COMSIG_ATOM_GET_EXAMINE_NAME signal
*/
/atom/proc/get_examine_name(mob/user)
- . = "\a [src]"
+ . = "\a [src]"
var/list/override = list(gender == PLURAL ? "some" : "a", " ", "[name]")
if(article)
- . = "[article] [src]"
+ . = "[article] [src]"
override[EXAMINE_POSITION_ARTICLE] = article
if(SEND_SIGNAL(src, COMSIG_ATOM_GET_EXAMINE_NAME, user, override) & COMPONENT_EXNAME_CHANGED)
. = override.Join("")
@@ -465,7 +465,11 @@
* Produces a signal COMSIG_PARENT_EXAMINE
*/
/atom/proc/examine(mob/user)
- . = list("[get_examine_string(user, TRUE)].")
+ var/examine_string = get_examine_string(user, thats = TRUE)
+ if(examine_string)
+ . = list("[examine_string].")
+ else
+ . = list()
if(desc)
. += desc
@@ -480,8 +484,8 @@
. += "It contains:"
if(length(reagents.reagent_list))
if(user.can_see_reagents()) //Show each individual reagent
- for(var/datum/reagent/R in reagents.reagent_list)
- . += "[R.volume] units of [R.name]"
+ for(var/datum/reagent/current_reagent in reagents.reagent_list)
+ . += "• [round(current_reagent.volume, 0.01)] units of [current_reagent.name]"
else //Otherwise, just show the total volume
var/total_volume = 0
for(var/datum/reagent/R in reagents.reagent_list)
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index be01a6064c90..e6283d5cb032 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -117,6 +117,7 @@ GENE SCANNER
beep_cooldown = world.time+40
// Clumsiness/brain damage check
+ /* This needs to be reformated, along with 99% of this stuff
if ((HAS_TRAIT(user, TRAIT_CLUMSY) || HAS_TRAIT(user, TRAIT_DUMB)) && prob(50))
to_chat(user, span_notice("You stupidly try to analyze the floor's vitals!"))
user.visible_message(span_warning("[user] has analyzed the floor's vitals!"))
@@ -125,7 +126,7 @@ GENE SCANNER
to_chat(user, span_info("\tDamage specifics: 0-0-0-0"))
to_chat(user, span_info("Body temperature: ???"))
return
-
+*/
user.visible_message(span_notice("[user] has analyzed [M]'s vitals."))
switch(scanmode)
@@ -141,6 +142,7 @@ GENE SCANNER
// Used by the PDA medical scanner too
/proc/healthscan(mob/user, mob/living/M, advanced = FALSE)
+ var/list/combined_msg = list()
if(isliving(user) && (user.incapacitated() || user.eye_blind))
return
//Damage specifics
@@ -157,29 +159,29 @@ GENE SCANNER
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.undergoing_cardiac_arrest() && H.stat != DEAD)
- to_chat(user, span_danger("Subject suffering from heart attack: Apply defibrillation or other electric shock immediately!"))
+ combined_msg += span_danger("Subject suffering from heart attack: Apply defibrillation or other electric shock immediately!")
- to_chat(user, span_info("Analyzing results for [M]:\n\tOverall status: [mob_status]"))
+ combined_msg += span_info("Analyzing results for [M]:\n\tOverall status: [mob_status]")
// Damage descriptions
if(brute_loss > 10)
- to_chat(user, "\t[span_alert("[brute_loss > 50 ? "Severe" : "Minor"] tissue damage detected.")]")
+ combined_msg += "\t[span_alert("[brute_loss > 50 ? "Severe" : "Minor"] tissue damage detected.")]"
if(fire_loss > 10)
- to_chat(user, "\t[span_alert("[fire_loss > 50 ? "Severe" : "Minor"] burn damage detected.")]")
+ combined_msg += "\t[span_alert("[fire_loss > 50 ? "Severe" : "Minor"] burn damage detected.")]"
if(oxy_loss > 10)
- to_chat(user, "\t[span_alert("[oxy_loss > 50 ? "Severe" : "Minor"] oxygen deprivation detected.")]")
+ combined_msg += "\t[span_alert("[oxy_loss > 50 ? "Severe" : "Minor"] oxygen deprivation detected.")]"
if(tox_loss > 10)
- to_chat(user, "\t[span_alert("[tox_loss > 50 ? "Severe" : "Minor"] amount of toxin damage detected.")]")
+ combined_msg += "\t[span_alert("[tox_loss > 50 ? "Severe" : "Minor"] amount of toxin damage detected.")]"
if(M.getStaminaLoss())
- to_chat(user, "\t[span_alert("Subject appears to be suffering from fatigue.")]")
+ combined_msg += "\t[span_alert("Subject appears to be suffering from fatigue.")]"
if(advanced)
- to_chat(user, "\t[span_info("Fatigue Level: [M.getStaminaLoss()]%.")]")
+ combined_msg += "\t[span_info("Fatigue Level: [M.getStaminaLoss()]%.")]"
if (M.getCloneLoss())
- to_chat(user, "\t[span_alert("Subject appears to have [M.getCloneLoss() > 30 ? "Severe" : "Minor"] cellular damage.")]")
+ combined_msg += "\t[span_alert("Subject appears to have [M.getCloneLoss() > 30 ? "Severe" : "Minor"] cellular damage.")]"
if(advanced)
- to_chat(user, "\t[span_info("Cellular Damage Level: [M.getCloneLoss()].")]")
+ combined_msg += "\t[span_info("Cellular Damage Level: [M.getCloneLoss()].")]"
if (!M.getorgan(/obj/item/organ/brain))
- to_chat(user, "\t[span_alert("Subject lacks a brain.")]")
+ combined_msg += "\t[span_alert("Subject lacks a brain.")]"
if(iscarbon(M))
var/mob/living/carbon/C = M
if(LAZYLEN(C.get_traumas()))
@@ -197,73 +199,73 @@ GENE SCANNER
trauma_desc += "permanent "
trauma_desc += B.scan_desc
trauma_text += trauma_desc
- to_chat(user, "\t[span_alert("Cerebral traumas detected: subject appears to be suffering from [english_list(trauma_text)].")]")
+ combined_msg += "\t[span_alert("Cerebral traumas detected: subject appears to be suffering from [english_list(trauma_text)].")]"
if(C.roundstart_quirks.len)
- to_chat(user, "\t[span_info("Subject has the following physiological traits: [C.get_trait_string()].")]")
+ combined_msg += "\t[span_info("Subject has the following physiological traits: [C.get_trait_string()].")]"
if(C.has_quirk(/datum/quirk/allergic))
- to_chat(user, "\t[span_info("Subject is allergic to the chemical [C.allergies].")]")
+ combined_msg += "\t[span_info("Subject is allergic to the chemical [C.allergies].")]"
if(advanced)
- to_chat(user, "\t[span_info("Brain Activity Level: [(200 - M.getOrganLoss(ORGAN_SLOT_BRAIN))/2]%.")]")
+ combined_msg += "\t[span_info("Brain Activity Level: [(200 - M.getOrganLoss(ORGAN_SLOT_BRAIN))/2]%.")]"
if(M.has_horror_inside())
- to_chat(user, "\t[span_alert("Detected parasitic organism residing in the cranial area.")]")
- to_chat(user, "\t[span_alert("Recommended course of action: organ manipulation surgery performed on head..")]")
+ combined_msg += "\t[span_alert("Detected parasitic organism residing in the cranial area.")]"
+ combined_msg += "\t[span_alert("Recommended course of action: organ manipulation surgery performed on head..")]"
if (M.radiation)
- to_chat(user, "\t[span_alert("Subject is irradiated.")]")
+ combined_msg += "\t[span_alert("Subject is irradiated.")]"
if(advanced)
- to_chat(user, "\t[span_info("Radiation Level: [M.radiation]%.")]")
+ combined_msg += "\t[span_info("Radiation Level: [M.radiation]%.")]"
if(advanced && M.hallucinating())
- to_chat(user, "\t[span_info("Subject is hallucinating.")]")
+ combined_msg += "\t[span_info("Subject is hallucinating.")]"
//Eyes and ears
if(advanced)
if(iscarbon(M))
var/mob/living/carbon/C = M
var/obj/item/organ/ears/ears = C.getorganslot(ORGAN_SLOT_EARS)
- to_chat(user, "\t==EAR STATUS==")
+ combined_msg += "\t==EAR STATUS=="
if(istype(ears))
var/healthy = TRUE
if(HAS_TRAIT_FROM(C, TRAIT_DEAF, GENETIC_MUTATION))
healthy = FALSE
- to_chat(user, "\t[span_alert("Subject is genetically deaf.")]")
+ combined_msg += "\t[span_alert("Subject is genetically deaf.")]"
else if(HAS_TRAIT(C, TRAIT_DEAF))
healthy = FALSE
- to_chat(user, "\t[span_alert("Subject is deaf.")]")
+ combined_msg += "\t[span_alert("Subject is deaf.")]"
else
if(ears.damage)
- to_chat(user, "\t[span_alert("Subject has [ears.damage > ears.maxHealth ? "permanent ": "temporary "]hearing damage.")]")
+ combined_msg += "\t[span_alert("Subject has [ears.damage > ears.maxHealth ? "permanent ": "temporary "]hearing damage.")]"
healthy = FALSE
if(ears.deaf)
- to_chat(user, "\t[span_alert("Subject is [ears.damage > ears.maxHealth ? "permanently ": "temporarily "] deaf.")]")
+ combined_msg += "\t[span_alert("Subject is [ears.damage > ears.maxHealth ? "permanently ": "temporarily "] deaf.")]"
healthy = FALSE
if(healthy)
- to_chat(user, "\t[span_info("Healthy.")]")
+ combined_msg += "\t[span_info("Healthy.")]"
else
- to_chat(user, "\t[span_alert("Subject does not have ears.")]")
+ combined_msg += "\t[span_alert("Subject does not have ears.")]"
var/obj/item/organ/eyes/eyes = C.getorganslot(ORGAN_SLOT_EYES)
- to_chat(user, "\t==EYE STATUS==")
+ combined_msg += "\t==EYE STATUS=="
if(istype(eyes))
var/healthy = TRUE
if(HAS_TRAIT(C, TRAIT_BLIND))
- to_chat(user, "\t[span_alert("Subject is blind.")]")
+ combined_msg += "\t[span_alert("Subject is blind.")]"
healthy = FALSE
if(HAS_TRAIT(C, TRAIT_NEARSIGHT))
- to_chat(user, "\t[span_alert("Subject is nearsighted.")]")
+ combined_msg += "\t[span_alert("Subject is nearsighted.")]"
healthy = FALSE
if(eyes.damage > 30)
- to_chat(user, "\t[span_alert("Subject has severe eye damage.")]")
+ combined_msg += "\t[span_alert("Subject has severe eye damage.")]"
healthy = FALSE
else if(eyes.damage > 20)
- to_chat(user, "\t[span_alert("Subject has significant eye damage.")]")
+ combined_msg += "\t[span_alert("Subject has significant eye damage.")]"
healthy = FALSE
else if(eyes.damage)
- to_chat(user, "\t[span_alert("Subject has minor eye damage.")]")
+ combined_msg += "\t[span_alert("Subject has minor eye damage.")]"
healthy = FALSE
if(healthy)
- to_chat(user, "\t[span_info("Healthy.")]")
+ combined_msg += "\t[span_info("Healthy.")]"
else
- to_chat(user, "\t[span_alert("Subject does not have eyes.")]")
+ combined_msg += "\t[span_alert("Subject does not have eyes.")]"
// Body part damage report
@@ -271,9 +273,9 @@ GENE SCANNER
var/mob/living/carbon/C = M
var/list/damaged = C.get_damaged_bodyparts(1,1)
if(length(damaged)>0 || oxy_loss>0 || tox_loss>0 || fire_loss>0)
- to_chat(user, span_info("\tDamage: Brute-Burn-Toxin-Suffocation\n\t\tSpecifics: [brute_loss]-[fire_loss]-[tox_loss]-[oxy_loss]"))
+ combined_msg += span_info("\tDamage: Brute-Burn-Toxin-Suffocation\n\t\tSpecifics: [brute_loss]-[fire_loss]-[tox_loss]-[oxy_loss]")
for(var/obj/item/bodypart/org in damaged)
- to_chat(user, "\t\t[capitalize(org.name)]: [(org.brute_dam > 0) ? "[org.brute_dam]" : "0"]-[(org.burn_dam > 0) ? "[org.burn_dam]" : "0"]")
+ combined_msg += "\t\t[capitalize(org.name)]: [(org.brute_dam > 0) ? "[org.brute_dam]" : "0"]-[(org.burn_dam > 0) ? "[org.burn_dam]" : "0"]"
//Organ damages report
if(ishuman(M))
@@ -341,13 +343,13 @@ GENE SCANNER
no_damage = "\t[span_info("Healthy Organs: ")]"
else
no_damage += ""
- to_chat(user, no_damage)
- to_chat(user, minor_damage)
- to_chat(user, major_damage)
- to_chat(user, max_damage)
+ combined_msg += no_damage
+ combined_msg += minor_damage
+ combined_msg += major_damage
+ combined_msg += max_damage
//Genetic damage
if(advanced && H.has_dna())
- to_chat(user, "\t[span_info("Genetic Stability: [H.dna.stability]%.")]")
+ combined_msg += "\t[span_info("Genetic Stability: [H.dna.stability]%.")]"
// Species and body temperature
if(ishuman(M))
@@ -377,19 +379,19 @@ GENE SCANNER
else if (S.mutantstomach != initial(S.mutantstomach))
mutant = TRUE
- to_chat(user, span_info("Species: [S.name][mutant ? "-derived mutant" : ""]"))
+ combined_msg += span_info("Species: [S.name][mutant ? "-derived mutant" : ""]")
var/temp_span = "notice"
if(M.bodytemperature <= BODYTEMP_HEAT_DAMAGE_LIMIT || M.bodytemperature >= BODYTEMP_COLD_DAMAGE_LIMIT)
temp_span = "warning"
- to_chat(user, "Body temperature: [round(M.bodytemperature-T0C,0.1)] °C ([round(M.bodytemperature*1.8-459.67,0.1)] °F)")
+ combined_msg += "Body temperature: [round(M.bodytemperature-T0C,0.1)] °C ([round(M.bodytemperature*1.8-459.67,0.1)] °F)"
// Time of death
if(M.tod && (M.stat == DEAD || ((HAS_TRAIT(M, TRAIT_FAKEDEATH)) && !advanced)))
- to_chat(user, "[span_info("Time of Death:")] [M.tod]")
+ combined_msg += "[span_info("Time of Death:")] [M.tod]"
var/tdelta = round(world.time - M.timeofdeath)
if(tdelta < (DEFIB_TIME_LIMIT))
- to_chat(user, span_danger("Subject died [DisplayTimeText(tdelta)] ago, defibrillation may be possible!"))
+ combined_msg += span_danger("Subject died [DisplayTimeText(tdelta)] ago, defibrillation may be possible!")
// Wounds
if(iscarbon(M))
@@ -407,7 +409,7 @@ GENE SCANNER
for(var/thing in M.diseases)
var/datum/disease/D = thing
if(!(D.visibility_flags & HIDDEN_SCANNER))
- to_chat(user, span_alert("Warning: [D.form] detected\nName: [D.name].\nType: [D.spread_text].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure_text].")) //Yogs - Added a "."
+ combined_msg += span_alert("Warning: [D.form] detected\nName: [D.name].\nType: [D.spread_text].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure_text].") //Yogs - Added a "."
// Blood Level
if(M.has_dna())
@@ -417,7 +419,7 @@ GENE SCANNER
if(ishuman(C))
var/mob/living/carbon/human/H = C
if(H.is_bleeding())
- to_chat(user, span_danger("Subject is bleeding!"))
+ combined_msg += span_danger("Subject is bleeding!")
var/blood_percent = round((C.blood_volume / BLOOD_VOLUME_NORMAL(C))*100)
var/blood_type = C.dna.blood_type
if(blood_id != /datum/reagent/blood)//special blood substance
@@ -427,38 +429,41 @@ GENE SCANNER
else
blood_type = blood_id
if(HAS_TRAIT(M, TRAIT_MASQUERADE)) //bloodsuckers
- to_chat(user, span_info("Blood level 100%, 560 cl, type: [blood_type]"))
+ combined_msg += span_info("Blood level 100%, 560 cl, type: [blood_type]")
else if(C.blood_volume <= BLOOD_VOLUME_SAFE(C) && C.blood_volume > BLOOD_VOLUME_OKAY(C))
- to_chat(user, "[span_danger("LOW blood level [blood_percent] %, [C.blood_volume] cl,")] [span_info("type: [blood_type]")]")
+ combined_msg += "[span_danger("LOW blood level [blood_percent] %, [C.blood_volume] cl,")] [span_info("type: [blood_type]")]"
else if(C.blood_volume <= BLOOD_VOLUME_OKAY(C))
- to_chat(user, "[span_danger("CRITICAL blood level [blood_percent] %, [C.blood_volume] cl,")] [span_info("type: [blood_type]")]")
+ combined_msg += "[span_danger("CRITICAL blood level [blood_percent] %, [C.blood_volume] cl,")] [span_info("type: [blood_type]")]"
else
- to_chat(user, span_info("Blood level [blood_percent] %, [C.blood_volume] cl, type: [blood_type]"))
+ combined_msg += span_info("Blood level [blood_percent] %, [C.blood_volume] cl, type: [blood_type]")
var/cyberimp_detect
for(var/obj/item/organ/cyberimp/CI in C.internal_organs)
if(CI.status == ORGAN_ROBOTIC && !CI.syndicate_implant)
cyberimp_detect += "[C.name] is modified with a [CI.name].
"
if(cyberimp_detect)
- to_chat(user, span_notice("Detected cybernetic modifications:"))
- to_chat(user, span_notice("[cyberimp_detect]"))
+ combined_msg += span_notice("Detected cybernetic modifications:")
+ combined_msg += span_notice("[cyberimp_detect]")
+ to_chat(user, examine_block(combined_msg.Join("\n")))
SEND_SIGNAL(M, COMSIG_NANITE_SCAN, user, FALSE)
/proc/chemscan(mob/living/user, mob/living/M)
+ var/list/combined_msg = list()
if(istype(M))
if(M.reagents)
if(M.reagents.reagent_list.len)
- to_chat(user, span_notice("Subject contains the following reagents:"))
+ combined_msg += span_notice("Subject contains the following reagents:")
for(var/datum/reagent/R in M.reagents.reagent_list)
- to_chat(user, "[span_notice("[round(R.volume, 0.001)] units of [R.name]")][R.overdosed == 1 ? "- [span_boldannounce("OVERDOSING")]" : "."]")
+ combined_msg += "[span_notice("[round(R.volume, 0.001)] units of [R.name]")][R.overdosed == 1 ? "- [span_boldannounce("OVERDOSING")]" : "."]"
else
- to_chat(user, span_notice("Subject contains no reagents."))
+ combined_msg += span_notice("Subject contains no reagents.")
if(M.reagents.addiction_list.len)
- to_chat(user, span_boldannounce("Subject is addicted to the following reagents:"))
+ combined_msg += span_boldannounce("Subject is addicted to the following reagents:")
for(var/datum/reagent/R in M.reagents.addiction_list)
- to_chat(user, span_danger("[R.name]"))
+ combined_msg += span_danger("[R.name]")
else
- to_chat(user, span_notice("Subject is not addicted to any reagents."))
+ combined_msg += span_notice("Subject is not addicted to any reagents.")
+ to_chat(user, examine_block(combined_msg.Join("\n")))
/obj/item/healthanalyzer/advanced
name = "advanced health analyzer"
@@ -511,7 +516,7 @@ GENE SCANNER
else
to_chat(user, "No wounds detected in subject.")
else
- to_chat(user, jointext(render_list, ""))
+ to_chat(user, examine_block(jointext(render_list, "")))
/obj/item/healthanalyzer/wound
name = "first aid analyzer"
@@ -598,6 +603,7 @@ GENE SCANNER
scangasses(user) //yogs start: Makes the gas scanning able to be used elseware
/obj/item/proc/scangasses(mob/user)
+ var/list/combined_msg = list()
//yogs stop
if (user.stat || user.eye_blind)
@@ -612,11 +618,11 @@ GENE SCANNER
var/pressure = environment.return_pressure()
var/total_moles = environment.total_moles()
- to_chat(user, span_info("Results:"))
+ combined_msg += span_info("Results:")
if(abs(pressure - ONE_ATMOSPHERE) < 10)
- to_chat(user, span_info("Pressure: [round(pressure, 0.01)] kPa"))
+ combined_msg += span_info("Pressure: [round(pressure, 0.01)] kPa")
else
- to_chat(user, span_alert("Pressure: [round(pressure, 0.01)] kPa"))
+ combined_msg += span_alert("Pressure: [round(pressure, 0.01)] kPa")
if(total_moles)
var/o2_concentration = environment.get_moles(/datum/gas/oxygen)/total_moles
var/n2_concentration = environment.get_moles(/datum/gas/nitrogen)/total_moles
@@ -624,31 +630,32 @@ GENE SCANNER
var/plasma_concentration = environment.get_moles(/datum/gas/plasma)/total_moles
if(abs(n2_concentration - N2STANDARD) < 20)
- to_chat(user, span_info("Nitrogen: [round(n2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/nitrogen), 0.01)] mol)"))
+ combined_msg += span_info("Nitrogen: [round(n2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/nitrogen), 0.01)] mol)")
else
- to_chat(user, span_alert("Nitrogen: [round(n2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/nitrogen), 0.01)] mol)"))
+ combined_msg += span_alert("Nitrogen: [round(n2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/nitrogen), 0.01)] mol)")
if(abs(o2_concentration - O2STANDARD) < 2)
- to_chat(user, span_info("Oxygen: [round(o2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/oxygen), 0.01)] mol)"))
+ combined_msg += span_info("Oxygen: [round(o2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/oxygen), 0.01)] mol)")
else
- to_chat(user, span_alert("Oxygen: [round(o2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/oxygen), 0.01)] mol)"))
+ combined_msg += span_alert("Oxygen: [round(o2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/oxygen), 0.01)] mol)")
if(co2_concentration > 0.01)
- to_chat(user, span_alert("CO2: [round(co2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/carbon_dioxide), 0.01)] mol)"))
+ combined_msg += span_alert("CO2: [round(co2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/carbon_dioxide), 0.01)] mol)")
else
- to_chat(user, span_info("CO2: [round(co2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/carbon_dioxide), 0.01)] mol)"))
+ combined_msg += span_info("CO2: [round(co2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/carbon_dioxide), 0.01)] mol)")
if(plasma_concentration > 0.005)
- to_chat(user, span_alert("Plasma: [round(plasma_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/plasma), 0.01)] mol)"))
+ combined_msg += span_alert("Plasma: [round(plasma_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/plasma), 0.01)] mol)")
else
- to_chat(user, span_info("Plasma: [round(plasma_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/plasma), 0.01)] mol)"))
+ combined_msg += span_info("Plasma: [round(plasma_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/plasma), 0.01)] mol)")
for(var/id in environment.get_gases())
if(id in GLOB.hardcoded_gases)
continue
var/gas_concentration = environment.get_moles(id)/total_moles
- to_chat(user, span_alert("[GLOB.meta_gas_info[id][META_GAS_NAME]]: [round(gas_concentration*100, 0.01)] % ([round(environment.get_moles(id), 0.01)] mol)"))
- to_chat(user, span_info("Temperature: [round(environment.return_temperature()-T0C, 0.01)] °C ([round(environment.return_temperature(), 0.01)] K)"))
+ combined_msg += span_alert("[GLOB.meta_gas_info[id][META_GAS_NAME]]: [round(gas_concentration*100, 0.01)] % ([round(environment.get_moles(id), 0.01)] mol)")
+ combined_msg += span_info("Temperature: [round(environment.return_temperature()-T0C, 0.01)] °C ([round(environment.return_temperature(), 0.01)] K)")
+ to_chat(user, examine_block(combined_msg.Join("\n")))
/obj/item/analyzer/AltClick(mob/user) //Barometer output for measuring when the next storm happens
..()
@@ -714,14 +721,15 @@ GENE SCANNER
return DisplayTimeText(max(1,amount))
/proc/atmosanalyzer_scan(mixture, mob/living/user, atom/target = src)
+ var/list/combined_msg = list()
var/icon = target
user.visible_message("[user] has used the analyzer on [icon2html(icon, viewers(user))] [target].", span_notice("You use the analyzer on [icon2html(icon, user)] [target]."))
- to_chat(user, span_boldnotice("Results of analysis of [icon2html(icon, user)] [target]."))
+ combined_msg += span_boldnotice("Results of analysis of [icon2html(icon, user)] [target].")
var/list/airs = islist(mixture) ? mixture : list(mixture)
for(var/g in airs)
if(airs.len > 1) //not a unary gas mixture
- to_chat(user, span_boldnotice("Node [airs.Find(g)]"))
+ combined_msg += span_boldnotice("Node [airs.Find(g)]")
var/datum/gas_mixture/air_contents = g
var/total_moles = air_contents.total_moles()
@@ -731,25 +739,26 @@ GENE SCANNER
var/cached_scan_results = air_contents.analyzer_results
if(total_moles > 0)
- to_chat(user, span_notice("Moles: [round(total_moles, 0.01)] mol"))
- to_chat(user, span_notice("Volume: [volume] L"))
- to_chat(user, span_notice("Pressure: [round(pressure,0.01)] kPa"))
+ combined_msg += span_notice("Moles: [round(total_moles, 0.01)] mol")
+ combined_msg += span_notice("Volume: [volume] L")
+ combined_msg += span_notice("Pressure: [round(pressure,0.01)] kPa")
for(var/id in air_contents.get_gases())
var/gas_concentration = air_contents.get_moles(id)/total_moles
- to_chat(user, span_notice("[GLOB.meta_gas_info[id][META_GAS_NAME]]: [round(gas_concentration*100, 0.01)] % ([round(air_contents.get_moles(id), 0.01)] mol)"))
- to_chat(user, span_notice("Temperature: [round(temperature - T0C,0.01)] °C ([round(temperature, 0.01)] K)"))
+ combined_msg += span_notice("[GLOB.meta_gas_info[id][META_GAS_NAME]]: [round(gas_concentration*100, 0.01)] % ([round(air_contents.get_moles(id), 0.01)] mol)")
+ combined_msg += span_notice("Temperature: [round(temperature - T0C,0.01)] °C ([round(temperature, 0.01)] K)")
else
if(airs.len > 1)
- to_chat(user, span_notice("This node is empty!"))
+ combined_msg += span_notice("This node is empty!")
else
- to_chat(user, span_notice("[target] is empty!"))
+ combined_msg += span_notice("[target] is empty!")
if(cached_scan_results && cached_scan_results["fusion"]) //notify the user if a fusion reaction was detected
var/instability = round(cached_scan_results["fusion"], 0.01)
- to_chat(user, span_boldnotice("Large amounts of free neutrons detected in the air indicate that a fusion reaction took place."))
- to_chat(user, span_notice("Instability of the last fusion reaction: [instability]."))
+ combined_msg += span_boldnotice("Large amounts of free neutrons detected in the air indicate that a fusion reaction took place.")
+ combined_msg += span_notice("Instability of the last fusion reaction: [instability].")
+ to_chat(user, examine_block(combined_msg.Join("\n")))
return
//slime scanner
@@ -767,10 +776,10 @@ GENE SCANNER
throwforce = 0
throw_speed = 3
throw_range = 7
- materials = list(/datum/material/iron=30, /datum/material/glass=20)
+ custom_materials = list(/datum/material/iron=30, /datum/material/glass=20)
/obj/item/slime_scanner/attack(mob/living/M, mob/living/user)
- if(user.stat || user.eye_blind)
+ if(user.stat || !user.can_read(src))
return
if (!isslime(M))
to_chat(user, span_warning("This device can only scan slimes!"))
@@ -780,36 +789,34 @@ GENE SCANNER
slime_scan(T, user)
/proc/slime_scan(mob/living/simple_animal/slime/T, mob/living/user)
- to_chat(user, "========================")
- to_chat(user, "Slime scan results:")
- to_chat(user, span_notice("[T.colour] [T.is_adult ? "adult" : "baby"] slime"))
- to_chat(user, "Nutrition: [T.nutrition]/[T.get_max_nutrition()]")
+ var/to_render = "Slime scan results:\
+ \n[span_notice("[T.colour] [T.is_adult ? "adult" : "baby"] slime")]\
+ \nNutrition: [T.nutrition]/[T.get_max_nutrition()]"
if (T.nutrition < T.get_starve_nutrition())
- to_chat(user, span_warning("Warning: slime is starving!"))
+ to_render += "\n[span_warning("Warning: slime is starving!")]"
else if (T.nutrition < T.get_hunger_nutrition())
- to_chat(user, span_warning("Warning: slime is hungry"))
- to_chat(user, "Electric charge strength: [T.powerlevel]")
- to_chat(user, "Health: [round(T.health/T.maxHealth,0.01)*100]%")
+ to_render += "\n[span_warning("Warning: slime is hungry")]"
+ to_render += "\nElectric change strength: [T.powerlevel]\nHealth: [round(T.health/T.maxHealth,0.01)*100]%"
if (T.slime_mutation[4] == T.colour)
- to_chat(user, "This slime does not evolve any further.")
+ to_render += "\nThis slime does not evolve any further."
else
if (T.slime_mutation[3] == T.slime_mutation[4])
if (T.slime_mutation[2] == T.slime_mutation[1])
- to_chat(user, "Possible mutation: [T.slime_mutation[3]]")
- to_chat(user, "Genetic instability: [T.mutation_chance/2] % chance of mutation on splitting")
+ to_render += "\nPossible mutation: [T.slime_mutation[3]]\
+ \nGenetic destability: [T.mutation_chance/2] % chance of mutation on splitting"
else
- to_chat(user, "Possible mutations: [T.slime_mutation[1]], [T.slime_mutation[2]], [T.slime_mutation[3]] (x2)")
- to_chat(user, "Genetic instability: [T.mutation_chance] % chance of mutation on splitting")
+ to_render += "\nPossible mutations: [T.slime_mutation[1]], [T.slime_mutation[2]], [T.slime_mutation[3]] (x2)\
+ \nGenetic destability: [T.mutation_chance] % chance of mutation on splitting"
else
- to_chat(user, "Possible mutations: [T.slime_mutation[1]], [T.slime_mutation[2]], [T.slime_mutation[3]], [T.slime_mutation[4]]")
- to_chat(user, "Genetic instability: [T.mutation_chance] % chance of mutation on splitting")
+ to_render += "\nPossible mutations: [T.slime_mutation[1]], [T.slime_mutation[2]], [T.slime_mutation[3]], [T.slime_mutation[4]]\
+ \nGenetic destability: [T.mutation_chance] % chance of mutation on splitting"
if (T.cores > 1)
- to_chat(user, "Multiple cores detected")
- to_chat(user, "Growth progress: [T.amount_grown]/[SLIME_EVOLUTION_THRESHOLD]")
+ to_render += "\nMultiple cores detected"
+ to_render += "\nGrowth progress: [T.amount_grown]/[SLIME_EVOLUTION_THRESHOLD]"
if(T.effectmod)
- to_chat(user, span_notice("Core mutation in progress: [T.effectmod]"))
- to_chat(user, "Progress in core mutation: [T.applied] / [SLIME_EXTRACT_CROSSING_REQUIRED]")
- to_chat(user, "========================")
+ to_render += "\n[span_notice("Core mutation in progress: [T.effectmod]")]\
+ \n[span_notice("Progress in core mutation: [T.applied] / [SLIME_EXTRACT_CROSSING_REQUIRED]")]"
+ to_chat(user, examine_block(to_render))
/obj/item/nanite_scanner
diff --git a/code/modules/antagonists/clockcult/clock_mobs.dm b/code/modules/antagonists/clockcult/clock_mobs.dm
index 88c39a2e2f08..89d7db897eb0 100644
--- a/code/modules/antagonists/clockcult/clock_mobs.dm
+++ b/code/modules/antagonists/clockcult/clock_mobs.dm
@@ -43,7 +43,7 @@
/mob/living/simple_animal/hostile/clockwork/examine(mob/user)
var/t_He = p_they(TRUE)
var/t_s = p_s()
- var/msg = "*---------*\nThis is [icon2html(src, user)] \a [src]!\n"
+ var/msg = "This is [icon2html(src, user)] \a [src]!\n"
msg += "[desc]\n"
if(health < maxHealth)
msg += ""
@@ -55,7 +55,7 @@
var/addendum = examine_info()
if(addendum)
msg += "[addendum]\n"
- msg += "*---------*"
+ msg += ""
return list(msg)
diff --git a/code/modules/antagonists/devil/true_devil/_true_devil.dm b/code/modules/antagonists/devil/true_devil/_true_devil.dm
index 03b28bbbbedf..fb64bcdf3991 100644
--- a/code/modules/antagonists/devil/true_devil/_true_devil.dm
+++ b/code/modules/antagonists/devil/true_devil/_true_devil.dm
@@ -64,7 +64,7 @@
/mob/living/carbon/true_devil/examine(mob/user)
- . = list("*---------*\nThis is [icon2html(src, user)] [src]!")
+ . = list("This is [icon2html(src, user)] [src]!")
//Left hand items
for(var/obj/item/I in held_items)
@@ -82,7 +82,7 @@
. += span_warning("You can see hellfire inside its gaping wounds.")
else if(health < (maxHealth/2))
. += span_warning("You can see hellfire inside its wounds.")
- . += "*---------*"
+ . += ""
/mob/living/carbon/true_devil/IsAdvancedToolUser()
return 1
diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index b23112efb9e7..7230256a1abb 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -65,7 +65,7 @@
/// Ghost attack proc
/obj/item/reagent_containers/food/snacks/grown/attack_ghost(mob/user)
..()
- var/msg = "*---------*\n This is \a [span_name("[src]")].\n"
+ var/msg = "This is \a [span_name("[src]")].\n"
if(seed)
msg += seed.get_analyzer_text()
var/reag_txt = ""
@@ -77,14 +77,14 @@
if(reag_txt)
msg += reag_txt
- msg += "
[span_info("*---------*")]"
- to_chat(user, msg)
+ msg += "
[span_info("")]"
+ to_chat(user, examine_block(msg))
/obj/item/reagent_containers/food/snacks/grown/attackby(obj/item/O, mob/user, params)
..()
if (istype(O, /obj/item/plant_analyzer))
playsound(src, 'sound/effects/fastbeep.ogg', 30)
- var/msg = "*---------*\n This is \a [span_name("[src]")].\n"
+ var/msg = "This is \a [span_name("[src]")].\n"
if(seed)
msg += seed.get_analyzer_text()
var/reag_txt = ""
@@ -96,8 +96,8 @@
if(reag_txt)
msg += reag_txt
- msg += "
[span_info("*---------*")]"
- to_chat(user, msg)
+ msg += "
[span_info("")]"
+ to_chat(user, examine_block(msg))
else
if(seed)
for(var/datum/plant_gene/trait/T in seed.genes)
diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm
index cbd52b330a86..1e888fe5a1bf 100644
--- a/code/modules/hydroponics/grown/kudzu.dm
+++ b/code/modules/hydroponics/grown/kudzu.dm
@@ -52,7 +52,7 @@
var/text_string = ""
for(var/datum/spacevine_mutation/SM in mutations)
text_string += "[(text_string == "") ? "" : ", "][SM.name]"
- text += "\n- Plant Mutations: [(text_string == "") ? "None" : text_string]"
+ text += "\n Plant Mutations: [(text_string == "") ? "None" : text_string]"
return text
/obj/item/seeds/kudzu/on_chem_reaction(datum/reagents/S)
diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm
index 4e792600bfa3..36adb54fcd7f 100644
--- a/code/modules/hydroponics/growninedible.dm
+++ b/code/modules/hydroponics/growninedible.dm
@@ -34,22 +34,22 @@
/// Ghost attack proc
/obj/item/grown/attack_ghost(mob/user)
..()
- var/msg = "*---------*\n This is \a [span_name("[src]")]\n"
+ var/msg = "This is \a [span_name("[src]")]\n"
if(seed)
msg += seed.get_analyzer_text()
msg += ""
- to_chat(usr, msg)
+ to_chat(usr, examine_block(msg))
return
/obj/item/grown/attackby(obj/item/O, mob/user, params)
..()
if (istype(O, /obj/item/plant_analyzer))
playsound(src, 'sound/effects/fastbeep.ogg', 30)
- var/msg = "*---------*\n This is \a [span_name("[src]")]\n"
+ var/msg = "This is \a [span_name("[src]")]\n"
if(seed)
msg += seed.get_analyzer_text()
msg += ""
- to_chat(usr, msg)
+ to_chat(usr, examine_block(msg))
return
/obj/item/grown/proc/add_juice()
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index 484f006a86a3..7ed9383f3da8 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -800,21 +800,24 @@
to_chat(user, span_warning("[src] already has seeds in it!"))
else if(istype(O, /obj/item/plant_analyzer))
+ var/list/combined_msg = list()
playsound(src, 'sound/effects/fastbeep.ogg', 30)
if(myseed)
- to_chat(user, "*** [myseed.plantname] ***" )
- to_chat(user, "- Plant Age: [span_notice("[age]")]")
+ combined_msg +="*** [myseed.plantname] ***"
+ combined_msg +="- Plant Age: [span_notice("[age]")]"
var/list/text_string = myseed.get_analyzer_text()
if(text_string)
- to_chat(user, text_string)
+ combined_msg += "[text_string]"
else
- to_chat(user, "No plant found.")
- to_chat(user, "- Weed level: [span_notice("[weedlevel] / 10")]")
- to_chat(user, "- Pest level: [span_notice("[pestlevel] / 10")]")
- to_chat(user, "- Toxicity level: [span_notice("[toxic] / 100")]")
- to_chat(user, "- Water level: [span_notice("[waterlevel] / [maxwater]")]")
- to_chat(user, "- Nutrition level: [span_notice("[nutrilevel] / [maxnutri]")]")
- to_chat(user, "")
+ combined_msg += "No plant found."
+ combined_msg += "- Weed level: [weedlevel] / 10"
+ combined_msg += "- Pest level: [pestlevel] / 10"
+ combined_msg += "- Toxicity level: [toxic] / 100"
+ combined_msg += "- Water level: [waterlevel] / [maxwater]"
+ combined_msg += "- Nutrition level: [nutrilevel] / [maxnutri]"
+ combined_msg += ""
+
+ to_chat(user, examine_block(combined_msg))
else if(istype(O, /obj/item/cultivator))
if(weedlevel > 0)
diff --git a/code/modules/hydroponics/sample.dm b/code/modules/hydroponics/sample.dm
index fff4c646ac8c..a924c02d944a 100644
--- a/code/modules/hydroponics/sample.dm
+++ b/code/modules/hydroponics/sample.dm
@@ -13,9 +13,9 @@
add_overlay(filling)
/obj/item/seeds/sample/get_analyzer_text()
- return " The DNA of this sample is damaged beyond recovery, it can't support life on its own.\n*---------*"
+ return " The DNA of this sample is damaged beyond recovery, it can't support life on its own."
/obj/item/seeds/sample/alienweed
name = "alien weed sample"
icon_state = "alienweed"
- sample_color = null
\ No newline at end of file
+ sample_color = null
diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm
index c2c2a88d7021..0b76ad6ee599 100644
--- a/code/modules/hydroponics/seeds.dm
+++ b/code/modules/hydroponics/seeds.dm
@@ -318,7 +318,7 @@
all_traits += " [traits.get_name()]"
text += "- Plant Traits:[all_traits]\n"
- text += "*---------*"
+ text += ""
return text
@@ -327,7 +327,7 @@
/// Ghost attack proc
/obj/item/seeds/attack_ghost(mob/user)
- to_chat(user, span_info("*---------*\n This is \a [span_name("[src]")]."))
+ to_chat(user, span_info("This is \a [span_name("[src]")]."))
var/text = get_analyzer_text()
if(text)
to_chat(user, span_notice("[text]"))
@@ -335,7 +335,7 @@
/obj/item/seeds/attackby(obj/item/O, mob/user, params)
if (istype(O, /obj/item/plant_analyzer))
playsound(src, 'sound/effects/fastbeep.ogg', 30)
- to_chat(user, span_info("*---------*\n This is \a [span_name("[src]")]."))
+ to_chat(user, span_info("This is \a [span_name("[src]")]."))
var/text = get_analyzer_text()
if(text)
to_chat(user, span_notice("[text]"))
diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm
index f80c6c2b1939..b38b67323104 100644
--- a/code/modules/mob/living/carbon/examine.dm
+++ b/code/modules/mob/living/carbon/examine.dm
@@ -6,7 +6,7 @@
var/t_has = p_have()
var/t_is = p_are()
- . = list("*---------*\nThis is [icon2html(src, user)] \a [src]!")
+ . = list("This is [icon2html(src, user)] \a [src]!>")
var/list/obscured = check_obscured_slots()
if (handcuffed)
@@ -150,7 +150,7 @@
. += "[t_He] look[p_s()] very happy."
if(MOOD_LEVEL_HAPPY4 to INFINITY)
. += "[t_He] look[p_s()] ecstatic."
- . += "*---------*"
+ . += ""
/mob/living/carbon/examine_more(mob/user)
if(!all_scars)
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 6c772157d81c..6ce81b7418a6 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -13,7 +13,7 @@
if(HAS_TRAIT(L, TRAIT_PROSOPAGNOSIA))
obscure_name = TRUE
- . = list("*---------*\nThis is [!obscure_name ? name : "Unknown"]!")
+ . = list("This is [!obscure_name ? name : "Unknown"]!>")
var/vampDesc = ReturnVampExamine(user) // Fulpstation Bloodsuckers edit STARTS
var/vassDesc = ReturnVassalExamine(user)
@@ -438,7 +438,7 @@
"\[Add comment\]"), "")
else if(isobserver(user) && traitstring)
. += "Traits: [traitstring]
"
- . += "*---------*"
+ . += ""
/mob/living/proc/status_effect_examines(pronoun_replacement) //You can include this in any mob's examine() to show the examine texts of status effects!
var/list/dat = list()
@@ -463,7 +463,7 @@
var/t_has = p_have()
var/t_is = p_are()
- . = list("*---------*\nThis is [name]!")
+ . = list("This is [name]!")
var/list/obscured = check_obscured_slots()
@@ -567,4 +567,4 @@
if (length(msg))
. += span_warning("[msg.Join("")]")
- . += "*---------*"
+ . += ""
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 67faae40f388..65524e928154 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -746,8 +746,9 @@
return
var/list/combined_msg = list()
- visible_message("[src] examines [p_them()]self.", \
- span_notice("You check yourself for injuries."))
+ visible_message(span_notice("[src] examines [p_them()]self."))
+
+ combined_msg += span_notice("You check yourself for injuries.")
var/list/missing = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
for(var/X in bodyparts)
@@ -931,7 +932,7 @@
if(roundstart_quirks.len)
combined_msg += span_notice("You have these quirks: [get_trait_string()].")
- to_chat(src, combined_msg.Join("\n"))
+ to_chat(src, examine_block(combined_msg.Join("\n")))
/mob/living/carbon/human/damage_clothes(damage_amount, damage_type = BRUTE, damage_flag = 0, def_zone)
if(damage_type != BRUTE && damage_type != BURN)
diff --git a/code/modules/mob/living/silicon/ai/examine.dm b/code/modules/mob/living/silicon/ai/examine.dm
index 3202372a8974..e2c9479b1231 100644
--- a/code/modules/mob/living/silicon/ai/examine.dm
+++ b/code/modules/mob/living/silicon/ai/examine.dm
@@ -1,5 +1,5 @@
/mob/living/silicon/ai/examine(mob/user)
- . = list("*---------*\nThis is [icon2html(src, user)] [src]!")
+ . = list("This is [icon2html(src, user)] [src]!")
if (stat == DEAD)
. += span_deadsay("It appears to be powered-down.")
else
@@ -17,6 +17,9 @@
. += "The wireless networking light is blinking.\n"
else if (!shunted && !client)
. += "[src]Core.exe has stopped responding! NTOS is searching for a solution to the problem...\n"
- . += "*---------*"
+ . += ""
. += ..()
+
+/mob/living/silicon/ai/get_examine_string(mob/user, thats = FALSE)
+ return null
diff --git a/code/modules/mob/living/silicon/robot/examine.dm b/code/modules/mob/living/silicon/robot/examine.dm
index 1409820f1835..7e076314427a 100644
--- a/code/modules/mob/living/silicon/robot/examine.dm
+++ b/code/modules/mob/living/silicon/robot/examine.dm
@@ -1,5 +1,5 @@
/mob/living/silicon/robot/examine(mob/user)
- . = list("*---------*\nThis is [icon2html(src, user)] \a [src]!")
+ . = list("This is [icon2html(src, user)] \a [src]!")
if(desc)
. += "[desc]"
@@ -46,6 +46,9 @@
. += span_warning("It doesn't seem to be responding.")
if(DEAD)
. += span_deadsay("It looks like its system is corrupted and requires a reset.")
- . += "*---------*"
+ . += ""
. += ..()
+
+/mob/living/silicon/robot/get_examine_string(mob/user, thats = FALSE)
+ return null
diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm
index 91f0689d6472..3949fdb7d1e4 100644
--- a/code/modules/mob/living/simple_animal/constructs.dm
+++ b/code/modules/mob/living/simple_animal/constructs.dm
@@ -69,13 +69,13 @@
/mob/living/simple_animal/hostile/construct/examine(mob/user)
var/t_He = p_they(TRUE)
var/t_s = p_s()
- . = list("*---------*\nThis is [icon2html(src, user)] \a [src]!\n[desc]")
+ . = list("This is [icon2html(src, user)] \a [src]!\n[desc]")
if(health < maxHealth)
if(health >= maxHealth/2)
. += span_warning("[t_He] look[t_s] slightly dented.")
else
. += span_warning("[t_He] look[t_s] severely dented!")
- . += "*---------*"
+ . += ""
/mob/living/simple_animal/hostile/construct/attack_animal(mob/living/simple_animal/M)
if(isconstruct(M)) //is it a construct?
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
index 8748789654c0..62e5f17e4f98 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
@@ -182,7 +182,7 @@
/mob/living/simple_animal/drone/examine(mob/user)
- . = list("*---------*\nThis is [icon2html(src, user)] \a [src]!")
+ . = list("This is [icon2html(src, user)] \a [src]!")
//Hands
for(var/obj/item/I in held_items)
@@ -218,7 +218,7 @@
. += span_deadsay("A message repeatedly flashes on its display: \"REBOOT -- REQUIRED\".")
else
. += span_deadsay("A message repeatedly flashes on its display: \"ERROR -- OFFLINE\".")
- . += "*---------*"
+ . += ""
/mob/living/simple_animal/drone/assess_threat(judgement_criteria, lasercolor = "", datum/callback/weaponcheck=null) //Secbots won't hunt maintenance drones.
diff --git a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
index ab08152a2496..387d4b095533 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
@@ -18,13 +18,13 @@
/mob/living/simple_animal/hostile/guardian/dextrous/examine(mob/user)
if(dextrous)
- . = list("*---------*\nThis is [icon2html(src)] \a [src]!\n[desc]")
+ . = list("This is [icon2html(src)] \a [src]!\n[desc]")
for(var/obj/item/I in held_items)
if(!(I.item_flags & ABSTRACT))
. += "It has [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))]."
if(internal_storage && !(internal_storage.item_flags & ABSTRACT))
. += "It is holding [internal_storage.get_examine_string(user)] in its internal storage."
- . += "*---------*"
+ . += ""
else
return ..()
diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm
index 98a960068875..ac92cdca838a 100644
--- a/code/modules/mob/living/simple_animal/slime/slime.dm
+++ b/code/modules/mob/living/simple_animal/slime/slime.dm
@@ -438,7 +438,7 @@
return
/mob/living/simple_animal/slime/examine(mob/user)
- . = list("*---------*\nThis is [icon2html(src, user)] \a [src]!")
+ . = list("This is [icon2html(src, user)] \a [src]!")
if (stat == DEAD)
. += span_deadsay("It is limp and unresponsive.")
else
@@ -465,7 +465,7 @@
if(10)
. += span_warning("It is radiating with massive levels of electrical activity!")
- . += "*---------*"
+ . += ""
/mob/living/simple_animal/slime/proc/discipline_slime(mob/user)
if(stat)
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 4ce8a9c755ee..316bb9425d46 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -454,7 +454,11 @@
else
result = A.examine(src) // if a tree is examined but no client is there to see it, did the tree ever really exist?
- to_chat(src, result.Join("\n"))
+ if(result.len)
+ for(var/i in 1 to (length(result) - 1))
+ result[i] += "\n"
+
+ to_chat(src, examine_block("[result.Join()]"))
SEND_SIGNAL(src, COMSIG_MOB_EXAMINATE, A)
diff --git a/tgui/packages/tgui-panel/styles/goon/chat-dark.scss b/tgui/packages/tgui-panel/styles/goon/chat-dark.scss
index 54f0e014e2d8..591480fb2443 100644
--- a/tgui/packages/tgui-panel/styles/goon/chat-dark.scss
+++ b/tgui/packages/tgui-panel/styles/goon/chat-dark.scss
@@ -899,3 +899,10 @@ em {
.ml-3 {
margin-left: 3em;
}
+
+.examine_block {
+ background: #1b1c1e;
+ border: 1px solid #a4bad6;
+ margin: 0.5em;
+ padding: 0.5em 0.75em;
+}
diff --git a/tgui/packages/tgui-panel/styles/goon/chat-light.scss b/tgui/packages/tgui-panel/styles/goon/chat-light.scss
index 66d8743de2bd..71e4f5d2f4e3 100644
--- a/tgui/packages/tgui-panel/styles/goon/chat-light.scss
+++ b/tgui/packages/tgui-panel/styles/goon/chat-light.scss
@@ -944,3 +944,10 @@ h1.alert, h2.alert {
.ml-3 {
margin-left: 3em;
}
+
+.examine_block {
+ background: #f2f7fa;
+ border: 1px solid #111a27;
+ margin: 0.5em;
+ padding: 0.5em 0.75em;
+}