examine signature changed to include distance

- distance is INFINITE, 0, or a positive integer based on get_dist() between
the examiner and examinee's turfs when they are on the same Z. When the
examiner is dead or a ghost, distance is always 0.
- also updates /examine( implementations to use it!
- adds w_class_to_name proc for reusing "It is a X item." examine behavior.
This commit is contained in:
Spookerton
2024-01-31 13:49:52 +00:00
parent e3393dc87b
commit 978f4511a5
240 changed files with 524 additions and 551 deletions
+1 -1
View File
@@ -41,7 +41,7 @@
spark_system = null
return ..()
/obj/item/rcd/examine(mob/user)
/obj/item/rcd/examine(mob/user, distance, infix, suffix)
. = ..()
. += display_resources()
+2 -2
View File
@@ -33,9 +33,9 @@ RSF
w_class = ITEMSIZE_NORMAL
/obj/item/rsf/examine(mob/user)
/obj/item/rsf/examine(mob/user, distance, infix, suffix)
. = ..()
if(get_dist(user, src) == 0)
if(!distance)
. += "<span class='notice'>It currently holds [stored_matter]/30 fabrication-units.</span>"
/obj/item/rsf/attackby(obj/item/W as obj, mob/user as mob)
@@ -149,7 +149,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
M.update_inv_r_hand(1)
..()
/obj/item/clothing/mask/smokable/examine(mob/user)
/obj/item/clothing/mask/smokable/examine(mob/user, distance, infix, suffix)
. = ..()
if(!is_pipe)
+3 -4
View File
@@ -22,14 +22,13 @@
. = ..()
ec_cartridge = new cartridge_type(src)
/obj/item/clothing/mask/smokable/ecig/examine(mob/user)
/obj/item/clothing/mask/smokable/ecig/examine(mob/user, distance, infix, suffix)
. = ..()
if(active)
. += "<span class='notice'>It is turned on.</span>"
else
. += "<span class='notice'>It is turned off.</span>"
if(Adjacent(user))
if(distance < 2)
if(ec_cartridge)
if(!ec_cartridge.reagents?.total_volume)
. += "<span class='notice'>Its cartridge is empty!</span>"
@@ -159,7 +158,7 @@
. = ..()
create_reagents(volume)
/obj/item/reagent_containers/ecig_cartridge/examine(mob/user as mob)//to see how much left
/obj/item/reagent_containers/ecig_cartridge/examine(mob/user, distance, infix, suffix)
. = ..()
. += "The cartridge has [reagents.total_volume] units of liquid remaining."
@@ -40,10 +40,10 @@
reagents.add_reagent("water", max_water)
. = ..()
/obj/item/extinguisher/examine(mob/user)
/obj/item/extinguisher/examine(mob/user, distance, infix, suffix)
. = ..()
if(get_dist(user, src) == 0)
. += "[src] has [src.reagents.total_volume] units of water left!"
if(!distance)
. += "[src] has [reagents.total_volume] units of water left!"
/obj/item/extinguisher/attack_self(mob/user as mob)
safety = !safety
@@ -166,9 +166,9 @@
return
/obj/item/wrapping_paper/examine(mob/user)
/obj/item/wrapping_paper/examine(mob/user, distance, infix, suffix)
. = ..()
if(Adjacent(user))
if(distance < 2)
. += "There is about [src.amount] square units of paper left!"
/obj/item/wrapping_paper/attack(mob/target as mob, mob/user as mob)
@@ -116,7 +116,7 @@
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/examine(mob/user, distance, infix, suffix)
. = ..()
if(detonator)
. += "It has [detonator.name] attached to it."
@@ -46,9 +46,9 @@
return*/
/obj/item/grenade/examine(mob/user)
/obj/item/grenade/examine(mob/user, distance, infix, suffix)
. = ..()
if(get_dist(user, src) == 0)
if(!distance)
if(det_time > 1)
. += "The timer is set to [det_time/10] seconds."
else if(det_time == null)
@@ -116,4 +116,4 @@
return
/obj/item/grenade/vendor_action(var/obj/machinery/vending/V)
activate(V)
activate(V)
@@ -31,9 +31,9 @@
var/mining_points = 0 // For redeeming at mining equipment vendors
var/survey_points = 0 // For redeeming at explorer equipment vendors.
/obj/item/card/id/examine(mob/user)
/obj/item/card/id/examine(mob/user, distance, infix, suffix)
. = ..()
if(in_range(user, src))
if(distance < 2)
show_tgui(user)
else
. += "<span class='warning'>It is too far away to read.</span>"
@@ -35,8 +35,8 @@
/obj/item/implant/integrated_circuit/emp_act(severity)
IC.emp_act(severity)
/obj/item/implant/integrated_circuit/examine(mob/user)
return IC.examine(user)
/obj/item/implant/integrated_circuit/examine(mob/user, distance, infix, suffix)
return IC.examine(user, distance, infix, suffix)
/obj/item/implant/integrated_circuit/attackby(var/obj/item/O, var/mob/user)
if(O.is_crowbar() || istype(O, /obj/item/integrated_electronics) || istype(O, /obj/item/integrated_circuit) || O.is_screwdriver() || istype(O, /obj/item/cell/device) )
@@ -113,9 +113,9 @@
/obj/item/chainsaw/proc/get_fuel()
return reagents.get_reagent_amount("fuel")
/obj/item/chainsaw/examine(mob/user)
/obj/item/chainsaw/examine(mob/user, distance, infix, suffix)
. = ..()
if(max_fuel && get_dist(user, src) == 0)
if(max_fuel && !distance)
. += "<span class = 'notice'>The [src] feels like it contains roughtly [get_fuel()] units of fuel left.</span>"
/obj/item/chainsaw/update_icon()
@@ -36,11 +36,11 @@
qdel(src)
..()
/obj/item/material/gravemarker/examine(mob/user)
/obj/item/material/gravemarker/examine(mob/user, distance, infix, suffix)
. = ..()
if(grave_name && get_dist(src, user) < 4)
if(grave_name && distance < 4)
. += "Here Lies [grave_name]"
if(epitaph && get_dist(src, user) < 2)
if(epitaph && distance < 2)
. += epitaph
/obj/item/material/gravemarker/update_icon()
@@ -76,4 +76,4 @@
G.add_fingerprint(usr)
G.dir = user.dir
QDEL_NULL(src)
return
return
@@ -10,7 +10,7 @@
w_class = ITEMSIZE_SMALL
var/repair_amount = 5
var/repair_time = 40
/obj/item/whetstone/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/stack/material))
var/obj/item/stack/material/M = I
@@ -40,7 +40,7 @@
var/sharpen_time = 100
var/uses = 0
/obj/item/material/sharpeningkit/examine(mob/user, distance)
/obj/item/material/sharpeningkit/examine(mob/user, distance, infix, suffix)
. = ..()
. += "There [uses == 1 ? "is" : "are"] [uses] [material] [uses == 1 ? src.material.sheet_singular_name : src.material.sheet_plural_name] left for use."
@@ -75,4 +75,4 @@
to_chat(user, "Not enough material to sharpen [M]. You need [M.w_class*2] [M.material.sheet_plural_name].")
return
else
to_chat(user, "You can't sharpen [W] with [src]!")
to_chat(user, "You can't sharpen [W] with [src]!")
@@ -91,9 +91,9 @@
return 0
return null
/obj/item/melee/energy/examine(mob/user)
/obj/item/melee/energy/examine(mob/user, distance, infix, suffix)
. = ..()
if(use_cell && Adjacent(user))
if(use_cell && distance < 2)
if(bcell)
. += "<span class='notice'>The blade is [round(bcell.percent())]% charged.</span>"
else
@@ -196,7 +196,7 @@
lcolor = sanitize_hexcolor(energy_color_input)
update_icon()
/obj/item/melee/energy/examine(mob/user)
/obj/item/melee/energy/examine(mob/user, distance, infix, suffix)
. = ..()
. += "<span class='notice'>Alt-click to recolor it.</span>"
+1 -1
View File
@@ -214,7 +214,7 @@
lcolor = sanitize_hexcolor(energy_color_input)
update_icon()
/obj/item/shield/energy/examine(mob/user)
/obj/item/shield/energy/examine(mob/user, distance, infix, suffix)
. = ..()
. += "<span class='notice'>Alt-click to recolor it.</span>"
@@ -514,9 +514,9 @@
item_state_slots = list(slot_r_hand_str = "backpack", slot_l_hand_str = "backpack")
max_storage_space = ITEMSIZE_COST_NORMAL * 5
/obj/item/storage/backpack/parachute/examine(mob/user)
/obj/item/storage/backpack/parachute/examine(mob/user, distance, infix, suffix)
. = ..()
if(Adjacent(user))
if(distance < 2)
if(parachute)
. += "It seems to be packed."
else
@@ -585,4 +585,4 @@
icon_state = "teshbag"
species_restricted = list(SPECIES_TESHARI)
max_w_class = ITEMSIZE_NORMAL
max_storage_space = ITEMSIZE_COST_NORMAL * 5
max_storage_space = ITEMSIZE_COST_NORMAL * 5
@@ -16,9 +16,9 @@
var/stored_ore
/obj/item/storage/bag/ore/examine(mob/user)
/obj/item/storage/bag/ore/examine(mob/user, distance, infix, suffix)
. = ..()
if (!Adjacent(user) && !isobserver(user))
if (distance > 1 && !isobserver(user))
return
if (isliving(user))
add_fingerprint(user)
@@ -27,16 +27,16 @@
icon_state = "[icon_type]box[total_contents]"
return
/obj/item/storage/fancy/examine(mob/user)
/obj/item/storage/fancy/examine(mob/user, distance, infix, suffix)
. = ..()
if(Adjacent(user))
if(!contents.len)
if(distance < 2)
var/len = length(contents)
if(!len)
. += "There are no [icon_type]s left in the box."
else if(contents.len == 1)
else if(len == 1)
. += "There is one [icon_type] left in the box."
else
. += "There are [contents.len] [icon_type]s in the box."
. += "There are [len] [icon_type]\s in the box."
/*
* Egg Box
@@ -22,7 +22,7 @@ MRE Stuff
/obj/item/material/kitchen/utensil/spoon/plastic
)
/obj/item/storage/mre/examine(mob/user)
/obj/item/storage/mre/examine(mob/user, distance, infix, suffix)
. = ..()
. += meal_desc
@@ -28,9 +28,9 @@
max_storage_space = ITEMSIZE_SMALL * 7
use_sound = 'sound/items/storage/briefcase.ogg'
/obj/item/storage/secure/examine(mob/user)
/obj/item/storage/secure/examine(mob/user, distance, infix, suffix)
. = ..()
if(Adjacent(user))
if(distance < 2)
. += "The service panel is [src.open ? "open" : "closed"]."
/obj/item/storage/secure/attackby(obj/item/W, mob/user)
@@ -725,7 +725,7 @@
update_icon()
..()
/obj/item/storage/trinketbox/examine(mob/user)
/obj/item/storage/trinketbox/examine(mob/user, distance, infix, suffix)
. = ..()
if(open && contents.len)
var/display_item = contents[1]
+2 -3
View File
@@ -90,10 +90,9 @@
else
set_light(0)
/obj/item/melee/baton/examine(mob/user)
/obj/item/melee/baton/examine(mob/user, distance, infix, suffix)
. = ..()
if(Adjacent(user, src))
if(distance < 2)
if(bcell)
. += "<span class='notice'>The baton is [round(bcell.percent())]% charged.</span>"
if(!bcell)
@@ -27,7 +27,7 @@
QDEL_NULL(ion_trail)
return ..()
/obj/item/tank/jetpack/examine(mob/user)
/obj/item/tank/jetpack/examine(mob/user, distance, infix, suffix)
. = ..()
if(air_contents.total_moles < 5)
. += "<span class='danger'>The meter on \the [src] indicates you are almost out of gas!</span>"
@@ -118,7 +118,7 @@
name = "jetpack"
var/obj/item/rig/holder
/obj/item/tank/jetpack/rig/examine()
/obj/item/tank/jetpack/rig/examine(mob/user, distance, infix, suffix)
. = ..()
. += "It's a jetpack. If you can see this, report it on the bug tracker."
@@ -20,10 +20,10 @@
. = ..()
air_contents.adjust_gas("oxygen", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
/obj/item/tank/oxygen/examine(mob/user)
/obj/item/tank/oxygen/examine(mob/user, distance, infix, suffix)
. = ..()
if(loc == user && (air_contents.gas["oxygen"] < 10))
. += "<span class='warning'>The meter on \the [src] indicates you are almost out of oxygen!</span>"
if(distance < 2 && (air_contents.gas["oxygen"] < 10))
. += "<span class='warning'>The meter on \the [src] indicates it is almost out of oxygen!</span>"
/obj/item/tank/oxygen/yellow
desc = "A tank of oxygen, this one is yellow."
@@ -56,10 +56,10 @@
desc = "Mixed anyone?"
icon_state = "oxygen"
/obj/item/tank/air/examine(mob/user)
/obj/item/tank/air/examine(mob/user, distance, infix, suffix)
. = ..()
if(loc == user && (air_contents.gas["oxygen"] < 1))
. += "<span class='warning'>The meter on \the [src] indicates you are almost out of air!</span>"
if(distance < 2 && (air_contents.gas["oxygen"] < 1))
. += "<span class='warning'>The meter on \the [src] indicates it is almost out of air!</span>"
user << sound('sound/effects/alert.ogg')
/obj/item/tank/air/Initialize()
@@ -139,10 +139,10 @@
. = ..()
src.air_contents.adjust_gas("oxygen", (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
/obj/item/tank/emergency/oxygen/examine(mob/user)
/obj/item/tank/emergency/oxygen/examine(mob/user, distance, infix, suffix)
. = ..()
if(loc == user && (air_contents.gas["oxygen"] < 0.2))
. += "<span class='danger'>The meter on the [src.name] indicates you are almost out of air!</span>"
if(distance < 2 && (air_contents.gas["oxygen"] < 0.2))
. += "<span class='danger'>The meter on the [src.name] indicates it is almost out of air!</span>"
user << sound('sound/effects/alert.ogg')
/obj/item/tank/emergency/oxygen/engi
@@ -212,10 +212,10 @@
. = ..()
src.air_contents.adjust_gas("nitrogen", (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C))
/obj/item/tank/nitrogen/examine(mob/user)
/obj/item/tank/nitrogen/examine(mob/user, distance, infix, suffix)
. = ..()
if(loc == user && (air_contents.gas["nitrogen"] < 10))
. += "<span class='danger'>The meter on \the [src] indicates you are almost out of nitrogen!</span>"
if(distance < 2 && (air_contents.gas["nitrogen"] < 10))
. += "<span class='danger'>The meter on \the [src] indicates it is almost out of nitrogen!</span>"
//playsound(user, 'sound/effects/alert.ogg', 50, 1)
/obj/item/tank/stasis/nitro_cryo // Synthbody bags need to have initial pressure within safe bounds for human atmospheric pressure, but low temperature to stop unwanted degredation.
@@ -90,9 +90,9 @@ var/global/list/tank_gauge_cache = list()
// This could be optimized more, but it's a start!
START_PROCESSING(SSobj, src) // This has a built in safety to avoid multi-processing
/obj/item/tank/examine(mob/user)
/obj/item/tank/examine(mob/user, distance, infix, suffix)
. = ..()
if(loc == user)
if(distance < 2)
var/celsius_temperature = air_contents.temperature - T0C
var/descriptive
switch(celsius_temperature)
+2 -2
View File
@@ -124,8 +124,8 @@
var/obj/item/stuck = null
/obj/item/ducttape/examine(mob/user)
return stuck.examine(user)
/obj/item/ducttape/examine(mob/user, distance, infix, suffix)
return stuck.examine(user, distance, infix, suffix)
/obj/item/ducttape/proc/attach(var/obj/item/W)
stuck = W
@@ -58,9 +58,9 @@
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/weldingtool/examine(mob/user)
/obj/item/weldingtool/examine(mob/user, distance, infix, suffix)
. = ..()
if(max_fuel && loc == user)
if(max_fuel && distance < 2)
. += "It contains [get_fuel()]/[src.max_fuel] units of fuel!"
/obj/item/weldingtool/attack(atom/A, mob/living/user, def_zone)
@@ -557,9 +557,9 @@
/obj/item/weldingtool/electric/get_cell()
return power_supply
/obj/item/weldingtool/electric/examine(mob/user)
/obj/item/weldingtool/electric/examine(mob/user, distance, infix, suffix)
. = ..()
if(Adjacent(user))
if(distance < 2)
if(power_supply)
. += "It [src.name] has [get_fuel()] charge left."
else
@@ -144,9 +144,9 @@
usr.put_in_l_hand(src)
src.add_fingerprint(usr)
/obj/item/weldpack/examine(mob/user)
/obj/item/weldpack/examine(mob/user, distance, infix, suffix)
. = ..()
. += "It has [src.reagents.total_volume] units of fuel left!"
. += "It has [reagents.total_volume] units of fuel left!"
/obj/item/weldpack/survival
name = "emergency welding kit"