Updates the atom_pool, now datum_pool, to handle any datum object.

Makes the garbage collector similarly robust. Continues the whole Destroy/qdel porting.
This commit is contained in:
PsiOmega
2015-04-17 20:32:28 +02:00
parent a3fb012332
commit 1ae0ad6d92
579 changed files with 6034 additions and 6004 deletions

View File

@@ -1,6 +1,11 @@
// BEGIN_INTERNALS // BEGIN_INTERNALS
/* /*
MAP_ICON_TYPE: 0 LAST_COMPILE_TIME: 1429517930
AUTO_FILE_DIR: OFF 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
// END_INTERNALS 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

View File

@@ -44,15 +44,15 @@ obj/machinery/atmospherics/binary
return null return null
Del() Destroy()
loc = null loc = null
if(node1) if(node1)
node1.disconnect(src) node1.disconnect(src)
del(network1) qdel(network1)
if(node2) if(node2)
node2.disconnect(src) node2.disconnect(src)
del(network2) qdel(network2)
node1 = null node1 = null
node2 = null node2 = null
@@ -123,11 +123,11 @@ obj/machinery/atmospherics/binary
disconnect(obj/machinery/atmospherics/reference) disconnect(obj/machinery/atmospherics/reference)
if(reference==node1) if(reference==node1)
del(network1) qdel(network1)
node1 = null node1 = null
else if(reference==node2) else if(reference==node2)
del(network2) qdel(network2)
node2 = null node2 = null
update_icon() update_icon()

View File

@@ -112,10 +112,10 @@
else else
if(node1) if(node1)
node1.disconnect(src) node1.disconnect(src)
del(network1) qdel(network1)
if(node2) if(node2)
node2.disconnect(src) node2.disconnect(src)
del(network2) qdel(network2)
node1 = null node1 = null
node2 = null node2 = null

View File

@@ -258,4 +258,4 @@
"\blue You have unfastened \the [src].", \ "\blue You have unfastened \the [src].", \
"You hear ratchet.") "You hear ratchet.")
new /obj/item/pipe(loc, make_from=src) new /obj/item/pipe(loc, make_from=src)
del(src) qdel(src)

View File

@@ -38,15 +38,15 @@
if(WEST) if(WEST)
initialize_directions = NORTH|SOUTH initialize_directions = NORTH|SOUTH
Del() Destroy()
loc = null loc = null
if(node1) if(node1)
node1.disconnect(src) node1.disconnect(src)
del(network1) qdel(network1)
if(node2) if(node2)
node2.disconnect(src) node2.disconnect(src)
del(network2) qdel(network2)
node1 = null node1 = null
node2 = null node2 = null
@@ -110,10 +110,10 @@
else else
if(node1) if(node1)
node1.disconnect(src) node1.disconnect(src)
del(network1) qdel(network1)
if(node2) if(node2)
node2.disconnect(src) node2.disconnect(src)
del(network2) qdel(network2)
node1 = null node1 = null
node2 = null node2 = null
@@ -216,11 +216,11 @@
disconnect(obj/machinery/atmospherics/reference) disconnect(obj/machinery/atmospherics/reference)
if(reference==node1) if(reference==node1)
del(network1) qdel(network1)
node1 = null node1 = null
else if(reference==node2) else if(reference==node2)
del(network2) qdel(network2)
node2 = null node2 = null
return null return null

View File

@@ -235,4 +235,4 @@ Thus, the two variables affect pump operation are set in New():
"\blue You have unfastened \the [src].", \ "\blue You have unfastened \the [src].", \
"You hear ratchet.") "You hear ratchet.")
new /obj/item/pipe(loc, make_from=src) new /obj/item/pipe(loc, make_from=src)
del(src) qdel(src)

View File

@@ -24,7 +24,7 @@
for(var/datum/omni_port/P in ports) for(var/datum/omni_port/P in ports)
P.air.volume = ATMOS_DEFAULT_VOLUME_FILTER P.air.volume = ATMOS_DEFAULT_VOLUME_FILTER
/obj/machinery/atmospherics/omni/filter/Del() /obj/machinery/atmospherics/omni/filter/Destroy()
input = null input = null
output = null output = null
filters.Cut() filters.Cut()

View File

@@ -49,7 +49,7 @@
for(var/datum/omni_port/P in ports) for(var/datum/omni_port/P in ports)
P.air.volume = ATMOS_DEFAULT_VOLUME_MIXER P.air.volume = ATMOS_DEFAULT_VOLUME_MIXER
/obj/machinery/atmospherics/omni/mixer/Del() /obj/machinery/atmospherics/omni/mixer/Destroy()
inputs.Cut() inputs.Cut()
output = null output = null
..() ..()

View File

@@ -98,7 +98,7 @@
"\blue You have unfastened \the [src].", \ "\blue You have unfastened \the [src].", \
"You hear a ratchet.") "You hear a ratchet.")
new /obj/item/pipe(loc, make_from=src) new /obj/item/pipe(loc, make_from=src)
del(src) qdel(src)
/obj/machinery/atmospherics/omni/attack_hand(user as mob) /obj/machinery/atmospherics/omni/attack_hand(user as mob)
if(..()) if(..())
@@ -231,13 +231,13 @@
return null return null
/obj/machinery/atmospherics/omni/Del() /obj/machinery/atmospherics/omni/Destroy()
loc = null loc = null
for(var/datum/omni_port/P in ports) for(var/datum/omni_port/P in ports)
if(P.node) if(P.node)
P.node.disconnect(src) P.node.disconnect(src)
del(P.network) qdel(P.network)
P.node = null P.node = null
..() ..()
@@ -292,7 +292,7 @@
/obj/machinery/atmospherics/omni/disconnect(obj/machinery/atmospherics/reference) /obj/machinery/atmospherics/omni/disconnect(obj/machinery/atmospherics/reference)
for(var/datum/omni_port/P in ports) for(var/datum/omni_port/P in ports)
if(reference == P.node) if(reference == P.node)
del(P.network) qdel(P.network)
P.node = null P.node = null
P.update = 1 P.update = 1
break break

View File

@@ -60,7 +60,7 @@
return null return null
/obj/machinery/atmospherics/portables_connector/Del() /obj/machinery/atmospherics/portables_connector/Destroy()
loc = null loc = null
if(connected_device) if(connected_device)
@@ -68,7 +68,7 @@
if(node) if(node)
node.disconnect(src) node.disconnect(src)
del(network) qdel(network)
node = null node = null
@@ -122,7 +122,7 @@
/obj/machinery/atmospherics/portables_connector/disconnect(obj/machinery/atmospherics/reference) /obj/machinery/atmospherics/portables_connector/disconnect(obj/machinery/atmospherics/reference)
if(reference==node) if(reference==node)
del(network) qdel(network)
node = null node = null
update_underlays() update_underlays()
@@ -152,4 +152,4 @@
"\blue You have unfastened \the [src].", \ "\blue You have unfastened \the [src].", \
"You hear ratchet.") "You hear ratchet.")
new /obj/item/pipe(loc, make_from=src) new /obj/item/pipe(loc, make_from=src)
del(src) qdel(src)

View File

@@ -148,7 +148,7 @@
"\blue You have unfastened \the [src].", \ "\blue You have unfastened \the [src].", \
"You hear ratchet.") "You hear ratchet.")
new /obj/item/pipe(loc, make_from=src) new /obj/item/pipe(loc, make_from=src)
del(src) qdel(src)
/obj/machinery/atmospherics/trinary/filter/attack_hand(user as mob) // -- TLE /obj/machinery/atmospherics/trinary/filter/attack_hand(user as mob) // -- TLE

View File

@@ -120,7 +120,7 @@
"\blue You have unfastened \the [src].", \ "\blue You have unfastened \the [src].", \
"You hear ratchet.") "You hear ratchet.")
new /obj/item/pipe(loc, make_from=src) new /obj/item/pipe(loc, make_from=src)
del(src) qdel(src)
/obj/machinery/atmospherics/trinary/mixer/attack_hand(user as mob) /obj/machinery/atmospherics/trinary/mixer/attack_hand(user as mob)
if(..()) if(..())

View File

@@ -52,18 +52,18 @@ obj/machinery/atmospherics/trinary
return null return null
Del() Destroy()
loc = null loc = null
if(node1) if(node1)
node1.disconnect(src) node1.disconnect(src)
del(network1) qdel(network1)
if(node2) if(node2)
node2.disconnect(src) node2.disconnect(src)
del(network2) qdel(network2)
if(node3) if(node3)
node3.disconnect(src) node3.disconnect(src)
del(network3) qdel(network3)
node1 = null node1 = null
node2 = null node2 = null
@@ -153,15 +153,15 @@ obj/machinery/atmospherics/trinary
disconnect(obj/machinery/atmospherics/reference) disconnect(obj/machinery/atmospherics/reference)
if(reference==node1) if(reference==node1)
del(network1) qdel(network1)
node1 = null node1 = null
else if(reference==node2) else if(reference==node2)
del(network2) qdel(network2)
node2 = null node2 = null
else if(reference==node3) else if(reference==node3)
del(network3) qdel(network3)
node3 = null node3 = null
update_underlays() update_underlays()

View File

@@ -101,18 +101,18 @@
return null return null
/obj/machinery/atmospherics/tvalve/Del() /obj/machinery/atmospherics/tvalve/Destroy()
loc = null loc = null
if(node1) if(node1)
node1.disconnect(src) node1.disconnect(src)
del(network_node1) qdel(network_node1)
if(node2) if(node2)
node2.disconnect(src) node2.disconnect(src)
del(network_node2) qdel(network_node2)
if(node3) if(node3)
node3.disconnect(src) node3.disconnect(src)
del(network_node3) qdel(network_node3)
node1 = null node1 = null
node2 = null node2 = null
@@ -128,9 +128,9 @@
update_icon() update_icon()
if(network_node1) if(network_node1)
del(network_node1) qdel(network_node1)
if(network_node3) if(network_node3)
del(network_node3) qdel(network_node3)
build_network() build_network()
if(network_node1&&network_node2) if(network_node1&&network_node2)
@@ -153,9 +153,9 @@
update_icon() update_icon()
if(network_node1) if(network_node1)
del(network_node1) qdel(network_node1)
if(network_node2) if(network_node2)
del(network_node2) qdel(network_node2)
build_network() build_network()
if(network_node1&&network_node3) if(network_node1&&network_node3)
@@ -262,15 +262,15 @@
/obj/machinery/atmospherics/tvalve/disconnect(obj/machinery/atmospherics/reference) /obj/machinery/atmospherics/tvalve/disconnect(obj/machinery/atmospherics/reference)
if(reference==node1) if(reference==node1)
del(network_node1) qdel(network_node1)
node1 = null node1 = null
else if(reference==node2) else if(reference==node2)
del(network_node2) qdel(network_node2)
node2 = null node2 = null
else if(reference==node3) else if(reference==node3)
del(network_node3) qdel(network_node3)
node2 = null node2 = null
update_underlays() update_underlays()
@@ -366,7 +366,7 @@
"\blue You have unfastened \the [src].", \ "\blue You have unfastened \the [src].", \
"You hear ratchet.") "You hear ratchet.")
new /obj/item/pipe(loc, make_from=src) new /obj/item/pipe(loc, make_from=src)
del(src) qdel(src)
/obj/machinery/atmospherics/tvalve/mirrored /obj/machinery/atmospherics/tvalve/mirrored
icon_state = "map_tvalvem0" icon_state = "map_tvalvem0"

View File

@@ -86,4 +86,4 @@
"\blue You have unfastened \the [src].", \ "\blue You have unfastened \the [src].", \
"You hear ratchet.") "You hear ratchet.")
new /obj/item/pipe(loc, make_from=src) new /obj/item/pipe(loc, make_from=src)
del(src) qdel(src)

View File

@@ -28,12 +28,12 @@
return null return null
Del() Destroy()
loc = null loc = null
if(node) if(node)
node.disconnect(src) node.disconnect(src)
del(network) qdel(network)
node = null node = null
@@ -84,7 +84,7 @@
disconnect(obj/machinery/atmospherics/reference) disconnect(obj/machinery/atmospherics/reference)
if(reference==node) if(reference==node)
del(network) qdel(network)
node = null node = null
update_icon() update_icon()

View File

@@ -414,9 +414,9 @@
"\blue You have unfastened \the [src].", \ "\blue You have unfastened \the [src].", \
"You hear ratchet.") "You hear ratchet.")
new /obj/item/pipe(loc, make_from=src) 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) if(initial_loc)
initial_loc.air_vent_info -= id_tag initial_loc.air_vent_info -= id_tag
initial_loc.air_vent_names -= id_tag initial_loc.air_vent_names -= id_tag

View File

@@ -270,7 +270,7 @@
"\blue You have unfastened \the [src].", \ "\blue You have unfastened \the [src].", \
"You hear ratchet.") "You hear ratchet.")
new /obj/item/pipe(loc, make_from=src) new /obj/item/pipe(loc, make_from=src)
del(src) qdel(src)
/obj/machinery/atmospherics/unary/vent_scrubber/examine(mob/user) /obj/machinery/atmospherics/unary/vent_scrubber/examine(mob/user)
if(..(user, 1)) if(..(user, 1))
@@ -278,7 +278,7 @@
else else
user << "You are too far away to read the gauge." 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) if(initial_loc)
initial_loc.air_scrub_info -= id_tag initial_loc.air_scrub_info -= id_tag
initial_loc.air_scrub_names -= id_tag initial_loc.air_scrub_names -= id_tag

View File

@@ -73,15 +73,15 @@
return null return null
/obj/machinery/atmospherics/valve/Del() /obj/machinery/atmospherics/valve/Destroy()
loc = null loc = null
if(node1) if(node1)
node1.disconnect(src) node1.disconnect(src)
del(network_node1) qdel(network_node1)
if(node2) if(node2)
node2.disconnect(src) node2.disconnect(src)
del(network_node2) qdel(network_node2)
node1 = null node1 = null
node2 = null node2 = null
@@ -113,9 +113,9 @@
update_icon() update_icon()
if(network_node1) if(network_node1)
del(network_node1) qdel(network_node1)
if(network_node2) if(network_node2)
del(network_node2) qdel(network_node2)
build_network() build_network()
@@ -214,11 +214,11 @@
/obj/machinery/atmospherics/valve/disconnect(obj/machinery/atmospherics/reference) /obj/machinery/atmospherics/valve/disconnect(obj/machinery/atmospherics/reference)
if(reference==node1) if(reference==node1)
del(network_node1) qdel(network_node1)
node1 = null node1 = null
else if(reference==node2) else if(reference==node2)
del(network_node2) qdel(network_node2)
node2 = null node2 = null
update_underlays() update_underlays()
@@ -310,7 +310,7 @@
"\blue You have unfastened \the [src].", \ "\blue You have unfastened \the [src].", \
"You hear ratchet.") "You hear ratchet.")
new /obj/item/pipe(loc, make_from=src) new /obj/item/pipe(loc, make_from=src)
del(src) qdel(src)
/obj/machinery/atmospherics/valve/examine(mob/user) /obj/machinery/atmospherics/valve/examine(mob/user)
..() ..()

View File

@@ -31,7 +31,7 @@ datum/pipe_network
//Notes: Assuming that members will add themselves to appropriate roster in network_expand() //Notes: Assuming that members will add themselves to appropriate roster in network_expand()
if(!start_normal) if(!start_normal)
del(src) qdel(src)
start_normal.network_expand(src, reference) start_normal.network_expand(src, reference)
@@ -40,7 +40,7 @@ datum/pipe_network
if((normal_members.len>0)||(line_members.len>0)) if((normal_members.len>0)||(line_members.len>0))
pipe_networks += src pipe_networks += src
else else
del(src) qdel(src)
proc/merge(datum/pipe_network/giver) proc/merge(datum/pipe_network/giver)
if(giver==src) return 0 if(giver==src) return 0

View File

@@ -9,13 +9,13 @@ datum/pipeline
var/alert_pressure = 0 var/alert_pressure = 0
Del() Destroy()
if(network) if(network)
del(network) qdel(network)
if(air && air.volume) if(air && air.volume)
temporarily_store_air() temporarily_store_air()
del(air) qdel(air)
..() ..()

View File

@@ -44,7 +44,7 @@ obj/machinery/atmospherics/pipe/simple/heat_exchanging
node2 = target node2 = target
break break
if(!node1 && !node2) if(!node1 && !node2)
del(src) qdel(src)
return return
update_icon() update_icon()
@@ -141,7 +141,7 @@ obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction
break break
if(!node1&&!node2) if(!node1&&!node2)
del(src) qdel(src)
return return
update_icon() update_icon()

View File

@@ -99,7 +99,7 @@ obj/machinery/atmospherics/mains_pipe
for(var/obj/machinery/atmospherics/pipe/mains_component/node in nodes) for(var/obj/machinery/atmospherics/pipe/mains_component/node in nodes)
node.disconnect() node.disconnect()
Del() Destroy()
disconnect() disconnect()
..() ..()
@@ -152,7 +152,7 @@ obj/machinery/atmospherics/mains_pipe/simple
else else
if(!nodes[1]&&!nodes[2]) 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_node1 = nodes[1]?1:0
var/have_node2 = nodes[2]?1:0 var/have_node2 = nodes[2]?1:0
icon_state = "exposed[have_node1][have_node2][invisibility ? "-f" : "" ]" icon_state = "exposed[have_node1][have_node2][invisibility ? "-f" : "" ]"

View File

@@ -30,7 +30,7 @@
/obj/machinery/atmospherics/pipe/proc/check_pressure(pressure) /obj/machinery/atmospherics/pipe/proc/check_pressure(pressure)
//Return 1 if parent should continue checking other pipes //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 return 1
@@ -62,8 +62,8 @@
return parent.return_network(reference) return parent.return_network(reference)
/obj/machinery/atmospherics/pipe/Del() /obj/machinery/atmospherics/pipe/Destroy()
del(parent) qdel(parent)
if(air_temporary) if(air_temporary)
loc.assume_air(air_temporary) loc.assume_air(air_temporary)
@@ -101,8 +101,8 @@
for (var/obj/machinery/meter/meter in T) for (var/obj/machinery/meter/meter in T)
if (meter.target == src) if (meter.target == src)
new /obj/item/pipe_meter(T) new /obj/item/pipe_meter(T)
del(meter) qdel(meter)
del(src) qdel(src)
/obj/machinery/atmospherics/proc/change_color(var/new_color) /obj/machinery/atmospherics/proc/change_color(var/new_color)
//only pass valid pipe colors please ~otherwise your pipe will turn invisible //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 var/datum/effect/effect/system/smoke_spread/smoke = new
smoke.set_up(1,0, src.loc, 0) smoke.set_up(1,0, src.loc, 0)
smoke.start() smoke.start()
del(src) qdel(src)
/obj/machinery/atmospherics/pipe/simple/proc/normalize_dir() /obj/machinery/atmospherics/pipe/simple/proc/normalize_dir()
if(dir==3) if(dir==3)
@@ -227,7 +227,7 @@
else if(dir==12) else if(dir==12)
set_dir(4) set_dir(4)
/obj/machinery/atmospherics/pipe/simple/Del() /obj/machinery/atmospherics/pipe/simple/Destroy()
if(node1) if(node1)
node1.disconnect(src) node1.disconnect(src)
if(node2) if(node2)
@@ -260,8 +260,8 @@
for (var/obj/machinery/meter/meter in T) for (var/obj/machinery/meter/meter in T)
if (meter.target == src) if (meter.target == src)
new /obj/item/pipe_meter(T) new /obj/item/pipe_meter(T)
del(meter) qdel(meter)
del(src) qdel(src)
else if(node1 && node2) else if(node1 && node2)
overlays += icon_manager.get_atmos_icon("pipe", , pipe_color, "[pipe_icon]intact[icon_connect_type]") overlays += icon_manager.get_atmos_icon("pipe", , pipe_color, "[pipe_icon]intact[icon_connect_type]")
else else
@@ -294,7 +294,7 @@
break break
if(!node1 && !node2) if(!node1 && !node2)
del(src) qdel(src)
return return
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
@@ -305,12 +305,12 @@
/obj/machinery/atmospherics/pipe/simple/disconnect(obj/machinery/atmospherics/reference) /obj/machinery/atmospherics/pipe/simple/disconnect(obj/machinery/atmospherics/reference)
if(reference == node1) if(reference == node1)
if(istype(node1, /obj/machinery/atmospherics/pipe)) if(istype(node1, /obj/machinery/atmospherics/pipe))
del(parent) qdel(parent)
node1 = null node1 = null
if(reference == node2) if(reference == node2)
if(istype(node2, /obj/machinery/atmospherics/pipe)) if(istype(node2, /obj/machinery/atmospherics/pipe))
del(parent) qdel(parent)
node2 = null node2 = null
update_icon() update_icon()
@@ -459,7 +459,7 @@
else else
. = PROCESS_KILL . = PROCESS_KILL
/obj/machinery/atmospherics/pipe/manifold/Del() /obj/machinery/atmospherics/pipe/manifold/Destroy()
if(node1) if(node1)
node1.disconnect(src) node1.disconnect(src)
if(node2) if(node2)
@@ -472,17 +472,17 @@
/obj/machinery/atmospherics/pipe/manifold/disconnect(obj/machinery/atmospherics/reference) /obj/machinery/atmospherics/pipe/manifold/disconnect(obj/machinery/atmospherics/reference)
if(reference == node1) if(reference == node1)
if(istype(node1, /obj/machinery/atmospherics/pipe)) if(istype(node1, /obj/machinery/atmospherics/pipe))
del(parent) qdel(parent)
node1 = null node1 = null
if(reference == node2) if(reference == node2)
if(istype(node2, /obj/machinery/atmospherics/pipe)) if(istype(node2, /obj/machinery/atmospherics/pipe))
del(parent) qdel(parent)
node2 = null node2 = null
if(reference == node3) if(reference == node3)
if(istype(node3, /obj/machinery/atmospherics/pipe)) if(istype(node3, /obj/machinery/atmospherics/pipe))
del(parent) qdel(parent)
node3 = null node3 = null
update_icon() update_icon()
@@ -511,8 +511,8 @@
for (var/obj/machinery/meter/meter in T) for (var/obj/machinery/meter/meter in T)
if (meter.target == src) if (meter.target == src)
new /obj/item/pipe_meter(T) new /obj/item/pipe_meter(T)
del(meter) qdel(meter)
del(src) qdel(src)
else else
overlays.Cut() overlays.Cut()
overlays += icon_manager.get_atmos_icon("manifold", , pipe_color, "core" + icon_connect_type) overlays += icon_manager.get_atmos_icon("manifold", , pipe_color, "core" + icon_connect_type)
@@ -578,7 +578,7 @@
break break
if(!node1 && !node2 && !node3) if(!node1 && !node2 && !node3)
del(src) qdel(src)
return return
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
@@ -701,7 +701,7 @@
else else
. = PROCESS_KILL . = PROCESS_KILL
/obj/machinery/atmospherics/pipe/manifold4w/Del() /obj/machinery/atmospherics/pipe/manifold4w/Destroy()
if(node1) if(node1)
node1.disconnect(src) node1.disconnect(src)
if(node2) if(node2)
@@ -716,22 +716,22 @@
/obj/machinery/atmospherics/pipe/manifold4w/disconnect(obj/machinery/atmospherics/reference) /obj/machinery/atmospherics/pipe/manifold4w/disconnect(obj/machinery/atmospherics/reference)
if(reference == node1) if(reference == node1)
if(istype(node1, /obj/machinery/atmospherics/pipe)) if(istype(node1, /obj/machinery/atmospherics/pipe))
del(parent) qdel(parent)
node1 = null node1 = null
if(reference == node2) if(reference == node2)
if(istype(node2, /obj/machinery/atmospherics/pipe)) if(istype(node2, /obj/machinery/atmospherics/pipe))
del(parent) qdel(parent)
node2 = null node2 = null
if(reference == node3) if(reference == node3)
if(istype(node3, /obj/machinery/atmospherics/pipe)) if(istype(node3, /obj/machinery/atmospherics/pipe))
del(parent) qdel(parent)
node3 = null node3 = null
if(reference == node4) if(reference == node4)
if(istype(node4, /obj/machinery/atmospherics/pipe)) if(istype(node4, /obj/machinery/atmospherics/pipe))
del(parent) qdel(parent)
node4 = null node4 = null
update_icon() update_icon()
@@ -762,8 +762,8 @@
for (var/obj/machinery/meter/meter in T) for (var/obj/machinery/meter/meter in T)
if (meter.target == src) if (meter.target == src)
new /obj/item/pipe_meter(T) new /obj/item/pipe_meter(T)
del(meter) qdel(meter)
del(src) qdel(src)
else else
overlays.Cut() overlays.Cut()
overlays += icon_manager.get_atmos_icon("manifold", , pipe_color, "4way" + icon_connect_type) overlays += icon_manager.get_atmos_icon("manifold", , pipe_color, "4way" + icon_connect_type)
@@ -837,7 +837,7 @@
break break
if(!node1 && !node2 && !node3 && !node4) if(!node1 && !node2 && !node3 && !node4)
del(src) qdel(src)
return return
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
@@ -958,7 +958,7 @@
..() ..()
else else
. = PROCESS_KILL . = PROCESS_KILL
/obj/machinery/atmospherics/pipe/cap/Del() /obj/machinery/atmospherics/pipe/cap/Destroy()
if(node) if(node)
node.disconnect(src) node.disconnect(src)
@@ -967,7 +967,7 @@
/obj/machinery/atmospherics/pipe/cap/disconnect(obj/machinery/atmospherics/reference) /obj/machinery/atmospherics/pipe/cap/disconnect(obj/machinery/atmospherics/reference)
if(reference == node) if(reference == node)
if(istype(node, /obj/machinery/atmospherics/pipe)) if(istype(node, /obj/machinery/atmospherics/pipe))
del(parent) qdel(parent)
node = null node = null
update_icon() update_icon()
@@ -1074,7 +1074,7 @@
else else
. = PROCESS_KILL . = PROCESS_KILL
/obj/machinery/atmospherics/pipe/tank/Del() /obj/machinery/atmospherics/pipe/tank/Destroy()
if(node1) if(node1)
node1.disconnect(src) node1.disconnect(src)
@@ -1108,7 +1108,7 @@
/obj/machinery/atmospherics/pipe/tank/disconnect(obj/machinery/atmospherics/reference) /obj/machinery/atmospherics/pipe/tank/disconnect(obj/machinery/atmospherics/reference)
if(reference == node1) if(reference == node1)
if(istype(node1, /obj/machinery/atmospherics/pipe)) if(istype(node1, /obj/machinery/atmospherics/pipe))
del(parent) qdel(parent)
node1 = null node1 = null
update_underlays() update_underlays()
@@ -1258,7 +1258,7 @@
else else
parent.mingle_with_turf(loc, volume) parent.mingle_with_turf(loc, volume)
/obj/machinery/atmospherics/pipe/vent/Del() /obj/machinery/atmospherics/pipe/vent/Destroy()
if(node1) if(node1)
node1.disconnect(src) node1.disconnect(src)
@@ -1290,7 +1290,7 @@
/obj/machinery/atmospherics/pipe/vent/disconnect(obj/machinery/atmospherics/reference) /obj/machinery/atmospherics/pipe/vent/disconnect(obj/machinery/atmospherics/reference)
if(reference == node1) if(reference == node1)
if(istype(node1, /obj/machinery/atmospherics/pipe)) if(istype(node1, /obj/machinery/atmospherics/pipe))
del(parent) qdel(parent)
node1 = null node1 = null
update_icon() update_icon()

View File

@@ -342,7 +342,7 @@ obj/machinery/atmospherics
set src in world set src in world
set category = "Minor" set category = "Minor"
del(src) qdel(src)
pipeline_data() pipeline_data()
set src in world set src in world
@@ -487,7 +487,7 @@ obj/window
destroy() destroy()
set category = "Minor" set category = "Minor"
set src in world set src in world
del(src) qdel(src)
mob mob
sight = SEE_OBJS|SEE_TURFS sight = SEE_OBJS|SEE_TURFS

View File

@@ -171,7 +171,7 @@
return return
/* /*
/obj/effect/hotspot/Del() /obj/effect/hotspot/Destroy()
if (istype(loc, /turf/simulated)) if (istype(loc, /turf/simulated))
DestroyTurf() DestroyTurf()
..() ..()

View File

@@ -346,7 +346,7 @@ What are the archived variables for?
trace_gases += corresponding trace_gases += corresponding
corresponding.moles += trace_gas.moles*giver.group_multiplier/group_multiplier corresponding.moles += trace_gas.moles*giver.group_multiplier/group_multiplier
// del(giver) // qdel(giver)
return 1 return 1
remove(amount) remove(amount)

View File

@@ -291,7 +291,7 @@ datum
var/turf/simulated/T = turf var/turf/simulated/T = turf
T.parent = null T.parent = null
turfs += T turfs += T
del(turf_AG) qdel(turf_AG)
for(var/turf/simulated/S in turfs) //Have old members try to form new groups for(var/turf/simulated/S in turfs) //Have old members try to form new groups
if(!S.parent) if(!S.parent)
@@ -306,7 +306,7 @@ datum
for(var/obj/movable/floor/OM in object_AG.members) for(var/obj/movable/floor/OM in object_AG.members)
OM.parent = null OM.parent = null
movable_objects += OM 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 for(var/obj/movable/floor/OM in movable_objects) //Have old members try to form new groups
if(!OM.parent) if(!OM.parent)

View File

@@ -14,7 +14,7 @@ atom/movable/proc/experience_pressure_difference(pressure_difference, direction)
turf turf
assume_air(datum/gas_mixture/giver) //use this for machines to adjust air assume_air(datum/gas_mixture/giver) //use this for machines to adjust air
del(giver) qdel(giver)
return 0 return 0
return_air() return_air()

View File

@@ -80,7 +80,7 @@ obj/machinery/atmospherics/pipe/zpipe/proc/burst()
var/datum/effect/effect/system/smoke_spread/smoke = new var/datum/effect/effect/system/smoke_spread/smoke = new
smoke.set_up(1,0, src.loc, 0) smoke.set_up(1,0, src.loc, 0)
smoke.start() smoke.start()
del(src) qdel(src) // NOT qdel.
obj/machinery/atmospherics/pipe/zpipe/proc/normalize_dir() obj/machinery/atmospherics/pipe/zpipe/proc/normalize_dir()
if(dir==3) if(dir==3)
@@ -88,7 +88,7 @@ obj/machinery/atmospherics/pipe/zpipe/proc/normalize_dir()
else if(dir==12) else if(dir==12)
set_dir(4) set_dir(4)
obj/machinery/atmospherics/pipe/zpipe/Del() obj/machinery/atmospherics/pipe/zpipe/Destroy()
if(node1) if(node1)
node1.disconnect(src) node1.disconnect(src)
if(node2) if(node2)
@@ -104,12 +104,12 @@ obj/machinery/atmospherics/pipe/zpipe/update_icon()
obj/machinery/atmospherics/pipe/zpipe/disconnect(obj/machinery/atmospherics/reference) obj/machinery/atmospherics/pipe/zpipe/disconnect(obj/machinery/atmospherics/reference)
if(reference == node1) if(reference == node1)
if(istype(node1, /obj/machinery/atmospherics/pipe)) if(istype(node1, /obj/machinery/atmospherics/pipe))
del(parent) qdel(parent)
node1 = null node1 = null
if(reference == node2) if(reference == node2)
if(istype(node2, /obj/machinery/atmospherics/pipe)) if(istype(node2, /obj/machinery/atmospherics/pipe))
del(parent) qdel(parent)
node2 = null node2 = null
return null return null

View File

@@ -41,18 +41,18 @@
switch(severity) switch(severity)
if(1.0) if(1.0)
if(icon_state == "ladderup" && prob(10)) if(icon_state == "ladderup" && prob(10))
Del() qdel(src)
if(2.0) if(2.0)
if(prob(50)) if(prob(50))
Del() qdel(src)
if(3.0) if(3.0)
Del() qdel(src)
return*/ return*/
Del() Destroy()
spawn(1) spawn(1)
if(target && icon_state == "ladderdown") if(target && icon_state == "ladderdown")
del target qdel(target)
return ..() return ..()
attackby(obj/item/C as obj, mob/user as mob) attackby(obj/item/C as obj, mob/user as mob)
@@ -78,7 +78,7 @@
if(!blocked && !istype(below, /turf/simulated/wall)) if(!blocked && !istype(below, /turf/simulated/wall))
var/obj/multiz/ladder/X = new /obj/multiz/ladder(below) var/obj/multiz/ladder/X = new /obj/multiz/ladder(below)
S.amount = S.amount - 2 S.amount = S.amount - 2
if(S.amount == 0) S.Del() if(S.amount == 0) qdel(S)
X.icon_state = "ladderup" X.icon_state = "ladderup"
connect() connect()
user << "You finish the ladder." user << "You finish the ladder."
@@ -99,7 +99,7 @@
if(target) if(target)
var/obj/item/stack/rods/R = new /obj/item/stack/rods(target.loc) var/obj/item/stack/rods/R = new /obj/item/stack/rods(target.loc)
R.amount = 2 R.amount = 2
target.Del() qdel(Target)
user << "<span class='notice'>You remove the bolts anchoring the ladder.</span>" user << "<span class='notice'>You remove the bolts anchoring the ladder.</span>"
return return
@@ -117,7 +117,7 @@
var/obj/item/stack/sheet/metal/S = new /obj/item/stack/sheet/metal( src ) var/obj/item/stack/sheet/metal/S = new /obj/item/stack/sheet/metal( src )
S.amount = 2 S.amount = 2
user << "<span class='notice'>You remove the ladder and close the hole.</span>" user << "<span class='notice'>You remove the ladder and close the hole.</span>"
Del() qdel(src)
else else
user << "<span class='notice'>You need more welding fuel to complete this task.</span>" user << "<span class='notice'>You need more welding fuel to complete this task.</span>"
return return
@@ -167,7 +167,7 @@
attack_hand(var/mob/M) attack_hand(var/mob/M)
if(!target || !istype(target.loc, /turf)) if(!target || !istype(target.loc, /turf))
del src qdel(src)
if(active) if(active)
M << "That [src] is being used." M << "That [src] is being used."
@@ -185,7 +185,7 @@
spawn(7) spawn(7)
if(!target || !istype(target.loc, /turf)) if(!target || !istype(target.loc, /turf))
del src qdel(src)
if(M.z == z && get_dist(src,M) <= 1) if(M.z == z && get_dist(src,M) <= 1)
var/list/adjacent_to_me = global_adjacent_z_levels["[z]"] 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.") 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.")

