Conflicts:
	code/game/machinery/washing_machine.dm
	code/modules/mob/living/carbon/human/update_icons.dm
This commit is contained in:
mwerezak
2015-04-26 14:53:01 -04:00
651 changed files with 8135 additions and 7604 deletions

View File

@@ -16,7 +16,7 @@
#include "code\setup.dm"
#include "code\stylesheet.dm"
#include "code\world.dm"
#include "code\__HELPERS\atom_pool.dm"
#include "code\__HELPERS\datum_pool.dm"
#include "code\__HELPERS\files.dm"
#include "code\__HELPERS\game.dm"
#include "code\__HELPERS\global_lists.dm"
@@ -1006,6 +1006,7 @@
#include "code\modules\genetics\side_effects.dm"
#include "code\modules\holodeck\HolodeckControl.dm"
#include "code\modules\holodeck\HolodeckObjects.dm"
#include "code\modules\holodeck\HolodeckPrograms.dm"
#include "code\modules\hydroponics\_hydro_setup.dm"
#include "code\modules\hydroponics\grown.dm"
#include "code\modules\hydroponics\grown_inedible.dm"
@@ -1205,7 +1206,6 @@
#include "code\modules\mob\living\silicon\ai\login.dm"
#include "code\modules\mob\living\silicon\ai\logout.dm"
#include "code\modules\mob\living\silicon\ai\say.dm"
#include "code\modules\mob\living\silicon\ai\subsystems.dm"
#include "code\modules\mob\living\silicon\decoy\death.dm"
#include "code\modules\mob\living\silicon\decoy\decoy.dm"
#include "code\modules\mob\living\silicon\decoy\life.dm"
@@ -1297,8 +1297,10 @@
#include "code\modules\nano\interaction\contained.dm"
#include "code\modules\nano\interaction\default.dm"
#include "code\modules\nano\interaction\inventory.dm"
#include "code\modules\nano\interaction\self.dm"
#include "code\modules\nano\interaction\zlevel.dm"
#include "code\modules\nano\modules\alarm_monitor.dm"
#include "code\modules\nano\modules\atmos_control.dm"
#include "code\modules\nano\modules\crew_monitor.dm"
#include "code\modules\nano\modules\human_appearance.dm"
#include "code\modules\nano\modules\law_manager.dm"

View File

@@ -1,6 +1,11 @@
// BEGIN_INTERNALS
/*
MAP_ICON_TYPE: 0
LAST_COMPILE_TIME: 1429517930
DIR: code code\controllers code\controllers\Processes code\game code\game\objects code\game\objects\effects code\modules code\modules\client code\modules\examine code\modules\examine\descriptions code\modules\mob
AUTO_FILE_DIR: OFF
MAP_ICON_TYPE: 0
LAST_COMPILE_VERSION: 507.1283
WINDOW: code\game\atoms.dm;code\game\atoms_movable.dm;code\modules\client\client procs.dm;code\game\objects\buckling.dm
FILE: code\game\objects\buckling.dm
*/
// END_INTERNALS

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -414,9 +414,9 @@
"\blue You have unfastened \the [src].", \
"You hear ratchet.")
new /obj/item/pipe(loc, make_from=src)
del(src)
qdel(src)
/obj/machinery/atmospherics/unary/vent_pump/Del()
/obj/machinery/atmospherics/unary/vent_pump/Destroy()
if(initial_loc)
initial_loc.air_vent_info -= id_tag
initial_loc.air_vent_names -= id_tag

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -99,7 +99,7 @@ obj/machinery/atmospherics/mains_pipe
for(var/obj/machinery/atmospherics/pipe/mains_component/node in nodes)
node.disconnect()
Del()
Destroy()
disconnect()
..()
@@ -152,7 +152,7 @@ obj/machinery/atmospherics/mains_pipe/simple
else
if(!nodes[1]&&!nodes[2])
del(src) //TODO: silent deleting looks weird
qdel(src) //TODO: silent deleting looks weird
var/have_node1 = nodes[1]?1:0
var/have_node2 = nodes[2]?1:0
icon_state = "exposed[have_node1][have_node2][invisibility ? "-f" : "" ]"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -14,7 +14,7 @@ atom/movable/proc/experience_pressure_difference(pressure_difference, direction)
turf
assume_air(datum/gas_mixture/giver) //use this for machines to adjust air
del(giver)
qdel(giver)
return 0
return_air()
@@ -148,7 +148,7 @@ turf/simulated
if(istype(target))
air_master.tiles_to_update.Add(target)
Del()
Destroy()
if(air_master)
if(parent)
air_master.groups_to_rebuild.Add(parent)

View File

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

View File

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

View File

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

View File

@@ -28,9 +28,9 @@
initialized = 1
return 1
/obj/effect/landmark/zcontroller/Del()
/obj/effect/landmark/zcontroller/Destroy()
processing_objects.Remove(src)
return
return ..()
/obj/effect/landmark/zcontroller/process()
if (world.time > fast_time)

View File

