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; +}