View File

@@ -120,7 +120,7 @@
var/obj/item/stack/tile/plasteel/S = C var/obj/item/stack/tile/plasteel/S = C
if (S.get_amount() < 1) if (S.get_amount() < 1)
return return
del(L) qdel(L)
playsound(src.loc, 'sound/weapons/Genhit.ogg', 50, 1) playsound(src.loc, 'sound/weapons/Genhit.ogg', 50, 1)
S.build(src) S.build(src)
S.use(1) S.use(1)

View File

@@ -28,7 +28,7 @@
initialized = 1 initialized = 1
return 1 return 1
/obj/effect/landmark/zcontroller/Del() /obj/effect/landmark/zcontroller/Destroy()
processing_objects.Remove(src) processing_objects.Remove(src)
return return

View File

@@ -78,11 +78,11 @@ turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
fire = new(src, fl) fire = new(src, fl)
air_master.active_fire_zones |= zone air_master.active_fire_zones |= zone
var/obj/effect/decal/cleanable/liquid_fuel/fuel = locate() in src var/obj/effect/decal/cleanable/liquid_fuel/fuel = locate() in src
zone.fire_tiles |= src zone.fire_tiles |= src
if(fuel) zone.fuel_objs += fuel if(fuel) zone.fuel_objs += fuel
return 0 return 0
/obj/fire /obj/fire
@@ -162,7 +162,7 @@ turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
..() ..()
if(!istype(loc, /turf)) if(!istype(loc, /turf))
del src qdel(src)
set_dir(pick(cardinal)) set_dir(pick(cardinal))
SetLuminosity(3) SetLuminosity(3)
@@ -170,7 +170,7 @@ turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
air_master.active_hotspots.Add(src) air_master.active_hotspots.Add(src)
/obj/fire/Del() /obj/fire/Destroy()
if (istype(loc, /turf/simulated)) if (istype(loc, /turf/simulated))
RemoveFire() RemoveFire()
@@ -179,7 +179,7 @@ turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
/obj/fire/proc/RemoveFire() /obj/fire/proc/RemoveFire()
if (istype(loc, /turf)) if (istype(loc, /turf))
SetLuminosity(0) SetLuminosity(0)
loc = null loc = null
air_master.active_hotspots.Remove(src) air_master.active_hotspots.Remove(src)
@@ -227,22 +227,22 @@ turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
//determine how far the reaction can progress //determine how far the reaction can progress
var/reaction_limit = min(total_oxidizers*(FIRE_REACTION_FUEL_AMOUNT/FIRE_REACTION_OXIDIZER_AMOUNT), total_fuel) //stoichiometric limit var/reaction_limit = min(total_oxidizers*(FIRE_REACTION_FUEL_AMOUNT/FIRE_REACTION_OXIDIZER_AMOUNT), total_fuel) //stoichiometric limit
//determine the actual rate of reaction, as measured by the amount of fuel reacting //determine the actual rate of reaction, as measured by the amount of fuel reacting
//vapour fuels are extremely volatile! The reaction progress is a percentage of the total fuel (similar to old zburn). //vapour fuels are extremely volatile! The reaction progress is a percentage of the total fuel (similar to old zburn).
var/gas_reaction_progress = max(0.2*group_multiplier, (firelevel/vsc.fire_firelevel_multiplier)*gas_fuel)*FIRE_GAS_BURNRATE_MULT var/gas_reaction_progress = max(0.2*group_multiplier, (firelevel/vsc.fire_firelevel_multiplier)*gas_fuel)*FIRE_GAS_BURNRATE_MULT
//liquid fuels are not as volatile, and the reaction progress depends on the size of the area that is burning (which is sort of accounted for by firelevel). Having more fuel means a longer burn. //liquid fuels are not as volatile, and the reaction progress depends on the size of the area that is burning (which is sort of accounted for by firelevel). Having more fuel means a longer burn.
var/liquid_reaction_progress = (firelevel/vsc.fire_firelevel_multiplier)*FIRE_LIQUID_BURNRATE_MULT var/liquid_reaction_progress = (firelevel/vsc.fire_firelevel_multiplier)*FIRE_LIQUID_BURNRATE_MULT
//world << "liquid_reaction_progress = [liquid_reaction_progress]" //world << "liquid_reaction_progress = [liquid_reaction_progress]"
//world << "gas_reaction_progress = [gas_reaction_progress]" //world << "gas_reaction_progress = [gas_reaction_progress]"
var/total_reaction_progress = gas_reaction_progress + liquid_reaction_progress var/total_reaction_progress = gas_reaction_progress + liquid_reaction_progress
var/used_fuel = min(total_reaction_progress, reaction_limit) var/used_fuel = min(total_reaction_progress, reaction_limit)
var/used_oxidizers = used_fuel*(FIRE_REACTION_OXIDIZER_AMOUNT/FIRE_REACTION_FUEL_AMOUNT) var/used_oxidizers = used_fuel*(FIRE_REACTION_OXIDIZER_AMOUNT/FIRE_REACTION_FUEL_AMOUNT)
//world << "used_fuel = [used_fuel]; used_oxidizers = [used_oxidizers]; reaction_limit=[reaction_limit]" //world << "used_fuel = [used_fuel]; used_oxidizers = [used_oxidizers]; reaction_limit=[reaction_limit]"
//if the reaction is progressing too slow then it isn't self-sustaining anymore and burns out //if the reaction is progressing too slow then it isn't self-sustaining anymore and burns out
if(zone && zone.fuel_objs.len) if(zone && zone.fuel_objs.len)
if(used_fuel <= FIRE_LIQUD_MIN_BURNRATE) if(used_fuel <= FIRE_LIQUD_MIN_BURNRATE)
@@ -250,13 +250,13 @@ turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
else if(used_fuel <= FIRE_GAS_MIN_BURNRATE*group_multiplier) //purely gas fires have more stringent criteria else if(used_fuel <= FIRE_GAS_MIN_BURNRATE*group_multiplier) //purely gas fires have more stringent criteria
return 0 return 0
//*** Remove fuel and oxidizer, add carbon dioxide and heat //*** Remove fuel and oxidizer, add carbon dioxide and heat
//remove and add gasses as calculated //remove and add gasses as calculated
var/used_gas_fuel = min(used_fuel*(gas_reaction_progress/total_reaction_progress), gas_fuel) //remove in proportion to the relative reaction progress var/used_gas_fuel = min(used_fuel*(gas_reaction_progress/total_reaction_progress), gas_fuel) //remove in proportion to the relative reaction progress
var/used_liquid_fuel = between(0, used_fuel-used_gas_fuel, liquid_fuel) var/used_liquid_fuel = between(0, used_fuel-used_gas_fuel, liquid_fuel)
//remove_by_flag() and adjust_gas() handle the group_multiplier for us. //remove_by_flag() and adjust_gas() handle the group_multiplier for us.
remove_by_flag(XGM_GAS_OXIDIZER, used_oxidizers) remove_by_flag(XGM_GAS_OXIDIZER, used_oxidizers)
remove_by_flag(XGM_GAS_FUEL, used_gas_fuel) remove_by_flag(XGM_GAS_FUEL, used_gas_fuel)
@@ -272,14 +272,14 @@ turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
if(!istype(fuel)) if(!istype(fuel))
zone.fuel_objs -= fuel zone.fuel_objs -= fuel
continue continue
fuel.amount -= fuel_to_remove fuel.amount -= fuel_to_remove
if(fuel.amount <= 0) if(fuel.amount <= 0)
zone.fuel_objs -= fuel zone.fuel_objs -= fuel
if(liquidonly) if(liquidonly)
var/turf/T = fuel.loc var/turf/T = fuel.loc
if(istype(T) && T.fire) del(T.fire) if(istype(T) && T.fire) qdel(T.fire)
del(fuel) qdel(fuel)
//calculate the energy produced by the reaction and then set the new temperature of the mix //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() temperature = (starting_energy + vsc.fire_fuel_energy_release * used_fuel) / heat_capacity()

View File

@@ -50,7 +50,7 @@ var/global/list/GlobalPool = list()
var/datum/D = pick_n_take(GlobalPool[get_type]) var/datum/D = pick_n_take(GlobalPool[get_type])
if(D) if(D)
D.ResetVars() D.ResetVars()
D.Prepare() D.Prepare(second_arg)
return D return D
return 0 return 0
@@ -60,9 +60,9 @@ var/global/list/GlobalPool = list()
if(length(GlobalPool[D.type]) > ATOM_POOL_COUNT) if(length(GlobalPool[D.type]) > ATOM_POOL_COUNT)
#ifdef DEBUG_ATOM_POOL #ifdef DEBUG_ATOM_POOL
world << text("DEBUG_DATUM_POOL: PlaceInPool([]) exceeds [] discarding...", D.type, ATOM_POOL_COUNT) world << text("DEBUG_DATUM_POOL: PlaceInPool([]) exceeds []. Discarding.", D.type, ATOM_POOL_COUNT)
#endif #endif
qdel(D) del(D)
return return
if(D in GlobalPool[D.type]) if(D in GlobalPool[D.type])
@@ -71,7 +71,7 @@ var/global/list/GlobalPool = list()
if(!GlobalPool[D.type]) if(!GlobalPool[D.type])
GlobalPool[D.type] = list() GlobalPool[D.type] = list()
GlobalPool[D.type] |= D GlobalPool[D.type] += D
D.Destroy() D.Destroy()
D.ResetVars() D.ResetVars()
@@ -86,7 +86,6 @@ var/global/list/GlobalPool = list()
/atom/movable/Prepare(args) /atom/movable/Prepare(args)
if(islist(args)) if(islist(args))
loc = args[1] loc = args[1]
else
loc = args loc = args
..() ..()

View File

@@ -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 animation.master = target
flick(flick_anim, animation) flick(flick_anim, animation)
sleep(max(sleeptime, 15)) sleep(max(sleeptime, 15))
del(animation) qdel(animation)
//Will return the contents of an atom recursivly to a depth of 'searchDepth' //Will return the contents of an atom recursivly to a depth of 'searchDepth'
/atom/proc/GetAllContents(searchDepth = 5) /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 = 'icons/turf/shuttle.dmi'
X.icon_state = replacetext(O.icon_state, "_f", "_s") // revert the turf to the old icon_state X.icon_state = replacetext(O.icon_state, "_f", "_s") // revert the turf to the old icon_state
X.name = "wall" X.name = "wall"
del(O) // prevents multiple shuttle corners from stacking qdel(O) // prevents multiple shuttle corners from stacking
continue continue
if(!istype(O,/obj)) continue if(!istype(O,/obj)) continue
O.loc = X O.loc = X

View File

@@ -253,7 +253,7 @@
See the previous More info, for... more info... See the previous More info, for... more info...
*/ */
//del(D) //qdel(D)
// Garbage Collect Dummy // Garbage Collect Dummy
D.loc = null D.loc = null
D = null D = null

View File

@@ -80,14 +80,14 @@ var/const/tk_maxrange = 15
if(focus.Adjacent(loc)) if(focus.Adjacent(loc))
focus.loc = loc focus.loc = loc
del(src) qdel(src)
return return
//stops TK grabs being equipped anywhere but into hands //stops TK grabs being equipped anywhere but into hands
equipped(var/mob/user, var/slot) equipped(var/mob/user, var/slot)
if( (slot == slot_l_hand) || (slot== slot_r_hand) ) return if( (slot == slot_l_hand) || (slot== slot_r_hand) ) return
del(src) qdel(src)
return return
@@ -99,10 +99,10 @@ var/const/tk_maxrange = 15
if(!target || !user) return if(!target || !user) return
if(last_throw+3 > world.time) return if(last_throw+3 > world.time) return
if(!host || host != user) if(!host || host != user)
del(src) qdel(src)
return return
if(!(TK in host.mutations)) if(!(TK in host.mutations))
del(src) qdel(src)
return return
if(isobj(target) && !isturf(target.loc)) if(isobj(target) && !isturf(target.loc))
return return
@@ -152,7 +152,7 @@ var/const/tk_maxrange = 15
proc/focus_object(var/obj/target, var/mob/living/user) 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(!istype(target,/obj)) return//Cant throw non objects atm might let it do mobs later
if(target.anchored || !isturf(target.loc)) if(target.anchored || !isturf(target.loc))
del src qdel(src)
return return
focus = target focus = target
update_icon() update_icon()
@@ -162,7 +162,7 @@ var/const/tk_maxrange = 15
proc/apply_focus_overlay() proc/apply_focus_overlay()
if(!focus) return 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.name = "sparkles"
O.anchored = 1 O.anchored = 1
O.density = 0 O.density = 0
@@ -172,7 +172,7 @@ var/const/tk_maxrange = 15
O.icon_state = "nothing" O.icon_state = "nothing"
flick("empdisable",O) flick("empdisable",O)
spawn(5) spawn(5)
O.delete() qdel(O)
return return

View File

@@ -184,8 +184,7 @@ datum/controller/process/proc/kill()
killed = TRUE killed = TRUE
// This should del del(src) // This should del
del(src)
datum/controller/process/proc/scheck(var/tickId = 0) datum/controller/process/proc/scheck(var/tickId = 0)
if (killed) if (killed)

View File

@@ -1,7 +1,9 @@
var/datum/controller/process/garbage_collector/garbage_collector var/datum/controller/process/garbage_collector/garbage_collector
var/list/delayed_garbage = list()
// #define GC_DEBUG 1 #define GC_DEBUG 1
/datum/controller/process/garbage_collector /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/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 tick. These tests check if our GC'd objects are actually GC'd 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/max_forcedel_multiplier = 1 //multiplier (per-decisecond) for calculating max number of force del() calls per tick.
@@ -16,14 +18,21 @@ var/datum/controller/process/garbage_collector/garbage_collector
/datum/controller/process/garbage_collector/setup() /datum/controller/process/garbage_collector/setup()
name = "garbage" name = "garbage"
schedule_interval = 20 // every 2 seconds schedule_interval = 6 SECONDS
if(!garbage_collector) if(!garbage_collector)
garbage_collector = src garbage_collector = src
/datum/controller/process/garbage_collector/doWork() for(var/garbage in delayed_garbage)
dels = 0 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/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/checkRemain = max_checks_multiplier * schedule_interval
var/maxDels = max_forcedel_multiplier * schedule_interval var/maxDels = max_forcedel_multiplier * schedule_interval
@@ -31,21 +40,21 @@ var/datum/controller/process/garbage_collector/garbage_collector
while(destroyed.len && --checkRemain >= 0) while(destroyed.len && --checkRemain >= 0)
if(dels >= maxDels) if(dels >= maxDels)
#ifdef GC_DEBUG #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 #endif
break // Server's already pretty pounded, everything else can wait 2 seconds break // Server's already pretty pounded, everything else can wait 2 seconds
var/refID = destroyed[1] var/refID = destroyed[1]
var/GCd_at_time = destroyed[refID] var/GCd_at_time = destroyed[refID]
if(GCd_at_time > time_to_kill) if(GCd_at_time > time_to_kill)
#ifdef GC_DEBUG #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 #endif
break // Everything else is newer, skip them break // Everything else is newer, skip them
var/atom/A = locate(refID) var/atom/A = locate(refID)
#ifdef GC_DEBUG #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]") testing("GC: [refID] old enough to test: GCd_at_time: [GCd_at_time] time_to_kill: [time_to_kill] current: [world.time]")
#endif #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. // 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 --") testing("GC: -- \ref[A] | [A.type] was unable to be GC'd and was deleted --")
logging["[A.type]"]++ logging["[A.type]"]++
@@ -56,15 +65,14 @@ var/datum/controller/process/garbage_collector/garbage_collector
testing("GC: [refID] properly GC'd at [world.time] with timeout [GCd_at_time]") testing("GC: [refID] properly GC'd at [world.time] with timeout [GCd_at_time]")
#endif #endif
destroyed.Cut(1, 2) destroyed.Cut(1, 2)
scheck()
/datum/controller/process/garbage_collector/proc/AddTrash(datum/A) /datum/controller/process/garbage_collector/proc/AddTrash(datum/A)
if(!istype(A) || !isnull(A.gc_destroyed)) if(!istype(A) || !isnull(A.gcDestroyed))
return return
#ifdef GC_DEBUG #ifdef GC_DEBUG
testing("GC: AddTrash([A.type])") testing("GC: AddTrash(\ref[A] - [A.type])")
#endif #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]" // 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 destroyed["\ref[A]"] = world.time
@@ -74,18 +82,39 @@ var/datum/controller/process/garbage_collector/garbage_collector
/proc/qdel(var/datum/A) /proc/qdel(var/datum/A)
if(!A) if(!A)
return return
if(istype(A, /list))
var/list/L = A
for(var/E in L)
qdel(E)
return
if(!istype(A)) if(!istype(A))
//warning("qdel() passed object of type [A.type]. qdel() can only handle /datum types.") //warning("qdel() passed object of type [A.type]. qdel() can only handle /datum types.")
del(A) del(A)
garbage_collector.dels++ garbage_collector.dels++
else if(isnull(A.gc_destroyed)) else if(isnull(A.gcDestroyed))
// Let our friend know they're about to get fucked up. // Let our friend know they're about to get collected
. = !A.Destroy() . = !A.Destroy()
if(. && A) if(. && A)
A.finalize_qdel() A.finalize_qdel()
/datum/proc/finalize_qdel() /datum/proc/finalize_qdel()
garbage_collector.AddTrash(src) del(src)
/atom/finalize_qdel()
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() /turf/finalize_qdel()
del(src) del(src)
@@ -97,11 +126,18 @@ var/datum/controller/process/garbage_collector/garbage_collector
tag = null tag = null
return return
/datum/var/gc_destroyed //Time when this object was destroyed. #define TESTING 1
#ifdef TESTING #ifdef TESTING
/client/var/running_find_references /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() /atom/verb/find_references()
set category = "Debug" set category = "Debug"
set name = "Find References" set name = "Find References"
@@ -120,8 +156,8 @@ var/datum/controller/process/garbage_collector/garbage_collector
return return
// Remove this object from the list of things to be auto-deleted. // Remove this object from the list of things to be auto-deleted.
if(garbage) if(garbage_collector)
garbage.destroyed -= "\ref[src]" garbage_collector.destroyed -= "\ref[src]"
usr.client.running_find_references = type usr.client.running_find_references = type
testing("Beginning search for references to a [type].") testing("Beginning search for references to a [type].")
@@ -147,13 +183,13 @@ var/datum/controller/process/garbage_collector/garbage_collector
/client/verb/purge_all_destroyed_objects() /client/verb/purge_all_destroyed_objects()
set category = "Debug" set category = "Debug"
if(garbage) if(garbage_collector)
while(garbage.destroyed.len) while(garbage_collector.destroyed.len)
var/datum/o = locate(garbage.destroyed[1]) var/datum/o = locate(garbage_collector.destroyed[1])
if(istype(o) && o.gc_destroyed) if(istype(o) && o.gcDestroyed)
del(o) del(o)
garbage.dels++ garbage_collector.dels++
garbage.destroyed.Cut(1, 2) garbage_collector.destroyed.Cut(1, 2)
#endif #endif
#ifdef GC_DEBUG #ifdef GC_DEBUG

View File

@@ -9,7 +9,7 @@
if(!istype(C.mob, /mob/dead)) if(!istype(C.mob, /mob/dead))
log_access("AFK: [key_name(C)]") log_access("AFK: [key_name(C)]")
C << "<SPAN CLASS='warning'>You have been inactive for more than 10 minutes and have been disconnected.</SPAN>" 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() scheck()

View File

@@ -161,15 +161,6 @@ atom/movable/New()
trueLuminosity = luminosity * luminosity trueLuminosity = luminosity * luminosity
light = new(src) 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. //Sets our luminosity.
//If we have no light it will create one. //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 //If we are setting luminosity to 0 the light will be cleaned up by the controller and garbage collected once all its

View File

@@ -7,7 +7,7 @@ datum/controller/transfer_controller/New()
timerbuffer = config.vote_autotransfer_initial timerbuffer = config.vote_autotransfer_initial
processing_objects += src processing_objects += src
datum/controller/transfer_controller/Del() datum/controller/transfer_controller/Destroy()
processing_objects -= src processing_objects -= src
datum/controller/transfer_controller/proc/process() datum/controller/transfer_controller/proc/process()

View File

@@ -223,7 +223,7 @@ var/global/datum/controller/radio/radio_controller
frequency.remove_listener(device) frequency.remove_listener(device)
if(frequency.devices.len == 0) if(frequency.devices.len == 0)
del(frequency) qdel(frequency)
frequencies -= f_text frequencies -= f_text
return 1 return 1
@@ -248,7 +248,7 @@ var/global/datum/controller/radio/radio_controller
if(range) if(range)
start_point = get_turf(source) start_point = get_turf(source)
if(!start_point) if(!start_point)
del(signal) qdel(signal)
return 0 return 0
if (filter) if (filter)
send_to_filter(source, signal, filter, start_point, range) send_to_filter(source, signal, filter, start_point, range)
@@ -297,7 +297,7 @@ var/global/datum/controller/radio/radio_controller
devices_line -= null devices_line -= null
if (devices_line.len==0) if (devices_line.len==0)
devices -= devices_filter devices -= devices_filter
del(devices_line) qdel(devices_line)
/datum/signal /datum/signal
var/obj/source var/obj/source

View File

@@ -242,8 +242,8 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle
sleep(speed) sleep(speed)
step(src, direction) step(src, direction)
for(var/obj/effect/starender/E in loc) for(var/obj/effect/starender/E in loc)
del(src) qdel(src)
return
/obj/effect/starender /obj/effect/starender
invisibility = 101 invisibility = 101

View File

@@ -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) //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(Failsafe != src)
if(istype(Failsafe)) if(istype(Failsafe))
del(Failsafe) qdel(Failsafe)
Failsafe = src Failsafe = src
Failsafe.process() Failsafe.process()

View File

@@ -22,7 +22,7 @@ datum/controller/lighting/New()
if(lighting_controller != src) if(lighting_controller != src)
if(istype(lighting_controller,/datum/controller/lighting)) 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 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 lighting_controller = src

View File

@@ -19,7 +19,7 @@ datum/controller/game_controller/New()
if(master_controller != src) if(master_controller != src)
log_debug("Rebuilding Master Controller") log_debug("Rebuilding Master Controller")
if(istype(master_controller)) if(istype(master_controller))
del(master_controller) qdel(master_controller)
master_controller = src master_controller = src
if(!job_master) if(!job_master)

View File

@@ -293,7 +293,7 @@ proc/get_id_photo(var/mob/living/carbon/human/H)
preview_icon.Blend(eyes_s, ICON_OVERLAY) preview_icon.Blend(eyes_s, ICON_OVERLAY)
if(clothes_s) if(clothes_s)
preview_icon.Blend(clothes_s, ICON_OVERLAY) preview_icon.Blend(clothes_s, ICON_OVERLAY)
del(eyes_s) qdel(eyes_s)
del(clothes_s) qdel(clothes_s)
return preview_icon return preview_icon

View File

@@ -598,7 +598,7 @@ client
for(var/obj/Obj in world) for(var/obj/Obj in world)
if(Obj.type == O_type) if(Obj.type == O_type)
i++ i++
del(Obj) qdel(Obj)
if(!i) if(!i)
usr << "No objects of this type exist" usr << "No objects of this type exist"
return return
@@ -609,7 +609,7 @@ client
for(var/obj/Obj in world) for(var/obj/Obj in world)
if(istype(Obj,O_type)) if(istype(Obj,O_type))
i++ i++
del(Obj) qdel(Obj)
if(!i) if(!i)
usr << "No objects of this type exist" usr << "No objects of this type exist"
return return
@@ -888,7 +888,7 @@ client
usr << "Removed [rem_organ] from [M]." usr << "Removed [rem_organ] from [M]."
rem_organ.removed() rem_organ.removed()
del(rem_organ) qdel(rem_organ)
else if(href_list["fix_nano"]) else if(href_list["fix_nano"])
if(!check_rights(R_DEBUG)) return if(!check_rights(R_DEBUG)) return

View File

@@ -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 Diseases are referenced in a global list, so simply setting mob or obj vars
to null does not delete the object itself. Thank you. 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(D != src)
if(IsSame(D)) if(IsSame(D))
//error("Deleting [D.name] because it's the same as [src.name].") //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(holder == affected_mob)
if(affected_mob.stat != DEAD) //he's alive 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. /*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.status_flags &= ~(XENO_HOST)*/
affected_mob.viruses -= src //remove the datum from the list 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 return
@@ -193,6 +193,9 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
active_diseases += src active_diseases += src
initial_spread = spread initial_spread = spread
/datum/disease/Destroy()
active_diseases.Remove(src)
/datum/disease/proc/IsSame(var/datum/disease/D) /datum/disease/proc/IsSame(var/datum/disease/D)
if(istype(src, D.type)) if(istype(src, D.type))
return 1 return 1
@@ -200,8 +203,3 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
/datum/disease/proc/Copy(var/process = 0) /datum/disease/proc/Copy(var/process = 0)
return new type(process, src) return new type(process, src)
/*
/datum/disease/Del()
active_diseases.Remove(src)
*/

View File

@@ -71,7 +71,7 @@ var/list/advance_cures = list(
..(process, D) ..(process, D)
return return
/datum/disease/advance/Del() /datum/disease/advance/Destroy()
if(processing) if(processing)
for(var/datum/symptom/S in symptoms) for(var/datum/symptom/S in symptoms)
S.End(src) S.End(src)
@@ -109,7 +109,7 @@ var/list/advance_cures = list(
if(resistance && !(id in affected_mob.resistances)) if(resistance && !(id in affected_mob.resistances))
affected_mob.resistances[id] = id affected_mob.resistances[id] = id
affected_mob.viruses -= src //remove the datum from the list 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 return
// Returns the advance disease with a different reference memory. // Returns the advance disease with a different reference memory.

View File

@@ -113,7 +113,7 @@ Des: Removes all infection images from aliens and places an infection image on a
if (alien.client) if (alien.client)
for(var/image/I in alien.client.images) for(var/image/I in alien.client.images)
if(dd_hasprefix_case(I.icon_state, "infected")) if(dd_hasprefix_case(I.icon_state, "infected"))
del(I) qdel(I)
for (var/mob/living/carbon/alien/alien in player_list) for (var/mob/living/carbon/alien/alien in player_list)
if (alien.client) 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) for(var/image/I in alien.client.images)
if(I.loc == C) if(I.loc == C)
if(dd_hasprefix_case(I.icon_state, "infected")) if(dd_hasprefix_case(I.icon_state, "infected"))
del(I) qdel(I)
return return

View File

@@ -34,7 +34,7 @@
if(4) if(4)
if(!src.transformed) if(!src.transformed)
if ((!strain_data["name"]) || (!strain_data["UI"]) || (!strain_data["SE"])) if ((!strain_data["name"]) || (!strain_data["UI"]) || (!strain_data["SE"]))
del(affected_mob.virus) qdel(affected_mob.virus)
return return
//Save original dna for when the disease is cured. //Save original dna for when the disease is cured.
@@ -56,7 +56,7 @@
return return
/datum/disease/dnaspread/Del() /datum/disease/dnaspread/Destroy()
if ((original_dna["name"]) && (original_dna["UI"]) && (original_dna["SE"])) if ((original_dna["name"]) && (original_dna["UI"]) && (original_dna["SE"]))
var/list/newUI=original_dna["UI"] var/list/newUI=original_dna["UI"]
var/list/newSE=original_dna["SE"] var/list/newSE=original_dna["SE"]

View File

@@ -12,7 +12,7 @@
holder = atom holder = atom
if(!holder) //don't want this without a holder if(!holder) //don't want this without a holder
spawn spawn
del src qdel(src)
set_desc(steps.len) set_desc(steps.len)
return return
@@ -61,7 +61,7 @@
if(result) if(result)
new result(get_turf(holder)) new result(get_turf(holder))
spawn() spawn()
del holder qdel(holder)
return return
proc/set_desc(index as num) proc/set_desc(index as num)

View File

@@ -49,7 +49,7 @@
//must succeed in most cases //must succeed in most cases
proc/setTeleatom(atom/movable/ateleatom) proc/setTeleatom(atom/movable/ateleatom)
if(istype(ateleatom, /obj/effect) && !istype(ateleatom, /obj/effect/dummy/chameleon)) if(istype(ateleatom, /obj/effect) && !istype(ateleatom, /obj/effect/dummy/chameleon))
del(ateleatom) qdel(ateleatom)
return 0 return 0
if(istype(ateleatom)) if(istype(ateleatom))
teleatom = ateleatom teleatom = ateleatom

View File

@@ -311,7 +311,7 @@ datum/mind
for(var/obj/item/weapon/implant/loyalty/I in H.contents) for(var/obj/item/weapon/implant/loyalty/I in H.contents)
for(var/obj/item/organ/external/organs in H.organs) for(var/obj/item/organ/external/organs in H.organs)
if(I in organs.implants) if(I in organs.implants)
I.Del() qdel(I)
break break
H << "<span class='notice'><font size =3><B>Your loyalty implant has been deactivated.</font></span>" 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].") log_admin("[key_name_admin(usr)] has de-loyalty implanted [current].")
@@ -368,7 +368,7 @@ datum/mind
src = null src = null
m2h.inject(M) m2h.inject(M)
src = mobfinder.loc:mind src = mobfinder.loc:mind
del(mobfinder) qdel(mobfinder)
current.radiation -= 50 current.radiation -= 50
*/ */
else if (href_list["silicon"]) else if (href_list["silicon"])
@@ -445,10 +445,10 @@ datum/mind
var/list/L = current.get_contents() var/list/L = current.get_contents()
for (var/t in L) for (var/t in L)
if (istype(t, /obj/item/device/pda)) if (istype(t, /obj/item/device/pda))
if (t:uplink) del(t:uplink) if (t:uplink) qdel(t:uplink)
t:uplink = null t:uplink = null
else if (istype(t, /obj/item/device/radio)) else if (istype(t, /obj/item/device/radio))
if (t:traitorradio) del(t:traitorradio) if (t:traitorradio) qdel(t:traitorradio)
t:traitorradio = null t:traitorradio = null
t:traitor_frequency = 0.0 t:traitor_frequency = 0.0
else if (istype(t, /obj/item/weapon/SWF_uplink) || istype(t, /obj/item/weapon/syndicate_uplink)) 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.loc = current.loc
R.traitorradio = null R.traitorradio = null
R.traitor_frequency = 0.0 R.traitor_frequency = 0.0
del(t) qdel(t)
// remove wizards spells // remove wizards spells
//If there are more special powers that need removal, they can be procced into here./N //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() proc/take_uplink()
var/obj/item/device/uplink/hidden/H = find_syndicate_uplink() var/obj/item/device/uplink/hidden/H = find_syndicate_uplink()
if(H) if(H)
del(H) qdel(H)
// check whether this mind's mob has been brigged for the given duration // check whether this mind's mob has been brigged for the given duration

View File

@@ -24,7 +24,8 @@ var/list/modules = list( // global associative list
var/mneed = mods.inmodlist(type) // find if this type has modules defined var/mneed = mods.inmodlist(type) // find if this type has modules defined
if(!mneed) // not found in module list? 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 var/needed = mods.getbitmask(type) // get a bitmask for the number of modules in this object
status = needed status = needed

View File

@@ -95,7 +95,7 @@
var/obj/result_obj = new result(container) var/obj/result_obj = new result(container)
for (var/obj/O in (container.contents-result_obj)) for (var/obj/O in (container.contents-result_obj))
O.reagents.trans_to(result_obj, O.reagents.total_volume) O.reagents.trans_to(result_obj, O.reagents.total_volume)
del(O) qdel(O)
container.reagents.clear_reagents() container.reagents.clear_reagents()
return result_obj return result_obj
@@ -110,7 +110,7 @@
O.reagents.del_reagent("nutriment") O.reagents.del_reagent("nutriment")
O.reagents.update_total() O.reagents.update_total()
O.reagents.trans_to(result_obj, O.reagents.total_volume) O.reagents.trans_to(result_obj, O.reagents.total_volume)
del(O) qdel(O)
container.reagents.clear_reagents() container.reagents.clear_reagents()
return result_obj return result_obj

View File

@@ -350,7 +350,7 @@
/obj/item/weapon/module/power_control/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) /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)) if (istype(W, /obj/item/device/multitool))
var/obj/item/weapon/circuitboard/ghettosmes/newcircuit = new/obj/item/weapon/circuitboard/ghettosmes(user.loc) var/obj/item/weapon/circuitboard/ghettosmes/newcircuit = new/obj/item/weapon/circuitboard/ghettosmes(user.loc)
del(src) qdel(src)
user.put_in_hands(newcircuit) user.put_in_hands(newcircuit)

View File

@@ -22,7 +22,7 @@
G.fields["photo_side"] = side G.fields["photo_side"] = side
data_core.general += G data_core.general += G
del(dummy) qdel(dummy)
return G return G
/proc/CreateSecurityRecord(var/name as text, var/id as text) /proc/CreateSecurityRecord(var/name as text, var/id as text)

View File

@@ -1,168 +1,168 @@
/* sd_Alert library /* sd_Alert library
by Shadowdarke (shadowdarke@byond.com) by Shadowdarke (shadowdarke@byond.com)
sd_Alert() is a powerful and flexible alternative to the built in BYOND sd_Alert() is a powerful and flexible alternative to the built in BYOND
alert() proc. sd_Alert offers timed popups, unlimited buttons, custom alert() proc. sd_Alert offers timed popups, unlimited buttons, custom
appearance, and even the option to popup without stealing keyboard focus appearance, and even the option to popup without stealing keyboard focus
from the map or command line. from the map or command line.
Please see demo.dm for detailed examples. Please see demo.dm for detailed examples.
FORMAT FORMAT
sd_Alert(who, message, title, buttons, default, duration, unfocus, \ sd_Alert(who, message, title, buttons, default, duration, unfocus, \
size, table, style, tag, select, flags) size, table, style, tag, select, flags)
ARGUMENTS ARGUMENTS
who - the client or mob to display the alert to. who - the client or mob to display the alert to.
message - text message to display message - text message to display
title - title of the alert box title - title of the alert box
buttons - list of buttons buttons - list of buttons
Default Value: list("Ok") Default Value: list("Ok")
default - default button selestion default - default button selestion
Default Value: the first button in the list Default Value: the first button in the list
duration - the number of ticks before this alert expires. If not duration - the number of ticks before this alert expires. If not
set, the alert lasts until a button is clicked. set, the alert lasts until a button is clicked.
Default Value: 0 (unlimited) Default Value: 0 (unlimited)
unfocus - if this value is set, the popup will not steal keyboard unfocus - if this value is set, the popup will not steal keyboard
focus from the map or command line. focus from the map or command line.
Default Value: 1 (do not take focus) Default Value: 1 (do not take focus)
size - size of the popup window in px size - size of the popup window in px
Default Value: "300x200" Default Value: "300x200"
table - optional parameters for the HTML table in the alert table - optional parameters for the HTML table in the alert
Default Value: "width=100% height=100%" (fill the window) Default Value: "width=100% height=100%" (fill the window)
style - optional style sheet information style - optional style sheet information
tag - lets you specify a certain tag for this sd_Alert so you may manipulate it tag - lets you specify a certain tag for this sd_Alert so you may manipulate it
externally. (i.e. force the alert to close, change options and redisplay, externally. (i.e. force the alert to close, change options and redisplay,
reuse the same window, etc.) reuse the same window, etc.)
select - if set, the buttons will be replaced with a selection box with a number of select - if set, the buttons will be replaced with a selection box with a number of
lines displayed equal to this value. lines displayed equal to this value.
Default value: 0 (use buttons) Default value: 0 (use buttons)
flags - optional flags effecting the alert display. These flags may be ORed (|) flags - optional flags effecting the alert display. These flags may be ORed (|)
together for multiple effects. together for multiple effects.
SD_ALERT_SCROLL = display a scrollbar SD_ALERT_SCROLL = display a scrollbar
SD_ALERT_SELECT_MULTI = forces selection box display (instead of SD_ALERT_SELECT_MULTI = forces selection box display (instead of
buttons) allows the user to select multiple buttons) allows the user to select multiple
choices. choices.
SD_ALERT_LINKS = display each choice as a plain text link. SD_ALERT_LINKS = display each choice as a plain text link.
Any selection box style overrides this flag. Any selection box style overrides this flag.
SD_ALERT_NOVALIDATE = don't validate responses SD_ALERT_NOVALIDATE = don't validate responses
Default value: SD_ALERT_SCROLL Default value: SD_ALERT_SCROLL
(button display with scroll bar, validate responses) (button display with scroll bar, validate responses)
RETURNS RETURNS
The text of the selected button, or null if the alert duration expired The text of the selected button, or null if the alert duration expired
without a button click. without a button click.
Version 1 changes (from version 0): Version 1 changes (from version 0):
* Added the tag, select, and flags arguments, thanks to several suggestions from Foomer. * Added the tag, select, and flags arguments, thanks to several suggestions from Foomer.
* Split the sd_Alert/Alert() proc into New(), Display(), and Response() to allow more * Split the sd_Alert/Alert() proc into New(), Display(), and Response() to allow more
customization by developers. Primarily developers would want to use Display() to change customization by developers. Primarily developers would want to use Display() to change
the display of active tagged windows the display of active tagged windows
*/ */
#define SD_ALERT_SCROLL 1 #define SD_ALERT_SCROLL 1
#define SD_ALERT_SELECT_MULTI 2 #define SD_ALERT_SELECT_MULTI 2
#define SD_ALERT_LINKS 4 #define SD_ALERT_LINKS 4
#define SD_ALERT_NOVALIDATE 8 #define SD_ALERT_NOVALIDATE 8
proc/sd_Alert(client/who, message, title, buttons = list("Ok"),\ proc/sd_Alert(client/who, message, title, buttons = list("Ok"),\
default, duration = 0, unfocus = 1, size = "300x200", \ default, duration = 0, unfocus = 1, size = "300x200", \
table = "width=100% height=100%", style, tag, select, flags = SD_ALERT_SCROLL) table = "width=100% height=100%", style, tag, select, flags = SD_ALERT_SCROLL)
if(ismob(who)) if(ismob(who))
var/mob/M = who var/mob/M = who
who = M.client who = M.client
if(!istype(who)) CRASH("sd_Alert: Invalid target:[who] (\ref[who])") if(!istype(who)) CRASH("sd_Alert: Invalid target:[who] (\ref[who])")
var/sd_alert/T = locate(tag) var/sd_alert/T = locate(tag)
if(T) 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])") else CRASH("sd_Alert: tag \"[tag]\" is already in use by datum '[T]' (type: [T.type])")
T = new(who, tag) T = new(who, tag)
if(duration) if(duration)
spawn(duration) spawn(duration)
if(T) del(T) if(T) qdel(T)
return return
T.Display(message,title,buttons,default,unfocus,size,table,style,select,flags) T.Display(message,title,buttons,default,unfocus,size,table,style,select,flags)
. = T.Response() . = T.Response()
sd_alert sd_alert
var var
client/target client/target
response response
list/validation list/validation
Del() Del()
target << browse(null,"window=\ref[src]") target << browse(null,"window=\ref[src]")
..() ..()
New(who, tag) New(who, tag)
..() ..()
target = who target = who
src.tag = tag src.tag = tag
Topic(href,params[]) Topic(href,params[])
if(usr.client != target) return if(usr.client != target) return
response = params["clk"] response = params["clk"]
proc/Display(message,title,list/buttons,default,unfocus,size,table,style,select,flags) proc/Display(message,title,list/buttons,default,unfocus,size,table,style,select,flags)
if(unfocus) spawn() target << browse(null,null) if(unfocus) spawn() target << browse(null,null)
if(istext(buttons)) buttons = list(buttons) if(istext(buttons)) buttons = list(buttons)
if(!default) default = buttons[1] if(!default) default = buttons[1]
if(!(flags & SD_ALERT_NOVALIDATE)) validation = buttons.Copy() if(!(flags & SD_ALERT_NOVALIDATE)) validation = buttons.Copy()
var/html = {"<head><title>[title]</title>[style]<script>\ var/html = {"<head><title>[title]</title>[style]<script>\
function c(x) {document.location.href='BYOND://?src=\ref[src];'+x;}\ function c(x) {document.location.href='BYOND://?src=\ref[src];'+x;}\
</script></head><body onLoad="fcs.focus();"\ </script></head><body onLoad="fcs.focus();"\
[(flags&SD_ALERT_SCROLL)?"":" scroll=no"]><table [table]><tr>\ [(flags&SD_ALERT_SCROLL)?"":" scroll=no"]><table [table]><tr>\
<td>[message]</td></tr><tr><th>"} <td>[message]</td></tr><tr><th>"}
if(select || (flags & SD_ALERT_SELECT_MULTI)) // select style choices if(select || (flags & SD_ALERT_SELECT_MULTI)) // select style choices
html += {"<FORM ID=fcs ACTION='BYOND://?' METHOD=GET>\ html += {"<FORM ID=fcs ACTION='BYOND://?' METHOD=GET>\
<INPUT TYPE=HIDDEN NAME=src VALUE='\ref[src]'> <INPUT TYPE=HIDDEN NAME=src VALUE='\ref[src]'>
<SELECT NAME=clk SIZE=[select]\ <SELECT NAME=clk SIZE=[select]\
[(flags & SD_ALERT_SELECT_MULTI)?" MULTIPLE":""]>"} [(flags & SD_ALERT_SELECT_MULTI)?" MULTIPLE":""]>"}
for(var/b in buttons) for(var/b in buttons)
html += "<OPTION[(b == default)?" SELECTED":""]>\ html += "<OPTION[(b == default)?" SELECTED":""]>\
[html_encode(b)]</OPTION>" [html_encode(b)]</OPTION>"
html += "</SELECT><BR><INPUT TYPE=SUBMIT VALUE=Submit></FORM>" html += "</SELECT><BR><INPUT TYPE=SUBMIT VALUE=Submit></FORM>"
else if(flags & SD_ALERT_LINKS) // text link style else if(flags & SD_ALERT_LINKS) // text link style
for(var/b in buttons) for(var/b in buttons)
var/list/L = list() var/list/L = list()
L["clk"] = b L["clk"] = b
var/html_string=list2params(L) var/html_string=list2params(L)
var/focus var/focus
if(b == default) focus = " ID=fcs" if(b == default) focus = " ID=fcs"
html += "<A[focus] href=# onClick=\"c('[html_string]')\">[html_encode(b)]</A>\ html += "<A[focus] href=# onClick=\"c('[html_string]')\">[html_encode(b)]</A>\
<BR>" <BR>"
else // button style choices else // button style choices
for(var/b in buttons) for(var/b in buttons)
var/list/L = list() var/list/L = list()
L["clk"] = b L["clk"] = b
var/html_string=list2params(L) var/html_string=list2params(L)
var/focus var/focus
if(b == default) focus = " ID=fcs" if(b == default) focus = " ID=fcs"
html += "<INPUT[focus] TYPE=button VALUE='[html_encode(b)]' \ html += "<INPUT[focus] TYPE=button VALUE='[html_encode(b)]' \
onClick=\"c('[html_string]')\"> " onClick=\"c('[html_string]')\"> "
html += "</th></tr></table></body>" html += "</th></tr></table></body>"
target << browse(html,"window=\ref[src];size=[size];can_close=0") target << browse(html,"window=\ref[src];size=[size];can_close=0")
proc/Response() proc/Response()
var/validated var/validated
while(!validated) while(!validated)
while(target && !response) // wait for a response while(target && !response) // wait for a response
sleep(2) sleep(2)
if(response && validation) if(response && validation)
if(istype(response, /list)) if(istype(response, /list))
var/list/L = response - validation var/list/L = response - validation
if(L.len) response = null if(L.len) response = null
else validated = 1 else validated = 1
else if(response in validation) validated = 1 else if(response in validation) validated = 1
else response=null else response=null
else validated = 1 else validated = 1
spawn(2) del(src) spawn(2) qdel(src)
return response return response

