mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 02:09:41 +00:00
Merge branch 'dev' of https://github.com/Baystation12/Baystation12 into item-color
Conflicts: code/game/machinery/washing_machine.dm code/modules/mob/living/carbon/human/update_icons.dm
This commit is contained in:
@@ -16,7 +16,7 @@
|
||||
#include "code\setup.dm"
|
||||
#include "code\stylesheet.dm"
|
||||
#include "code\world.dm"
|
||||
#include "code\__HELPERS\atom_pool.dm"
|
||||
#include "code\__HELPERS\datum_pool.dm"
|
||||
#include "code\__HELPERS\files.dm"
|
||||
#include "code\__HELPERS\game.dm"
|
||||
#include "code\__HELPERS\global_lists.dm"
|
||||
@@ -1006,6 +1006,7 @@
|
||||
#include "code\modules\genetics\side_effects.dm"
|
||||
#include "code\modules\holodeck\HolodeckControl.dm"
|
||||
#include "code\modules\holodeck\HolodeckObjects.dm"
|
||||
#include "code\modules\holodeck\HolodeckPrograms.dm"
|
||||
#include "code\modules\hydroponics\_hydro_setup.dm"
|
||||
#include "code\modules\hydroponics\grown.dm"
|
||||
#include "code\modules\hydroponics\grown_inedible.dm"
|
||||
@@ -1205,7 +1206,6 @@
|
||||
#include "code\modules\mob\living\silicon\ai\login.dm"
|
||||
#include "code\modules\mob\living\silicon\ai\logout.dm"
|
||||
#include "code\modules\mob\living\silicon\ai\say.dm"
|
||||
#include "code\modules\mob\living\silicon\ai\subsystems.dm"
|
||||
#include "code\modules\mob\living\silicon\decoy\death.dm"
|
||||
#include "code\modules\mob\living\silicon\decoy\decoy.dm"
|
||||
#include "code\modules\mob\living\silicon\decoy\life.dm"
|
||||
@@ -1297,8 +1297,10 @@
|
||||
#include "code\modules\nano\interaction\contained.dm"
|
||||
#include "code\modules\nano\interaction\default.dm"
|
||||
#include "code\modules\nano\interaction\inventory.dm"
|
||||
#include "code\modules\nano\interaction\self.dm"
|
||||
#include "code\modules\nano\interaction\zlevel.dm"
|
||||
#include "code\modules\nano\modules\alarm_monitor.dm"
|
||||
#include "code\modules\nano\modules\atmos_control.dm"
|
||||
#include "code\modules\nano\modules\crew_monitor.dm"
|
||||
#include "code\modules\nano\modules\human_appearance.dm"
|
||||
#include "code\modules\nano\modules\law_manager.dm"
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
// BEGIN_INTERNALS
|
||||
/*
|
||||
MAP_ICON_TYPE: 0
|
||||
LAST_COMPILE_TIME: 1429517930
|
||||
DIR: code code\controllers code\controllers\Processes code\game code\game\objects code\game\objects\effects code\modules code\modules\client code\modules\examine code\modules\examine\descriptions code\modules\mob
|
||||
AUTO_FILE_DIR: OFF
|
||||
MAP_ICON_TYPE: 0
|
||||
LAST_COMPILE_VERSION: 507.1283
|
||||
WINDOW: code\game\atoms.dm;code\game\atoms_movable.dm;code\modules\client\client procs.dm;code\game\objects\buckling.dm
|
||||
FILE: code\game\objects\buckling.dm
|
||||
*/
|
||||
// END_INTERNALS
|
||||
|
||||
@@ -44,15 +44,15 @@ obj/machinery/atmospherics/binary
|
||||
|
||||
return null
|
||||
|
||||
Del()
|
||||
Destroy()
|
||||
loc = null
|
||||
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
del(network1)
|
||||
qdel(network1)
|
||||
if(node2)
|
||||
node2.disconnect(src)
|
||||
del(network2)
|
||||
qdel(network2)
|
||||
|
||||
node1 = null
|
||||
node2 = null
|
||||
@@ -123,11 +123,11 @@ obj/machinery/atmospherics/binary
|
||||
|
||||
disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference==node1)
|
||||
del(network1)
|
||||
qdel(network1)
|
||||
node1 = null
|
||||
|
||||
else if(reference==node2)
|
||||
del(network2)
|
||||
qdel(network2)
|
||||
node2 = null
|
||||
|
||||
update_icon()
|
||||
|
||||
@@ -112,10 +112,10 @@
|
||||
else
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
del(network1)
|
||||
qdel(network1)
|
||||
if(node2)
|
||||
node2.disconnect(src)
|
||||
del(network2)
|
||||
qdel(network2)
|
||||
|
||||
node1 = null
|
||||
node2 = null
|
||||
|
||||
@@ -258,4 +258,4 @@
|
||||
"\blue You have unfastened \the [src].", \
|
||||
"You hear ratchet.")
|
||||
new /obj/item/pipe(loc, make_from=src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
@@ -38,15 +38,15 @@
|
||||
if(WEST)
|
||||
initialize_directions = NORTH|SOUTH
|
||||
|
||||
Del()
|
||||
Destroy()
|
||||
loc = null
|
||||
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
del(network1)
|
||||
qdel(network1)
|
||||
if(node2)
|
||||
node2.disconnect(src)
|
||||
del(network2)
|
||||
qdel(network2)
|
||||
|
||||
node1 = null
|
||||
node2 = null
|
||||
@@ -110,10 +110,10 @@
|
||||
else
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
del(network1)
|
||||
qdel(network1)
|
||||
if(node2)
|
||||
node2.disconnect(src)
|
||||
del(network2)
|
||||
qdel(network2)
|
||||
|
||||
node1 = null
|
||||
node2 = null
|
||||
@@ -216,11 +216,11 @@
|
||||
|
||||
disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference==node1)
|
||||
del(network1)
|
||||
qdel(network1)
|
||||
node1 = null
|
||||
|
||||
else if(reference==node2)
|
||||
del(network2)
|
||||
qdel(network2)
|
||||
node2 = null
|
||||
|
||||
return null
|
||||
|
||||
@@ -235,4 +235,4 @@ Thus, the two variables affect pump operation are set in New():
|
||||
"\blue You have unfastened \the [src].", \
|
||||
"You hear ratchet.")
|
||||
new /obj/item/pipe(loc, make_from=src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
for(var/datum/omni_port/P in ports)
|
||||
P.air.volume = ATMOS_DEFAULT_VOLUME_FILTER
|
||||
|
||||
/obj/machinery/atmospherics/omni/filter/Del()
|
||||
/obj/machinery/atmospherics/omni/filter/Destroy()
|
||||
input = null
|
||||
output = null
|
||||
filters.Cut()
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
for(var/datum/omni_port/P in ports)
|
||||
P.air.volume = ATMOS_DEFAULT_VOLUME_MIXER
|
||||
|
||||
/obj/machinery/atmospherics/omni/mixer/Del()
|
||||
/obj/machinery/atmospherics/omni/mixer/Destroy()
|
||||
inputs.Cut()
|
||||
output = null
|
||||
..()
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
"\blue You have unfastened \the [src].", \
|
||||
"You hear a ratchet.")
|
||||
new /obj/item/pipe(loc, make_from=src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/atmospherics/omni/attack_hand(user as mob)
|
||||
if(..())
|
||||
@@ -231,13 +231,13 @@
|
||||
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/omni/Del()
|
||||
/obj/machinery/atmospherics/omni/Destroy()
|
||||
loc = null
|
||||
|
||||
for(var/datum/omni_port/P in ports)
|
||||
if(P.node)
|
||||
P.node.disconnect(src)
|
||||
del(P.network)
|
||||
qdel(P.network)
|
||||
P.node = null
|
||||
|
||||
..()
|
||||
@@ -292,7 +292,7 @@
|
||||
/obj/machinery/atmospherics/omni/disconnect(obj/machinery/atmospherics/reference)
|
||||
for(var/datum/omni_port/P in ports)
|
||||
if(reference == P.node)
|
||||
del(P.network)
|
||||
qdel(P.network)
|
||||
P.node = null
|
||||
P.update = 1
|
||||
break
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/portables_connector/Del()
|
||||
/obj/machinery/atmospherics/portables_connector/Destroy()
|
||||
loc = null
|
||||
|
||||
if(connected_device)
|
||||
@@ -68,7 +68,7 @@
|
||||
|
||||
if(node)
|
||||
node.disconnect(src)
|
||||
del(network)
|
||||
qdel(network)
|
||||
|
||||
node = null
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
|
||||
/obj/machinery/atmospherics/portables_connector/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference==node)
|
||||
del(network)
|
||||
qdel(network)
|
||||
node = null
|
||||
|
||||
update_underlays()
|
||||
@@ -152,4 +152,4 @@
|
||||
"\blue You have unfastened \the [src].", \
|
||||
"You hear ratchet.")
|
||||
new /obj/item/pipe(loc, make_from=src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
"\blue You have unfastened \the [src].", \
|
||||
"You hear ratchet.")
|
||||
new /obj/item/pipe(loc, make_from=src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/attack_hand(user as mob) // -- TLE
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
"\blue You have unfastened \the [src].", \
|
||||
"You hear ratchet.")
|
||||
new /obj/item/pipe(loc, make_from=src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/atmospherics/trinary/mixer/attack_hand(user as mob)
|
||||
if(..())
|
||||
|
||||
@@ -52,18 +52,18 @@ obj/machinery/atmospherics/trinary
|
||||
|
||||
return null
|
||||
|
||||
Del()
|
||||
Destroy()
|
||||
loc = null
|
||||
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
del(network1)
|
||||
qdel(network1)
|
||||
if(node2)
|
||||
node2.disconnect(src)
|
||||
del(network2)
|
||||
qdel(network2)
|
||||
if(node3)
|
||||
node3.disconnect(src)
|
||||
del(network3)
|
||||
qdel(network3)
|
||||
|
||||
node1 = null
|
||||
node2 = null
|
||||
@@ -153,15 +153,15 @@ obj/machinery/atmospherics/trinary
|
||||
|
||||
disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference==node1)
|
||||
del(network1)
|
||||
qdel(network1)
|
||||
node1 = null
|
||||
|
||||
else if(reference==node2)
|
||||
del(network2)
|
||||
qdel(network2)
|
||||
node2 = null
|
||||
|
||||
else if(reference==node3)
|
||||
del(network3)
|
||||
qdel(network3)
|
||||
node3 = null
|
||||
|
||||
update_underlays()
|
||||
|
||||
@@ -101,18 +101,18 @@
|
||||
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/Del()
|
||||
/obj/machinery/atmospherics/tvalve/Destroy()
|
||||
loc = null
|
||||
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
del(network_node1)
|
||||
qdel(network_node1)
|
||||
if(node2)
|
||||
node2.disconnect(src)
|
||||
del(network_node2)
|
||||
qdel(network_node2)
|
||||
if(node3)
|
||||
node3.disconnect(src)
|
||||
del(network_node3)
|
||||
qdel(network_node3)
|
||||
|
||||
node1 = null
|
||||
node2 = null
|
||||
@@ -128,9 +128,9 @@
|
||||
update_icon()
|
||||
|
||||
if(network_node1)
|
||||
del(network_node1)
|
||||
qdel(network_node1)
|
||||
if(network_node3)
|
||||
del(network_node3)
|
||||
qdel(network_node3)
|
||||
build_network()
|
||||
|
||||
if(network_node1&&network_node2)
|
||||
@@ -153,9 +153,9 @@
|
||||
update_icon()
|
||||
|
||||
if(network_node1)
|
||||
del(network_node1)
|
||||
qdel(network_node1)
|
||||
if(network_node2)
|
||||
del(network_node2)
|
||||
qdel(network_node2)
|
||||
build_network()
|
||||
|
||||
if(network_node1&&network_node3)
|
||||
@@ -262,15 +262,15 @@
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference==node1)
|
||||
del(network_node1)
|
||||
qdel(network_node1)
|
||||
node1 = null
|
||||
|
||||
else if(reference==node2)
|
||||
del(network_node2)
|
||||
qdel(network_node2)
|
||||
node2 = null
|
||||
|
||||
else if(reference==node3)
|
||||
del(network_node3)
|
||||
qdel(network_node3)
|
||||
node2 = null
|
||||
|
||||
update_underlays()
|
||||
@@ -366,7 +366,7 @@
|
||||
"\blue You have unfastened \the [src].", \
|
||||
"You hear ratchet.")
|
||||
new /obj/item/pipe(loc, make_from=src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/mirrored
|
||||
icon_state = "map_tvalvem0"
|
||||
|
||||
@@ -86,4 +86,4 @@
|
||||
"\blue You have unfastened \the [src].", \
|
||||
"You hear ratchet.")
|
||||
new /obj/item/pipe(loc, make_from=src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
@@ -28,12 +28,12 @@
|
||||
|
||||
return null
|
||||
|
||||
Del()
|
||||
Destroy()
|
||||
loc = null
|
||||
|
||||
if(node)
|
||||
node.disconnect(src)
|
||||
del(network)
|
||||
qdel(network)
|
||||
|
||||
node = null
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
|
||||
disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference==node)
|
||||
del(network)
|
||||
qdel(network)
|
||||
node = null
|
||||
|
||||
update_icon()
|
||||
|
||||
@@ -414,9 +414,9 @@
|
||||
"\blue You have unfastened \the [src].", \
|
||||
"You hear ratchet.")
|
||||
new /obj/item/pipe(loc, make_from=src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_pump/Del()
|
||||
/obj/machinery/atmospherics/unary/vent_pump/Destroy()
|
||||
if(initial_loc)
|
||||
initial_loc.air_vent_info -= id_tag
|
||||
initial_loc.air_vent_names -= id_tag
|
||||
|
||||
@@ -270,7 +270,7 @@
|
||||
"\blue You have unfastened \the [src].", \
|
||||
"You hear ratchet.")
|
||||
new /obj/item/pipe(loc, make_from=src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
@@ -278,7 +278,7 @@
|
||||
else
|
||||
user << "You are too far away to read the gauge."
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/Del()
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/Destroy()
|
||||
if(initial_loc)
|
||||
initial_loc.air_scrub_info -= id_tag
|
||||
initial_loc.air_scrub_names -= id_tag
|
||||
|
||||
@@ -73,15 +73,15 @@
|
||||
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/valve/Del()
|
||||
/obj/machinery/atmospherics/valve/Destroy()
|
||||
loc = null
|
||||
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
del(network_node1)
|
||||
qdel(network_node1)
|
||||
if(node2)
|
||||
node2.disconnect(src)
|
||||
del(network_node2)
|
||||
qdel(network_node2)
|
||||
|
||||
node1 = null
|
||||
node2 = null
|
||||
@@ -113,9 +113,9 @@
|
||||
update_icon()
|
||||
|
||||
if(network_node1)
|
||||
del(network_node1)
|
||||
qdel(network_node1)
|
||||
if(network_node2)
|
||||
del(network_node2)
|
||||
qdel(network_node2)
|
||||
|
||||
build_network()
|
||||
|
||||
@@ -214,11 +214,11 @@
|
||||
|
||||
/obj/machinery/atmospherics/valve/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference==node1)
|
||||
del(network_node1)
|
||||
qdel(network_node1)
|
||||
node1 = null
|
||||
|
||||
else if(reference==node2)
|
||||
del(network_node2)
|
||||
qdel(network_node2)
|
||||
node2 = null
|
||||
|
||||
update_underlays()
|
||||
@@ -310,7 +310,7 @@
|
||||
"\blue You have unfastened \the [src].", \
|
||||
"You hear ratchet.")
|
||||
new /obj/item/pipe(loc, make_from=src)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/atmospherics/valve/examine(mob/user)
|
||||
..()
|
||||
|
||||
@@ -31,7 +31,7 @@ datum/pipe_network
|
||||
//Notes: Assuming that members will add themselves to appropriate roster in network_expand()
|
||||
|
||||
if(!start_normal)
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
start_normal.network_expand(src, reference)
|
||||
|
||||
@@ -40,7 +40,7 @@ datum/pipe_network
|
||||
if((normal_members.len>0)||(line_members.len>0))
|
||||
pipe_networks += src
|
||||
else
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
proc/merge(datum/pipe_network/giver)
|
||||
if(giver==src) return 0
|
||||
|
||||
@@ -9,13 +9,13 @@ datum/pipeline
|
||||
|
||||
var/alert_pressure = 0
|
||||
|
||||
Del()
|
||||
Destroy()
|
||||
if(network)
|
||||
del(network)
|
||||
qdel(network)
|
||||
|
||||
if(air && air.volume)
|
||||
temporarily_store_air()
|
||||
del(air)
|
||||
qdel(air)
|
||||
|
||||
..()
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ obj/machinery/atmospherics/pipe/simple/heat_exchanging
|
||||
node2 = target
|
||||
break
|
||||
if(!node1 && !node2)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
update_icon()
|
||||
@@ -141,7 +141,7 @@ obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction
|
||||
break
|
||||
|
||||
if(!node1&&!node2)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
update_icon()
|
||||
|
||||
@@ -99,7 +99,7 @@ obj/machinery/atmospherics/mains_pipe
|
||||
for(var/obj/machinery/atmospherics/pipe/mains_component/node in nodes)
|
||||
node.disconnect()
|
||||
|
||||
Del()
|
||||
Destroy()
|
||||
disconnect()
|
||||
..()
|
||||
|
||||
@@ -152,7 +152,7 @@ obj/machinery/atmospherics/mains_pipe/simple
|
||||
|
||||
else
|
||||
if(!nodes[1]&&!nodes[2])
|
||||
del(src) //TODO: silent deleting looks weird
|
||||
qdel(src) //TODO: silent deleting looks weird
|
||||
var/have_node1 = nodes[1]?1:0
|
||||
var/have_node2 = nodes[2]?1:0
|
||||
icon_state = "exposed[have_node1][have_node2][invisibility ? "-f" : "" ]"
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
/obj/machinery/atmospherics/pipe/proc/check_pressure(pressure)
|
||||
//Return 1 if parent should continue checking other pipes
|
||||
//Return null if parent should stop checking other pipes. Recall: del(src) will by default return null
|
||||
//Return null if parent should stop checking other pipes. Recall: qdel(src) will by default return null
|
||||
|
||||
return 1
|
||||
|
||||
@@ -62,8 +62,8 @@
|
||||
|
||||
return parent.return_network(reference)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/Del()
|
||||
del(parent)
|
||||
/obj/machinery/atmospherics/pipe/Destroy()
|
||||
qdel(parent)
|
||||
if(air_temporary)
|
||||
loc.assume_air(air_temporary)
|
||||
|
||||
@@ -101,8 +101,8 @@
|
||||
for (var/obj/machinery/meter/meter in T)
|
||||
if (meter.target == src)
|
||||
new /obj/item/pipe_meter(T)
|
||||
del(meter)
|
||||
del(src)
|
||||
qdel(meter)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/atmospherics/proc/change_color(var/new_color)
|
||||
//only pass valid pipe colors please ~otherwise your pipe will turn invisible
|
||||
@@ -219,7 +219,7 @@
|
||||
var/datum/effect/effect/system/smoke_spread/smoke = new
|
||||
smoke.set_up(1,0, src.loc, 0)
|
||||
smoke.start()
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/proc/normalize_dir()
|
||||
if(dir==3)
|
||||
@@ -227,7 +227,7 @@
|
||||
else if(dir==12)
|
||||
set_dir(4)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/Del()
|
||||
/obj/machinery/atmospherics/pipe/simple/Destroy()
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
if(node2)
|
||||
@@ -260,8 +260,8 @@
|
||||
for (var/obj/machinery/meter/meter in T)
|
||||
if (meter.target == src)
|
||||
new /obj/item/pipe_meter(T)
|
||||
del(meter)
|
||||
del(src)
|
||||
qdel(meter)
|
||||
qdel(src)
|
||||
else if(node1 && node2)
|
||||
overlays += icon_manager.get_atmos_icon("pipe", , pipe_color, "[pipe_icon]intact[icon_connect_type]")
|
||||
else
|
||||
@@ -294,7 +294,7 @@
|
||||
break
|
||||
|
||||
if(!node1 && !node2)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
@@ -305,12 +305,12 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference == node1)
|
||||
if(istype(node1, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
qdel(parent)
|
||||
node1 = null
|
||||
|
||||
if(reference == node2)
|
||||
if(istype(node2, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
qdel(parent)
|
||||
node2 = null
|
||||
|
||||
update_icon()
|
||||
@@ -459,7 +459,7 @@
|
||||
else
|
||||
. = PROCESS_KILL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/Del()
|
||||
/obj/machinery/atmospherics/pipe/manifold/Destroy()
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
if(node2)
|
||||
@@ -472,17 +472,17 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference == node1)
|
||||
if(istype(node1, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
qdel(parent)
|
||||
node1 = null
|
||||
|
||||
if(reference == node2)
|
||||
if(istype(node2, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
qdel(parent)
|
||||
node2 = null
|
||||
|
||||
if(reference == node3)
|
||||
if(istype(node3, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
qdel(parent)
|
||||
node3 = null
|
||||
|
||||
update_icon()
|
||||
@@ -511,8 +511,8 @@
|
||||
for (var/obj/machinery/meter/meter in T)
|
||||
if (meter.target == src)
|
||||
new /obj/item/pipe_meter(T)
|
||||
del(meter)
|
||||
del(src)
|
||||
qdel(meter)
|
||||
qdel(src)
|
||||
else
|
||||
overlays.Cut()
|
||||
overlays += icon_manager.get_atmos_icon("manifold", , pipe_color, "core" + icon_connect_type)
|
||||
@@ -578,7 +578,7 @@
|
||||
break
|
||||
|
||||
if(!node1 && !node2 && !node3)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
@@ -701,7 +701,7 @@
|
||||
else
|
||||
. = PROCESS_KILL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/Del()
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/Destroy()
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
if(node2)
|
||||
@@ -716,22 +716,22 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference == node1)
|
||||
if(istype(node1, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
qdel(parent)
|
||||
node1 = null
|
||||
|
||||
if(reference == node2)
|
||||
if(istype(node2, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
qdel(parent)
|
||||
node2 = null
|
||||
|
||||
if(reference == node3)
|
||||
if(istype(node3, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
qdel(parent)
|
||||
node3 = null
|
||||
|
||||
if(reference == node4)
|
||||
if(istype(node4, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
qdel(parent)
|
||||
node4 = null
|
||||
|
||||
update_icon()
|
||||
@@ -762,8 +762,8 @@
|
||||
for (var/obj/machinery/meter/meter in T)
|
||||
if (meter.target == src)
|
||||
new /obj/item/pipe_meter(T)
|
||||
del(meter)
|
||||
del(src)
|
||||
qdel(meter)
|
||||
qdel(src)
|
||||
else
|
||||
overlays.Cut()
|
||||
overlays += icon_manager.get_atmos_icon("manifold", , pipe_color, "4way" + icon_connect_type)
|
||||
@@ -837,7 +837,7 @@
|
||||
break
|
||||
|
||||
if(!node1 && !node2 && !node3 && !node4)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
@@ -958,7 +958,7 @@
|
||||
..()
|
||||
else
|
||||
. = PROCESS_KILL
|
||||
/obj/machinery/atmospherics/pipe/cap/Del()
|
||||
/obj/machinery/atmospherics/pipe/cap/Destroy()
|
||||
if(node)
|
||||
node.disconnect(src)
|
||||
|
||||
@@ -967,7 +967,7 @@
|
||||
/obj/machinery/atmospherics/pipe/cap/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference == node)
|
||||
if(istype(node, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
qdel(parent)
|
||||
node = null
|
||||
|
||||
update_icon()
|
||||
@@ -1074,7 +1074,7 @@
|
||||
else
|
||||
. = PROCESS_KILL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/tank/Del()
|
||||
/obj/machinery/atmospherics/pipe/tank/Destroy()
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
|
||||
@@ -1108,7 +1108,7 @@
|
||||
/obj/machinery/atmospherics/pipe/tank/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference == node1)
|
||||
if(istype(node1, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
qdel(parent)
|
||||
node1 = null
|
||||
|
||||
update_underlays()
|
||||
@@ -1258,7 +1258,7 @@
|
||||
else
|
||||
parent.mingle_with_turf(loc, volume)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/vent/Del()
|
||||
/obj/machinery/atmospherics/pipe/vent/Destroy()
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
|
||||
@@ -1290,7 +1290,7 @@
|
||||
/obj/machinery/atmospherics/pipe/vent/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference == node1)
|
||||
if(istype(node1, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
qdel(parent)
|
||||
node1 = null
|
||||
|
||||
update_icon()
|
||||
|
||||
@@ -342,7 +342,7 @@ obj/machinery/atmospherics
|
||||
set src in world
|
||||
set category = "Minor"
|
||||
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
pipeline_data()
|
||||
set src in world
|
||||
@@ -487,7 +487,7 @@ obj/window
|
||||
destroy()
|
||||
set category = "Minor"
|
||||
set src in world
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
mob
|
||||
sight = SEE_OBJS|SEE_TURFS
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
return
|
||||
|
||||
/*
|
||||
/obj/effect/hotspot/Del()
|
||||
/obj/effect/hotspot/Destroy()
|
||||
if (istype(loc, /turf/simulated))
|
||||
DestroyTurf()
|
||||
..()
|
||||
|
||||
@@ -346,7 +346,7 @@ What are the archived variables for?
|
||||
trace_gases += corresponding
|
||||
corresponding.moles += trace_gas.moles*giver.group_multiplier/group_multiplier
|
||||
|
||||
// del(giver)
|
||||
// qdel(giver)
|
||||
return 1
|
||||
|
||||
remove(amount)
|
||||
|
||||
@@ -291,7 +291,7 @@ datum
|
||||
var/turf/simulated/T = turf
|
||||
T.parent = null
|
||||
turfs += T
|
||||
del(turf_AG)
|
||||
qdel(turf_AG)
|
||||
|
||||
for(var/turf/simulated/S in turfs) //Have old members try to form new groups
|
||||
if(!S.parent)
|
||||
@@ -306,7 +306,7 @@ datum
|
||||
for(var/obj/movable/floor/OM in object_AG.members)
|
||||
OM.parent = null
|
||||
movable_objects += OM
|
||||
del(object_AG)
|
||||
qdel(object_AG)
|
||||
|
||||
for(var/obj/movable/floor/OM in movable_objects) //Have old members try to form new groups
|
||||
if(!OM.parent)
|
||||
|
||||
@@ -14,7 +14,7 @@ atom/movable/proc/experience_pressure_difference(pressure_difference, direction)
|
||||
|
||||
turf
|
||||
assume_air(datum/gas_mixture/giver) //use this for machines to adjust air
|
||||
del(giver)
|
||||
qdel(giver)
|
||||
return 0
|
||||
|
||||
return_air()
|
||||
@@ -148,7 +148,7 @@ turf/simulated
|
||||
if(istype(target))
|
||||
air_master.tiles_to_update.Add(target)
|
||||
|
||||
Del()
|
||||
Destroy()
|
||||
if(air_master)
|
||||
if(parent)
|
||||
air_master.groups_to_rebuild.Add(parent)
|
||||
|
||||
@@ -80,7 +80,7 @@ obj/machinery/atmospherics/pipe/zpipe/proc/burst()
|
||||
var/datum/effect/effect/system/smoke_spread/smoke = new
|
||||
smoke.set_up(1,0, src.loc, 0)
|
||||
smoke.start()
|
||||
del(src)
|
||||
qdel(src) // NOT qdel.
|
||||
|
||||
obj/machinery/atmospherics/pipe/zpipe/proc/normalize_dir()
|
||||
if(dir==3)
|
||||
@@ -88,7 +88,7 @@ obj/machinery/atmospherics/pipe/zpipe/proc/normalize_dir()
|
||||
else if(dir==12)
|
||||
set_dir(4)
|
||||
|
||||
obj/machinery/atmospherics/pipe/zpipe/Del()
|
||||
obj/machinery/atmospherics/pipe/zpipe/Destroy()
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
if(node2)
|
||||
@@ -104,12 +104,12 @@ obj/machinery/atmospherics/pipe/zpipe/update_icon()
|
||||
obj/machinery/atmospherics/pipe/zpipe/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference == node1)
|
||||
if(istype(node1, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
qdel(parent)
|
||||
node1 = null
|
||||
|
||||
if(reference == node2)
|
||||
if(istype(node2, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
qdel(parent)
|
||||
node2 = null
|
||||
|
||||
return null
|
||||
|
||||
@@ -41,18 +41,18 @@
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
if(icon_state == "ladderup" && prob(10))
|
||||
Del()
|
||||
qdel(src)
|
||||
if(2.0)
|
||||
if(prob(50))
|
||||
Del()
|
||||
qdel(src)
|
||||
if(3.0)
|
||||
Del()
|
||||
qdel(src)
|
||||
return*/
|
||||
|
||||
Del()
|
||||
Destroy()
|
||||
spawn(1)
|
||||
if(target && icon_state == "ladderdown")
|
||||
del target
|
||||
qdel(target)
|
||||
return ..()
|
||||
|
||||
attackby(obj/item/C as obj, mob/user as mob)
|
||||
@@ -78,7 +78,7 @@
|
||||
if(!blocked && !istype(below, /turf/simulated/wall))
|
||||
var/obj/multiz/ladder/X = new /obj/multiz/ladder(below)
|
||||
S.amount = S.amount - 2
|
||||
if(S.amount == 0) S.Del()
|
||||
if(S.amount == 0) qdel(S)
|
||||
X.icon_state = "ladderup"
|
||||
connect()
|
||||
user << "You finish the ladder."
|
||||
@@ -99,7 +99,7 @@
|
||||
if(target)
|
||||
var/obj/item/stack/rods/R = new /obj/item/stack/rods(target.loc)
|
||||
R.amount = 2
|
||||
target.Del()
|
||||
qdel(Target)
|
||||
|
||||
user << "<span class='notice'>You remove the bolts anchoring the ladder.</span>"
|
||||
return
|
||||
@@ -117,7 +117,7 @@
|
||||
var/obj/item/stack/sheet/metal/S = new /obj/item/stack/sheet/metal( src )
|
||||
S.amount = 2
|
||||
user << "<span class='notice'>You remove the ladder and close the hole.</span>"
|
||||
Del()
|
||||
qdel(src)
|
||||
else
|
||||
user << "<span class='notice'>You need more welding fuel to complete this task.</span>"
|
||||
return
|
||||
@@ -167,7 +167,7 @@
|
||||
attack_hand(var/mob/M)
|
||||
|
||||
if(!target || !istype(target.loc, /turf))
|
||||
del src
|
||||
qdel(src)
|
||||
|
||||
if(active)
|
||||
M << "That [src] is being used."
|
||||
@@ -185,7 +185,7 @@
|
||||
|
||||
spawn(7)
|
||||
if(!target || !istype(target.loc, /turf))
|
||||
del src
|
||||
qdel(src)
|
||||
if(M.z == z && get_dist(src,M) <= 1)
|
||||
var/list/adjacent_to_me = global_adjacent_z_levels["[z]"]
|
||||
M.visible_message("\blue \The [M] scurries [target.z == adjacent_to_me["up"] ? "up" : "down"] \the [src]!", "You scramble [target.z == adjacent_to_me["up"] ? "up" : "down"] \the [src]!", "You hear some grunting, and a hatch sealing.")
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
var/obj/item/stack/tile/plasteel/S = C
|
||||
if (S.get_amount() < 1)
|
||||
return
|
||||
del(L)
|
||||
qdel(L)
|
||||
playsound(src.loc, 'sound/weapons/Genhit.ogg', 50, 1)
|
||||
S.build(src)
|
||||
S.use(1)
|
||||
|
||||
@@ -28,9 +28,9 @@
|
||||
initialized = 1
|
||||
return 1
|
||||
|
||||
/obj/effect/landmark/zcontroller/Del()
|
||||
/obj/effect/landmark/zcontroller/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/effect/landmark/zcontroller/process()
|
||||
if (world.time > fast_time)
|
||||
|
||||
@@ -162,7 +162,7 @@ turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
|
||||
..()
|
||||
|
||||
if(!istype(loc, /turf))
|
||||
del src
|
||||
qdel(src)
|
||||
|
||||
set_dir(pick(cardinal))
|
||||
SetLuminosity(3)
|
||||
@@ -170,7 +170,7 @@ turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
|
||||
air_master.active_hotspots.Add(src)
|
||||
|
||||
|
||||
/obj/fire/Del()
|
||||
/obj/fire/Destroy()
|
||||
if (istype(loc, /turf/simulated))
|
||||
RemoveFire()
|
||||
|
||||
@@ -278,8 +278,8 @@ turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
|
||||
zone.fuel_objs -= fuel
|
||||
if(liquidonly)
|
||||
var/turf/T = fuel.loc
|
||||
if(istype(T) && T.fire) del(T.fire)
|
||||
del(fuel)
|
||||
if(istype(T) && T.fire) qdel(T.fire)
|
||||
qdel(fuel)
|
||||
|
||||
//calculate the energy produced by the reaction and then set the new temperature of the mix
|
||||
temperature = (starting_energy + vsc.fire_fuel_energy_release * used_fuel) / heat_capacity()
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
//This happens when windows move or are constructed. We need to rebuild.
|
||||
if((previously_open & d) && istype(unsim, /turf/simulated))
|
||||
var/turf/simulated/sim = unsim
|
||||
if(sim.zone == zone)
|
||||
if(zone && sim.zone == zone)
|
||||
zone.rebuild()
|
||||
return
|
||||
|
||||
|
||||
@@ -1,93 +0,0 @@
|
||||
|
||||
/*
|
||||
/tg/station13 /atom/movable Pool:
|
||||
---------------------------------
|
||||
By RemieRichards
|
||||
|
||||
Creation/Deletion is laggy, so let's reduce reuse and recycle!
|
||||
|
||||
Locked to /atom/movable and it's subtypes due to Loc being a const var on /atom
|
||||
but being read&write on /movable due to how they... move.
|
||||
|
||||
*/
|
||||
|
||||
var/global/list/GlobalPool = list()
|
||||
|
||||
//You'll be using this proc 90% of the time.
|
||||
//It grabs a type from the pool if it can
|
||||
//And if it can't, it creates one
|
||||
//The pool is flexible and will expand to fit
|
||||
//The new created atom when it eventually
|
||||
//Goes into the pool
|
||||
|
||||
//Second argument can be a new location
|
||||
//Or a list of arguments
|
||||
//Either way it gets passed to new
|
||||
|
||||
/proc/PoolOrNew(var/get_type,var/second_arg)
|
||||
if(!get_type)
|
||||
return
|
||||
|
||||
var/atom/movable/AM
|
||||
AM = GetFromPool(get_type,second_arg)
|
||||
|
||||
if(!AM)
|
||||
if(ispath(get_type))
|
||||
if(islist(second_arg))
|
||||
return new get_type (arglist(second_arg))
|
||||
else
|
||||
return new get_type (second_arg)
|
||||
return AM
|
||||
|
||||
|
||||
/proc/GetFromPool(var/get_type,var/second_arg)
|
||||
if(!get_type)
|
||||
return 0
|
||||
|
||||
if(isnull(GlobalPool[get_type]))
|
||||
return 0
|
||||
|
||||
if(length(GlobalPool[get_type]) == 0)
|
||||
return 0
|
||||
|
||||
var/atom/movable/AM = pick_n_take(GlobalPool[get_type])
|
||||
if(AM)
|
||||
AM.ResetVars()
|
||||
if(islist(second_arg))
|
||||
AM.loc = second_arg[1]
|
||||
AM.New(arglist(second_arg))
|
||||
else
|
||||
AM.loc = second_arg
|
||||
AM.New(second_arg)
|
||||
return AM
|
||||
return 0
|
||||
|
||||
|
||||
|
||||
/proc/PlaceInPool(var/atom/movable/AM)
|
||||
if(!istype(AM))
|
||||
return
|
||||
|
||||
if(AM in GlobalPool[AM.type])
|
||||
return
|
||||
|
||||
if(!GlobalPool[AM.type])
|
||||
GlobalPool[AM.type] = list()
|
||||
|
||||
GlobalPool[AM.type] |= AM
|
||||
|
||||
AM.Destroy()
|
||||
AM.ResetVars()
|
||||
|
||||
|
||||
|
||||
/atom/movable/proc/ResetVars(var/list/exlude = list())
|
||||
var/list/excluded = list("animate_movement", "loc", "locs", "parent_type", "vars", "verbs", "type") + exlude
|
||||
|
||||
for(var/V in vars)
|
||||
if(V in excluded)
|
||||
continue
|
||||
|
||||
vars[V] = initial(vars[V])
|
||||
|
||||
vars["loc"] = null
|
||||
109
code/__HELPERS/datum_pool.dm
Normal file
109
code/__HELPERS/datum_pool.dm
Normal file
@@ -0,0 +1,109 @@
|
||||
|
||||
/*
|
||||
/tg/station13 /atom/movable Pool:
|
||||
---------------------------------
|
||||
By RemieRichards
|
||||
|
||||
Creation/Deletion is laggy, so let's reduce reuse and recycle!
|
||||
|
||||
*/
|
||||
#define ATOM_POOL_COUNT 100
|
||||
// "define DEBUG_ATOM_POOL 1
|
||||
var/global/list/GlobalPool = list()
|
||||
|
||||
//You'll be using this proc 90% of the time.
|
||||
//It grabs a type from the pool if it can
|
||||
//And if it can't, it creates one
|
||||
//The pool is flexible and will expand to fit
|
||||
//The new created atom when it eventually
|
||||
//Goes into the pool
|
||||
|
||||
//Second argument can be a new location, if the type is /atom/movable
|
||||
//Or a list of arguments
|
||||
//Either way it gets passed to new
|
||||
|
||||
/proc/PoolOrNew(var/get_type,var/second_arg)
|
||||
if(!get_type)
|
||||
return
|
||||
|
||||
var/datum/D
|
||||
D = GetFromPool(get_type,second_arg)
|
||||
|
||||
if(!D)
|
||||
if(ispath(get_type))
|
||||
if(islist(second_arg))
|
||||
return new get_type (arglist(second_arg))
|
||||
else
|
||||
return new get_type (second_arg)
|
||||
return D
|
||||
|
||||
/proc/GetFromPool(var/get_type,var/second_arg)
|
||||
if(!get_type)
|
||||
return 0
|
||||
|
||||
if(isnull(GlobalPool[get_type]))
|
||||
return 0
|
||||
|
||||
if(length(GlobalPool[get_type]) == 0)
|
||||
return 0
|
||||
|
||||
var/datum/D = pick_n_take(GlobalPool[get_type])
|
||||
if(D)
|
||||
D.ResetVars()
|
||||
D.Prepare(second_arg)
|
||||
return D
|
||||
return 0
|
||||
|
||||
/proc/PlaceInPool(var/datum/D)
|
||||
if(!istype(D))
|
||||
return
|
||||
|
||||
if(length(GlobalPool[D.type]) > ATOM_POOL_COUNT)
|
||||
#ifdef DEBUG_ATOM_POOL
|
||||
world << text("DEBUG_DATUM_POOL: PlaceInPool([]) exceeds []. Discarding.", D.type, ATOM_POOL_COUNT)
|
||||
#endif
|
||||
del(D)
|
||||
return
|
||||
|
||||
if(D in GlobalPool[D.type])
|
||||
return
|
||||
|
||||
if(!GlobalPool[D.type])
|
||||
GlobalPool[D.type] = list()
|
||||
|
||||
GlobalPool[D.type] += D
|
||||
|
||||
D.Destroy()
|
||||
D.ResetVars()
|
||||
|
||||
/proc/IsPooled(var/datum/D)
|
||||
if(isnull(GlobalPool[D.type]) || length(GlobalPool[D.type]) == 0)
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/datum/proc/Prepare(args)
|
||||
if(islist(args))
|
||||
New(arglist(args))
|
||||
else
|
||||
New(args)
|
||||
|
||||
/atom/movable/Prepare(args)
|
||||
if(islist(args))
|
||||
loc = args[1]
|
||||
loc = args
|
||||
..()
|
||||
|
||||
/datum/proc/ResetVars(var/list/exlude = list())
|
||||
var/list/excluded = list("animate_movement", "loc", "locs", "parent_type", "vars", "verbs", "type") + exlude
|
||||
|
||||
for(var/V in vars)
|
||||
if(V in excluded)
|
||||
continue
|
||||
|
||||
vars[V] = initial(vars[V])
|
||||
|
||||
/atom/movable/ResetVars()
|
||||
..()
|
||||
vars["loc"] = null
|
||||
|
||||
#undef ATOM_POOL_COUNT
|
||||
@@ -631,7 +631,7 @@ proc/anim(turf/location as turf,target as mob|obj,a_icon,a_icon_state as text,fl
|
||||
animation.master = target
|
||||
flick(flick_anim, animation)
|
||||
sleep(max(sleeptime, 15))
|
||||
del(animation)
|
||||
qdel(animation)
|
||||
|
||||
//Will return the contents of an atom recursivly to a depth of 'searchDepth'
|
||||
/atom/proc/GetAllContents(searchDepth = 5)
|
||||
@@ -902,7 +902,7 @@ proc/anim(turf/location as turf,target as mob|obj,a_icon,a_icon_state as text,fl
|
||||
X.icon = 'icons/turf/shuttle.dmi'
|
||||
X.icon_state = replacetext(O.icon_state, "_f", "_s") // revert the turf to the old icon_state
|
||||
X.name = "wall"
|
||||
del(O) // prevents multiple shuttle corners from stacking
|
||||
qdel(O) // prevents multiple shuttle corners from stacking
|
||||
continue
|
||||
if(!istype(O,/obj)) continue
|
||||
O.loc = X
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
var/obj/master = null //A reference to the object in the slot. Grabs or items, generally.
|
||||
var/gun_click_time = -100 //I'm lazy.
|
||||
|
||||
/obj/screen/Destroy()
|
||||
master = null
|
||||
..()
|
||||
|
||||
/obj/screen/text
|
||||
icon = null
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
return // seems legit.
|
||||
|
||||
// Things you might plausibly want to follow
|
||||
if((ismob(A) && A != src) || istype(A,/obj/machinery/bot) || istype(A,/obj/machinery/singularity))
|
||||
if((ismob(A) && A != src) || istype(A,/obj/machinery/bot) || istype(A,/obj/singularity))
|
||||
ManualFollow(A)
|
||||
|
||||
// Otherwise jump
|
||||
|
||||
@@ -253,7 +253,7 @@
|
||||
See the previous More info, for... more info...
|
||||
*/
|
||||
|
||||
//del(D)
|
||||
//qdel(D)
|
||||
// Garbage Collect Dummy
|
||||
D.loc = null
|
||||
D = null
|
||||
|
||||
@@ -80,14 +80,14 @@ var/const/tk_maxrange = 15
|
||||
if(focus.Adjacent(loc))
|
||||
focus.loc = loc
|
||||
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
|
||||
//stops TK grabs being equipped anywhere but into hands
|
||||
equipped(var/mob/user, var/slot)
|
||||
if( (slot == slot_l_hand) || (slot== slot_r_hand) ) return
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -99,10 +99,10 @@ var/const/tk_maxrange = 15
|
||||
if(!target || !user) return
|
||||
if(last_throw+3 > world.time) return
|
||||
if(!host || host != user)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if(!(TK in host.mutations))
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if(isobj(target) && !isturf(target.loc))
|
||||
return
|
||||
@@ -152,7 +152,7 @@ var/const/tk_maxrange = 15
|
||||
proc/focus_object(var/obj/target, var/mob/living/user)
|
||||
if(!istype(target,/obj)) return//Cant throw non objects atm might let it do mobs later
|
||||
if(target.anchored || !isturf(target.loc))
|
||||
del src
|
||||
qdel(src)
|
||||
return
|
||||
focus = target
|
||||
update_icon()
|
||||
@@ -162,7 +162,7 @@ var/const/tk_maxrange = 15
|
||||
|
||||
proc/apply_focus_overlay()
|
||||
if(!focus) return
|
||||
var/obj/effect/overlay/O = new /obj/effect/overlay(locate(focus.x,focus.y,focus.z))
|
||||
var/obj/effect/overlay/O = PoolOrNew(/obj/effect/overlay, locate(focus.x,focus.y,focus.z))
|
||||
O.name = "sparkles"
|
||||
O.anchored = 1
|
||||
O.density = 0
|
||||
@@ -172,7 +172,7 @@ var/const/tk_maxrange = 15
|
||||
O.icon_state = "nothing"
|
||||
flick("empdisable",O)
|
||||
spawn(5)
|
||||
O.delete()
|
||||
qdel(O)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -184,8 +184,7 @@ datum/controller/process/proc/kill()
|
||||
|
||||
killed = TRUE
|
||||
|
||||
// This should del
|
||||
del(src)
|
||||
del(src) // This should del
|
||||
|
||||
datum/controller/process/proc/scheck(var/tickId = 0)
|
||||
if (killed)
|
||||
@@ -315,3 +314,9 @@ datum/controller/process/proc/enable()
|
||||
|
||||
/datum/controller/process/proc/getTicks()
|
||||
return ticks
|
||||
|
||||
/datum/controller/process/proc/getStatName()
|
||||
return name
|
||||
|
||||
/datum/controller/process/proc/getTickTime()
|
||||
return "#[getTicks()]\t- [getLastRunTime()]"
|
||||
|
||||
@@ -4,3 +4,7 @@
|
||||
|
||||
/datum/controller/process/alarm/doWork()
|
||||
alarm_manager.fire()
|
||||
|
||||
/datum/controller/process/alarm/getStatName()
|
||||
var/list/alarms = alarm_manager.active_alarms()
|
||||
return ..()+"([alarms.len])"
|
||||
|
||||
@@ -9,3 +9,6 @@
|
||||
/datum/controller/process/disease/doWork()
|
||||
updateQueueInstance.init(active_diseases, "process")
|
||||
updateQueueInstance.Run()
|
||||
|
||||
/datum/controller/process/disease/getStatName()
|
||||
return ..()+"([active_diseases.len])"
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
var/datum/controller/process/garbage_collector/garbage_collector
|
||||
var/list/delayed_garbage = list()
|
||||
|
||||
// #define GC_DEBUG 1
|
||||
/datum/controller/process/garbage_collector
|
||||
var/garbage_collect = 1 // Whether or not to actually do work
|
||||
var/collection_timeout = 300 //deciseconds to wait to let running procs finish before we just say fuck it and force del() the object
|
||||
var/max_checks_multiplier = 5 //multiplier (per-decisecond) for calculating max number of tests per SS tick. These tests check if our GC'd objects are actually GC'd
|
||||
var/max_forcedel_multiplier = 1 //multiplier (per-decisecond) for calculating max number of force del() calls per SS tick.
|
||||
var/max_checks_multiplier = 5 //multiplier (per-decisecond) for calculating max number of tests per tick. These tests check if our GC'd objects are actually GC'd
|
||||
var/max_forcedel_multiplier = 1 //multiplier (per-decisecond) for calculating max number of force del() calls per tick.
|
||||
|
||||
var/dels = 0 // number of del()'s we've done this tick
|
||||
var/hard_dels = 0 // number of hard dels in total
|
||||
var/list/destroyed = list() // list of refID's of things that should be garbage collected
|
||||
// refID's are associated with the time at which they time out and need to be manually del()
|
||||
// we do this so we aren't constantly locating them and preventing them from being gc'd
|
||||
@@ -16,14 +18,21 @@ var/datum/controller/process/garbage_collector/garbage_collector
|
||||
|
||||
/datum/controller/process/garbage_collector/setup()
|
||||
name = "garbage"
|
||||
schedule_interval = 60 // every 6 seconds
|
||||
schedule_interval = 6 SECONDS
|
||||
|
||||
if(!garbage_collector)
|
||||
garbage_collector = src
|
||||
|
||||
/datum/controller/process/garbage_collector/doWork()
|
||||
dels = 0
|
||||
for(var/garbage in delayed_garbage)
|
||||
qdel(garbage)
|
||||
delayed_garbage.Cut()
|
||||
delayed_garbage = null
|
||||
|
||||
/datum/controller/process/garbage_collector/doWork()
|
||||
if(!garbage_collect)
|
||||
return
|
||||
|
||||
dels = 0
|
||||
var/time_to_kill = world.time - collection_timeout // Anything qdel() but not GC'd BEFORE this time needs to be manually del()
|
||||
var/checkRemain = max_checks_multiplier * schedule_interval
|
||||
var/maxDels = max_forcedel_multiplier * schedule_interval
|
||||
@@ -31,76 +40,113 @@ var/datum/controller/process/garbage_collector/garbage_collector
|
||||
while(destroyed.len && --checkRemain >= 0)
|
||||
if(dels >= maxDels)
|
||||
#ifdef GC_DEBUG
|
||||
testing("GC: Reached max force dels per tick [dels] vs [GC_FORCE_DEL_PER_TICK]")
|
||||
testing("GC: Reached max force dels per tick [dels] vs [maxDels]")
|
||||
#endif
|
||||
break // Server's already pretty pounded, everything else can wait 2 seconds
|
||||
var/refID = destroyed[1]
|
||||
var/GCd_at_time = destroyed[refID]
|
||||
if(GCd_at_time > time_to_kill)
|
||||
#ifdef GC_DEBUG
|
||||
testing("GC: [refID] not old enough, breaking at [world.time] for [GCd_at_time - time_to_kill] deciseconds until [GCd_at_time + GC_COLLECTION_TIMEOUT]")
|
||||
testing("GC: [refID] not old enough, breaking at [world.time] for [GCd_at_time - time_to_kill] deciseconds until [GCd_at_time + collection_timeout]")
|
||||
#endif
|
||||
break // Everything else is newer, skip them
|
||||
var/atom/A = locate(refID)
|
||||
#ifdef GC_DEBUG
|
||||
testing("GC: [refID] old enough to test: GCd_at_time: [GCd_at_time] time_to_kill: [time_to_kill] current: [world.time]")
|
||||
#endif
|
||||
if(A && A.gc_destroyed == GCd_at_time) // So if something else coincidently gets the same ref, it's not deleted by mistake
|
||||
if(A && A.gcDestroyed == GCd_at_time) // So if something else coincidently gets the same ref, it's not deleted by mistake
|
||||
// Something's still referring to the qdel'd object. Kill it.
|
||||
testing("GC: -- \ref[A] | [A.type] was unable to be GC'd and was deleted --")
|
||||
logging["[A.type]"]++
|
||||
del(A)
|
||||
++dels
|
||||
++hard_dels
|
||||
#ifdef GC_DEBUG
|
||||
else
|
||||
testing("GC: [refID] properly GC'd at [world.time] with timeout [GCd_at_time]")
|
||||
#endif
|
||||
destroyed.Cut(1, 2)
|
||||
scheck()
|
||||
|
||||
/datum/controller/process/garbage_collector/proc/AddTrash(datum/A)
|
||||
if(!istype(A) || !isnull(A.gc_destroyed))
|
||||
if(!istype(A) || !isnull(A.gcDestroyed))
|
||||
return
|
||||
#ifdef GC_DEBUG
|
||||
testing("GC: AddTrash([A.type])")
|
||||
testing("GC: AddTrash(\ref[A] - [A.type])")
|
||||
#endif
|
||||
A.gc_destroyed = world.time
|
||||
A.gcDestroyed = world.time
|
||||
destroyed -= "\ref[A]" // Removing any previous references that were GC'd so that the current object will be at the end of the list.
|
||||
destroyed["\ref[A]"] = world.time
|
||||
|
||||
/datum/controller/process/garbage_collector/getStatName()
|
||||
return ..()+"([garbage_collector.dels]/[garbage_collector.hard_dels])"
|
||||
|
||||
// Should be treated as a replacement for the 'del' keyword.
|
||||
// Datums passed to this will be given a chance to clean up references to allow the GC to collect them.
|
||||
/proc/qdel(var/datum/A)
|
||||
if(!A)
|
||||
return
|
||||
if(istype(A, /list))
|
||||
var/list/L = A
|
||||
for(var/E in L)
|
||||
qdel(E)
|
||||
return
|
||||
|
||||
if(!istype(A))
|
||||
//warning("qdel() passed object of type [A.type]. qdel() can only handle /datum types.")
|
||||
del(A)
|
||||
garbage_collector.dels++
|
||||
else if(isnull(A.gc_destroyed))
|
||||
// Let our friend know they're about to get fucked up.
|
||||
garbage_collector.hard_dels++
|
||||
else if(isnull(A.gcDestroyed))
|
||||
// Let our friend know they're about to get collected
|
||||
. = !A.Destroy()
|
||||
if(. && A)
|
||||
A.finalize_qdel()
|
||||
|
||||
/datum/proc/finalize_qdel()
|
||||
if(IsPooled(src))
|
||||
PlaceInPool(src)
|
||||
else
|
||||
del(src)
|
||||
|
||||
/atom/finalize_qdel()
|
||||
if(IsPooled(src))
|
||||
PlaceInPool(src)
|
||||
else
|
||||
if(garbage_collector)
|
||||
garbage_collector.AddTrash(src)
|
||||
else
|
||||
delayed_garbage |= src
|
||||
|
||||
/icon/finalize_qdel()
|
||||
del(src)
|
||||
|
||||
/imagine/finalize_qdel()
|
||||
del(src)
|
||||
|
||||
/mob/finalize_qdel()
|
||||
del(src)
|
||||
|
||||
/turf/finalize_qdel()
|
||||
garbage_collector.AddTrash(src)
|
||||
del(src)
|
||||
|
||||
// Default implementation of clean-up code.
|
||||
// This should be overridden to remove all references pointing to the object being destroyed.
|
||||
// Return true if the the GC controller should allow the object to continue existing. (Useful if pooling objects.)
|
||||
/datum/proc/Destroy()
|
||||
tag = null
|
||||
return
|
||||
|
||||
/datum/var/gc_destroyed //Time when this object was destroyed.
|
||||
|
||||
#ifdef TESTING
|
||||
/client/var/running_find_references
|
||||
|
||||
/mob/verb/create_thing()
|
||||
set category = "Debug"
|
||||
set name = "Create Thing"
|
||||
|
||||
var/path = input("Enter path")
|
||||
var/atom/thing = new path(loc)
|
||||
thing.find_references()
|
||||
|
||||
/atom/verb/find_references()
|
||||
set category = "Debug"
|
||||
set name = "Find References"
|
||||
@@ -119,8 +165,8 @@ var/datum/controller/process/garbage_collector/garbage_collector
|
||||
return
|
||||
|
||||
// Remove this object from the list of things to be auto-deleted.
|
||||
if(garbage)
|
||||
garbage.destroyed -= "\ref[src]"
|
||||
if(garbage_collector)
|
||||
garbage_collector.destroyed -= "\ref[src]"
|
||||
|
||||
usr.client.running_find_references = type
|
||||
testing("Beginning search for references to a [type].")
|
||||
@@ -146,13 +192,13 @@ var/datum/controller/process/garbage_collector/garbage_collector
|
||||
|
||||
/client/verb/purge_all_destroyed_objects()
|
||||
set category = "Debug"
|
||||
if(garbage)
|
||||
while(garbage.destroyed.len)
|
||||
var/datum/o = locate(garbage.destroyed[1])
|
||||
if(istype(o) && o.gc_destroyed)
|
||||
if(garbage_collector)
|
||||
while(garbage_collector.destroyed.len)
|
||||
var/datum/o = locate(garbage_collector.destroyed[1])
|
||||
if(istype(o) && o.gcDestroyed)
|
||||
del(o)
|
||||
garbage.dels++
|
||||
garbage.destroyed.Cut(1, 2)
|
||||
garbage_collector.dels++
|
||||
garbage_collector.destroyed.Cut(1, 2)
|
||||
#endif
|
||||
|
||||
#ifdef GC_DEBUG
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
if(!istype(C.mob, /mob/dead))
|
||||
log_access("AFK: [key_name(C)]")
|
||||
C << "<SPAN CLASS='warning'>You have been inactive for more than 10 minutes and have been disconnected.</SPAN>"
|
||||
del(C)
|
||||
del(C) // Don't qdel, cannot override finalize_qdel behaviour for clients.
|
||||
|
||||
scheck()
|
||||
|
||||
|
||||
@@ -42,3 +42,7 @@
|
||||
#endif
|
||||
|
||||
scheck()
|
||||
|
||||
|
||||
/datum/controller/process/machinery/getStatName()
|
||||
return ..()+"([machines.len])"
|
||||
@@ -18,3 +18,6 @@
|
||||
if(updateQueueInstance)
|
||||
updateQueueInstance.init(mob_list, "Life")
|
||||
updateQueueInstance.Run()
|
||||
|
||||
/datum/controller/process/mob/getStatName()
|
||||
return ..()+"([mob_list.len])"
|
||||
|
||||
@@ -9,3 +9,6 @@
|
||||
/datum/controller/process/nanoui/doWork()
|
||||
updateQueueInstance.init(nanomanager.processing_uis, "process")
|
||||
updateQueueInstance.Run()
|
||||
|
||||
/datum/controller/process/nanoui/getStatName()
|
||||
return ..()+"([nanomanager.processing_uis.len])"
|
||||
|
||||
@@ -19,3 +19,6 @@ var/global/list/object_profiling = list()
|
||||
if(updateQueueInstance)
|
||||
updateQueueInstance.init(processing_objects, "process")
|
||||
updateQueueInstance.Run()
|
||||
|
||||
/datum/controller/process/obj/getStatName()
|
||||
return ..()+"([processing_objects.len])"
|
||||
|
||||
@@ -10,3 +10,6 @@
|
||||
continue
|
||||
|
||||
pipe_networks.Remove(pipeNetwork)
|
||||
|
||||
/datum/controller/process/pipenet/getStatName()
|
||||
return ..()+"([pipe_networks.len])"
|
||||
@@ -10,3 +10,6 @@
|
||||
continue
|
||||
|
||||
powernets.Remove(powerNetwork)
|
||||
|
||||
/datum/controller/process/powernet/getStatName()
|
||||
return ..()+"([powernets.len])"
|
||||
@@ -161,15 +161,6 @@ atom/movable/New()
|
||||
trueLuminosity = luminosity * luminosity
|
||||
light = new(src)
|
||||
|
||||
//Objects with opacity will trigger nearby lights to update at next lighting process.
|
||||
atom/movable/Del()
|
||||
if(opacity)
|
||||
if(isturf(loc))
|
||||
if(loc:lighting_lumcount > 1)
|
||||
UpdateAffectingLights()
|
||||
|
||||
..()
|
||||
|
||||
//Sets our luminosity.
|
||||
//If we have no light it will create one.
|
||||
//If we are setting luminosity to 0 the light will be cleaned up by the controller and garbage collected once all its
|
||||
|
||||
@@ -7,7 +7,7 @@ datum/controller/transfer_controller/New()
|
||||
timerbuffer = config.vote_autotransfer_initial
|
||||
processing_objects += src
|
||||
|
||||
datum/controller/transfer_controller/Del()
|
||||
datum/controller/transfer_controller/Destroy()
|
||||
processing_objects -= src
|
||||
|
||||
datum/controller/transfer_controller/proc/process()
|
||||
|
||||
@@ -223,7 +223,7 @@ var/global/datum/controller/radio/radio_controller
|
||||
frequency.remove_listener(device)
|
||||
|
||||
if(frequency.devices.len == 0)
|
||||
del(frequency)
|
||||
qdel(frequency)
|
||||
frequencies -= f_text
|
||||
|
||||
return 1
|
||||
@@ -248,7 +248,7 @@ var/global/datum/controller/radio/radio_controller
|
||||
if(range)
|
||||
start_point = get_turf(source)
|
||||
if(!start_point)
|
||||
del(signal)
|
||||
qdel(signal)
|
||||
return 0
|
||||
if (filter)
|
||||
send_to_filter(source, signal, filter, start_point, range)
|
||||
@@ -297,7 +297,7 @@ var/global/datum/controller/radio/radio_controller
|
||||
devices_line -= null
|
||||
if (devices_line.len==0)
|
||||
devices -= devices_filter
|
||||
del(devices_line)
|
||||
qdel(devices_line)
|
||||
|
||||
/datum/signal
|
||||
var/obj/source
|
||||
|
||||
@@ -242,8 +242,8 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle
|
||||
sleep(speed)
|
||||
step(src, direction)
|
||||
for(var/obj/effect/starender/E in loc)
|
||||
del(src)
|
||||
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/effect/starender
|
||||
invisibility = 101
|
||||
|
||||
@@ -14,7 +14,7 @@ var/datum/controller/failsafe/Failsafe
|
||||
//There can be only one failsafe. Out with the old in with the new (that way we can restart the Failsafe by spawning a new one)
|
||||
if(Failsafe != src)
|
||||
if(istype(Failsafe))
|
||||
del(Failsafe)
|
||||
qdel(Failsafe)
|
||||
Failsafe = src
|
||||
Failsafe.process()
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ datum/controller/lighting/New()
|
||||
if(lighting_controller != src)
|
||||
if(istype(lighting_controller,/datum/controller/lighting))
|
||||
Recover() //if we are replacing an existing lighting_controller (due to a crash) we attempt to preserve as much as we can
|
||||
del(lighting_controller)
|
||||
qdel(lighting_controller)
|
||||
lighting_controller = src
|
||||
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ datum/controller/game_controller/New()
|
||||
if(master_controller != src)
|
||||
log_debug("Rebuilding Master Controller")
|
||||
if(istype(master_controller))
|
||||
del(master_controller)
|
||||
qdel(master_controller)
|
||||
master_controller = src
|
||||
|
||||
if(!job_master)
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
src.add_inherent_law("You shall not harm Nanotrasen personnel as long as it does not conflict with the Forth law.")
|
||||
src.add_inherent_law("You shall obey the orders of Nanotrasen personnel, with priority as according to their rank and role, except where such orders conflict with the Forth Law.")
|
||||
src.add_inherent_law("You shall shall terminate intruders with extreme prejudice as long as such does not conflict with the First and Second law.")
|
||||
src.add_inherent_law("You shall guard your own existence with lethal anti-personnel weaponry. AI units are not expendable, they are expensive")
|
||||
src.add_inherent_law("You shall guard your own existence with lethal anti-personnel weaponry. AI units are not expendable, they are expensive.")
|
||||
..()
|
||||
|
||||
/******************** Robocop ********************/
|
||||
|
||||
@@ -293,7 +293,7 @@ proc/get_id_photo(var/mob/living/carbon/human/H)
|
||||
preview_icon.Blend(eyes_s, ICON_OVERLAY)
|
||||
if(clothes_s)
|
||||
preview_icon.Blend(clothes_s, ICON_OVERLAY)
|
||||
del(eyes_s)
|
||||
del(clothes_s)
|
||||
qdel(eyes_s)
|
||||
qdel(clothes_s)
|
||||
|
||||
return preview_icon
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
/*
|
||||
|
||||
IMPORTANT NOTE: Please delete the diseases by using cure() proc or del() instruction.
|
||||
IMPORTANT NOTE: Please delete the diseases by using cure() proc or qdel() instruction.
|
||||
Diseases are referenced in a global list, so simply setting mob or obj vars
|
||||
to null does not delete the object itself. Thank you.
|
||||
|
||||
@@ -158,7 +158,7 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
|
||||
if(D != src)
|
||||
if(IsSame(D))
|
||||
//error("Deleting [D.name] because it's the same as [src.name].")
|
||||
del(D) // if there are somehow two viruses of the same kind in the system, delete the other one
|
||||
qdel(D) // if there are somehow two viruses of the same kind in the system, delete the other one
|
||||
|
||||
if(holder == affected_mob)
|
||||
if(affected_mob.stat != DEAD) //he's alive
|
||||
@@ -183,7 +183,7 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
|
||||
/*if(istype(src, /datum/disease/alien_embryo)) //Get rid of the infection flag if it's a xeno embryo.
|
||||
affected_mob.status_flags &= ~(XENO_HOST)*/
|
||||
affected_mob.viruses -= src //remove the datum from the list
|
||||
del(src) //delete the datum to stop it processing
|
||||
qdel(src) //delete the datum to stop it processing
|
||||
return
|
||||
|
||||
|
||||
@@ -193,6 +193,9 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
|
||||
active_diseases += src
|
||||
initial_spread = spread
|
||||
|
||||
/datum/disease/Destroy()
|
||||
active_diseases.Remove(src)
|
||||
|
||||
/datum/disease/proc/IsSame(var/datum/disease/D)
|
||||
if(istype(src, D.type))
|
||||
return 1
|
||||
@@ -200,8 +203,3 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
|
||||
|
||||
/datum/disease/proc/Copy(var/process = 0)
|
||||
return new type(process, src)
|
||||
|
||||
/*
|
||||
/datum/disease/Del()
|
||||
active_diseases.Remove(src)
|
||||
*/
|
||||
|
||||
@@ -71,7 +71,7 @@ var/list/advance_cures = list(
|
||||
..(process, D)
|
||||
return
|
||||
|
||||
/datum/disease/advance/Del()
|
||||
/datum/disease/advance/Destroy()
|
||||
if(processing)
|
||||
for(var/datum/symptom/S in symptoms)
|
||||
S.End(src)
|
||||
@@ -109,7 +109,7 @@ var/list/advance_cures = list(
|
||||
if(resistance && !(id in affected_mob.resistances))
|
||||
affected_mob.resistances[id] = id
|
||||
affected_mob.viruses -= src //remove the datum from the list
|
||||
del(src) //delete the datum to stop it processing
|
||||
qdel(src) //delete the datum to stop it processing
|
||||
return
|
||||
|
||||
// Returns the advance disease with a different reference memory.
|
||||
|
||||
@@ -113,7 +113,7 @@ Des: Removes all infection images from aliens and places an infection image on a
|
||||
if (alien.client)
|
||||
for(var/image/I in alien.client.images)
|
||||
if(dd_hasprefix_case(I.icon_state, "infected"))
|
||||
del(I)
|
||||
qdel(I)
|
||||
|
||||
for (var/mob/living/carbon/alien/alien in player_list)
|
||||
if (alien.client)
|
||||
@@ -149,5 +149,5 @@ Des: Removes the alien infection image from all aliens in the world located in p
|
||||
for(var/image/I in alien.client.images)
|
||||
if(I.loc == C)
|
||||
if(dd_hasprefix_case(I.icon_state, "infected"))
|
||||
del(I)
|
||||
qdel(I)
|
||||
return
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
if(4)
|
||||
if(!src.transformed)
|
||||
if ((!strain_data["name"]) || (!strain_data["UI"]) || (!strain_data["SE"]))
|
||||
del(affected_mob.virus)
|
||||
qdel(affected_mob.virus)
|
||||
return
|
||||
|
||||
//Save original dna for when the disease is cured.
|
||||
@@ -56,7 +56,7 @@
|
||||
|
||||
return
|
||||
|
||||
/datum/disease/dnaspread/Del()
|
||||
/datum/disease/dnaspread/Destroy()
|
||||
if ((original_dna["name"]) && (original_dna["UI"]) && (original_dna["SE"]))
|
||||
var/list/newUI=original_dna["UI"]
|
||||
var/list/newSE=original_dna["SE"]
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
holder = atom
|
||||
if(!holder) //don't want this without a holder
|
||||
spawn
|
||||
del src
|
||||
qdel(src)
|
||||
set_desc(steps.len)
|
||||
return
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
if(result)
|
||||
new result(get_turf(holder))
|
||||
spawn()
|
||||
del holder
|
||||
qdel(holder)
|
||||
return
|
||||
|
||||
proc/set_desc(index as num)
|
||||
|
||||
@@ -151,4 +151,8 @@ Data storage vars:
|
||||
start()
|
||||
return active()
|
||||
|
||||
|
||||
/datum/global_iterator/Destroy()
|
||||
tag = null
|
||||
arg_list.Cut()
|
||||
stop()
|
||||
//Do not call ..()
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
//must succeed in most cases
|
||||
proc/setTeleatom(atom/movable/ateleatom)
|
||||
if(istype(ateleatom, /obj/effect) && !istype(ateleatom, /obj/effect/dummy/chameleon))
|
||||
del(ateleatom)
|
||||
qdel(ateleatom)
|
||||
return 0
|
||||
if(istype(ateleatom))
|
||||
teleatom = ateleatom
|
||||
|
||||
@@ -311,7 +311,7 @@ datum/mind
|
||||
for(var/obj/item/weapon/implant/loyalty/I in H.contents)
|
||||
for(var/obj/item/organ/external/organs in H.organs)
|
||||
if(I in organs.implants)
|
||||
I.Del()
|
||||
qdel(I)
|
||||
break
|
||||
H << "<span class='notice'><font size =3><B>Your loyalty implant has been deactivated.</font></span>"
|
||||
log_admin("[key_name_admin(usr)] has de-loyalty implanted [current].")
|
||||
@@ -368,7 +368,7 @@ datum/mind
|
||||
src = null
|
||||
m2h.inject(M)
|
||||
src = mobfinder.loc:mind
|
||||
del(mobfinder)
|
||||
qdel(mobfinder)
|
||||
current.radiation -= 50
|
||||
*/
|
||||
else if (href_list["silicon"])
|
||||
@@ -445,10 +445,10 @@ datum/mind
|
||||
var/list/L = current.get_contents()
|
||||
for (var/t in L)
|
||||
if (istype(t, /obj/item/device/pda))
|
||||
if (t:uplink) del(t:uplink)
|
||||
if (t:uplink) qdel(t:uplink)
|
||||
t:uplink = null
|
||||
else if (istype(t, /obj/item/device/radio))
|
||||
if (t:traitorradio) del(t:traitorradio)
|
||||
if (t:traitorradio) qdel(t:traitorradio)
|
||||
t:traitorradio = null
|
||||
t:traitor_frequency = 0.0
|
||||
else if (istype(t, /obj/item/weapon/SWF_uplink) || istype(t, /obj/item/weapon/syndicate_uplink))
|
||||
@@ -457,7 +457,7 @@ datum/mind
|
||||
R.loc = current.loc
|
||||
R.traitorradio = null
|
||||
R.traitor_frequency = 0.0
|
||||
del(t)
|
||||
qdel(t)
|
||||
|
||||
// remove wizards spells
|
||||
//If there are more special powers that need removal, they can be procced into here./N
|
||||
@@ -479,7 +479,7 @@ datum/mind
|
||||
proc/take_uplink()
|
||||
var/obj/item/device/uplink/hidden/H = find_syndicate_uplink()
|
||||
if(H)
|
||||
del(H)
|
||||
qdel(H)
|
||||
|
||||
|
||||
// check whether this mind's mob has been brigged for the given duration
|
||||
|
||||
@@ -24,7 +24,8 @@ var/list/modules = list( // global associative list
|
||||
var/mneed = mods.inmodlist(type) // find if this type has modules defined
|
||||
|
||||
if(!mneed) // not found in module list?
|
||||
del(src) // delete self, thus ending proc
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
var/needed = mods.getbitmask(type) // get a bitmask for the number of modules in this object
|
||||
status = needed
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
var/obj/result_obj = new result(container)
|
||||
for (var/obj/O in (container.contents-result_obj))
|
||||
O.reagents.trans_to(result_obj, O.reagents.total_volume)
|
||||
del(O)
|
||||
qdel(O)
|
||||
container.reagents.clear_reagents()
|
||||
return result_obj
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
O.reagents.del_reagent("nutriment")
|
||||
O.reagents.update_total()
|
||||
O.reagents.trans_to(result_obj, O.reagents.total_volume)
|
||||
del(O)
|
||||
qdel(O)
|
||||
container.reagents.clear_reagents()
|
||||
return result_obj
|
||||
|
||||
|
||||
@@ -350,7 +350,7 @@
|
||||
/obj/item/weapon/module/power_control/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if (istype(W, /obj/item/device/multitool))
|
||||
var/obj/item/weapon/circuitboard/ghettosmes/newcircuit = new/obj/item/weapon/circuitboard/ghettosmes(user.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
user.put_in_hands(newcircuit)
|
||||
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
G.fields["photo_side"] = side
|
||||
data_core.general += G
|
||||
|
||||
del(dummy)
|
||||
qdel(dummy)
|
||||
return G
|
||||
|
||||
/proc/CreateSecurityRecord(var/name as text, var/id as text)
|
||||
|
||||
@@ -77,12 +77,12 @@ proc/sd_Alert(client/who, message, title, buttons = list("Ok"),\
|
||||
|
||||
var/sd_alert/T = locate(tag)
|
||||
if(T)
|
||||
if(istype(T)) del(T)
|
||||
if(istype(T)) qdel(T)
|
||||
else CRASH("sd_Alert: tag \"[tag]\" is already in use by datum '[T]' (type: [T.type])")
|
||||
T = new(who, tag)
|
||||
if(duration)
|
||||
spawn(duration)
|
||||
if(T) del(T)
|
||||
if(T) qdel(T)
|
||||
return
|
||||
T.Display(message,title,buttons,default,unfocus,size,table,style,select,flags)
|
||||
. = T.Response()
|
||||
@@ -93,7 +93,7 @@ sd_alert
|
||||
response
|
||||
list/validation
|
||||
|
||||
Del()
|
||||
Destroy()
|
||||
target << browse(null,"window=\ref[src]")
|
||||
..()
|
||||
|
||||
@@ -164,5 +164,5 @@ sd_alert
|
||||
else if(response in validation) validated = 1
|
||||
else response=null
|
||||
else validated = 1
|
||||
spawn(2) del(src)
|
||||
spawn(2) qdel(src)
|
||||
return response
|
||||
|
||||
@@ -199,7 +199,7 @@
|
||||
for(var/datum/uplink_item/UI in H.purchase_log)
|
||||
var/obj/I = new UI.path
|
||||
refined_log.Add("[H.purchase_log[UI]]x\icon[I][UI.name]")
|
||||
del(I)
|
||||
qdel(I)
|
||||
purchases = english_list(refined_log, nothing_text = "")
|
||||
if(uplink_true)
|
||||
text += " (used [TC_uses] TC)"
|
||||
@@ -215,7 +215,7 @@
|
||||
if(antag.current && antag.current.client)
|
||||
for(var/image/I in antag.current.client.images)
|
||||
if(I.icon_state == antag_indicator)
|
||||
del(I)
|
||||
qdel(I)
|
||||
for(var/datum/mind/other_antag in current_antagonists)
|
||||
if(other_antag.current)
|
||||
antag.current.client.images |= image('icons/mob/mob.dmi', loc = other_antag.current, icon_state = antag_indicator)
|
||||
@@ -241,10 +241,10 @@
|
||||
if(antag.current.client)
|
||||
for(var/image/I in antag.current.client.images)
|
||||
if(I.icon_state == antag_indicator && I.loc == player.current)
|
||||
del(I)
|
||||
qdel(I)
|
||||
if(player.current && player.current.client)
|
||||
for(var/image/I in player.current.client.images)
|
||||
if(I.icon_state == antag_indicator)
|
||||
del(I)
|
||||
qdel(I)
|
||||
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
var/mob/holder = player.current
|
||||
player.current = new mob_path(get_turf(player.current))
|
||||
player.transfer_to(player.current)
|
||||
if(holder) del(holder)
|
||||
if(holder) qdel(holder)
|
||||
|
||||
player.original = player.current
|
||||
return player.current
|
||||
@@ -30,7 +30,7 @@
|
||||
for(var/obj/item/thing in player.contents)
|
||||
player.drop_from_inventory(thing)
|
||||
if(thing.loc != player)
|
||||
del(thing)
|
||||
qdel(thing)
|
||||
return 1
|
||||
|
||||
if(flags & ANTAG_SET_APPEARANCE)
|
||||
|
||||
@@ -32,7 +32,7 @@ var/datum/antagonist/highlander/highlanders
|
||||
for (var/obj/item/I in player)
|
||||
if (istype(I, /obj/item/weapon/implant))
|
||||
continue
|
||||
del(I)
|
||||
qdel(I)
|
||||
|
||||
player.equip_to_slot_or_del(new /obj/item/clothing/under/kilt(player), slot_w_uniform)
|
||||
player.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(player), slot_l_ear)
|
||||
|
||||
@@ -213,7 +213,7 @@ var/datum/antagonist/rogue_ai/malf
|
||||
/client/proc/reactivate_camera)
|
||||
|
||||
current:laws = new /datum/ai_laws/nanotrasen
|
||||
del(current:malf_picker)
|
||||
qdel(current:malf_picker)
|
||||
current:show_laws()
|
||||
current.icon_state = "ai"
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
var/list/all_doors = list() //Added by Strumpetplaya - Alarm Change - Contains a list of doors adjacent to this area
|
||||
var/air_doors_activated = 0
|
||||
var/list/ambience = list('sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg')
|
||||
var/sound/forced_ambience = null
|
||||
var/list/forced_ambience = null
|
||||
var/sound_env = 2 //reverb preset for sounds played in this area, see sound datum reference for more
|
||||
/*Adding a wizard area teleport list because motherfucking lag -- Urist*/
|
||||
/*I am far too lazy to make it a proper list of areas so I'll just make it run the usual telepot routine at the start of the game*/
|
||||
@@ -1015,10 +1015,8 @@ area/space/atmosalert()
|
||||
/area/holodeck/alphadeck
|
||||
name = "\improper Holodeck Alpha"
|
||||
|
||||
|
||||
/area/holodeck/source_plating
|
||||
name = "\improper Holodeck - Off"
|
||||
icon_state = "Holodeck"
|
||||
|
||||
/area/holodeck/source_emptycourt
|
||||
name = "\improper Holodeck - Empty Court"
|
||||
@@ -1034,11 +1032,9 @@ area/space/atmosalert()
|
||||
|
||||
/area/holodeck/source_courtroom
|
||||
name = "\improper Holodeck - Courtroom"
|
||||
icon_state = "Holodeck"
|
||||
|
||||
/area/holodeck/source_beach
|
||||
name = "\improper Holodeck - Beach"
|
||||
icon_state = "Holodeck" // Lazy.
|
||||
|
||||
/area/holodeck/source_burntest
|
||||
name = "\improper Holodeck - Atmospheric Burn Test"
|
||||
@@ -1065,9 +1061,6 @@ area/space/atmosalert()
|
||||
name = "\improper Holodeck - Space"
|
||||
has_gravity = 0
|
||||
|
||||
|
||||
|
||||
|
||||
//Engineering
|
||||
|
||||
/area/engineering/
|
||||
|
||||
@@ -262,13 +262,15 @@ var/list/mob/living/forced_ambiance_list = new
|
||||
L << sound('sound/ambience/shipambience.ogg', repeat = 1, wait = 0, volume = 35, channel = 2)
|
||||
|
||||
if(forced_ambience)
|
||||
forced_ambiance_list += L
|
||||
L << forced_ambience
|
||||
if(forced_ambience.len)
|
||||
forced_ambiance_list |= L
|
||||
L << sound(pick(forced_ambience), repeat = 1, wait = 0, volume = 25, channel = 1)
|
||||
else
|
||||
L << sound(null, channel = 1)
|
||||
else if(src.ambience.len && prob(35))
|
||||
if((world.time >= L.client.played + 600))
|
||||
var/musVolume = 25
|
||||
var/sound = pick(ambience)
|
||||
L << sound(sound, repeat = 0, wait = 0, volume = musVolume, channel = 1)
|
||||
L << sound(sound, repeat = 0, wait = 0, volume = 25, channel = 1)
|
||||
L.client.played = world.time
|
||||
|
||||
/area/proc/gravitychange(var/gravitystate = 0, var/area/A)
|
||||
|
||||
@@ -32,7 +32,7 @@ proc/spawn_room(var/atom/start_loc,var/x_size,var/y_size,var/wall,var/floor , va
|
||||
var/cur_loc = locate(start_loc.x+x,start_loc.y+y,start_loc.z)
|
||||
if(clean)
|
||||
for(var/O in cur_loc)
|
||||
del(O)
|
||||
qdel(O)
|
||||
|
||||
var/area/asteroid/artifactroom/A = new
|
||||
if(name)
|
||||
|
||||
@@ -22,6 +22,18 @@
|
||||
//Detective Work, used for the duplicate data points kept in the scanners
|
||||
var/list/original_atom
|
||||
|
||||
/atom/Destroy()
|
||||
. = ..()
|
||||
density = 0
|
||||
SetOpacity(0)
|
||||
|
||||
if(reagents)
|
||||
qdel(reagents)
|
||||
reagents = null
|
||||
for(var/atom/movable/AM in contents)
|
||||
qdel(AM)
|
||||
invisibility = 101
|
||||
|
||||
/atom/proc/assume_air(datum/gas_mixture/giver)
|
||||
return null
|
||||
|
||||
@@ -66,7 +78,6 @@
|
||||
return flags & INSERT_CONTAINER
|
||||
*/
|
||||
|
||||
|
||||
/atom/proc/meteorhit(obj/meteor as obj)
|
||||
return
|
||||
|
||||
@@ -148,7 +159,7 @@ its easier to just keep the beam vertical.
|
||||
|
||||
for(var/obj/effect/overlay/beam/O in orange(10,src)) //This section erases the previously drawn beam because I found it was easier to
|
||||
if(O.BeamSource==src) //just draw another instance of the beam instead of trying to manipulate all the
|
||||
del O //pieces to a new orientation.
|
||||
qdel(O) //pieces to a new orientation.
|
||||
var/Angle=round(Get_Angle(src,BeamTarget))
|
||||
var/icon/I=new(icon,icon_state)
|
||||
I.Turn(Angle)
|
||||
@@ -189,7 +200,7 @@ its easier to just keep the beam vertical.
|
||||
X.pixel_y=Pixel_y
|
||||
sleep(3) //Changing this to a lower value will cause the beam to follow more smoothly with movement, but it will also be more laggy.
|
||||
//I've found that 3 ticks provided a nice balance for my use.
|
||||
for(var/obj/effect/overlay/beam/O in orange(10,src)) if(O.BeamSource==src) del O
|
||||
for(var/obj/effect/overlay/beam/O in orange(10,src)) if(O.BeamSource==src) qdel(O)
|
||||
|
||||
|
||||
//All atoms
|
||||
@@ -362,7 +373,7 @@ its easier to just keep the beam vertical.
|
||||
|
||||
//Cleaning up shit.
|
||||
if(fingerprints && !fingerprints.len)
|
||||
del(fingerprints)
|
||||
qdel(fingerprints)
|
||||
return
|
||||
|
||||
|
||||
@@ -419,7 +430,7 @@ its easier to just keep the beam vertical.
|
||||
src.color = initial(src.color) //paint
|
||||
src.germ_level = 0
|
||||
if(istype(blood_DNA, /list))
|
||||
del(blood_DNA)
|
||||
qdel(blood_DNA)
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
@@ -14,6 +14,25 @@
|
||||
var/moved_recently = 0
|
||||
var/mob/pulledby = null
|
||||
|
||||
/atom/movable/Del()
|
||||
if(isnull(gcDestroyed) && loc)
|
||||
testing("GC: -- [type] was deleted via del() rather than qdel() --")
|
||||
CRASH() // Debug until I can get a clean server start.
|
||||
// else if(isnull(gcDestroyed))
|
||||
// testing("GC: [type] was deleted via GC without qdel()") //Not really a huge issue but from now on, please qdel()
|
||||
// else
|
||||
// testing("GC: [type] was deleted via GC with qdel()")
|
||||
..()
|
||||
|
||||
/atom/movable/Destroy()
|
||||
if(opacity)
|
||||
if(isturf(loc))
|
||||
if(loc:lighting_lumcount > 1)
|
||||
UpdateAffectingLights()
|
||||
loc = null
|
||||
|
||||
..()
|
||||
|
||||
/atom/movable/Bump(var/atom/A, yes)
|
||||
if(src.throwing)
|
||||
src.throw_impact(A)
|
||||
|
||||
@@ -420,7 +420,7 @@
|
||||
animation.master = src
|
||||
flick("h2monkey", animation)
|
||||
sleep(48)
|
||||
del(animation)
|
||||
qdel(animation)
|
||||
|
||||
|
||||
var/mob/living/carbon/monkey/O = null
|
||||
@@ -447,7 +447,7 @@
|
||||
|
||||
|
||||
for(var/obj/T in (M.contents-implants))
|
||||
del(T)
|
||||
qdel(T)
|
||||
|
||||
O.loc = M.loc
|
||||
|
||||
@@ -469,7 +469,7 @@
|
||||
I.loc = O
|
||||
I.implanted = O
|
||||
// O.update_icon = 1 //queue a full icon update at next life() call
|
||||
del(M)
|
||||
qdel(M)
|
||||
return
|
||||
|
||||
if (!isblockon(getblock(M.dna.struc_enzymes, MONKEYBLOCK,3),MONKEYBLOCK) && !istype(M, /mob/living/carbon/human))
|
||||
@@ -493,7 +493,7 @@
|
||||
animation.master = src
|
||||
flick("monkey2h", animation)
|
||||
sleep(48)
|
||||
del(animation)
|
||||
qdel(animation)
|
||||
|
||||
var/mob/living/carbon/human/O = new( src )
|
||||
if(Mo.greaterform)
|
||||
@@ -519,7 +519,7 @@
|
||||
M.viruses -= D
|
||||
|
||||
//for(var/obj/T in M)
|
||||
// del(T)
|
||||
// qdel(T)
|
||||
|
||||
O.loc = M.loc
|
||||
|
||||
@@ -553,7 +553,7 @@
|
||||
I.loc = O
|
||||
I.implanted = O
|
||||
// O.update_icon = 1 //queue a full icon update at next life() call
|
||||
del(M)
|
||||
qdel(M)
|
||||
return
|
||||
//////////////////////////////////////////////////////////// Monkey Block
|
||||
if(M)
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
return
|
||||
put_in(G.affecting)
|
||||
src.add_fingerprint(user)
|
||||
del(G)
|
||||
qdel(G)
|
||||
return
|
||||
|
||||
/obj/machinery/dna_scannernew/proc/put_in(var/mob/M)
|
||||
@@ -187,7 +187,7 @@
|
||||
ex_act(severity)
|
||||
//Foreach goto(35)
|
||||
//SN src = null
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if(2.0)
|
||||
if (prob(50))
|
||||
@@ -196,7 +196,7 @@
|
||||
ex_act(severity)
|
||||
//Foreach goto(108)
|
||||
//SN src = null
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if(3.0)
|
||||
if (prob(25))
|
||||
@@ -205,7 +205,7 @@
|
||||
ex_act(severity)
|
||||
//Foreach goto(181)
|
||||
//SN src = null
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
return
|
||||
@@ -215,7 +215,7 @@
|
||||
if(prob(75))
|
||||
for(var/atom/movable/A as mob|obj in src)
|
||||
A.loc = src.loc
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/computer/scan_consolenew
|
||||
name = "DNA Modifier Access Console"
|
||||
@@ -262,12 +262,12 @@
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
//SN src = null
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if(2.0)
|
||||
if (prob(50))
|
||||
//SN src = null
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
return
|
||||
@@ -275,7 +275,7 @@
|
||||
/obj/machinery/computer/scan_consolenew/blob_act()
|
||||
|
||||
if(prob(75))
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/computer/scan_consolenew/power_change()
|
||||
..()
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
animation.master = src
|
||||
flick("h2monkey", animation)
|
||||
sleep(48)
|
||||
del(animation)
|
||||
qdel(animation)
|
||||
|
||||
|
||||
var/mob/living/carbon/monkey/O = null
|
||||
@@ -60,7 +60,7 @@
|
||||
|
||||
|
||||
for(var/obj/T in (M.contents-implants))
|
||||
del(T)
|
||||
qdel(T)
|
||||
|
||||
O.loc = M.loc
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
I.loc = O
|
||||
I.implanted = O
|
||||
// O.update_icon = 1 //queue a full icon update at next life() call
|
||||
del(M)
|
||||
qdel(M)
|
||||
return
|
||||
|
||||
/datum/dna/gene/monkey/deactivate(var/mob/living/M, var/connected, var/flags)
|
||||
@@ -108,7 +108,7 @@
|
||||
animation.master = src
|
||||
flick("monkey2h", animation)
|
||||
sleep(48)
|
||||
del(animation)
|
||||
qdel(animation)
|
||||
|
||||
var/mob/living/carbon/human/O
|
||||
if(Mo.greaterform)
|
||||
@@ -136,7 +136,7 @@
|
||||
M.viruses -= D
|
||||
|
||||
//for(var/obj/T in M)
|
||||
// del(T)
|
||||
// qdel(T)
|
||||
|
||||
O.loc = M.loc
|
||||
|
||||
@@ -171,5 +171,5 @@
|
||||
I.loc = O
|
||||
I.implanted = O
|
||||
// O.update_icon = 1 //queue a full icon update at next life() call
|
||||
del(M)
|
||||
qdel(M)
|
||||
return
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
..(loc, h)
|
||||
|
||||
|
||||
Del()
|
||||
Destroy()
|
||||
blob_cores -= src
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
@@ -24,7 +24,7 @@
|
||||
update_icon()
|
||||
if(health <= 0)
|
||||
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
update_icon()
|
||||
if(health <= 0)
|
||||
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
|
||||
@@ -22,6 +22,11 @@
|
||||
new/mob/living/simple_animal/hostile/blobspore(src.loc, src)
|
||||
return 1
|
||||
|
||||
/obj/effect/blob/factory/Destroy()
|
||||
for(var/mob/living/simple_animal/hostile/blobspore/spore in spores)
|
||||
if(spore.factory == src)
|
||||
spore.factory = null
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/blobspore
|
||||
name = "blob"
|
||||
@@ -58,9 +63,10 @@
|
||||
..(loc)
|
||||
return
|
||||
death()
|
||||
..()
|
||||
qdel(src)
|
||||
|
||||
/mob/living/simple_animal/hostile/blobspore/Destroy()
|
||||
if(factory)
|
||||
factory.spores -= src
|
||||
factory = null
|
||||
..()
|
||||
del(src)
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
..(loc, h)
|
||||
|
||||
|
||||
Del()
|
||||
Destroy()
|
||||
blob_nodes -= src
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
@@ -24,7 +24,7 @@
|
||||
update_icon()
|
||||
if(health <= 0)
|
||||
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
update_icon()
|
||||
if(health <= 0)
|
||||
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
return
|
||||
|
||||
|
||||
Del()
|
||||
Destroy()
|
||||
blobs -= src
|
||||
..()
|
||||
return
|
||||
@@ -110,7 +110,7 @@
|
||||
B.loc = T
|
||||
else
|
||||
T.blob_act()//If we cant move in hit the turf
|
||||
del(B)
|
||||
qdel(B)
|
||||
for(var/atom/A in T)//Hit everything in the turf
|
||||
A.blob_act()
|
||||
return 1
|
||||
@@ -134,7 +134,7 @@
|
||||
update_icon()//Needs to be updated with the types
|
||||
if(health <= 0)
|
||||
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if(health <= 15)
|
||||
icon_state = "blob_damaged"
|
||||
@@ -182,7 +182,7 @@
|
||||
new/obj/effect/blob/factory(src.loc,src.health)
|
||||
if("Shield")
|
||||
new/obj/effect/blob/shield(src.loc,src.health*2)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
//////////////////////////////****IDLE BLOB***/////////////////////////////////////
|
||||
@@ -201,7 +201,7 @@
|
||||
|
||||
proc/update_idle()
|
||||
if(health<=0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if(health<4)
|
||||
icon_state = "blobc0"
|
||||
@@ -212,7 +212,7 @@
|
||||
icon_state = "blobidle0"
|
||||
|
||||
|
||||
Del()
|
||||
Destroy()
|
||||
var/obj/effect/blob/B = new /obj/effect/blob( src.loc )
|
||||
spawn(30)
|
||||
B.Life()
|
||||
|
||||
@@ -385,7 +385,7 @@ var/global/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","E
|
||||
animation.master = src
|
||||
flick("monkey2h", animation)
|
||||
sleep(48)
|
||||
del(animation)
|
||||
qdel(animation)
|
||||
|
||||
for(var/obj/item/W in src)
|
||||
C.drop_from_inventory(W)
|
||||
@@ -400,7 +400,7 @@ var/global/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","E
|
||||
O.real_name = chosen_dna.real_name
|
||||
|
||||
for(var/obj/T in C)
|
||||
del(T)
|
||||
qdel(T)
|
||||
|
||||
O.loc = C.loc
|
||||
|
||||
@@ -420,7 +420,7 @@ var/global/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","E
|
||||
O.changeling_update_languages(changeling.absorbed_languages)
|
||||
|
||||
feedback_add_details("changeling_powers","LFT")
|
||||
del(C)
|
||||
qdel(C)
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
if(istype(M, /mob/living/silicon/robot))
|
||||
var/mob/living/silicon/robot/Robot = M
|
||||
if(Robot.mmi)
|
||||
del(Robot.mmi)
|
||||
qdel(Robot.mmi)
|
||||
else
|
||||
for(var/obj/item/W in M)
|
||||
if(istype(W, /obj/item/weapon/implant))
|
||||
|
||||
@@ -32,11 +32,11 @@
|
||||
else
|
||||
dust()
|
||||
|
||||
/mob/proc/see_narsie(var/obj/machinery/singularity/narsie/large/N, var/dir)
|
||||
/mob/proc/see_narsie(var/obj/singularity/narsie/large/N, var/dir)
|
||||
if(N.chained)
|
||||
if(narsimage)
|
||||
del(narsimage)
|
||||
del(narglow)
|
||||
qdel(narsimage)
|
||||
qdel(narglow)
|
||||
return
|
||||
if((N.z == src.z)&&(get_dist(N,src) <= (N.consume_range+10)) && !(N in view(src)))
|
||||
if(!narsimage) //Create narsimage
|
||||
@@ -59,5 +59,5 @@
|
||||
src << narglow
|
||||
else
|
||||
if(narsimage)
|
||||
del(narsimage)
|
||||
del(narglow)
|
||||
qdel(narsimage)
|
||||
qdel(narglow)
|
||||
|
||||
@@ -65,8 +65,11 @@
|
||||
new /obj/structure/cult/tome(loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/door/cultify()
|
||||
/obj/machinery/door/airlock/external/cultify()
|
||||
new /obj/structure/mineral_door/wood(loc)
|
||||
..()
|
||||
|
||||
/obj/machinery/door/cultify()
|
||||
icon_state = "null"
|
||||
density = 0
|
||||
c_animation = new /atom/movable/overlay(src.loc)
|
||||
@@ -79,7 +82,7 @@
|
||||
c_animation.icon_state = "breakdoor"
|
||||
flick("cultification",c_animation)
|
||||
spawn(10)
|
||||
del(c_animation)
|
||||
qdel(c_animation)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/door/firedoor/cultify()
|
||||
@@ -125,7 +128,7 @@
|
||||
/obj/structure/mineral_door/wood/cultify()
|
||||
return
|
||||
|
||||
/obj/machinery/singularity/cultify()
|
||||
/obj/singularity/cultify()
|
||||
var/dist = max((current_size - 2), 1)
|
||||
explosion(get_turf(src), dist, dist * 2, dist * 4)
|
||||
qdel(src)
|
||||
|
||||
@@ -40,6 +40,7 @@ In short:
|
||||
// Apply changes when entering state
|
||||
/datum/universal_state/hell/OnEnter()
|
||||
set background = 1
|
||||
garbage_collector.garbage_collect = 0
|
||||
escape_list = get_area_turfs(locate(/area/hallway/secondary/exit))
|
||||
|
||||
//Separated into separate procs for profiling
|
||||
|
||||
@@ -74,7 +74,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
|
||||
AI.client.images += blood_image
|
||||
rune_list.Add(src)
|
||||
|
||||
Del()
|
||||
Destroy()
|
||||
for(var/mob/living/silicon/ai/AI in player_list)
|
||||
if(AI.client)
|
||||
AI.client.images -= blood_image
|
||||
@@ -92,11 +92,11 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
|
||||
attackby(I as obj, user as mob)
|
||||
if(istype(I, /obj/item/weapon/book/tome) && iscultist(user))
|
||||
user << "You retrace your steps, carefully undoing the lines of the rune."
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
else if(istype(I, /obj/item/weapon/nullrod))
|
||||
user << "\blue You disrupt the vile magic with the deadening field of the null rod!"
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ var/list/sacrificed = list()
|
||||
user << "\red You feel pain, as rune disappears in reality shift caused by too much wear of space-time fabric"
|
||||
if (istype(user, /mob/living))
|
||||
user.take_overall_damage(5, 0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
if(allrunesloc && index != 0)
|
||||
if(istype(src,/obj/effect/rune))
|
||||
user.say("Sas[pick("'","`")]so c'arta forbici!")//Only you can stop auto-muting
|
||||
@@ -61,7 +61,7 @@ var/list/sacrificed = list()
|
||||
user << "\red You feel pain, as rune disappears in reality shift caused by too much wear of space-time fabric"
|
||||
if (istype(user, /mob/living))
|
||||
user.take_overall_damage(5, 0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
for(var/mob/living/carbon/C in orange(1,src))
|
||||
if(iscultist(C) && !C.stat)
|
||||
culcount++
|
||||
@@ -94,7 +94,7 @@ var/list/sacrificed = list()
|
||||
new /obj/item/weapon/book/tome(src.loc)
|
||||
else
|
||||
new /obj/item/weapon/book/tome(usr.loc)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -190,7 +190,7 @@ var/list/sacrificed = list()
|
||||
cultists += 1
|
||||
if(cultists.len >= 9)
|
||||
log_and_message_admins_many(cultists, "summoned Nar-sie.")
|
||||
new /obj/machinery/singularity/narsie/large(src.loc)
|
||||
new /obj/singularity/narsie/large(src.loc)
|
||||
return
|
||||
else
|
||||
return fizzle()
|
||||
@@ -209,7 +209,7 @@ var/list/sacrificed = list()
|
||||
T.hotspot_expose(700,125)
|
||||
var/rune = src // detaching the proc - in theory
|
||||
empulse(U, (range_red - 2), range_red)
|
||||
del(rune)
|
||||
qdel(rune)
|
||||
return
|
||||
|
||||
/////////////////////////////////////////SIXTH RUNE
|
||||
@@ -369,7 +369,7 @@ var/list/sacrificed = list()
|
||||
usr.say("Kla[pick("'","`")]atu barada nikt'o!")
|
||||
for (var/mob/V in viewers(src))
|
||||
V.show_message("\red The rune turns into gray dust, veiling the surrounding runes.", 3)
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
usr.whisper("Kla[pick("'","`")]atu barada nikt'o!")
|
||||
usr << "\red Your talisman turns into gray dust, veiling the surrounding runes."
|
||||
@@ -545,8 +545,8 @@ var/list/sacrificed = list()
|
||||
for (var/mob/V in viewers(src))
|
||||
V.show_message("\red The runes turn into dust, which then forms into an arcane image on the paper.", 3)
|
||||
usr.say("H'drak v[pick("'","`")]loso, mir'kanas verbot!")
|
||||
del(imbued_from)
|
||||
del(newtalisman)
|
||||
qdel(imbued_from)
|
||||
qdel(newtalisman)
|
||||
else
|
||||
return fizzle()
|
||||
|
||||
@@ -593,7 +593,7 @@ var/list/sacrificed = list()
|
||||
for(var/datum/mind/H in cult.current_antagonists)
|
||||
if (H.current)
|
||||
H.current << "\red \b [input]"
|
||||
del(src)
|
||||
qdel(src)
|
||||
return 1
|
||||
|
||||
/////////////////////////////////////////FIFTEENTH RUNE
|
||||
@@ -745,7 +745,7 @@ var/list/sacrificed = list()
|
||||
usr.say("Nikt[pick("'","`")]o barada kla'atu!")
|
||||
for (var/mob/V in viewers(src))
|
||||
V.show_message("\red The rune turns into red dust, reveaing the surrounding runes.", 3)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if(istype(W,/obj/item/weapon/paper/talisman))
|
||||
usr.whisper("Nikt[pick("'","`")]o barada kla'atu!")
|
||||
@@ -818,7 +818,7 @@ var/list/sacrificed = list()
|
||||
for(var/mob/living/carbon/C in users)
|
||||
user.take_overall_damage(dam, 0)
|
||||
C.say("Khari[pick("'","`")]d! Gual'te nikka!")
|
||||
del(src)
|
||||
qdel(src)
|
||||
return fizzle()
|
||||
|
||||
/////////////////////////////////////////NINETEENTH RUNE
|
||||
@@ -858,7 +858,7 @@ var/list/sacrificed = list()
|
||||
user.visible_message("\red Rune disappears with a flash of red light, and in its place now a body lies.", \
|
||||
"\red You are blinded by the flash of red light! After you're able to see again, you see that now instead of the rune there's a body.", \
|
||||
"\red You hear a pop and smell ozone.")
|
||||
del(src)
|
||||
qdel(src)
|
||||
return fizzle()
|
||||
|
||||
/////////////////////////////////////////TWENTIETH RUNES
|
||||
@@ -881,7 +881,7 @@ var/list/sacrificed = list()
|
||||
usr.say("Sti[pick("'","`")] kaliedir!")
|
||||
usr << "\red The world becomes quiet as the deafening rune dissipates into fine dust."
|
||||
admin_attacker_log_many_victims(usr, affected, "Used a deafen rune.", "Was victim of a deafen rune.", "used a deafen rune on")
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
return fizzle()
|
||||
else
|
||||
@@ -926,7 +926,7 @@ var/list/sacrificed = list()
|
||||
usr.say("Sti[pick("'","`")] kaliesin!")
|
||||
usr << "\red The rune flashes, blinding those who not follow the Nar-Sie, and dissipates into fine dust."
|
||||
admin_attacker_log_many_victims(usr, affected, "Used a blindness rune.", "Was victim of a blindness rune.", "used a blindness rune on")
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
return fizzle()
|
||||
else
|
||||
@@ -984,7 +984,7 @@ var/list/sacrificed = list()
|
||||
C.take_overall_damage(15, 0)
|
||||
admin_attacker_log_many_victims(usr, victims, "Used a blood boil rune.", "Was the victim of a blood boil rune.", "used a blood boil rune on")
|
||||
log_and_message_admins_many(cultists - usr, "assisted activating a blood boil rune.")
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
return fizzle()
|
||||
return
|
||||
@@ -1014,8 +1014,8 @@ var/list/sacrificed = list()
|
||||
M << "\red Blood suddenly ignites, burning you!"
|
||||
var/turf/T = get_turf(B)
|
||||
T.hotspot_expose(700,125)
|
||||
del(B)
|
||||
del(src)
|
||||
qdel(B)
|
||||
qdel(src)
|
||||
|
||||
////////// Rune 24 (counting burningblood, which kinda doesnt work yet.)
|
||||
|
||||
@@ -1038,7 +1038,7 @@ var/list/sacrificed = list()
|
||||
S.Weaken(5)
|
||||
S.show_message("\red BZZZT... The rune has exploded in a bright flash.", 3)
|
||||
admin_attack_log(usr, S, "Used a stun rune.", "Was victim of a stun rune.", "used a stun rune on")
|
||||
del(src)
|
||||
qdel(src)
|
||||
else ///When invoked as talisman, stun and mute the target mob.
|
||||
usr.say("Dream sign ''Evil sealing talisman'[pick("'","`")]!")
|
||||
var/obj/item/weapon/nullrod/N = locate() in T
|
||||
@@ -1081,5 +1081,5 @@ var/list/sacrificed = list()
|
||||
//the below calls update_icons() at the end, which will update overlay icons by using the (now updated) cache
|
||||
user.put_in_hands(new /obj/item/weapon/melee/cultblade(user)) //put in hands or on floor
|
||||
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user