mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-14 16:44:33 +01:00
Bay12 examine overhaul.
This commit overhauls the examine system to baystation's latest system, including a more efficient verb approach, and a new status panel tab, which shows more information for pre-defined objects.
This commit is contained in:
@@ -25,19 +25,14 @@
|
||||
overlays += "sheater-open"
|
||||
return
|
||||
|
||||
/obj/machinery/space_heater/air_conditioner/examine()
|
||||
set src in oview(12)
|
||||
if (!( usr ))
|
||||
return
|
||||
usr << "This is \icon[src] \an [src.name]."
|
||||
usr << src.desc
|
||||
|
||||
usr << "The air conditioner is [on ? "on" : "off"] and the hatch is [open ? "open" : "closed"]."
|
||||
/obj/machinery/space_heater/air_conditioner/examine(mob/user)
|
||||
..(user)
|
||||
user << "The air conditioner is [on ? "on" : "off"] and the hatch is [open ? "open" : "closed"]."
|
||||
if(open)
|
||||
usr << "The power cell is [cell ? "installed" : "missing"]."
|
||||
user << "The power cell is [cell ? "installed" : "missing"]."
|
||||
else
|
||||
usr << "The charge meter reads [cell ? round(cell.percent(),1) : 0]%"
|
||||
return
|
||||
user << "The charge meter reads [cell ? round(cell.percent(),1) : 0]%"
|
||||
|
||||
|
||||
/obj/machinery/space_heater/air_conditioner/emp_act(severity)
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
|
||||
@@ -346,11 +346,10 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_pump/examine()
|
||||
set src in oview(1)
|
||||
..()
|
||||
/obj/machinery/atmospherics/unary/vent_pump/examine(mob/user)
|
||||
..(user)
|
||||
if(welded)
|
||||
usr << "It seems welded shut."
|
||||
user << "It seems welded shut."
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_pump/power_change()
|
||||
var/old_stat = stat
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
var/frequency = 1439
|
||||
var/datum/radio_frequency/radio_connection
|
||||
var/advcontrol = 0//does this device listen to the AAC?
|
||||
|
||||
|
||||
var/list/turf/simulated/adjacent_turfs = list()
|
||||
|
||||
var/on = 0
|
||||
@@ -28,7 +28,7 @@
|
||||
var/scrub_CO2 = 1
|
||||
var/scrub_Toxins = 0
|
||||
var/scrub_N2O = 0
|
||||
|
||||
|
||||
var/volume_rate = 200
|
||||
var/widenet = 0 //is this scrubber acting on the 3x3 area around it.
|
||||
|
||||
@@ -48,13 +48,18 @@
|
||||
assign_uid()
|
||||
id_tag = num2text(uid)
|
||||
..()
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/Destroy()
|
||||
if(initial_loc && frequency == 1439)
|
||||
initial_loc.air_scrub_info -= id_tag
|
||||
initial_loc.air_scrub_names -= id_tag
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_pump/examine(mob/user)
|
||||
..(user)
|
||||
if(welded)
|
||||
user << "It seems welded shut."
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/auto_use_power()
|
||||
if(!powered(power_channel))
|
||||
return 0
|
||||
@@ -171,27 +176,27 @@
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/process()
|
||||
..()
|
||||
|
||||
|
||||
if (widenet)
|
||||
check_turfs()
|
||||
|
||||
check_turfs()
|
||||
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
|
||||
|
||||
if (!node)
|
||||
on = 0
|
||||
|
||||
|
||||
if(welded)
|
||||
return 0
|
||||
//broadcast_status()
|
||||
if(!on)
|
||||
return 0
|
||||
|
||||
|
||||
scrub(loc)
|
||||
if (widenet)
|
||||
for (var/turf/simulated/tile in adjacent_turfs)
|
||||
scrub(tile)
|
||||
|
||||
|
||||
//we populate a list of turfs with nonatmos-blocked cardinal turfs AND
|
||||
// diagonal turfs that can share atmos with *both* of the cardinal turfs
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/proc/check_turfs()
|
||||
@@ -199,7 +204,7 @@
|
||||
var/turf/T = loc
|
||||
if (istype(T))
|
||||
adjacent_turfs = T.GetAtmosAdjacentTurfs(alldir=1)
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/proc/scrub(var/turf/simulated/tile)
|
||||
if (!tile || !istype(tile))
|
||||
return 0
|
||||
|
||||
+2
-2
@@ -117,7 +117,7 @@
|
||||
|
||||
/atom/proc/AICtrlShiftClick(var/mob/user) // Examines
|
||||
if(user.client)
|
||||
examine()
|
||||
user.examinate(src)
|
||||
return
|
||||
|
||||
/atom/proc/AIAltShiftClick()
|
||||
@@ -129,7 +129,7 @@
|
||||
else
|
||||
Topic(src, list("src"= "\ref[src]", "command"="emergency", "activate" = "0"), 1)
|
||||
return
|
||||
|
||||
|
||||
/atom/proc/AIShiftClick()
|
||||
return
|
||||
|
||||
|
||||
@@ -223,8 +223,7 @@
|
||||
return
|
||||
/atom/proc/ShiftClick(var/mob/user)
|
||||
if(user.client && user.client.eye == user)
|
||||
examine()
|
||||
user.face_atom(src)
|
||||
user.examinate(src)
|
||||
return
|
||||
|
||||
/*
|
||||
|
||||
+10
-11
@@ -53,8 +53,8 @@
|
||||
aiCamera.captureimage(A, usr)
|
||||
else
|
||||
src << "<span class='userdanger'>Your camera isn't functional.</span>"
|
||||
return
|
||||
|
||||
return
|
||||
|
||||
/*
|
||||
cyborg restrained() currently does nothing
|
||||
if(restrained())
|
||||
@@ -129,19 +129,18 @@
|
||||
|
||||
/atom/proc/BorgCtrlShiftClick(var/mob/user) // Examines
|
||||
if(user.client && user.client.eye == user)
|
||||
examine()
|
||||
user.face_atom(src)
|
||||
user.examinate(src)
|
||||
return
|
||||
|
||||
/atom/proc/BorgAltShiftClick()
|
||||
return
|
||||
|
||||
return
|
||||
|
||||
/obj/machinery/door/airlock/BorgAltShiftClick() // Enables emergency override on doors! Forwards to AI code.
|
||||
AIAltShiftClick()
|
||||
|
||||
|
||||
/atom/proc/BorgShiftClick()
|
||||
return
|
||||
|
||||
return
|
||||
|
||||
/obj/machinery/door/airlock/BorgShiftClick() // Opens and closes doors! Forwards to AI code.
|
||||
AIShiftClick()
|
||||
|
||||
@@ -165,8 +164,8 @@
|
||||
AIAltClick()
|
||||
|
||||
/obj/machinery/turretid/BorgAltClick() //turret lethal on/off. Forwards to AI code.
|
||||
AIAltClick()
|
||||
|
||||
AIAltClick()
|
||||
|
||||
/*
|
||||
As with AI, these are not used in click code,
|
||||
because the code for robots is specific, not generic.
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
// We don't need a fucking toggle.
|
||||
/mob/dead/observer/ShiftClickOn(var/atom/A)
|
||||
A.examine()
|
||||
examinate(A)
|
||||
|
||||
/atom/proc/attack_ghost(mob/user as mob)
|
||||
return
|
||||
|
||||
+16
-12
@@ -219,19 +219,23 @@ its easier to just keep the beam vertical.
|
||||
|
||||
|
||||
//All atoms
|
||||
/atom/verb/examine()
|
||||
set name = "Examine"
|
||||
set category = "IC"
|
||||
set src in view(usr.client) //If it can be seen, it can be examined.
|
||||
set popup_menu = 0
|
||||
/atom/proc/examine(mob/user, var/distance = -1, var/infix = "", var/suffix = "")
|
||||
//This reformat names to get a/an properly working on item descriptions when they are bloody
|
||||
var/f_name = "\a [src][infix]."
|
||||
if(src.blood_DNA && !istype(src, /obj/effect/decal))
|
||||
if(gender == PLURAL)
|
||||
f_name = "some "
|
||||
else
|
||||
f_name = "a "
|
||||
if(blood_color != "#030303")
|
||||
f_name += "<span class='danger'>blood-stained</span> [name][infix]!"
|
||||
else
|
||||
f_name += "oil-stained [name][infix]."
|
||||
|
||||
if (!( usr ))
|
||||
return
|
||||
usr << "That's \a [src]." //changed to "That's" from "This is" because "This is some metal sheets" sounds dumb compared to "That's some metal sheets" ~Carn
|
||||
usr << desc
|
||||
// *****RM
|
||||
//usr << "[name]: Dn:[density] dir:[dir] cont:[contents] icon:[icon] is:[icon_state] loc:[loc]"
|
||||
return
|
||||
user << "\icon[src] That's [f_name] [suffix]"
|
||||
user << desc
|
||||
|
||||
return distance == -1 || (get_dist(src, user) <= distance) || isobserver(user) //observers do not have a range limit
|
||||
|
||||
/atom/proc/relaymove()
|
||||
return
|
||||
|
||||
@@ -190,9 +190,9 @@
|
||||
return
|
||||
|
||||
/obj/effect/blob/examine(mob/user)
|
||||
..()
|
||||
..(user)
|
||||
user << "It looks like it's of a [get_chem_name()] kind."
|
||||
return
|
||||
|
||||
|
||||
/obj/effect/blob/proc/get_chem_name()
|
||||
for(var/mob/camera/blob/B in mob_list)
|
||||
|
||||
@@ -78,18 +78,15 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
|
||||
cult_viewpoints -= src
|
||||
return ..()
|
||||
|
||||
/obj/effect/rune/examine()
|
||||
set src in view(2)
|
||||
|
||||
if(!iscultist(usr) && !isSpirit(usr))
|
||||
usr << "A strange collection of symbols drawn in blood."
|
||||
/obj/effect/rune/examine(mob/user)
|
||||
..(user)
|
||||
if(!iscultist(user) && !isSpirit(user))
|
||||
user << "A strange collection of symbols drawn in blood."
|
||||
return
|
||||
if(!desc)
|
||||
usr << "A spell circle drawn in blood. It reads: <i>[word1] [word2] [word3]</i>."
|
||||
user << "A spell circle drawn in blood. It reads: <i>[word1] [word2] [word3]</i>."
|
||||
else
|
||||
usr << "Explosive Runes inscription in blood. It reads: <i>[desc]</i>."
|
||||
|
||||
return
|
||||
user << "Explosive Runes inscription in blood. It reads: <i>[desc]</i>."
|
||||
|
||||
|
||||
/obj/effect/rune/attackby(I as obj, user as mob, params)
|
||||
@@ -509,12 +506,11 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
|
||||
user << "You copy the translation notes from your tome."
|
||||
|
||||
|
||||
examine()
|
||||
set src in usr
|
||||
if(!iscultist(usr))
|
||||
usr << "An old, dusty tome with frayed edges and a sinister looking cover."
|
||||
examine(mob/user)
|
||||
if(!iscultist(user))
|
||||
user << "An old, dusty tome with frayed edges and a sinister looking cover."
|
||||
else
|
||||
usr << "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."
|
||||
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."
|
||||
|
||||
/obj/item/weapon/tome/imbued //admin tome, spawns working runes without waiting
|
||||
w_class = 2.0
|
||||
|
||||
@@ -4,12 +4,6 @@
|
||||
var/uses = 0
|
||||
info = "<center><img src='talisman.png'></center><br/><br/>"
|
||||
|
||||
examine()
|
||||
set src in view(2)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
attack_self(mob/living/user as mob)
|
||||
if(iscultist(user))
|
||||
var/delete = 1
|
||||
|
||||
@@ -106,7 +106,6 @@
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/machinery/emergency_authentication_device/examine()
|
||||
usr << {"
|
||||
This is a specialized communications device that is able to instantly send a message to <b>Nanotrasen High Command</b> via quantum entanglement with a sister device at CentCom.
|
||||
The EAD's status is [get_status()]."}
|
||||
/obj/machinery/emergency_authentication_device/examine(mob/user)
|
||||
user << {"This is a specialized communications device that is able to instantly send a message to <b>Nanotrasen High Command</b> via quantum entanglement with a sister device at CentCom.<br>
|
||||
The EAD's status is [get_status()]."}
|
||||
|
||||
@@ -25,14 +25,14 @@
|
||||
icon_state = "pinoff"
|
||||
usr << "\blue You switch \the [src] off."
|
||||
|
||||
/obj/item/weapon/pinpointer/advpinpointer/auth_key/examine()
|
||||
/obj/item/weapon/pinpointer/advpinpointer/auth_key/examine(mob/user)
|
||||
switch(mode)
|
||||
if (1)
|
||||
usr << "Is is calibrated for the Captain's Authentication Key."
|
||||
user << "Is is calibrated for the Captain's Authentication Key."
|
||||
if (2)
|
||||
usr << "It is calibrated for the Emergency Secondary Authentication Key."
|
||||
user << "It is calibrated for the Emergency Secondary Authentication Key."
|
||||
else
|
||||
usr << "It is switched off."
|
||||
user << "It is switched off."
|
||||
|
||||
/datum/supply_packs/key_pinpointer
|
||||
name = "Authentication Key Pinpointer crate"
|
||||
|
||||
@@ -36,20 +36,20 @@
|
||||
icon_state = "pinoff"
|
||||
usr << "\blue You switch \the [src] off."
|
||||
|
||||
/obj/item/weapon/pinpointer/advpinpointer/flag/examine()
|
||||
/obj/item/weapon/pinpointer/advpinpointer/flag/examine(mob/user)
|
||||
switch(mode)
|
||||
if (1)
|
||||
usr << "Is is calibrated for the [target.name]"
|
||||
user << "Is is calibrated for the [target.name]"
|
||||
if (2)
|
||||
usr << "Is is calibrated for the [target.name]"
|
||||
user << "Is is calibrated for the [target.name]"
|
||||
if (3)
|
||||
usr << "Is is calibrated for the [target.name]"
|
||||
user << "Is is calibrated for the [target.name]"
|
||||
if (4)
|
||||
usr << "Is is calibrated for the [target.name]"
|
||||
user << "Is is calibrated for the [target.name]"
|
||||
if (5)
|
||||
usr << "Is is calibrated for the [target.name]"
|
||||
user << "Is is calibrated for the [target.name]"
|
||||
else
|
||||
usr << "It is switched off."
|
||||
user << "It is switched off."
|
||||
|
||||
/datum/supply_packs/key_pinpointer_nations
|
||||
name = "Nations Flag Pinpointer crate"
|
||||
|
||||
@@ -46,11 +46,11 @@
|
||||
icon_state = "pinonfar"
|
||||
spawn(5) .()
|
||||
|
||||
examine()
|
||||
..()
|
||||
examine(mob/user)
|
||||
..(user)
|
||||
for(var/obj/machinery/nuclearbomb/bomb in world)
|
||||
if(bomb.timing)
|
||||
usr << "Extreme danger. Arming signal detected. Time remaining: [bomb.timeleft]"
|
||||
user << "Extreme danger. Arming signal detected. Time remaining: [bomb.timeleft]"
|
||||
|
||||
|
||||
/obj/item/weapon/pinpointer/advpinpointer
|
||||
@@ -318,10 +318,10 @@
|
||||
used = 1
|
||||
|
||||
|
||||
examine()
|
||||
..()
|
||||
examine(mob/user)
|
||||
..(user)
|
||||
if (target)
|
||||
usr << "\blue Tracking [target]"
|
||||
user << "\blue Tracking [target]"
|
||||
|
||||
proc/point_at(atom/target)
|
||||
if(!active)
|
||||
@@ -386,7 +386,7 @@
|
||||
.()
|
||||
|
||||
/obj/item/weapon/pinpointer/operative/examine(mob/user)
|
||||
..()
|
||||
..(user)
|
||||
if(nearest_op != null)
|
||||
user << "Nearest operative: <b>[nearest_op]</b>."
|
||||
if(nearest_op == null && active)
|
||||
|
||||
@@ -1087,12 +1087,12 @@
|
||||
spawn(rand(0,15))
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/alarm/examine()
|
||||
..()
|
||||
/obj/machinery/alarm/examine(mob/user)
|
||||
..(user)
|
||||
if (buildstage < 2)
|
||||
usr << "It is not wired."
|
||||
user << "It is not wired."
|
||||
if (buildstage < 1)
|
||||
usr << "The circuit is missing."
|
||||
user << "The circuit is missing."
|
||||
|
||||
/*
|
||||
AIR ALARM CIRCUIT
|
||||
@@ -1104,4 +1104,4 @@ Just an object used in constructing air alarms
|
||||
icon_state = "door_electronics"
|
||||
desc = "Looks like a circuit. Probably is."
|
||||
w_class = 2.0
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=50)
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=50)
|
||||
|
||||
@@ -88,10 +88,10 @@
|
||||
t += "The connect error light is blinking."
|
||||
return t
|
||||
|
||||
/obj/machinery/meter/examine()
|
||||
/obj/machinery/meter/examine(mob/user)
|
||||
var/t = "A gas flow meter. "
|
||||
|
||||
if(get_dist(usr, src) > 3 && !(istype(usr, /mob/living/silicon/ai) || istype(usr, /mob/dead)))
|
||||
if(get_dist(user, src) > 3 && !(istype(user, /mob/living/silicon/ai) || istype(user, /mob/dead)))
|
||||
t += "\blue <B>You are too far away to read it.</B>"
|
||||
|
||||
else if(stat & (NOPOWER|BROKEN))
|
||||
@@ -106,11 +106,11 @@
|
||||
else
|
||||
t += "The connect error light is blinking."
|
||||
|
||||
usr << t
|
||||
user << t
|
||||
|
||||
/obj/machinery/meter/Click()
|
||||
if(istype(usr, /mob/living/silicon/ai)) // ghosts can call ..() for examine
|
||||
src.examine()
|
||||
usr.examinate(src)
|
||||
return 1
|
||||
|
||||
return ..()
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
user << "<span class='notice'>You need to open maintenance panel first.</span>"
|
||||
|
||||
/obj/machinery/bot/examine(mob/user)
|
||||
..()
|
||||
..(user)
|
||||
if (health < maxhealth)
|
||||
if (health > maxhealth/3)
|
||||
user << "<span class='danger'>[src]'s parts look loose.</span>"
|
||||
|
||||
@@ -27,12 +27,11 @@
|
||||
chargelevel = newlevel
|
||||
else
|
||||
overlays.Cut()
|
||||
examine()
|
||||
set src in oview(5)
|
||||
..()
|
||||
usr << "There's [charging ? "a" : "no"] cell in the charger."
|
||||
if(charging)
|
||||
usr << "Current charge: [charging.charge]"
|
||||
examine(mob/user)
|
||||
if(..(user, 5))
|
||||
user << "There's [charging ? "a" : "no"] cell in the charger."
|
||||
if(charging)
|
||||
user << "Current charge: [charging.charge]"
|
||||
|
||||
attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(stat & BROKEN)
|
||||
|
||||
@@ -150,11 +150,10 @@
|
||||
src.read_only = !src.read_only
|
||||
user << "You flip the write-protect tab to [src.read_only ? "protected" : "unprotected"]."
|
||||
|
||||
/obj/item/weapon/disk/data/examine()
|
||||
set src in oview(5)
|
||||
..()
|
||||
usr << text("The write-protect tab is set to [src.read_only ? "protected" : "unprotected"].")
|
||||
return
|
||||
/obj/item/weapon/disk/data/examine(mob/user)
|
||||
..(user)
|
||||
user << "The write-protect tab is set to [src.read_only ? "protected" : "unprotected"]."
|
||||
|
||||
|
||||
//Health Tracker Implant
|
||||
|
||||
|
||||
@@ -16,16 +16,16 @@
|
||||
else
|
||||
return temp_access
|
||||
|
||||
/obj/item/weapon/card/id/guest/examine()
|
||||
..()
|
||||
/obj/item/weapon/card/id/guest/examine(mob/user)
|
||||
..(user)
|
||||
if (world.time < expiration_time)
|
||||
usr << "<span class='notice'>This pass expires at [worldtime2text(expiration_time)].</span>"
|
||||
user << "<span class='notice'>This pass expires at [worldtime2text(expiration_time)].</span>"
|
||||
else
|
||||
usr << "<span class='warning'>It expired at [worldtime2text(expiration_time)].</span>"
|
||||
usr << "<span class='notice'>It grants access to following areas:</span>"
|
||||
user << "<span class='warning'>It expired at [worldtime2text(expiration_time)].</span>"
|
||||
user << "<span class='notice'>It grants access to following areas:</span>"
|
||||
for (var/A in temp_access)
|
||||
usr << "<span class='notice'>[get_access_desc(A)].</span>"
|
||||
usr << "<span class='notice'>Issuing reason: [reason].</span>"
|
||||
user << "<span class='notice'>[get_access_desc(A)].</span>"
|
||||
user << "<span class='notice'>Issuing reason: [reason].</span>"
|
||||
|
||||
/////////////////////////////////////////////
|
||||
//Guest pass terminal////////////////////////
|
||||
|
||||
@@ -37,10 +37,10 @@
|
||||
|
||||
/obj/machinery/iv_drip/MouseDrop(over_object, src_location, over_location)
|
||||
..()
|
||||
|
||||
|
||||
if(!ishuman(usr) && !isrobot(usr))
|
||||
return
|
||||
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
if(!usr in range(1, T))
|
||||
return
|
||||
@@ -153,19 +153,18 @@
|
||||
mode = !mode
|
||||
usr << "The IV drip is now [mode ? "injecting" : "taking blood"]."
|
||||
|
||||
/obj/machinery/iv_drip/examine()
|
||||
set src in view()
|
||||
..()
|
||||
if (!(usr in view(2)) && usr!=src.loc) return
|
||||
/obj/machinery/iv_drip/examine(mob/user)
|
||||
..(user)
|
||||
if (!(user in view(2)) && usr != src.loc) return
|
||||
|
||||
usr << "The IV drip is [mode ? "injecting" : "taking blood"]."
|
||||
|
||||
if(beaker)
|
||||
if(beaker.reagents && beaker.reagents.reagent_list.len)
|
||||
usr << "\blue Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid."
|
||||
user << "\blue Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid."
|
||||
else
|
||||
usr << "\blue Attached is an empty [beaker]."
|
||||
user << "\blue Attached is an empty [beaker]."
|
||||
else
|
||||
usr << "\blue No chemicals are attached."
|
||||
user << "\blue No chemicals are attached."
|
||||
|
||||
usr << "\blue [attached ? attached : "No one"] is attached."
|
||||
user << "\blue [attached ? attached : "No one"] is attached."
|
||||
@@ -37,10 +37,9 @@
|
||||
else
|
||||
icon_state = "light0"
|
||||
|
||||
/obj/machinery/light_switch/examine()
|
||||
set src in oview(1)
|
||||
if(usr && !usr.stat)
|
||||
usr << "A light switch. It is [on? "on" : "off"]."
|
||||
/obj/machinery/light_switch/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
user << "A light switch. It is [on? "on" : "off"]."
|
||||
|
||||
|
||||
/obj/machinery/light_switch/attack_hand(mob/user)
|
||||
|
||||
@@ -38,12 +38,11 @@ var/const/SAFETY_COOLDOWN = 100
|
||||
materials.max_amount = mat_mod
|
||||
amount_produced = min(100, amt_made)
|
||||
|
||||
/obj/machinery/recycler/examine()
|
||||
set src in view()
|
||||
..()
|
||||
usr << "The power light is [(stat & NOPOWER) ? "off" : "on"]."
|
||||
usr << "The safety-mode light is [safety_mode ? "on" : "off"]."
|
||||
usr << "The safety-sensors status light is [emagged ? "off" : "on"]."
|
||||
/obj/machinery/recycler/examine(mob/user)
|
||||
..(user)
|
||||
user << "The power light is [(stat & NOPOWER) ? "off" : "on"]."
|
||||
user << "The safety-mode light is [safety_mode ? "on" : "off"]."
|
||||
user << "The safety-sensors status light is [emagged ? "off" : "on"]."
|
||||
|
||||
/obj/machinery/recycler/power_change()
|
||||
..()
|
||||
|
||||
+149
-176
@@ -11,192 +11,165 @@
|
||||
var/set_temperature = 50 // in celcius, add T0C for kelvin
|
||||
var/heating_power = 40000
|
||||
|
||||
|
||||
|
||||
New()
|
||||
..()
|
||||
cell = new(src)
|
||||
cell.charge = 1000
|
||||
cell.maxcharge = 1000
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/machinery/space_heater/New()
|
||||
..()
|
||||
cell = new(src)
|
||||
cell.charge = 1000
|
||||
cell.maxcharge = 1000
|
||||
update_icon()
|
||||
overlays.Cut()
|
||||
icon_state = "sheater[on]"
|
||||
if(open)
|
||||
overlays += "sheater-open"
|
||||
return
|
||||
return
|
||||
|
||||
examine()
|
||||
set src in oview(12)
|
||||
if (!( usr ))
|
||||
return
|
||||
usr << "This is \icon[src] \an [src.name]."
|
||||
usr << src.desc
|
||||
/obj/machinery/space_heater/update_icon()
|
||||
overlays.Cut()
|
||||
icon_state = "sheater[on]"
|
||||
if(open)
|
||||
overlays += "sheater-open"
|
||||
return
|
||||
|
||||
usr << "The heater is [on ? "on" : "off"] and the hatch is [open ? "open" : "closed"]."
|
||||
if(open)
|
||||
usr << "The power cell is [cell ? "installed" : "missing"]."
|
||||
else
|
||||
usr << "The charge meter reads [cell ? round(cell.percent(),1) : 0]%"
|
||||
return
|
||||
/obj/machinery/space_heater/examine(mob/user)
|
||||
..(user)
|
||||
user << "The heater is [on ? "on" : "off"] and the hatch is [open ? "open" : "closed"]."
|
||||
if(open)
|
||||
user << "The power cell is [cell ? "installed" : "missing"]."
|
||||
else
|
||||
user << "The charge meter reads [cell ? round(cell.percent(),1) : 0]%"
|
||||
|
||||
emp_act(severity)
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
..(severity)
|
||||
return
|
||||
if(cell)
|
||||
cell.emp_act(severity)
|
||||
|
||||
/obj/machinery/space_heater/emp_act(severity)
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
..(severity)
|
||||
return
|
||||
if(cell)
|
||||
cell.emp_act(severity)
|
||||
..(severity)
|
||||
|
||||
attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/stock_parts/cell))
|
||||
if(open)
|
||||
if(cell)
|
||||
user << "There is already a power cell inside."
|
||||
return
|
||||
else
|
||||
// insert cell
|
||||
/obj/machinery/space_heater/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/stock_parts/cell))
|
||||
if(open)
|
||||
if(cell)
|
||||
user << "There is already a power cell inside."
|
||||
return
|
||||
else
|
||||
// insert cell
|
||||
var/obj/item/weapon/stock_parts/cell/C = usr.get_active_hand()
|
||||
if(istype(C))
|
||||
user.drop_item()
|
||||
cell = C
|
||||
C.loc = src
|
||||
C.add_fingerprint(usr)
|
||||
|
||||
user.visible_message("\blue [user] inserts a power cell into [src].", "\blue You insert the power cell into [src].")
|
||||
else
|
||||
user << "The hatch must be open to insert a power cell."
|
||||
return
|
||||
else if(istype(I, /obj/item/weapon/screwdriver))
|
||||
open = !open
|
||||
user.visible_message("\blue [user] [open ? "opens" : "closes"] the hatch on the [src].", "\blue You [open ? "open" : "close"] the hatch on the [src].")
|
||||
update_icon()
|
||||
if(!open && user.machine == src)
|
||||
user << browse(null, "window=spaceheater")
|
||||
user.unset_machine()
|
||||
else
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/machinery/space_heater/attack_hand(mob/user as mob)
|
||||
src.add_fingerprint(user)
|
||||
interact(user)
|
||||
|
||||
/obj/machinery/space_heater/interact(mob/user as mob)
|
||||
if(open)
|
||||
var/dat
|
||||
dat = "Power cell: "
|
||||
if(cell)
|
||||
dat += "<A href='byond://?src=\ref[src];op=cellremove'>Installed</A><BR>"
|
||||
else
|
||||
dat += "<A href='byond://?src=\ref[src];op=cellinstall'>Removed</A><BR>"
|
||||
|
||||
dat += "Power Level: [cell ? round(cell.percent(),1) : 0]%<BR><BR>"
|
||||
|
||||
dat += "Set Temperature: "
|
||||
|
||||
dat += "<A href='?src=\ref[src];op=temp;val=-5'>-</A>"
|
||||
|
||||
dat += " [set_temperature]°C "
|
||||
dat += "<A href='?src=\ref[src];op=temp;val=5'>+</A><BR>"
|
||||
|
||||
user.set_machine(src)
|
||||
user << browse("<HEAD><TITLE>Space Heater Control Panel</TITLE></HEAD><TT>[dat]</TT>", "window=spaceheater")
|
||||
onclose(user, "spaceheater")
|
||||
|
||||
else
|
||||
on = !on
|
||||
user.visible_message("\blue [user] switches [on ? "on" : "off"] the [src].","\blue You switch [on ? "on" : "off"] the [src].")
|
||||
update_icon()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/space_heater/Topic(href, href_list)
|
||||
if (..())
|
||||
return 1
|
||||
if ((in_range(src, usr) && istype(src.loc, /turf)) || (istype(usr, /mob/living/silicon)))
|
||||
usr.set_machine(src)
|
||||
|
||||
switch(href_list["op"])
|
||||
|
||||
if("temp")
|
||||
var/value = text2num(href_list["val"])
|
||||
|
||||
// limit to 20-90 degC
|
||||
set_temperature = dd_range(0, 90, set_temperature + value)
|
||||
|
||||
if("cellremove")
|
||||
if(open && cell && !usr.get_active_hand())
|
||||
cell.updateicon()
|
||||
usr.put_in_hands(cell)
|
||||
cell.add_fingerprint(usr)
|
||||
cell = null
|
||||
usr.visible_message("\blue [usr] removes the power cell from \the [src].", "\blue You remove the power cell from \the [src].")
|
||||
|
||||
|
||||
if("cellinstall")
|
||||
if(open && !cell)
|
||||
var/obj/item/weapon/stock_parts/cell/C = usr.get_active_hand()
|
||||
if(istype(C))
|
||||
user.drop_item()
|
||||
usr.drop_item()
|
||||
cell = C
|
||||
C.loc = src
|
||||
C.add_fingerprint(usr)
|
||||
|
||||
user.visible_message("\blue [user] inserts a power cell into [src].", "\blue You insert the power cell into [src].")
|
||||
else
|
||||
user << "The hatch must be open to insert a power cell."
|
||||
return
|
||||
else if(istype(I, /obj/item/weapon/screwdriver))
|
||||
open = !open
|
||||
user.visible_message("\blue [user] [open ? "opens" : "closes"] the hatch on the [src].", "\blue You [open ? "open" : "close"] the hatch on the [src].")
|
||||
update_icon()
|
||||
if(!open && user.machine == src)
|
||||
user << browse(null, "window=spaceheater")
|
||||
user.unset_machine()
|
||||
usr.visible_message("\blue [usr] inserts a power cell into \the [src].", "\blue You insert the power cell into \the [src].")
|
||||
|
||||
updateDialog()
|
||||
else
|
||||
usr << browse(null, "window=spaceheater")
|
||||
usr.unset_machine()
|
||||
return
|
||||
|
||||
|
||||
|
||||
/obj/machinery/space_heater/process()
|
||||
if(on)
|
||||
if(cell && cell.charge > 0)
|
||||
var/turf/simulated/L = loc
|
||||
if(istype(L))
|
||||
var/datum/gas_mixture/env = L.return_air()
|
||||
if(env.temperature != set_temperature + T0C)
|
||||
var/transfer_moles = 0.25 * env.total_moles()
|
||||
|
||||
var/datum/gas_mixture/removed = env.remove(transfer_moles)
|
||||
|
||||
if(removed)
|
||||
var/heat_capacity = removed.heat_capacity()
|
||||
|
||||
if(heat_capacity) // Added check to avoid divide by zero (oshi-) runtime errors -- TLE
|
||||
if(removed.temperature < set_temperature + T0C)
|
||||
removed.temperature = min(removed.temperature + heating_power/heat_capacity, 1000) // Added min() check to try and avoid wacky superheating issues in low gas scenarios -- TLE
|
||||
else
|
||||
removed.temperature = max(removed.temperature - heating_power/heat_capacity, TCMB)
|
||||
cell.use(heating_power/20000)
|
||||
env.merge(removed)
|
||||
air_update_turf()
|
||||
else
|
||||
..()
|
||||
return
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
src.add_fingerprint(user)
|
||||
interact(user)
|
||||
|
||||
interact(mob/user as mob)
|
||||
|
||||
if(open)
|
||||
|
||||
var/dat
|
||||
dat = "Power cell: "
|
||||
if(cell)
|
||||
dat += "<A href='byond://?src=\ref[src];op=cellremove'>Installed</A><BR>"
|
||||
else
|
||||
dat += "<A href='byond://?src=\ref[src];op=cellinstall'>Removed</A><BR>"
|
||||
|
||||
dat += "Power Level: [cell ? round(cell.percent(),1) : 0]%<BR><BR>"
|
||||
|
||||
dat += "Set Temperature: "
|
||||
|
||||
dat += "<A href='?src=\ref[src];op=temp;val=-5'>-</A>"
|
||||
|
||||
dat += " [set_temperature]°C "
|
||||
dat += "<A href='?src=\ref[src];op=temp;val=5'>+</A><BR>"
|
||||
|
||||
user.set_machine(src)
|
||||
user << browse("<HEAD><TITLE>Space Heater Control Panel</TITLE></HEAD><TT>[dat]</TT>", "window=spaceheater")
|
||||
onclose(user, "spaceheater")
|
||||
|
||||
|
||||
|
||||
|
||||
else
|
||||
on = !on
|
||||
user.visible_message("\blue [user] switches [on ? "on" : "off"] the [src].","\blue You switch [on ? "on" : "off"] the [src].")
|
||||
update_icon()
|
||||
return
|
||||
|
||||
|
||||
Topic(href, href_list)
|
||||
if (..())
|
||||
return 1
|
||||
if ((in_range(src, usr) && istype(src.loc, /turf)) || (istype(usr, /mob/living/silicon)))
|
||||
usr.set_machine(src)
|
||||
|
||||
switch(href_list["op"])
|
||||
|
||||
if("temp")
|
||||
var/value = text2num(href_list["val"])
|
||||
|
||||
// limit to 20-90 degC
|
||||
set_temperature = dd_range(0, 90, set_temperature + value)
|
||||
|
||||
if("cellremove")
|
||||
if(open && cell && !usr.get_active_hand())
|
||||
cell.updateicon()
|
||||
usr.put_in_hands(cell)
|
||||
cell.add_fingerprint(usr)
|
||||
cell = null
|
||||
usr.visible_message("\blue [usr] removes the power cell from \the [src].", "\blue You remove the power cell from \the [src].")
|
||||
|
||||
|
||||
if("cellinstall")
|
||||
if(open && !cell)
|
||||
var/obj/item/weapon/stock_parts/cell/C = usr.get_active_hand()
|
||||
if(istype(C))
|
||||
usr.drop_item()
|
||||
cell = C
|
||||
C.loc = src
|
||||
C.add_fingerprint(usr)
|
||||
|
||||
usr.visible_message("\blue [usr] inserts a power cell into \the [src].", "\blue You insert the power cell into \the [src].")
|
||||
|
||||
updateDialog()
|
||||
else
|
||||
usr << browse(null, "window=spaceheater")
|
||||
usr.unset_machine()
|
||||
return
|
||||
|
||||
|
||||
|
||||
process()
|
||||
if(on)
|
||||
if(cell && cell.charge > 0)
|
||||
|
||||
var/turf/simulated/L = loc
|
||||
if(istype(L))
|
||||
var/datum/gas_mixture/env = L.return_air()
|
||||
if(env.temperature != set_temperature + T0C)
|
||||
|
||||
var/transfer_moles = 0.25 * env.total_moles()
|
||||
|
||||
var/datum/gas_mixture/removed = env.remove(transfer_moles)
|
||||
|
||||
//world << "got [transfer_moles] moles at [removed.temperature]"
|
||||
|
||||
if(removed)
|
||||
|
||||
var/heat_capacity = removed.heat_capacity()
|
||||
//world << "heating ([heat_capacity])"
|
||||
if(heat_capacity) // Added check to avoid divide by zero (oshi-) runtime errors -- TLE
|
||||
if(removed.temperature < set_temperature + T0C)
|
||||
removed.temperature = min(removed.temperature + heating_power/heat_capacity, 1000) // Added min() check to try and avoid wacky superheating issues in low gas scenarios -- TLE
|
||||
else
|
||||
removed.temperature = max(removed.temperature - heating_power/heat_capacity, TCMB)
|
||||
cell.use(heating_power/20000)
|
||||
|
||||
//world << "now at [removed.temperature]"
|
||||
|
||||
env.merge(removed)
|
||||
air_update_turf()
|
||||
|
||||
//world << "turf now at [env.temperature]"
|
||||
|
||||
|
||||
else
|
||||
on = 0
|
||||
update_icon()
|
||||
|
||||
|
||||
return
|
||||
on = 0
|
||||
update_icon()
|
||||
@@ -134,11 +134,10 @@
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/machinery/status_display/examine()
|
||||
set src in view()
|
||||
. = ..()
|
||||
/obj/machinery/status_display/examine(mob/user)
|
||||
. = ..(user)
|
||||
if(mode != STATUS_DISPLAY_BLANK && mode != STATUS_DISPLAY_ALERT)
|
||||
usr << "The display says:<br>\t[sanitize(message1)]<br>\t[sanitize(message2)]"
|
||||
user << "The display says:<br>\t[sanitize(message1)]<br>\t[sanitize(message2)]"
|
||||
|
||||
/obj/machinery/status_display/proc/set_message(m1, m2)
|
||||
if(m1)
|
||||
|
||||
@@ -41,9 +41,9 @@
|
||||
..()
|
||||
|
||||
|
||||
/obj/machinery/syndicatebomb/examine()
|
||||
..()
|
||||
usr << "A digital display on it reads \"[timer]\"."
|
||||
/obj/machinery/syndicatebomb/examine(mob/user)
|
||||
..(user)
|
||||
user << "A digital display on it reads \"[timer]\"."
|
||||
|
||||
/obj/machinery/syndicatebomb/update_icon()
|
||||
icon_state = "[initial(icon_state)][active ? "-active" : "-inactive"][open_panel ? "-wires" : ""]"
|
||||
@@ -311,7 +311,7 @@
|
||||
var/turf/T = get_turf(src)
|
||||
var/area/A = get_area(T)
|
||||
detonated--
|
||||
message_admins("[key_name_admin(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>[A.name] (JMP)</a>.")
|
||||
message_admins("[key_name_admin(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>[A.name] (JMP)</a>.")
|
||||
bombers += "[key_name(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name] ([T.x],[T.y],[T.z])"
|
||||
log_game("[key_name(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name] ([T.x],[T.y],[T.z])")
|
||||
detonated = 0
|
||||
|
||||
@@ -166,25 +166,24 @@
|
||||
else
|
||||
return 0
|
||||
|
||||
/obj/mecha/examine()
|
||||
set src in view()
|
||||
..()
|
||||
/obj/mecha/examine(mob/user)
|
||||
..(user)
|
||||
var/integrity = health/initial(health)*100
|
||||
switch(integrity)
|
||||
if(85 to 100)
|
||||
usr << "It's fully intact."
|
||||
user << "It's fully intact."
|
||||
if(65 to 85)
|
||||
usr << "It's slightly damaged."
|
||||
user << "It's slightly damaged."
|
||||
if(45 to 65)
|
||||
usr << "It's badly damaged."
|
||||
user << "It's badly damaged."
|
||||
if(25 to 45)
|
||||
usr << "It's heavily damaged."
|
||||
user << "It's heavily damaged."
|
||||
else
|
||||
usr << "It's falling apart."
|
||||
user << "It's falling apart."
|
||||
if(equipment && equipment.len)
|
||||
usr << "It's equipped with:"
|
||||
user << "It's equipped with:"
|
||||
for(var/obj/item/mecha_parts/mecha_equipment/ME in equipment)
|
||||
usr << "\icon[ME] [ME]"
|
||||
user << "\icon[ME] [ME]"
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -6,11 +6,6 @@
|
||||
layer = 2.1
|
||||
anchored = 1
|
||||
|
||||
/obj/effect/decal/cleanable/crayon/examine()
|
||||
set src in view(2)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/effect/decal/cleanable/crayon/New(location, main = "#FFFFFF", var/type = "rune1", var/e_name = "rune")
|
||||
..()
|
||||
|
||||
@@ -6,10 +6,6 @@
|
||||
layer = 16.0
|
||||
anchored = 1
|
||||
|
||||
/obj/effect/decal/point/point()
|
||||
set src in oview()
|
||||
set hidden = 1
|
||||
return
|
||||
|
||||
// Used for spray that you spray at walls, tables, hydrovats etc
|
||||
/obj/effect/decal/spraystill
|
||||
|
||||
@@ -110,9 +110,7 @@
|
||||
|
||||
src.loc = T
|
||||
|
||||
/obj/item/examine()
|
||||
set src in view()
|
||||
|
||||
/obj/item/examine(mob/user)
|
||||
var/size
|
||||
switch(src.w_class)
|
||||
if(1.0)
|
||||
@@ -127,10 +125,10 @@
|
||||
size = "huge"
|
||||
else
|
||||
//if ((CLUMSY in usr.mutations) && prob(50)) t = "funny-looking"
|
||||
usr << "This is a [src.blood_DNA ? "bloody " : ""]\icon[src][src.name]. It is a [size] item."
|
||||
user << "This is a [src.blood_DNA ? "bloody " : ""]\icon[src][src.name]. It is a [size] item."
|
||||
if(src.desc)
|
||||
usr << src.desc
|
||||
return
|
||||
user << src.desc
|
||||
|
||||
|
||||
/obj/item/attack_hand(mob/user as mob)
|
||||
if (!user) return 0
|
||||
|
||||
@@ -66,10 +66,9 @@
|
||||
failmsg = "The [name]'s refill light blinks red."
|
||||
..()
|
||||
|
||||
/obj/item/device/lightreplacer/examine()
|
||||
set src in view(2)
|
||||
..()
|
||||
usr << "It has [uses] lights remaining."
|
||||
/obj/item/device/lightreplacer/examine(mob/user)
|
||||
if(..(user, 2))
|
||||
user << "It has [uses] lights remaining."
|
||||
|
||||
/obj/item/device/lightreplacer/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/stack/sheet/glass))
|
||||
|
||||
@@ -62,9 +62,9 @@
|
||||
user.unEquip(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/device/modkit/examine()
|
||||
..()
|
||||
usr << "It looks as though it modifies hardsuits to fit [target_species] users."
|
||||
/obj/item/device/modkit/examine(mob/user)
|
||||
..(user)
|
||||
user << "It looks as though it modifies hardsuits to fit [target_species] users."
|
||||
|
||||
/obj/item/device/modkit/tajaran
|
||||
name = "Tajaran hardsuit modification kit"
|
||||
|
||||
@@ -28,6 +28,6 @@
|
||||
/obj/item/device/pipe_painter/attack_self(mob/user as mob)
|
||||
mode = input("Which colour do you want to use?", "Pipe painter", mode) in modes
|
||||
|
||||
/obj/item/device/pipe_painter/examine()
|
||||
..()
|
||||
usr << "It is in [mode] mode."
|
||||
/obj/item/device/pipe_painter/examine(mob/user)
|
||||
..(user)
|
||||
user << "It is in [mode] mode."
|
||||
@@ -66,7 +66,7 @@ var/global/list/default_medbay_channels = list(
|
||||
wires = new(src)
|
||||
if(radio_controller)
|
||||
initialize()
|
||||
|
||||
|
||||
internal_channels = default_internal_channels.Copy()
|
||||
|
||||
/obj/item/device/radio/initialize()
|
||||
@@ -78,8 +78,8 @@ var/global/list/default_medbay_channels = list(
|
||||
secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT)
|
||||
|
||||
/obj/item/device/radio/attack_ghost(mob/user)
|
||||
interact(user)
|
||||
|
||||
interact(user)
|
||||
|
||||
/obj/item/device/radio/attack_self(mob/user as mob)
|
||||
user.set_machine(src)
|
||||
interact(user)
|
||||
@@ -141,18 +141,18 @@ var/global/list/default_medbay_channels = list(
|
||||
return 0
|
||||
|
||||
return user.has_internal_radio_channel_access(user, internal_channels[freq])
|
||||
|
||||
/mob/proc/has_internal_radio_channel_access(var/mob/user, var/list/req_one_accesses)
|
||||
|
||||
/mob/proc/has_internal_radio_channel_access(var/mob/user, var/list/req_one_accesses)
|
||||
var/obj/item/weapon/card/id/I = user.get_id_card()
|
||||
return has_access(list(), req_one_accesses, I ? I.GetAccess() : list())
|
||||
|
||||
/mob/living/silicon/has_internal_radio_channel_access(var/mob/user, var/list/req_one_accesses)
|
||||
|
||||
/mob/living/silicon/has_internal_radio_channel_access(var/mob/user, var/list/req_one_accesses)
|
||||
var/list/access = get_all_accesses()
|
||||
return has_access(list(), req_one_accesses, access)
|
||||
|
||||
|
||||
/mob/dead/observer/has_internal_radio_channel_access(var/mob/user, var/list/req_one_accesses)
|
||||
return can_admin_interact()
|
||||
|
||||
|
||||
/obj/item/device/radio/proc/text_wires()
|
||||
if (b_stat)
|
||||
return wires.GetInteractWindow()
|
||||
@@ -515,7 +515,7 @@ var/global/list/default_medbay_channels = list(
|
||||
|
||||
|
||||
/obj/item/device/radio/examine(mob/user)
|
||||
. = ..()
|
||||
..(user)
|
||||
if ((in_range(src, user) || loc == user))
|
||||
if (b_stat)
|
||||
user.show_message("\blue \the [src] can be attached and modified!")
|
||||
@@ -564,11 +564,11 @@ var/global/list/default_medbay_channels = list(
|
||||
/obj/item/device/radio/borg/syndicate
|
||||
syndie = 1
|
||||
keyslot = new /obj/item/device/encryptionkey/syndicate
|
||||
|
||||
|
||||
/obj/item/device/radio/borg/Destroy()
|
||||
myborg = null
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/device/radio/borg/list_channels(var/mob/user)
|
||||
return list_secure_channels(user)
|
||||
|
||||
@@ -732,7 +732,7 @@ var/global/list/default_medbay_channels = list(
|
||||
|
||||
/obj/item/device/radio/off
|
||||
listening = 0
|
||||
|
||||
|
||||
/obj/item/device/radio/phone
|
||||
broadcasting = 0
|
||||
icon = 'icons/obj/items.dmi'
|
||||
|
||||
@@ -23,10 +23,9 @@
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/device/taperecorder/examine()
|
||||
set src in view(1)
|
||||
..()
|
||||
usr << "The wire panel is [open_panel ? "opened" : "closed"]."
|
||||
/obj/item/device/taperecorder/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
user << "The wire panel is [open_panel ? "opened" : "closed"]."
|
||||
|
||||
|
||||
/obj/item/device/taperecorder/attackby(obj/item/I, mob/user)
|
||||
|
||||
@@ -26,11 +26,10 @@
|
||||
usr << browse(null, "window=stack")
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/examine()
|
||||
set src in view(1)
|
||||
..()
|
||||
usr << "There are [src.amount] [src.singular_name]\s in the stack."
|
||||
return
|
||||
/obj/item/stack/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
user << "There are [src.amount] [src.singular_name]\s in the stack."
|
||||
|
||||
|
||||
/obj/item/stack/attack_self(mob/user as mob)
|
||||
list_recipes(user)
|
||||
@@ -191,7 +190,7 @@
|
||||
|
||||
/obj/item/stack/proc/get_amount()
|
||||
return amount
|
||||
|
||||
|
||||
/obj/item/stack/proc/get_max_amount()
|
||||
return max_amount
|
||||
|
||||
|
||||
@@ -138,12 +138,9 @@
|
||||
attack_verb = list("struck", "pistol whipped", "hit", "bashed")
|
||||
var/bullets = 7.0
|
||||
|
||||
examine()
|
||||
set src in usr
|
||||
|
||||
src.desc = text("There are [] caps\s left. Looks almost like the real thing! Ages 8 and up.", src.bullets)
|
||||
..()
|
||||
return
|
||||
examine(mob/user)
|
||||
if(..(user, 0))
|
||||
user << "There are [bullets] caps\s left. Looks almost like the real thing! Ages 8 and up."
|
||||
|
||||
attackby(obj/item/toy/ammo/gun/A as obj, mob/user as mob, params)
|
||||
|
||||
@@ -211,11 +208,10 @@
|
||||
attack_verb = list("attacked", "struck", "hit")
|
||||
var/bullets = 5
|
||||
|
||||
examine()
|
||||
set src in view(2)
|
||||
..()
|
||||
examine(mob/user)
|
||||
..(user)
|
||||
if (bullets)
|
||||
usr << "\blue It is loaded with [bullets] foam darts!"
|
||||
user << "\blue It is loaded with [bullets] foam darts!"
|
||||
|
||||
attackby(obj/item/I as obj, mob/user as mob, params)
|
||||
if(istype(I, /obj/item/toy/ammo/crossbow))
|
||||
@@ -844,14 +840,14 @@ obj/item/toy/cards/singlecard
|
||||
pixel_x = -5
|
||||
|
||||
|
||||
obj/item/toy/cards/singlecard/examine()
|
||||
set src in usr.contents
|
||||
if(ishuman(usr))
|
||||
var/mob/living/carbon/human/cardUser = usr
|
||||
if(cardUser.get_item_by_slot(slot_l_hand) == src || cardUser.get_item_by_slot(slot_r_hand) == src)
|
||||
cardUser.visible_message("<span class='notice'>[cardUser] checks \his card.</span>", "<span class='notice'>The card reads: [src.cardname]</span>")
|
||||
else
|
||||
cardUser << "<span class='notice'>You need to have the card in your hand to check it.</span>"
|
||||
obj/item/toy/cards/singlecard/examine(mob/user)
|
||||
if(..(user, 0))
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/cardUser = user
|
||||
if(cardUser.get_item_by_slot(slot_l_hand) == src || cardUser.get_item_by_slot(slot_r_hand) == src)
|
||||
cardUser.visible_message("<span class='notice'>[cardUser] checks \his card.</span>", "<span class='notice'>The card reads: [src.cardname]</span>")
|
||||
else
|
||||
cardUser << "<span class='notice'>You need to have the card in your hand to check it.</span>"
|
||||
|
||||
|
||||
obj/item/toy/cards/singlecard/verb/Flip()
|
||||
|
||||
@@ -116,18 +116,16 @@
|
||||
SetOwnerInfo(H)
|
||||
|
||||
/obj/item/weapon/card/id/examine(mob/user)
|
||||
set src in oview(1)
|
||||
if(in_range(usr, src))
|
||||
if(..(user, 1))
|
||||
show(usr)
|
||||
usr << desc
|
||||
else
|
||||
usr << "<span class='warning'>It is too far away.</span>"
|
||||
user << "<span class='warning'>It is too far away.</span>"
|
||||
|
||||
/obj/item/weapon/card/id/proc/show(mob/user as mob)
|
||||
if(user.client) // Send the stamp images to the client
|
||||
var/datum/asset/simple/S = new/datum/asset/simple/paper()
|
||||
send_asset_list(user.client, S.assets)
|
||||
|
||||
send_asset_list(user.client, S.assets)
|
||||
|
||||
if(!front)
|
||||
front = new(photo, dir = SOUTH)
|
||||
if(!side)
|
||||
@@ -177,7 +175,7 @@
|
||||
|
||||
/obj/item/weapon/card/id/GetID()
|
||||
return src
|
||||
|
||||
|
||||
/obj/item/weapon/card/id/proc/is_untrackable()
|
||||
return untrackable
|
||||
|
||||
@@ -222,15 +220,15 @@
|
||||
origin_tech = "syndicate=3"
|
||||
var/registered_user = null
|
||||
untrackable = 1
|
||||
|
||||
|
||||
/obj/item/weapon/card/id/syndicate/New()
|
||||
access = initial_access.Copy()
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/card/id/syndicate/vox
|
||||
name = "agent card"
|
||||
initial_access = list(access_maint_tunnels, access_vox, access_external_airlocks)
|
||||
|
||||
|
||||
/obj/item/weapon/card/id/syndicate/afterattack(var/obj/item/weapon/O as obj, mob/user as mob, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
@@ -476,7 +474,7 @@
|
||||
/obj/item/weapon/card/id/centcom/New()
|
||||
access = get_all_centcom_access()
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/card/id/nanotrasen
|
||||
name = "nanotrasen ID card"
|
||||
icon_state = "nanotrasen"
|
||||
|
||||
@@ -32,12 +32,12 @@ var/global/list/moneytypes=list(
|
||||
amount = new_amount
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/spacecash/examine()
|
||||
/obj/item/weapon/spacecash/examine(mob/user)
|
||||
if(amount>1)
|
||||
usr << "\icon[src] This is a stack of [amount] [src]s."
|
||||
user << "\icon[src] This is a stack of [amount] [src]s."
|
||||
else
|
||||
usr << "\icon[src] This is \a [src]s."
|
||||
usr << "It's worth [worth*amount] credits."
|
||||
user << "\icon[src] This is \a [src]s."
|
||||
user << "It's worth [worth*amount] credits."
|
||||
|
||||
/obj/item/weapon/spacecash/update_icon()
|
||||
icon_state = "cash[worth]"
|
||||
@@ -60,12 +60,12 @@ var/global/list/moneytypes=list(
|
||||
icon_state = "cash10"
|
||||
worth = 10
|
||||
stack_color = "#663200"
|
||||
|
||||
|
||||
/obj/item/weapon/spacecash/c20
|
||||
icon_state = "cash10"
|
||||
worth = 20
|
||||
stack_color = "#663200"
|
||||
|
||||
|
||||
/obj/item/weapon/spacecash/c50
|
||||
icon_state = "cash10"
|
||||
worth = 50
|
||||
@@ -75,7 +75,7 @@ var/global/list/moneytypes=list(
|
||||
icon_state = "cash100"
|
||||
worth = 100
|
||||
stack_color = "#663200"
|
||||
|
||||
|
||||
/obj/item/weapon/spacecash/c200
|
||||
icon_state = "cash100"
|
||||
worth = 200
|
||||
|
||||
@@ -402,6 +402,6 @@ obj/item/weapon/rollingpaperpack/attack_self(mob/user)
|
||||
M.unEquip(src)
|
||||
M.put_in_l_hand(src)
|
||||
|
||||
/obj/item/weapon/rollingpaperpack/examine()
|
||||
..()
|
||||
usr << "There are [src.papers] left"
|
||||
/obj/item/weapon/rollingpaperpack/examine(mob/user)
|
||||
..(user)
|
||||
user << "There are [src.papers] left"
|
||||
|
||||
@@ -35,15 +35,13 @@
|
||||
max_water = 30
|
||||
sprite_name = "miniFE"
|
||||
|
||||
/obj/item/weapon/extinguisher/examine()
|
||||
set src in usr
|
||||
/obj/item/weapon/extinguisher/examine(mob/user)
|
||||
if(..(user, 0))
|
||||
usr << "\icon[src] [src.name] contains:"
|
||||
if(reagents && reagents.reagent_list.len)
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
user << "\blue [R.volume] units of [R.name]"
|
||||
|
||||
usr << "\icon[src] [src.name] contains:"
|
||||
if(reagents && reagents.reagent_list.len)
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
usr << "\blue [R.volume] units of [R.name]"
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/extinguisher/New()
|
||||
create_reagents(max_water)
|
||||
|
||||
@@ -28,8 +28,9 @@
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/examine(mob/user)
|
||||
..(user)
|
||||
display_timer = (stage == READY && !nadeassembly) //show/hide the timer based on assembly state
|
||||
..()
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/proc/get_trigger()
|
||||
@@ -257,7 +258,7 @@
|
||||
|
||||
if(!has_reagents)
|
||||
playsound(loc, 'sound/items/Screwdriver2.ogg', 50, 1)
|
||||
return
|
||||
return
|
||||
|
||||
if(nadeassembly)
|
||||
var/mob/M = get_mob_by_ckey(assemblyattacher)
|
||||
|
||||
@@ -126,5 +126,5 @@
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/grenade/iedcasing/examine(mob/user)
|
||||
..()
|
||||
..(user)
|
||||
user << "You can't tell when it will explode!"
|
||||
|
||||
@@ -46,13 +46,13 @@
|
||||
return*/
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/examine()
|
||||
..()
|
||||
/obj/item/weapon/grenade/examine(mob/user)
|
||||
..(user)
|
||||
if(display_timer)
|
||||
if(det_time > 1)
|
||||
usr << "The timer is set to [det_time/10] second\s."
|
||||
user << "The timer is set to [det_time/10] second\s."
|
||||
else
|
||||
usr << "\The [src] is set for instant detonation."
|
||||
user << "\The [src] is set for instant detonation."
|
||||
|
||||
/obj/item/weapon/grenade/attack_self(mob/user as mob)
|
||||
if(!active)
|
||||
|
||||
@@ -24,17 +24,16 @@
|
||||
src.icon_state = "[src.icon_type]box[total_contents]"
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/fancy/examine()
|
||||
set src in oview(1)
|
||||
/obj/item/weapon/storage/fancy/examine(mob/user)
|
||||
if(!..(user, 1))
|
||||
return
|
||||
|
||||
if(contents.len <= 0)
|
||||
usr << "There are no [src.icon_type]s left in the box."
|
||||
user << "There are no [src.icon_type]s left in the box."
|
||||
else if(contents.len == 1)
|
||||
usr << "There is one [src.icon_type] left in the box."
|
||||
user << "There is one [src.icon_type] left in the box."
|
||||
else
|
||||
usr << "There are [src.contents.len] [src.icon_type]s in the box."
|
||||
|
||||
return
|
||||
user << "There are [src.contents.len] [src.icon_type]s in the box."
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -27,10 +27,9 @@
|
||||
max_w_class = 2
|
||||
max_combined_w_class = 14
|
||||
|
||||
examine()
|
||||
set src in oview(1)
|
||||
..()
|
||||
usr << text("The service panel is [src.open ? "open" : "closed"].")
|
||||
examine(mob/user)
|
||||
if(..(user, 1))
|
||||
user << text("The service panel is [src.open ? "open" : "closed"].")
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(locked)
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
icon_state = "[initial(icon_state)]"
|
||||
|
||||
/obj/item/weapon/melee/baton/examine(mob/user)
|
||||
..()
|
||||
..(user)
|
||||
if(bcell)
|
||||
user <<"<span class='notice'>The baton is [round(bcell.percent())]% charged.</span>"
|
||||
if(!bcell)
|
||||
|
||||
@@ -13,63 +13,63 @@
|
||||
var/volume_rate = 500 //Needed for borg jetpack transfer
|
||||
action_button_name = "Toggle Jetpack"
|
||||
|
||||
New()
|
||||
..()
|
||||
src.ion_trail = new /datum/effect/effect/system/ion_trail_follow()
|
||||
src.ion_trail.set_up(src)
|
||||
/obj/item/weapon/tank/jetpack/New()
|
||||
..()
|
||||
src.ion_trail = new /datum/effect/effect/system/ion_trail_follow()
|
||||
src.ion_trail.set_up(src)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/tank/jetpack/examine(mob/user)
|
||||
if(!..(user, 0))
|
||||
return
|
||||
|
||||
|
||||
examine()
|
||||
set src in usr
|
||||
..()
|
||||
if(air_contents.oxygen < 10)
|
||||
usr << text("\red <B>The meter on the [src.name] indicates you are almost out of air!</B>")
|
||||
playsound(usr, 'sound/effects/alert.ogg', 50, 1)
|
||||
return
|
||||
if(air_contents.oxygen < 10)
|
||||
user << text("\red <B>The meter on the [src.name] indicates you are almost out of air!</B>")
|
||||
playsound(user, 'sound/effects/alert.ogg', 50, 1)
|
||||
|
||||
|
||||
verb/toggle_rockets()
|
||||
set name = "Toggle Jetpack Stabilization"
|
||||
set category = "Object"
|
||||
src.stabilization_on = !( src.stabilization_on )
|
||||
usr << "You toggle the stabilization [stabilization_on? "on":"off"]."
|
||||
return
|
||||
/obj/item/weapon/tank/jetpack/verb/toggle_rockets()
|
||||
set name = "Toggle Jetpack Stabilization"
|
||||
set category = "Object"
|
||||
src.stabilization_on = !( src.stabilization_on )
|
||||
usr << "You toggle the stabilization [stabilization_on? "on":"off"]."
|
||||
return
|
||||
|
||||
|
||||
verb/toggle()
|
||||
set name = "Toggle Jetpack"
|
||||
set category = "Object"
|
||||
on = !on
|
||||
if(on)
|
||||
icon_state = "[icon_state]-on"
|
||||
/obj/item/weapon/tank/jetpack/verb/toggle()
|
||||
set name = "Toggle Jetpack"
|
||||
set category = "Object"
|
||||
on = !on
|
||||
if(on)
|
||||
icon_state = "[icon_state]-on"
|
||||
// item_state = "[item_state]-on"
|
||||
ion_trail.start()
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
ion_trail.start()
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
// item_state = initial(item_state)
|
||||
ion_trail.stop()
|
||||
return
|
||||
ion_trail.stop()
|
||||
return
|
||||
|
||||
|
||||
proc/allow_thrust(num, mob/living/user as mob)
|
||||
if(!(src.on))
|
||||
return 0
|
||||
if((num < 0.005 || src.air_contents.total_moles() < num))
|
||||
src.ion_trail.stop()
|
||||
return 0
|
||||
/obj/item/weapon/tank/jetpack/proc/allow_thrust(num, mob/living/user as mob)
|
||||
if(!(src.on))
|
||||
return 0
|
||||
if((num < 0.005 || src.air_contents.total_moles() < num))
|
||||
src.ion_trail.stop()
|
||||
return 0
|
||||
|
||||
var/datum/gas_mixture/G = src.air_contents.remove(num)
|
||||
var/datum/gas_mixture/G = src.air_contents.remove(num)
|
||||
|
||||
var/allgases = G.carbon_dioxide + G.nitrogen + G.oxygen + G.toxins //fuck trace gases -Pete
|
||||
if(allgases >= 0.005)
|
||||
return 1
|
||||
var/allgases = G.carbon_dioxide + G.nitrogen + G.oxygen + G.toxins //fuck trace gases -Pete
|
||||
if(allgases >= 0.005)
|
||||
return 1
|
||||
|
||||
qdel(G)
|
||||
return
|
||||
qdel(G)
|
||||
return
|
||||
|
||||
ui_action_click()
|
||||
toggle()
|
||||
/obj/item/weapon/tank/jetpack/ui_action_click()
|
||||
toggle()
|
||||
|
||||
|
||||
/obj/item/weapon/tank/jetpack/void
|
||||
@@ -78,9 +78,9 @@
|
||||
icon_state = "jetpack-void"
|
||||
item_state = "jetpack-void"
|
||||
|
||||
New()
|
||||
..()
|
||||
air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
|
||||
/obj/item/weapon/tank/jetpack/void/New()
|
||||
..()
|
||||
air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
|
||||
|
||||
|
||||
/obj/item/weapon/tank/jetpack/oxygen
|
||||
@@ -89,9 +89,9 @@
|
||||
icon_state = "jetpack"
|
||||
item_state = "jetpack"
|
||||
|
||||
New()
|
||||
..()
|
||||
air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
|
||||
/obj/item/weapon/tank/jetpack/oxygen/New()
|
||||
..()
|
||||
air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
|
||||
|
||||
/obj/item/weapon/tank/jetpack/oxygen/harness
|
||||
name = "jet harness (oxygen)"
|
||||
@@ -108,9 +108,9 @@
|
||||
icon_state = "jetpack-black"
|
||||
item_state = "jetpack-black"
|
||||
|
||||
New()
|
||||
..()
|
||||
air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
|
||||
/obj/item/weapon/tank/jetpack/oxygenblack/New()
|
||||
..()
|
||||
air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
|
||||
|
||||
/obj/item/weapon/tank/jetpack/carbondioxide
|
||||
name = "Jetpack (Carbon Dioxide)"
|
||||
@@ -119,16 +119,16 @@
|
||||
icon_state = "jetpack-black"
|
||||
item_state = "jetpack-black"
|
||||
|
||||
New()
|
||||
..()
|
||||
src.ion_trail = new /datum/effect/effect/system/ion_trail_follow()
|
||||
src.ion_trail.set_up(src)
|
||||
air_contents.carbon_dioxide = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
|
||||
/obj/item/weapon/tank/jetpack/carbondioxide/New()
|
||||
..()
|
||||
src.ion_trail = new /datum/effect/effect/system/ion_trail_follow()
|
||||
src.ion_trail.set_up(src)
|
||||
air_contents.carbon_dioxide = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
|
||||
|
||||
examine()
|
||||
set src in usr
|
||||
..()
|
||||
if(air_contents.carbon_dioxide < 10)
|
||||
usr << text("\red <B>The meter on the [src.name] indicates you are almost out of air!</B>")
|
||||
playsound(usr, 'sound/effects/alert.ogg', 50, 1)
|
||||
/obj/item/weapon/tank/jetpack/carbondioxide/examine(mob/user)
|
||||
if(!..(0))
|
||||
return
|
||||
|
||||
if(air_contents.carbon_dioxide < 10)
|
||||
user << text("\red <B>The meter on the [src.name] indicates you are almost out of air!</B>")
|
||||
playsound(user, 'sound/effects/alert.ogg', 50, 1)
|
||||
|
||||
@@ -23,12 +23,11 @@
|
||||
return
|
||||
|
||||
|
||||
examine()
|
||||
set src in usr
|
||||
..()
|
||||
if(air_contents.oxygen < 10)
|
||||
usr << text("\red <B>The meter on the [src.name] indicates you are almost out of air!</B>")
|
||||
//playsound(usr, 'sound/effects/alert.ogg', 50, 1)
|
||||
examine(mob/user)
|
||||
if(..(user, 0))
|
||||
if(air_contents.oxygen < 10)
|
||||
user << text("\red <B>The meter on the [src.name] indicates you are almost out of air!</B>")
|
||||
//playsound(usr, 'sound/effects/alert.ogg', 50, 1)
|
||||
|
||||
|
||||
/obj/item/weapon/tank/oxygen/yellow
|
||||
@@ -69,12 +68,11 @@
|
||||
icon_state = "oxygen"
|
||||
|
||||
|
||||
examine()
|
||||
set src in usr
|
||||
..()
|
||||
if(air_contents.oxygen < 1 && loc==usr)
|
||||
usr << "\red <B>The meter on the [src.name] indicates you are almost out of air!</B>"
|
||||
usr << sound('sound/effects/alert.ogg')
|
||||
examine(mob/user)
|
||||
if(..(user, 0))
|
||||
if(air_contents.oxygen < 1 && loc==usr)
|
||||
user << "\red <B>The meter on the [src.name] indicates you are almost out of air!</B>"
|
||||
user << sound('sound/effects/alert.ogg')
|
||||
|
||||
/obj/item/weapon/tank/air/New()
|
||||
..()
|
||||
@@ -122,12 +120,11 @@
|
||||
icon_state = "plasma_fr"
|
||||
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
|
||||
|
||||
/obj/item/weapon/tank/plasma/plasmaman/examine()
|
||||
set src in usr
|
||||
..()
|
||||
if(air_contents.toxins < 0.2 && loc==usr)
|
||||
usr << text("\red <B>The meter on the [src.name] indicates you are almost out of plasma!</B>")
|
||||
usr << sound('sound/effects/alert.ogg')
|
||||
/obj/item/weapon/tank/plasma/plasmaman/examine(mob/user)
|
||||
if(..(user, 0))
|
||||
if(air_contents.toxins < 0.2 && loc==usr)
|
||||
user << text("\red <B>The meter on the [src.name] indicates you are almost out of plasma!</B>")
|
||||
user << sound('sound/effects/alert.ogg')
|
||||
|
||||
/*
|
||||
* Emergency Oxygen
|
||||
@@ -150,12 +147,11 @@
|
||||
return
|
||||
|
||||
|
||||
examine()
|
||||
set src in usr
|
||||
..()
|
||||
if(air_contents.oxygen < 0.2 && loc==usr)
|
||||
usr << text("\red <B>The meter on the [src.name] indicates you are almost out of air!</B>")
|
||||
usr << sound('sound/effects/alert.ogg')
|
||||
examine(mob/user)
|
||||
if(..(user, 0))
|
||||
if(air_contents.oxygen < 0.2 && loc==usr)
|
||||
user << text("\red <B>The meter on the [src.name] indicates you are almost out of air!</B>")
|
||||
user << sound('sound/effects/alert.ogg')
|
||||
|
||||
/obj/item/weapon/tank/emergency_oxygen/engi
|
||||
name = "extended-capacity emergency oxygen tank"
|
||||
@@ -192,12 +188,11 @@
|
||||
src.air_contents.nitrogen = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C)
|
||||
return
|
||||
|
||||
/obj/item/weapon/tank/nitrogen/examine()
|
||||
set src in usr
|
||||
..()
|
||||
if(air_contents.nitrogen < 10)
|
||||
usr << text("\red <B>The meter on the [src.name] indicates you are almost out of air!</B>")
|
||||
//playsound(usr, 'sound/effects/alert.ogg', 50, 1)
|
||||
/obj/item/weapon/tank/nitrogen/examine(mob/user)
|
||||
if(..(user, 0))
|
||||
if(air_contents.nitrogen < 10)
|
||||
user << text("\red <B>The meter on the [src.name] indicates you are almost out of air!</B>")
|
||||
//playsound(usr, 'sound/effects/alert.ogg', 50, 1)
|
||||
|
||||
|
||||
/obj/item/weapon/tank/emergency_oxygen/vox
|
||||
|
||||
@@ -39,12 +39,12 @@
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/tank/examine()
|
||||
/obj/item/weapon/tank/examine(mob/user)
|
||||
var/obj/icon = src
|
||||
if (istype(src.loc, /obj/item/assembly))
|
||||
icon = src.loc
|
||||
if (!in_range(src, usr))
|
||||
if (icon == src) usr << "\blue It's \a \icon[icon][src]! If you want any more information you'll need to get closer."
|
||||
if (!in_range(src, user))
|
||||
if (icon == src) user << "\blue It's \a \icon[icon][src]! If you want any more information you'll need to get closer."
|
||||
return
|
||||
|
||||
var/celsius_temperature = src.air_contents.temperature-T0C
|
||||
@@ -63,7 +63,7 @@
|
||||
else
|
||||
descriptive = "furiously hot"
|
||||
|
||||
usr << "\blue \The \icon[icon][src] feels [descriptive]"
|
||||
user << "\blue \The \icon[icon][src] feels [descriptive]"
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -166,10 +166,10 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/weldingtool/examine()
|
||||
set src in usr
|
||||
usr << text("\icon[] [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel )
|
||||
return
|
||||
/obj/item/weapon/weldingtool/examine(mob/user)
|
||||
if(!..(user, 0))
|
||||
user << text("\icon[] [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel )
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/weldingtool/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
charges = amt
|
||||
|
||||
/obj/item/weapon/vending_refill/examine(mob/user)
|
||||
..()
|
||||
..(user)
|
||||
if(charges)
|
||||
user << "It can restock [charges] item(s)."
|
||||
else
|
||||
|
||||
@@ -133,8 +133,8 @@ var/global/list/globalBlankCanvases[AMT_OF_CANVASES]
|
||||
user.visible_message("<span class='notice'>[user] cleans the canvas.</span>","<span class='notice'>You clean the canvas.</span>")
|
||||
|
||||
//Examine to enlarge
|
||||
/obj/item/weapon/canvas/examine(var/mob/user = usr)
|
||||
..()
|
||||
/obj/item/weapon/canvas/examine(mob/user)
|
||||
..(user)
|
||||
if(in_range(user, src) && get_turf(src) && user.client && ishuman(user)) //Let only humans be the robust zoominators. I'm too spooked other mobs trying to use it may get broken huds.
|
||||
if(src.loc == user || get_turf(src) == get_turf(user))
|
||||
user << "<span class='notice'>[src] has to be on the ground to focus on it!</span>"
|
||||
|
||||
@@ -160,15 +160,15 @@ LINEN BINS
|
||||
var/obj/item/hidden = null
|
||||
|
||||
|
||||
/obj/structure/bedsheetbin/examine()
|
||||
usr << desc
|
||||
/obj/structure/bedsheetbin/examine(mob/user)
|
||||
..(user)
|
||||
if(amount < 1)
|
||||
usr << "There are no bed sheets in the bin."
|
||||
user << "There are no bed sheets in the bin."
|
||||
return
|
||||
if(amount == 1)
|
||||
usr << "There is one bed sheet in the bin."
|
||||
user << "There is one bed sheet in the bin."
|
||||
return
|
||||
usr << "There are [amount] bed sheets in the bin."
|
||||
user << "There are [amount] bed sheets in the bin."
|
||||
|
||||
|
||||
/obj/structure/bedsheetbin/update_icon()
|
||||
|
||||
@@ -81,13 +81,13 @@
|
||||
/obj/structure/proc/getPrint(mob/user as mob)
|
||||
return md5(user:dna:uni_identity)
|
||||
|
||||
/obj/structure/displaycase/examine()
|
||||
..()
|
||||
usr << "\blue Peering through the glass, you see that it contains:"
|
||||
/obj/structure/displaycase/examine(mob/user)
|
||||
..(user)
|
||||
user << "\blue Peering through the glass, you see that it contains:"
|
||||
if(occupant)
|
||||
usr << "\icon[occupant] \blue \A [occupant]"
|
||||
else:
|
||||
usr << "Nothing."
|
||||
user << "\icon[occupant] \blue \A [occupant]"
|
||||
else
|
||||
user << "Nothing."
|
||||
|
||||
/obj/structure/displaycase/proc/dump()
|
||||
if(occupant)
|
||||
|
||||
@@ -26,17 +26,17 @@
|
||||
processing_objects |= src
|
||||
handle_rotation()
|
||||
|
||||
/obj/structure/stool/bed/chair/cart/examine()
|
||||
set src in usr
|
||||
switch(health)
|
||||
if(75 to 99)
|
||||
usr << "\blue It appears slightly dented."
|
||||
if(40 to 74)
|
||||
usr << "\red It appears heavily dented."
|
||||
if(1 to 39)
|
||||
usr << "\red It appears severely dented."
|
||||
if((INFINITY * -1) to 0)
|
||||
usr << "It appears completely unsalvageable"
|
||||
/obj/structure/stool/bed/chair/cart/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
switch(health)
|
||||
if(75 to 99)
|
||||
usr << "\blue It appears slightly dented."
|
||||
if(40 to 74)
|
||||
usr << "\red It appears heavily dented."
|
||||
if(1 to 39)
|
||||
usr << "\red It appears severely dented."
|
||||
if((INFINITY * -1) to 0)
|
||||
usr << "It appears completely unsalvageable"
|
||||
|
||||
/obj/structure/stool/bed/chair/cart/attackby(obj/item/W, mob/user, params)
|
||||
if (istype(W, /obj/item/weapon/weldingtool))
|
||||
@@ -281,11 +281,13 @@
|
||||
R.my_atom = src
|
||||
|
||||
|
||||
/obj/structure/stool/bed/chair/cart/janicart/examine()
|
||||
..()
|
||||
usr << "\icon[src] This [name] contains [reagents.total_volume] unit\s of [reagents]!"
|
||||
/obj/structure/stool/bed/chair/cart/janicart/examine(mob/user)
|
||||
if(!..(user, 1))
|
||||
return
|
||||
|
||||
user << "\icon[src] This [name] contains [reagents.total_volume] unit\s of [reagents]!"
|
||||
if(mybag)
|
||||
usr << "\A [mybag] is hanging on the [name]."
|
||||
user << "\A [mybag] is hanging on the [name]."
|
||||
|
||||
/obj/structure/stool/bed/chair/cart/janicart/attackby(obj/item/W, mob/user, params)
|
||||
..()
|
||||
|
||||
@@ -16,10 +16,9 @@
|
||||
..()
|
||||
reagents.add_reagent("water", 100)
|
||||
|
||||
/obj/structure/mopbucket/examine()
|
||||
set src in usr
|
||||
usr << text("\icon[] [] contains [] units of water left!", src, src.name, src.reagents.total_volume)
|
||||
..()
|
||||
/obj/structure/mopbucket/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
usr << text("\icon[] [] contains [] units of water left!", src, src.name, src.reagents.total_volume)
|
||||
|
||||
/obj/structure/mopbucket/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if (istype(W, /obj/item/weapon/mop))
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
if(A)
|
||||
O << "\blue <b>Someone has begun playing with a [src.name] in [A.name]!. (<a href='?src=\ref[O];jump=\ref[src]'>Teleport</a>)</b>"
|
||||
|
||||
/obj/structure/spirit_board/examine()
|
||||
desc = "[initial(desc)] The planchette is sitting at \"[planchette]\"."
|
||||
..()
|
||||
/obj/structure/spirit_board/examine(mob/user)
|
||||
..(user)
|
||||
user << "[initial(desc)] The planchette is sitting at \"[planchette]\"."
|
||||
|
||||
/obj/structure/spirit_board/attack_hand(mob/user as mob)
|
||||
if(..())
|
||||
|
||||
@@ -50,22 +50,22 @@
|
||||
|
||||
//Appearance
|
||||
|
||||
/turf/simulated/wall/examine()
|
||||
. = ..()
|
||||
/turf/simulated/wall/examine(mob/user)
|
||||
. = ..(user)
|
||||
|
||||
if(!damage)
|
||||
usr << "<span class='notice'>It looks fully intact.</span>"
|
||||
user << "<span class='notice'>It looks fully intact.</span>"
|
||||
else
|
||||
var/dam = damage / damage_cap
|
||||
if(dam <= 0.3)
|
||||
usr << "<span class='warning'>It looks slightly damaged.</span>"
|
||||
user << "<span class='warning'>It looks slightly damaged.</span>"
|
||||
else if(dam <= 0.6)
|
||||
usr << "<span class='warning'>It looks moderately damaged.</span>"
|
||||
user << "<span class='warning'>It looks moderately damaged.</span>"
|
||||
else
|
||||
usr << "<span class='danger'>It looks heavily damaged.</span>"
|
||||
user << "<span class='danger'>It looks heavily damaged.</span>"
|
||||
|
||||
if(rotting)
|
||||
usr << "<span class='warning'>There is fungus growing on [src].</span>"
|
||||
user << "<span class='warning'>There is fungus growing on [src].</span>"
|
||||
|
||||
/turf/simulated/wall/proc/update_icon()
|
||||
if(!damage_overlays[1]) //list hasn't been populated
|
||||
|
||||
@@ -140,15 +140,13 @@
|
||||
return
|
||||
|
||||
|
||||
examine()
|
||||
set src in view()
|
||||
..()
|
||||
if((in_range(src, usr) || loc == usr))
|
||||
examine(mob/user)
|
||||
..(user)
|
||||
if((in_range(src, user) || loc == user))
|
||||
if(secured)
|
||||
usr << "\The [src] is ready!"
|
||||
user << "\The [src] is ready!"
|
||||
else
|
||||
usr << "\The [src] can be attached!"
|
||||
return
|
||||
user << "\The [src] can be attached!"
|
||||
|
||||
|
||||
attack_self(mob/user as mob)
|
||||
|
||||
@@ -11,9 +11,9 @@
|
||||
var/obj/item/device/assembly_holder/bombassembly = null //The first part of the bomb is an assembly holder, holding an igniter+some device
|
||||
var/obj/item/weapon/tank/bombtank = null //the second part of the bomb is a plasma tank
|
||||
|
||||
/obj/item/device/onetankbomb/examine()
|
||||
..()
|
||||
bombtank.examine()
|
||||
/obj/item/device/onetankbomb/examine(mob/user)
|
||||
..(user)
|
||||
user.examinate(bombtank)
|
||||
|
||||
/obj/item/device/onetankbomb/update_icon()
|
||||
if(bombtank)
|
||||
|
||||
@@ -63,15 +63,13 @@
|
||||
master.update_icon()
|
||||
|
||||
|
||||
examine()
|
||||
set src in view()
|
||||
..()
|
||||
if ((in_range(src, usr) || src.loc == usr))
|
||||
examine(mob/user)
|
||||
..(user)
|
||||
if ((in_range(src, user) || src.loc == user))
|
||||
if (src.secured)
|
||||
usr << "\The [src] is ready!"
|
||||
user << "\The [src] is ready!"
|
||||
else
|
||||
usr << "\The [src] can be attached!"
|
||||
return
|
||||
user << "\The [src] can be attached!"
|
||||
|
||||
|
||||
HasProximity(atom/movable/AM as mob|obj)
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
|
||||
bomb_name = "contact mine"
|
||||
|
||||
examine()
|
||||
..()
|
||||
examine(mob/user)
|
||||
..(user)
|
||||
if(armed)
|
||||
usr << "It looks like it's armed."
|
||||
user << "It looks like it's armed."
|
||||
|
||||
activate()
|
||||
if(..())
|
||||
|
||||
@@ -188,11 +188,6 @@ BLIND // can't see anything
|
||||
/obj/item/clothing/gloves/proc/Touch()
|
||||
return
|
||||
|
||||
/obj/item/clothing/gloves/examine()
|
||||
set src in usr
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/clothing/under/proc/set_sensors(mob/usr as mob)
|
||||
var/mob/M = usr
|
||||
if (istype(M, /mob/dead/)) return
|
||||
@@ -460,21 +455,20 @@ BLIND // can't see anything
|
||||
return
|
||||
return
|
||||
|
||||
/obj/item/clothing/under/examine()
|
||||
set src in view()
|
||||
..()
|
||||
/obj/item/clothing/under/examine(mob/user)
|
||||
..(user)
|
||||
switch(src.sensor_mode)
|
||||
if(0)
|
||||
usr << "Its sensors appear to be disabled."
|
||||
user << "Its sensors appear to be disabled."
|
||||
if(1)
|
||||
usr << "Its binary life sensors appear to be enabled."
|
||||
user << "Its binary life sensors appear to be enabled."
|
||||
if(2)
|
||||
usr << "Its vital tracker appears to be enabled."
|
||||
user << "Its vital tracker appears to be enabled."
|
||||
if(3)
|
||||
usr << "Its vital tracker and tracking beacon appear to be enabled."
|
||||
user << "Its vital tracker and tracking beacon appear to be enabled."
|
||||
if(accessories.len)
|
||||
for(var/obj/item/clothing/accessory/A in accessories)
|
||||
usr << "\A [A] is attached to it."
|
||||
user << "\A [A] is attached to it."
|
||||
|
||||
|
||||
/obj/item/clothing/under/verb/rollsuit()
|
||||
|
||||
@@ -19,11 +19,11 @@
|
||||
icon_state = "d_[initial(icon_state)]"
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
examine()
|
||||
..()
|
||||
usr << "This one is made of [material]."
|
||||
examine(mob/user)
|
||||
..(user)
|
||||
user << "This one is made of [material]."
|
||||
if(stud)
|
||||
usr << "It is adorned with a single gem."
|
||||
user << "It is adorned with a single gem."
|
||||
|
||||
/obj/item/clothing/gloves/ring/attackby(obj/item/I as obj, mob/user as mob, params)
|
||||
if(istype(I, /obj/item/stack/sheet/mineral/diamond))
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
return flags & NOSLIP
|
||||
|
||||
/obj/item/clothing/shoes/magboots/examine(mob/user)
|
||||
..()
|
||||
..(user)
|
||||
user << "Its mag-pulse traction system appears to be [magpulse ? "enabled" : "disabled"]."
|
||||
|
||||
|
||||
|
||||
@@ -231,11 +231,10 @@
|
||||
magpulse = 0
|
||||
flags &= ~NODROP
|
||||
|
||||
/obj/item/clothing/shoes/magboots/vox/examine()
|
||||
set src in view()
|
||||
..()
|
||||
/obj/item/clothing/shoes/magboots/vox/examine(mob/user)
|
||||
..(user)
|
||||
if (magpulse)
|
||||
usr << "It would be hard to take these off without relaxing your grip first." //theoretically this message should only be seen by the wearer when the claws are equipped.
|
||||
user << "It would be hard to take these off without relaxing your grip first." //theoretically this message should only be seen by the wearer when the claws are equipped.
|
||||
|
||||
/obj/item/clothing/suit/space/eva/vox
|
||||
name = "Vox EVA Suit"
|
||||
|
||||
@@ -214,8 +214,8 @@ var/global/list/breach_burn_descriptors = list(
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/clothing/suit/space/examine()
|
||||
..()
|
||||
/obj/item/clothing/suit/space/examine(mob/user)
|
||||
..(user)
|
||||
if(can_breach && breaches && breaches.len)
|
||||
for(var/datum/breach/B in breaches)
|
||||
usr << "\red <B>It has \a [B.descriptor].</B>"
|
||||
user << "\red <B>It has \a [B.descriptor].</B>"
|
||||
@@ -18,10 +18,9 @@
|
||||
camera.c_tag = user.name
|
||||
user << "\blue User scanned as [camera.c_tag]. Camera activated."
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/ert/examine()
|
||||
..()
|
||||
if(get_dist(usr,src) <= 1)
|
||||
usr << "This helmet has a built-in camera. It's [camera ? "" : "in"]active."
|
||||
/obj/item/clothing/head/helmet/space/rig/ert/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
user << "This helmet has a built-in camera. It's [camera ? "" : "in"]active."
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ert
|
||||
name = "emergency response team suit"
|
||||
@@ -89,7 +88,7 @@
|
||||
name = "emergency response team medical suit"
|
||||
desc = "A suit worn by medical members of a Nanotrasen Emergency Response Team. Has white highlights. Armoured and space ready."
|
||||
icon_state = "ert_medical"
|
||||
|
||||
|
||||
//Janitor
|
||||
/obj/item/clothing/head/helmet/space/rig/ert/janitor
|
||||
name = "emergency response team janitor helmet"
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
var/extinguishes_left=10 // Yeah yeah, reagents, blah blah blah. This should be simple.
|
||||
|
||||
/obj/item/clothing/suit/space/eva/plasmaman/examine(mob/user)
|
||||
..()
|
||||
..(user)
|
||||
user << "<span class='info'>There are [extinguishes_left] extinguisher canisters left in this suit.</span>"
|
||||
|
||||
/obj/item/clothing/suit/space/eva/plasmaman/proc/Extinguish(var/mob/user)
|
||||
@@ -328,6 +328,5 @@
|
||||
user << "<span class='notice'>User scanned as [camera.c_tag]. Camera activated.</span>"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/eva/plasmaman/nuclear/examine(mob/user)
|
||||
..()
|
||||
if(get_dist(user,src) <= 1)
|
||||
if(..(user, 1))
|
||||
user << "<span class='info'>This helmet has a built-in camera. It's [camera ? "" : "in"]active.</span>"
|
||||
@@ -0,0 +1,166 @@
|
||||
|
||||
/obj/machinery/atmospherics/pipe
|
||||
description_info = "This pipe, and all other pipes, can be connected or disconnected by a wrench. The internal pressure of the pipe must \
|
||||
be below 300 kPa to do this. More pipes can be obtained from the pipe dispenser."
|
||||
|
||||
/obj/machinery/atmospherics/pipe/New() //This is needed or else 20+ lines of copypasta to dance around inheritence.
|
||||
..()
|
||||
description_info += "<br>Most pipes and atmospheric devices can be connected or disconnected with a wrench. The pipe's pressure must not be too high, \
|
||||
or if it is a device, it must be turned off first."
|
||||
|
||||
//HE pipes
|
||||
/obj/machinery/atmospherics/pipe/simple/heat_exchanging
|
||||
description_info = "This radiates heat from the pipe's gas to space, cooling it down."
|
||||
|
||||
//Supply/Scrubber pipes
|
||||
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers
|
||||
description_info = "This is a special 'scrubber' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/visible/supply
|
||||
description_info = "This is a special 'supply' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply
|
||||
description_info = "This is a special 'supply' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers
|
||||
description_info = "This is a special 'scrubber' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
|
||||
//Universal adapters
|
||||
/obj/machinery/atmospherics/pipe/simple/visible/universal
|
||||
description_info = "This allows you to connect 'normal' pipes, red 'scrubber' pipes, and blue 'supply' pipes."
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/universal
|
||||
description_info = "This allows you to connect 'normal' pipes, red 'scrubber' pipes, and blue 'supply' pipes."
|
||||
|
||||
//Three way manifolds
|
||||
/obj/machinery/atmospherics/pipe/manifold
|
||||
description_info = "A normal pipe with three ends to connect to."
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers
|
||||
description_info = "This is a special 'scrubber' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/visible/supply
|
||||
description_info = "This is a special 'supply' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers
|
||||
description_info = "This is a special 'scrubber' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/hidden/supply
|
||||
description_info = "This is a special 'supply' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
|
||||
//Insulated pipes
|
||||
/obj/machinery/atmospherics/pipe/simple/insulated
|
||||
description_info = "This is completely useless, use a normal pipe." //Sorry, but it's true.
|
||||
|
||||
//Four way manifolds
|
||||
/obj/machinery/atmospherics/pipe/manifold4w
|
||||
description_info = "This is a four-way pipe."
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/visible/scrubbers
|
||||
description_info = "This is a special 'scrubber' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply
|
||||
description_info = "This is a special 'supply' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers
|
||||
description_info = "This is a special 'scrubber' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
|
||||
//Endcaps
|
||||
/obj/machinery/atmospherics/pipe/cap
|
||||
description_info = "This is a cosmetic attachment, as pipes currently do not spill their contents into the air."
|
||||
|
||||
//T-shaped valves
|
||||
/obj/machinery/atmospherics/tvalve
|
||||
description_info = "Click this to toggle the mode. The direction with the green light is where the gas will flow."
|
||||
|
||||
//Normal valves
|
||||
/obj/machinery/atmospherics/valve
|
||||
description_info = "Click this to turn the valve. If red, the pipes on each end are seperated. Otherwise, they are connected."
|
||||
|
||||
//TEG ports
|
||||
/obj/machinery/atmospherics/binary/circulator
|
||||
description_info = "This generates electricity, depending on the difference in temperature between each side of the machine. The meter in \
|
||||
the center of the machine gives an indicator of how much elecrtricity is being generated."
|
||||
|
||||
//Passive gates
|
||||
/obj/machinery/atmospherics/binary/passive_gate
|
||||
description_info = "This is a one-way regulator, allowing gas to flow only at a specific pressure and flow rate. If the light is green, it is flowing."
|
||||
|
||||
//Normal pumps (high power one inherits from this)
|
||||
/obj/machinery/atmospherics/binary/pump
|
||||
description_info = "This moves gas from one pipe to another. A higher target pressure demands more energy. The side with the red end is the output."
|
||||
|
||||
//Vents
|
||||
/obj/machinery/atmospherics/unary/vent_pump
|
||||
description_info = "This pumps the contents of the attached pipe out into the atmosphere, if needed. It can be controlled from an Air Alarm."
|
||||
|
||||
//Freezers
|
||||
/obj/machinery/atmospherics/unary/freezer
|
||||
description_info = "Cools down the gas of the pipe it is connected to. It uses massive amounts of electricity while on. \
|
||||
It can be upgraded by replacing the capacitors, manipulators, and matter bins. It can be deconstructed by screwing the maintenance panel open with a \
|
||||
screwdriver, and then using a crowbar."
|
||||
|
||||
//Heaters
|
||||
/obj/machinery/atmospherics/unary/heater
|
||||
description_info = "Heats up the gas of the pipe it is connected to. It uses massive amounts of electricity while on. \
|
||||
It can be upgraded by replacing the capacitors, manipulators, and matter bins. It can be deconstructed by screwing the maintenance panel open with a \
|
||||
screwdriver, and then using a crowbar."
|
||||
|
||||
//Gas injectors
|
||||
/obj/machinery/atmospherics/unary/outlet_injector
|
||||
description_info = "Outputs the pipe's gas into the atmosphere, similar to an airvent. It can be controlled by a nearby atmospherics computer. \
|
||||
A green light on it means it is on."
|
||||
|
||||
//Scrubbers
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber
|
||||
description_info = "This filters the atmosphere of harmful gas. Filtered gas goes to the pipes connected to it, typically a scrubber pipe. \
|
||||
It can be controlled from an Air Alarm. It can be configured to drain all air rapidly with a 'panic syphon' from an air alarm."
|
||||
|
||||
//Omni filters
|
||||
/obj/machinery/atmospherics/omni/filter
|
||||
description_info = "Filters gas from a custom input direction, with up to two filtered outputs and a 'everything else' \
|
||||
output. The filtered output's arrows glow orange."
|
||||
|
||||
//Omni mixers
|
||||
/obj/machinery/atmospherics/omni/mixer
|
||||
description_info = "Combines gas from custom input and output directions. The percentage of combined gas can be defined."
|
||||
|
||||
//Canisters
|
||||
/obj/machinery/portable_atmospherics/canister
|
||||
description_info = "The canister can be connected to a connector port with a wrench. Tanks of gas (the kind you can hold in your hand) \
|
||||
can be filled by the canister, by using the tank on the canister, increasing the release pressure, then opening the valve until it is full, and then close it. \
|
||||
*DO NOT* remove the tank until the valve is closed. A gas analyzer can be used to check the contents of the canister."
|
||||
|
||||
description_antag = "Canisters can be damaged, spilling their contents into the air, or you can just leave the release valve open."
|
||||
|
||||
//Portable pumps
|
||||
/obj/machinery/portable_atmospherics/powered/pump
|
||||
description_info = "Invaluable for filling air in a room rapidly after a breach repair. The internal gas container can be filled by \
|
||||
connecting it to a connector port. The pump can pump the air in (sucking) or out (blowing), at a specific target pressure. The powercell inside can be \
|
||||
replaced by using a screwdriver, and then adding a new cell. A tank of gas can also be attached to the air pump."
|
||||
|
||||
//Portable scrubbers
|
||||
/obj/machinery/portable_atmospherics/powered/scrubber
|
||||
description_info = "Filters the air, placing harmful gases into the internal gas container. The container can be emptied by \
|
||||
connecting it to a connector port. The pump can pump the air in (sucking) or out (blowing), at a specific target pressure. The powercell inside can be \
|
||||
replaced by using a screwdriver, and then adding a new cell. A tank of gas can also be attached to the scrubber. "
|
||||
|
||||
//Meters
|
||||
/obj/machinery/meter
|
||||
description_info = "Measures the volume and temperature of the pipe under the meter."
|
||||
|
||||
//Pipe dispensers
|
||||
/obj/machinery/pipedispenser
|
||||
description_info = "This can be moved by using a wrench. You will need to wrench it again when you want to use it. You can put \
|
||||
excess (atmospheric) pipes into the dispenser, as well. The dispenser requires electricity to function."
|
||||
@@ -0,0 +1,35 @@
|
||||
/obj/machinery/power/supermatter
|
||||
description_info = "When energized by a laser (or something hitting it), it emits radiation and heat. If the heat reaches above 7000 kelvin, it will send an alert and start taking damage. \
|
||||
After integrity falls to zero percent, it will delaminate, causing a massive explosion, station-wide radiation spikes, and hallucinations. \
|
||||
Supermatter reacts badly to oxygen in the atmosphere. It'll also heat up really quick if it is in vacuum.<br>\
|
||||
<br>\
|
||||
Supermatter cores are extremely dangerous to be close to, and requires protection to handle properly. The protection you will need is:<br>\
|
||||
Optical meson scanners on your eyes, to prevent hallucinations when looking at the supermatter.<br>\
|
||||
Radiation helmet and suit, as the supermatter is radioactive.<br>\
|
||||
<br>\
|
||||
Touching the supermatter will result in *instant death*, with no corpse left behind! You can drag the supermatter, but anything else will kill you. \
|
||||
It is advised to obtain a genetic backup before trying to drag it."
|
||||
|
||||
description_antag = "Exposing the supermatter to oxygen or vaccum will cause it to start rapidly heating up. Sabotaging the supermatter and making it explode will \
|
||||
cause a period of lag as the explosion is processed by the server, as well as irradiating the entire station and causing hallucinations to happen. \
|
||||
Wearing radiation equipment will protect you from most of the delamination effects sans explosion."
|
||||
|
||||
/obj/machinery/power/apc
|
||||
description_info = "An APC (Area Power Controller) regulates and supplies backup power for the area they are in. Their power channels are divided \
|
||||
out into 'environmental' (Items that manipulate airflow and temperature), 'lighting' (the lights), and 'equipment' (Everything else that consumes power). \
|
||||
Power consumption and backup power cell charge can be seen from the interface, further controls (turning a specific channel on, off or automatic, \
|
||||
toggling the APC's ability to charge the backup cell, or toggling power for the entire area via master breaker) first requires the interface to be unlocked \
|
||||
with an ID with Engineering access or by one of the station's robots or the artificial intelligence."
|
||||
|
||||
description_antag = "This can be emagged to unlock it. It will cause the APC to have a blue error screen. \
|
||||
Wires can be pulsed remotely with a signaler attached to it. A powersink will also drain any APCs connected to the same wire the powersink is on."
|
||||
|
||||
/obj/item/inflatable
|
||||
description_info = "Inflate by using it in your hand. The inflatable barrier will inflate on your tile. To deflate it, use the 'deflate' verb."
|
||||
|
||||
/obj/structure/inflatable
|
||||
description_info = "To remove these safely, use the 'deflate' verb. Hitting these with any objects will probably puncture and break it forever."
|
||||
|
||||
/obj/structure/inflatable/door
|
||||
description_info = "Click the door to open or close it. It only stops air while closed.<br>\
|
||||
To remove these safely, use the 'deflate' verb. Hitting these with any objects will probably puncture and break it forever."
|
||||
@@ -0,0 +1,42 @@
|
||||
/obj/machinery/bodyscanner
|
||||
description_info = "The advanced scanner detects and reports internal injuries such as bone fractures, internal bleeding, and organ damage. \
|
||||
This is useful if you are about to perform surgery.<br>\
|
||||
<br>\
|
||||
Click your target with Grab intent, then click on the scanner to place them in it. Click the red terminal to operate. \
|
||||
Right-click the scanner and click 'Eject Occupant' to remove them. You can enter the scanner yourself in a similar way, using the 'Enter Body Scanner' \
|
||||
verb."
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell
|
||||
description_info = "The cryogenic chamber, or 'cryo', treats most damage types, most notably genetic damage. It also stabilizes patients \
|
||||
in critical condition by placing them in stasis, so they can be treated at a later time.<br>\
|
||||
<br>\
|
||||
In order for it to work, it must be loaded with chemicals, and the temperature of the solution must reach a certain point. Additionally, it \
|
||||
requires a supply of pure oxygen, provided by canisters that are attached. The most commonly used chemicals in the chambers are Cryoxadone and \
|
||||
Clonexadone. Clonexadone is more effective in treating all damage, including Genetic damage, but is otherwise functionally identical.<br>\
|
||||
<br>\
|
||||
Activating the freezer nearby, and setting it to a temperature setting below 150, is recommended before operation! Further, any clothing the patient \
|
||||
is wearing that act as an insulator will reduce its effectiveness, and should be removed.<br>\
|
||||
<br>\
|
||||
Clicking the tube with a beaker full of chemicals in hand will place it in its storage to distribute when it is activated.<br>\
|
||||
<br>\
|
||||
Click your target with Grab intent, then click on the tube, with an empty hand, to place them in it. Click the tube again to open the menu. \
|
||||
Press the button on the menu to activate it. Once they have reached 100 health, right-click the cell and click 'Eject Occupant' to remove them. \
|
||||
Remember to turn it off, once you've finished, to save power and chemicals!"
|
||||
|
||||
/obj/machinery/optable
|
||||
description_info = "Click your target with Grab intent, then click on the table with an empty hand, to place them on it."
|
||||
|
||||
/obj/machinery/computer/operating
|
||||
description_info = "This console gives information on the status of the patient on the adjacent operating table, notably their consciousness."
|
||||
|
||||
/obj/machinery/sleeper
|
||||
description_info = "The sleeper allows you to clean the blood by means of dialysis, and to administer medication in a controlled environment.<br>\
|
||||
<br>\
|
||||
Click your target with Grab intent, then click on the sleeper to place them in it. Click the green console, with an empty hand, to open the menu. \
|
||||
Click 'Start Dialysis' to begin filtering unwanted chemicals from the occupant's blood. The beaker contained will begin to fill with their \
|
||||
contaminated blood, and will need to be emptied when full.<br>\
|
||||
<br>\
|
||||
You can also inject common medicines directly into their bloodstream.\
|
||||
<br>\
|
||||
Right-click the cell and click 'Eject Occupant' to remove them. You can enter the cell yourself by right clicking and selecting 'Enter Sleeper'. \
|
||||
Note that you cannot control the sleeper while inside of it."
|
||||
@@ -0,0 +1,8 @@
|
||||
/mob/living/silicon/robot/drone
|
||||
description_info = "Drones are player-controlled synthetics which are lawed to maintain the station and not \
|
||||
interact with anyone else, except for other drones. They hold a wide array of tools to build, repair, maintain, and clean. \
|
||||
They fuction similarly to other synthetics, in that they require recharging regularly, have laws, and are resilient to many hazards, \
|
||||
such as fire, radiation, vacuum, and more. Ghosts can join the round as a maintenance drone by using the appropriate verb in the 'ghost' tab. \
|
||||
An inactive drone can be rebooted by swiping an ID card on it with engineering or robotics access."
|
||||
|
||||
description_antag = "An Electromagnetic Sequencer can be used to subvert the drone to your cause."
|
||||
@@ -0,0 +1,24 @@
|
||||
/obj/item/stack/rods
|
||||
description_info = "Made from metal sheets. You can build a grille by using it in your hand. \
|
||||
Clicking on a floor without any tiles will reinforce the floor. You can make reinforced glass by combining rods and normal glass sheets."
|
||||
|
||||
/obj/item/stack/sheet/glass
|
||||
description_info = "Use in your hand to build a window. Can be upgraded to reinforced glass by adding metal rods, which are made from metal sheets."
|
||||
|
||||
/obj/item/stack/sheet/glass/cyborg
|
||||
description_info = "Use in your hand to build a window. Can be upgraded to reinforced glass by adding metal rods, which are made from metal sheets.<br>\
|
||||
As a synthetic, you can acquire more sheets of glass by recharging."
|
||||
|
||||
/obj/item/stack/sheet/glass/reinforced
|
||||
description_info = "Use in your hand to build a window. Reinforced glass is much stronger against damage."
|
||||
|
||||
/obj/item/stack/sheet/glass/reinforced/cyborg
|
||||
description_info = "Use in your hand to build a window. Reinforced glass is much stronger against damage.<br>\
|
||||
As a synthetic, you can gain more reinforced glass by recharging."
|
||||
|
||||
/obj/item/stack/sheet/metal/cyborg
|
||||
description_info = "Use in your hand to bring up the recipe menu. If you have enough sheets, click on something on the list to build it.<br>\
|
||||
You can replenish your supply of metal as a synthetic by recharging."
|
||||
|
||||
/obj/item/stack/sheet
|
||||
description_info = "Use in your hand to bring up the recipe menu. If you have enough sheets, click on something on the list to build it."
|
||||
@@ -0,0 +1,21 @@
|
||||
/obj/structure/girder
|
||||
description_info = "Use metal sheets on this to build a normal wall. Adding plasteel instead will make a reinforced wall.<br>\
|
||||
A false wall can be made by using a crowbar on this girder, and then adding metal or plasteel.<br>\
|
||||
You can dismantle the grider with a wrench."
|
||||
|
||||
/obj/structure/girder/reinforced
|
||||
description_info = "Add another sheet of plasteel to finish."
|
||||
|
||||
/obj/structure/grille
|
||||
description_info = "A powered and knotted wire underneath this will cause the grille to shock anyone not wearing insulated gloves.<br>\
|
||||
Wirecutters will turn the grille into metal rods instantly. Grilles are made with metal rods."
|
||||
|
||||
/obj/structure/lattice
|
||||
description_info = "Add a metal floor tile to build a floor on top of the lattice.<br>\
|
||||
Lattices can be made by applying metal rods to a space tile."
|
||||
|
||||
/obj/structure/bed
|
||||
description_info = "Click and drag yourself (or anyone) to this to buckle in. Click on this with an empty hand to undo the buckles.<br>\
|
||||
<br>\
|
||||
Anyone with restraints, such as handcuffs, will not be able to unbuckle themselves. They must use the Resist button, or verb, to break free of \
|
||||
the buckles, instead."
|
||||
@@ -0,0 +1,3 @@
|
||||
/turf/simulated/wall
|
||||
description_info = "You can deconstruct this by welding it, and then wrenching the girder.<br>\
|
||||
You can build a wall by using metal sheets and making a girder, then adding more metal or plasteel."
|
||||
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
Note: This file is meant for actual weapons (guns, swords, etc), and not the stupid 'every obj is a weapon, except when it's not' thing.
|
||||
*/
|
||||
|
||||
//******
|
||||
//*Guns*
|
||||
//******
|
||||
|
||||
//This contains a lot of copypasta but I'm told it's better then a lot of New()s appending the var.
|
||||
/obj/item/weapon/gun
|
||||
description_info = "This is a gun. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \
|
||||
then click where you want to fire."
|
||||
|
||||
/obj/item/weapon/gun/energy
|
||||
description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \
|
||||
then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger."
|
||||
|
||||
/obj/item/weapon/gun/energy/crossbow
|
||||
description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \
|
||||
then click where you want to fire."
|
||||
description_antag = "This is a stealthy weapon which fires poisoned bolts at your target. When it hits someone, they will suffer a stun effect, in \
|
||||
addition to toxins. The energy crossbow recharges itself slowly, and can be concealed in your pocket or bag."
|
||||
|
||||
/obj/item/weapon/gun/energy/gun
|
||||
description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \
|
||||
then click where you want to fire. Most energy weapons can fire through windows harmlessly. To switch between stun and lethal, click the weapon \
|
||||
in your hand. To recharge this weapon, use a weapon recharger."
|
||||
|
||||
/obj/item/weapon/gun/energy/gun/taser
|
||||
description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \
|
||||
then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger."
|
||||
|
||||
/obj/item/weapon/gun/energy/gun/stunrevolver
|
||||
description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \
|
||||
then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger."
|
||||
|
||||
/obj/item/weapon/gun/energy/gun/nuclear
|
||||
description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \
|
||||
then click where you want to fire. Most energy weapons can fire through windows harmlessly. To switch between stun and lethal, click the weapon \
|
||||
in your hand. Unlike most weapons, this weapon recharges itself."
|
||||
|
||||
/obj/item/weapon/gun/energy/captain
|
||||
description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \
|
||||
then click where you want to fire. Most energy weapons can fire through windows harmlessly. Unlike most weapons, this weapon recharges itself."
|
||||
|
||||
/obj/item/weapon/gun/energy/sniperrifle
|
||||
description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \
|
||||
then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger. \
|
||||
To use the scope, use the appropriate verb in the object tab."
|
||||
|
||||
/obj/item/weapon/gun/projectile
|
||||
description_info = "This is a ballistic weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \
|
||||
then click where you want to fire. To reload, click the weapon in your hand to unload (if needed), then add the appropiate ammo. The description \
|
||||
will tell you what caliber you need."
|
||||
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump
|
||||
description_info = "This is a ballistic weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \
|
||||
then click where you want to fire. After firing, you will need to pump the gun, by clicking on the gun in your hand. To reload, load more shotgun \
|
||||
shells into the gun."
|
||||
|
||||
/obj/item/weapon/gun/projectile/heavysniper
|
||||
description_info = "This is a ballistic weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \
|
||||
then click where you want to fire. The gun's chamber can be opened or closed by using it in your hand. To reload, open the chamber, add a new bullet \
|
||||
then close it. To use the scope, use the appropriate verb in the object tab."
|
||||
|
||||
//*******
|
||||
//*Melee*
|
||||
//*******
|
||||
|
||||
/obj/item/weapon/melee/baton
|
||||
description_info = "The baton needs to be turned on to apply the stunning effect. Use it in your hand to toggle it on or off. If your intent is \
|
||||
set to 'harm', you will inflict damage when using it, regardless if it is on or not. Each stun reduces the baton's charge, which can be replenished by \
|
||||
putting it inside a weapon recharger."
|
||||
|
||||
/obj/item/weapon/melee/energy/sword
|
||||
description_antag = "The energy sword is a very strong melee weapon, capable of severing limbs easily, if they are targeted. It can also has a chance \
|
||||
to block projectiles and melee attacks while it is on and being held. The sword can be toggled on or off by using it in your hand. While it is off, \
|
||||
it can be concealed in your pocket or bag."
|
||||
|
||||
/obj/item/weapon/melee/cultblade
|
||||
description_antag = "This sword is a powerful weapon, capable of severing limbs easily, if they are targeted. Nonbelivers are unable to use this weapon."
|
||||
@@ -0,0 +1,71 @@
|
||||
/* This code is responsible for the examine tab. When someone examines something, it copies the examined object's description_info,
|
||||
description_fluff, and description_antag, and shows it in a new tab.
|
||||
|
||||
In this file, some atom and mob stuff is defined here. It is defined here instead of in the normal files, to keep the whole system self-contained.
|
||||
This means that this file can be unchecked, along with the other examine files, and can be removed entirely with no effort.
|
||||
*/
|
||||
|
||||
|
||||
/atom/
|
||||
var/description_info = null //Helpful blue text.
|
||||
var/description_fluff = null //Green text about the atom's fluff, if any exists.
|
||||
var/description_antag = null //Malicious red text, for the antags.
|
||||
|
||||
//Override these if you need special behaviour for a specific type.
|
||||
/atom/proc/get_description_info()
|
||||
if(description_info)
|
||||
return description_info
|
||||
return
|
||||
|
||||
/atom/proc/get_description_fluff()
|
||||
if(description_fluff)
|
||||
return description_fluff
|
||||
return
|
||||
|
||||
/atom/proc/get_description_antag()
|
||||
if(description_antag)
|
||||
return description_antag
|
||||
return
|
||||
|
||||
/mob/living/get_description_fluff()
|
||||
if(flavor_text) //Get flavor text for the green text.
|
||||
return flavor_text
|
||||
else //No flavor text? Try for hardcoded fluff instead.
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/human/get_description_fluff()
|
||||
return print_flavor_text(0)
|
||||
|
||||
/* The examine panel itself */
|
||||
|
||||
/client/var/description_holders[0]
|
||||
|
||||
/client/proc/update_description_holders(atom/A, update_antag_info=0)
|
||||
description_holders["info"] = A.get_description_info()
|
||||
description_holders["fluff"] = A.get_description_fluff()
|
||||
description_holders["antag"] = (update_antag_info)? A.get_description_antag() : ""
|
||||
|
||||
description_holders["name"] = "[A.name]"
|
||||
description_holders["icon"] = "\icon[A]"
|
||||
description_holders["desc"] = A.desc
|
||||
|
||||
/client/Stat()
|
||||
. = ..()
|
||||
if(usr && statpanel("Examine"))
|
||||
stat(null,"[description_holders["icon"]] <font size='5'>[description_holders["name"]]</font>") //The name, written in big letters.
|
||||
stat(null,"[description_holders["desc"]]") //the default examine text.
|
||||
if(description_holders["info"])
|
||||
stat(null,"<font color='#084B8A'><b>[description_holders["info"]]</b></font>") //Blue, informative text.
|
||||
if(description_holders["fluff"])
|
||||
stat(null,"<font color='#298A08'><b>[description_holders["fluff"]]</b></font>") //Yellow, fluff-related text.
|
||||
if(description_holders["antag"])
|
||||
stat(null,"<font color='#8A0808'><b>[description_holders["antag"]]</b></font>") //Red, malicious antag-related text
|
||||
|
||||
//override examinate verb to update description holders when things are examined
|
||||
/mob/examinate(atom/A as mob|obj|turf in view())
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
var/is_antag = (isAntag(src) || isobserver(src)) //ghosts don't have minds
|
||||
if(client)
|
||||
client.update_description_holders(A, is_antag)
|
||||
@@ -396,10 +396,13 @@
|
||||
// EXAMINE PROC // This proc is massive, messy, and probably could be handled better.
|
||||
////////////////////////////// Feel free to try cleaning it up if you think of a better way to do it.
|
||||
|
||||
/obj/machinery/fishtank/examine()
|
||||
..()
|
||||
/obj/machinery/fishtank/examine(mob/user)
|
||||
..(user)
|
||||
var/examine_message = ""
|
||||
//Approximate water level
|
||||
|
||||
examine_message += "Water level: "
|
||||
|
||||
if(water_level == 0)
|
||||
examine_message += "\The [src] is empty! "
|
||||
else if(water_level < water_capacity * 0.1)
|
||||
@@ -415,6 +418,8 @@
|
||||
else if (water_level == water_capacity)
|
||||
examine_message += "\The [src] is full! "
|
||||
|
||||
examine_message += "<br>Cleanliness level: "
|
||||
|
||||
//Approximate filth level
|
||||
if(filth_level == 0)
|
||||
examine_message += "[src] is spotless! "
|
||||
@@ -429,6 +434,8 @@
|
||||
else if(filth_level == 10)
|
||||
examine_message += "[src] is absolutely disgusting! Someone should clean it NOW! "
|
||||
|
||||
examine_message += "<br>Food level: "
|
||||
|
||||
//Approximate food level
|
||||
if(!fish_count) //Check if there are fish in the tank
|
||||
if(food_level > 0) //Don't report a tank that has neither fish nor food in it
|
||||
@@ -445,7 +452,9 @@
|
||||
|
||||
//Report the number of harvestable eggs
|
||||
if(egg_count) //Don't bother if there isn't any eggs
|
||||
examine_message += "There are [egg_count] eggs able to be harvested! "
|
||||
examine_message += "<br>There are [egg_count] eggs able to be harvested! "
|
||||
|
||||
examine_message += "<br>"
|
||||
|
||||
//Report the number and types of live fish if there is water in the tank
|
||||
if(fish_count == 0)
|
||||
@@ -465,6 +474,8 @@
|
||||
//Display the number of fish and previously constructed message
|
||||
examine_message += "\The [src] contains [fish_count] live fish. [message] "
|
||||
|
||||
examine_message += "<br>"
|
||||
|
||||
//Report lid state for tanks and wall-tanks
|
||||
if(has_lid) //Only report if the tank actually has a lid
|
||||
//Report lid state
|
||||
@@ -473,6 +484,8 @@
|
||||
else
|
||||
examine_message += "The lid is open. "
|
||||
|
||||
examine_message += "<br>"
|
||||
|
||||
//Report if the tank is leaking/cracked
|
||||
if(water_level > 0) //Tank has water, so it's actually leaking
|
||||
if(leaking == 1) examine_message += "\The [src] is leaking."
|
||||
@@ -483,7 +496,8 @@
|
||||
|
||||
|
||||
//Finally, report the full examine_message constructed from the above reports
|
||||
usr << "[examine_message]"
|
||||
user << "[examine_message]"
|
||||
return examine_message
|
||||
|
||||
//////////////////////////////
|
||||
// ATACK PROCS //
|
||||
|
||||
@@ -382,11 +382,11 @@
|
||||
qdel(O)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/examine()
|
||||
..()
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/examine(mob/user)
|
||||
..(user)
|
||||
var/whatsinside = pick(ingredients)
|
||||
|
||||
usr << "<span class='notice'> You think you can see [whatsinside] in there.</span>"
|
||||
user << "<span class='notice'> You think you can see [whatsinside] in there.</span>"
|
||||
|
||||
/*
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/attack(mob/M as mob, mob/user as mob, def_zone) //SNOOOOOOOWFLAAAAAAAAAAAAAAAAAKES
|
||||
|
||||
@@ -181,12 +181,12 @@
|
||||
update_icon()
|
||||
user.visible_message("\The [user] [concealed ? "conceals" : "reveals"] their hand.")
|
||||
|
||||
/obj/item/weapon/hand/examine()
|
||||
..()
|
||||
/obj/item/weapon/hand/examine(mob/user)
|
||||
..(user)
|
||||
if((!concealed || src.loc == usr) && cards.len)
|
||||
usr << "It contains: "
|
||||
user << "It contains: "
|
||||
for(var/datum/playingcard/P in cards)
|
||||
usr << "The [P.name]."
|
||||
user << "The [P.name]."
|
||||
|
||||
/obj/item/weapon/hand/update_icon()
|
||||
|
||||
|
||||
@@ -779,31 +779,30 @@
|
||||
else if(dead)
|
||||
remove_dead(user)
|
||||
|
||||
/obj/machinery/portable_atmospherics/hydroponics/examine()
|
||||
|
||||
..()
|
||||
/obj/machinery/portable_atmospherics/hydroponics/examine(mob/user)
|
||||
..(user)
|
||||
|
||||
if(!seed)
|
||||
usr << "[src] is empty."
|
||||
user << "[src] is empty."
|
||||
return
|
||||
|
||||
usr << "<span class='notice'>[seed.display_name]</span> are growing here.</span>"
|
||||
user << "<span class='notice'>[seed.display_name]</span> are growing here.</span>"
|
||||
|
||||
if(!Adjacent(usr))
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
|
||||
usr << "Water: [round(waterlevel,0.1)]/100"
|
||||
usr << "Nutrient: [round(nutrilevel,0.1)]/10"
|
||||
user << "Water: [round(waterlevel,0.1)]/100"
|
||||
user << "Nutrient: [round(nutrilevel,0.1)]/10"
|
||||
|
||||
if(weedlevel >= 5)
|
||||
usr << "\The [src] is <span class='danger'>infested with weeds</span>!"
|
||||
user << "\The [src] is <span class='danger'>infested with weeds</span>!"
|
||||
if(pestlevel >= 5)
|
||||
usr << "\The [src] is <span class='danger'>infested with tiny worms</span>!"
|
||||
user << "\The [src] is <span class='danger'>infested with tiny worms</span>!"
|
||||
|
||||
if(dead)
|
||||
usr << "<span class='danger'>The plant is dead.</span>"
|
||||
user << "<span class='danger'>The plant is dead.</span>"
|
||||
else if(health <= (seed.get_trait(TRAIT_ENDURANCE)/ 2))
|
||||
usr << "The plant looks <span class='danger'>unhealthy</span>."
|
||||
user << "The plant looks <span class='danger'>unhealthy</span>."
|
||||
|
||||
if(mechanical)
|
||||
var/turf/T = loc
|
||||
@@ -831,7 +830,7 @@
|
||||
light_available = 5
|
||||
light_string = "a light level of [light_available] lumens"
|
||||
|
||||
usr << "The tray's sensor suite is reporting [light_string] and a temperature of [environment.temperature]K."
|
||||
user << "The tray's sensor suite is reporting [light_string] and a temperature of [environment.temperature]K."
|
||||
|
||||
/obj/machinery/portable_atmospherics/hydroponics/verb/close_lid_verb()
|
||||
set name = "Toggle Tray Lid"
|
||||
|
||||
@@ -436,9 +436,9 @@
|
||||
user << "<span class='info'>There's no points left on [src].</span>"
|
||||
..()
|
||||
|
||||
/obj/item/weapon/card/mining_point_card/examine()
|
||||
..()
|
||||
usr << "There's [points] points on the card."
|
||||
/obj/item/weapon/card/mining_point_card/examine(mob/user)
|
||||
..(user)
|
||||
user << "There's [points] points on the card."
|
||||
|
||||
/**********************Jaunter**********************/
|
||||
|
||||
@@ -778,7 +778,7 @@
|
||||
malfunctioning = 1
|
||||
|
||||
/obj/item/weapon/lazarus_injector/examine(mob/user)
|
||||
..()
|
||||
..(user)
|
||||
if(!loaded)
|
||||
user << "<span class='info'>[src] is empty.</span>"
|
||||
if(malfunctioning)
|
||||
|
||||
@@ -96,7 +96,7 @@ var/list/image/ghost_darkness_images = list() //this is a list of images for thi
|
||||
|
||||
/mob/dead/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Transfer_mind is there to check if mob is being deleted/not going to have a body.
|
||||
@@ -192,7 +192,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
return
|
||||
|
||||
|
||||
/mob/dead/observer/Move(NewLoc, direct)
|
||||
/mob/dead/observer/Move(NewLoc, direct)
|
||||
following = null
|
||||
dir = direct
|
||||
if(NewLoc)
|
||||
@@ -221,16 +221,12 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
var/area/A = get_area_master(src)
|
||||
if(A)
|
||||
A.Entered(src)
|
||||
|
||||
|
||||
..()
|
||||
|
||||
/mob/dead/observer/experience_pressure_difference()
|
||||
return 0
|
||||
|
||||
/mob/dead/observer/examine()
|
||||
if(usr)
|
||||
usr << desc
|
||||
|
||||
/mob/dead/observer/can_use_hands() return 0
|
||||
/mob/dead/observer/is_active() return 0
|
||||
|
||||
@@ -325,15 +321,15 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
set category = "Ghost"
|
||||
set name = "Teleport"
|
||||
set desc= "Teleport to a location"
|
||||
|
||||
|
||||
if(!isobserver(usr))
|
||||
usr << "Not when you're not dead!"
|
||||
return
|
||||
|
||||
|
||||
usr.verbs -= /mob/dead/observer/proc/dead_tele
|
||||
spawn(30)
|
||||
usr.verbs += /mob/dead/observer/proc/dead_tele
|
||||
|
||||
|
||||
var/area/thearea = ghostteleportlocs[A]
|
||||
if(!thearea) return
|
||||
|
||||
@@ -414,7 +410,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
/mob/Life()
|
||||
// to catch teleports etc which directly set loc
|
||||
update_following()
|
||||
return ..()
|
||||
return ..()
|
||||
|
||||
/mob/dead/observer/verb/jumptomob(target in getmobs()) //Moves the ghost instead of just changing the ghosts's eye -Nodrak
|
||||
set category = "Ghost"
|
||||
@@ -509,7 +505,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
|
||||
src << "\blue Temperature: [round(environment.temperature-T0C,0.1)]°C"
|
||||
src << "\blue Heat Capacity: [round(environment.heat_capacity(),0.1)]"
|
||||
|
||||
|
||||
/mob/dead/observer/verb/view_manifest()
|
||||
set name = "View Crew Manifest"
|
||||
set category = "Ghost"
|
||||
@@ -629,9 +625,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
client.images |= ghost_darkness_images
|
||||
if (ghostimage)
|
||||
client.images -= ghostimage //remove ourself
|
||||
|
||||
|
||||
/mob/proc/can_admin_interact()
|
||||
return 0
|
||||
|
||||
|
||||
/mob/dead/observer/can_admin_interact()
|
||||
return check_rights(R_ADMIN, 0, src)
|
||||
@@ -44,7 +44,7 @@ var/const/MAX_ACTIVE_TIME = 400
|
||||
Attach(M)
|
||||
|
||||
/obj/item/clothing/mask/facehugger/examine(mob/user)
|
||||
..()
|
||||
..(user)
|
||||
if(!real)//So that giant red text about probisci doesn't show up.
|
||||
return
|
||||
switch(stat)
|
||||
@@ -171,7 +171,7 @@ var/const/MAX_ACTIVE_TIME = 400
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(!H.check_has_mouth())
|
||||
return
|
||||
|
||||
|
||||
if(!sterile)
|
||||
//target.contract_disease(new /datum/disease/alien_embryo(0)) //so infection chance is same as virus infection chance
|
||||
target.visible_message("<span class='danger'>[src] falls limp after violating [target]'s face!</span>", \
|
||||
|
||||
@@ -130,12 +130,8 @@
|
||||
ghost_volunteers.Add(O)
|
||||
|
||||
|
||||
/obj/item/device/mmi/posibrain/examine()
|
||||
set src in oview()
|
||||
|
||||
if(!usr || !src) return
|
||||
if( (usr.sdisabilities & BLIND || usr.blinded || usr.stat) && !istype(usr,/mob/dead/observer) )
|
||||
usr << "<span class='notice'>Something is there but you can't see it.</span>"
|
||||
/obj/item/device/mmi/posibrain/examine(mob/user)
|
||||
if(!..(user))
|
||||
return
|
||||
|
||||
var/msg = "<span class='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>!\n[desc]\n"
|
||||
@@ -150,8 +146,7 @@
|
||||
else
|
||||
msg += "<span class='deadsay'>It appears to be completely inactive.</span>\n"
|
||||
msg += "<span class='info'>*---------*</span>"
|
||||
usr << msg
|
||||
return
|
||||
user << msg
|
||||
|
||||
/obj/item/device/mmi/posibrain/emp_act(severity)
|
||||
if(!src.brainmob)
|
||||
|
||||
@@ -1,11 +1,4 @@
|
||||
/mob/living/carbon/human/examine()
|
||||
set src in view()
|
||||
|
||||
if(!usr || !src) return
|
||||
if( usr.sdisabilities & BLIND || usr.blinded || usr.stat==UNCONSCIOUS )
|
||||
usr << "<span class='notice'>Something is there but you can't see it.</span>"
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/examine(mob/user)
|
||||
var/skipgloves = 0
|
||||
var/skipsuitstorage = 0
|
||||
var/skipjumpsuit = 0
|
||||
@@ -182,7 +175,7 @@
|
||||
else if(istype(wear_id, /obj/item/weapon/card/id)) //just in case something other than a PDA/ID card somehow gets in the ID slot :[
|
||||
var/obj/item/weapon/card/id/idcard = wear_id
|
||||
id = idcard.registered_name
|
||||
if(id && (id != real_name) && (get_dist(src, usr) <= 1) && prob(10))
|
||||
if(id && (id != real_name) && (get_dist(src, user) <= 1) && prob(10))
|
||||
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[wear_id] \a [wear_id] yet something doesn't seem right...</span>\n"
|
||||
else*/
|
||||
msg += "[t_He] [t_is] wearing \icon[wear_id] \a [wear_id].\n"
|
||||
@@ -208,22 +201,22 @@
|
||||
if(DWARF in mutations)
|
||||
msg += "[t_He] [t_is] a halfling!\n"
|
||||
|
||||
var/distance = get_dist(usr,src)
|
||||
if(istype(usr, /mob/dead/observer) || usr.stat == 2) // ghosts can see anything
|
||||
var/distance = get_dist(user,src)
|
||||
if(istype(user, /mob/dead/observer) || user.stat == 2) // ghosts can see anything
|
||||
distance = 1
|
||||
if (src.stat)
|
||||
msg += "<span class='warning'>[t_He] [t_is]n't responding to anything around [t_him] and seems to be asleep.</span>\n"
|
||||
if((stat == 2 || src.health <= config.health_threshold_crit) && distance <= 3)
|
||||
msg += "<span class='warning'>[t_He] does not appear to be breathing.</span>\n"
|
||||
if(istype(usr, /mob/living/carbon/human) && !usr.stat && distance <= 1)
|
||||
for(var/mob/O in viewers(usr.loc, null))
|
||||
O.show_message("[usr] checks [src]'s pulse.", 1)
|
||||
if(istype(user, /mob/living/carbon/human) && !user.stat && distance <= 1)
|
||||
for(var/mob/O in viewers(user.loc, null))
|
||||
O.show_message("[user] checks [src]'s pulse.", 1)
|
||||
spawn(15)
|
||||
if(distance <= 1 && usr.stat != 1)
|
||||
if(distance <= 1 && user.stat != 1)
|
||||
if(pulse == PULSE_NONE)
|
||||
usr << "<span class='deadsay'>[t_He] has no pulse[src.client ? "" : " and [t_his] soul has departed"]...</span>"
|
||||
user << "<span class='deadsay'>[t_He] has no pulse[src.client ? "" : " and [t_his] soul has departed"]...</span>"
|
||||
else
|
||||
usr << "<span class='deadsay'>[t_He] has a pulse!</span>"
|
||||
user << "<span class='deadsay'>[t_He] has a pulse!</span>"
|
||||
|
||||
msg += "<span class='warning'>"
|
||||
if(fire_stacks > 0)
|
||||
@@ -246,7 +239,7 @@
|
||||
if(nutrition < 100)
|
||||
msg += "[t_He] [t_is] severely malnourished.\n"
|
||||
else if(nutrition >= 500)
|
||||
if(usr.nutrition < 100)
|
||||
if(user.nutrition < 100)
|
||||
msg += "[t_He] [t_is] plump and delicious looking - Like a fat little piggy. A tasty piggy.\n"
|
||||
else
|
||||
msg += "[t_He] [t_is] quite chubby.\n"
|
||||
@@ -419,7 +412,7 @@
|
||||
msg += "<span class='warning'><b>[src] has \a [implant] sticking out of [t_his] flesh!</span>\n"
|
||||
if(digitalcamo)
|
||||
msg += "[t_He] [t_is] repulsively uncanny!\n"
|
||||
if(!wear_mask && is_thrall(src) && in_range(usr,src))
|
||||
if(!wear_mask && is_thrall(src) && in_range(user,src))
|
||||
msg += "Their features seem unnaturally tight and drawn.\n"
|
||||
if(decaylevel == 1)
|
||||
msg += "[t_He] [t_is] starting to smell.\n"
|
||||
@@ -430,7 +423,7 @@
|
||||
if(decaylevel == 4)
|
||||
msg += "[t_He] [t_is] mostly dessicated now, with only bones remaining of what used to be a person.\n"
|
||||
|
||||
if(hasHUD(usr,"security"))
|
||||
if(hasHUD(user,"security"))
|
||||
var/perpname = "wot"
|
||||
var/criminal = "None"
|
||||
|
||||
@@ -453,7 +446,7 @@
|
||||
msg += "<span class = 'deptradio'>Criminal status:</span> <a href='?src=\ref[src];criminal=1'>\[[criminal]\]</a>\n"
|
||||
msg += "<span class = 'deptradio'>Security records:</span> <a href='?src=\ref[src];secrecord=`'>\[View\]</a> <a href='?src=\ref[src];secrecordadd=`'>\[Add comment\]</a>\n"
|
||||
|
||||
if(hasHUD(usr,"medical"))
|
||||
if(hasHUD(user,"medical"))
|
||||
var/perpname = "wot"
|
||||
var/medical = "None"
|
||||
|
||||
@@ -484,7 +477,7 @@
|
||||
pose = addtext(pose,".") //Makes sure all emotes end with a period.
|
||||
msg += "\n[t_He] is [pose]"
|
||||
|
||||
usr << msg
|
||||
user << msg
|
||||
|
||||
//Helper procedure. Called by /mob/living/carbon/human/examine() and /mob/living/carbon/human/Topic() to determine HUD access to security and medical records.
|
||||
/proc/hasHUD(mob/M as mob, hudtype)
|
||||
|
||||
@@ -1059,11 +1059,11 @@
|
||||
|
||||
if (href_list["lookitem"])
|
||||
var/obj/item/I = locate(href_list["lookitem"])
|
||||
I.examine()
|
||||
src.examinate(I)
|
||||
|
||||
if (href_list["lookmob"])
|
||||
var/mob/M = locate(href_list["lookmob"])
|
||||
M.examine()
|
||||
src.examinate(M)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
@@ -1,12 +1,6 @@
|
||||
/mob/living/carbon/slime/examine()
|
||||
set src in oview()
|
||||
|
||||
if(!usr || !src) return
|
||||
if( (usr.sdisabilities & BLIND || usr.blinded || usr.stat) && !istype(usr,/mob/dead/observer) )
|
||||
usr << "<span class='notice'>Something is there but you can't see it.</span>"
|
||||
return
|
||||
|
||||
var/msg = "<span class='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>!\n"
|
||||
/mob/living/carbon/slime/examine(mob/user)
|
||||
..(user)
|
||||
var/msg = ""
|
||||
if (src.stat == DEAD)
|
||||
msg += "<span class='deadsay'>It is limp and unresponsive.</span>\n"
|
||||
else
|
||||
@@ -47,5 +41,4 @@
|
||||
msg += "</span>"
|
||||
|
||||
msg += "*---------*</span>"
|
||||
usr << msg
|
||||
return
|
||||
user << msg
|
||||
@@ -1,12 +1,8 @@
|
||||
/mob/living/silicon/ai/examine()
|
||||
set src in oview()
|
||||
|
||||
if(!usr || !src) return
|
||||
if( (usr.sdisabilities & BLIND || usr.blinded || usr.stat) && !istype(usr,/mob/dead/observer) )
|
||||
usr << "<span class='notice'>Something is there but you can't see it.</span>"
|
||||
/mob/living/silicon/ai/examine(mob/user)
|
||||
if(!..(user))
|
||||
return
|
||||
|
||||
var/msg = "<span class='info'>*---------*\nThis is \icon[src] <EM>[src]</EM>!\n"
|
||||
var/msg = ""
|
||||
if (src.stat == DEAD)
|
||||
msg += "<span class='deadsay'>It appears to be powered-down.</span>\n"
|
||||
else
|
||||
@@ -27,10 +23,9 @@
|
||||
msg += "</span>"
|
||||
msg += "*---------*</span>"
|
||||
|
||||
usr << msg
|
||||
usr.showLaws(src)
|
||||
user << msg
|
||||
user.showLaws(src)
|
||||
|
||||
return
|
||||
|
||||
/mob/proc/showLaws(var/mob/living/silicon/S)
|
||||
return
|
||||
@@ -38,4 +33,3 @@
|
||||
/mob/dead/observer/showLaws(var/mob/living/silicon/S)
|
||||
if(antagHUD || check_rights(R_MOD, 0, src))
|
||||
S.laws.show_laws(src)
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
return 0
|
||||
|
||||
// Hide popout menu verbs
|
||||
/mob/aiEye/examine(atom/A as mob|obj|turf in view())
|
||||
/mob/aiEye/examinate(atom/A as mob|obj|turf in view())
|
||||
set popup_menu = 0
|
||||
set src = usr.contents
|
||||
return 0
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
/mob/living/silicon/pai/examine() //removed as it was pointless...moved to the pai-card instead.
|
||||
/* This is totally pointless because this mob is contained inside a card!
|
||||
set src in oview()
|
||||
/mob/living/silicon/pai/examine(mob/user) //removed as it was pointless...moved to the pai-card instead.
|
||||
/*..(user) //This is totally pointless because this mob is contained inside a card!
|
||||
|
||||
var/msg = "<span class='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>!\n"
|
||||
var/msg = ""
|
||||
if (src.stat == DEAD)
|
||||
msg += "<span class='deadsay'>It appears to be offline.</span>\n"
|
||||
else
|
||||
@@ -22,6 +21,5 @@
|
||||
msg += "</span>"
|
||||
msg += "*---------*</span>"
|
||||
|
||||
usr << msg
|
||||
*/
|
||||
return
|
||||
user << msg
|
||||
*/
|
||||
@@ -496,16 +496,10 @@
|
||||
src << "<span class='warning'>You are far too small to pull anything!</span>"
|
||||
return
|
||||
|
||||
/mob/living/silicon/pai/examine()
|
||||
/mob/living/silicon/pai/examine(mob/user)
|
||||
..(user)
|
||||
|
||||
set src in oview()
|
||||
|
||||
if(!usr || !src) return
|
||||
if( (usr.sdisabilities & BLIND || usr.blinded || usr.stat) && !istype(usr,/mob/dead/observer) )
|
||||
usr << "<span class='notice'>Something is there but you can't see it.</span>"
|
||||
return
|
||||
|
||||
var/msg = "<span class='info'>*---------*\nThis is \icon[src][name], a personal AI!"
|
||||
var/msg = ""
|
||||
|
||||
switch(src.stat)
|
||||
if(CONSCIOUS)
|
||||
@@ -521,7 +515,7 @@
|
||||
pose = addtext(pose,".") //Makes sure all emotes end with a period.
|
||||
msg += "\nIt is [pose]"
|
||||
|
||||
usr << msg
|
||||
user << msg
|
||||
|
||||
/mob/living/silicon/pai/bullet_act(var/obj/item/projectile/Proj)
|
||||
..(Proj)
|
||||
|
||||
@@ -45,10 +45,10 @@
|
||||
if(drone_progress >= 100)
|
||||
visible_message("\The [src] voices a strident beep, indicating a drone chassis is prepared.")
|
||||
|
||||
/obj/machinery/drone_fabricator/examine()
|
||||
..()
|
||||
if(produce_drones && drone_progress >= 100 && istype(usr,/mob/dead) && config.allow_drone_spawn && count_drones() < config.max_maint_drones)
|
||||
usr << "<BR><B>A drone is prepared. Select 'Join As Drone' from the Ghost tab to spawn as a maintenance drone.</B>"
|
||||
/obj/machinery/drone_fabricator/examine(mob/user)
|
||||
..(user)
|
||||
if(produce_drones && drone_progress >= 100 && istype(user,/mob/dead) && config.allow_drone_spawn && count_drones() < config.max_maint_drones)
|
||||
user << "<BR><B>A drone is prepared. Select 'Join As Drone' from the Ghost tab to spawn as a maintenance drone.</B>"
|
||||
|
||||
/obj/machinery/drone_fabricator/proc/count_drones()
|
||||
var/drones = 0
|
||||
@@ -101,7 +101,7 @@
|
||||
if(!ticker || ticker.current_state < 3)
|
||||
src << "<span class='warning'>You can't join as a drone before the game starts!</span>"
|
||||
return
|
||||
|
||||
|
||||
var/drone_age = 14 // 14 days to play as a drone
|
||||
var/player_age_check = check_client_age(usr.client, drone_age)
|
||||
if(player_age_check && config.use_age_restriction_for_antags)
|
||||
@@ -128,7 +128,7 @@
|
||||
pluralcheck = " [deathtimeminutes] minutes and"
|
||||
var/deathtimeseconds = round((deathtime - deathtimeminutes * 600) / 10,1)
|
||||
|
||||
if (deathtime < 6000 && joinedasobserver == 0)
|
||||
if (deathtime < 6000 && joinedasobserver == 0)
|
||||
usr << "You have been dead for[pluralcheck] [deathtimeseconds] seconds."
|
||||
usr << "<span class='warning'>You must wait 10 minutes to respawn as a drone!</span>"
|
||||
return
|
||||
|
||||
@@ -1,12 +1,7 @@
|
||||
/mob/living/silicon/robot/examine()
|
||||
set src in oview()
|
||||
/mob/living/silicon/robot/examine(mob/user)
|
||||
..(user)
|
||||
|
||||
if(!usr || !src) return
|
||||
if( (usr.sdisabilities & BLIND || usr.blinded || usr.stat) && !istype(usr,/mob/dead/observer) )
|
||||
usr << "<span class='notice'>Something is there but you can't see it.</span>"
|
||||
return
|
||||
|
||||
var/msg = "<span class='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>[custom_name ? ", [modtype] [braintype]" : ""]!\n"
|
||||
var/msg = ""
|
||||
var/obj/act_module = get_active_hand()
|
||||
if(act_module)
|
||||
msg += "It is holding \icon[act_module] \a [act_module].\n"
|
||||
@@ -49,6 +44,5 @@
|
||||
pose = addtext(pose,".") //Makes sure all emotes end with a period.
|
||||
msg += "\nIt is [pose]"
|
||||
|
||||
usr << msg
|
||||
usr.showLaws(src)
|
||||
return
|
||||
user << msg
|
||||
user.showLaws(src)
|
||||
@@ -46,10 +46,10 @@
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/construct/examine()
|
||||
set src in oview()
|
||||
/mob/living/simple_animal/construct/examine(mob/user)
|
||||
..(user)
|
||||
|
||||
var/msg = "<span cass='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>!\n"
|
||||
var/msg = ""
|
||||
if (src.health < src.maxHealth)
|
||||
msg += "<span class='warning'>"
|
||||
if (src.health >= src.maxHealth/2)
|
||||
@@ -59,8 +59,7 @@
|
||||
msg += "</span>"
|
||||
msg += "*---------*</span>"
|
||||
|
||||
usr << msg
|
||||
return
|
||||
user << msg
|
||||
|
||||
/mob/living/simple_animal/construct/attack_animal(mob/living/simple_animal/M as mob)
|
||||
if(istype(M, /mob/living/simple_animal/construct/builder))
|
||||
|
||||
@@ -281,7 +281,7 @@
|
||||
src << "\red There is nothing of interest to take."
|
||||
return 0
|
||||
|
||||
/mob/living/simple_animal/spiderbot/examine()
|
||||
..()
|
||||
/mob/living/simple_animal/spiderbot/examine(mob/user)
|
||||
..(user)
|
||||
if(src.held_item)
|
||||
usr << "It is carrying \a [src.held_item] \icon[src.held_item]."
|
||||
user << "It is carrying \a [src.held_item] \icon[src.held_item]."
|
||||
|
||||
@@ -33,12 +33,12 @@
|
||||
var/image/cap_living = null //Where we store our cap icons so we dont generate them constantly to update our icon
|
||||
var/image/cap_dead = null
|
||||
|
||||
/mob/living/simple_animal/hostile/mushroom/examine()
|
||||
..()
|
||||
/mob/living/simple_animal/hostile/mushroom/examine(mob/user)
|
||||
..(user)
|
||||
if(health >= maxHealth)
|
||||
usr << "<span class='info'>It looks healthy.</span>"
|
||||
user << "<span class='info'>It looks healthy.</span>"
|
||||
else
|
||||
usr << "<span class='info'>It looks like it's been roughed up.</span>"
|
||||
user << "<span class='info'>It looks like it's been roughed up.</span>"
|
||||
|
||||
/mob/living/simple_animal/hostile/mushroom/Life()
|
||||
..()
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user