View File

@@ -199,7 +199,7 @@
for(var/datum/uplink_item/UI in H.purchase_log) for(var/datum/uplink_item/UI in H.purchase_log)
var/obj/I = new UI.path var/obj/I = new UI.path
refined_log.Add("[H.purchase_log[UI]]x\icon[I][UI.name]") refined_log.Add("[H.purchase_log[UI]]x\icon[I][UI.name]")
del(I) qdel(I)
purchases = english_list(refined_log, nothing_text = "") purchases = english_list(refined_log, nothing_text = "")
if(uplink_true) if(uplink_true)
text += " (used [TC_uses] TC)" text += " (used [TC_uses] TC)"
@@ -215,7 +215,7 @@
if(antag.current && antag.current.client) if(antag.current && antag.current.client)
for(var/image/I in antag.current.client.images) for(var/image/I in antag.current.client.images)
if(I.icon_state == antag_indicator) if(I.icon_state == antag_indicator)
del(I) qdel(I)
for(var/datum/mind/other_antag in current_antagonists) for(var/datum/mind/other_antag in current_antagonists)
if(other_antag.current) if(other_antag.current)
antag.current.client.images |= image('icons/mob/mob.dmi', loc = other_antag.current, icon_state = antag_indicator) 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) if(antag.current.client)
for(var/image/I in antag.current.client.images) for(var/image/I in antag.current.client.images)
if(I.icon_state == antag_indicator && I.loc == player.current) if(I.icon_state == antag_indicator && I.loc == player.current)
del(I) qdel(I)
if(player.current && player.current.client) if(player.current && player.current.client)
for(var/image/I in player.current.client.images) for(var/image/I in player.current.client.images)
if(I.icon_state == antag_indicator) if(I.icon_state == antag_indicator)
del(I) qdel(I)

View File

@@ -15,7 +15,7 @@
var/mob/holder = player.current var/mob/holder = player.current
player.current = new mob_path(get_turf(player.current)) player.current = new mob_path(get_turf(player.current))
player.transfer_to(player.current) player.transfer_to(player.current)
if(holder) del(holder) if(holder) qdel(holder)
player.original = player.current player.original = player.current
return player.current return player.current
@@ -30,7 +30,7 @@
for(var/obj/item/thing in player.contents) for(var/obj/item/thing in player.contents)
player.drop_from_inventory(thing) player.drop_from_inventory(thing)
if(thing.loc != player) if(thing.loc != player)
del(thing) qdel(thing)
return 1 return 1
if(flags & ANTAG_SET_APPEARANCE) if(flags & ANTAG_SET_APPEARANCE)

View File

@@ -32,7 +32,7 @@ var/datum/antagonist/highlander/highlanders
for (var/obj/item/I in player) for (var/obj/item/I in player)
if (istype(I, /obj/item/weapon/implant)) if (istype(I, /obj/item/weapon/implant))
continue 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/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) player.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(player), slot_l_ear)

View File

@@ -213,7 +213,7 @@ var/datum/antagonist/rogue_ai/malf
/client/proc/reactivate_camera) /client/proc/reactivate_camera)
current:laws = new /datum/ai_laws/nanotrasen current:laws = new /datum/ai_laws/nanotrasen
del(current:malf_picker) qdel(current:malf_picker)
current:show_laws() current:show_laws()
current.icon_state = "ai" current.icon_state = "ai"

View File

@@ -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) var/cur_loc = locate(start_loc.x+x,start_loc.y+y,start_loc.z)
if(clean) if(clean)
for(var/O in cur_loc) for(var/O in cur_loc)
del(O) qdel(O)
var/area/asteroid/artifactroom/A = new var/area/asteroid/artifactroom/A = new
if(name) if(name)

View File

@@ -22,6 +22,16 @@
//Detective Work, used for the duplicate data points kept in the scanners //Detective Work, used for the duplicate data points kept in the scanners
var/list/original_atom var/list/original_atom
/atom/Destroy()
. = ..()
SetOpacity(0)
if(reagents)
qdel(reagents)
for(var/atom/movable/AM in contents)
qdel(AM)
invisibility = 101
/atom/proc/assume_air(datum/gas_mixture/giver) /atom/proc/assume_air(datum/gas_mixture/giver)
return null return null
@@ -66,7 +76,6 @@
return flags & INSERT_CONTAINER return flags & INSERT_CONTAINER
*/ */
/atom/proc/meteorhit(obj/meteor as obj) /atom/proc/meteorhit(obj/meteor as obj)
return return
@@ -148,7 +157,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 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 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/Angle=round(Get_Angle(src,BeamTarget))
var/icon/I=new(icon,icon_state) var/icon/I=new(icon,icon_state)
I.Turn(Angle) I.Turn(Angle)
@@ -189,7 +198,7 @@ its easier to just keep the beam vertical.
X.pixel_y=Pixel_y 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. 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. //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 //All atoms
@@ -229,7 +238,7 @@ its easier to just keep the beam vertical.
/atom/proc/fire_act() /atom/proc/fire_act()
return return
/atom/proc/melt() /atom/proc/melt()
return return
@@ -362,7 +371,7 @@ its easier to just keep the beam vertical.
//Cleaning up shit. //Cleaning up shit.
if(fingerprints && !fingerprints.len) if(fingerprints && !fingerprints.len)
del(fingerprints) qdel(fingerprints)
return return
@@ -419,7 +428,7 @@ its easier to just keep the beam vertical.
src.color = initial(src.color) //paint src.color = initial(src.color) //paint
src.germ_level = 0 src.germ_level = 0
if(istype(blood_DNA, /list)) if(istype(blood_DNA, /list))
del(blood_DNA) qdel(blood_DNA)
return 1 return 1

View File

@@ -15,23 +15,23 @@
var/mob/pulledby = null var/mob/pulledby = null
/atom/movable/Del() /atom/movable/Del()
if(isnull(gc_destroyed) && loc) if(isnull(gcDestroyed) && loc)
testing("GC: -- [type] was deleted via del() rather than qdel() --") testing("GC: -- [type] was deleted via del() rather than qdel() --")
Destroy() CRASH() // Debug until I can get a clean server start.
else if(isnull(gc_destroyed)) // else if(isnull(gcDestroyed))
testing("GC: [type] was deleted via GC without qdel()") //Not really a huge issue but from now on, please qdel() // testing("GC: [type] was deleted via GC without qdel()") //Not really a huge issue but from now on, please qdel()
// else // else
// testing("GC: [type] was deleted via GC with qdel()") // testing("GC: [type] was deleted via GC with qdel()")
..() ..()
/atom/movable/Destroy() /atom/movable/Destroy()
. = ..() if(opacity)
if(reagents) if(isturf(loc))
qdel(reagents) if(loc:lighting_lumcount > 1)
for(var/atom/movable/AM in contents) UpdateAffectingLights()
qdel(AM)
loc = null loc = null
invisibility = 101
..()
/atom/movable/Bump(var/atom/A, yes) /atom/movable/Bump(var/atom/A, yes)
if(src.throwing) if(src.throwing)

View File

@@ -420,7 +420,7 @@
animation.master = src animation.master = src
flick("h2monkey", animation) flick("h2monkey", animation)
sleep(48) sleep(48)
del(animation) qdel(animation)
var/mob/living/carbon/monkey/O = null var/mob/living/carbon/monkey/O = null
@@ -447,7 +447,7 @@
for(var/obj/T in (M.contents-implants)) for(var/obj/T in (M.contents-implants))
del(T) qdel(T)
O.loc = M.loc O.loc = M.loc
@@ -469,7 +469,7 @@
I.loc = O I.loc = O
I.implanted = O I.implanted = O
// O.update_icon = 1 //queue a full icon update at next life() call // O.update_icon = 1 //queue a full icon update at next life() call
del(M) qdel(M)
return return
if (!isblockon(getblock(M.dna.struc_enzymes, MONKEYBLOCK,3),MONKEYBLOCK) && !istype(M, /mob/living/carbon/human)) if (!isblockon(getblock(M.dna.struc_enzymes, MONKEYBLOCK,3),MONKEYBLOCK) && !istype(M, /mob/living/carbon/human))
@@ -493,7 +493,7 @@
animation.master = src animation.master = src
flick("monkey2h", animation) flick("monkey2h", animation)
sleep(48) sleep(48)
del(animation) qdel(animation)
var/mob/living/carbon/human/O = new( src ) var/mob/living/carbon/human/O = new( src )
if(Mo.greaterform) if(Mo.greaterform)
@@ -519,7 +519,7 @@
M.viruses -= D M.viruses -= D
//for(var/obj/T in M) //for(var/obj/T in M)
// del(T) // qdel(T)
O.loc = M.loc O.loc = M.loc
@@ -553,7 +553,7 @@
I.loc = O I.loc = O
I.implanted = O I.implanted = O
// O.update_icon = 1 //queue a full icon update at next life() call // O.update_icon = 1 //queue a full icon update at next life() call
del(M) qdel(M)
return return
//////////////////////////////////////////////////////////// Monkey Block //////////////////////////////////////////////////////////// Monkey Block
if(M) if(M)

View File

@@ -144,7 +144,7 @@
return return
put_in(G.affecting) put_in(G.affecting)
src.add_fingerprint(user) src.add_fingerprint(user)
del(G) qdel(G)
return return
/obj/machinery/dna_scannernew/proc/put_in(var/mob/M) /obj/machinery/dna_scannernew/proc/put_in(var/mob/M)
@@ -187,7 +187,7 @@
ex_act(severity) ex_act(severity)
//Foreach goto(35) //Foreach goto(35)
//SN src = null //SN src = null
del(src) qdel(src)
return return
if(2.0) if(2.0)
if (prob(50)) if (prob(50))
@@ -196,7 +196,7 @@
ex_act(severity) ex_act(severity)
//Foreach goto(108) //Foreach goto(108)
//SN src = null //SN src = null
del(src) qdel(src)
return return
if(3.0) if(3.0)
if (prob(25)) if (prob(25))
@@ -205,7 +205,7 @@
ex_act(severity) ex_act(severity)
//Foreach goto(181) //Foreach goto(181)
//SN src = null //SN src = null
del(src) qdel(src)
return return
else else
return return
@@ -215,7 +215,7 @@
if(prob(75)) if(prob(75))
for(var/atom/movable/A as mob|obj in src) for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc A.loc = src.loc
del(src) qdel(src)
/obj/machinery/computer/scan_consolenew /obj/machinery/computer/scan_consolenew
name = "DNA Modifier Access Console" name = "DNA Modifier Access Console"
@@ -262,12 +262,12 @@
switch(severity) switch(severity)
if(1.0) if(1.0)
//SN src = null //SN src = null
del(src) qdel(src)
return return
if(2.0) if(2.0)
if (prob(50)) if (prob(50))
//SN src = null //SN src = null
del(src) qdel(src)
return return
else else
return return
@@ -275,7 +275,7 @@
/obj/machinery/computer/scan_consolenew/blob_act() /obj/machinery/computer/scan_consolenew/blob_act()
if(prob(75)) if(prob(75))
del(src) qdel(src)
/obj/machinery/computer/scan_consolenew/power_change() /obj/machinery/computer/scan_consolenew/power_change()
..() ..()

View File

@@ -33,7 +33,7 @@
animation.master = src animation.master = src
flick("h2monkey", animation) flick("h2monkey", animation)
sleep(48) sleep(48)
del(animation) qdel(animation)
var/mob/living/carbon/monkey/O = null var/mob/living/carbon/monkey/O = null
@@ -60,7 +60,7 @@
for(var/obj/T in (M.contents-implants)) for(var/obj/T in (M.contents-implants))
del(T) qdel(T)
O.loc = M.loc O.loc = M.loc
@@ -82,7 +82,7 @@
I.loc = O I.loc = O
I.implanted = O I.implanted = O
// O.update_icon = 1 //queue a full icon update at next life() call // O.update_icon = 1 //queue a full icon update at next life() call
del(M) qdel(M)
return return
/datum/dna/gene/monkey/deactivate(var/mob/living/M, var/connected, var/flags) /datum/dna/gene/monkey/deactivate(var/mob/living/M, var/connected, var/flags)
@@ -108,7 +108,7 @@
animation.master = src animation.master = src
flick("monkey2h", animation) flick("monkey2h", animation)
sleep(48) sleep(48)
del(animation) qdel(animation)
var/mob/living/carbon/human/O var/mob/living/carbon/human/O
if(Mo.greaterform) if(Mo.greaterform)
@@ -136,7 +136,7 @@
M.viruses -= D M.viruses -= D
//for(var/obj/T in M) //for(var/obj/T in M)
// del(T) // qdel(T)
O.loc = M.loc O.loc = M.loc
@@ -171,5 +171,5 @@
I.loc = O I.loc = O
I.implanted = O I.implanted = O
// O.update_icon = 1 //queue a full icon update at next life() call // O.update_icon = 1 //queue a full icon update at next life() call
del(M) qdel(M)
return return

View File

