diff --git a/code/__DEFINES/_macros.dm b/code/__DEFINES/_macros.dm
index 351ac9aed1e..b8939d01c67 100644
--- a/code/__DEFINES/_macros.dm
+++ b/code/__DEFINES/_macros.dm
@@ -30,6 +30,9 @@
#define SPAN_HIGHDANGER(X) (FONT_LARGE(SPAN_DANGER(X)))
+/// Adds a generic box around whatever message you're sending in chat. Really makes things stand out.
+#define EXAMINE_BLOCK(str) ("
" + str + "
")
+
#define FONT_SIZE_SMALL "10px"
#define FONT_SIZE_NORMAL "13px"
#define FONT_SIZE_LARGE "16px"
diff --git a/code/_onclick/hud/ability_screen_objects.dm b/code/_onclick/hud/ability_screen_objects.dm
index 1e9d6c5e4b5..fd6192d25e4 100644
--- a/code/_onclick/hud/ability_screen_objects.dm
+++ b/code/_onclick/hud/ability_screen_objects.dm
@@ -326,10 +326,10 @@
if(my_mob.client)
toggle_open(2) //forces the icons to refresh on screen
-/obj/screen/ability/obj_based/psionic/examine(mob/user)
- to_chat(user, SPAN_NOTICE("This ability is [connected_power.name]."))
- to_chat(user, SPAN_NOTICE("[connected_power.desc]"))
- return TRUE
+/obj/screen/ability/obj_based/psionic/get_examine_text(mob/user)
+ . = ..()
+ . += SPAN_NOTICE("This ability is [connected_power.name].")
+ . += SPAN_NOTICE("[connected_power.desc]")
/// Technomancer.
/obj/screen/ability/obj_based/technomancer
diff --git a/code/datums/ai_laws.dm b/code/datums/ai_laws.dm
index a3c324e54cf..87ad9699a64 100644
--- a/code/datums/ai_laws.dm
+++ b/code/datums/ai_laws.dm
@@ -237,6 +237,22 @@ var/global/const/base_law_type = /datum/ai_laws/nanotrasen
if(ismob(who) && M.vr_mob)
to_chat(M.vr_mob, "[law.get_index()]. [law.law]")
+/datum/ai_laws/proc/get_laws(var/who)
+ . = list()
+ sort_laws()
+ for(var/datum/ai_law/law in sorted_laws)
+ if(law == zeroth_law_borg)
+ continue
+ var/mob/M = who
+ if(law == zeroth_law)
+ . += "[law.get_index()]. [law.law]"
+ if(ismob(who) && M.vr_mob)
+ . += "[law.get_index()]. [law.law]"
+ else
+ . += "[law.get_index()]. [law.law]"
+ if(ismob(who) && M.vr_mob)
+ . += "[law.get_index()]. [law.law]"
+
/********************
* Stating Laws *
********************/
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index d8ad1186ced..e61605137fe 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -261,8 +261,18 @@
// Examination code for all atoms.
// Returns TRUE, the caller always expects TRUE
-// This is used rather than SHOULD_CALL_PARENT as it enforces that subtypes of a type that explicitly returns still call parent
+// This is used rather than SHOULD_CALL_PARENT as it enforces that subtypes of a type that explicitly returns still call parent.
+// You should usually be overriding get_examine_text(), unless you need special examine behaviour.
/atom/proc/examine(mob/user, distance, is_adjacent, infix = "", suffix = "")
+ var/list/examine_strings = get_examine_text(user, distance, is_adjacent, infix, suffix)
+ if(!length(examine_strings))
+ crash_with("Examine called with no examine strings on [src].")
+ to_chat(user, EXAMINE_BLOCK(examine_strings.Join("\n")))
+ return TRUE
+
+// This proc is what you should usually override to get things to show up inside the examine box.
+/atom/proc/get_examine_text(mob/user, distance, is_adjacent, infix = "", suffix = "")
+ . = list()
var/f_name = "\a [src]. [infix]"
if(src.blood_DNA && !istype(src, /obj/effect/decal))
if(gender == PLURAL)
@@ -274,28 +284,26 @@
else
f_name += "oil-stained [name][infix]."
- to_chat(user, "[icon2html(src, user)] That's [f_name] [suffix]") // Object name. I.e. "This is an Object. It is a normal-sized item."
+ . += "[icon2html(src, user)] That's [f_name] [suffix]" // Object name. I.e. "This is an Object. It is a normal-sized item."
if(src.desc)
- to_chat(user, src.desc) // Object description.
+ . += src.desc // Object description.
// Extra object descriptions examination code.
if(desc_extended || desc_info || (desc_antag && player_is_antag(user.mind))) // Checks if the object has a extended description, a mechanics description, and/or an antagonist description (and if the user is an antagonist).
- to_chat(user, FONT_SMALL(SPAN_NOTICE("\[?\] This object has additional examine information available. \[Show In Chat\]"))) // If any of the above are true, show that the object has more information available.
+ . += FONT_SMALL(SPAN_NOTICE("\[?\] This object has additional examine information available. \[Show In Chat\]")) // If any of the above are true, show that the object has more information available.
if(desc_extended) // If the item has a extended description, show that it is available.
- to_chat(user, FONT_SMALL("- This object has an extended description."))
+ . += FONT_SMALL("- This object has an extended description.")
if(desc_info) // If the item has a description regarding game mechanics, show that it is available.
- to_chat(user, FONT_SMALL(SPAN_NOTICE("- This object has additional information about mechanics.")))
+ . += FONT_SMALL(SPAN_NOTICE("- This object has additional information about mechanics."))
if(desc_antag && player_is_antag(user.mind)) // If the item has an antagonist description and the user is an antagonist, show that it is available.
- to_chat(user, FONT_SMALL(SPAN_ALERT("- This object has additional information for antagonists.")))
+ . += FONT_SMALL(SPAN_ALERT("- This object has additional information for antagonists."))
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(H.glasses)
H.glasses.glasses_examine_atom(src, H)
- return TRUE
-
// Same as examine(), but without the "this object has more info" thing and with the extra information instead.
/atom/proc/examine_fluff(mob/user, distance, is_adjacent, infix = "", suffix = "")
var/f_name = "\a [src][infix]."
diff --git a/code/game/gamemodes/cult/items/talisman.dm b/code/game/gamemodes/cult/items/talisman.dm
index 95e930656db..e0e16b5ebe3 100644
--- a/code/game/gamemodes/cult/items/talisman.dm
+++ b/code/game/gamemodes/cult/items/talisman.dm
@@ -15,13 +15,13 @@
QDEL_NULL(rune)
return ..()
-/obj/item/paper/talisman/examine(mob/user)
+/obj/item/paper/talisman/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(iscultist(user) && rune)
var/network_text = ""
if(network)
network_text = " This spell's network tag reads: [SPAN_CULT(network)]."
- to_chat(user, "The spell inscription reads: [SPAN_CULT(rune.name)].[network_text]")
+ . += "The spell inscription reads: [SPAN_CULT(rune.name)].[network_text]"
/obj/item/paper/talisman/attack_self(mob/living/user)
if(iscultist(user))
diff --git a/code/game/gamemodes/cult/items/tome.dm b/code/game/gamemodes/cult/items/tome.dm
index 8c22c6bf39f..1ff90ff11d4 100644
--- a/code/game/gamemodes/cult/items/tome.dm
+++ b/code/game/gamemodes/cult/items/tome.dm
@@ -96,13 +96,13 @@
if(do_after(scribe, 3 SECONDS))
create_rune(scribe, chosen_rune, target_turf)
-/obj/item/book/tome/examine(mob/user)
+/obj/item/book/tome/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(iscultist(user) || isobserver(user))
- to_chat(user, "The scriptures of Nar-Sie, The One Who Sees, The Geometer of Blood. Contains the details of every ritual his followers could think of. Most of these are useless, though.")
- to_chat(user, SPAN_WARNING("\[?\] This tome contains arcane knowledge of the Geometer's runes. \[Read Tome\]"))
+ . += "The scriptures of Nar-Sie, The One Who Sees, The Geometer of Blood. Contains the details of every ritual his followers could think of. Most of these are useless, though."
+ . += SPAN_WARNING("\[?\] This tome contains arcane knowledge of the Geometer's runes. \[Read Tome\]")
else
- to_chat(user, "An old, dusty tome with frayed edges and a sinister looking cover.")
+ . += "An old, dusty tome with frayed edges and a sinister looking cover."
/obj/item/book/tome/Topic(href, href_list)
if(href_list["read_tome"])
diff --git a/code/game/gamemodes/cult/runes/rune.dm b/code/game/gamemodes/cult/runes/rune.dm
index bf411a108ac..02cc98fb6cc 100644
--- a/code/game/gamemodes/cult/runes/rune.dm
+++ b/code/game/gamemodes/cult/runes/rune.dm
@@ -22,14 +22,14 @@
QDEL_NULL(rune)
return ..()
-/obj/effect/rune/examine(mob/user)
+/obj/effect/rune/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(iscultist(user) || isobserver(user))
- to_chat(user, rune.get_cultist_fluff_text())
- to_chat(user, "This rune [rune.can_be_talisman() ? SPAN_CULT("can") : "[SPAN_CULT("cannot")]"] be turned into a talisman.")
- to_chat(user, "This rune [rune.can_memorize() ? SPAN_CULT("can") : "[SPAN_CULT("cannot")]"] be memorized to be scribed without a tome.")
+ . += rune.get_cultist_fluff_text()
+ . += "This rune [rune.can_be_talisman() ? SPAN_CULT("can") : "[SPAN_CULT("cannot")]"] be turned into a talisman."
+ . += "This rune [rune.can_memorize() ? SPAN_CULT("can") : "[SPAN_CULT("cannot")]"] be memorized to be scribed without a tome."
else
- to_chat(user, rune.get_normal_fluff_text())
+ . += rune.get_normal_fluff_text()
/obj/effect/rune/attackby(obj/I, mob/user)
if(istype(I, /obj/item/book/tome) && iscultist(user))
diff --git a/code/game/gamemodes/cult/structures/pylon.dm b/code/game/gamemodes/cult/structures/pylon.dm
index 9984075df48..c59e6d69033 100644
--- a/code/game/gamemodes/cult/structures/pylon.dm
+++ b/code/game/gamemodes/cult/structures/pylon.dm
@@ -62,18 +62,18 @@
lang = new /datum/language/cultcommon()
update_icon()
-/obj/structure/cult/pylon/examine(var/mob/user)
+/obj/structure/cult/pylon/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(damagetaken)
switch(damagetaken)
if(1 to 8)
- to_chat(user, SPAN_WARNING("It has very faint hairline fractures."))
+ . += SPAN_WARNING("It has very faint hairline fractures.")
if(8 to 20)
- to_chat(user, SPAN_WARNING("It has several cracks across its surface."))
+ . += SPAN_WARNING("It has several cracks across its surface.")
if(20 to 30)
- to_chat(user, SPAN_WARNING("It is chipped and deeply cracked, it may shatter with much more pressure."))
+ . += SPAN_WARNING("It is chipped and deeply cracked, it may shatter with much more pressure.")
if(30 to INFINITY)
- to_chat(user, SPAN_WARNING("It is almost cleaved in two, the pylon looks like it will fall to shards under its own weight."))
+ . += SPAN_WARNING("It is almost cleaved in two, the pylon looks like it will fall to shards under its own weight.")
/obj/structure/cult/pylon/Move()
diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm
index 93cc6cbff19..1d621b4d04a 100644
--- a/code/game/gamemodes/nuclear/pinpointer.dm
+++ b/code/game/gamemodes/nuclear/pinpointer.dm
@@ -48,11 +48,11 @@
icon_state = "pinonfar"
return TRUE
-/obj/item/pinpointer/examine(mob/user)
+/obj/item/pinpointer/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
for(var/obj/machinery/nuclearbomb/bomb in SSmachinery.machinery)
if(bomb.timing)
- to_chat(user, "Extreme danger. Arming signal detected. Time remaining: [bomb.timeleft]")
+ . += "Extreme danger. Arming signal detected. Time remaining: [bomb.timeleft]"
/obj/item/pinpointer/Destroy()
active = 0
diff --git a/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm b/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm
index 35d240099a7..c9b394b97a6 100644
--- a/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm
+++ b/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm
@@ -22,9 +22,9 @@
one has been provided to allow you to leave your hideout."
uses = 1
-/obj/item/disposable_teleporter/examine(mob/user)
+/obj/item/disposable_teleporter/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, "[uses] uses remaining.")
+ . += "[uses] uses remaining."
/obj/item/disposable_teleporter/attack_self(mob/user as mob)
if(!uses)
diff --git a/code/game/machinery/CableLayer.dm b/code/game/machinery/CableLayer.dm
index e4107c54c91..273c17cdda2 100644
--- a/code/game/machinery/CableLayer.dm
+++ b/code/game/machinery/CableLayer.dm
@@ -55,9 +55,9 @@
return TRUE
return cable.attackby(O, user)
-/obj/machinery/cablelayer/examine(mob/user)
+/obj/machinery/cablelayer/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, "\The [src]'s cable reel has [cable.amount] length\s left.")
+ . += SPAN_NOTICE("\The [src]'s cable reel has [cable.amount] length\s left.")
/obj/machinery/cablelayer/proc/load_cable(var/obj/item/stack/cable_coil/CC)
if(istype(CC) && CC.amount)
diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm
index 3a47eb7b681..5c7409f5e13 100644
--- a/code/game/machinery/OpTable.dm
+++ b/code/game/machinery/OpTable.dm
@@ -118,9 +118,9 @@
patient.reset_view(null)
-/obj/machinery/optable/examine(var/mob/user)
+/obj/machinery/optable/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, SPAN_NOTICE("The neural suppressors are switched [suppressing ? "on" : "off"]."))
+ . += SPAN_NOTICE("The neural suppressors are switched [suppressing ? "on" : "off"].")
/obj/machinery/optable/ex_act(severity)
switch(severity)
diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm
index 0f095987a5d..0223ab761d4 100644
--- a/code/game/machinery/alarm.dm
+++ b/code/game/machinery/alarm.dm
@@ -1008,12 +1008,12 @@ pixel_x = 10;
..()
queue_icon_update()
-/obj/machinery/alarm/examine(mob/user)
+/obj/machinery/alarm/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if (buildstage < 2)
- to_chat(user, "It is not wired.")
+ . += SPAN_WARNING("It is not wired.")
if (buildstage < 1)
- to_chat(user, "The circuit is missing.")
+ . += SPAN_WARNING("The circuit is missing.")
/*
AIR ALARM CIRCUIT
Just a object used in constructing air alarms
diff --git a/code/game/machinery/atmoalter/meter.dm b/code/game/machinery/atmoalter/meter.dm
index af8de48b833..14caa958dc8 100644
--- a/code/game/machinery/atmoalter/meter.dm
+++ b/code/game/machinery/atmoalter/meter.dm
@@ -62,27 +62,27 @@
)
radio_connection.post_signal(src, signal)
-/obj/machinery/meter/examine(mob/user, distance, is_adjacent)
+/obj/machinery/meter/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
var/t = "A gas flow meter. "
- if(distance > 3 && !(istype(user, /mob/living/silicon/ai)))
- t += "You are too far away to read it."
+ if(distance > 3 && !isAI(user))
+ t += SPAN_WARNING("You are too far away to read it.")
else if(stat & (NOPOWER|BROKEN))
- t += "The display is off."
+ t += SPAN_WARNING("The display is off.")
else if(src.target)
var/datum/gas_mixture/environment = target.return_air()
if(environment)
t += "The pressure gauge reads [round(environment.return_pressure(), 0.01)] kPa; [round(environment.temperature,0.01)]K ([round(environment.temperature-T0C,0.01)]°C)"
else
- t += "The sensor error light is blinking."
+ t += SPAN_WARNING("The sensor error light is blinking.")
else
- t += "The connect error light is blinking."
+ t += SPAN_WARNING("The connect error light is blinking.")
- to_chat(user, t)
+ . += t
/obj/machinery/meter/Click()
diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm
index 9497f96e1b0..4dde27d308e 100644
--- a/code/game/machinery/bots/bots.dm
+++ b/code/game/machinery/bots/bots.dm
@@ -53,14 +53,13 @@
log_and_message_admins("emagged [src]'s inner circuits")
return 1
-/obj/machinery/bot/examine(mob/user)
+/obj/machinery/bot/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if (src.health < maxhealth)
if (src.health > maxhealth/3)
- to_chat(user, "[src]'s parts look loose.")
+ . += "[src]'s parts look loose."
else
- to_chat(user, "[src]'s parts look very loose!")
- return
+ . += "[src]'s parts look very loose!"
/obj/machinery/bot/attackby(obj/item/W as obj, mob/user as mob)
if(W.isscrewdriver())
diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm
index 036e0a18cc4..55e2234e90c 100644
--- a/code/game/machinery/cell_charger.dm
+++ b/code/game/machinery/cell_charger.dm
@@ -39,15 +39,15 @@
add_overlay("cell-o2")
add_overlay("[icon_state]-o[charge_level]")
-/obj/machinery/cell_charger/examine(mob/user, distance, is_adjacent)
+/obj/machinery/cell_charger/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance > 5)
- return TRUE
+ return
if(charging)
- to_chat(user, "There's \a [charging.name] in the charger. Current charge: [charging.percent()]%.")
+ . += "There's \a [charging.name] in the charger. Current charge: [charging.percent()]%."
else
- to_chat(user, SPAN_WARNING("The charger is empty."))
+ . += SPAN_WARNING("The charger is empty.")
/obj/machinery/cell_charger/attackby(obj/item/W, mob/user)
if(stat & BROKEN)
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index d7711ea29d5..b11544bc5d8 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -432,9 +432,9 @@
read_only = !read_only
to_chat(user, "You flip the write-protect tab to [read_only ? "protected" : "unprotected"].")
-/obj/item/disk/data/examine(mob/user)
+/obj/item/disk/data/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, text("The write-protect tab is set to [read_only ? "protected" : "unprotected"]."))
+ . += "The write-protect tab is set to [read_only ? "protected" : "unprotected"]."
/*
* Diskette Box
diff --git a/code/game/machinery/computer/arcade_orion.dm b/code/game/machinery/computer/arcade_orion.dm
index d231445a9b6..6acd6c3e4b3 100644
--- a/code/game/machinery/computer/arcade_orion.dm
+++ b/code/game/machinery/computer/arcade_orion.dm
@@ -500,11 +500,11 @@
w_class = ITEMSIZE_SMALL
var/active = 0 //if the ship is on
-/obj/item/orion_ship/examine(mob/user, distance, is_adjacent)
+/obj/item/orion_ship/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance > 1)
return
- to_chat(user, SPAN_NOTICE("There's a little switch on the bottom. It's flipped [active ? "up" : "down"]."))
+ . += SPAN_NOTICE("There's a little switch on the bottom. It's flipped [active ? "up" : "down"].")
/obj/item/orion_ship/attack_self(mob/user)
if(active)
diff --git a/code/game/machinery/computer/guestpass.dm b/code/game/machinery/computer/guestpass.dm
index 775bfdf6399..db54335fec0 100644
--- a/code/game/machinery/computer/guestpass.dm
+++ b/code/game/machinery/computer/guestpass.dm
@@ -17,17 +17,17 @@
else
return temp_access
-/obj/item/card/id/guest/examine(mob/user)
+/obj/item/card/id/guest/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(world.time > expiration_time)
- to_chat(usr, "This pass expired at: [worldtime2text(expiration_time)].")
+ . += SPAN_WARNING("This pass expired at: [worldtime2text(expiration_time)].")
else
- to_chat(usr, "This pass expires at: [worldtime2text(expiration_time)].")
+ . += "This pass expires at: [worldtime2text(expiration_time)]."
- to_chat(usr, "It grants access to the following areas:")
+ . += "It grants access to the following areas:"
for(var/A in temp_access)
- to_chat(usr, "[get_access_desc(A)]")
- to_chat(usr, "Issuing reason: [reason].")
+ . += "[get_access_desc(A)]"
+ . += "Issuing reason: [reason]."
/obj/item/card/id/guest/Initialize(mapload, duration)
. = ..(mapload)
diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index 229a0c65312..1c2fa8a7b82 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -23,25 +23,25 @@
var/state = 1
var/pitch_toggle = 1
-/obj/machinery/constructable_frame/examine(mob/user)
+/obj/machinery/constructable_frame/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
switch(state)
if(BLUEPRINT_STATE)
- to_chat(user, FONT_SMALL(SPAN_NOTICE("Click on \the [src] to finalize its direction.")))
- to_chat(user, FONT_SMALL(SPAN_WARNING("Use a wirecutter or a plasma cutter to disassemble \the [src].")))
+ . += FONT_SMALL(SPAN_NOTICE("Click on \the [src] to finalize its direction."))
+ . += FONT_SMALL(SPAN_WARNING("Use a wirecutter or a plasma cutter to disassemble \the [src]."))
if(WIRING_STATE)
- to_chat(user, FONT_SMALL(SPAN_NOTICE("Add cable coil to wire \the [src].")))
- to_chat(user, FONT_SMALL(SPAN_WARNING("Use a wrench or a plasma cutter to disassemble \the [src].")))
+ . += FONT_SMALL(SPAN_NOTICE("Add cable coil to wire \the [src]."))
+ . += FONT_SMALL(SPAN_WARNING("Use a wrench or a plasma cutter to disassemble \the [src]."))
if(CIRCUITBOARD_STATE)
- to_chat(user, FONT_SMALL(SPAN_NOTICE("Add the desired circuitboard.")))
- to_chat(user, FONT_SMALL(SPAN_WARNING("Use a wirecutter to remove the cables.")))
+ . += FONT_SMALL(SPAN_NOTICE("Add the desired circuitboard."))
+ . += FONT_SMALL(SPAN_WARNING("Use a wirecutter to remove the cables."))
if(COMPONENT_STATE)
- to_chat(user, FONT_SMALL(SPAN_NOTICE("Add the required components. Use the screwdriver to complete the machine.")))
- to_chat(user, FONT_SMALL(SPAN_WARNING("Use a crowbar to pry out the circuitboard and the components out.")))
+ . += FONT_SMALL(SPAN_NOTICE("Add the required components. Use the screwdriver to complete the machine."))
+ . += FONT_SMALL(SPAN_WARNING("Use a crowbar to pry out the circuitboard and the components out."))
if(machine_description)
- to_chat(user, FONT_SMALL(SPAN_NOTICE(machine_description)))
+ . += FONT_SMALL(SPAN_NOTICE(machine_description))
if(components_description)
- to_chat(user, FONT_SMALL(SPAN_NOTICE(components_description)))
+ . += FONT_SMALL(SPAN_NOTICE(components_description))
/obj/machinery/constructable_frame/proc/update_component_desc()
var/D
diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm
index 0509095110d..7c0952a83d9 100644
--- a/code/game/machinery/cryo.dm
+++ b/code/game/machinery/cryo.dm
@@ -69,11 +69,11 @@
node = target
break
-/obj/machinery/atmospherics/unary/cryo_cell/examine(mob/user, distance, is_adjacent)
+/obj/machinery/atmospherics/unary/cryo_cell/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(is_adjacent)
if(beaker)
- to_chat(user, SPAN_NOTICE("It is loaded with a beaker."))
+ . += SPAN_NOTICE("It is loaded with a beaker.")
if(occupant)
occupant.examine(arglist(args))
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index 7e8c040a688..9ffbf2811f9 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -297,10 +297,10 @@ GLOBAL_LIST_EMPTY(frozen_crew)
update_icon()
find_control_computer()
-/obj/machinery/cryopod/examine(mob/user, distance, is_adjacent)
+/obj/machinery/cryopod/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(occupant)
- to_chat(user, SPAN_NOTICE("[occupant] [occupant.get_pronoun("is")] inside \the [initial(name)]."))
+ . += SPAN_NOTICE("[occupant] [occupant.get_pronoun("is")] inside \the [initial(name)].")
/obj/machinery/cryopod/can_hold_dropped_items()
return FALSE
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 4a09d02def4..6c6d6ab7647 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -2060,19 +2060,19 @@ About the new airlock wires panel:
src.lock()
return
-/obj/machinery/door/airlock/examine(mob/user)
+/obj/machinery/door/airlock/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if (bolt_cut_state == BOLTS_EXPOSED)
- to_chat(user, "The bolt cover has been cut open.")
+ . += SPAN_WARNING("The bolt cover has been cut open.")
if (bolt_cut_state == BOLTS_CUT)
- to_chat(user, "The door bolts have been cut.")
+ . += SPAN_WARNING("The door bolts have been cut.")
if(bracer)
- to_chat(user, "\The [bracer] is installed on \the [src], preventing it from opening.")
- to_chat(user, bracer.health)
+ . += SPAN_WARNING("\The [bracer] is installed on \the [src], preventing it from opening.")
+ . += bracer.health
if(p_open)
- to_chat(user, "\The [src]'s maintenance panel has been unscrewed and is hanging open.")
+ . += SPAN_NOTICE("\The [src]'s maintenance panel has been unscrewed and is hanging open.")
if(islist(access_by_level) || islist(req_one_access_by_level))
- to_chat(user, SPAN_NOTICE("This airlock changes access requirements depending on the level."))
+ . += SPAN_NOTICE("This airlock changes access requirements depending on the level.")
/obj/machinery/door/airlock/emag_act(var/remaining_charges)
. = ..()
diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm
index ca77b6022ac..c9369d988de 100644
--- a/code/game/machinery/doors/brigdoors.dm
+++ b/code/game/machinery/doors/brigdoors.dm
@@ -56,14 +56,15 @@
stat |= BROKEN
update_icon()
-/obj/machinery/door_timer/examine(mob/user)
+/obj/machinery/door_timer/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- if(stat & (NOPOWER|BROKEN)) return
+ if(stat & (NOPOWER|BROKEN))
+ return
if(src.timing)
var/second = round(timeleft() % 60)
var/minute = round((timeleft() - second) / 60)
- to_chat(user, "Time remaining: [minute]:[second]")
+ . += "Time remaining: [minute]:[second]"
//Main door timer loop, if it's timing and time is >0 reduce time by 1.
// if it's less than 0, open door, reset timer
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index e9b0bcbcc11..5d2c838004d 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -402,16 +402,14 @@
update_icon()
return
-
-/obj/machinery/door/examine(mob/user)
+/obj/machinery/door/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(src.health < src.maxhealth / 4)
- to_chat(user, SPAN_WARNING("\The [src] looks like it's about to break!"))
+ . += SPAN_WARNING("\The [src] looks like it's about to break!")
else if(src.health < src.maxhealth / 2)
- to_chat(user, SPAN_WARNING("\The [src] looks seriously damaged!"))
+ . += SPAN_WARNING("\The [src] looks seriously damaged!")
else if(src.health < src.maxhealth * 3/4)
- to_chat(user, SPAN_WARNING("\The [src] shows signs of damage!"))
-
+ . += SPAN_WARNING("\The [src] shows signs of damage!")
/obj/machinery/door/proc/set_broken()
stat |= BROKEN
@@ -419,14 +417,12 @@
update_icon()
return
-
/obj/machinery/door/emp_act(severity)
. = ..()
if(prob(20/severity) && (istype(src,/obj/machinery/door/airlock) || istype(src,/obj/machinery/door/window)) )
open()
-
/obj/machinery/door/ex_act(severity)
var/bolted = 0
if (istype(src, /obj/machinery/door/airlock))
diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index 491801eb799..856724f38dd 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -148,44 +148,41 @@
/obj/machinery/door/firedoor/get_material()
return SSmaterials.get_material_by_name(DEFAULT_WALL_MATERIAL)
-/obj/machinery/door/firedoor/examine(mob/user, distance, is_adjacent)
+/obj/machinery/door/firedoor/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(!is_adjacent || !density)
return
if(pdiff >= FIREDOOR_MAX_PRESSURE_DIFF)
- to_chat(user, SPAN_DANGER("Current pressure differential is [pdiff] kPa. Opening door will likely result in injury."))
+ . += SPAN_DANGER("Current pressure differential is [pdiff] kPa. Opening door will likely result in injury.")
- to_chat(user, "Sensor readings:")
+ . += "Sensor readings:"
for(var/index = 1; index <= tile_info.len; index++)
- var/o = " "
switch(index)
if(1)
- o += "NORTH: "
+ . += "NORTH: "
if(2)
- o += "SOUTH: "
+ . += "SOUTH: "
if(3)
- o += "EAST: "
+ . += "EAST: "
if(4)
- o += "WEST: "
+ . += "WEST: "
if(tile_info[index] == null)
- o += "DATA UNAVAILABLE"
- to_chat(user, o)
+ . += "DATA UNAVAILABLE"
continue
var/celsius = convert_k2c(tile_info[index][1])
var/pressure = tile_info[index][2]
- o += ""
- o += "[celsius]°C "
- o += ""
- o += "[pressure]kPa"
- to_chat(user, o)
+ . += ""
+ . += "[celsius]°C "
+ . += ""
+ . += "[pressure]kPa"
if(islist(users_to_open) && users_to_open.len)
var/users_to_open_string = users_to_open[1]
if(users_to_open.len >= 2)
for(var/i = 2 to users_to_open.len)
users_to_open_string += ", [users_to_open[i]]"
- to_chat(user, "These people have opened \the [src] during an alert: [users_to_open_string].")
+ . += "These people have opened \the [src] during an alert: [users_to_open_string]."
/obj/machinery/door/firedoor/CollidedWith(atom/AM)
if(p_open || operating)
diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm
index 9554f98037d..b534efa61ad 100644
--- a/code/game/machinery/doppler_array.dm
+++ b/code/game/machinery/doppler_array.dm
@@ -19,9 +19,9 @@ var/list/doppler_arrays = list()
doppler_arrays -= src
return ..()
-/obj/machinery/doppler_array/examine(mob/user)
+/obj/machinery/doppler_array/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, SPAN_NOTICE("\The [src] is [active ? "listening for explosions" : "[SPAN_WARNING("inactive")]"]."))
+ . += SPAN_NOTICE("\The [src] is [active ? "listening for explosions" : "[SPAN_WARNING("inactive")]"].")
/obj/machinery/doppler_array/attack_hand(mob/user)
active = !active
diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm
index 689be996ed3..3c4e65179a0 100644
--- a/code/game/machinery/firealarm.dm
+++ b/code/game/machinery/firealarm.dm
@@ -20,12 +20,12 @@
///looping sound datum for our fire alarm siren.
var/datum/looping_sound/firealarm/soundloop
-/obj/machinery/firealarm/examine(mob/user)
+/obj/machinery/firealarm/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if((stat & (NOPOWER|BROKEN)) || buildstage != 2)
return
- to_chat(user, "The current alert level is [get_security_level()].")
+ . += "The current alert level is [get_security_level()]."
/obj/machinery/firealarm/update_icon()
cut_overlays()
diff --git a/code/game/machinery/floodlight.dm b/code/game/machinery/floodlight.dm
index a13f7d4c6e9..59eb8b0d3b7 100644
--- a/code/game/machinery/floodlight.dm
+++ b/code/game/machinery/floodlight.dm
@@ -19,15 +19,15 @@
. = ..()
cell = new /obj/item/cell(src)
-/obj/machinery/floodlight/examine(mob/user)
+/obj/machinery/floodlight/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(cell)
if(!cell.charge)
- to_chat(user, SPAN_WARNING("The installed [cell.name] is completely flat!"))
+ . += SPAN_WARNING("The installed [cell.name] is completely flat!")
return
- to_chat(user, SPAN_NOTICE("The installed [cell.name] has [Percent(cell.charge, cell.maxcharge)]% charge remaining."))
+ . += SPAN_NOTICE("The installed [cell.name] has [Percent(cell.charge, cell.maxcharge)]% charge remaining.")
else
- to_chat(user, SPAN_WARNING("\The [src] has no cell installed!"))
+ . += SPAN_WARNING("\The [src] has no cell installed!")
/obj/machinery/floodlight/update_icon()
cut_overlays()
diff --git a/code/game/machinery/floorlayer.dm b/code/game/machinery/floorlayer.dm
index 7d6c72b0533..1f421f6bc40 100644
--- a/code/game/machinery/floorlayer.dm
+++ b/code/game/machinery/floorlayer.dm
@@ -62,7 +62,7 @@
T = tgui_input_list(user, "Choose which set of tiles you want \the [src] to lay.", "Tiles", contents)
return TRUE
-/obj/machinery/floorlayer/examine(mob/user)
+/obj/machinery/floorlayer/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
var/dismantle = mode["dismantle"]
var/laying = mode["laying"]
@@ -70,7 +70,7 @@
var/number = 0
if (T)
number = T.get_amount()
- to_chat(user, SPAN_NOTICE("\The [src] has [number] tile\s, dismantle is [dismantle ? "on" : "off"], laying is [laying ? "on" : "off"], collect is [collect ? "on" : "off"]."))
+ . += SPAN_NOTICE("\The [src] has [number] tile\s, dismantle is [dismantle ? "on" : "off"], laying is [laying ? "on" : "off"], collect is [collect ? "on" : "off"].")
/obj/machinery/floorlayer/proc/reset()
on = FALSE
diff --git a/code/game/machinery/gumball.dm b/code/game/machinery/gumball.dm
index a3ce1555eed..7d9cad18da2 100644
--- a/code/game/machinery/gumball.dm
+++ b/code/game/machinery/gumball.dm
@@ -29,9 +29,9 @@
update_icon()
-/obj/machinery/gumballmachine/examine(mob/user)
+/obj/machinery/gumballmachine/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, SPAN_NOTICE("\The [src] costs [gumprice] credits to use."))
+ . += SPAN_NOTICE("\The [src] costs [gumprice] credits to use.")
/obj/machinery/gumballmachine/update_icon()
switch(amountleft)
diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm
index 8a7128c7eb7..fbc5ddfefd0 100644
--- a/code/game/machinery/hologram.dm
+++ b/code/game/machinery/hologram.dm
@@ -81,13 +81,13 @@ Possible to do for anyone motivated enough:
var/area/A = get_area(src)
holopad_id = "[A.name] ([src.x]-[src.y]-[src.z])"
-/obj/machinery/hologram/holopad/examine(mob/user)
+/obj/machinery/hologram/holopad/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(connected_pad)
if(established_connection)
- to_chat(user, SPAN_NOTICE("\The [src] is currently in a call with a holopad with ID: [connected_pad.holopad_id]"))
+ . += SPAN_NOTICE("\The [src] is currently in a call with a holopad with ID: [connected_pad.holopad_id]")
else
- to_chat(user, SPAN_NOTICE("\The [src] is currently pending connection with a holopad with ID: [connected_pad.holopad_id]"))
+ . += SPAN_NOTICE("\The [src] is currently pending connection with a holopad with ID: [connected_pad.holopad_id]")
/obj/machinery/hologram/holopad/update_icon(var/recurse = TRUE)
if(LAZYLEN(active_holograms) || has_established_connection())
diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm
index 173af9cbdbb..1acf847edc1 100644
--- a/code/game/machinery/iv_drip.dm
+++ b/code/game/machinery/iv_drip.dm
@@ -683,30 +683,30 @@
transfer_amount = amount
to_chat(usr, SPAN_NOTICE("Transfer rate set to [src.transfer_amount] u/sec."))
-/obj/machinery/iv_drip/examine(mob/user, distance, is_adjacent)
+/obj/machinery/iv_drip/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance > 2)
return
- to_chat(user, SPAN_NOTICE("[src] is [mode ? "injecting" : "taking blood"] at a rate of [src.transfer_amount] u/sec, the automatic injection stop mode is [toggle_stop ? "on" : "off"]. The Emergency Positive Pressure \
- system is [epp ? "on" : "off"]."))
+ . += SPAN_NOTICE("[src] is [mode ? "injecting" : "taking blood"] at a rate of [src.transfer_amount] u/sec, the automatic injection stop mode is [toggle_stop ? "on" : "off"]. The Emergency Positive Pressure \
+ system is [epp ? "on" : "off"].")
if(attached)
- to_chat(user, SPAN_NOTICE("\The [src] is attached to [attached]'s [vein.name]."))
+ . += SPAN_NOTICE("\The [src] is attached to [attached]'s [vein.name].")
if(beaker)
if(LAZYLEN(beaker.reagents.reagent_volumes))
- to_chat(user, SPAN_NOTICE("Attached is [icon2html(beaker, user)] \a [beaker] with [adv_scan ? "[beaker.reagents.total_volume] units of primarily [beaker.reagents.get_primary_reagent_name()]" : "some liquid"]."))
+ . += SPAN_NOTICE("Attached is [icon2html(beaker, user)] \a [beaker] with [adv_scan ? "[beaker.reagents.total_volume] units of primarily [beaker.reagents.get_primary_reagent_name()]" : "some liquid"].")
else
- to_chat(user, SPAN_NOTICE("Attached is [icon2html(beaker, user)] \a [beaker]. It is empty."))
+ . += SPAN_NOTICE("Attached is [icon2html(beaker, user)] \a [beaker]. It is empty.")
else
- to_chat(user, SPAN_NOTICE("No chemicals are attached."))
+ . += SPAN_NOTICE("No chemicals are attached.")
if(tank)
- to_chat(user, SPAN_NOTICE("Installed is [icon2html(tank, user)] [is_loose ? "\a [tank] sitting loose" : "\a [tank] secured"] on the stand. The meter shows [round(tank.air_contents.return_pressure())]kPa, \
- with the pressure set to [round(tank.distribute_pressure)]kPa. The valve is [valve_open ? "open" : "closed"]."))
+ . += SPAN_NOTICE("Installed is [icon2html(tank, user)] [is_loose ? "\a [tank] sitting loose" : "\a [tank] secured"] on the stand. The meter shows [round(tank.air_contents.return_pressure())]kPa, \
+ with the pressure set to [round(tank.distribute_pressure)]kPa. The valve is [valve_open ? "open" : "closed"].")
else
- to_chat(user, SPAN_NOTICE("No gas tank installed."))
+ . += SPAN_NOTICE("No gas tank installed.")
if(breath_mask)
- to_chat(user, SPAN_NOTICE("\The [src] has [icon2html(breath_mask, user)] \a [breath_mask] installed. [breather ? breather : "No one"] is wearing it."))
+ . += SPAN_NOTICE("\The [src] has [icon2html(breath_mask, user)] \a [breath_mask] installed. [breather ? breather : "No one"] is wearing it.")
else
- to_chat(user, SPAN_NOTICE("No breath mask installed."))
+ . += SPAN_NOTICE("No breath mask installed.")
/obj/machinery/iv_drip/RefreshParts()
..()
diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm
index c59b93362da..c6ed1b0c35d 100644
--- a/code/game/machinery/lightswitch.dm
+++ b/code/game/machinery/lightswitch.dm
@@ -37,10 +37,10 @@
else if (light_range)
set_light(FALSE)
-/obj/machinery/light_switch/examine(mob/user, distance, is_adjacent)
+/obj/machinery/light_switch/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 1)
- to_chat(user, "A light switch. It is [on? "on" : "off"].")
+ . += "It is [on ? "on" : "off"]."
/obj/machinery/light_switch/attack_hand(mob/user)
playsound(src, /singleton/sound_category/switch_sound, 30)
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index 90a61c3089f..5d442d1dc65 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -170,10 +170,10 @@ Class Procs:
return ..()
-/obj/machinery/examine(mob/user, distance, is_adjacent)
+/obj/machinery/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(signaler && is_adjacent)
- to_chat(user, SPAN_WARNING("\The [src] has a hidden signaler attached to it."))
+ . += SPAN_WARNING("\The [src] has a hidden signaler attached to it.")
// /obj/machinery/proc/process_all()
// /* Uncomment this if/when you need component processing
diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm
index d78de3369dc..d699b15039f 100644
--- a/code/game/machinery/portable_turret.dm
+++ b/code/game/machinery/portable_turret.dm
@@ -79,7 +79,7 @@
var/old_angle = 0
-/obj/machinery/porta_turret/examine(mob/user)
+/obj/machinery/porta_turret/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
var/msg = ""
if(!health)
@@ -92,7 +92,7 @@
msg += SPAN_NOTICE("\The [src] is slightly damaged!")
else
msg += SPAN_GOOD("\The [src] is not damaged!")
- to_chat(user, msg)
+ . += msg
/obj/machinery/porta_turret/crescent
enabled = FALSE
diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index a656b4bbd14..194504378dc 100644
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -32,9 +32,9 @@
var/portable = 1
var/list/chargebars
-/obj/machinery/recharger/examine(mob/user, distance, is_adjacent)
+/obj/machinery/recharger/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, "There is [charging ? "\a [charging]" : "nothing"] in [src].")
+ . += "There is [charging ? "\a [charging]" : "nothing"] in [src]."
if (charging && distance <= 3)
var/obj/item/cell/C = charging.get_cell()
if (istype(C) && user.client && (!user.progressbars || !user.progressbars[src]))
diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm
index 39dfcdbbda2..790c0841e3f 100644
--- a/code/game/machinery/rechargestation.dm
+++ b/code/game/machinery/rechargestation.dm
@@ -110,9 +110,9 @@
D.upgrade_cooldown = world.time + 1 MINUTE
D.master_matrix.apply_upgrades(D)
-/obj/machinery/recharge_station/examine(mob/user)
+/obj/machinery/recharge_station/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, "The charge meter reads: [round(chargepercentage())]%.")
+ . += "The charge meter reads: [round(chargepercentage())]%."
/obj/machinery/recharge_station/proc/chargepercentage()
if(!cell)
diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm
index 93dbcded365..0a3960d31a0 100644
--- a/code/game/machinery/spaceheater.dm
+++ b/code/game/machinery/spaceheater.dm
@@ -36,14 +36,13 @@
if(panel_open)
add_overlay("sheater-open")
-/obj/machinery/space_heater/examine(mob/user)
+/obj/machinery/space_heater/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
-
- to_chat(user, "The heater is [on ? "on" : "off"] and the hatch is [panel_open ? "open" : "closed"].")
+ . += "The heater is [on ? "on" : "off"] and the hatch is [panel_open ? "open" : "closed"]."
if(panel_open)
- to_chat(user, "The power cell is [cell ? "installed" : "missing"].")
+ . += "The power cell is [cell ? "installed" : "missing"]."
else
- to_chat(user, "The charge meter reads [cell ? round(cell.percent(),1) : 0]%")
+ . += "The charge meter reads [cell ? round(cell.percent(),1) : 0]%"
return
/obj/machinery/space_heater/powered()
diff --git a/code/game/machinery/stargazer.dm b/code/game/machinery/stargazer.dm
index 872dcae64aa..04441f224e3 100644
--- a/code/game/machinery/stargazer.dm
+++ b/code/game/machinery/stargazer.dm
@@ -14,10 +14,10 @@
star_system_image = image(icon, null, "stargazer_[SSatlas.current_sector.name]", EFFECTS_ABOVE_LIGHTING_LAYER)
power_change()
-/obj/machinery/stargazer/examine(mob/user)
+/obj/machinery/stargazer/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(!(stat & BROKEN) && !(stat & NOPOWER))
- to_chat(user, SPAN_NOTICE("\The [src] shows the current sector to be [SSatlas.current_sector.name]."))
+ . += SPAN_NOTICE("\The [src] shows the current sector to be [SSatlas.current_sector.name].")
/obj/machinery/stargazer/power_change()
..()
diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm
index b7785ff4318..9008e125fda 100644
--- a/code/game/machinery/status_display.dm
+++ b/code/game/machinery/status_display.dm
@@ -137,10 +137,10 @@
return 1
return 0
-/obj/machinery/status_display/examine(mob/user)
+/obj/machinery/status_display/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(mode != STATUS_DISPLAY_BLANK && mode != STATUS_DISPLAY_ALERT)
- to_chat(user, "The display says:
\t[sanitize(message1)]
\t[sanitize(message2)]")
+ . += "The display says:
\t[sanitize(message1)]
\t[sanitize(message2)]"
/obj/machinery/status_display/proc/set_message(m1, m2)
if(m1)
diff --git a/code/game/machinery/vending_items.dm b/code/game/machinery/vending_items.dm
index c6c5f223d70..7fe06ced116 100644
--- a/code/game/machinery/vending_items.dm
+++ b/code/game/machinery/vending_items.dm
@@ -13,12 +13,12 @@
w_class = ITEMSIZE_NORMAL
var/charges = 0
-/obj/item/device/vending_refill/examine(mob/user)
+/obj/item/device/vending_refill/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(charges > 0)
- to_chat(user, "It can restock [charges] item(s).")
+ . += "It can restock [charges] item(s)."
else
- to_chat(user, "It's empty!")
+ . += SPAN_WARNING("It's empty!")
/obj/item/device/vending_refill/proc/restock_inventory(var/obj/machinery/vending/vendor)
if(vendor)
diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm
index 3bfd4ab4505..7e0cbde42ea 100644
--- a/code/game/objects/effects/decals/Cleanable/humans.dm
+++ b/code/game/objects/effects/decals/Cleanable/humans.dm
@@ -58,7 +58,7 @@
if (dries)
animate(src, color = "#000000", time = drytime, loop = 0, flags = ANIMATION_RELATIVE)
-/obj/effect/decal/cleanable/blood/examine()
+/obj/effect/decal/cleanable/blood/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
if(dries && world.time > (bleed_time + drytime))
name = dryname
desc = drydesc
@@ -189,9 +189,9 @@
else
icon_state = "writing1"
-/obj/effect/decal/cleanable/blood/writing/examine(mob/user)
+/obj/effect/decal/cleanable/blood/writing/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, "It reads: \"[message]\"")
+ . += "It reads: \"[message]\""
/obj/effect/decal/cleanable/blood/gibs
name = "gibs"
diff --git a/code/game/objects/effects/plastic_explosive.dm b/code/game/objects/effects/plastic_explosive.dm
index 5cfd547d7c7..0ed64727486 100644
--- a/code/game/objects/effects/plastic_explosive.dm
+++ b/code/game/objects/effects/plastic_explosive.dm
@@ -37,10 +37,10 @@
pixel_x = pixel_shifts[1]
pixel_y = pixel_shifts[2]
-/obj/effect/plastic_explosive/examine(mob/user, distance, is_adjacent)
+/obj/effect/plastic_explosive/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(is_adjacent)
- to_chat(user, SPAN_WARNING("It is set to blow in [round((parent.detonate_time - world.time) / 10)] seconds."))
+ . += SPAN_WARNING("It is set to blow in [round((parent.detonate_time - world.time) / 10)] seconds.")
/obj/effect/plastic_explosive/attack_hand(mob/living/user)
to_chat(user, SPAN_WARNING("\The [src] is solidly attached, it doesn't budge!"))
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 01b836f97f0..dbadd0a588c 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -323,18 +323,18 @@
I.forceMove(T)
-/obj/item/examine(mob/user, distance)
+/obj/item/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
var/size
switch(src.w_class)
- if (5.0 to INFINITY)
+ if (ITEMSIZE_HUGE to INFINITY)
size = "huge"
- if (4.0 to 5.0)
+ if (ITEMSIZE_LARGE to ITEMSIZE_HUGE)
size = "bulky"
- if (3.0 to 4.0)
+ if (ITEMSIZE_NORMAL to ITEMSIZE_LARGE)
size = "normal-sized"
- if (2.0 to 3.0)
+ if (ITEMSIZE_SMALL to ITEMSIZE_NORMAL)
size = "small"
- if (0 to 2.0)
+ if (0 to ITEMSIZE_SMALL)
size = "tiny"
//Changed this switch to ranges instead of tiered values, to cope with granularity and also
//things outside its range ~Nanako
@@ -342,7 +342,7 @@
. = ..(user, distance, "", "It is a [size] item.")
var/datum/component/armor/armor_component = GetComponent(/datum/component/armor)
if(armor_component)
- to_chat(user, FONT_SMALL(SPAN_NOTICE("\[?\] This item has armor values. \[Show Armor Values\]")))
+ . += FONT_SMALL(SPAN_NOTICE("\[?\] This item has armor values. \[Show Armor Values\]"))
/obj/item/Topic(href, href_list)
if(href_list["examine_armor"])
diff --git a/code/game/objects/items/airbubble.dm b/code/game/objects/items/airbubble.dm
index 5945dcc210b..9c7ede86eef 100644
--- a/code/game/objects/items/airbubble.dm
+++ b/code/game/objects/items/airbubble.dm
@@ -82,16 +82,16 @@
slowdown = 0
// Examine to see tank pressure
-/obj/structure/closet/airbubble/examine(mob/user)
+/obj/structure/closet/airbubble/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(!isnull(internal_tank))
- to_chat(user, "\The [src] has [internal_tank] attached, that displays [round(internal_tank.air_contents.return_pressure() ? internal_tank.air_contents.return_pressure() : 0)] KPa.")
+ . += "\The [src] has [internal_tank] attached, that displays [round(internal_tank.air_contents.return_pressure() ? internal_tank.air_contents.return_pressure() : 0)] KPa."
else
- to_chat(user, "\The [src] has no tank attached.")
+ . += "\The [src] has no tank attached."
if (cell)
- to_chat(user, "\The [src] has [cell] attached, the charge meter reads [round(cell.percent())]%.")
+ . += "\The [src] has [cell] attached, the charge meter reads [round(cell.percent())]%."
else
- to_chat(user, "[src] has no power cell installed.")
+ . += "[src] has no power cell installed."
/obj/structure/closet/airbubble/can_open()
if(zipped)
diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm
index da2e29470c2..8bd7523b7ff 100644
--- a/code/game/objects/items/bodybag.dm
+++ b/code/game/objects/items/bodybag.dm
@@ -234,11 +234,11 @@
return airtank
..()
-/obj/structure/closet/body_bag/cryobag/examine(mob/user, distance, is_adjacent)
+/obj/structure/closet/body_bag/cryobag/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user,"The stasis meter shows '[stasis_power]x'.")
+ . += "The stasis meter shows '[stasis_power]x'."
if(is_adjacent && length(contents)) //The bag's rather thick and opaque from a distance.
- to_chat(user, "You peer into \the [src].")
+ . += "You peer into \the [src]."
for(var/mob/living/L in contents)
L.examine(arglist(args))
diff --git a/code/game/objects/items/contraband.dm b/code/game/objects/items/contraband.dm
index 92d5a363e58..7c6a405ae63 100644
--- a/code/game/objects/items/contraband.dm
+++ b/code/game/objects/items/contraband.dm
@@ -124,10 +124,10 @@
w_class = ITEMSIZE_TINY
volume = 50
-/obj/item/reagent_containers/powder/examine(mob/user)
+/obj/item/reagent_containers/powder/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(reagents)
- to_chat(user, SPAN_NOTICE("There's about [reagents.total_volume] unit\s here."))
+ . += SPAN_NOTICE("There's about [reagents.total_volume] unit\s here.")
/obj/item/reagent_containers/powder/Initialize()
. = ..()
diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm
index 38b2c6d6599..b92f71b3cca 100644
--- a/code/game/objects/items/defib.dm
+++ b/code/game/objects/items/defib.dm
@@ -62,12 +62,12 @@
overlays = new_overlays
-/obj/item/defibrillator/examine(mob/user)
+/obj/item/defibrillator/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(bcell)
- to_chat(user, "The charge meter is showing [bcell.percent()]% charge left.")
+ . += "The charge meter is showing [bcell.percent()]% charge left."
else
- to_chat(user, "There is no cell inside.")
+ . += "There is no cell inside."
/obj/item/defibrillator/ui_action_click()
toggle_paddles()
diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm
index d41b1f3eb71..1bf8974fa5e 100644
--- a/code/game/objects/items/devices/aicard.dm
+++ b/code/game/objects/items/devices/aicard.dm
@@ -9,7 +9,7 @@
var/flush = 0
var/mob/living/silicon/ai/carded_ai
-/obj/item/aicard/examine(mob/user)
+/obj/item/aicard/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
var/message = "Status of [carded_ai] is: "
if(!carded_ai)
@@ -20,7 +20,7 @@
message += SPAN_NOTICE("active.")
else
message += SPAN_WARNING("inactive.")
- to_chat(user, message)
+ . += message
/obj/item/aicard/attack(mob/living/silicon/decoy/M as mob, mob/user as mob, var/target_zone)
if (!istype (M, /mob/living/silicon/decoy))
diff --git a/code/game/objects/items/devices/augment_implanter.dm b/code/game/objects/items/devices/augment_implanter.dm
index cf0adb93e5a..a6e153bcf5c 100644
--- a/code/game/objects/items/devices/augment_implanter.dm
+++ b/code/game/objects/items/devices/augment_implanter.dm
@@ -15,12 +15,12 @@
if(!augment_type)
augment_type = new new_augment(src)
-/obj/item/device/augment_implanter/examine(mob/user)
+/obj/item/device/augment_implanter/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(augment_type)
- to_chat(user, FONT_SMALL(SPAN_NOTICE("\The [augment_type] can be seen floating inside \the [src]'s biogel.")))
+ . += FONT_SMALL(SPAN_NOTICE("\The [augment_type] can be seen floating inside \the [src]'s biogel."))
else
- to_chat(user, FONT_SMALL(SPAN_WARNING("It is spent.")))
+ . += FONT_SMALL(SPAN_WARNING("It is spent."))
/obj/item/device/augment_implanter/afterattack(mob/living/L, mob/user, proximity)
if(!proximity)
diff --git a/code/game/objects/items/devices/auto_cpr.dm b/code/game/objects/items/devices/auto_cpr.dm
index 003c19e4095..56c97b8e710 100644
--- a/code/game/objects/items/devices/auto_cpr.dm
+++ b/code/game/objects/items/devices/auto_cpr.dm
@@ -477,17 +477,17 @@
playsound(usr, 'sound/machines/click.ogg', 50)
update_icon()
-/obj/item/auto_cpr/examine(mob/user, distance, is_adjacent)
+/obj/item/auto_cpr/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(!is_adjacent)
return
- to_chat(user, SPAN_NOTICE("\The [src]'s [EPP] is currently [epp_mode ? "on" : "off"], while the Auto CPR is [cpr_mode ? "on" : "off"]."))
+ . += SPAN_NOTICE("\The [src]'s [EPP] is currently [epp_mode ? "on" : "off"], while the Auto CPR is [cpr_mode ? "on" : "off"].")
if(battery)
- to_chat(user, SPAN_NOTICE("It currently has a battery with [battery.percent()]% charge."))
+ . += SPAN_NOTICE("It currently has a battery with [battery.percent()]% charge.")
if(tank)
- to_chat(user, SPAN_NOTICE("It has [icon2html(tank, user)] \the [tank] installed. The meter shows [round(tank.air_contents.return_pressure())]kPa, \
- with the pressure set to [round(tank.distribute_pressure)]kPa.[epp_active ? " The [EPP] is active." : ""]"))
+ . += SPAN_NOTICE("It has [icon2html(tank, user)] \the [tank] installed. The meter shows [round(tank.air_contents.return_pressure())]kPa, \
+ with the pressure set to [round(tank.distribute_pressure)]kPa.[epp_active ? " The [EPP] is active." : ""]")
if(breath_mask)
- to_chat(user, SPAN_NOTICE("It has [icon2html(breath_mask, user)] \the [breath_mask] installed."))
+ . += SPAN_NOTICE("It has [icon2html(breath_mask, user)] \the [breath_mask] installed.")
#undef EPP
diff --git a/code/game/objects/items/devices/dociler.dm b/code/game/objects/items/devices/dociler.dm
index a3b4da2d30d..809220fc4d9 100644
--- a/code/game/objects/items/devices/dociler.dm
+++ b/code/game/objects/items/devices/dociler.dm
@@ -12,9 +12,9 @@
var/loaded = 1
var/mode = "completely"
-/obj/item/device/dociler/examine(var/mob/user)
+/obj/item/device/dociler/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, "It is currently set to [mode] docile mode.")
+ . += "It is currently set to [mode] docile mode."
/obj/item/device/dociler/attack_self(var/mob/user)
if(mode == "somewhat")
diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm
index 920908f279e..942589cac69 100644
--- a/code/game/objects/items/devices/flash.dm
+++ b/code/game/objects/items/devices/flash.dm
@@ -17,13 +17,13 @@
var/last_use = 0
-/obj/item/device/flash/examine(mob/user, distance)
+/obj/item/device/flash/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(!broken)
var/num_charges = max(0, max_charges - times_used)
- to_chat(user, SPAN_NOTICE("The charge indicator shows [num_charges] charge[num_charges == 1 ? "" : "s"] remain[num_charges == 1 ? "s" : ""]."))
+ . += SPAN_NOTICE("The charge indicator shows [num_charges] charge[num_charges == 1 ? "" : "s"] remain[num_charges == 1 ? "s" : ""].")
else
- to_chat(user, SPAN_WARNING("\The [src]'s bulb is burnt out!"))
+ . += SPAN_WARNING("\The [src]'s bulb is burnt out!")
/obj/item/device/flash/proc/clumsy_check(mob/user)
if(user && (user.is_clumsy()) && prob(50))
diff --git a/code/game/objects/items/devices/geiger.dm b/code/game/objects/items/devices/geiger.dm
index 9014a0b7f91..78b9a4dca4e 100644
--- a/code/game/objects/items/devices/geiger.dm
+++ b/code/game/objects/items/devices/geiger.dm
@@ -33,13 +33,13 @@
radiation_count = SSradiation.get_rads_at_turf(get_turf(src))
update_icon()
-/obj/item/device/geiger/examine(mob/user)
+/obj/item/device/geiger/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
var/msg = "[scanning ? "ambient" : "stored"] Radiation level: [radiation_count ? radiation_count : "0"] IU/s."
if(radiation_count > RAD_LEVEL_LOW)
- to_chat(user, SPAN_WARNING("[msg]"))
+ . += SPAN_WARNING("[msg]")
else
- to_chat(user, SPAN_NOTICE("[msg]"))
+ . += SPAN_NOTICE("[msg]")
/obj/item/device/geiger/attack_self(mob/user)
scanning = !scanning
diff --git a/code/game/objects/items/devices/holowarrant.dm b/code/game/objects/items/devices/holowarrant.dm
index 25722447585..0d8d0f0fba7 100644
--- a/code/game/objects/items/devices/holowarrant.dm
+++ b/code/game/objects/items/devices/holowarrant.dm
@@ -21,10 +21,10 @@
unload_warrant()
return ..()
-/obj/item/device/holowarrant/examine(mob/user, distance, is_adjacent)
+/obj/item/device/holowarrant/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(selected_warrant)
- to_chat(user, "It's a holographic warrant for '[selected_warrant.name]'.")
+ . += "It's a holographic warrant for '[selected_warrant.name]'."
/obj/item/device/holowarrant/attack_self(mob/living/user as mob)
if(!LAZYLEN(SSrecords.warrants))
diff --git a/code/game/objects/items/devices/lighting/flashlight.dm b/code/game/objects/items/devices/lighting/flashlight.dm
index 8b9241ec590..204bd31140d 100644
--- a/code/game/objects/items/devices/lighting/flashlight.dm
+++ b/code/game/objects/items/devices/lighting/flashlight.dm
@@ -124,14 +124,14 @@
M.update_inv_r_ear()
M.update_inv_head()
-/obj/item/device/flashlight/examine(mob/user, distance, is_adjacent)
+/obj/item/device/flashlight/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(power_use && brightness_level)
- to_chat(user, SPAN_NOTICE("\The [src] is set to [brightness_level]."))
+ . += SPAN_NOTICE("\The [src] is set to [brightness_level].")
if(cell)
- to_chat(user, SPAN_NOTICE("\The [src] has \a [cell] attached. It has [round(cell.percent())]% charge remaining."))
+ . += SPAN_NOTICE("\The [src] has \a [cell] attached. It has [round(cell.percent())]% charge remaining.")
if(light_wedge && isturf(loc))
- to_chat(user, FONT_SMALL(SPAN_NOTICE("\The [src] is facing [dir2text(dir)].")))
+ . += FONT_SMALL(SPAN_NOTICE("\The [src] is facing [dir2text(dir)]."))
/obj/item/device/flashlight/attack_self(mob/user)
if(always_on)
diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm
index f18ce37c793..f0dbacaa7e6 100644
--- a/code/game/objects/items/devices/lightreplacer.dm
+++ b/code/game/objects/items/devices/lightreplacer.dm
@@ -72,12 +72,12 @@
failmsg = "The [name]'s refill light blinks red."
..()
-/obj/item/device/lightreplacer/examine(mob/user, distance, is_adjacent)
+/obj/item/device/lightreplacer/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 2)
- to_chat(user, "It has [uses] lights remaining.")
+ . += "It has [uses] lights remaining."
if (store_broken)
- to_chat(user, "It is storing [stored()]/[max_stored] broken lights.")
+ . += "It is storing [stored()]/[max_stored] broken lights."
/obj/item/device/lightreplacer/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/stack/material) && W.get_material_name() == "glass")
diff --git a/code/game/objects/items/devices/magnetic_lock.dm b/code/game/objects/items/devices/magnetic_lock.dm
index eed357706c6..ec54e2877bd 100644
--- a/code/game/objects/items/devices/magnetic_lock.dm
+++ b/code/game/objects/items/devices/magnetic_lock.dm
@@ -76,17 +76,17 @@
status = STATUS_ACTIVE
attach(newtarget)
-/obj/item/device/magnetic_lock/examine(mob/user)
+/obj/item/device/magnetic_lock/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if (status == STATUS_BROKEN)
- to_chat(user, "It looks broken!")
+ . += "It looks broken!"
else
if (powercell)
var/power = round(powercell.charge / powercell.maxcharge * 100)
- to_chat(user, "The powercell is at [power]% charge.")
+ . += "The powercell is at [power]% charge."
else
- to_chat(user, "It has no powercell to power it!")
+ . += "It has no powercell to power it!"
/obj/item/device/magnetic_lock/attack_hand(var/mob/user)
add_fingerprint(user)
diff --git a/code/game/objects/items/devices/modkit.dm b/code/game/objects/items/devices/modkit.dm
index 913708e1d20..71b8bfa88f2 100644
--- a/code/game/objects/items/devices/modkit.dm
+++ b/code/game/objects/items/devices/modkit.dm
@@ -69,9 +69,9 @@
user.drop_from_inventory(src,O)
qdel(src)
-/obj/item/device/modkit/examine(mob/user)
+/obj/item/device/modkit/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, "It looks as though it modifies voidsuits to fit [target_species] users.")
+ . += "It looks as though it modifies voidsuits to fit [target_species] users."
/obj/item/device/modkit/tajaran
name = "tajaran voidsuit modification kit"
diff --git a/code/game/objects/items/devices/paint_sprayer.dm b/code/game/objects/items/devices/paint_sprayer.dm
index 26de453f444..6994521e504 100644
--- a/code/game/objects/items/devices/paint_sprayer.dm
+++ b/code/game/objects/items/devices/paint_sprayer.dm
@@ -289,9 +289,9 @@
playsound(get_turf(src), 'sound/effects/spray3.ogg', 30, 1, -6)
return .
-/obj/item/device/paint_sprayer/examine(mob/user)
+/obj/item/device/paint_sprayer/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, "It is configured to produce the '[decal]' decal with a direction of '[paint_dir]' using [paint_colour] paint.")
+ . += "It is configured to produce the '[SPAN_NOTICE(decal)]' decal with a direction of '[SPAN_NOTICE(paint_dir)]' using [SPAN_NOTICE(paint_colour)] paint."
/obj/item/device/paint_sprayer/verb/choose_colour()
set name = "Choose Colour"
diff --git a/code/game/objects/items/devices/personal_shield.dm b/code/game/objects/items/devices/personal_shield.dm
index c6e4cfab8ec..d2e5b3b9c35 100644
--- a/code/game/objects/items/devices/personal_shield.dm
+++ b/code/game/objects/items/devices/personal_shield.dm
@@ -13,10 +13,11 @@
var/upkeep_cost = 2
var/obj/aura/personal_shield/device/shield
-/obj/item/device/personal_shield/examine(mob/user, distance, is_adjacent)
+/obj/item/device/personal_shield/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(is_adjacent)
- to_chat(user, SPAN_NOTICE("\The [src] has [cell.charge] charge remaining. Shield upkeep costs [upkeep_cost] charge, and blocking a shot costs [charge_per_shot] charge."))
+ . += SPAN_NOTICE("\The [src] has [cell.charge] charge remaining.")
+ . += SPAN_NOTICE("Shield upkeep costs [upkeep_cost] charge, and blocking a shot costs [SPAN_NOTICE(charge_per_shot)] charge.")
/obj/item/device/personal_shield/Initialize()
. = ..()
diff --git a/code/game/objects/items/devices/pipe_painter.dm b/code/game/objects/items/devices/pipe_painter.dm
index 1daf45c43bf..a5c46b0e5de 100644
--- a/code/game/objects/items/devices/pipe_painter.dm
+++ b/code/game/objects/items/devices/pipe_painter.dm
@@ -31,6 +31,6 @@
/obj/item/device/pipe_painter/attack_self(var/mob/user)
mode = tgui_input_list(user, "Which colour do you want to use?", "Pipe Painter", modes, mode)
-/obj/item/device/pipe_painter/examine(var/mob/user)
+/obj/item/device/pipe_painter/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, "It is in [mode] mode.")
+ . += "It is in [mode] mode."
diff --git a/code/game/objects/items/devices/radio/beacon.dm b/code/game/objects/items/devices/radio/beacon.dm
index 52a4159b280..15f1ac80a2e 100644
--- a/code/game/objects/items/devices/radio/beacon.dm
+++ b/code/game/objects/items/devices/radio/beacon.dm
@@ -17,10 +17,10 @@ GLOBAL_LIST_EMPTY(teleportbeacons)
GLOB.teleportbeacons -= src
return ..()
-/obj/item/device/radio/beacon/examine(mob/user)
+/obj/item/device/radio/beacon/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(anchored)
- to_chat(user, SPAN_NOTICE("It's been secured to the ground with anchoring screws."))
+ . += SPAN_NOTICE("It's been secured to the ground with anchoring screws.")
/obj/item/device/radio/beacon/attack_hand(mob/user)
if(anchored)
diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index dde58f63a13..75a51b47678 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -56,14 +56,14 @@
/obj/item/device/radio/headset/list_channels(var/mob/user)
return list_secure_channels()
-/obj/item/device/radio/headset/examine(mob/user, distance, is_adjacent)
+/obj/item/device/radio/headset/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(!(is_adjacent && radio_desc))
return
- to_chat(user, "The following channels are available:")
- to_chat(user, radio_desc)
+ . += "The following channels are available:"
+ . += radio_desc
/obj/item/device/radio/headset/setupRadioDescription()
if(translate_binary || translate_hivenet)
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 09914685d8f..e83540ddf4f 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -515,13 +515,13 @@ var/global/list/default_interrogation_channels = list(
return get_hearers_in_view(canhear_range, src)
-/obj/item/device/radio/examine(mob/user, distance, is_adjacent)
+/obj/item/device/radio/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(show_modify_on_examine && (distance <= 1))
if (b_stat)
- user.show_message("\The [src] can be attached and modified!")
+ . += SPAN_NOTICE("\The [src] can be attached and modified!")
else
- user.show_message("\The [src] can not be modified or attached!")
+ . += SPAN_NOTICE("\The [src] can not be modified or attached!")
/obj/item/device/radio/attackby(obj/item/W as obj, mob/user as mob)
..()
diff --git a/code/game/objects/items/devices/spy_bug.dm b/code/game/objects/items/devices/spy_bug.dm
index 669ea861ba4..97bf2621448 100644
--- a/code/game/objects/items/devices/spy_bug.dm
+++ b/code/game/objects/items/devices/spy_bug.dm
@@ -25,11 +25,11 @@
camera = new(src)
become_hearing_sensitive(ROUNDSTART_TRAIT)
-/obj/item/device/spy_bug/examine(mob/user, distance)
+/obj/item/device/spy_bug/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 0)
- to_chat(user, "It's a tiny camera, microphone, and transmission device in a happy union.")
- to_chat(user, "Needs to be both configured and brought in contact with monitor device to be fully functional.")
+ . += "It's a tiny camera, microphone, and transmission device in a happy union."
+ . += "Needs to be both configured and brought in contact with monitor device to be fully functional."
/obj/item/device/spy_bug/attack_self(mob/user)
radio.set_broadcasting(!radio.get_broadcasting())
@@ -68,10 +68,10 @@
radio = new(src)
become_hearing_sensitive(ROUNDSTART_TRAIT)
-/obj/item/device/spy_monitor/examine(mob/user, distance)
+/obj/item/device/spy_monitor/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 1)
- to_chat(user, "The time '12:00' is blinking in the corner of the screen and \the [src] looks very cheaply made.")
+ . += "The time '12:00' is blinking in the corner of the screen and \the [src] looks very cheaply made."
/obj/item/device/spy_monitor/attack_self(mob/user)
if(operating)
diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm
index f7809efd6a6..23d32ce2ffc 100644
--- a/code/game/objects/items/devices/suit_cooling.dm
+++ b/code/game/objects/items/devices/suit_cooling.dm
@@ -210,7 +210,7 @@
M.update_inv_back()
M.update_inv_s_store()
-/obj/item/device/suit_cooling_unit/examine(mob/user, distance)
+/obj/item/device/suit_cooling_unit/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(!distance <= 1)
@@ -218,26 +218,26 @@
if(on)
if(attached_to_suit(src.loc))
- to_chat(user, SPAN_NOTICE("It's switched on and running."))
+ . += SPAN_NOTICE("It's switched on and running.")
else if(ishuman(loc))
var/mob/living/carbon/human/H = loc
if(H.species.flags & ACCEPTS_COOLER)
- to_chat(user, SPAN_NOTICE("It's switched on and running, connected to the cooling systems of [H]."))
+ . += SPAN_NOTICE("It's switched on and running, connected to the cooling systems of [H].")
else
- to_chat(user, SPAN_NOTICE("It's switched on, but not attached to anything."))
+ . += SPAN_NOTICE("It's switched on, but not attached to anything.")
else
- to_chat(user, SPAN_NOTICE("It is switched off."))
+ . += SPAN_NOTICE("It is switched off.")
if(cover_open)
if(cell)
- to_chat(user, SPAN_NOTICE("The panel is open, exposing \the [cell]."))
+ . += SPAN_NOTICE("The panel is open, exposing \the [cell].")
else
- to_chat(user, SPAN_NOTICE("The panel is open."))
+ . += SPAN_NOTICE("The panel is open.")
if(cell)
- to_chat(user, SPAN_NOTICE("The charge meter reads [round(cell.percent())]%."))
+ . += SPAN_NOTICE("The charge meter reads [round(cell.percent())]%.")
else
- to_chat(user, SPAN_NOTICE("It doesn't have a power cell installed."))
+ . += SPAN_NOTICE("It doesn't have a power cell installed.")
/obj/item/device/suit_cooling_unit/no_cell
celltype = null
diff --git a/code/game/objects/items/devices/tvcamera.dm b/code/game/objects/items/devices/tvcamera.dm
index 9146459ac83..1402c94d115 100644
--- a/code/game/objects/items/devices/tvcamera.dm
+++ b/code/game/objects/items/devices/tvcamera.dm
@@ -25,10 +25,10 @@
GLOB.listening_objects += src
. = ..()
-/obj/item/device/tvcamera/examine(mob/user)
+/obj/item/device/tvcamera/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, "Video feed is currently: [camera.status ? "Online" : "Offline"]")
- to_chat(user, "Audio feed is currently: [radio.get_broadcasting() ? "Online" : "Offline"]")
+ . += "Video feed is currently: [camera.status ? "Online" : "Offline"]"
+ . += "Audio feed is currently: [radio.get_broadcasting() ? "Online" : "Offline"]"
/obj/item/device/tvcamera/attack_self(mob/user)
add_fingerprint(user)
diff --git a/code/game/objects/items/ipc_overloaders.dm b/code/game/objects/items/ipc_overloaders.dm
index eea2fe8abc6..0a93a29697f 100644
--- a/code/game/objects/items/ipc_overloaders.dm
+++ b/code/game/objects/items/ipc_overloaders.dm
@@ -31,13 +31,13 @@
else
icon_state = "[initial(icon_state)]-[initial(uses)-uses]"
-/obj/item/ipc_overloader/examine(mob/user, distance, is_adjacent)
+/obj/item/ipc_overloader/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(is_adjacent)
if(uses)
- to_chat(user, SPAN_NOTICE("It has [uses] uses left."))
+ . += SPAN_NOTICE("It has [uses] uses left.")
else
- to_chat(user, SPAN_WARNING("It's totally spent."))
+ . += SPAN_WARNING("It's totally spent.")
/obj/item/ipc_overloader/attack_self(mob/user)
if(!uses)
@@ -271,11 +271,11 @@
icon_state = "box"
return ..()
-/obj/item/storage/overloader/examine(mob/user)
+/obj/item/storage/overloader/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
var/obj/item/ipc_overloader/overloader = locate() in contents
if(overloader)
- to_chat(user, SPAN_NOTICE("This one has a [overloader.name] inside."))
+ . += SPAN_NOTICE("This one has a [overloader.name] inside.")
/obj/item/storage/overloader/open(mob/user)
..()
diff --git a/code/game/objects/items/knitting.dm b/code/game/objects/items/knitting.dm
index 07a4332b40e..47c31e65f32 100644
--- a/code/game/objects/items/knitting.dm
+++ b/code/game/objects/items/knitting.dm
@@ -39,11 +39,11 @@
QDEL_NULL(ball)
return ..()
-/obj/item/knittingneedles/examine(mob/user, distance, is_adjacent)
+/obj/item/knittingneedles/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(is_adjacent)
if(ball)
- to_chat(user, "There is \the [ball] between the needles.")
+ . += "There is \the [ball] between the needles."
/obj/item/knittingneedles/update_icon()
if(working)
diff --git a/code/game/objects/items/paintkit.dm b/code/game/objects/items/paintkit.dm
index 9991ab5860f..cba80f4969f 100644
--- a/code/game/objects/items/paintkit.dm
+++ b/code/game/objects/items/paintkit.dm
@@ -7,9 +7,9 @@
var/new_icon_file
var/uses = 1 // Uses before the kit deletes itself.
-/obj/item/device/kit/examine()
+/obj/item/device/kit/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(usr, "It has [uses] use\s left.")
+ . += "It has [uses] use\s left."
/obj/item/device/kit/use(var/amt, var/mob/user)
uses -= amt
diff --git a/code/game/objects/items/recharger_backpack.dm b/code/game/objects/items/recharger_backpack.dm
index c1200f4da3a..bfb31091931 100644
--- a/code/game/objects/items/recharger_backpack.dm
+++ b/code/game/objects/items/recharger_backpack.dm
@@ -17,10 +17,10 @@
//To update the icon based on the power cell charge we spawn with
update_icon()
-/obj/item/recharger_backpack/examine(mob/user)
+/obj/item/recharger_backpack/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(powersupply)
- to_chat(user, SPAN_NOTICE("The backpack display shows that the installed power cell is at [round(powersupply.percent())]%."))
+ . += SPAN_NOTICE("The backpack display shows that the installed power cell is at [round(powersupply.percent())]%.")
/obj/item/recharger_backpack/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/cell) && !powersupply)
diff --git a/code/game/objects/items/skrell.dm b/code/game/objects/items/skrell.dm
index dc1d53fb469..a32d932bac3 100644
--- a/code/game/objects/items/skrell.dm
+++ b/code/game/objects/items/skrell.dm
@@ -15,9 +15,9 @@
. = ..()
pick_constellation()
-/obj/item/stellascope/examine(mob/user)
+/obj/item/stellascope/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, "\The [src] displays the \"[selected_constellation]\".")
+ . += "\The [src] displays the \"[selected_constellation]\"."
/obj/item/stellascope/throw_impact(atom/hit_atom)
..()
@@ -92,10 +92,10 @@
STOP_PROCESSING(SSprocessing, src)
return ..()
-/obj/item/skrell_projector/examine(mob/user)
+/obj/item/skrell_projector/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(selected_world && working)
- to_chat(user, "\The [src] displays a hologram of [selected_world].")
+ . += "\The [src] displays a hologram of [selected_world]."
/obj/item/skrell_projector/attack_self(mob/user as mob)
working = !working
diff --git a/code/game/objects/items/spirit_board.dm b/code/game/objects/items/spirit_board.dm
index ea0b255d1dd..f7b0ce575d3 100644
--- a/code/game/objects/items/spirit_board.dm
+++ b/code/game/objects/items/spirit_board.dm
@@ -7,9 +7,9 @@
var/planchette = "A"
var/lastuser = null
-/obj/item/spirit_board/examine(mob/user)
+/obj/item/spirit_board/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, "The planchette is sitting at \"[planchette]\".")
+ . += "The planchette is sitting at \"[planchette]\"."
/obj/item/spirit_board/attack_hand(mob/user)
if(!isturf(loc)) //so if you want to play the use the board, you need to put it down somewhere
diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm
index 0e28c7c7526..1649c0343ce 100644
--- a/code/game/objects/items/stacks/stack.dm
+++ b/code/game/objects/items/stacks/stack.dm
@@ -70,14 +70,14 @@
else
icon_state = "[initial(icon_state)]_3"
-/obj/item/stack/examine(mob/user, distance, is_adjacent)
+/obj/item/stack/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(is_adjacent)
if(!iscoil())
if(!uses_charge)
- to_chat(user, "There [src.amount == 1 ? "is" : "are"] [src.amount] [src.singular_name]\s in the stack.")
+ . += "There [src.amount == 1 ? "is" : "are"] [src.amount] [src.singular_name]\s in the stack."
else
- to_chat(user, "You have enough charge to produce [get_amount()].")
+ . += "You have enough charge to produce [get_amount()]."
/obj/item/stack/attack_self(mob/user)
list_recipes(user, recipes)
diff --git a/code/game/objects/items/stacks/wrap.dm b/code/game/objects/items/stacks/wrap.dm
index df7f5f46575..3682878eb3a 100644
--- a/code/game/objects/items/stacks/wrap.dm
+++ b/code/game/objects/items/stacks/wrap.dm
@@ -61,10 +61,10 @@
to_chat(user, SPAN_WARNING("This object is far too large to wrap!"))
return
-/obj/item/stack/wrapping_paper/examine(mob/user, distance, is_adjacent)
+/obj/item/stack/wrapping_paper/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 1)
- to_chat(user, "There [amount == 1 ? "is" : "are"] about [amount] [singular_name]\s of paper left!")
+ . += "There [amount == 1 ? "is" : "are"] about [amount] [singular_name]\s of paper left!"
/obj/item/stack/wrapping_paper/attack(mob/target, mob/user)
if(!ishuman(target))
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 701422fccb4..e845fce151c 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -409,10 +409,10 @@
attack_verb = list("attacked", "struck", "hit")
var/dart_count = 5
-/obj/item/toy/crossbow/examine(mob/user, distance, is_adjacent)
+/obj/item/toy/crossbow/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 2 && dart_count)
- to_chat(user, "\The [src] is loaded with [dart_count] foam dart\s.")
+ . += "\The [src] is loaded with [dart_count] foam dart\s."
/obj/item/toy/crossbow/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/toy/ammo/crossbow))
diff --git a/code/game/objects/items/weapons/RFD.dm b/code/game/objects/items/weapons/RFD.dm
index e46954a868c..da5766256f8 100644
--- a/code/game/objects/items/weapons/RFD.dm
+++ b/code/game/objects/items/weapons/RFD.dm
@@ -61,10 +61,10 @@
/obj/item/rfd/proc/can_use(var/mob/user,var/turf/T)
return (user.Adjacent(T) && user.get_active_hand() == src && !user.stat && !user.restrained())
-/obj/item/rfd/examine(var/mob/user)
+/obj/item/rfd/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(loc == user)
- to_chat(user, "It currently holds [stored_matter]/30 matter units.")
+ . += "It currently holds [stored_matter]/30 matter units."
/obj/item/rfd/attack_self(mob/user)
//Change the mode
@@ -538,13 +538,13 @@
/obj/item/rfd/transformer/attack_self(mob/user)
return
-/obj/item/rfd/transformer/examine(var/mob/user)
+/obj/item/rfd/transformer/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(loc == user)
if(malftransformermade)
- to_chat(user, "There is already a transformer machine made!")
+ . += "There is already a transformer machine made!"
else
- to_chat(user, "It is ready to deploy a transformer machine.")
+ . += "It is ready to deploy a transformer machine."
/obj/item/rfd/transformer/afterattack(atom/A, mob/user as mob, proximity)
@@ -671,11 +671,11 @@
"Omni Gas Filter" = PIPE_OMNI_FILTER
)
-/obj/item/rfd/piping/examine(mob/user)
+/obj/item/rfd/piping/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, FONT_SMALL(SPAN_NOTICE("Change pipe category by ALT-clicking, change pipe selection by using in-hand.")))
- to_chat(user, SPAN_NOTICE("Selected pipe category: [selected_mode]"))
- to_chat(user, SPAN_NOTICE("Selected pipe: [pipe_examine]"))
+ . += FONT_SMALL(SPAN_NOTICE("Change pipe category by ALT-clicking, change pipe selection by using in-hand."))
+ . += SPAN_NOTICE("Selected pipe category: [selected_mode].")
+ . += SPAN_NOTICE("Selected pipe: [pipe_examine].")
/obj/item/rfd/piping/afterattack(atom/A, mob/user, proximity)
if(!proximity || !isturf(A))
diff --git a/code/game/objects/items/weapons/cards_ids_syndicate.dm b/code/game/objects/items/weapons/cards_ids_syndicate.dm
index d1155455c2e..b0565190d2c 100644
--- a/code/game/objects/items/weapons/cards_ids_syndicate.dm
+++ b/code/game/objects/items/weapons/cards_ids_syndicate.dm
@@ -20,11 +20,11 @@
unset_registered_user(registered_user)
return ..()
-/obj/item/card/id/syndicate/examine(mob/user, distance, is_adjacent)
+/obj/item/card/id/syndicate/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(is_adjacent)
if(user == registered_user)
- to_chat(user, FONT_SMALL(SPAN_NOTICE("It is at [charge]/[initial(charge)] charge.")))
+ . += FONT_SMALL(SPAN_NOTICE("It is at [charge]/[initial(charge)] charge."))
/obj/item/card/id/syndicate/process()
if(electronic_warfare)
diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm
index 46c51a68980..31980513c47 100644
--- a/code/game/objects/items/weapons/cigs_lighters.dm
+++ b/code/game/objects/items/weapons/cigs_lighters.dm
@@ -1024,10 +1024,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/trash/cigbutt/roll
icon_state = "rollbutt"
-/obj/item/clothing/mask/smokable/cigarette/rolled/examine(mob/user)
+/obj/item/clothing/mask/smokable/cigarette/rolled/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(filter)
- to_chat(user, "Capped off one end with a filter.")
+ . += "It's capped off one end with a filter."
/obj/item/clothing/mask/smokable/cigarette/rolled/update_icon()
. = ..()
diff --git a/code/game/objects/items/weapons/circuitboards/circuitboard.dm b/code/game/objects/items/weapons/circuitboards/circuitboard.dm
index f993e826728..97c574ae783 100644
--- a/code/game/objects/items/weapons/circuitboards/circuitboard.dm
+++ b/code/game/objects/items/weapons/circuitboards/circuitboard.dm
@@ -22,19 +22,20 @@
var/list/req_components
var/contain_parts = 1
-/obj/item/circuitboard/examine(mob/user)
+/obj/item/circuitboard/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
+
if(build_path)
var/obj/machine = new build_path // instantiate to get the name and desc
- to_chat(user, FONT_SMALL(SPAN_NOTICE("This circuitboard will build a [capitalize_first_letters(machine.name)]: [machine.desc]")))
+ . += FONT_SMALL(SPAN_NOTICE("This circuitboard will build a [capitalize_first_letters(machine.name)]: [machine.desc]"))
if(board_type == BOARD_COMPUTER) // does not have build components, only goes into a frame
- to_chat(user, SPAN_NOTICE("This board is used inside a computer frame."))
+ . += SPAN_NOTICE("This board is used inside a computer frame.")
else if(req_components)
- to_chat(user, SPAN_NOTICE("To build this machine, you will require:"))
+ . += SPAN_NOTICE("To build this machine, you will require:")
for(var/I in req_components)
if(req_components[I] > 0)
var/obj/component = new I // instantiate to get the name
- to_chat(user, SPAN_NOTICE("- [num2text(req_components[I])] [capitalize_first_letters(component.name)]"))
+ . += SPAN_NOTICE("- [num2text(req_components[I])] [capitalize_first_letters(component.name)]")
//Called when the circuitboard is used to contruct a new machine.
/obj/item/circuitboard/proc/construct(var/obj/machinery/M)
diff --git a/code/game/objects/items/weapons/circuitboards/machinery/unary_atmos.dm b/code/game/objects/items/weapons/circuitboards/machinery/unary_atmos.dm
index f63fa7940c2..bf205108c46 100644
--- a/code/game/objects/items/weapons/circuitboards/machinery/unary_atmos.dm
+++ b/code/game/objects/items/weapons/circuitboards/machinery/unary_atmos.dm
@@ -14,9 +14,9 @@
user.visible_message("\The [user] adjusts the jumper on the [src]'s port configuration pins.", "You adjust the jumper on the port configuration pins. Now set to [dir2text(machine_dir)].")
return
-/obj/item/circuitboard/unary_atmos/examine()
+/obj/item/circuitboard/unary_atmos/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(usr, "The jumper is connecting the [dir2text(machine_dir)] pins.")
+ . += "The jumper is connecting the [dir2text(machine_dir)] pins."
/obj/item/circuitboard/unary_atmos/construct(var/obj/machinery/atmospherics/unary/U)
//TODO: Move this stuff into the relevant constructor when pipe/construction.dm is cleaned up.
diff --git a/code/game/objects/items/weapons/cloaking_device.dm b/code/game/objects/items/weapons/cloaking_device.dm
index e7d928b2868..414c8026ae0 100644
--- a/code/game/objects/items/weapons/cloaking_device.dm
+++ b/code/game/objects/items/weapons/cloaking_device.dm
@@ -138,12 +138,12 @@
return
..()
-/obj/item/cloaking_device/examine(mob/user)
+/obj/item/cloaking_device/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if (!cell)
- to_chat(user, "It needs a power cell to function.")
+ . += SPAN_WARNING("It needs a power cell to function.")
else
- to_chat(user, "It has [cell.percent()]% power remaining")
+ . += SPAN_NOTICE("It has [cell.percent()]% power remaining.")
/obj/item/cloaking_device/process()
if (!cell || !cell.checked_use(power_usage*CELLRATE))
diff --git a/code/game/objects/items/weapons/ecigs.dm b/code/game/objects/items/weapons/ecigs.dm
index 064c8f33076..2a86e3f57ec 100644
--- a/code/game/objects/items/weapons/ecigs.dm
+++ b/code/game/objects/items/weapons/ecigs.dm
@@ -42,12 +42,12 @@
icon_empty = "ccigoff"
icon_on = "ccigon"
-/obj/item/clothing/mask/smokable/ecig/simple/examine(mob/user)
+/obj/item/clothing/mask/smokable/ecig/simple/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(ec_cartridge)
- to_chat(user, SPAN_NOTICE("There are [round(ec_cartridge.reagents.total_volume, 1)] unit\s of liquid remaining."))
+ . += SPAN_NOTICE("There are [round(ec_cartridge.reagents.total_volume, 1)] unit\s of liquid remaining.")
else
- to_chat(user, SPAN_NOTICE("There's no cartridge connected."))
+ . += SPAN_NOTICE("There's no cartridge connected.")
/obj/item/clothing/mask/smokable/ecig/util
name = "electronic cigarette"
@@ -61,20 +61,20 @@
. = ..()
color = pick(ecig_colors)
-/obj/item/clothing/mask/smokable/ecig/util/examine(mob/user)
+/obj/item/clothing/mask/smokable/ecig/util/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(ec_cartridge)
- to_chat(user, SPAN_NOTICE("There are [round(ec_cartridge.reagents.total_volume, 1)] unit\s of liquid remaining."))
+ . += SPAN_NOTICE("There are [round(ec_cartridge.reagents.total_volume, 1)] unit\s of liquid remaining.")
else
- to_chat(user, SPAN_NOTICE("There's no cartridge connected."))
+ . += SPAN_NOTICE("There's no cartridge connected.")
if(cig_cell)
- to_chat(user, SPAN_NOTICE("The power meter shows that there's about [round(cig_cell.percent(), 5)]% power remaining."))
+ . += SPAN_NOTICE("The power meter shows that there's about [round(cig_cell.percent(), 5)]% power remaining.")
else
- to_chat(user, SPAN_NOTICE("There's no power cell connected."))
+ . += SPAN_NOTICE("There's no power cell connected.")
if(active)
- to_chat(user, SPAN_NOTICE("It is currently turned on."))
+ . += SPAN_NOTICE("It is currently turned on.")
else
- to_chat(user, SPAN_NOTICE("It is currently turned off."))
+ . += SPAN_NOTICE("It is currently turned off.")
/obj/item/clothing/mask/smokable/ecig/deluxe
name = "deluxe electronic cigarette"
@@ -85,16 +85,16 @@
icon_on = "pcigon"
cell_type = /obj/item/cell/device/high
-/obj/item/clothing/mask/smokable/ecig/deluxe/examine(mob/user)
+/obj/item/clothing/mask/smokable/ecig/deluxe/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(ec_cartridge)
- to_chat(user, SPAN_NOTICE("There are [round(ec_cartridge.reagents.total_volume, 1)] unit\s of liquid remaining."))
+ . += SPAN_NOTICE("There are [round(ec_cartridge.reagents.total_volume, 1)] unit\s of liquid remaining.")
else
- to_chat(user, SPAN_NOTICE("There's no cartridge connected."))
+ . += SPAN_NOTICE("There's no cartridge connected.")
if(cig_cell)
- to_chat(user, SPAN_NOTICE("The power meter shows that there's about [round(cig_cell.percent(), 1)]% power remaining."))
+ . += SPAN_NOTICE("The power meter shows that there's about [round(cig_cell.percent(), 1)]% power remaining.")
else
- to_chat(user, SPAN_NOTICE("There's no power cell connected."))
+ . += SPAN_NOTICE("There's no power cell connected.")
/obj/item/clothing/mask/smokable/ecig/proc/deactivate()
active = FALSE
@@ -248,9 +248,9 @@
volume = 20
atom_flags = ATOM_FLAG_OPEN_CONTAINER
-/obj/item/reagent_containers/ecig_cartridge/examine(mob/user)
+/obj/item/reagent_containers/ecig_cartridge/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, "The cartridge has [reagents.total_volume] unit\s of liquid remaining.")
+ . += SPAN_NOTICE("The cartridge has [reagents.total_volume] unit\s of liquid remaining.")
//flavours
/obj/item/reagent_containers/ecig_cartridge/blank
diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm
index 19709eb0f04..7b8fb5c0392 100644
--- a/code/game/objects/items/weapons/extinguisher.dm
+++ b/code/game/objects/items/weapons/extinguisher.dm
@@ -56,21 +56,21 @@
to_chat(user,"\The reagents inside [src] are already secured!")
return
-/obj/item/reagent_containers/extinguisher_refill/examine(mob/user, distance) //Copied from inhalers.
+/obj/item/reagent_containers/extinguisher_refill/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(!distance <= 2)
return
if(is_open_container())
if(LAZYLEN(reagents?.reagent_volumes))
- to_chat(user,"It contains [round(reagents.total_volume, accuracy)] units of non-aerosol mix.")
+ . += SPAN_NOTICE("It contains [round(reagents.total_volume, accuracy)] units of non-aerosol mix.")
else
- to_chat(user,"It is empty.")
+ . += SPAN_NOTICE("It is empty.")
else
if(LAZYLEN(reagents?.reagent_volumes))
- to_chat(user,"The reagents are secured in the aerosol mix.")
+ . += SPAN_NOTICE("The reagents are secured in the aerosol mix.")
else
- to_chat(user,"The cartridge seems spent.")
+ . += SPAN_NOTICE("The cartridge seems spent.")
/obj/item/reagent_containers/extinguisher_refill/filled
name = "extinguisher refiller (monoammonium phosphate)"
@@ -128,11 +128,11 @@
reagents.add_reagent(/singleton/reagent/toxin/fertilizer/monoammoniumphosphate, max_water)
..()
-/obj/item/extinguisher/examine(mob/user, distance)
+/obj/item/extinguisher/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 0)
- to_chat(user,"\The [src] contains [src.reagents.total_volume] units of reagents.")
- to_chat(user,"The safety is [safety ? "on" : "off"].")
+ . += SPAN_NOTICE("\The [src] contains [src.reagents.total_volume] units of reagents.")
+ . += SPAN_NOTICE("The safety is [safety ? "on" : "off"].")
return
/obj/item/extinguisher/attack(mob/living/M, mob/living/user, target_zone)
diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm
index d308cbda362..50322a759b0 100644
--- a/code/game/objects/items/weapons/flamethrower.dm
+++ b/code/game/objects/items/weapons/flamethrower.dm
@@ -34,17 +34,17 @@
welding_tool.forceMove(src)
update_icon()
-/obj/item/flamethrower/examine(mob/user, distance, is_adjacent)
+/obj/item/flamethrower/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(is_adjacent)
if(gas_tank)
- to_chat(user, SPAN_NOTICE("Release pressure is set to [throw_amount] kPa. The tank has about [round(gas_tank.air_contents.return_pressure(), 10)] kPa left in it."))
+ . += SPAN_NOTICE("Release pressure is set to [throw_amount] kPa. The tank has about [round(gas_tank.air_contents.return_pressure(), 10)] kPa left in it.")
else
- to_chat(user, SPAN_WARNING("It has no gas tank installed."))
+ . += SPAN_WARNING("It has no gas tank installed.")
if(igniter)
- to_chat(user, SPAN_NOTICE("It has \an [igniter] installed."))
+ . += SPAN_NOTICE("It has \an [igniter] installed.")
else
- to_chat(user, SPAN_WARNING("It has no igniter installed."))
+ . += SPAN_WARNING("It has no igniter installed.")
/obj/item/flamethrower/Destroy()
QDEL_NULL(welding_tool)
diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
index 19c9eea958d..79a02681dab 100644
--- a/code/game/objects/items/weapons/grenades/chem_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm
@@ -111,10 +111,10 @@
else
to_chat(user, "\The [W] is empty.")
-/obj/item/grenade/chem_grenade/examine(mob/user)
+/obj/item/grenade/chem_grenade/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(detonator)
- to_chat(user, "With attached [detonator.name]")
+ . += "With attached [detonator.name]"
/obj/item/grenade/chem_grenade/activate(mob/user as mob)
if(active) return
diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm
index b6f2bdf0c3c..b95370f3399 100644
--- a/code/game/objects/items/weapons/grenades/grenade.dm
+++ b/code/game/objects/items/weapons/grenades/grenade.dm
@@ -30,15 +30,15 @@
return 0
return 1
-/obj/item/grenade/examine(mob/user, distance, is_adjacent)
+/obj/item/grenade/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 0)
if(det_time > 1)
- to_chat(user, "The timer is set to [det_time/10] seconds.")
+ . += SPAN_NOTICE("The timer is set to [det_time/10] seconds.")
return
if(det_time == null)
return
- to_chat(user, "\The [src] is set for instant detonation.")
+ . += SPAN_NOTICE("\The [src] is set for instant detonation.")
/obj/item/grenade/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/gun/launcher/grenade))
diff --git a/code/game/objects/items/weapons/material/twohanded.dm b/code/game/objects/items/weapons/material/twohanded.dm
index 6c080525465..604cc0be846 100644
--- a/code/game/objects/items/weapons/material/twohanded.dm
+++ b/code/game/objects/items/weapons/material/twohanded.dm
@@ -263,10 +263,10 @@
QDEL_NULL(explosive)
return ..()
-/obj/item/material/twohanded/spear/examine(mob/user)
+/obj/item/material/twohanded/spear/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(explosive)
- to_chat(user, "It has \the [explosive] strapped to it.")
+ . += "It has \the [explosive] strapped to it."
/obj/item/material/twohanded/spear/attackby(var/obj/item/I, var/mob/living/user)
if(istype(I, /obj/item/organ/external/head))
@@ -472,12 +472,12 @@
RemoveFuel(FuelToRemove)
-/obj/item/material/twohanded/chainsaw/examine(mob/user, distance, is_adjacent)
+/obj/item/material/twohanded/chainsaw/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 1)
- to_chat(user, "A heavy-duty chainsaw meant for cutting wood. Contains [round(REAGENT_VOLUME(reagents, fuel_type))] unit\s of fuel.")
+ . += "A heavy-duty chainsaw meant for cutting wood. Contains [round(REAGENT_VOLUME(reagents, fuel_type))] unit\s of fuel."
if(powered)
- to_chat(user, SPAN_NOTICE("It is currently powered on."))
+ . += SPAN_NOTICE("It is currently powered on.")
/obj/item/material/twohanded/chainsaw/attack(mob/M as mob, mob/living/user as mob)
. = ..()
diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm
index 0b0d2a9b1e9..32e8f9ec175 100644
--- a/code/game/objects/items/weapons/mop.dm
+++ b/code/game/objects/items/weapons/mop.dm
@@ -111,6 +111,6 @@
if(reagents.total_volume < 30)
reagents.add_reagent(refill_reagent, refill_rate)
-/obj/item/mop/advanced/examine(mob/user)
+/obj/item/mop/advanced/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, SPAN_NOTICE("\The condenser switch is set to [refill_enabled ? "ON" : "OFF"]."))
+ . += SPAN_NOTICE("\The condenser switch is set to [refill_enabled ? "ON" : "OFF"].")
diff --git a/code/game/objects/items/weapons/policetape.dm b/code/game/objects/items/weapons/policetape.dm
index 5c538bfd5c2..67930e06cb9 100644
--- a/code/game/objects/items/weapons/policetape.dm
+++ b/code/game/objects/items/weapons/policetape.dm
@@ -31,10 +31,10 @@ var/list/tape_roll_applications = list()
var/crumpled = 0
var/icon_base
-/obj/item/tape/examine(mob/user, distance, is_adjacent)
+/obj/item/tape/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(LAZYLEN(crumplers) && is_adjacent)
- to_chat(user, SPAN_WARNING("\The [initial(name)] has been crumpled by [english_list(crumplers)]."))
+ . += SPAN_WARNING("\The [initial(name)] has been crumpled by [english_list(crumplers)].")
/obj/item/taperoll/police
name = "police tape"
@@ -90,10 +90,10 @@ var/list/tape_roll_applications = list()
icon_base = "engineering"
var/shield_marker = FALSE
-/obj/item/tape/engineering/examine(mob/user, distance)
+/obj/item/tape/engineering/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(shield_marker)
- to_chat(user, SPAN_NOTICE("This strip of tape has been modified to serve as a marker for emergency shield generators to lock onto."))
+ . += SPAN_NOTICE("This strip of tape has been modified to serve as a marker for emergency shield generators to lock onto.")
/obj/item/tape/engineering/attackby(obj/item/W, mob/user)
if(W.ismultitool())
diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm
index 269d3dc37aa..5612a2979b5 100644
--- a/code/game/objects/items/weapons/storage/boxes.dm
+++ b/code/game/objects/items/weapons/storage/boxes.dm
@@ -90,13 +90,13 @@
damage(damage)
..()
-/obj/item/storage/box/examine(var/mob/user)
+/obj/item/storage/box/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if (health < maxHealth)
if (health >= (maxHealth * 0.5))
- to_chat(user, SPAN_WARNING("It is slightly torn."))
+ . += SPAN_WARNING("It is slightly torn.")
else
- to_chat(user, SPAN_DANGER("It is full of tears and holes."))
+ . += SPAN_DANGER("It is full of tears and holes.")
// BubbleWrap - A box can be folded up to make card
/obj/item/storage/box/attack_self(mob/user as mob)
diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm
index 331a5b05811..d23ad124cd3 100644
--- a/code/game/objects/items/weapons/storage/fancy.dm
+++ b/code/game/objects/items/weapons/storage/fancy.dm
@@ -73,14 +73,14 @@
update_icon()
. = ..()
-/obj/item/storage/box/fancy/examine(mob/user)
+/obj/item/storage/box/fancy/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(!icon_type || !storage_type)
return
if(contents.len <= 0)
- to_chat(user, "There are no [src.icon_type]s left in the [src.storage_type].")
+ . += "There are no [src.icon_type]s left in the [src.storage_type]."
else
- to_chat(user, "There [src.contents.len == 1 ? "is" : "are"] [src.contents.len] [src.icon_type]\s left in \the [src.storage_type].")
+ . += "There [src.contents.len == 1 ? "is" : "are"] [src.contents.len] [src.icon_type]\s left in \the [src.storage_type]."
/*
* Donut Box
diff --git a/code/game/objects/items/weapons/storage/mre.dm b/code/game/objects/items/weapons/storage/mre.dm
index 96f82f01c36..8b87eebafb7 100644
--- a/code/game/objects/items/weapons/storage/mre.dm
+++ b/code/game/objects/items/weapons/storage/mre.dm
@@ -35,9 +35,9 @@ MRE Stuff
/obj/item/storage/mre/attack_self(mob/user)
open(user)
-/obj/item/storage/box/fancy/mre/examine(mob/user)
+/obj/item/storage/box/fancy/mre/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, meal_desc)
+ . += meal_desc
/obj/item/storage/box/fancy/mre/menu2
name = "\improper MRE, menu 2"
diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm
index de93e173b54..a1156690e59 100644
--- a/code/game/objects/items/weapons/storage/secure.dm
+++ b/code/game/objects/items/weapons/storage/secure.dm
@@ -28,10 +28,10 @@
max_storage_space = 16
use_sound = 'sound/items/storage/briefcase.ogg'
-/obj/item/storage/secure/examine(mob/user, distance, is_adjacent)
+/obj/item/storage/secure/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 1)
- to_chat(user, text("The service panel is [src.open ? "open" : "closed"]."))
+ . += "The service panel is [src.open ? "open" : "closed"]."
/obj/item/storage/secure/attackby(obj/item/W as obj, mob/user as mob)
if(locked)
diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm
index 91787291946..19a1d7a1d3c 100644
--- a/code/game/objects/items/weapons/storage/storage.dm
+++ b/code/game/objects/items/weapons/storage/storage.dm
@@ -94,10 +94,10 @@
QDEL_NULL(closer)
return ..()
-/obj/item/storage/examine(mob/user)
+/obj/item/storage/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(isobserver(user))
- to_chat(user, "It contains: [counting_english_list(contents)]")
+ . += "It contains: [counting_english_list(contents)]"
/obj/item/storage/MouseDrop(obj/over_object)
if(!canremove)
diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm
index b38d2188077..c19b2fc7dda 100644
--- a/code/game/objects/items/weapons/stunbaton.dm
+++ b/code/game/objects/items/weapons/stunbaton.dm
@@ -59,14 +59,14 @@
else
set_light(0)
-/obj/item/melee/baton/examine(mob/user, distance)
+/obj/item/melee/baton/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(!distance <= 1)
return
if(bcell)
- to_chat(user, "The baton is [round(bcell.percent())]% charged.")
+ . += "The baton is [round(bcell.percent())]% charged."
else
- to_chat(user, "The baton does not have a power source installed.")
+ . += "The baton does not have a power source installed."
/obj/item/melee/baton/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/cell))
diff --git a/code/game/objects/items/weapons/syndie.dm b/code/game/objects/items/weapons/syndie.dm
index c43bda6ab12..786ecf7045a 100644
--- a/code/game/objects/items/weapons/syndie.dm
+++ b/code/game/objects/items/weapons/syndie.dm
@@ -120,10 +120,10 @@
var/recharge_time = 1 MINUTE
var/when_recharge = 0
-/obj/item/syndie/teleporter/examine(mob/user, distance)
+/obj/item/syndie/teleporter/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(!ready_to_use && burglars.is_antagonist(user.mind))
- to_chat(user, SPAN_NOTICE("Charging: [num2loadingbar(world.time / when_recharge)]"))
+ . += SPAN_NOTICE("Charging: [num2loadingbar(world.time / when_recharge)]")
/obj/item/syndie/teleporter/set_initial_maptext()
held_maptext = SMALL_FONTS(7, "Ready")
diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm
index 4ed94a43876..5bbb718d6c0 100644
--- a/code/game/objects/items/weapons/tanks/jetpack.dm
+++ b/code/game/objects/items/weapons/tanks/jetpack.dm
@@ -45,10 +45,10 @@
var/volume_rate = 500 //Needed for borg jetpack transfer
action_button_name = "Toggle Jetpack"
-/obj/item/tank/jetpack/examine(mob/user)
+/obj/item/tank/jetpack/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(air_contents.total_moles < 5)
- to_chat(user, "The meter on \the [src] indicates you are almost out of gas!")
+ . += SPAN_NOTICE("The meter on \the [src] indicates you are almost out of gas!")
/obj/item/tank/jetpack/verb/toggle_rockets()
set name = "Toggle Jetpack Stabilization"
@@ -187,10 +187,6 @@
holder = null
. = ..()
-/obj/item/tank/jetpack/rig/examine()
- to_chat(usr, "It's a jetpack. If you can see this, report it on the bug tracker.")
- return TRUE
-
/obj/item/tank/jetpack/rig/allow_thrust(num, mob/living/user as mob)
if(!(src.on))
diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm
index 80c9ee91d39..791e16200f2 100644
--- a/code/game/objects/items/weapons/tanks/tank_types.dm
+++ b/code/game/objects/items/weapons/tanks/tank_types.dm
@@ -21,10 +21,10 @@
/obj/item/tank/oxygen/adjust_initial_gas()
air_contents.adjust_gas(GAS_OXYGEN, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
-/obj/item/tank/oxygen/examine(mob/user, distance, is_adjacent)
+/obj/item/tank/oxygen/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if((is_adjacent) && air_contents.gas[GAS_OXYGEN] < 10)
- to_chat(user, text("The meter on \the [src] indicates you are almost out of oxygen!"))
+ . += SPAN_WARNING("The meter on \the [src] indicates you are almost out of oxygen!")
/obj/item/tank/oxygen/yellow
desc = "A tank of oxygen, this one is yellow."
@@ -76,10 +76,10 @@
/obj/item/tank/air/adjust_initial_gas()
air_contents.adjust_multi(GAS_OXYGEN, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD, GAS_NITROGEN, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD)
-/obj/item/tank/air/examine(mob/user, distance, is_adjacent)
+/obj/item/tank/air/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if((is_adjacent) && air_contents.gas[GAS_OXYGEN] < 1 && loc==user)
- to_chat(user, "The meter on the [src.name] indicates you are almost out of air!")
+ . += SPAN_WARNING("The meter on the [src.name] indicates you are almost out of air!")
/*
* Phoron
@@ -148,10 +148,10 @@
/obj/item/tank/emergency_oxygen/adjust_initial_gas()
air_contents.adjust_gas(GAS_OXYGEN, (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
-/obj/item/tank/emergency_oxygen/examine(mob/user, distance, is_adjacent)
+/obj/item/tank/emergency_oxygen/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if((is_adjacent) && air_contents.gas[GAS_OXYGEN] < 0.2 && loc==user)
- to_chat(user, text("The meter on the [src.name] indicates you are almost out of air!"))
+ . += SPAN_WARNING("The meter on the [src.name] indicates you are almost out of air!")
/obj/item/tank/emergency_oxygen/engi
name = "extended-capacity emergency oxygen tank"
diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm
index fa9e4ec1047..26630fd84e5 100644
--- a/code/game/objects/items/weapons/tanks/tanks.dm
+++ b/code/game/objects/items/weapons/tanks/tanks.dm
@@ -47,7 +47,7 @@
return ..()
-/obj/item/tank/examine(mob/user, distance, is_adjacent)
+/obj/item/tank/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 0)
var/celsius_temperature = air_contents.temperature - T0C
@@ -65,7 +65,7 @@
descriptive = "room temperature"
else
descriptive = "cold"
- to_chat(user, "\The [src] feels [descriptive].")
+ . += SPAN_NOTICE("\The [src] feels [descriptive].")
/obj/item/tank/attackby(obj/item/W as obj, mob/user as mob)
..()
diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm
index cac7ce21fce..e4922c82829 100644
--- a/code/game/objects/items/weapons/teleportation.dm
+++ b/code/game/objects/items/weapons/teleportation.dm
@@ -158,13 +158,13 @@ Frequency:
var/max_portals = 2
-/obj/item/hand_tele/examine(mob/user, distance)
+/obj/item/hand_tele/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(linked_pad)
var/area/A = get_area(linked_pad)
- to_chat(user, SPAN_NOTICE("\The [src] is linked to a teleportation pad in [A.name]"))
+ . += SPAN_NOTICE("\The [src] is linked to a teleportation pad in [A.name]")
else
- to_chat(user, SPAN_WARNING("\The [src] isn't linked to any teleportation pads!"))
+ . += SPAN_WARNING("\The [src] isn't linked to any teleportation pads!")
/obj/item/hand_tele/set_initial_maptext()
held_maptext = SMALL_FONTS(7, "Ready")
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index 93aba450b13..50ecfd806eb 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -339,10 +339,10 @@
STOP_PROCESSING(SSprocessing, src)
return ..()
-/obj/item/weldingtool/examine(mob/user, distance, is_adjacent)
+/obj/item/weldingtool/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 0)
- to_chat(user, text("[icon2html(src, user)] [] contains []/[] units of fuel!", src.name, get_fuel(),src.max_fuel ))
+ . += "It contains [get_fuel()]/[max_fuel] units of fuel."
/obj/item/weldingtool/attackby(obj/item/W, mob/user)
if(W.isscrewdriver())
@@ -795,10 +795,10 @@
tools[tool] = image('icons/obj/tools.dmi', icon_state = "[icon_state]-[tool]")
. = ..()
-/obj/item/combitool/examine(var/mob/user)
+/obj/item/combitool/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(tools.len)
- to_chat(user, "It has the following fittings: [english_list(tools)].")
+ . += "It has the following fittings: [english_list(tools)]."
/obj/item/combitool/iswrench()
return current_tool == "wrench"
@@ -854,12 +854,12 @@
/obj/item/powerdrill/set_initial_maptext()
held_maptext = SMALL_FONTS(7, "S")
-/obj/item/powerdrill/examine(var/mob/user)
+/obj/item/powerdrill/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(tools.len)
- to_chat(user, "It has the following fittings:")
+ . += "It has the following fittings:"
for(var/tool in tools)
- to_chat(user, "- [tool][tools[current_tool] == tool ? " (selected)" : ""]")
+ . += "- [tool][tools[current_tool] == tool ? " (selected)" : ""]"
/obj/item/powerdrill/MouseEntered(location, control, params)
. = ..()
diff --git a/code/game/objects/items/weapons/traps.dm b/code/game/objects/items/weapons/traps.dm
index 73b1a11b4b4..4265277272b 100644
--- a/code/game/objects/items/weapons/traps.dm
+++ b/code/game/objects/items/weapons/traps.dm
@@ -195,17 +195,17 @@
/obj/item/trap/animal/update_icon()
icon_state = "[icon_base][deployed]"
-/obj/item/trap/animal/examine(mob/user)
+/obj/item/trap/animal/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(captured)
var/datum/L = captured.resolve()
if (L)
- to_chat(user, "[L] is trapped inside!")
+ . += SPAN_WARNING("[L] is trapped inside!")
return
else if(deployed)
- to_chat(user, SPAN_WARNING("It's set up and ready to capture something."))
+ . += SPAN_WARNING("It's set up and ready to capture something.")
else
- to_chat(user, "\The [src] is empty and un-deployed.")
+ . += SPAN_NOTICE("\The [src] is empty and un-deployed.")
/obj/item/trap/animal/Crossed(atom/movable/AM)
if(!deployed || !anchored)
@@ -796,10 +796,11 @@
victim.visible_message(SPAN_ALERT("You notice something written on a plate inside the trap:
")+SPAN_BAD(message))
-/obj/item/trap/punji/examine(mob/user, distance)
+/obj/item/trap/punji/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(src.message && distance < 3)
- to_chat(user, SPAN_ALERT("You notice something written on a plate inside the trap:
")+SPAN_BAD(message))
+ . += SPAN_ALERT("You notice something written on a plate inside the trap:")
+ . += SPAN_BAD(message)
/obj/item/trap/punji/verb/hide_under()
set src in oview(1)
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index e000adfd28e..bfb33490395 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -239,12 +239,12 @@
return
..()
-/obj/examine(mob/user)
+/obj/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if((obj_flags & OBJ_FLAG_ROTATABLE) || (obj_flags & OBJ_FLAG_ROTATABLE_ANCHORED))
- to_chat(user, SPAN_SUBTLE("Can be rotated with alt-click."))
+ . += SPAN_SUBTLE("Can be rotated with alt-click.")
if(contaminated)
- to_chat(user, SPAN_ALIEN("\The [src] has been contaminated!"))
+ . += SPAN_ALIEN("\The [src] has been contaminated!")
// whether mobs can unequip and drop items into us or not
/obj/proc/can_hold_dropped_items()
diff --git a/code/game/objects/structures/barricades/_barricade.dm b/code/game/objects/structures/barricades/_barricade.dm
index ee8994f4e65..e2b2812fa9e 100644
--- a/code/game/objects/structures/barricades/_barricade.dm
+++ b/code/game/objects/structures/barricades/_barricade.dm
@@ -31,20 +31,20 @@
update_icon()
starting_maxhealth = maxhealth
-/obj/structure/barricade/examine(mob/user)
+/obj/structure/barricade/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, SPAN_INFO("It is recommended to stand flush to a barricade or one tile away for maximum efficiency."))
+ . += SPAN_INFO("It is recommended to stand flush to a barricade or one tile away for maximum efficiency.")
if(is_wired)
- to_chat(user, SPAN_INFO("There is a length of wire strewn across the top of this barricade."))
+ . += SPAN_INFO("There is a length of wire strewn across the top of this barricade.")
switch(damage_state)
if(BARRICADE_DMG_NONE)
- to_chat(user, SPAN_INFO("It appears to be in good shape."))
+ . += SPAN_INFO("It appears to be in good shape.")
if(BARRICADE_DMG_SLIGHT)
- to_chat(user, SPAN_WARNING("It's slightly damaged, but still very functional."))
+ . += SPAN_WARNING("It's slightly damaged, but still very functional.")
if(BARRICADE_DMG_MODERATE)
- to_chat(user, SPAN_WARNING("It's quite beat up, but it's holding together."))
+ . += SPAN_WARNING("It's quite beat up, but it's holding together.")
if(BARRICADE_DMG_HEAVY)
- to_chat(user, SPAN_WARNING("It's crumbling apart, just a few more blows will tear it apart!"))
+ . += SPAN_WARNING("It's crumbling apart, just a few more blows will tear it apart!")
/obj/structure/barricade/update_icon()
overlays.Cut()
diff --git a/code/game/objects/structures/barricades/metal.dm b/code/game/objects/structures/barricades/metal.dm
index 87d3d0834bc..4d0d0c8582a 100644
--- a/code/game/objects/structures/barricades/metal.dm
+++ b/code/game/objects/structures/barricades/metal.dm
@@ -14,15 +14,15 @@
can_wire = TRUE
var/build_state = BARRICADE_BSTATE_SECURED //Look at __game.dm for barricade defines
-/obj/structure/barricade/metal/examine(mob/user)
+/obj/structure/barricade/metal/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
switch(build_state)
if(BARRICADE_BSTATE_SECURED)
- to_chat(user, SPAN_INFO("The protection panel is still tighly screwed in place."))
+ . += SPAN_INFO("The protection panel is still tighly screwed in place.")
if(BARRICADE_BSTATE_UNSECURED)
- to_chat(user, SPAN_INFO("The protection panel has been removed, you can see the anchor bolts."))
+ . += SPAN_INFO("The protection panel has been removed, you can see the anchor bolts.")
if(BARRICADE_BSTATE_MOVABLE)
- to_chat(user, SPAN_INFO("The protection panel has been removed and the anchor bolts loosened. It's ready to be taken apart."))
+ . += SPAN_INFO("The protection panel has been removed and the anchor bolts loosened. It's ready to be taken apart.")
/obj/structure/barricade/metal/attackby(obj/item/W, mob/user)
if(W.iswelder())
diff --git a/code/game/objects/structures/barricades/plasteel.dm b/code/game/objects/structures/barricades/plasteel.dm
index ff9f8bf6992..f13c454b394 100644
--- a/code/game/objects/structures/barricades/plasteel.dm
+++ b/code/game/objects/structures/barricades/plasteel.dm
@@ -42,16 +42,15 @@
else
return 0
-/obj/structure/barricade/plasteel/examine(mob/user)
+/obj/structure/barricade/plasteel/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
-
switch(build_state)
if(BARRICADE_BSTATE_SECURED)
- to_chat(user, SPAN_INFO("The protection panel is still tighly screwed in place."))
+ . += SPAN_INFO("The protection panel is still tighly screwed in place.")
if(BARRICADE_BSTATE_UNSECURED)
- to_chat(user, SPAN_INFO("The protection panel has been removed, you can see the anchor bolts."))
+ . += SPAN_INFO("The protection panel has been removed, you can see the anchor bolts.")
if(BARRICADE_BSTATE_MOVABLE)
- to_chat(user, SPAN_INFO("The protection panel has been removed and the anchor bolts loosened. It's ready to be taken apart."))
+ . += SPAN_INFO("The protection panel has been removed and the anchor bolts loosened. It's ready to be taken apart.")
/obj/structure/barricade/plasteel/weld_cade(obj/item/W, mob/user)
busy = TRUE
diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm
index 5a3ff45cef2..a4c9f39be97 100644
--- a/code/game/objects/structures/bedsheet_bin.dm
+++ b/code/game/objects/structures/bedsheet_bin.dm
@@ -376,16 +376,15 @@ LINEN BINS
var/obj/item/hidden = null
-/obj/structure/bedsheetbin/examine(mob/user)
+/obj/structure/bedsheetbin/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
-
if(amount < 1)
- to_chat(user, "There are no bed sheets in the bin.")
+ . += "There are no bed sheets in the bin."
return
if(amount == 1)
- to_chat(user, "There is one bed sheet in the bin.")
+ . += "There is one bed sheet in the bin."
return
- to_chat(user, "There are [amount] bed sheets in the bin.")
+ . += "There are [amount] bed sheets in the bin."
/obj/structure/bedsheetbin/update_icon()
diff --git a/code/game/objects/structures/bonfire.dm b/code/game/objects/structures/bonfire.dm
index 30ffa8d0e80..f04c53eb064 100644
--- a/code/game/objects/structures/bonfire.dm
+++ b/code/game/objects/structures/bonfire.dm
@@ -32,22 +32,22 @@ GLOBAL_LIST_EMPTY(total_active_bonfires)
GLOB.total_active_bonfires -= src
. = ..()
-/obj/structure/bonfire/examine(mob/user, distance, is_adjacent)
+/obj/structure/bonfire/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance > 2)
return
if(on_fire)
switch(fuel)
if(0 to 200)
- to_chat(user, "\The [src] is burning weakly.")
+ . += "\The [src] is burning weakly."
if(200 to 600)
- to_chat(user, "\The [src] is gently burning.")
+ . += "\The [src] is gently burning."
if(600 to 900)
- to_chat(user, "\The [src] is burning steadily.")
+ . += "\The [src] is burning steadily."
if(900 to 1300)
- to_chat(user, "The flames are dancing wildly!")
+ . += "The flames are dancing wildly!"
if(1300 to 2000)
- to_chat(user, "The fire is roaring!")
+ . += "The fire is roaring!"
/obj/structure/bonfire/update_icon()
if(on_fire)
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index bc888dbaa26..e6794df2ff4 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -90,30 +90,30 @@
/obj/structure/closet/proc/content_info(mob/user, content_size)
if(!content_size)
- to_chat(user, "\The [src] is empty.")
+ . = "\The [src] is empty."
else if(storage_capacity > content_size*4)
- to_chat(user, "\The [src] is barely filled.")
+ . = "\The [src] is barely filled."
else if(storage_capacity > content_size*2)
- to_chat(user, "\The [src] is less than half full.")
+ . = "\The [src] is less than half full."
else if(storage_capacity > content_size)
- to_chat(user, "\The [src] still has some free space.")
+ . = "\The [src] still has some free space."
else
- to_chat(user, "\The [src] is full.")
+ . = "\The [src] is full."
-/obj/structure/closet/examine(mob/user, distance, is_adjacent)
+/obj/structure/closet/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 1 && !src.opened)
var/content_size = 0
for(var/obj/item/I in contents)
if(!I.anchored)
content_size += Ceiling(I.w_class/2)
- content_info(user, content_size)
+ . += content_info(user, content_size)
if(!src.opened && isobserver(user))
- to_chat(user, "It contains: [counting_english_list(contents)]")
+ . += "It contains: [counting_english_list(contents)]"
if(src.opened && linked_teleporter && is_adjacent)
- to_chat(user, FONT_SMALL(SPAN_NOTICE("There appears to be a device attached to the interior backplate of \the [src]...")))
+ . += FONT_SMALL(SPAN_NOTICE("There appears to be a device attached to the interior backplate of \the [src]..."))
/obj/structure/closet/proc/stored_weight()
var/content_size = 0
diff --git a/code/game/objects/structures/crystals.dm b/code/game/objects/structures/crystals.dm
index dde09371dc2..5bb747e5835 100644
--- a/code/game/objects/structures/crystals.dm
+++ b/code/game/objects/structures/crystals.dm
@@ -27,7 +27,7 @@
if(our_creator)
creator = our_creator
-/obj/structure/reagent_crystal/examine(mob/user)
+/obj/structure/reagent_crystal/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
var/state
var/current_damage = health / initial(health)
@@ -40,7 +40,7 @@
state = SPAN_WARNING("The crystal has scratches and deeper grooves on its surface.")
if(0.8 to 1)
state = SPAN_NOTICE("The crystal looks structurally sound.")
- to_chat(user, state)
+ . += state
/obj/structure/reagent_crystal/proc/take_damage(var/damage)
health -= damage
diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm
index 14e99640db1..591541fb7da 100644
--- a/code/game/objects/structures/door_assembly.dm
+++ b/code/game/objects/structures/door_assembly.dm
@@ -31,9 +31,9 @@
. = ..()
update_state()
-/obj/structure/door_assembly/examine(mob/user)
+/obj/structure/door_assembly/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, "It is currently facing [dir2text(dir)].")
+ . += "It is currently facing [dir2text(dir)]."
/obj/structure/door_assembly/door_assembly_generic
base_name = "airlock"
diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
index bd83eaf810f..0be32dee5f3 100644
--- a/code/game/objects/structures/girders.dm
+++ b/code/game/objects/structures/girders.dm
@@ -18,20 +18,20 @@
var/reinforcing = 0
var/plating = FALSE
-/obj/structure/girder/examine(mob/user, distance, infix, suffix)
+/obj/structure/girder/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
var/state
var/current_damage = health / initial(health)
switch(current_damage)
if(0 to 0.2)
- state = "The support struts are collapsing!"
+ state = SPAN_DANGER("The support struts are collapsing!")
if(0.2 to 0.4)
- state = "The support struts are warped!"
+ state = SPAN_WARNING("The support struts are warped!")
if(0.4 to 0.8)
- state = "The support struts are dented, but holding together."
+ state = SPAN_NOTICE("The support struts are dented, but holding together.")
if(0.8 to 1)
- state = "The support struts look completely intact."
- to_chat(user, state)
+ state = SPAN_NOTICE("The support struts look completely intact.")
+ . += state
/obj/structure/girder/displaced
name = "displaced girder"
diff --git a/code/game/objects/structures/gore/core.dm b/code/game/objects/structures/gore/core.dm
index f04df944274..95c511fbc82 100644
--- a/code/game/objects/structures/gore/core.dm
+++ b/code/game/objects/structures/gore/core.dm
@@ -13,18 +13,18 @@
. = ..()
health = maxHealth
-/obj/structure/gore/examine(mob/user, distance, is_adjacent)
+/obj/structure/gore/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 2)
var/health_div = health / maxHealth
if(health_div >= 0.9)
- to_chat(user, SPAN_NOTICE("\The [src] appears completely intact."))
+ . += SPAN_NOTICE("\The [src] appears completely intact.")
else if(health_div >= 0.7)
- to_chat(user, SPAN_NOTICE("\The [src] is starting to tear somewhat."))
+ . += SPAN_NOTICE("\The [src] is starting to tear somewhat.")
else if(health_div >= 0.4)
- to_chat(user, SPAN_WARNING("\The [src] is starting to fall apart."))
+ . += SPAN_WARNING("\The [src] is starting to fall apart.")
else
- to_chat(user, SPAN_WARNING("\The [src] is barely holding itself together!"))
+ . += SPAN_WARNING("\The [src] is barely holding itself together!")
/obj/structure/gore/proc/healthcheck()
if(health <= 0)
diff --git a/code/game/objects/structures/gore/nest.dm b/code/game/objects/structures/gore/nest.dm
index 3afc18124d3..32aec2a9d9d 100644
--- a/code/game/objects/structures/gore/nest.dm
+++ b/code/game/objects/structures/gore/nest.dm
@@ -13,18 +13,18 @@
. = ..()
health = maxHealth
-/obj/structure/bed/nest/examine(mob/user, distance, is_adjacent)
+/obj/structure/bed/nest/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 2)
var/health_div = health / maxHealth
if(health_div >= 0.9)
- to_chat(user, SPAN_NOTICE("\The [src] appears completely intact."))
+ . += SPAN_NOTICE("\The [src] appears completely intact.")
else if(health_div >= 0.7)
- to_chat(user, SPAN_NOTICE("\The [src] is starting to tear somewhat."))
+ . += SPAN_NOTICE("\The [src] is starting to tear somewhat.")
else if(health_div >= 0.4)
- to_chat(user, SPAN_WARNING("\The [src] is starting to fall apart."))
+ . += SPAN_WARNING("\The [src] is starting to fall apart.")
else
- to_chat(user, SPAN_WARNING("\The [src] is barely holding itself together!"))
+ . += SPAN_WARNING("\The [src] is barely holding itself together!")
/obj/structure/bed/nest/update_icon()
return
diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm
index 36752503cb4..c448097d4e1 100644
--- a/code/game/objects/structures/janicart.dm
+++ b/code/game/objects/structures/janicart.dm
@@ -88,14 +88,14 @@
/obj/structure/janitorialcart/proc/get_short_status()
return "Contents: [english_list(contents)]"
-/obj/structure/janitorialcart/examine(mob/user, distance, is_adjacent)
+/obj/structure/janitorialcart/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 1)
if (mybucket)
var/contains = mybucket.reagents.total_volume
- to_chat(user, "[icon2html(src, user)] The bucket contains [contains] unit\s of liquid!")
+ . += "[icon2html(src, user)] The bucket contains [contains] unit\s of liquid!"
else
- to_chat(user, "[icon2html(src, user)] There is no bucket mounted on it!")
+ . += "[icon2html(src, user)] There is no bucket mounted on it!"
//everything else is visible, so doesn't need to be mentioned
diff --git a/code/game/objects/structures/mop_bucket.dm b/code/game/objects/structures/mop_bucket.dm
index 626c8cb316e..0248b6486f9 100644
--- a/code/game/objects/structures/mop_bucket.dm
+++ b/code/game/objects/structures/mop_bucket.dm
@@ -18,10 +18,10 @@
GLOB.janitorial_supplies -= src
return ..()
-/obj/structure/mopbucket/examine(mob/user, distance, is_adjacent)
+/obj/structure/mopbucket/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 1)
- to_chat(user, "Contains [reagents.total_volume] unit\s of water.")
+ . += "It contains [reagents.total_volume] unit\s of water."
/obj/structure/mopbucket/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/mop))
diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm
index 44ea88f3efc..8e9802f116e 100644
--- a/code/game/objects/structures/noticeboard.dm
+++ b/code/game/objects/structures/noticeboard.dm
@@ -34,7 +34,7 @@
// Since Topic() never seems to interact with usr on more than a superficial
// level, it should be fine to let anyone mess with the board other than ghosts.
-/obj/structure/noticeboard/examine(mob/user, distance, is_adjacent)
+/obj/structure/noticeboard/examine(mob/user, distance, is_adjacent, infix, suffix)
if(is_adjacent)
var/dat = "Noticeboard
"
for(var/obj/item/paper/P in src)
diff --git a/code/game/objects/structures/railing.dm b/code/game/objects/structures/railing.dm
index a5ee93a8fa1..9ff031cf8fd 100644
--- a/code/game/objects/structures/railing.dm
+++ b/code/game/objects/structures/railing.dm
@@ -71,18 +71,18 @@
R.update_icon()
return ..()
-/obj/structure/railing/examine(mob/user)
+/obj/structure/railing/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(health < maxhealth)
switch(health / maxhealth)
if(0.0 to 0.5)
- to_chat(user, SPAN_WARNING("It looks severely damaged!"))
+ . += SPAN_WARNING("It looks severely damaged!")
if(0.25 to 0.5)
- to_chat(user, SPAN_WARNING("It looks damaged!"))
+ . += SPAN_WARNING("It looks damaged!")
if(0.5 to 1.0)
- to_chat(user, SPAN_NOTICE("It has a few scrapes and dents."))
- to_chat(user, FONT_SMALL(SPAN_NOTICE("\The [src] is [density ? "closed" : "open"] to passage.")))
- to_chat(user, FONT_SMALL(SPAN_NOTICE("\The [src] is [anchored ? "" : "not"] screwed to the floor.")))
+ . += SPAN_NOTICE("It has a few scrapes and dents.")
+ . += FONT_SMALL(SPAN_NOTICE("\The [src] is [density ? "closed" : "open"] to passage."))
+ . += FONT_SMALL(SPAN_NOTICE("\The [src] is [anchored ? "" : "not"] screwed to the floor."))
/obj/structure/railing/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(istype(mover,/obj/item/projectile))
diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm
index c98836e4ca8..d7a6b1e7323 100644
--- a/code/game/objects/structures/safe.dm
+++ b/code/game/objects/structures/safe.dm
@@ -44,13 +44,13 @@ FLOOR SAFES
space += I.w_class
I.forceMove(src)
-/obj/structure/safe/examine(mob/user)
+/obj/structure/safe/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(broken)
- to_chat(user, SPAN_WARNING("\The [src]'s locking system has been drilled open!"))
+ . += SPAN_WARNING("\The [src]'s locking system has been drilled open!")
else if(time_to_drill < 300 SECONDS)
var/time_left = max(round(time_to_drill / 10), 0)
- to_chat(user, SPAN_WARNING("There are only [time_left] second\s of drilling left until \the [src] is broken!"))
+ . += SPAN_WARNING("There are only [time_left] second\s of drilling left until \the [src] is broken!")
/obj/structure/safe/Destroy()
if(drill)
diff --git a/code/game/objects/structures/sarcophagus.dm b/code/game/objects/structures/sarcophagus.dm
index f945bd32cd2..a89d3dd94c7 100644
--- a/code/game/objects/structures/sarcophagus.dm
+++ b/code/game/objects/structures/sarcophagus.dm
@@ -7,12 +7,12 @@
anchored = 0
var/open = FALSE
-/obj/structure/sarcophagus/examine(mob/user)
+/obj/structure/sarcophagus/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(!open)
- to_chat(user, "\The [src]'s lid is closed shut.")
+ . += "\The [src]'s lid is closed shut."
else
- to_chat(user, "\The [src]'s lid is open.")
+ . += "\The [src]'s lid is open."
/obj/structure/sarcophagus/Initialize()
. = ..()
diff --git a/code/game/objects/structures/simple_doors.dm b/code/game/objects/structures/simple_doors.dm
index c462be99ddc..07e33f0b78a 100644
--- a/code/game/objects/structures/simple_doors.dm
+++ b/code/game/objects/structures/simple_doors.dm
@@ -58,10 +58,10 @@
lock = null
return ..()
-/obj/structure/simple_door/examine(mob/user)
+/obj/structure/simple_door/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(lock)
- to_chat(user, "It appears to have a lock.")
+ . += SPAN_NOTICE("It appears to have a lock.")
/obj/structure/simple_door/CollidedWith(atom/user)
..()
diff --git a/code/game/objects/structures/vr/_remote_chair.dm b/code/game/objects/structures/vr/_remote_chair.dm
index c2a1f6233c8..78513c239e5 100644
--- a/code/game/objects/structures/vr/_remote_chair.dm
+++ b/code/game/objects/structures/vr/_remote_chair.dm
@@ -17,10 +17,10 @@
STOP_PROCESSING(SSprocessing, src)
return ..()
-/obj/structure/bed/stool/chair/remote/examine(mob/user)
+/obj/structure/bed/stool/chair/remote/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(portable_type)
- to_chat(user, FONT_SMALL(SPAN_NOTICE("Can be packed up by using a wrench on it.")))
+ . += FONT_SMALL(SPAN_NOTICE("Can be packed up by using a wrench on it."))
/obj/structure/bed/stool/chair/remote/update_icon()
return
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index 83518b0894b..5a5720fe7c8 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -33,28 +33,28 @@
atmos_canpass = CANPASS_PROC
-/obj/structure/window/examine(mob/user)
+/obj/structure/window/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(health == maxhealth)
- to_chat(user, SPAN_NOTICE("It looks fully intact."))
+ . += SPAN_NOTICE("It looks fully intact.")
else
var/perc = health / maxhealth
if(perc > 0.75)
- to_chat(user, SPAN_NOTICE("It has a few cracks."))
+ . += SPAN_NOTICE("It has a few cracks.")
else if(perc > 0.5)
- to_chat(user, SPAN_WARNING("It looks slightly damaged."))
+ . += SPAN_WARNING("It looks slightly damaged.")
else if(perc > 0.25)
- to_chat(user, SPAN_WARNING("It looks moderately damaged."))
+ . += SPAN_WARNING("It looks moderately damaged.")
else
- to_chat(user, SPAN_DANGER("It looks heavily damaged."))
+ . += SPAN_DANGER("It looks heavily damaged.")
if(silicate)
if (silicate < 30)
- to_chat(user, SPAN_NOTICE("It has a thin layer of silicate."))
+ . += SPAN_NOTICE("It has a thin layer of silicate.")
else if (silicate < 70)
- to_chat(user, SPAN_NOTICE("It is covered in silicate."))
+ . += SPAN_NOTICE("It is covered in silicate.")
else
- to_chat(user, SPAN_NOTICE("There is a thick layer of silicate covering it."))
+ . += SPAN_NOTICE("There is a thick layer of silicate covering it.")
/obj/structure/window/proc/update_nearby_icons()
SSicon_smooth.add_to_queue_neighbors(src)
diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm
index 1be669c8752..0de988c20c5 100644
--- a/code/game/turfs/simulated/floor.dm
+++ b/code/game/turfs/simulated/floor.dm
@@ -20,7 +20,7 @@
heat_capacity = 10000
var/lava = 0
-/turf/simulated/floor/examine(mob/user, distance, infix, suffix)
+/turf/simulated/floor/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(flooring)
var/list/can_remove_with = list()
@@ -37,7 +37,7 @@
if(flooring.flags & TURF_REMOVE_WELDER)
can_remove_with += "welding tools"
if(length(can_remove_with))
- to_chat(user, SPAN_NOTICE("\The [src] can be removed with: [english_list(can_remove_with)]."))
+ . += SPAN_NOTICE("\The [src] can be removed with: [english_list(can_remove_with)].")
/turf/simulated/floor/is_plating()
return !flooring
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index 2aea1535d12..40fa92a509f 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -131,22 +131,22 @@
..(newtype)
//Appearance
-/turf/simulated/wall/examine(mob/user)
+/turf/simulated/wall/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(!damage)
- to_chat(user, SPAN_NOTICE("It looks fully intact."))
+ . += SPAN_NOTICE("It looks fully intact.")
else
var/dam = damage / material.integrity
if(dam <= 0.3)
- to_chat(user, SPAN_WARNING("It looks slightly damaged."))
+ . += SPAN_WARNING("It looks slightly damaged.")
else if(dam <= 0.6)
- to_chat(user, SPAN_WARNING("It looks moderately damaged."))
+ . += SPAN_WARNING("It looks moderately damaged.")
else
- to_chat(user, SPAN_DANGER("It looks heavily damaged."))
+ . += SPAN_DANGER("It looks heavily damaged.")
if(locate(/obj/effect/overlay/wallrot) in src)
- to_chat(user, SPAN_WARNING("There is fungus growing on [src]."))
+ . += SPAN_WARNING("There is fungus growing on [src].")
//Damage
diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm
index 2ef1f7b0477..14a7f6d4141 100644
--- a/code/modules/assembly/assembly.dm
+++ b/code/modules/assembly/assembly.dm
@@ -108,13 +108,13 @@
return
-/obj/item/device/assembly/examine(mob/user, distance, is_adjacent)
+/obj/item/device/assembly/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 1 || loc == user)
if(secured)
- to_chat(user, "\The [src] is ready!")
+ . += "\The [src] is ready!"
else
- to_chat(user, "\The [src] can be attached!")
+ . += "\The [src] can be attached!"
/obj/item/device/assembly/attack_self(mob/user)
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index 33a5aee9c87..546a3361e57 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -76,13 +76,13 @@
if(master)
master.update_icon()
-/obj/item/device/assembly_holder/examine(mob/user, distance, is_adjacent)
+/obj/item/device/assembly_holder/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 1 || src.loc == user)
if (src.secured)
- to_chat(user, SPAN_NOTICE("\The [src] is ready!"))
+ . += SPAN_NOTICE("\The [src] is ready!")
else
- to_chat(user, SPAN_NOTICE("\The [src] can be attached!"))
+ . += SPAN_NOTICE("\The [src] can be attached!")
/obj/item/device/assembly_holder/HasProximity(atom/movable/AM as mob|obj)
if(a_left)
diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm
index 16524fd5296..c7e921cf14f 100644
--- a/code/modules/assembly/infrared.dm
+++ b/code/modules/assembly/infrared.dm
@@ -58,11 +58,10 @@
to_chat(user, SPAN_NOTICE("You rotate \the [src] to face [direction_text]."))
QDEL_NULL(first)
-/obj/item/device/assembly/infra/examine(mob/user)
+/obj/item/device/assembly/infra/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
var/direction_text = dir2text(dir)
- to_chat(user, SPAN_NOTICE("It is facing [direction_text]."))
-
+ . += SPAN_NOTICE("It is facing [direction_text].")
/obj/item/device/assembly/infra/process()
diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm
index 4fb5a490851..61b5b75d8c9 100644
--- a/code/modules/assembly/mousetrap.dm
+++ b/code/modules/assembly/mousetrap.dm
@@ -13,10 +13,10 @@
matter = list(DEFAULT_WALL_MATERIAL = 100)
var/armed = FALSE
-/obj/item/device/assembly/mousetrap/examine(mob/user)
+/obj/item/device/assembly/mousetrap/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(armed)
- to_chat(user, "It looks like it's armed.")
+ . += "It looks like it's armed."
/obj/item/device/assembly/mousetrap/update_icon()
icon_state = armed ? "mousetraparmed" : "mousetrap"
diff --git a/code/modules/atmospherics/components/binary_devices/oxyregenerator.dm b/code/modules/atmospherics/components/binary_devices/oxyregenerator.dm
index 7e2427362ff..8c0290c7f08 100644
--- a/code/modules/atmospherics/components/binary_devices/oxyregenerator.dm
+++ b/code/modules/atmospherics/components/binary_devices/oxyregenerator.dm
@@ -53,9 +53,9 @@
power_rating *= initial(power_rating)
..()
-/obj/machinery/atmospherics/binary/oxyregenerator/examine(user)
+/obj/machinery/atmospherics/binary/oxyregenerator/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user,"Its outlet port is to the [dir2text(dir)]")
+ . += "Its outlet port is to the [dir2text(dir)]."
/obj/machinery/atmospherics/binary/oxyregenerator/attackby(obj/item/O as obj, mob/user as mob)
if(O.iswrench())
diff --git a/code/modules/atmospherics/components/unary/cold_sink.dm b/code/modules/atmospherics/components/unary/cold_sink.dm
index 0bb8e90d267..add19e545c2 100644
--- a/code/modules/atmospherics/components/unary/cold_sink.dm
+++ b/code/modules/atmospherics/components/unary/cold_sink.dm
@@ -181,7 +181,7 @@
return ..()
-/obj/machinery/atmospherics/unary/freezer/examine(mob/user)
+/obj/machinery/atmospherics/unary/freezer/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(panel_open)
- to_chat(user, "The maintenance hatch is open.")
+ . += "The maintenance hatch is open."
diff --git a/code/modules/atmospherics/components/unary/heat_source.dm b/code/modules/atmospherics/components/unary/heat_source.dm
index 8b371f6ede3..ab255fa5585 100644
--- a/code/modules/atmospherics/components/unary/heat_source.dm
+++ b/code/modules/atmospherics/components/unary/heat_source.dm
@@ -169,7 +169,7 @@
return ..()
-/obj/machinery/atmospherics/unary/heater/examine(mob/user)
+/obj/machinery/atmospherics/unary/heater/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(panel_open)
- to_chat(user, "The maintenance hatch is open.")
+ . += "The maintenance hatch is open."
diff --git a/code/modules/atmospherics/components/unary/vent_pump.dm b/code/modules/atmospherics/components/unary/vent_pump.dm
index 7d83fc01bfa..9698c2d10b1 100644
--- a/code/modules/atmospherics/components/unary/vent_pump.dm
+++ b/code/modules/atmospherics/components/unary/vent_pump.dm
@@ -416,14 +416,14 @@
else
return ..()
-/obj/machinery/atmospherics/unary/vent_pump/examine(mob/user, distance, is_adjacent)
+/obj/machinery/atmospherics/unary/vent_pump/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 1)
- to_chat(user, "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W")
+ . += "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s at [round(last_power_draw)] W."
else
- to_chat(user, "You are too far away to read the gauge.")
+ . += "You are too far away to read the gauge."
if(welded)
- to_chat(user, "It seems welded shut.")
+ . += "It seems welded shut."
/obj/machinery/atmospherics/unary/vent_pump/power_change()
var/old_stat = stat
diff --git a/code/modules/atmospherics/components/unary/vent_scrubber.dm b/code/modules/atmospherics/components/unary/vent_scrubber.dm
index 3df33f5c9f5..b3de367f47d 100644
--- a/code/modules/atmospherics/components/unary/vent_scrubber.dm
+++ b/code/modules/atmospherics/components/unary/vent_scrubber.dm
@@ -417,11 +417,11 @@
return ..()
-/obj/machinery/atmospherics/unary/vent_scrubber/examine(mob/user, distance, is_adjacent)
+/obj/machinery/atmospherics/unary/vent_scrubber/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 1)
- to_chat(user, "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W")
+ . += "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s at [round(last_power_draw)] W."
else
- to_chat(user, "You are too far away to read the gauge.")
+ . += "You are too far away to read the gauge."
if(welded)
- to_chat(user, "It seems welded shut.")
+ . += "It seems welded shut."
diff --git a/code/modules/atmospherics/components/valve.dm b/code/modules/atmospherics/components/valve.dm
index 34bfc2d7dae..78668e0378f 100644
--- a/code/modules/atmospherics/components/valve.dm
+++ b/code/modules/atmospherics/components/valve.dm
@@ -324,6 +324,6 @@
qdel(src)
return TRUE
-/obj/machinery/atmospherics/valve/examine(mob/user)
+/obj/machinery/atmospherics/valve/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, "It is [open ? "open" : "closed"].")
+ . += "It is [open ? "open" : "closed"]."
diff --git a/code/modules/battlemonsters/items/card.dm b/code/modules/battlemonsters/items/card.dm
index 22fa9185a47..a1394d0d9df 100644
--- a/code/modules/battlemonsters/items/card.dm
+++ b/code/modules/battlemonsters/items/card.dm
@@ -164,12 +164,11 @@
transform = M
-/obj/item/battle_monsters/card/examine(mob/user, distance, is_adjacent)
-
+/obj/item/battle_monsters/card/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(facedown && src.loc != user)
- to_chat(user, SPAN_NOTICE("You can't examine \the [src] while it's face down!"))
+ . += SPAN_NOTICE("You can't examine \the [src] while it's face down!")
return
if(trap_datum)
diff --git a/code/modules/cargo/delivery/backpack.dm b/code/modules/cargo/delivery/backpack.dm
index 4635b85366b..cccb627b723 100644
--- a/code/modules/cargo/delivery/backpack.dm
+++ b/code/modules/cargo/delivery/backpack.dm
@@ -17,10 +17,10 @@
QDEL_LIST(contained_packages)
return ..()
-/obj/item/cargo_backpack/examine(mob/user, distance)
+/obj/item/cargo_backpack/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(length(contained_packages))
- to_chat(user, FONT_SMALL(SPAN_NOTICE("\[?\] There are some packages loaded. \[Show Package Data\]")))
+ . += FONT_SMALL(SPAN_NOTICE("\[?\] There are some packages loaded. \[Show Package Data\]"))
/obj/item/cargo_backpack/Topic(href, href_list)
if(href_list["show_package_data"])
diff --git a/code/modules/cargo/delivery/package.dm b/code/modules/cargo/delivery/package.dm
index 13a0734f6c8..b559d499ef2 100644
--- a/code/modules/cargo/delivery/package.dm
+++ b/code/modules/cargo/delivery/package.dm
@@ -35,7 +35,7 @@
delivery_point_sector = delivery_point.delivery_sector
delivery_point_coordinates = "[delivery_point.x]-[delivery_point.y]"
-/obj/item/cargo_package/examine(mob/user, distance)
+/obj/item/cargo_package/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(delivery_point_id)
var/delivery_site = "Unknown"
@@ -43,8 +43,8 @@
var/obj/effect/overmap/visitable/delivery_sector = delivery_point_sector.resolve()
if(delivery_sector)
delivery_site = delivery_sector.name
- to_chat(user, SPAN_NOTICE("The label on the package reads: SITE: [delivery_site] | COORD: [delivery_point_coordinates] | ID: [delivery_point_id]"))
- to_chat(user, SPAN_NOTICE("The price tag on the package reads: [pay_amount]电"))
+ . += SPAN_NOTICE("The label on the package reads: SITE: [delivery_site] | COORD: [delivery_point_coordinates] | ID: [delivery_point_id]")
+ . += SPAN_NOTICE("The price tag on the package reads: [pay_amount]电.")
/obj/item/cargo_package/do_additional_pickup_checks(var/mob/living/carbon/human/user)
if(!ishuman(user))
@@ -132,10 +132,10 @@
var/obj/structure/cargo_receptacle/selected_delivery_point = pick(eligible_delivery_points)
setup_delivery_point(selected_delivery_point)
-/obj/item/cargo_package/offship/examine(mob/user, distance)
+/obj/item/cargo_package/offship/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(!delivery_point_id)
- to_chat(user, SPAN_NOTICE("Delivery site still being calculated, please check back later!"))
+ . += SPAN_NOTICE("Delivery site still being calculated, please check back later!")
/obj/item/cargo_package/offship/to_horizon
horizon_delivery = TRUE
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 60895022d65..59d0354c3de 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -1204,18 +1204,18 @@
M.update_inv_w_uniform()
playsound(M, /singleton/sound_category/rustle_sound, 15, 1, -5)
-/obj/item/clothing/under/examine(mob/user, distance, is_adjacent)
+/obj/item/clothing/under/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(has_sensor)
switch(src.sensor_mode)
if(SUIT_SENSOR_OFF)
- to_chat(user, "Its sensors appear to be disabled.")
+ . += "Its sensors appear to be disabled."
if(SUIT_SENSOR_BINARY)
- to_chat(user, "Its binary life sensors appear to be enabled.")
+ . += "Its binary life sensors appear to be enabled."
if(SUIT_SENSOR_VITAL)
- to_chat(user, "Its vitals tracker appears to be enabled.")
+ . += "Its vitals tracker appears to be enabled."
if(SUIT_SENSOR_TRACKING)
- to_chat(user, "Its vitals tracker and tracking beacon appear to be enabled.")
+ . += "Its vitals tracker and tracking beacon appear to be enabled."
/obj/item/clothing/under/proc/set_sensors(mob/user as mob)
var/mob/M = user
diff --git a/code/modules/clothing/clothing_accessories.dm b/code/modules/clothing/clothing_accessories.dm
index ad33c7f265a..0d9873d0053 100644
--- a/code/modules/clothing/clothing_accessories.dm
+++ b/code/modules/clothing/clothing_accessories.dm
@@ -91,11 +91,11 @@
return main_ear
-/obj/item/clothing/examine(mob/user, distance, is_adjacent)
+/obj/item/clothing/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(LAZYLEN(accessories))
for(var/obj/item/clothing/accessory/A in accessories)
- to_chat(user, SPAN_NOTICE("\A [A] [A.gender == PLURAL ? "are" : "is"] attached to it."))
+ . += SPAN_NOTICE("\A [A] [A.gender == PLURAL ? "are" : "is"] attached to it.")
/obj/item/clothing/equipped(mob/user, slot, assisted_equip)
. = ..()
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index a452d1610e6..1654458127d 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -98,11 +98,11 @@
else
to_chat(usr, SPAN_NOTICE("Camera deactivated."))
-/obj/item/clothing/head/helmet/space/examine(mob/user, distance, is_adjacent)
+/obj/item/clothing/head/helmet/space/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if((distance <= 1) && camera)
- to_chat(user, FONT_SMALL(SPAN_NOTICE("To toggle the helmet camera, right click the helmet and press Toggle Helmet Camera.")))
- to_chat(user, "This helmet has a built-in camera. It's [!ispath(camera) && camera.status ? "" : "in"]active.")
+ . += FONT_SMALL(SPAN_NOTICE("To toggle the helmet camera, right click the helmet and press Toggle Helmet Camera."))
+ . += "This helmet has a built-in camera. It's [!ispath(camera) && camera.status ? "" : "in"]active."
/obj/item/clothing/head/helmet/hos
name = "head of security helmet"
diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm
index e2a6a8f2885..ab658a48800 100644
--- a/code/modules/clothing/shoes/magboots.dm
+++ b/code/modules/clothing/shoes/magboots.dm
@@ -105,12 +105,12 @@
if (.)
INVOKE_ASYNC(src, PROC_REF(update_wearer))
-/obj/item/clothing/shoes/magboots/examine(mob/user)
+/obj/item/clothing/shoes/magboots/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
var/state = "disabled"
if(item_flags & ITEM_FLAG_NO_SLIP)
state = "enabled"
- to_chat(user, "Its mag-pulse traction system appears to be [state].")
+ . += "Its mag-pulse traction system appears to be [state]."
/obj/item/clothing/shoes/magboots/hegemony
name = "hegemony magboots"
diff --git a/code/modules/clothing/spacesuits/breaches.dm b/code/modules/clothing/spacesuits/breaches.dm
index 4fe229ec66e..a890b24feb6 100644
--- a/code/modules/clothing/spacesuits/breaches.dm
+++ b/code/modules/clothing/spacesuits/breaches.dm
@@ -223,11 +223,11 @@ var/global/list/breach_burn_descriptors = list(
..()
-/obj/item/clothing/suit/space/examine(mob/user)
+/obj/item/clothing/suit/space/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(can_breach && breaches && breaches.len)
for(var/datum/breach/B in breaches)
- to_chat(user, "It has \a [B.descriptor].")
+ . += "It has \a [B.descriptor]."
/obj/item/clothing/suit/space/get_pressure_weakness(pressure)
. = ..()
diff --git a/code/modules/clothing/spacesuits/rig/modules/modules.dm b/code/modules/clothing/spacesuits/rig/modules/modules.dm
index 897b7b87b70..324504dfdcb 100644
--- a/code/modules/clothing/spacesuits/rig/modules/modules.dm
+++ b/code/modules/clothing/spacesuits/rig/modules/modules.dm
@@ -61,15 +61,15 @@
var/list/stat_rig_module/stat_modules = new()
var/category // Use for restricting modules for specific suits, to specialize
-/obj/item/rig_module/examine(mob/user)
+/obj/item/rig_module/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
switch(damage)
if(0)
- to_chat(user, SPAN_NOTICE("It is undamaged."))
+ . += SPAN_NOTICE("It is undamaged.")
if(1)
- to_chat(user, SPAN_WARNING("It is badly damaged."))
+ . += SPAN_WARNING("It is badly damaged.")
if(2)
- to_chat(user, SPAN_DANGER("It is almost completely destroyed."))
+ . += SPAN_DANGER("It is almost completely destroyed.")
/obj/item/rig_module/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/stack/nanopaste))
diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm
index 5137c0daa45..028166cb990 100644
--- a/code/modules/clothing/spacesuits/rig/rig.dm
+++ b/code/modules/clothing/spacesuits/rig/rig.dm
@@ -102,17 +102,17 @@
var/allowed_module_types = MODULE_GENERAL // All rigs by default should have access to general
var/list/species_restricted = list(BODYTYPE_HUMAN,BODYTYPE_TAJARA,BODYTYPE_UNATHI, BODYTYPE_SKRELL, BODYTYPE_IPC, BODYTYPE_IPC_BISHOP, BODYTYPE_IPC_ZENGHU)
-/obj/item/rig/examine()
+/obj/item/rig/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(wearer)
for(var/obj/item/piece in list(helmet,gloves,chest,boots))
if(!piece || piece.loc != wearer)
continue
- to_chat(usr, "[icon2html(piece, usr)] \The [piece] [piece.gender == PLURAL ? "are" : "is"] deployed.")
+ . += "[icon2html(piece, usr)] \The [piece] [piece.gender == PLURAL ? "are" : "is"] deployed."
if(src.loc == usr)
- to_chat(usr, "The maintenance panel is [open ? "open" : "closed"].")
- to_chat(usr, "Hardsuit systems are [offline ? "offline" : "online"].")
+ . += "The maintenance panel is [open ? "open" : "closed"]."
+ . += "Hardsuit systems are [offline ? "offline" : "online"]."
/obj/item/rig/Initialize()
. = ..()
diff --git a/code/modules/clothing/spacesuits/rig/rig_construction.dm b/code/modules/clothing/spacesuits/rig/rig_construction.dm
index ecf19d138fc..6cc4890f946 100644
--- a/code/modules/clothing/spacesuits/rig/rig_construction.dm
+++ b/code/modules/clothing/spacesuits/rig/rig_construction.dm
@@ -35,10 +35,10 @@
. = ..()
-/obj/item/rig_assembly/examine(mob/user, distance)
+/obj/item/rig_assembly/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(construct)
- to_chat(user, construct.get_desc())
+ . += construct.get_desc()
/obj/item/rig_assembly/MouseEntered(location, control, params)
. = ..()
diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm
index 2c42cd09992..8da055468d5 100644
--- a/code/modules/clothing/spacesuits/syndi.dm
+++ b/code/modules/clothing/spacesuits/syndi.dm
@@ -48,10 +48,10 @@
item_state = "softsuit_helmet"
contained_sprite = TRUE
-/obj/item/clothing/head/helmet/space/syndicate/covert/examine(mob/user, distance)
+/obj/item/clothing/head/helmet/space/syndicate/covert/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(distance <= 1)
- to_chat(user, SPAN_NOTICE("This helmet has extra armor compared to a normal softsuit helmet."))
+ . += SPAN_NOTICE("This helmet has extra armor compared to a normal softsuit helmet.")
/obj/item/clothing/suit/space/syndicate/covert
name = "softsuit"
@@ -62,10 +62,10 @@
item_state = "softsuit"
contained_sprite = TRUE
-/obj/item/clothing/suit/space/syndicate/covert/examine(mob/user, distance)
- ..()
+/obj/item/clothing/suit/space/syndicate/covert/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
+ . = ..()
if(distance <= 1)
- to_chat(user, SPAN_NOTICE("This suit has extra armor compared to a normal softsuit."))
+ . += SPAN_NOTICE("This suit has extra armor compared to a normal softsuit.")
//Green syndicate space suit
/obj/item/clothing/head/helmet/space/syndicate/green
diff --git a/code/modules/clothing/spacesuits/void/void.dm b/code/modules/clothing/spacesuits/void/void.dm
index 14bc25148be..7d80791cc68 100644
--- a/code/modules/clothing/spacesuits/void/void.dm
+++ b/code/modules/clothing/spacesuits/void/void.dm
@@ -93,16 +93,16 @@
var/obj/item/tank/tank = null // Deployable tank, if any.
var/obj/item/device/suit_cooling_unit/cooler = null // Deployable suit cooler, if any
-/obj/item/clothing/suit/space/void/examine(mob/user, distance, is_adjacent)
+/obj/item/clothing/suit/space/void/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
var/list/part_list = new
for(var/obj/item/I in list(helmet,boots,tank,cooler))
part_list += "\a [I]"
- to_chat(user, "\The [src] has [english_list(part_list)] installed.")
+ . += "\The [src] has [english_list(part_list)] installed."
if(tank && distance <= 1)
- to_chat(user, SPAN_NOTICE("The wrist-mounted pressure gauge reads [max(round(tank.air_contents.return_pressure()),0)] kPa remaining in \the [tank]."))
+ . += SPAN_NOTICE("The wrist-mounted pressure gauge reads [max(round(tank.air_contents.return_pressure()),0)] kPa remaining in \the [tank].")
if (cooler && distance <= 1)
- to_chat(user, SPAN_NOTICE("The mounted cooler's battery charge reads [round(cooler.cell.percent())]%"))
+ . += SPAN_NOTICE("The mounted cooler's battery charge reads [round(cooler.cell.percent())]%")
/obj/item/clothing/suit/space/void/refit_for_species(var/target_species)
..()
diff --git a/code/modules/clothing/under/accessories/badges.dm b/code/modules/clothing/under/accessories/badges.dm
index f6389081852..043c5a72381 100644
--- a/code/modules/clothing/under/accessories/badges.dm
+++ b/code/modules/clothing/under/accessories/badges.dm
@@ -589,9 +589,9 @@
var/credit_score = 5
var/species_tag = ""
-/obj/item/clothing/accessory/badge/passport/nralakk/examine(mob/user)
+/obj/item/clothing/accessory/badge/passport/nralakk/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, SPAN_NOTICE("The passport displays the owner's social credit score as: [credit_score]."))
+ . += SPAN_NOTICE("The passport displays the owner's social credit score as: [credit_score].")
/obj/item/clothing/accessory/badge/passport/nralakk/update_icon()
icon_state = "[initial(icon_state)][open ? "_o[species_tag]" : ""]"
diff --git a/code/modules/clothing/under/accessories/holster.dm b/code/modules/clothing/under/accessories/holster.dm
index 79e45969e91..2a12405e515 100644
--- a/code/modules/clothing/under/accessories/holster.dm
+++ b/code/modules/clothing/under/accessories/holster.dm
@@ -98,12 +98,12 @@
if (holstered)
holstered.emp_act(severity)
-/obj/item/clothing/accessory/holster/examine(mob/user)
+/obj/item/clothing/accessory/holster/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if (holstered)
- to_chat(user, "A [holstered] is holstered here.")
+ . += "A [holstered] is holstered here."
else
- to_chat(user, "It is empty.")
+ . += "It is empty."
/obj/item/clothing/accessory/holster/on_attached(obj/item/clothing/under/S, mob/user)
..()
diff --git a/code/modules/cooking/machinery/cooking_machines/_appliance.dm b/code/modules/cooking/machinery/cooking_machines/_appliance.dm
index 8aff68aa929..bd8d24ced46 100644
--- a/code/modules/cooking/machinery/cooking_machines/_appliance.dm
+++ b/code/modules/cooking/machinery/cooking_machines/_appliance.dm
@@ -71,21 +71,20 @@
qdel(CI)
return ..()
-/obj/machinery/appliance/examine(mob/user, distance, is_adjacent)
+/obj/machinery/appliance/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(is_adjacent)
- list_contents(user)
- return TRUE
+ . += list_contents(user)
/obj/machinery/appliance/proc/list_contents(var/mob/user)
+ . = list()
if (isemptylist(cooking_objs))
- to_chat(user, SPAN_NOTICE("It is empty."))
+ . = SPAN_NOTICE("It is empty.")
return
- var/string = "Contains..."
+ . = "Contains..."
for (var/datum/cooking_item/CI in cooking_objs)
- string += "- \a [CI.container.label(null, CI.combine_target)], [report_progress(CI)]
"
- string += "
"
- to_chat(user, string)
+ . += "\a [CI.container.label(null, CI.combine_target)], [report_progress(CI)]"
+ . += "
"
/obj/machinery/appliance/proc/report_progress(var/datum/cooking_item/CI)
if (!CI || !CI.max_cookwork)
diff --git a/code/modules/cooking/machinery/cooking_machines/_cooker.dm b/code/modules/cooking/machinery/cooking_machines/_cooker.dm
index 0ef550aa706..170e2a53203 100644
--- a/code/modules/cooking/machinery/cooking_machines/_cooker.dm
+++ b/code/modules/cooking/machinery/cooking_machines/_cooker.dm
@@ -18,17 +18,17 @@
var/temperature = T20C
var/starts_with = list()
-/obj/machinery/appliance/cooker/examine(mob/user, distance, is_adjacent)
+/obj/machinery/appliance/cooker/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if (is_adjacent)
if (!stat)
if (temperature < min_temp)
- to_chat(user, SPAN_WARNING("[src] is still heating up and is too cold to cook anything yet."))
+ . += SPAN_WARNING("[src] is still heating up and is too cold to cook anything yet.")
else
- to_chat(user, SPAN_NOTICE("It is running at [round(get_efficiency(), 0.1)]% efficiency!"))
- to_chat(user, "Temperature: [round(temperature - T0C, 0.1)]C / [round(optimal_temp - T0C, 0.1)]C")
+ . += SPAN_NOTICE("It is running at [round(get_efficiency(), 0.1)]% efficiency!")
+ . += "Temperature: [round(temperature - T0C, 0.1)]C / [round(optimal_temp - T0C, 0.1)]C"
else
- to_chat(user, SPAN_WARNING("It is switched off."))
+ . += SPAN_WARNING("It is switched off.")
/obj/machinery/appliance/cooker/MouseEntered(location, control, params)
. = ..()
diff --git a/code/modules/cooking/machinery/cooking_machines/_mixer.dm b/code/modules/cooking/machinery/cooking_machines/_mixer.dm
index 1138278542f..ced401e4354 100644
--- a/code/modules/cooking/machinery/cooking_machines/_mixer.dm
+++ b/code/modules/cooking/machinery/cooking_machines/_mixer.dm
@@ -17,9 +17,9 @@ fundamental differences
idle_power_usage = 50
appliancetype = 0
-/obj/machinery/appliance/mixer/examine(mob/user, distance, is_adjacent)
+/obj/machinery/appliance/mixer/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
- to_chat(user, SPAN_NOTICE("It is currently set to make a [selected_option]"))
+ . += SPAN_NOTICE("It is currently set to make a [selected_option]")
/obj/machinery/appliance/mixer/Initialize()
. = ..()
diff --git a/code/modules/cooking/machinery/cooking_machines/container.dm b/code/modules/cooking/machinery/cooking_machines/container.dm
index 845338be40b..5ece7806291 100644
--- a/code/modules/cooking/machinery/cooking_machines/container.dm
+++ b/code/modules/cooking/machinery/cooking_machines/container.dm
@@ -38,12 +38,12 @@
. = ..()
update_icon()
-/obj/item/reagent_containers/cooking_container/examine(var/mob/user)
+/obj/item/reagent_containers/cooking_container/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
. = ..()
if(length(contents))
- to_chat(user, SPAN_NOTICE(get_content_info()))
+ . += SPAN_NOTICE(get_content_info())
if(reagents.total_volume)
- to_chat(user, SPAN_NOTICE(get_reagent_info()))
+ . += SPAN_NOTICE(get_reagent_info())
/obj/item/reagent_containers/cooking_container/proc/get_content_info()
var/string = "It contains: