Merge pull request #3869 from Iamgoofball/boozetaketwo

Added Telescience! Moves Misc. Research to the spot between the Solars and Xenobio.
This commit is contained in:
Chinsky
2013-11-06 05:19:16 -08:00
8 changed files with 11720 additions and 11332 deletions
+3
View File
@@ -1242,6 +1242,9 @@
#include "code\modules\surgery\ribcage.dm"
#include "code\modules\surgery\robolimbs.dm"
#include "code\modules\surgery\surgery.dm"
#include "code\modules\telesci\gps.dm"
#include "code\modules\telesci\telepad.dm"
#include "code\modules\telesci\telesci_computer.dm"
#include "code\modules\virus2\analyser.dm"
#include "code\modules\virus2\antibodies.dm"
#include "code\modules\virus2\centrifuge.dm"
+4
View File
@@ -1322,6 +1322,10 @@ proc/process_ghost_teleport_locs()
name = "\improper Miscellaneous Research"
icon_state = "toxmisc"
/area/toxins/telesci
name = "\improper Telescience Lab"
icon_state = "toxmisc"
/area/toxins/server
name = "\improper Server Room"
icon_state = "server"
+66
View File
@@ -0,0 +1,66 @@
/obj/item/device/gps
name = "Global Positioning System"
desc = "Helping lost spacemen find their way through the planets since 2016."
icon = 'icons/obj/telescience.dmi'
icon_state = "gps-c"
w_class = 2.0
flags = FPRINT | TABLEPASS
slot_flags = SLOT_BELT
origin_tech = "programming=2;engineering=2"
var/gpstag = "COM0"
var/emped = 0
/obj/item/device/gps/New()
name = "Global Positioning System ([gpstag])"
overlays += "working"
/obj/item/device/gps/emp_act(severity)
emped = 1
overlays -= "working"
overlays += "emp"
spawn(300)
emped = 0
overlays -= "emp"
overlays += "working"
/obj/item/device/gps/attack_self(mob/user as mob)
var/obj/item/device/gps/t = ""
if(emped)
t += "ERROR"
else
t += "<BR><A href='?src=\ref[src];tag=1'>Set Tag</A> "
t += "<BR>Tag: [gpstag]"
for(var/obj/item/device/gps/G in world)
var/turf/pos = get_turf(G)
var/area/gps_area = get_area(G)
var/tracked_gpstag = G.gpstag
if(G.emped == 1)
t += "<BR>[tracked_gpstag]: ERROR"
else
t += "<BR>[tracked_gpstag]: [format_text(gps_area.name)] ([pos.x], [pos.y], [pos.z])"
var/datum/browser/popup = new(user, "GPS", name, 600, 450)
popup.set_content(t)
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
popup.open()
/obj/item/device/gps/Topic(href, href_list)
if(href_list["tag"] )
var/a = input("Please enter desired tag.", name, gpstag) as text
a = copytext(sanitize(a), 1, 20)
if(length(a) != 4)
usr << "\blue The tag must be four letters long!"
return
else
gpstag = a
name = "Global Positioning System ([gpstag])"
return
/obj/item/device/gps/science
icon_state = "gps-s"
gpstag = "SCI0"
/obj/item/device/gps/engineering
icon_state = "gps-e"
gpstag = "ENG0"
+131
View File
@@ -0,0 +1,131 @@
///SCI TELEPAD///
/obj/machinery/telepad
name = "telepad"
desc = "A bluespace telepad used for teleporting objects to and from a location."
icon = 'icons/obj/telescience.dmi'
icon_state = "pad-idle"
anchored = 1
use_power = 1
idle_power_usage = 200
active_power_usage = 5000
/obj/machinery/telepad/New()
..()
/obj/machinery/telepad/Del()
..()
//CARGO TELEPAD//
/obj/machinery/telepad_cargo
name = "cargo telepad"
desc = "A telepad used by the Rapid Crate Sender."
icon = 'icons/obj/telescience.dmi'
icon_state = "pad-idle"
anchored = 1
use_power = 1
idle_power_usage = 20
active_power_usage = 500
var/stage = 0
/obj/machinery/telepad_cargo/New()
..()
/obj/machinery/telepad_cargo/Del()
..()
/obj/machinery/telepad_cargo/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/wrench))
anchored = 0
playsound(src, 'sound/items/Ratchet.ogg', 50, 1)
if(anchored)
anchored = 0
user << "\blue The [src] can now be moved."
else if(!anchored)
anchored = 1
user << "\blue The [src] is now secured."
if(istype(W, /obj/item/weapon/screwdriver))
if(stage == 0)
playsound(src, 'sound/items/Screwdriver.ogg', 50, 1)
user << "\blue You unscrew the telepad's tracking beacon."
stage = 1
else if(stage == 1)
playsound(src, 'sound/items/Screwdriver.ogg', 50, 1)
user << "\blue You screw in the telepad's tracking beacon."
stage = 0
if(istype(W, /obj/item/weapon/weldingtool) && stage == 1)
playsound(src, 'sound/items/Welder.ogg', 50, 1)
user << "\blue You disassemble the telepad."
new /obj/item/stack/sheet/metal(get_turf(src))
new /obj/item/stack/sheet/glass(get_turf(src))
del(src)
///TELEPAD CALLER///
/obj/item/device/telepad_beacon
name = "Telepad Beacon"
desc = "Use to warp in a cargo telepad."
icon = 'icons/obj/radio.dmi'
icon_state = "beacon"
item_state = "signaler"
origin_tech = "bluespace=3"
/obj/item/device/telepad_beacon/attack_self(mob/user as mob)
if(user)
user << "\blue Locked In"
new /obj/machinery/telepad_cargo(user.loc)
playsound(src, 'sound/effects/pop.ogg', 100, 1, 1)
del(src)
return
///HANDHELD TELEPAD USER///
/obj/item/weapon/rcs
name = "rapid-crate-sender (RCS)"
desc = "Use this to send crates and closets to cargo telepads."
icon = 'icons/obj/telescience.dmi'
icon_state = "rcs"
opacity = 0
density = 0
anchored = 0.0
flags = FPRINT | TABLEPASS| CONDUCT
force = 10.0
throwforce = 10.0
throw_speed = 1
throw_range = 5
var/rcharges = 10
var/obj/machinery/pad = null
var/last_charge = 30
var/mode = 0
var/rand_x = 0
var/rand_y = 0
var/emagged = 0
var/teleporting = 0
/obj/item/weapon/rcs/New()
processing_objects.Add(src)
desc = "Use this to send crates and closets to cargo telepads. There are [rcharges] charges left."
/obj/item/weapon/rcs/Del()
processing_objects.Remove(src)
/obj/item/weapon/rcs/process()
if(rcharges > 10)
rcharges = 10
if(last_charge == 0)
rcharges++
desc = "Use this to send crates and closets to cargo telepads. There are [rcharges] charges left."
last_charge = 30
else
last_charge--
/obj/item/weapon/rcs/attack_self(mob/user)
if(emagged)
if(mode == 0)
mode = 1
playsound(src.loc, 'sound/effects/pop.ogg', 50, 0)
user << "\red The telepad locator has become uncalibrated."
else
mode = 0
playsound(src.loc, 'sound/effects/pop.ogg', 50, 0)
user << "\blue You calibrate the telepad locator."
/obj/item/weapon/rcs/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/weapon/card/emag) && emagged == 0)
emagged = 1
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
user << "\red You emag the RCS. Click on it to toggle between modes."
return
+310
View File
@@ -0,0 +1,310 @@
/obj/machinery/computer/telescience
name = "Telepad Control Console"
desc = "Used to teleport objects to and from the telescience telepad."
icon_state = "teleport"
// VARIABLES //
var/teles_left // How many teleports left until it becomes uncalibrated
var/x_off // X offset
var/y_off // Y offset
var/x_co // X coordinate
var/y_co // Y coordinate
var/z_co // Z coordinate
/obj/machinery/computer/telescience/New()
teles_left = rand(8,12)
x_off = rand(-10,10)
y_off = rand(-10,10)
/obj/machinery/computer/telescience/update_icon()
if(stat & BROKEN)
icon_state = "telescib"
else
if(stat & NOPOWER)
src.icon_state = "teleport0"
stat |= NOPOWER
else
icon_state = initial(icon_state)
stat &= ~NOPOWER
/obj/machinery/computer/telescience/attack_paw(mob/user)
usr << "You are too primitive to use this computer."
return
/obj/machinery/computer/telescience/attack_ai(mob/user)
src.attack_hand()
/obj/machinery/computer/telescience/attack_hand(mob/user)
if(..())
return
if(stat & (NOPOWER|BROKEN))
return
var/t = ""
t += "<A href='?src=\ref[src];setx=1'>Set X</A>"
t += "<A href='?src=\ref[src];sety=1'>Set Y</A>"
t += "<A href='?src=\ref[src];setz=1'>Set Z</A>"
t += "<BR><BR>Current set coordinates:"
t += "([x_co], [y_co], [z_co])"
t += "<BR><BR><A href='?src=\ref[src];send=1'>Send</A>"
t += " <A href='?src=\ref[src];receive=1'>Receive</A>"
t += "<BR><BR><A href='?src=\ref[src];recal=1'>Recalibrate</A>"
var/datum/browser/popup = new(user, "telesci", name, 640, 480)
popup.set_content(t)
popup.open()
return
/obj/machinery/computer/telescience/proc/sparks()
for(var/obj/machinery/telepad/E in machines)
var/L = get_turf(E)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, L)
s.start()
/obj/machinery/computer/telescience/proc/telefail()
if(prob(75))
sparks()
for(var/mob/O in hearers(src, null))
O.show_message("\red The telepad weakly fizzles.", 2)
return
if(prob(10))
// Irradiate everyone in telescience!
for(var/obj/machinery/telepad/E in machines)
var/L = get_turf(E)
sparks()
for(var/mob/living/carbon/human/M in viewers(L, null))
M.apply_effect((rand(25, 50)), IRRADIATE, 0)
M << "\red You feel strange."
return
if(prob(1))
// AI CALL SHUTTLE I SAW RUNE, SUPER LOW CHANCE, CAN HARDLY HAPPEN
for(var/mob/living/carbon/O in viewers(src, null))
var/datum/game_mode/cult/temp = new
O.show_message("\red The telepad flashes with a strange light, and you have a sudden surge of allegiance toward the true dark one!", 2)
O.mind.make_Cultist()
temp.grant_runeword(O)
sparks()
return
if(prob(1))
// VIVA LA FUCKING REVOLUTION BITCHES, SUPER LOW CHANCE, CAN HARDLY HAPPEN
for(var/mob/living/carbon/O in viewers(src, null))
O.show_message("\red The telepad flashes with a strange light, and you see all kind of images flash through your mind, of murderous things Nanotrasen has done, and you decide to rebel!", 2)
O.mind.make_Rev()
sparks()
return
if(prob(5))
// damn it a meteor
for(var/mob/living/carbon/O in viewers(src, null))
O.show_message("\red You get a ominous feeling as the teleporter fizzles out.", 2)
spawn_meteors(number = 1)
sparks()
return
if(prob(5))
// The OH SHIT FUCK GOD DAMN IT LYNCH THE SCIENTISTS event.
for(var/mob/living/carbon/O in viewers(src, null))
O.show_message("\red The telepad changes colors rapidly, and opens a portal, and you see what your mind seems to think is the very threads that hold the pattern of the universe together, and a eerie sense of paranoia creeps into you.", 2)
switch(rand(1,3))
if(1)
mini_blob_event()
if(2)
immovablerod()
immovablerod()
immovablerod()
if(3)
spacevine_infestation()
spacevine_infestation()
sparks()
return
if(prob(10))
// HOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONK
for(var/mob/living/carbon/M in hearers(src, null))
M << sound('sound/items/AirHorn.ogg')
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
if(istype(H.l_ear, /obj/item/clothing/ears/earmuffs) || istype(H.r_ear, /obj/item/clothing/ears/earmuffs))
continue
M << "<font color='red' size='7'>HONK</font>"
M.sleeping = 0
M.stuttering += 20
M.ear_deaf += 30
M.Weaken(3)
if(prob(30))
M.Stun(10)
M.Paralyse(4)
else
M.make_jittery(500)
sparks()
return
if(prob(5))
// They did the mash! (They did the monster mash!) The monster mash! (It was a graveyard smash!)
sparks()
for(var/obj/machinery/telepad/E in machines)
var/L = get_turf(E)
var/blocked = list(/mob/living/simple_animal/hostile,
/mob/living/simple_animal/hostile/alien/queen/large,
/mob/living/simple_animal/hostile/retaliate,
/mob/living/simple_animal/hostile/retaliate/clown,
/mob/living/simple_animal/hostile/giant_spider/nurse)
var/list/hostiles = typesof(/mob/living/simple_animal/hostile) - blocked
playsound(L, 'sound/effects/phasein.ogg', 100, 1)
for(var/mob/living/carbon/human/M in viewers(L, null))
flick("e_flash", M.flash)
var/chosen = pick(hostiles)
var/mob/living/simple_animal/hostile/H = new chosen
H.loc = L
return
return
return
/obj/machinery/computer/telescience/proc/dosend()
var/trueX = (x_co + x_off)
var/trueY = (y_co + y_off)
for(var/obj/machinery/telepad/E in machines)
var/L = get_turf(E)
var/target = locate(trueX, trueY, z_co)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, L)
s.start()
flick("pad-beam", E)
usr << "\blue Teleport successful."
var/sparks = get_turf(target)
var/datum/effect/effect/system/spark_spread/y = new /datum/effect/effect/system/spark_spread
y.set_up(5, 1, sparks)
y.start()
for(var/obj/item/OI in L)
do_teleport(OI, target, 0)
for(var/obj/structure/closet/OC in L)
do_teleport(OC, target, 0)
for(var/mob/living/carbon/MO in L)
do_teleport(MO, target, 0)
for(var/mob/living/simple_animal/SA in L)
do_teleport(SA, target, 0)
return
return
/obj/machinery/computer/telescience/proc/doreceive()
var/trueX = (x_co + x_off)
var/trueY = (y_co + y_off)
for(var/obj/machinery/telepad/E in machines)
var/L = get_turf(E)
var/T = locate(trueX, trueY, z_co)
var/G = get_turf(T)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, L)
s.start()
flick("pad-beam", E)
usr << "\blue Teleport successful."
var/sparks = get_turf(T)
var/datum/effect/effect/system/spark_spread/y = new /datum/effect/effect/system/spark_spread
y.set_up(5, 1, sparks)
y.start()
for(var/obj/item/ROI in G)
do_teleport(ROI, E, 0)
for(var/obj/structure/closet/ROC in G)
do_teleport(ROC, E, 0)
for(var/mob/living/carbon/RMO in G)
do_teleport(RMO, E, 0)
for(var/mob/living/simple_animal/RSA in G)
do_teleport(RSA, E, 0)
return
return
/obj/machinery/computer/telescience/proc/telesend()
if(x_co == "")
usr << "\red Error: set coordinates."
return
if(y_co == "")
usr << "\red Error: set coordinates."
return
if(z_co == "")
usr << "\red Error: set coordinates."
return
if(x_co < 1 || x_co > 255)
telefail()
usr << "\red Error: X is less than 11 or greater than 245."
return
if(y_co < 1 || y_co > 255)
telefail()
usr << "\red Error: Y is less than 11 or greater than 245."
return
if(z_co == 2 || z_co < 1 || z_co > 6)
telefail()
usr << "\red Error: Z is less than 1, greater than 6, or equal to 2."
return
if(teles_left > 0)
teles_left -= 1
dosend()
else
dosend()
return
return
/obj/machinery/computer/telescience/proc/telereceive()
// basically the same thing
if(x_co == "")
usr << "\red Error: set coordinates."
return
if(y_co == "")
usr << "\red Error: set coordinates."
return
if(z_co == "")
usr << "\red Error: set coordinates."
return
if(x_co < 1 || x_co > 255)
telefail()
usr << "\red Error: X is less than 11 or greater than 200."
return
if(y_co < 1 || y_co > 255)
telefail()
usr << "\red Error: Y is less than 11 or greater than 200."
return
if(z_co == 2 || z_co < 1 || z_co > 6)
telefail()
usr << "\red Error: Z is less than 1, greater than 6, or equal to 2."
return
if(teles_left > 0)
teles_left -= 1
doreceive()
else
if(prob(35))
doreceive()
else
telefail()
return
return
/obj/machinery/computer/telescience/Topic(href, href_list)
if(..())
return
if(href_list["setx"])
var/a = input("Please input desired X coordinate.", name, x_co) as num
a = copytext(sanitize(a), 1, 20)
x_co = a
x_co = text2num(x_co)
return
if(href_list["sety"])
var/b = input("Please input desired Y coordinate.", name, y_co) as num
b = copytext(sanitize(b), 1, 20)
y_co = b
y_co = text2num(y_co)
return
if(href_list["setz"])
var/c = input("Please input desired Z coordinate.", name, z_co) as num
c = copytext(sanitize(c), 1, 20)
z_co = c
z_co = text2num(z_co)
return
if(href_list["send"])
telesend()
return
if(href_list["receive"])
telereceive()
return
if(href_list["recal"])
teles_left = rand(9,12)
x_off = rand(-10,10)
y_off = rand(-10,10)
for(var/obj/machinery/telepad/E in machines)
var/L = get_turf(E)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, L)
s.start()
usr << "\blue Calibration successful."
return
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

+11195 -11152
View File
File diff suppressed because it is too large Load Diff
+11 -180
View File
@@ -1,190 +1,21 @@
Note: The proc name, source file, src and usr are all from the FIRST of the identical runtimes. Everything else is cropped.
Total unique runtimes: 25
Total runtimes: 767
Total unique runtimes: 2
Total runtimes: 2
** Runtimes **
The following runtime has occured 269 time(s).
runtime error: Cannot read null.viruses
proc name: cure (/datum/disease/proc/cure)
source file: disease.dm,156
The following runtime has occured 1 time(s).
runtime error: type mismatch: the plating (107,70,1) (/turf/simulated/floor/plating) += the plating (108,70,1) (/turf/simulated/floor/plating)
proc name: IsolateContents (/zone/proc/IsolateContents)
source file: ZAS_Zones.dm,747
usr: null
src: Space Retrovirus (/datum/disease/dnaspread)
src: /zone (/zone)
The following runtime has occured 199 time(s).
runtime error: Cannot read null.has_gravity
proc name: throw at (/atom/movable/proc/throw_at)
source file: throwing.dm,194
usr: Reese Marcotte (/mob/living/carbon/human)
src: Reese Marcotte (/mob/living/carbon/human)
The following runtime has occured 165 time(s).
runtime error: Cannot read null.slot_flags
proc name: db click (/mob/living/carbon/human/db_click)
source file: inventory.dm,1083
usr: Puke Chunks (/mob/living/carbon/human)
src: Puke Chunks (/mob/living/carbon/human)
The following runtime has occured 25 time(s).
runtime error: Cannot read null.flags
proc name: relaymove (/obj/effect/dummy/spell_jaunt/relaymove)
The following runtime has occured 24 time(s).
The following runtime has occured 1 time(s).
runtime error: Cannot read null.len
proc name: mergeRecordLists (/proc/mergeRecordLists)
source file: helpers.dm,260
usr: Wintermute (/mob/living/silicon/ai)
src: null
The following runtime has occured 20 time(s).
runtime error: Cannot read null.total_volume
proc name: attackby (/obj/machinery/reagentgrinder/attackby)
source file: Chemistry-Machinery.dm,751
usr: Reese Marcotte (/mob/living/carbon/human)
src: All-In-One Grinder (/obj/machinery/reagentgrinder)
The following runtime has occured 16 time(s).
runtime error: Cannot read null.broadcasting
proc name: radio menu (/mob/living/silicon/robot/proc/radio_menu)
source file: robot.dm,857
usr: Engineering Cyborg -432 (/mob/living/silicon/robot)
src: Engineering Cyborg -432 (/mob/living/silicon/robot)
The following runtime has occured 7 time(s).
runtime error: unexpected stat
proc name: Stat (/mob/living/silicon/robot/Stat)
source file: robot.dm,227
usr: Michigan Slim (/mob/living/carbon/human)
src: Engineering Cyborg -133 (/mob/living/silicon/robot)
The following runtime has occured 7 time(s).
runtime error: Cannot read null.current
proc name: check completion (/datum/objective/download/check_completion)
source file: objective.dm,411
proc name: Rebuild (/zone/proc/Rebuild)
source file: ZAS_Zones.dm,669
usr: null
src: /datum/objective/download (/datum/objective/download)
The following runtime has occured 6 time(s).
runtime error: Cannot create objects of type null.
proc name: Topic (/obj/machinery/computer/rdconsole/Topic)
source file: rdconsole.dm,381
usr: Matthew Hoff (/mob/living/carbon/human)
src: Core R&D Console (/obj/machinery/computer/rdconsole/core)
The following runtime has occured 6 time(s).
runtime error: Cannot read null.fields
proc name: mergeRecordLists (/proc/mergeRecordLists)
source file: helpers.dm,263
usr: Wintermute (/mob/living/silicon/ai)
src: null
The following runtime has occured 3 time(s).
runtime error: undefined variable /client/var/loc
proc name: get turf (/proc/get_turf)
source file: helper_procs.dm,38
usr: the ghost (/mob/dead/observer)
src: null
The following runtime has occured 3 time(s).
runtime error: Cannot read null.nodes
proc name: merge powernets (/datum/powernet/proc/merge_powernets)
source file: power.dm,401
usr: Darin Keppel (/mob/living/carbon/human)
src: /datum/powernet (/datum/powernet)
The following runtime has occured 3 time(s).
runtime error: Cannot read null.reagents
proc name: fire syringe (/obj/item/weapon/gun/syringe/proc/fire_syringe)
The following runtime has occured 2 time(s).
runtime error: undefined proc or verb /obj/machinery/space_heater/attack().
The following runtime has occured 2 time(s).
runtime error: list index out of bounds
proc name: mergeConnectedNetworksOnTurf (/obj/structure/cable/proc/mergeConnectedNetworksOnTurf)
source file: cable.dm,520
usr: Josue Sandford (/mob/living/carbon/human)
src: the power cable (/obj/structure/cable)
The following runtime has occured 2 time(s).
runtime error: Cannot read null.loc
proc name: Life (/mob/living/simple_animal/corgi/Ian/Life)
source file: corgi.dm,304
usr: null
src: Captain Ian (/mob/living/simple_animal/corgi/Ian)
The following runtime has occured 1 time(s).
runtime error: undefined proc or verb /obj/machinery/portable_atmospherics/canister/toxins/attack().
The following runtime has occured 1 time(s).
runtime error: undefined variable /datum/preferences/var/fields
proc name: Topic (/obj/machinery/computer/cloning/Topic)
source file: cloning.dm,370
usr: Logan Graves (/mob/living/carbon/human)
src: Cloning console (/obj/machinery/computer/cloning)
The following runtime has occured 1 time(s).
runtime error: undefined variable /turf/simulated/floor/plating/var/mineral
proc name: attackby (/turf/simulated/wall/attackby)
source file: turf.dm,600
usr: Monte Smail (/mob/living/carbon/human)
src: the plating (176,172,5) (/turf/simulated/floor/plating)
The following runtime has occured 1 time(s).
runtime error: Cannot read null.blood_DNA
proc name: update inv w uniform (/mob/living/carbon/human/update_inv_w_uniform)
source file: update_icons.dm,372
usr: null
src: Chip Harshman (/mob/living/carbon/human)
The following runtime has occured 1 time(s).
runtime error: Cannot execute null.dropped().
proc name: drop l hand (/mob/proc/drop_l_hand)
source file: inventory.dm,104
usr: Jeb Stone (/mob/living/carbon/human)
src: Jeb Stone (/mob/living/carbon/human)
The following runtime has occured 1 time(s).
runtime error: Cannot read null.w_class
proc name: attackby (/obj/item/weapon/storage/attackby)
source file: storage.dm,187
usr: Samuel York (/mob/living/carbon/human)
src: the backpack (/obj/item/weapon/storage/backpack)
The following runtime has occured 1 time(s).
runtime error: Cannot read null.amount
proc name: attackby (/obj/machinery/constructable_frame/machine_frame/attackby)
source file: constructable_frame.dm,27
usr: Quinton Bould (/mob/living/carbon/human)
src: the machine frame (/obj/machinery/constructable_frame/machine_frame)
The following runtime has occured 1 time(s).
runtime error: Cannot modify null.status.
proc name: death (/mob/living/silicon/robot/death)
src: /zone (/zone)