@@ -14,7 +14,7 @@
..(loc, h) ..(loc, h)
Del() Destroy()
blob_cores -= src blob_cores -= src
processing_objects.Remove(src) processing_objects.Remove(src)
..() ..()
@@ -24,7 +24,7 @@
update_icon() update_icon()
if(health <= 0) if(health <= 0)
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
del(src) qdel(src)
return return
return return

View File

@@ -12,7 +12,7 @@
update_icon() update_icon()
if(health <= 0) if(health <= 0)
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
del(src) qdel(src)
return return
return return
@@ -62,5 +62,5 @@
if(factory) if(factory)
factory.spores -= src factory.spores -= src
..() ..()
del(src) qdel(src)

View File

@@ -14,7 +14,7 @@
..(loc, h) ..(loc, h)
Del() Destroy()
blob_nodes -= src blob_nodes -= src
processing_objects.Remove(src) processing_objects.Remove(src)
..() ..()
@@ -24,7 +24,7 @@
update_icon() update_icon()
if(health <= 0) if(health <= 0)
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
del(src) qdel(src)
return return
return return

View File

@@ -14,7 +14,7 @@
update_icon() update_icon()
if(health <= 0) if(health <= 0)
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
del(src) qdel(src)
return return
return return

View File

@@ -110,7 +110,7 @@
B.loc = T B.loc = T
else else
T.blob_act()//If we cant move in hit the turf 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 for(var/atom/A in T)//Hit everything in the turf
A.blob_act() A.blob_act()
return 1 return 1
@@ -134,7 +134,7 @@
update_icon()//Needs to be updated with the types update_icon()//Needs to be updated with the types
if(health <= 0) if(health <= 0)
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
del(src) qdel(src)
return return
if(health <= 15) if(health <= 15)
icon_state = "blob_damaged" icon_state = "blob_damaged"
@@ -182,7 +182,7 @@
new/obj/effect/blob/factory(src.loc,src.health) new/obj/effect/blob/factory(src.loc,src.health)
if("Shield") if("Shield")
new/obj/effect/blob/shield(src.loc,src.health*2) new/obj/effect/blob/shield(src.loc,src.health*2)
del(src) qdel(src)
return return
//////////////////////////////****IDLE BLOB***///////////////////////////////////// //////////////////////////////****IDLE BLOB***/////////////////////////////////////
@@ -201,7 +201,7 @@
proc/update_idle() proc/update_idle()
if(health<=0) if(health<=0)
del(src) qdel(src)
return return
if(health<4) if(health<4)
icon_state = "blobc0" icon_state = "blobc0"

View File

@@ -385,7 +385,7 @@ var/global/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","E
animation.master = src animation.master = src
flick("monkey2h", animation) flick("monkey2h", animation)
sleep(48) sleep(48)
del(animation) qdel(animation)
for(var/obj/item/W in src) for(var/obj/item/W in src)
C.drop_from_inventory(W) 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 O.real_name = chosen_dna.real_name
for(var/obj/T in C) for(var/obj/T in C)
del(T) qdel(T)
O.loc = C.loc 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) O.changeling_update_languages(changeling.absorbed_languages)
feedback_add_details("changeling_powers","LFT") feedback_add_details("changeling_powers","LFT")
del(C) qdel(C)
return 1 return 1

View File

@@ -155,7 +155,7 @@
if(istype(M, /mob/living/silicon/robot)) if(istype(M, /mob/living/silicon/robot))
var/mob/living/silicon/robot/Robot = M var/mob/living/silicon/robot/Robot = M
if(Robot.mmi) if(Robot.mmi)
del(Robot.mmi) qdel(Robot.mmi)
else else
for(var/obj/item/W in M) for(var/obj/item/W in M)
if(istype(W, /obj/item/weapon/implant)) if(istype(W, /obj/item/weapon/implant))

View File

@@ -35,8 +35,8 @@
/mob/proc/see_narsie(var/obj/singularity/narsie/large/N, var/dir) /mob/proc/see_narsie(var/obj/singularity/narsie/large/N, var/dir)
if(N.chained) if(N.chained)
if(narsimage) if(narsimage)
del(narsimage) qdel(narsimage)
del(narglow) qdel(narglow)
return return
if((N.z == src.z)&&(get_dist(N,src) <= (N.consume_range+10)) && !(N in view(src))) if((N.z == src.z)&&(get_dist(N,src) <= (N.consume_range+10)) && !(N in view(src)))
if(!narsimage) //Create narsimage if(!narsimage) //Create narsimage
@@ -59,5 +59,5 @@
src << narglow src << narglow
else else
if(narsimage) if(narsimage)
del(narsimage) qdel(narsimage)
del(narglow) qdel(narglow)

View File

@@ -82,7 +82,7 @@
c_animation.icon_state = "breakdoor" c_animation.icon_state = "breakdoor"
flick("cultification",c_animation) flick("cultification",c_animation)
spawn(10) spawn(10)
del(c_animation) qdel(c_animation)
qdel(src) qdel(src)
/obj/machinery/door/firedoor/cultify() /obj/machinery/door/firedoor/cultify()

View File

@@ -40,6 +40,7 @@ In short:
// Apply changes when entering state // Apply changes when entering state
/datum/universal_state/hell/OnEnter() /datum/universal_state/hell/OnEnter()
set background = 1 set background = 1
garbage_collector.garbage_collect = 0
escape_list = get_area_turfs(locate(/area/hallway/secondary/exit)) escape_list = get_area_turfs(locate(/area/hallway/secondary/exit))
//Separated into separate procs for profiling //Separated into separate procs for profiling

View File

@@ -74,7 +74,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
AI.client.images += blood_image AI.client.images += blood_image
rune_list.Add(src) rune_list.Add(src)
Del() Destroy()
for(var/mob/living/silicon/ai/AI in player_list) for(var/mob/living/silicon/ai/AI in player_list)
if(AI.client) if(AI.client)
AI.client.images -= blood_image 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) attackby(I as obj, user as mob)
if(istype(I, /obj/item/weapon/book/tome) && iscultist(user)) if(istype(I, /obj/item/weapon/book/tome) && iscultist(user))
user << "You retrace your steps, carefully undoing the lines of the rune." user << "You retrace your steps, carefully undoing the lines of the rune."
del(src) qdel(src)
return return
else if(istype(I, /obj/item/weapon/nullrod)) else if(istype(I, /obj/item/weapon/nullrod))
user << "\blue You disrupt the vile magic with the deadening field of the null rod!" user << "\blue You disrupt the vile magic with the deadening field of the null rod!"
del(src) qdel(src)
return return
return return

View File