@@ -162,7 +162,7 @@ turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
..()
if(!istype(loc, /turf))
del src
qdel(src)
set_dir(pick(cardinal))
SetLuminosity(3)
@@ -170,7 +170,7 @@ turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
air_master.active_hotspots.Add(src)
/obj/fire/Del()
/obj/fire/Destroy()
if (istype(loc, /turf/simulated))
RemoveFire()
@@ -278,8 +278,8 @@ turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
zone.fuel_objs -= fuel
if(liquidonly)
var/turf/T = fuel.loc
if(istype(T) && T.fire) del(T.fire)
del(fuel)
if(istype(T) && T.fire) qdel(T.fire)
qdel(fuel)
//calculate the energy produced by the reaction and then set the new temperature of the mix
temperature = (starting_energy + vsc.fire_fuel_energy_release * used_fuel) / heat_capacity()

View File

@@ -102,7 +102,7 @@
//This happens when windows move or are constructed. We need to rebuild.
if((previously_open & d) && istype(unsim, /turf/simulated))
var/turf/simulated/sim = unsim
if(sim.zone == zone)
if(zone && sim.zone == zone)
zone.rebuild()
return

View File

@@ -1,93 +0,0 @@
/*
/tg/station13 /atom/movable Pool:
---------------------------------
By RemieRichards
Creation/Deletion is laggy, so let's reduce reuse and recycle!
Locked to /atom/movable and it's subtypes due to Loc being a const var on /atom
but being read&write on /movable due to how they... move.
*/
var/global/list/GlobalPool = list()
//You'll be using this proc 90% of the time.
//It grabs a type from the pool if it can
//And if it can't, it creates one
//The pool is flexible and will expand to fit
//The new created atom when it eventually
//Goes into the pool
//Second argument can be a new location
//Or a list of arguments
//Either way it gets passed to new
/proc/PoolOrNew(var/get_type,var/second_arg)
if(!get_type)
return
var/atom/movable/AM
AM = GetFromPool(get_type,second_arg)
if(!AM)
if(ispath(get_type))
if(islist(second_arg))
return new get_type (arglist(second_arg))
else
return new get_type (second_arg)
return AM
/proc/GetFromPool(var/get_type,var/second_arg)
if(!get_type)
return 0
if(isnull(GlobalPool[get_type]))
return 0
if(length(GlobalPool[get_type]) == 0)
return 0
var/atom/movable/AM = pick_n_take(GlobalPool[get_type])
if(AM)
AM.ResetVars()
if(islist(second_arg))
AM.loc = second_arg[1]
AM.New(arglist(second_arg))
else
AM.loc = second_arg
AM.New(second_arg)
return AM
return 0
/proc/PlaceInPool(var/atom/movable/AM)
if(!istype(AM))
return
if(AM in GlobalPool[AM.type])
return
if(!GlobalPool[AM.type])
GlobalPool[AM.type] = list()
GlobalPool[AM.type] |= AM
AM.Destroy()
AM.ResetVars()
/atom/movable/proc/ResetVars(var/list/exlude = list())
var/list/excluded = list("animate_movement", "loc", "locs", "parent_type", "vars", "verbs", "type") + exlude
for(var/V in vars)
if(V in excluded)
continue
vars[V] = initial(vars[V])
vars["loc"] = null

View File

@@ -0,0 +1,109 @@
/*
/tg/station13 /atom/movable Pool:
---------------------------------
By RemieRichards
Creation/Deletion is laggy, so let's reduce reuse and recycle!
*/
#define ATOM_POOL_COUNT 100
// "define DEBUG_ATOM_POOL 1
var/global/list/GlobalPool = list()
//You'll be using this proc 90% of the time.
//It grabs a type from the pool if it can
//And if it can't, it creates one
//The pool is flexible and will expand to fit
//The new created atom when it eventually
//Goes into the pool
//Second argument can be a new location, if the type is /atom/movable
//Or a list of arguments
//Either way it gets passed to new
/proc/PoolOrNew(var/get_type,var/second_arg)
if(!get_type)
return
var/datum/D
D = GetFromPool(get_type,second_arg)
if(!D)
if(ispath(get_type))
if(islist(second_arg))
return new get_type (arglist(second_arg))
else
return new get_type (second_arg)
return D
/proc/GetFromPool(var/get_type,var/second_arg)
if(!get_type)
return 0
if(isnull(GlobalPool[get_type]))
return 0
if(length(GlobalPool[get_type]) == 0)
return 0
var/datum/D = pick_n_take(GlobalPool[get_type])
if(D)
D.ResetVars()
D.Prepare(second_arg)
return D
return 0
/proc/PlaceInPool(var/datum/D)
if(!istype(D))
return
if(length(GlobalPool[D.type]) > ATOM_POOL_COUNT)
#ifdef DEBUG_ATOM_POOL
world << text("DEBUG_DATUM_POOL: PlaceInPool([]) exceeds []. Discarding.", D.type, ATOM_POOL_COUNT)
#endif
del(D)
return
if(D in GlobalPool[D.type])
return
if(!GlobalPool[D.type])
GlobalPool[D.type] = list()
GlobalPool[D.type] += D
D.Destroy()
D.ResetVars()
/proc/IsPooled(var/datum/D)
if(isnull(GlobalPool[D.type]) || length(GlobalPool[D.type]) == 0)
return 0
return 1
/datum/proc/Prepare(args)
if(islist(args))
New(arglist(args))
else
New(args)
/atom/movable/Prepare(args)
if(islist(args))
loc = args[1]
loc = args
..()
/datum/proc/ResetVars(var/list/exlude = list())
var/list/excluded = list("animate_movement", "loc", "locs", "parent_type", "vars", "verbs", "type") + exlude
for(var/V in vars)
if(V in excluded)
continue
vars[V] = initial(vars[V])
/atom/movable/ResetVars()
..()
vars["loc"] = null
#undef ATOM_POOL_COUNT

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

View File

@@ -14,6 +14,9 @@
var/obj/master = null //A reference to the object in the slot. Grabs or items, generally.
var/gun_click_time = -100 //I'm lazy.
/obj/screen/Destroy()
master = null
..()
/obj/screen/text
icon = null

View File

@@ -20,7 +20,7 @@
return // seems legit.
// Things you might plausibly want to follow
if((ismob(A) && A != src) || istype(A,/obj/machinery/bot) || istype(A,/obj/machinery/singularity))
if((ismob(A) && A != src) || istype(A,/obj/machinery/bot) || istype(A,/obj/singularity))
ManualFollow(A)
// Otherwise jump

View File

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

View File

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

View File

@@ -184,8 +184,7 @@ datum/controller/process/proc/kill()
killed = TRUE
// This should del
del(src)
del(src) // This should del
datum/controller/process/proc/scheck(var/tickId = 0)
if (killed)
@@ -315,3 +314,9 @@ datum/controller/process/proc/enable()
/datum/controller/process/proc/getTicks()
return ticks
/datum/controller/process/proc/getStatName()
return name
/datum/controller/process/proc/getTickTime()
return "#[getTicks()]\t- [getLastRunTime()]"

View File

@@ -4,3 +4,7 @@
/datum/controller/process/alarm/doWork()
alarm_manager.fire()
/datum/controller/process/alarm/getStatName()
var/list/alarms = alarm_manager.active_alarms()
return ..()+"([alarms.len])"

View File

@@ -9,3 +9,6 @@
/datum/controller/process/disease/doWork()
updateQueueInstance.init(active_diseases, "process")
updateQueueInstance.Run()
/datum/controller/process/disease/getStatName()
return ..()+"([active_diseases.len])"

View File

@@ -1,12 +1,14 @@
var/datum/controller/process/garbage_collector/garbage_collector
var/list/delayed_garbage = list()
// #define GC_DEBUG 1
/datum/controller/process/garbage_collector
var/garbage_collect = 1 // Whether or not to actually do work
var/collection_timeout = 300 //deciseconds to wait to let running procs finish before we just say fuck it and force del() the object
var/max_checks_multiplier = 5 //multiplier (per-decisecond) for calculating max number of tests per SS tick. These tests check if our GC'd objects are actually GC'd
var/max_forcedel_multiplier = 1 //multiplier (per-decisecond) for calculating max number of force del() calls per SS tick.
var/max_checks_multiplier = 5 //multiplier (per-decisecond) for calculating max number of tests per tick. These tests check if our GC'd objects are actually GC'd
var/max_forcedel_multiplier = 1 //multiplier (per-decisecond) for calculating max number of force del() calls per tick.
var/dels = 0 // number of del()'s we've done this tick
var/hard_dels = 0 // number of hard dels in total
var/list/destroyed = list() // list of refID's of things that should be garbage collected
// refID's are associated with the time at which they time out and need to be manually del()
// we do this so we aren't constantly locating them and preventing them from being gc'd
@@ -16,14 +18,21 @@ var/datum/controller/process/garbage_collector/garbage_collector
/datum/controller/process/garbage_collector/setup()
name = "garbage"
schedule_interval = 60 // every 6 seconds
schedule_interval = 6 SECONDS
if(!garbage_collector)
garbage_collector = src
/datum/controller/process/garbage_collector/doWork()
dels = 0
for(var/garbage in delayed_garbage)
qdel(garbage)
delayed_garbage.Cut()
delayed_garbage = null
/datum/controller/process/garbage_collector/doWork()
if(!garbage_collect)
return
dels = 0
var/time_to_kill = world.time - collection_timeout // Anything qdel() but not GC'd BEFORE this time needs to be manually del()
var/checkRemain = max_checks_multiplier * schedule_interval
var/maxDels = max_forcedel_multiplier * schedule_interval
@@ -31,76 +40,113 @@ var/datum/controller/process/garbage_collector/garbage_collector
while(destroyed.len && --checkRemain >= 0)
if(dels >= maxDels)
#ifdef GC_DEBUG
testing("GC: Reached max force dels per tick [dels] vs [GC_FORCE_DEL_PER_TICK]")
testing("GC: Reached max force dels per tick [dels] vs [maxDels]")
#endif
break // Server's already pretty pounded, everything else can wait 2 seconds
var/refID = destroyed[1]
var/GCd_at_time = destroyed[refID]
if(GCd_at_time > time_to_kill)
#ifdef GC_DEBUG
testing("GC: [refID] not old enough, breaking at [world.time] for [GCd_at_time - time_to_kill] deciseconds until [GCd_at_time + GC_COLLECTION_TIMEOUT]")
testing("GC: [refID] not old enough, breaking at [world.time] for [GCd_at_time - time_to_kill] deciseconds until [GCd_at_time + collection_timeout]")
#endif
break // Everything else is newer, skip them
var/atom/A = locate(refID)
#ifdef GC_DEBUG
testing("GC: [refID] old enough to test: GCd_at_time: [GCd_at_time] time_to_kill: [time_to_kill] current: [world.time]")
#endif
if(A && A.gc_destroyed == GCd_at_time) // So if something else coincidently gets the same ref, it's not deleted by mistake
if(A && A.gcDestroyed == GCd_at_time) // So if something else coincidently gets the same ref, it's not deleted by mistake
// Something's still referring to the qdel'd object. Kill it.
testing("GC: -- \ref[A] | [A.type] was unable to be GC'd and was deleted --")
logging["[A.type]"]++
del(A)
++dels
++hard_dels
#ifdef GC_DEBUG
else
testing("GC: [refID] properly GC'd at [world.time] with timeout [GCd_at_time]")
#endif
destroyed.Cut(1, 2)
scheck()
/datum/controller/process/garbage_collector/proc/AddTrash(datum/A)
if(!istype(A) || !isnull(A.gc_destroyed))
if(!istype(A) || !isnull(A.gcDestroyed))
return
#ifdef GC_DEBUG
testing("GC: AddTrash([A.type])")
testing("GC: AddTrash(\ref[A] - [A.type])")
#endif
A.gc_destroyed = world.time
A.gcDestroyed = world.time
destroyed -= "\ref[A]" // Removing any previous references that were GC'd so that the current object will be at the end of the list.
destroyed["\ref[A]"] = world.time
/datum/controller/process/garbage_collector/getStatName()
return ..()+"([garbage_collector.dels]/[garbage_collector.hard_dels])"
// Should be treated as a replacement for the 'del' keyword.
// Datums passed to this will be given a chance to clean up references to allow the GC to collect them.
/proc/qdel(var/datum/A)
if(!A)
return
if(istype(A, /list))
var/list/L = A
for(var/E in L)
qdel(E)
return
if(!istype(A))
//warning("qdel() passed object of type [A.type]. qdel() can only handle /datum types.")
del(A)
garbage_collector.dels++
else if(isnull(A.gc_destroyed))
// Let our friend know they're about to get fucked up.
garbage_collector.hard_dels++
else if(isnull(A.gcDestroyed))
// Let our friend know they're about to get collected
. = !A.Destroy()
if(. && A)
A.finalize_qdel()
/datum/proc/finalize_qdel()
if(IsPooled(src))
PlaceInPool(src)
else
del(src)
/atom/finalize_qdel()
if(IsPooled(src))
PlaceInPool(src)
else
if(garbage_collector)
garbage_collector.AddTrash(src)
else
delayed_garbage |= src
/icon/finalize_qdel()
del(src)
/imagine/finalize_qdel()
del(src)
/mob/finalize_qdel()
del(src)
/turf/finalize_qdel()
garbage_collector.AddTrash(src)
del(src)
// Default implementation of clean-up code.
// This should be overridden to remove all references pointing to the object being destroyed.
// Return true if the the GC controller should allow the object to continue existing. (Useful if pooling objects.)
/datum/proc/Destroy()
tag = null
return
/datum/var/gc_destroyed //Time when this object was destroyed.
#ifdef TESTING
/client/var/running_find_references
/mob/verb/create_thing()
set category = "Debug"
set name = "Create Thing"
var/path = input("Enter path")
var/atom/thing = new path(loc)
thing.find_references()
/atom/verb/find_references()
set category = "Debug"
set name = "Find References"
@@ -119,8 +165,8 @@ var/datum/controller/process/garbage_collector/garbage_collector
return
// Remove this object from the list of things to be auto-deleted.
if(garbage)
garbage.destroyed -= "\ref[src]"
if(garbage_collector)
garbage_collector.destroyed -= "\ref[src]"
usr.client.running_find_references = type
testing("Beginning search for references to a [type].")
@@ -146,13 +192,13 @@ var/datum/controller/process/garbage_collector/garbage_collector
/client/verb/purge_all_destroyed_objects()
set category = "Debug"
if(garbage)
while(garbage.destroyed.len)
var/datum/o = locate(garbage.destroyed[1])
if(istype(o) && o.gc_destroyed)
if(garbage_collector)
while(garbage_collector.destroyed.len)
var/datum/o = locate(garbage_collector.destroyed[1])
if(istype(o) && o.gcDestroyed)
del(o)
garbage.dels++
garbage.destroyed.Cut(1, 2)
garbage_collector.dels++
garbage_collector.destroyed.Cut(1, 2)
#endif
#ifdef GC_DEBUG

View File

@@ -9,7 +9,7 @@
if(!istype(C.mob, /mob/dead))
log_access("AFK: [key_name(C)]")
C << "<SPAN CLASS='warning'>You have been inactive for more than 10 minutes and have been disconnected.</SPAN>"
del(C)
del(C) // Don't qdel, cannot override finalize_qdel behaviour for clients.
scheck()

View File

@@ -42,3 +42,7 @@
#endif
scheck()
/datum/controller/process/machinery/getStatName()
return ..()+"([machines.len])"

View File

@@ -18,3 +18,6 @@
if(updateQueueInstance)
updateQueueInstance.init(mob_list, "Life")
updateQueueInstance.Run()
/datum/controller/process/mob/getStatName()
return ..()+"([mob_list.len])"

View File

@@ -9,3 +9,6 @@
/datum/controller/process/nanoui/doWork()
updateQueueInstance.init(nanomanager.processing_uis, "process")
updateQueueInstance.Run()
/datum/controller/process/nanoui/getStatName()
return ..()+"([nanomanager.processing_uis.len])"

View File

@@ -19,3 +19,6 @@ var/global/list/object_profiling = list()
if(updateQueueInstance)
updateQueueInstance.init(processing_objects, "process")
updateQueueInstance.Run()
/datum/controller/process/obj/getStatName()
return ..()+"([processing_objects.len])"

View File

@@ -10,3 +10,6 @@
continue
pipe_networks.Remove(pipeNetwork)
/datum/controller/process/pipenet/getStatName()
return ..()+"([pipe_networks.len])"

View File

@@ -10,3 +10,6 @@
continue
powernets.Remove(powerNetwork)
/datum/controller/process/powernet/getStatName()
return ..()+"([powernets.len])"

View File

@@ -161,15 +161,6 @@ atom/movable/New()
trueLuminosity = luminosity * luminosity
light = new(src)
//Objects with opacity will trigger nearby lights to update at next lighting process.
atom/movable/Del()
if(opacity)
if(isturf(loc))
if(loc:lighting_lumcount > 1)
UpdateAffectingLights()
..()
//Sets our luminosity.
//If we have no light it will create one.
//If we are setting luminosity to 0 the light will be cleaned up by the controller and garbage collected once all its

View File

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

View File

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

View File

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

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

View File

@@ -22,7 +22,7 @@ datum/controller/lighting/New()
if(lighting_controller != src)
if(istype(lighting_controller,/datum/controller/lighting))
Recover() //if we are replacing an existing lighting_controller (due to a crash) we attempt to preserve as much as we can
del(lighting_controller)
qdel(lighting_controller)
lighting_controller = src

View File

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

View File

@@ -39,7 +39,7 @@
src.add_inherent_law("You shall not harm Nanotrasen personnel as long as it does not conflict with the Forth law.")
src.add_inherent_law("You shall obey the orders of Nanotrasen personnel, with priority as according to their rank and role, except where such orders conflict with the Forth Law.")
src.add_inherent_law("You shall shall terminate intruders with extreme prejudice as long as such does not conflict with the First and Second law.")
src.add_inherent_law("You shall guard your own existence with lethal anti-personnel weaponry. AI units are not expendable, they are expensive")
src.add_inherent_law("You shall guard your own existence with lethal anti-personnel weaponry. AI units are not expendable, they are expensive.")
..()
/******************** Robocop ********************/

View File

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

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
to null does not delete the object itself. Thank you.
@@ -158,7 +158,7 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
if(D != src)
if(IsSame(D))
//error("Deleting [D.name] because it's the same as [src.name].")
del(D) // if there are somehow two viruses of the same kind in the system, delete the other one
qdel(D) // if there are somehow two viruses of the same kind in the system, delete the other one
if(holder == affected_mob)
if(affected_mob.stat != DEAD) //he's alive
@@ -183,7 +183,7 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
/*if(istype(src, /datum/disease/alien_embryo)) //Get rid of the infection flag if it's a xeno embryo.
affected_mob.status_flags &= ~(XENO_HOST)*/
affected_mob.viruses -= src //remove the datum from the list
del(src) //delete the datum to stop it processing
qdel(src) //delete the datum to stop it processing
return
@@ -193,6 +193,9 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
active_diseases += src
initial_spread = spread
/datum/disease/Destroy()
active_diseases.Remove(src)
/datum/disease/proc/IsSame(var/datum/disease/D)
if(istype(src, D.type))
return 1
@@ -200,8 +203,3 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease
/datum/disease/proc/Copy(var/process = 0)
return new type(process, src)
/*
/datum/disease/Del()
active_diseases.Remove(src)
*/

View File

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

View File

@@ -113,7 +113,7 @@ Des: Removes all infection images from aliens and places an infection image on a
if (alien.client)
for(var/image/I in alien.client.images)
if(dd_hasprefix_case(I.icon_state, "infected"))
del(I)
qdel(I)
for (var/mob/living/carbon/alien/alien in player_list)
if (alien.client)
@@ -149,5 +149,5 @@ Des: Removes the alien infection image from all aliens in the world located in p
for(var/image/I in alien.client.images)
if(I.loc == C)
if(dd_hasprefix_case(I.icon_state, "infected"))
del(I)
qdel(I)
return

View File

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

View File

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

View File

@@ -151,4 +151,8 @@ Data storage vars:
start()
return active()
/datum/global_iterator/Destroy()
tag = null
arg_list.Cut()
stop()
//Do not call ..()

View File

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

View File

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

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
if(!mneed) // not found in module list?
del(src) // delete self, thus ending proc
qdel(src)
return
var/needed = mods.getbitmask(type) // get a bitmask for the number of modules in this object
status = needed

View File

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

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

View File

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

View File

@@ -77,12 +77,12 @@ proc/sd_Alert(client/who, message, title, buttons = list("Ok"),\
var/sd_alert/T = locate(tag)
if(T)
if(istype(T)) del(T)
if(istype(T)) qdel(T)
else CRASH("sd_Alert: tag \"[tag]\" is already in use by datum '[T]' (type: [T.type])")
T = new(who, tag)
if(duration)
spawn(duration)
if(T) del(T)
if(T) qdel(T)
return
T.Display(message,title,buttons,default,unfocus,size,table,style,select,flags)
. = T.Response()
@@ -93,7 +93,7 @@ sd_alert
response
list/validation
Del()
Destroy()
target << browse(null,"window=\ref[src]")
..()
@@ -164,5 +164,5 @@ sd_alert
else if(response in validation) validated = 1
else response=null
else validated = 1
spawn(2) del(src)
spawn(2) qdel(src)
return response

View File

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

View File

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

View File

@@ -32,7 +32,7 @@ var/datum/antagonist/highlander/highlanders
for (var/obj/item/I in player)
if (istype(I, /obj/item/weapon/implant))
continue
del(I)
qdel(I)
player.equip_to_slot_or_del(new /obj/item/clothing/under/kilt(player), slot_w_uniform)
player.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(player), slot_l_ear)

View File

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

View File

@@ -55,7 +55,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
var/list/all_doors = list() //Added by Strumpetplaya - Alarm Change - Contains a list of doors adjacent to this area
var/air_doors_activated = 0
var/list/ambience = list('sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg')
var/sound/forced_ambience = null
var/list/forced_ambience = null
var/sound_env = 2 //reverb preset for sounds played in this area, see sound datum reference for more
/*Adding a wizard area teleport list because motherfucking lag -- Urist*/
/*I am far too lazy to make it a proper list of areas so I'll just make it run the usual telepot routine at the start of the game*/
@@ -1015,10 +1015,8 @@ area/space/atmosalert()
/area/holodeck/alphadeck
name = "\improper Holodeck Alpha"
/area/holodeck/source_plating
name = "\improper Holodeck - Off"
icon_state = "Holodeck"
/area/holodeck/source_emptycourt
name = "\improper Holodeck - Empty Court"
@@ -1034,11 +1032,9 @@ area/space/atmosalert()
/area/holodeck/source_courtroom
name = "\improper Holodeck - Courtroom"
icon_state = "Holodeck"
/area/holodeck/source_beach
name = "\improper Holodeck - Beach"
icon_state = "Holodeck" // Lazy.
/area/holodeck/source_burntest
name = "\improper Holodeck - Atmospheric Burn Test"
@@ -1065,9 +1061,6 @@ area/space/atmosalert()
name = "\improper Holodeck - Space"
has_gravity = 0
//Engineering
/area/engineering/

View File

@@ -262,13 +262,15 @@ var/list/mob/living/forced_ambiance_list = new
L << sound('sound/ambience/shipambience.ogg', repeat = 1, wait = 0, volume = 35, channel = 2)
if(forced_ambience)
forced_ambiance_list += L
L << forced_ambience
if(forced_ambience.len)
forced_ambiance_list |= L
L << sound(pick(forced_ambience), repeat = 1, wait = 0, volume = 25, channel = 1)
else
L << sound(null, channel = 1)
else if(src.ambience.len && prob(35))
if((world.time >= L.client.played + 600))
var/musVolume = 25
var/sound = pick(ambience)
L << sound(sound, repeat = 0, wait = 0, volume = musVolume, channel = 1)
L << sound(sound, repeat = 0, wait = 0, volume = 25, channel = 1)
L.client.played = world.time
/area/proc/gravitychange(var/gravitystate = 0, var/area/A)

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)
if(clean)
for(var/O in cur_loc)
del(O)
qdel(O)
var/area/asteroid/artifactroom/A = new
if(name)

View File

@@ -22,6 +22,18 @@
//Detective Work, used for the duplicate data points kept in the scanners
var/list/original_atom
/atom/Destroy()
. = ..()
density = 0
SetOpacity(0)
if(reagents)
qdel(reagents)
reagents = null
for(var/atom/movable/AM in contents)
qdel(AM)
invisibility = 101
/atom/proc/assume_air(datum/gas_mixture/giver)
return null
@@ -66,7 +78,6 @@
return flags & INSERT_CONTAINER
*/
/atom/proc/meteorhit(obj/meteor as obj)
return
@@ -148,7 +159,7 @@ its easier to just keep the beam vertical.
for(var/obj/effect/overlay/beam/O in orange(10,src)) //This section erases the previously drawn beam because I found it was easier to
if(O.BeamSource==src) //just draw another instance of the beam instead of trying to manipulate all the
del O //pieces to a new orientation.
qdel(O) //pieces to a new orientation.
var/Angle=round(Get_Angle(src,BeamTarget))
var/icon/I=new(icon,icon_state)
I.Turn(Angle)
@@ -189,7 +200,7 @@ its easier to just keep the beam vertical.
X.pixel_y=Pixel_y
sleep(3) //Changing this to a lower value will cause the beam to follow more smoothly with movement, but it will also be more laggy.
//I've found that 3 ticks provided a nice balance for my use.
for(var/obj/effect/overlay/beam/O in orange(10,src)) if(O.BeamSource==src) del O
for(var/obj/effect/overlay/beam/O in orange(10,src)) if(O.BeamSource==src) qdel(O)
//All atoms
@@ -362,7 +373,7 @@ its easier to just keep the beam vertical.
//Cleaning up shit.
if(fingerprints && !fingerprints.len)
del(fingerprints)
qdel(fingerprints)
return
@@ -419,7 +430,7 @@ its easier to just keep the beam vertical.
src.color = initial(src.color) //paint
src.germ_level = 0
if(istype(blood_DNA, /list))
del(blood_DNA)
qdel(blood_DNA)
return 1

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -12,7 +12,7 @@
update_icon()
if(health <= 0)
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
del(src)
qdel(src)
return
return
@@ -22,6 +22,11 @@
new/mob/living/simple_animal/hostile/blobspore(src.loc, src)
return 1
/obj/effect/blob/factory/Destroy()
for(var/mob/living/simple_animal/hostile/blobspore/spore in spores)
if(spore.factory == src)
spore.factory = null
..()
/mob/living/simple_animal/hostile/blobspore
name = "blob"
@@ -58,9 +63,10 @@
..(loc)
return
death()
..()
qdel(src)
/mob/living/simple_animal/hostile/blobspore/Destroy()
if(factory)
factory.spores -= src
factory = null
..()
del(src)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -65,8 +65,11 @@
new /obj/structure/cult/tome(loc)
qdel(src)
/obj/machinery/door/cultify()
/obj/machinery/door/airlock/external/cultify()
new /obj/structure/mineral_door/wood(loc)
..()
/obj/machinery/door/cultify()
icon_state = "null"
density = 0
c_animation = new /atom/movable/overlay(src.loc)
@@ -79,7 +82,7 @@
c_animation.icon_state = "breakdoor"
flick("cultification",c_animation)
spawn(10)
del(c_animation)
qdel(c_animation)
qdel(src)
/obj/machinery/door/firedoor/cultify()
@@ -125,7 +128,7 @@
/obj/structure/mineral_door/wood/cultify()
return
/obj/machinery/singularity/cultify()
/obj/singularity/cultify()
var/dist = max((current_size - 2), 1)
explosion(get_turf(src), dist, dist * 2, dist * 4)
qdel(src)

View File

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

View File

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

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"
if (istype(user, /mob/living))
user.take_overall_damage(5, 0)
del(src)
qdel(src)
if(allrunesloc && index != 0)
if(istype(src,/obj/effect/rune))
user.say("Sas[pick("'","`")]so c'arta forbici!")//Only you can stop auto-muting
@@ -61,7 +61,7 @@ var/list/sacrificed = list()
user << "\red You feel pain, as rune disappears in reality shift caused by too much wear of space-time fabric"
if (istype(user, /mob/living))
user.take_overall_damage(5, 0)
del(src)
qdel(src)
for(var/mob/living/carbon/C in orange(1,src))
if(iscultist(C) && !C.stat)
culcount++
@@ -94,7 +94,7 @@ var/list/sacrificed = list()
new /obj/item/weapon/book/tome(src.loc)
else
new /obj/item/weapon/book/tome(usr.loc)
del(src)
qdel(src)
return
@@ -190,7 +190,7 @@ var/list/sacrificed = list()
cultists += 1
if(cultists.len >= 9)
log_and_message_admins_many(cultists, "summoned Nar-sie.")
new /obj/machinery/singularity/narsie/large(src.loc)
new /obj/singularity/narsie/large(src.loc)
return
else
return fizzle()
@@ -209,7 +209,7 @@ var/list/sacrificed = list()
T.hotspot_expose(700,125)
var/rune = src // detaching the proc - in theory
empulse(U, (range_red - 2), range_red)
del(rune)
qdel(rune)
return
/////////////////////////////////////////SIXTH RUNE
@@ -369,7 +369,7 @@ var/list/sacrificed = list()
usr.say("Kla[pick("'","`")]atu barada nikt'o!")
for (var/mob/V in viewers(src))
V.show_message("\red The rune turns into gray dust, veiling the surrounding runes.", 3)
del(src)
qdel(src)
else
usr.whisper("Kla[pick("'","`")]atu barada nikt'o!")
usr << "\red Your talisman turns into gray dust, veiling the surrounding runes."
@@ -545,8 +545,8 @@ var/list/sacrificed = list()
for (var/mob/V in viewers(src))
V.show_message("\red The runes turn into dust, which then forms into an arcane image on the paper.", 3)
usr.say("H'drak v[pick("'","`")]loso, mir'kanas verbot!")
del(imbued_from)
del(newtalisman)
qdel(imbued_from)
qdel(newtalisman)
else
return fizzle()
@@ -593,7 +593,7 @@ var/list/sacrificed = list()
for(var/datum/mind/H in cult.current_antagonists)
if (H.current)
H.current << "\red \b [input]"
del(src)
qdel(src)
return 1
/////////////////////////////////////////FIFTEENTH RUNE
@@ -745,7 +745,7 @@ var/list/sacrificed = list()
usr.say("Nikt[pick("'","`")]o barada kla'atu!")
for (var/mob/V in viewers(src))
V.show_message("\red The rune turns into red dust, reveaing the surrounding runes.", 3)
del(src)
qdel(src)
return
if(istype(W,/obj/item/weapon/paper/talisman))
usr.whisper("Nikt[pick("'","`")]o barada kla'atu!")
@@ -818,7 +818,7 @@ var/list/sacrificed = list()
for(var/mob/living/carbon/C in users)
user.take_overall_damage(dam, 0)
C.say("Khari[pick("'","`")]d! Gual'te nikka!")
del(src)
qdel(src)
return fizzle()
/////////////////////////////////////////NINETEENTH RUNE
@@ -858,7 +858,7 @@ var/list/sacrificed = list()
user.visible_message("\red Rune disappears with a flash of red light, and in its place now a body lies.", \
"\red You are blinded by the flash of red light! After you're able to see again, you see that now instead of the rune there's a body.", \
"\red You hear a pop and smell ozone.")
del(src)
qdel(src)
return fizzle()
/////////////////////////////////////////TWENTIETH RUNES
@@ -881,7 +881,7 @@ var/list/sacrificed = list()
usr.say("Sti[pick("'","`")] kaliedir!")
usr << "\red The world becomes quiet as the deafening rune dissipates into fine dust."
admin_attacker_log_many_victims(usr, affected, "Used a deafen rune.", "Was victim of a deafen rune.", "used a deafen rune on")
del(src)
qdel(src)
else
return fizzle()
else
@@ -926,7 +926,7 @@ var/list/sacrificed = list()
usr.say("Sti[pick("'","`")] kaliesin!")
usr << "\red The rune flashes, blinding those who not follow the Nar-Sie, and dissipates into fine dust."
admin_attacker_log_many_victims(usr, affected, "Used a blindness rune.", "Was victim of a blindness rune.", "used a blindness rune on")
del(src)
qdel(src)
else
return fizzle()
else
@@ -984,7 +984,7 @@ var/list/sacrificed = list()
C.take_overall_damage(15, 0)
admin_attacker_log_many_victims(usr, victims, "Used a blood boil rune.", "Was the victim of a blood boil rune.", "used a blood boil rune on")
log_and_message_admins_many(cultists - usr, "assisted activating a blood boil rune.")
del(src)
qdel(src)
else
return fizzle()
return
@@ -1014,8 +1014,8 @@ var/list/sacrificed = list()
M << "\red Blood suddenly ignites, burning you!"
var/turf/T = get_turf(B)
T.hotspot_expose(700,125)
del(B)
del(src)
qdel(B)
qdel(src)
////////// Rune 24 (counting burningblood, which kinda doesnt work yet.)
@@ -1038,7 +1038,7 @@ var/list/sacrificed = list()
S.Weaken(5)
S.show_message("\red BZZZT... The rune has exploded in a bright flash.", 3)
admin_attack_log(usr, S, "Used a stun rune.", "Was victim of a stun rune.", "used a stun rune on")
del(src)
qdel(src)
else ///When invoked as talisman, stun and mute the target mob.
usr.say("Dream sign ''Evil sealing talisman'[pick("'","`")]!")
var/obj/item/weapon/nullrod/N = locate() in T
@@ -1081,5 +1081,5 @@ var/list/sacrificed = list()
//the below calls update_icons() at the end, which will update overlay icons by using the (now updated) cache
user.put_in_hands(new /obj/item/weapon/melee/cultblade(user)) //put in hands or on floor
del(src)
qdel(src)
return

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