mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-25 14:00:18 +01:00
Adds examine boxes. (#18370)
* Adds examine boxes. * lint * what kind of dreams did you dream? * unlimited * midgardsormr * sdsd * fixes --------- Co-authored-by: Matt Atlas <liermattia@gmail.com>
This commit is contained in:
@@ -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) ("<div class='examine_block'>" + str + "</div>")
|
||||
|
||||
#define FONT_SIZE_SMALL "10px"
|
||||
#define FONT_SIZE_NORMAL "13px"
|
||||
#define FONT_SIZE_LARGE "16px"
|
||||
|
||||
@@ -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("<font size=4>This ability is <b>[connected_power.name]</b>.</font>"))
|
||||
to_chat(user, SPAN_NOTICE("[connected_power.desc]"))
|
||||
return TRUE
|
||||
/obj/screen/ability/obj_based/psionic/get_examine_text(mob/user)
|
||||
. = ..()
|
||||
. += SPAN_NOTICE("<font size=4>This ability is <b>[connected_power.name]</b>.</font>")
|
||||
. += SPAN_NOTICE("[connected_power.desc]")
|
||||
|
||||
/// Technomancer.
|
||||
/obj/screen/ability/obj_based/technomancer
|
||||
|
||||
@@ -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, "<span class='danger'>[law.get_index()]. [law.law]</span>")
|
||||
|
||||
/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)
|
||||
. += "<span class='danger'>[law.get_index()]. [law.law]</span>"
|
||||
if(ismob(who) && M.vr_mob)
|
||||
. += "<span class='danger'>[law.get_index()]. [law.law]</span>"
|
||||
else
|
||||
. += "[law.get_index()]. [law.law]"
|
||||
if(ismob(who) && M.vr_mob)
|
||||
. += "<span class='danger'>[law.get_index()]. [law.law]</span>"
|
||||
|
||||
/********************
|
||||
* Stating Laws *
|
||||
********************/
|
||||
|
||||
+17
-9
@@ -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. <a href=?src=\ref[src];examine_fluff=1>\[Show In Chat\]</a>"))) // 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. <a href=?src=\ref[src];examine_fluff=1>\[Show In Chat\]</a>")) // 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]."
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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. <a href=?src=\ref[src];read_tome=1>\[Read Tome\]</a>"))
|
||||
. += "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. <a href=?src=\ref[src];read_tome=1>\[Read Tome\]</a>")
|
||||
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"])
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 += "<span class='warning'>You are too far away to read it.</span>"
|
||||
if(distance > 3 && !isAI(user))
|
||||
t += SPAN_WARNING("You are too far away to read it.")
|
||||
|
||||
else if(stat & (NOPOWER|BROKEN))
|
||||
t += "<span class='warning'>The display is off.</span>"
|
||||
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()
|
||||
|
||||
|
||||
@@ -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, "<span class='warning'>[src]'s parts look loose.</span>")
|
||||
. += "<span class='warning'>[src]'s parts look loose.</span>"
|
||||
else
|
||||
to_chat(user, "<span class='danger'>[src]'s parts look very loose!</span>")
|
||||
return
|
||||
. += "<span class='danger'>[src]'s parts look very loose!</span>"
|
||||
|
||||
/obj/machinery/bot/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(W.isscrewdriver())
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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("<i>Click on \the [src] to finalize its direction.</i>")))
|
||||
to_chat(user, FONT_SMALL(SPAN_WARNING("Use a wirecutter or a plasma cutter to disassemble \the [src].")))
|
||||
. += FONT_SMALL(SPAN_NOTICE("<i>Click on \the [src] to finalize its direction.</i>"))
|
||||
. += 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("<i>Add cable coil to wire \the [src].</i>")))
|
||||
to_chat(user, FONT_SMALL(SPAN_WARNING("Use a wrench or a plasma cutter to disassemble \the [src].")))
|
||||
. += FONT_SMALL(SPAN_NOTICE("<i>Add cable coil to wire \the [src].</i>"))
|
||||
. += 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("<i>Add the desired circuitboard.</i>")))
|
||||
to_chat(user, FONT_SMALL(SPAN_WARNING("Use a wirecutter to remove the cables.")))
|
||||
. += FONT_SMALL(SPAN_NOTICE("<i>Add the desired circuitboard.</i>"))
|
||||
. += FONT_SMALL(SPAN_WARNING("Use a wirecutter to remove the cables."))
|
||||
if(COMPONENT_STATE)
|
||||
to_chat(user, FONT_SMALL(SPAN_NOTICE("<i>Add the required components. Use the screwdriver to complete the machine.</i>")))
|
||||
to_chat(user, FONT_SMALL(SPAN_WARNING("Use a crowbar to pry out the circuitboard and the components out.")))
|
||||
. += FONT_SMALL(SPAN_NOTICE("<i>Add the required components. Use the screwdriver to complete the machine.</i>"))
|
||||
. += 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
|
||||
|
||||
@@ -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))
|
||||
|
||||
|
||||
@@ -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("<b>[occupant]</b> [occupant.get_pronoun("is")] inside \the [initial(name)]."))
|
||||
. += SPAN_NOTICE("<b>[occupant]</b> [occupant.get_pronoun("is")] inside \the [initial(name)].")
|
||||
|
||||
/obj/machinery/cryopod/can_hold_dropped_items()
|
||||
return FALSE
|
||||
|
||||
@@ -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)
|
||||
. = ..()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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, "<b>Sensor readings:</b>")
|
||||
. += "<b>Sensor readings:</b>"
|
||||
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 += "<span class='warning'>DATA UNAVAILABLE</span>"
|
||||
to_chat(user, o)
|
||||
. += "<span class='warning'>DATA UNAVAILABLE</span>"
|
||||
continue
|
||||
var/celsius = convert_k2c(tile_info[index][1])
|
||||
var/pressure = tile_info[index][2]
|
||||
o += "<span class='[(dir_alerts[index] & (FIREDOOR_ALERT_HOT|FIREDOOR_ALERT_COLD)) ? "danger" : "color:blue"]'>"
|
||||
o += "[celsius]°C</span> "
|
||||
o += "<span style='color:blue'>"
|
||||
o += "[pressure]kPa</span></li>"
|
||||
to_chat(user, o)
|
||||
. += "<span class='[(dir_alerts[index] & (FIREDOOR_ALERT_HOT|FIREDOOR_ALERT_COLD)) ? "danger" : "color:blue"]'>"
|
||||
. += "[celsius]°C</span> "
|
||||
. += "<span style='color:blue'>"
|
||||
. += "[pressure]kPa</span>"
|
||||
|
||||
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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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()
|
||||
..()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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 <a href='?src=\ref[src];examine=1'>[SSatlas.current_sector.name]</a>."))
|
||||
. += SPAN_NOTICE("\The [src] shows the current sector to be <a href='?src=\ref[src];examine=1'>[SSatlas.current_sector.name]</a>.")
|
||||
|
||||
/obj/machinery/stargazer/power_change()
|
||||
..()
|
||||
|
||||
@@ -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:<br>\t[sanitize(message1)]<br>\t[sanitize(message2)]")
|
||||
. += "The display says:<br>\t[sanitize(message1)]<br>\t[sanitize(message2)]"
|
||||
|
||||
/obj/machinery/status_display/proc/set_message(m1, m2)
|
||||
if(m1)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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: <font color='[basecolor]'>\"[message]\"</font>")
|
||||
. += "It reads: <font color='[basecolor]'>\"[message]\"</font>"
|
||||
|
||||
/obj/effect/decal/cleanable/blood/gibs
|
||||
name = "gibs"
|
||||
|
||||
@@ -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!"))
|
||||
|
||||
@@ -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. <a href=?src=\ref[src];examine_armor=1>\[Show Armor Values\]</a>")))
|
||||
. += FONT_SMALL(SPAN_NOTICE("\[?\] This item has armor values. <a href=?src=\ref[src];examine_armor=1>\[Show Armor Values\]</a>"))
|
||||
|
||||
/obj/item/Topic(href, href_list)
|
||||
if(href_list["examine_armor"])
|
||||
|
||||
@@ -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, "<span class='notice'>\The [src] has [internal_tank] attached, that displays [round(internal_tank.air_contents.return_pressure() ? internal_tank.air_contents.return_pressure() : 0)] KPa.</span>")
|
||||
. += "<span class='notice'>\The [src] has [internal_tank] attached, that displays [round(internal_tank.air_contents.return_pressure() ? internal_tank.air_contents.return_pressure() : 0)] KPa.</span>"
|
||||
else
|
||||
to_chat(user, "<span class='notice'>\The [src] has no tank attached.</span>")
|
||||
. += "<span class='notice'>\The [src] has no tank attached.</span>"
|
||||
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, "<span class='warning'>[src] has no power cell installed.</span>")
|
||||
. += "<span class='warning'>[src] has no power cell installed.</span>"
|
||||
|
||||
/obj/structure/closet/airbubble/can_open()
|
||||
if(zipped)
|
||||
|
||||
@@ -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, "<span class='info'>You peer into \the [src].</span>")
|
||||
. += "<span class='info'>You peer into \the [src].</span>"
|
||||
for(var/mob/living/L in contents)
|
||||
L.examine(arglist(args))
|
||||
|
||||
|
||||
@@ -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()
|
||||
. = ..()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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, "<span class='notice'>It is currently set to [mode] docile mode.</span>")
|
||||
. += "<span class='notice'>It is currently set to [mode] docile mode.</span>"
|
||||
|
||||
/obj/item/device/dociler/attack_self(var/mob/user)
|
||||
if(mode == "somewhat")
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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, "<span class='danger'>It looks broken!</span>")
|
||||
. += "<span class='danger'>It looks broken!</span>"
|
||||
else
|
||||
if (powercell)
|
||||
var/power = round(powercell.charge / powercell.maxcharge * 100)
|
||||
to_chat(user, "<span class='notice'>The powercell is at [power]% charge.</span>")
|
||||
. += "<span class='notice'>The powercell is at [power]% charge.</span>"
|
||||
else
|
||||
to_chat(user, "<span class='warning'>It has no powercell to power it!")
|
||||
. += "<span class='warning'>It has no powercell to power it!"
|
||||
|
||||
/obj/item/device/magnetic_lock/attack_hand(var/mob/user)
|
||||
add_fingerprint(user)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
. = ..()
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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("<span class='notice'>\The [src] can be attached and modified!</span>")
|
||||
. += SPAN_NOTICE("\The [src] can be attached and modified!")
|
||||
else
|
||||
user.show_message("<span class='notice'>\The [src] can not be modified or attached!</span>")
|
||||
. += SPAN_NOTICE("\The [src] can not be modified or attached!")
|
||||
|
||||
/obj/item/device/radio/attackby(obj/item/W as obj, mob/user as mob)
|
||||
..()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 ? "<span style='color: rgb(51, 204, 51);font-weight: bold;'>Online</span>" : "<span style='color: rgb(204, 0, 0); font-weight: bold;'>Offline</span>"]")
|
||||
to_chat(user, "Audio feed is currently: [radio.get_broadcasting() ? "<span style='color: rgb(51, 204, 51); font-weight: bold;'>Online</span>" : "<span style='color: rgb(204, 0, 0); font-weight: bold;'>Offline</span>"]")
|
||||
. += "Video feed is currently: [camera.status ? "<span style='color: rgb(51, 204, 51);font-weight: bold;'>Online</span>" : "<span style='color: rgb(204, 0, 0); font-weight: bold;'>Offline</span>"]"
|
||||
. += "Audio feed is currently: [radio.get_broadcasting() ? "<span style='color: rgb(51, 204, 51); font-weight: bold;'>Online</span>" : "<span style='color: rgb(204, 0, 0); font-weight: bold;'>Offline</span>"]"
|
||||
|
||||
/obj/item/device/tvcamera/attack_self(mob/user)
|
||||
add_fingerprint(user)
|
||||
|
||||
@@ -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 <b>[uses]</b> uses left."))
|
||||
. += SPAN_NOTICE("It has <b>[uses]</b> 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 <b>[overloader.name]</b> inside."))
|
||||
. += SPAN_NOTICE("This one has a <b>[overloader.name]</b> inside.")
|
||||
|
||||
/obj/item/storage/overloader/open(mob/user)
|
||||
..()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"] <b>[src.amount]</b> [src.singular_name]\s in the stack.")
|
||||
. += "There [src.amount == 1 ? "is" : "are"] <b>[src.amount]</b> [src.singular_name]\s in the stack."
|
||||
else
|
||||
to_chat(user, "You have enough charge to produce <b>[get_amount()]</b>.")
|
||||
. += "You have enough charge to produce <b>[get_amount()]</b>."
|
||||
|
||||
/obj/item/stack/attack_self(mob/user)
|
||||
list_recipes(user, recipes)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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, "<span class='notice'>\The [src] is loaded with [dart_count] foam dart\s.</span>")
|
||||
. += "<span class='notice'>\The [src] is loaded with [dart_count] foam dart\s.</span>"
|
||||
|
||||
/obj/item/toy/crossbow/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/toy/ammo/crossbow))
|
||||
|
||||
@@ -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: <b>[selected_mode]</b>"))
|
||||
to_chat(user, SPAN_NOTICE("Selected pipe: <b>[pipe_examine]</b>"))
|
||||
. += FONT_SMALL(SPAN_NOTICE("Change pipe category by ALT-clicking, change pipe selection by using in-hand."))
|
||||
. += SPAN_NOTICE("Selected pipe category: <b>[selected_mode]</b>.")
|
||||
. += SPAN_NOTICE("Selected pipe: <b>[pipe_examine]</b>.")
|
||||
|
||||
/obj/item/rfd/piping/afterattack(atom/A, mob/user, proximity)
|
||||
if(!proximity || !isturf(A))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
. = ..()
|
||||
|
||||
@@ -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 <b>[capitalize_first_letters(machine.name)]</b>: [machine.desc]")))
|
||||
. += FONT_SMALL(SPAN_NOTICE("This circuitboard will build a <b>[capitalize_first_letters(machine.name)]</b>: [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 <b>computer frame</b>."))
|
||||
. += SPAN_NOTICE("This board is used inside a <b>computer frame</b>.")
|
||||
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])] <b>[capitalize_first_letters(component.name)]</b>"))
|
||||
. += SPAN_NOTICE("- [num2text(req_components[I])] <b>[capitalize_first_letters(component.name)]</b>")
|
||||
|
||||
//Called when the circuitboard is used to contruct a new machine.
|
||||
/obj/item/circuitboard/proc/construct(var/obj/machinery/M)
|
||||
|
||||
@@ -14,9 +14,9 @@
|
||||
user.visible_message("<span class='notice'>\The [user] adjusts the jumper on the [src]'s port configuration pins.</span>", "<span class='notice'>You adjust the jumper on the port configuration pins. Now set to [dir2text(machine_dir)].</span>")
|
||||
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.
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -56,21 +56,21 @@
|
||||
to_chat(user,"<span class='notice'>\The reagents inside [src] are already secured!</span>")
|
||||
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,"<span class='notice'>It contains [round(reagents.total_volume, accuracy)] units of non-aerosol mix.</span>")
|
||||
. += SPAN_NOTICE("It contains [round(reagents.total_volume, accuracy)] units of non-aerosol mix.")
|
||||
else
|
||||
to_chat(user,"<span class='notice'>It is empty.</span>")
|
||||
. += SPAN_NOTICE("It is empty.")
|
||||
else
|
||||
if(LAZYLEN(reagents?.reagent_volumes))
|
||||
to_chat(user,"<span class='notice'>The reagents are secured in the aerosol mix.</span>")
|
||||
. += SPAN_NOTICE("The reagents are secured in the aerosol mix.")
|
||||
else
|
||||
to_chat(user,"<span class='notice'>The cartridge seems spent.</span>")
|
||||
. += 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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -111,10 +111,10 @@
|
||||
else
|
||||
to_chat(user, "<span class='warning'>\The [W] is empty.</span>")
|
||||
|
||||
/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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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 <b>[round(REAGENT_VOLUME(reagents, fuel_type))]</b> unit\s of fuel.")
|
||||
. += "A heavy-duty chainsaw meant for cutting wood. Contains <b>[round(REAGENT_VOLUME(reagents, fuel_type))]</b> 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)
|
||||
. = ..()
|
||||
|
||||
@@ -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 <b>[refill_enabled ? "ON" : "OFF"]</b>."))
|
||||
. += SPAN_NOTICE("\The condenser switch is set to <b>[refill_enabled ? "ON" : "OFF"]</b>.")
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"] <b>[src.contents.len]</b> [src.icon_type]\s left in \the [src.storage_type].")
|
||||
. += "There [src.contents.len == 1 ? "is" : "are"] <b>[src.contents.len]</b> [src.icon_type]\s left in \the [src.storage_type]."
|
||||
|
||||
/*
|
||||
* Donut Box
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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, "<span class='notice'>The baton is [round(bcell.percent())]% charged.</span>")
|
||||
. += "<span class='notice'>The baton is [round(bcell.percent())]% charged.</span>"
|
||||
else
|
||||
to_chat(user, "<span class='warning'>The baton does not have a power source installed.</span>")
|
||||
. += "<span class='warning'>The baton does not have a power source installed.</span>"
|
||||
|
||||
/obj/item/melee/baton/attackby(obj/item/W, mob/user)
|
||||
if(istype(W, /obj/item/cell))
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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, "<span class='danger'>The meter on \the [src] indicates you are almost out of gas!</span>")
|
||||
. += 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))
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user