@@ -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" 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)) if (istype(user, /mob/living))
user.take_overall_damage(5, 0) user.take_overall_damage(5, 0)
del(src) qdel(src)
if(allrunesloc && index != 0) if(allrunesloc && index != 0)
if(istype(src,/obj/effect/rune)) if(istype(src,/obj/effect/rune))
user.say("Sas[pick("'","`")]so c'arta forbici!")//Only you can stop auto-muting 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" 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)) if (istype(user, /mob/living))
user.take_overall_damage(5, 0) user.take_overall_damage(5, 0)
del(src) qdel(src)
for(var/mob/living/carbon/C in orange(1,src)) for(var/mob/living/carbon/C in orange(1,src))
if(iscultist(C) && !C.stat) if(iscultist(C) && !C.stat)
culcount++ culcount++
@@ -94,7 +94,7 @@ var/list/sacrificed = list()
new /obj/item/weapon/book/tome(src.loc) new /obj/item/weapon/book/tome(src.loc)
else else
new /obj/item/weapon/book/tome(usr.loc) new /obj/item/weapon/book/tome(usr.loc)
del(src) qdel(src)
return return
@@ -209,7 +209,7 @@ var/list/sacrificed = list()
T.hotspot_expose(700,125) T.hotspot_expose(700,125)
var/rune = src // detaching the proc - in theory var/rune = src // detaching the proc - in theory
empulse(U, (range_red - 2), range_red) empulse(U, (range_red - 2), range_red)
del(rune) qdel(rune)
return return
/////////////////////////////////////////SIXTH RUNE /////////////////////////////////////////SIXTH RUNE
@@ -369,7 +369,7 @@ var/list/sacrificed = list()
usr.say("Kla[pick("'","`")]atu barada nikt'o!") usr.say("Kla[pick("'","`")]atu barada nikt'o!")
for (var/mob/V in viewers(src)) for (var/mob/V in viewers(src))
V.show_message("\red The rune turns into gray dust, veiling the surrounding runes.", 3) V.show_message("\red The rune turns into gray dust, veiling the surrounding runes.", 3)
del(src) qdel(src)
else else
usr.whisper("Kla[pick("'","`")]atu barada nikt'o!") usr.whisper("Kla[pick("'","`")]atu barada nikt'o!")
usr << "\red Your talisman turns into gray dust, veiling the surrounding runes." 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)) 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) 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!") usr.say("H'drak v[pick("'","`")]loso, mir'kanas verbot!")
del(imbued_from) qdel(imbued_from)
del(newtalisman) qdel(newtalisman)
else else
return fizzle() return fizzle()
@@ -593,7 +593,7 @@ var/list/sacrificed = list()
for(var/datum/mind/H in cult.current_antagonists) for(var/datum/mind/H in cult.current_antagonists)
if (H.current) if (H.current)
H.current << "\red \b [input]" H.current << "\red \b [input]"
del(src) qdel(src)
return 1 return 1
/////////////////////////////////////////FIFTEENTH RUNE /////////////////////////////////////////FIFTEENTH RUNE
@@ -745,7 +745,7 @@ var/list/sacrificed = list()
usr.say("Nikt[pick("'","`")]o barada kla'atu!") usr.say("Nikt[pick("'","`")]o barada kla'atu!")
for (var/mob/V in viewers(src)) for (var/mob/V in viewers(src))
V.show_message("\red The rune turns into red dust, reveaing the surrounding runes.", 3) V.show_message("\red The rune turns into red dust, reveaing the surrounding runes.", 3)
del(src) qdel(src)
return return
if(istype(W,/obj/item/weapon/paper/talisman)) if(istype(W,/obj/item/weapon/paper/talisman))
usr.whisper("Nikt[pick("'","`")]o barada kla'atu!") usr.whisper("Nikt[pick("'","`")]o barada kla'atu!")
@@ -818,7 +818,7 @@ var/list/sacrificed = list()
for(var/mob/living/carbon/C in users) for(var/mob/living/carbon/C in users)
user.take_overall_damage(dam, 0) user.take_overall_damage(dam, 0)
C.say("Khari[pick("'","`")]d! Gual'te nikka!") C.say("Khari[pick("'","`")]d! Gual'te nikka!")
del(src) qdel(src)
return fizzle() return fizzle()
/////////////////////////////////////////NINETEENTH RUNE /////////////////////////////////////////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.", \ 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 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.") "\red You hear a pop and smell ozone.")
del(src) qdel(src)
return fizzle() return fizzle()
/////////////////////////////////////////TWENTIETH RUNES /////////////////////////////////////////TWENTIETH RUNES
@@ -881,7 +881,7 @@ var/list/sacrificed = list()
usr.say("Sti[pick("'","`")] kaliedir!") usr.say("Sti[pick("'","`")] kaliedir!")
usr << "\red The world becomes quiet as the deafening rune dissipates into fine dust." 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") 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 else
return fizzle() return fizzle()
else else
@@ -926,7 +926,7 @@ var/list/sacrificed = list()
usr.say("Sti[pick("'","`")] kaliesin!") usr.say("Sti[pick("'","`")] kaliesin!")
usr << "\red The rune flashes, blinding those who not follow the Nar-Sie, and dissipates into fine dust." 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") 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 else
return fizzle() return fizzle()
else else
@@ -984,7 +984,7 @@ var/list/sacrificed = list()
C.take_overall_damage(15, 0) 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") 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.") log_and_message_admins_many(cultists - usr, "assisted activating a blood boil rune.")
del(src) qdel(src)
else else
return fizzle() return fizzle()
return return
@@ -1014,8 +1014,8 @@ var/list/sacrificed = list()
M << "\red Blood suddenly ignites, burning you!" M << "\red Blood suddenly ignites, burning you!"
var/turf/T = get_turf(B) var/turf/T = get_turf(B)
T.hotspot_expose(700,125) T.hotspot_expose(700,125)
del(B) qdel(B)
del(src) qdel(src)
////////// Rune 24 (counting burningblood, which kinda doesnt work yet.) ////////// Rune 24 (counting burningblood, which kinda doesnt work yet.)
@@ -1038,7 +1038,7 @@ var/list/sacrificed = list()
S.Weaken(5) S.Weaken(5)
S.show_message("\red BZZZT... The rune has exploded in a bright flash.", 3) 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") 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. else ///When invoked as talisman, stun and mute the target mob.
usr.say("Dream sign ''Evil sealing talisman'[pick("'","`")]!") usr.say("Dream sign ''Evil sealing talisman'[pick("'","`")]!")
var/obj/item/weapon/nullrod/N = locate() in T 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 //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 user.put_in_hands(new /obj/item/weapon/melee/cultblade(user)) //put in hands or on floor
del(src) qdel(src)
return return

View File

@@ -35,7 +35,7 @@
user.take_organ_damage(5, 0) user.take_organ_damage(5, 0)
if(src && src.imbue!="supply" && src.imbue!="runestun") if(src && src.imbue!="supply" && src.imbue!="runestun")
if(delete) if(delete)
del(src) qdel(src)
return return
else else
user << "You see strange symbols on the paper. Are they supposed to mean something?" user << "You see strange symbols on the paper. Are they supposed to mean something?"
@@ -47,7 +47,7 @@
if(imbue == "runestun") if(imbue == "runestun")
user.take_organ_damage(5, 0) user.take_organ_damage(5, 0)
call(/obj/effect/rune/proc/runestun)(T) call(/obj/effect/rune/proc/runestun)(T)
del(src) qdel(src)
else else
..() ///If its some other talisman, use the generic attack code, is this supposed to work this way? ..() ///If its some other talisman, use the generic attack code, is this supposed to work this way?
else else
@@ -56,7 +56,7 @@
proc/supply(var/key) proc/supply(var/key)
if (!src.uses) if (!src.uses)
del(src) qdel(src)
return return
var/dat = "<B>There are [src.uses] bloody runes on the parchment.</B><BR>" var/dat = "<B>There are [src.uses] bloody runes on the parchment.</B><BR>"

View File

@@ -49,7 +49,8 @@
for(var/atom/movable/A in T) for(var/atom/movable/A in T)
if(A) if(A)
if(istype(A,/mob/living)) if(istype(A,/mob/living))
del(A) qdel(A)
continue
else if(istype(A,/mob)) // Observers, AI cameras. else if(istype(A,/mob)) // Observers, AI cameras.
continue continue
qdel(A) qdel(A)
@@ -114,4 +115,4 @@
if(istype(user,/mob/dead/observer)) if(istype(user,/mob/dead/observer))
return return
del(user) qdel(user)

View File

@@ -78,4 +78,4 @@
else else
if(riftimage) if(riftimage)
del(riftimage) qdel(riftimage)

View File

@@ -33,6 +33,7 @@
// Apply changes when entering state // Apply changes when entering state
/datum/universal_state/supermatter_cascade/OnEnter() /datum/universal_state/supermatter_cascade/OnEnter()
set background = 1 set background = 1
garbage_collector.garbage_collect = 0
world << "<span class='sinister' style='font-size:22pt'>You are blinded by a brilliant flash of energy.</span>" world << "<span class='sinister' style='font-size:22pt'>You are blinded by a brilliant flash of energy.</span>"
world << sound('sound/effects/cascade.ogg') world << sound('sound/effects/cascade.ogg')

View File

@@ -49,7 +49,7 @@
var/turf/T = pick(blobstart) var/turf/T = pick(blobstart)
var/obj/effect/bhole/bh = new /obj/effect/bhole( T.loc, 30 ) var/obj/effect/bhole/bh = new /obj/effect/bhole( T.loc, 30 )
spawn(rand(50, 300)) spawn(rand(50, 300))
del(bh) qdel(bh)
/* /*
if(3) //Leaving the code in so someone can try and delag it, but this event can no longer occur randomly, per SoS's request. --NEO if(3) //Leaving the code in so someone can try and delag it, but this event can no longer occur randomly, per SoS's request. --NEO
command_alert("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert") command_alert("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert")
@@ -71,7 +71,7 @@
P.icon_state = "anom" P.icon_state = "anom"
P.name = "wormhole" P.name = "wormhole"
spawn(rand(300,600)) spawn(rand(300,600))
del(P) qdel(P)
*/ */
if(3) if(3)
if((world.time/10)>=3600 && config.ninjas_allowed && !sent_ninja_to_station)//If an hour has passed, relatively speaking. Also, if ninjas are allowed to spawn and if there is not already a ninja for the round. if((world.time/10)>=3600 && config.ninjas_allowed && !sent_ninja_to_station)//If an hour has passed, relatively speaking. Also, if ninjas are allowed to spawn and if there is not already a ninja for the round.

View File

@@ -1,26 +1,26 @@
/datum/event/portalstorm /datum/event/portalstorm
Announce() Announce()
command_alert("Subspace disruption detected around the vessel", "Anomaly Alert") command_alert("Subspace disruption detected around the vessel", "Anomaly Alert")
LongTerm() LongTerm()
var/list/turfs = list( ) var/list/turfs = list( )
var/turf/picked var/turf/picked
for(var/turf/T in world) for(var/turf/T in world)
if(T.z < 5 && istype(T,/turf/simulated/floor)) if(T.z < 5 && istype(T,/turf/simulated/floor))
turfs += T turfs += T
for(var/turf/T in world) for(var/turf/T in world)
if(prob(10) && T.z < 5 && istype(T,/turf/simulated/floor)) if(prob(10) && T.z < 5 && istype(T,/turf/simulated/floor))
spawn(50+rand(0,3000)) spawn(50+rand(0,3000))
picked = pick(turfs) picked = pick(turfs)
var/obj/portal/P = new /obj/portal( T ) var/obj/portal/P = new /obj/portal( T )
P.target = picked P.target = picked
P.creator = null P.creator = null
P.icon = 'icons/obj/objects.dmi' P.icon = 'icons/obj/objects.dmi'
P.failchance = 0 P.failchance = 0
P.icon_state = "anom" P.icon_state = "anom"
P.name = "wormhole" P.name = "wormhole"
spawn(rand(100,150)) spawn(rand(100,150))
del(P) qdel(P)

View File

@@ -1,88 +1,88 @@
/obj/effect/bhole /obj/effect/bhole
name = "black hole" name = "black hole"
icon = 'icons/obj/objects.dmi' icon = 'icons/obj/objects.dmi'
desc = "FUCK FUCK FUCK AAAHHH" desc = "FUCK FUCK FUCK AAAHHH"
icon_state = "bhole3" icon_state = "bhole3"
opacity = 1 opacity = 1
unacidable = 1 unacidable = 1
density = 0 density = 0
anchored = 1 anchored = 1
/obj/effect/bhole/New() /obj/effect/bhole/New()
spawn(4) spawn(4)
controller() controller()
/obj/effect/bhole/proc/controller() /obj/effect/bhole/proc/controller()
while(src) while(src)
if(!isturf(loc)) if(!isturf(loc))
del(src) qdel(src)
return return
//DESTROYING STUFF AT THE EPICENTER //DESTROYING STUFF AT THE EPICENTER
for(var/mob/living/M in orange(1,src)) for(var/mob/living/M in orange(1,src))
del(M) qdel(M)
for(var/obj/O in orange(1,src)) for(var/obj/O in orange(1,src))
del(O) qdel(O)
for(var/turf/simulated/ST in orange(1,src)) for(var/turf/simulated/ST in orange(1,src))
ST.ChangeTurf(/turf/space) ST.ChangeTurf(/turf/space)
sleep(6) sleep(6)
grav(10, 4, 10, 0 ) grav(10, 4, 10, 0 )
sleep(6) sleep(6)
grav( 8, 4, 10, 0 ) grav( 8, 4, 10, 0 )
sleep(6) sleep(6)
grav( 9, 4, 10, 0 ) grav( 9, 4, 10, 0 )
sleep(6) sleep(6)
grav( 7, 3, 40, 1 ) grav( 7, 3, 40, 1 )
sleep(6) sleep(6)
grav( 5, 3, 40, 1 ) grav( 5, 3, 40, 1 )
sleep(6) sleep(6)
grav( 6, 3, 40, 1 ) grav( 6, 3, 40, 1 )
sleep(6) sleep(6)
grav( 4, 2, 50, 6 ) grav( 4, 2, 50, 6 )
sleep(6) sleep(6)
grav( 3, 2, 50, 6 ) grav( 3, 2, 50, 6 )
sleep(6) sleep(6)
grav( 2, 2, 75,25 ) grav( 2, 2, 75,25 )
sleep(6) sleep(6)
//MOVEMENT //MOVEMENT
if( prob(50) ) if( prob(50) )
src.anchored = 0 src.anchored = 0
step(src,pick(alldirs)) step(src,pick(alldirs))
src.anchored = 1 src.anchored = 1
/obj/effect/bhole/proc/grav(var/r, var/ex_act_force, var/pull_chance, var/turf_removal_chance) /obj/effect/bhole/proc/grav(var/r, var/ex_act_force, var/pull_chance, var/turf_removal_chance)
if(!isturf(loc)) //blackhole cannot be contained inside anything. Weird stuff might happen if(!isturf(loc)) //blackhole cannot be contained inside anything. Weird stuff might happen
del(src) qdel(src)
return return
for(var/t = -r, t < r, t++) for(var/t = -r, t < r, t++)
affect_coord(x+t, y-r, ex_act_force, pull_chance, turf_removal_chance) affect_coord(x+t, y-r, ex_act_force, pull_chance, turf_removal_chance)
affect_coord(x-t, y+r, ex_act_force, pull_chance, turf_removal_chance) affect_coord(x-t, y+r, ex_act_force, pull_chance, turf_removal_chance)
affect_coord(x+r, y+t, ex_act_force, pull_chance, turf_removal_chance) affect_coord(x+r, y+t, ex_act_force, pull_chance, turf_removal_chance)
affect_coord(x-r, y-t, ex_act_force, pull_chance, turf_removal_chance) affect_coord(x-r, y-t, ex_act_force, pull_chance, turf_removal_chance)
return return
/obj/effect/bhole/proc/affect_coord(var/x, var/y, var/ex_act_force, var/pull_chance, var/turf_removal_chance) /obj/effect/bhole/proc/affect_coord(var/x, var/y, var/ex_act_force, var/pull_chance, var/turf_removal_chance)
//Get turf at coordinate //Get turf at coordinate
var/turf/T = locate(x, y, z) var/turf/T = locate(x, y, z)
if(isnull(T)) return if(isnull(T)) return
//Pulling and/or ex_act-ing movable atoms in that turf //Pulling and/or ex_act-ing movable atoms in that turf
if( prob(pull_chance) ) if( prob(pull_chance) )
for(var/obj/O in T.contents) for(var/obj/O in T.contents)
if(O.anchored) if(O.anchored)
O.ex_act(ex_act_force) O.ex_act(ex_act_force)
else else
step_towards(O,src) step_towards(O,src)
for(var/mob/living/M in T.contents) for(var/mob/living/M in T.contents)
step_towards(M,src) step_towards(M,src)
//Destroying the turf //Destroying the turf
if( T && istype(T,/turf/simulated) && prob(turf_removal_chance) ) if( T && istype(T,/turf/simulated) && prob(turf_removal_chance) )
var/turf/simulated/ST = T var/turf/simulated/ST = T
ST.ChangeTurf(/turf/space) ST.ChangeTurf(/turf/space)
return return

View File

@@ -36,7 +36,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
if(clong.density || prob(10)) if(clong.density || prob(10))
clong.meteorhit(src) clong.meteorhit(src)
else else
del(src) qdel(src)
if(clong && prob(25)) if(clong && prob(25))
src.loc = clong.loc src.loc = clong.loc
@@ -81,7 +81,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
if (isNotStationLevel(immrod.z)) if (isNotStationLevel(immrod.z))
immrod.z = pick(config.station_levels) immrod.z = pick(config.station_levels)
if(immrod.loc == end) if(immrod.loc == end)
del(immrod) qdel(immrod)
sleep(10) sleep(10)
for(var/obj/effect/immovablerod/imm in world) for(var/obj/effect/immovablerod/imm in world)
return return

View File

@@ -37,7 +37,7 @@ The "dust" will damage the hull of the station causin minor hull breaches.
density = 1 density = 1
anchored = 1 anchored = 1
var/strength = 2 //ex_act severity number var/strength = 2 //ex_act severity number
var/life = 2 //how many things we hit before del(src) var/life = 2 //how many things we hit before qdel(src)
weak weak
strength = 3 strength = 3
@@ -107,8 +107,7 @@ The "dust" will damage the hull of the station causin minor hull breaches.
life-- life--
if(life <= 0) if(life <= 0)
walk(src,0) walk(src,0)
spawn(1) qdel(src)
del(src)
return 0 return 0
return return
@@ -119,5 +118,5 @@ The "dust" will damage the hull of the station causin minor hull breaches.
ex_act(severity) ex_act(severity)
del(src) qdel(src)
return return

View File

@@ -14,7 +14,7 @@
evil_tree.icon_living = evil_tree.icon_state evil_tree.icon_living = evil_tree.icon_state
evil_tree.icon_dead = evil_tree.icon_state evil_tree.icon_dead = evil_tree.icon_state
evil_tree.icon_gib = evil_tree.icon_state evil_tree.icon_gib = evil_tree.icon_state
del(xmas) qdel(xmas)
/obj/item/weapon/toy/xmas_cracker /obj/item/weapon/toy/xmas_cracker
name = "xmas cracker" name = "xmas cracker"

View File

@@ -59,4 +59,4 @@
P.icon_state = "anom" P.icon_state = "anom"
P.name = "wormhole" P.name = "wormhole"
spawn(rand(300,600)) spawn(rand(300,600))
del(P) qdel(P)

View File

@@ -135,7 +135,7 @@ var/global/datum/controller/gameticker/ticker
for(var/obj/effect/landmark/start/S in landmarks_list) for(var/obj/effect/landmark/start/S in landmarks_list)
//Deleting Startpoints but we need the ai point to AI-ize people later //Deleting Startpoints but we need the ai point to AI-ize people later
if (S.name != "AI") if (S.name != "AI")
del(S) qdel(S)
world << "<FONT color='blue'><B>Enjoy the game!</B></FONT>" world << "<FONT color='blue'><B>Enjoy the game!</B></FONT>"
world << sound('sound/AI/welcome.ogg') // Skie world << sound('sound/AI/welcome.ogg') // Skie
//Holiday Round-start stuff ~Carn //Holiday Round-start stuff ~Carn
@@ -265,8 +265,8 @@ var/global/datum/controller/gameticker/ticker
//Otherwise if its a verb it will continue on afterwards. //Otherwise if its a verb it will continue on afterwards.
sleep(300) sleep(300)
if(cinematic) del(cinematic) //end the cinematic if(cinematic) qdel(cinematic) //end the cinematic
if(temp_buckle) del(temp_buckle) //release everybody if(temp_buckle) qdel(temp_buckle) //release everybody
return return
@@ -280,7 +280,7 @@ var/global/datum/controller/gameticker/ticker
continue continue
else else
player.create_character() player.create_character()
del(player) qdel(player)
proc/collect_minds() proc/collect_minds()

View File

@@ -26,6 +26,6 @@ var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind'
var/area/skipjack = locate(/area/shuttle/skipjack/station) var/area/skipjack = locate(/area/shuttle/skipjack/station)
for (var/mob/living/M in skipjack.contents) for (var/mob/living/M in skipjack.contents)
//maybe send the player a message that they've gone home/been kidnapped? Someone responsible for vox lore should write that. //maybe send the player a message that they've gone home/been kidnapped? Someone responsible for vox lore should write that.
del(M) qdel(M)
for (var/obj/O in skipjack.contents) for (var/obj/O in skipjack.contents)
del(O) //no hiding in lockers or anything qdel(O) //no hiding in lockers or anything

View File

@@ -89,7 +89,7 @@ rcd light flash thingy on matter drain
V.show_message("\blue You hear a loud electrical buzzing sound!", 2) V.show_message("\blue You hear a loud electrical buzzing sound!", 2)
spawn(50) spawn(50)
explosion(get_turf(M), 0,1,2,3) explosion(get_turf(M), 0,1,2,3)
del(M) qdel(M)
else usr << "Out of uses." else usr << "Out of uses."
else usr << "That's not a machine." else usr << "That's not a machine."

View File

@@ -93,7 +93,7 @@
M.enter_host(first_host.current) M.enter_host(first_host.current)
forge_meme_objectives(meme, first_host) forge_meme_objectives(meme, first_host)
del original qdel(original)
log_admin("Created [memes.len] memes.") log_admin("Created [memes.len] memes.")

View File

@@ -111,14 +111,14 @@
!istype(A,/obj/machinery/field_generator) && \ !istype(A,/obj/machinery/field_generator) && \
prob(detonation_chance)) prob(detonation_chance))
explosion(loc, power, power + power_step, power + power_step * 2, power + power_step * 3, 0) explosion(loc, power, power + power_step, power + power_step * 2, power + power_step * 3, 0)
del(src) qdel(src)
return return
/obj/effect/meteor/ex_act(severity) /obj/effect/meteor/ex_act(severity)
if (severity < 4) if (severity < 4)
del(src) qdel(src)
return return
/obj/effect/meteor/big /obj/effect/meteor/big
@@ -136,7 +136,7 @@
if(!istype(A,/obj/machinery/power/emitter) && \ if(!istype(A,/obj/machinery/power/emitter) && \
!istype(A,/obj/machinery/field_generator)) !istype(A,/obj/machinery/field_generator))
if(--src.hits <= 0) if(--src.hits <= 0)
del(src) //Dont blow up singularity containment if we get stuck there. qdel(src) //Dont blow up singularity containment if we get stuck there.
if (A) if (A)
for(var/mob/M in player_list) for(var/mob/M in player_list)
@@ -150,11 +150,11 @@
if (--src.hits <= 0) if (--src.hits <= 0)
if(prob(detonation_chance) && !istype(A, /obj/structure/grille)) if(prob(detonation_chance) && !istype(A, /obj/structure/grille))
explosion(loc, power, power + power_step, power + power_step * 2, power + power_step * 3, 0) explosion(loc, power, power + power_step, power + power_step * 2, power + power_step * 3, 0)
del(src) qdel(src)
return return
/obj/effect/meteor/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/effect/meteor/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/pickaxe)) if(istype(W, /obj/item/weapon/pickaxe))
del(src) qdel(src)
return return
..() ..()

Some files were not shown because too many files have changed in this diff Show More