mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-17 13:42:44 +00:00
Merge remote-tracking branch 'upstream/dev' into BorgModules
Conflicts: code/game/objects/items/robot/robot_upgrades.dm code/modules/mob/living/silicon/ai/subsystems.dm code/modules/mob/living/silicon/robot/robot.dm code/modules/mob/living/silicon/robot/robot_upgrades.dm
This commit is contained in:
@@ -16,7 +16,7 @@
|
|||||||
#include "code\setup.dm"
|
#include "code\setup.dm"
|
||||||
#include "code\stylesheet.dm"
|
#include "code\stylesheet.dm"
|
||||||
#include "code\world.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\files.dm"
|
||||||
#include "code\__HELPERS\game.dm"
|
#include "code\__HELPERS\game.dm"
|
||||||
#include "code\__HELPERS\global_lists.dm"
|
#include "code\__HELPERS\global_lists.dm"
|
||||||
@@ -328,6 +328,7 @@
|
|||||||
#include "code\game\machinery\bioprinter.dm"
|
#include "code\game\machinery\bioprinter.dm"
|
||||||
#include "code\game\machinery\bluespacerelay.dm"
|
#include "code\game\machinery\bluespacerelay.dm"
|
||||||
#include "code\game\machinery\buttons.dm"
|
#include "code\game\machinery\buttons.dm"
|
||||||
|
#include "code\game\machinery\CableLayer.dm"
|
||||||
#include "code\game\machinery\cell_charger.dm"
|
#include "code\game\machinery\cell_charger.dm"
|
||||||
#include "code\game\machinery\cloning.dm"
|
#include "code\game\machinery\cloning.dm"
|
||||||
#include "code\game\machinery\constructable_frame.dm"
|
#include "code\game\machinery\constructable_frame.dm"
|
||||||
@@ -338,6 +339,7 @@
|
|||||||
#include "code\game\machinery\doppler_array.dm"
|
#include "code\game\machinery\doppler_array.dm"
|
||||||
#include "code\game\machinery\flasher.dm"
|
#include "code\game\machinery\flasher.dm"
|
||||||
#include "code\game\machinery\floodlight.dm"
|
#include "code\game\machinery\floodlight.dm"
|
||||||
|
#include "code\game\machinery\floorlayer.dm"
|
||||||
#include "code\game\machinery\hologram.dm"
|
#include "code\game\machinery\hologram.dm"
|
||||||
#include "code\game\machinery\holosign.dm"
|
#include "code\game\machinery\holosign.dm"
|
||||||
#include "code\game\machinery\igniter.dm"
|
#include "code\game\machinery\igniter.dm"
|
||||||
@@ -476,6 +478,7 @@
|
|||||||
#include "code\game\machinery\kitchen\smartfridge.dm"
|
#include "code\game\machinery\kitchen\smartfridge.dm"
|
||||||
#include "code\game\machinery\pipe\construction.dm"
|
#include "code\game\machinery\pipe\construction.dm"
|
||||||
#include "code\game\machinery\pipe\pipe_dispenser.dm"
|
#include "code\game\machinery\pipe\pipe_dispenser.dm"
|
||||||
|
#include "code\game\machinery\pipe\pipelayer.dm"
|
||||||
#include "code\game\machinery\telecomms\broadcaster.dm"
|
#include "code\game\machinery\telecomms\broadcaster.dm"
|
||||||
#include "code\game\machinery\telecomms\logbrowser.dm"
|
#include "code\game\machinery\telecomms\logbrowser.dm"
|
||||||
#include "code\game\machinery\telecomms\machine_interactions.dm"
|
#include "code\game\machinery\telecomms\machine_interactions.dm"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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(..())
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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)
|
||||||
@@ -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()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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" : "" ]"
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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()
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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()
|
||||||
@@ -148,7 +148,7 @@ turf/simulated
|
|||||||
if(istype(target))
|
if(istype(target))
|
||||||
air_master.tiles_to_update.Add(target)
|
air_master.tiles_to_update.Add(target)
|
||||||
|
|
||||||
Del()
|
Destroy()
|
||||||
if(air_master)
|
if(air_master)
|
||||||
if(parent)
|
if(parent)
|
||||||
air_master.groups_to_rebuild.Add(parent)
|
air_master.groups_to_rebuild.Add(parent)
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ obj/machinery/atmospherics/pipe/zpipe/proc/burst()
|
|||||||
var/datum/effect/effect/system/smoke_spread/smoke = new
|
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
|
||||||
|
|||||||
@@ -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.")
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -28,9 +28,9 @@
|
|||||||
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 ..()
|
||||||
|
|
||||||
/obj/effect/landmark/zcontroller/process()
|
/obj/effect/landmark/zcontroller/process()
|
||||||
if (world.time > fast_time)
|
if (world.time > fast_time)
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
510
code/ZAS/Turf.dm
510
code/ZAS/Turf.dm
@@ -1,255 +1,255 @@
|
|||||||
/turf/simulated/var/zone/zone
|
/turf/simulated/var/zone/zone
|
||||||
/turf/simulated/var/open_directions
|
/turf/simulated/var/open_directions
|
||||||
|
|
||||||
/turf/var/needs_air_update = 0
|
/turf/var/needs_air_update = 0
|
||||||
/turf/var/datum/gas_mixture/air
|
/turf/var/datum/gas_mixture/air
|
||||||
|
|
||||||
/turf/simulated/proc/update_graphic(list/graphic_add = null, list/graphic_remove = null)
|
/turf/simulated/proc/update_graphic(list/graphic_add = null, list/graphic_remove = null)
|
||||||
if(graphic_add && graphic_add.len)
|
if(graphic_add && graphic_add.len)
|
||||||
overlays += graphic_add
|
overlays += graphic_add
|
||||||
if(graphic_remove && graphic_remove.len)
|
if(graphic_remove && graphic_remove.len)
|
||||||
overlays -= graphic_remove
|
overlays -= graphic_remove
|
||||||
|
|
||||||
/turf/proc/update_air_properties()
|
/turf/proc/update_air_properties()
|
||||||
var/block = c_airblock(src)
|
var/block = c_airblock(src)
|
||||||
if(block & AIR_BLOCKED)
|
if(block & AIR_BLOCKED)
|
||||||
//dbg(blocked)
|
//dbg(blocked)
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
#ifdef ZLEVELS
|
#ifdef ZLEVELS
|
||||||
for(var/d = 1, d < 64, d *= 2)
|
for(var/d = 1, d < 64, d *= 2)
|
||||||
#else
|
#else
|
||||||
for(var/d = 1, d < 16, d *= 2)
|
for(var/d = 1, d < 16, d *= 2)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
var/turf/unsim = get_step(src, d)
|
var/turf/unsim = get_step(src, d)
|
||||||
|
|
||||||
if(!unsim)
|
if(!unsim)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
block = unsim.c_airblock(src)
|
block = unsim.c_airblock(src)
|
||||||
|
|
||||||
if(block & AIR_BLOCKED)
|
if(block & AIR_BLOCKED)
|
||||||
//unsim.dbg(air_blocked, turn(180,d))
|
//unsim.dbg(air_blocked, turn(180,d))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
var/r_block = c_airblock(unsim)
|
var/r_block = c_airblock(unsim)
|
||||||
|
|
||||||
if(r_block & AIR_BLOCKED)
|
if(r_block & AIR_BLOCKED)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if(istype(unsim, /turf/simulated))
|
if(istype(unsim, /turf/simulated))
|
||||||
|
|
||||||
var/turf/simulated/sim = unsim
|
var/turf/simulated/sim = unsim
|
||||||
if(air_master.has_valid_zone(sim))
|
if(air_master.has_valid_zone(sim))
|
||||||
|
|
||||||
air_master.connect(sim, src)
|
air_master.connect(sim, src)
|
||||||
|
|
||||||
/turf/simulated/update_air_properties()
|
/turf/simulated/update_air_properties()
|
||||||
if(zone && zone.invalid)
|
if(zone && zone.invalid)
|
||||||
c_copy_air()
|
c_copy_air()
|
||||||
zone = null //Easier than iterating through the list at the zone.
|
zone = null //Easier than iterating through the list at the zone.
|
||||||
|
|
||||||
var/s_block = c_airblock(src)
|
var/s_block = c_airblock(src)
|
||||||
if(s_block & AIR_BLOCKED)
|
if(s_block & AIR_BLOCKED)
|
||||||
#ifdef ZASDBG
|
#ifdef ZASDBG
|
||||||
if(verbose) world << "Self-blocked."
|
if(verbose) world << "Self-blocked."
|
||||||
//dbg(blocked)
|
//dbg(blocked)
|
||||||
#endif
|
#endif
|
||||||
if(zone)
|
if(zone)
|
||||||
var/zone/z = zone
|
var/zone/z = zone
|
||||||
if(locate(/obj/machinery/door/airlock) in src) //Hacky, but prevents normal airlocks from rebuilding zones all the time
|
if(locate(/obj/machinery/door/airlock) in src) //Hacky, but prevents normal airlocks from rebuilding zones all the time
|
||||||
z.remove(src)
|
z.remove(src)
|
||||||
else
|
else
|
||||||
z.rebuild()
|
z.rebuild()
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
var/previously_open = open_directions
|
var/previously_open = open_directions
|
||||||
open_directions = 0
|
open_directions = 0
|
||||||
|
|
||||||
var/list/postponed
|
var/list/postponed
|
||||||
#ifdef ZLEVELS
|
#ifdef ZLEVELS
|
||||||
for(var/d = 1, d < 64, d *= 2)
|
for(var/d = 1, d < 64, d *= 2)
|
||||||
#else
|
#else
|
||||||
for(var/d = 1, d < 16, d *= 2)
|
for(var/d = 1, d < 16, d *= 2)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
var/turf/unsim = get_step(src, d)
|
var/turf/unsim = get_step(src, d)
|
||||||
|
|
||||||
if(!unsim) //edge of map
|
if(!unsim) //edge of map
|
||||||
continue
|
continue
|
||||||
|
|
||||||
var/block = unsim.c_airblock(src)
|
var/block = unsim.c_airblock(src)
|
||||||
if(block & AIR_BLOCKED)
|
if(block & AIR_BLOCKED)
|
||||||
|
|
||||||
#ifdef ZASDBG
|
#ifdef ZASDBG
|
||||||
if(verbose) world << "[d] is blocked."
|
if(verbose) world << "[d] is blocked."
|
||||||
//unsim.dbg(air_blocked, turn(180,d))
|
//unsim.dbg(air_blocked, turn(180,d))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
var/r_block = c_airblock(unsim)
|
var/r_block = c_airblock(unsim)
|
||||||
if(r_block & AIR_BLOCKED)
|
if(r_block & AIR_BLOCKED)
|
||||||
|
|
||||||
#ifdef ZASDBG
|
#ifdef ZASDBG
|
||||||
if(verbose) world << "[d] is blocked."
|
if(verbose) world << "[d] is blocked."
|
||||||
//dbg(air_blocked, d)
|
//dbg(air_blocked, d)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//Check that our zone hasn't been cut off recently.
|
//Check that our zone hasn't been cut off recently.
|
||||||
//This happens when windows move or are constructed. We need to rebuild.
|
//This happens when windows move or are constructed. We need to rebuild.
|
||||||
if((previously_open & d) && istype(unsim, /turf/simulated))
|
if((previously_open & d) && istype(unsim, /turf/simulated))
|
||||||
var/turf/simulated/sim = unsim
|
var/turf/simulated/sim = unsim
|
||||||
if(sim.zone == zone)
|
if(zone && sim.zone == zone)
|
||||||
zone.rebuild()
|
zone.rebuild()
|
||||||
return
|
return
|
||||||
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
open_directions |= d
|
open_directions |= d
|
||||||
|
|
||||||
if(istype(unsim, /turf/simulated))
|
if(istype(unsim, /turf/simulated))
|
||||||
|
|
||||||
var/turf/simulated/sim = unsim
|
var/turf/simulated/sim = unsim
|
||||||
sim.open_directions |= reverse_dir[d]
|
sim.open_directions |= reverse_dir[d]
|
||||||
|
|
||||||
if(air_master.has_valid_zone(sim))
|
if(air_master.has_valid_zone(sim))
|
||||||
|
|
||||||
//Might have assigned a zone, since this happens for each direction.
|
//Might have assigned a zone, since this happens for each direction.
|
||||||
if(!zone)
|
if(!zone)
|
||||||
|
|
||||||
//if((block & ZONE_BLOCKED) || (r_block & ZONE_BLOCKED && !(s_block & ZONE_BLOCKED)))
|
//if((block & ZONE_BLOCKED) || (r_block & ZONE_BLOCKED && !(s_block & ZONE_BLOCKED)))
|
||||||
if(((block & ZONE_BLOCKED) && !(r_block & ZONE_BLOCKED)) || (r_block & ZONE_BLOCKED && !(s_block & ZONE_BLOCKED)))
|
if(((block & ZONE_BLOCKED) && !(r_block & ZONE_BLOCKED)) || (r_block & ZONE_BLOCKED && !(s_block & ZONE_BLOCKED)))
|
||||||
#ifdef ZASDBG
|
#ifdef ZASDBG
|
||||||
if(verbose) world << "[d] is zone blocked."
|
if(verbose) world << "[d] is zone blocked."
|
||||||
//dbg(zone_blocked, d)
|
//dbg(zone_blocked, d)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//Postpone this tile rather than exit, since a connection can still be made.
|
//Postpone this tile rather than exit, since a connection can still be made.
|
||||||
if(!postponed) postponed = list()
|
if(!postponed) postponed = list()
|
||||||
postponed.Add(sim)
|
postponed.Add(sim)
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
sim.zone.add(src)
|
sim.zone.add(src)
|
||||||
|
|
||||||
#ifdef ZASDBG
|
#ifdef ZASDBG
|
||||||
dbg(assigned)
|
dbg(assigned)
|
||||||
if(verbose) world << "Added to [zone]"
|
if(verbose) world << "Added to [zone]"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
else if(sim.zone != zone)
|
else if(sim.zone != zone)
|
||||||
|
|
||||||
#ifdef ZASDBG
|
#ifdef ZASDBG
|
||||||
if(verbose) world << "Connecting to [sim.zone]"
|
if(verbose) world << "Connecting to [sim.zone]"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
air_master.connect(src, sim)
|
air_master.connect(src, sim)
|
||||||
|
|
||||||
|
|
||||||
#ifdef ZASDBG
|
#ifdef ZASDBG
|
||||||
else if(verbose) world << "[d] has same zone."
|
else if(verbose) world << "[d] has same zone."
|
||||||
|
|
||||||
else if(verbose) world << "[d] has invalid zone."
|
else if(verbose) world << "[d] has invalid zone."
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
//Postponing connections to tiles until a zone is assured.
|
//Postponing connections to tiles until a zone is assured.
|
||||||
if(!postponed) postponed = list()
|
if(!postponed) postponed = list()
|
||||||
postponed.Add(unsim)
|
postponed.Add(unsim)
|
||||||
|
|
||||||
if(!air_master.has_valid_zone(src)) //Still no zone, make a new one.
|
if(!air_master.has_valid_zone(src)) //Still no zone, make a new one.
|
||||||
var/zone/newzone = new/zone()
|
var/zone/newzone = new/zone()
|
||||||
newzone.add(src)
|
newzone.add(src)
|
||||||
|
|
||||||
#ifdef ZASDBG
|
#ifdef ZASDBG
|
||||||
dbg(created)
|
dbg(created)
|
||||||
|
|
||||||
ASSERT(zone)
|
ASSERT(zone)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//At this point, a zone should have happened. If it hasn't, don't add more checks, fix the bug.
|
//At this point, a zone should have happened. If it hasn't, don't add more checks, fix the bug.
|
||||||
|
|
||||||
for(var/turf/T in postponed)
|
for(var/turf/T in postponed)
|
||||||
air_master.connect(src, T)
|
air_master.connect(src, T)
|
||||||
|
|
||||||
/turf/proc/post_update_air_properties()
|
/turf/proc/post_update_air_properties()
|
||||||
if(connections) connections.update_all()
|
if(connections) connections.update_all()
|
||||||
|
|
||||||
/turf/assume_air(datum/gas_mixture/giver) //use this for machines to adjust air
|
/turf/assume_air(datum/gas_mixture/giver) //use this for machines to adjust air
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
/turf/proc/assume_gas(gasid, moles, temp = 0)
|
/turf/proc/assume_gas(gasid, moles, temp = 0)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
/turf/return_air()
|
/turf/return_air()
|
||||||
//Create gas mixture to hold data for passing
|
//Create gas mixture to hold data for passing
|
||||||
var/datum/gas_mixture/GM = new
|
var/datum/gas_mixture/GM = new
|
||||||
|
|
||||||
GM.adjust_multi("oxygen", oxygen, "carbon_dioxide", carbon_dioxide, "nitrogen", nitrogen, "phoron", phoron)
|
GM.adjust_multi("oxygen", oxygen, "carbon_dioxide", carbon_dioxide, "nitrogen", nitrogen, "phoron", phoron)
|
||||||
GM.temperature = temperature
|
GM.temperature = temperature
|
||||||
|
|
||||||
return GM
|
return GM
|
||||||
|
|
||||||
/turf/remove_air(amount as num)
|
/turf/remove_air(amount as num)
|
||||||
var/datum/gas_mixture/GM = new
|
var/datum/gas_mixture/GM = new
|
||||||
|
|
||||||
var/sum = oxygen + carbon_dioxide + nitrogen + phoron
|
var/sum = oxygen + carbon_dioxide + nitrogen + phoron
|
||||||
if(sum>0)
|
if(sum>0)
|
||||||
GM.gas["oxygen"] = (oxygen/sum)*amount
|
GM.gas["oxygen"] = (oxygen/sum)*amount
|
||||||
GM.gas["carbon_dioxide"] = (carbon_dioxide/sum)*amount
|
GM.gas["carbon_dioxide"] = (carbon_dioxide/sum)*amount
|
||||||
GM.gas["nitrogen"] = (nitrogen/sum)*amount
|
GM.gas["nitrogen"] = (nitrogen/sum)*amount
|
||||||
GM.gas["phoron"] = (phoron/sum)*amount
|
GM.gas["phoron"] = (phoron/sum)*amount
|
||||||
|
|
||||||
GM.temperature = temperature
|
GM.temperature = temperature
|
||||||
GM.update_values()
|
GM.update_values()
|
||||||
|
|
||||||
return GM
|
return GM
|
||||||
|
|
||||||
/turf/simulated/assume_air(datum/gas_mixture/giver)
|
/turf/simulated/assume_air(datum/gas_mixture/giver)
|
||||||
var/datum/gas_mixture/my_air = return_air()
|
var/datum/gas_mixture/my_air = return_air()
|
||||||
my_air.merge(giver)
|
my_air.merge(giver)
|
||||||
|
|
||||||
/turf/simulated/assume_gas(gasid, moles, temp = null)
|
/turf/simulated/assume_gas(gasid, moles, temp = null)
|
||||||
var/datum/gas_mixture/my_air = return_air()
|
var/datum/gas_mixture/my_air = return_air()
|
||||||
|
|
||||||
if(isnull(temp))
|
if(isnull(temp))
|
||||||
my_air.adjust_gas(gasid, moles)
|
my_air.adjust_gas(gasid, moles)
|
||||||
else
|
else
|
||||||
my_air.adjust_gas_temp(gasid, moles, temp)
|
my_air.adjust_gas_temp(gasid, moles, temp)
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
/turf/simulated/remove_air(amount as num)
|
/turf/simulated/remove_air(amount as num)
|
||||||
var/datum/gas_mixture/my_air = return_air()
|
var/datum/gas_mixture/my_air = return_air()
|
||||||
return my_air.remove(amount)
|
return my_air.remove(amount)
|
||||||
|
|
||||||
/turf/simulated/return_air()
|
/turf/simulated/return_air()
|
||||||
if(zone)
|
if(zone)
|
||||||
if(!zone.invalid)
|
if(!zone.invalid)
|
||||||
air_master.mark_zone_update(zone)
|
air_master.mark_zone_update(zone)
|
||||||
return zone.air
|
return zone.air
|
||||||
else
|
else
|
||||||
if(!air)
|
if(!air)
|
||||||
make_air()
|
make_air()
|
||||||
c_copy_air()
|
c_copy_air()
|
||||||
return air
|
return air
|
||||||
else
|
else
|
||||||
if(!air)
|
if(!air)
|
||||||
make_air()
|
make_air()
|
||||||
return air
|
return air
|
||||||
|
|
||||||
/turf/proc/make_air()
|
/turf/proc/make_air()
|
||||||
air = new/datum/gas_mixture
|
air = new/datum/gas_mixture
|
||||||
air.temperature = temperature
|
air.temperature = temperature
|
||||||
air.adjust_multi("oxygen", oxygen, "carbon_dioxide", carbon_dioxide, "nitrogen", nitrogen, "phoron", phoron)
|
air.adjust_multi("oxygen", oxygen, "carbon_dioxide", carbon_dioxide, "nitrogen", nitrogen, "phoron", phoron)
|
||||||
air.group_multiplier = 1
|
air.group_multiplier = 1
|
||||||
air.volume = CELL_VOLUME
|
air.volume = CELL_VOLUME
|
||||||
|
|
||||||
/turf/simulated/proc/c_copy_air()
|
/turf/simulated/proc/c_copy_air()
|
||||||
if(!air) air = new/datum/gas_mixture
|
if(!air) air = new/datum/gas_mixture
|
||||||
air.copy_from(zone.air)
|
air.copy_from(zone.air)
|
||||||
air.group_multiplier = 1
|
air.group_multiplier = 1
|
||||||
|
|||||||
@@ -1,93 +0,0 @@
|
|||||||
|
|
||||||
/*
|
|
||||||
/tg/station13 /atom/movable Pool:
|
|
||||||
---------------------------------
|
|
||||||
By RemieRichards
|
|
||||||
|
|
||||||
Creation/Deletion is laggy, so let's reduce reuse and recycle!
|
|
||||||
|
|
||||||
Locked to /atom/movable and it's subtypes due to Loc being a const var on /atom
|
|
||||||
but being read&write on /movable due to how they... move.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
var/global/list/GlobalPool = list()
|
|
||||||
|
|
||||||
//You'll be using this proc 90% of the time.
|
|
||||||
//It grabs a type from the pool if it can
|
|
||||||
//And if it can't, it creates one
|
|
||||||
//The pool is flexible and will expand to fit
|
|
||||||
//The new created atom when it eventually
|
|
||||||
//Goes into the pool
|
|
||||||
|
|
||||||
//Second argument can be a new location
|
|
||||||
//Or a list of arguments
|
|
||||||
//Either way it gets passed to new
|
|
||||||
|
|
||||||
/proc/PoolOrNew(var/get_type,var/second_arg)
|
|
||||||
if(!get_type)
|
|
||||||
return
|
|
||||||
|
|
||||||
var/atom/movable/AM
|
|
||||||
AM = GetFromPool(get_type,second_arg)
|
|
||||||
|
|
||||||
if(!AM)
|
|
||||||
if(ispath(get_type))
|
|
||||||
if(islist(second_arg))
|
|
||||||
return new get_type (arglist(second_arg))
|
|
||||||
else
|
|
||||||
return new get_type (second_arg)
|
|
||||||
return AM
|
|
||||||
|
|
||||||
|
|
||||||
/proc/GetFromPool(var/get_type,var/second_arg)
|
|
||||||
if(!get_type)
|
|
||||||
return 0
|
|
||||||
|
|
||||||
if(isnull(GlobalPool[get_type]))
|
|
||||||
return 0
|
|
||||||
|
|
||||||
if(length(GlobalPool[get_type]) == 0)
|
|
||||||
return 0
|
|
||||||
|
|
||||||
var/atom/movable/AM = pick_n_take(GlobalPool[get_type])
|
|
||||||
if(AM)
|
|
||||||
AM.ResetVars()
|
|
||||||
if(islist(second_arg))
|
|
||||||
AM.loc = second_arg[1]
|
|
||||||
AM.New(arglist(second_arg))
|
|
||||||
else
|
|
||||||
AM.loc = second_arg
|
|
||||||
AM.New(second_arg)
|
|
||||||
return AM
|
|
||||||
return 0
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/proc/PlaceInPool(var/atom/movable/AM)
|
|
||||||
if(!istype(AM))
|
|
||||||
return
|
|
||||||
|
|
||||||
if(AM in GlobalPool[AM.type])
|
|
||||||
return
|
|
||||||
|
|
||||||
if(!GlobalPool[AM.type])
|
|
||||||
GlobalPool[AM.type] = list()
|
|
||||||
|
|
||||||
GlobalPool[AM.type] |= AM
|
|
||||||
|
|
||||||
AM.Destroy()
|
|
||||||
AM.ResetVars()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/atom/movable/proc/ResetVars(var/list/exlude = list())
|
|
||||||
var/list/excluded = list("animate_movement", "loc", "locs", "parent_type", "vars", "verbs", "type") + exlude
|
|
||||||
|
|
||||||
for(var/V in vars)
|
|
||||||
if(V in excluded)
|
|
||||||
continue
|
|
||||||
|
|
||||||
vars[V] = initial(vars[V])
|
|
||||||
|
|
||||||
vars["loc"] = null
|
|
||||||
109
code/__HELPERS/datum_pool.dm
Normal file
109
code/__HELPERS/datum_pool.dm
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
/tg/station13 /atom/movable Pool:
|
||||||
|
---------------------------------
|
||||||
|
By RemieRichards
|
||||||
|
|
||||||
|
Creation/Deletion is laggy, so let's reduce reuse and recycle!
|
||||||
|
|
||||||
|
*/
|
||||||
|
#define ATOM_POOL_COUNT 100
|
||||||
|
// "define DEBUG_ATOM_POOL 1
|
||||||
|
var/global/list/GlobalPool = list()
|
||||||
|
|
||||||
|
//You'll be using this proc 90% of the time.
|
||||||
|
//It grabs a type from the pool if it can
|
||||||
|
//And if it can't, it creates one
|
||||||
|
//The pool is flexible and will expand to fit
|
||||||
|
//The new created atom when it eventually
|
||||||
|
//Goes into the pool
|
||||||
|
|
||||||
|
//Second argument can be a new location, if the type is /atom/movable
|
||||||
|
//Or a list of arguments
|
||||||
|
//Either way it gets passed to new
|
||||||
|
|
||||||
|
/proc/PoolOrNew(var/get_type,var/second_arg)
|
||||||
|
if(!get_type)
|
||||||
|
return
|
||||||
|
|
||||||
|
var/datum/D
|
||||||
|
D = GetFromPool(get_type,second_arg)
|
||||||
|
|
||||||
|
if(!D)
|
||||||
|
if(ispath(get_type))
|
||||||
|
if(islist(second_arg))
|
||||||
|
return new get_type (arglist(second_arg))
|
||||||
|
else
|
||||||
|
return new get_type (second_arg)
|
||||||
|
return D
|
||||||
|
|
||||||
|
/proc/GetFromPool(var/get_type,var/second_arg)
|
||||||
|
if(!get_type)
|
||||||
|
return 0
|
||||||
|
|
||||||
|
if(isnull(GlobalPool[get_type]))
|
||||||
|
return 0
|
||||||
|
|
||||||
|
if(length(GlobalPool[get_type]) == 0)
|
||||||
|
return 0
|
||||||
|
|
||||||
|
var/datum/D = pick_n_take(GlobalPool[get_type])
|
||||||
|
if(D)
|
||||||
|
D.ResetVars()
|
||||||
|
D.Prepare(second_arg)
|
||||||
|
return D
|
||||||
|
return 0
|
||||||
|
|
||||||
|
/proc/PlaceInPool(var/datum/D)
|
||||||
|
if(!istype(D))
|
||||||
|
return
|
||||||
|
|
||||||
|
if(length(GlobalPool[D.type]) > ATOM_POOL_COUNT)
|
||||||
|
#ifdef DEBUG_ATOM_POOL
|
||||||
|
world << text("DEBUG_DATUM_POOL: PlaceInPool([]) exceeds []. Discarding.", D.type, ATOM_POOL_COUNT)
|
||||||
|
#endif
|
||||||
|
del(D)
|
||||||
|
return
|
||||||
|
|
||||||
|
if(D in GlobalPool[D.type])
|
||||||
|
return
|
||||||
|
|
||||||
|
if(!GlobalPool[D.type])
|
||||||
|
GlobalPool[D.type] = list()
|
||||||
|
|
||||||
|
GlobalPool[D.type] += D
|
||||||
|
|
||||||
|
D.Destroy()
|
||||||
|
D.ResetVars()
|
||||||
|
|
||||||
|
/proc/IsPooled(var/datum/D)
|
||||||
|
if(isnull(GlobalPool[D.type]) || length(GlobalPool[D.type]) == 0)
|
||||||
|
return 0
|
||||||
|
return 1
|
||||||
|
|
||||||
|
/datum/proc/Prepare(args)
|
||||||
|
if(islist(args))
|
||||||
|
New(arglist(args))
|
||||||
|
else
|
||||||
|
New(args)
|
||||||
|
|
||||||
|
/atom/movable/Prepare(args)
|
||||||
|
if(islist(args))
|
||||||
|
loc = args[1]
|
||||||
|
loc = args
|
||||||
|
..()
|
||||||
|
|
||||||
|
/datum/proc/ResetVars(var/list/exlude = list())
|
||||||
|
var/list/excluded = list("animate_movement", "loc", "locs", "parent_type", "vars", "verbs", "type") + exlude
|
||||||
|
|
||||||
|
for(var/V in vars)
|
||||||
|
if(V in excluded)
|
||||||
|
continue
|
||||||
|
|
||||||
|
vars[V] = initial(vars[V])
|
||||||
|
|
||||||
|
/atom/movable/ResetVars()
|
||||||
|
..()
|
||||||
|
vars["loc"] = null
|
||||||
|
|
||||||
|
#undef ATOM_POOL_COUNT
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
|
|
||||||
/proc/get_area(O)
|
/proc/get_area(O)
|
||||||
var/turf/loc = get_turf(O)
|
var/turf/loc = get_turf(O)
|
||||||
if(!loc)
|
if(loc)
|
||||||
return null
|
var/area/res = loc.loc
|
||||||
return loc.loc
|
.= res.master
|
||||||
|
|
||||||
/proc/get_area_name(N) //get area by its name
|
/proc/get_area_name(N) //get area by its name
|
||||||
for(var/area/A in world)
|
for(var/area/A in world)
|
||||||
@@ -498,6 +498,6 @@ datum/projectile_data
|
|||||||
|
|
||||||
/proc/MinutesToTicks(var/minutes)
|
/proc/MinutesToTicks(var/minutes)
|
||||||
return SecondsToTicks(60 * minutes)
|
return SecondsToTicks(60 * minutes)
|
||||||
|
|
||||||
/proc/SecondsToTicks(var/seconds)
|
/proc/SecondsToTicks(var/seconds)
|
||||||
return seconds * 10
|
return seconds * 10
|
||||||
|
|||||||
@@ -226,6 +226,31 @@
|
|||||||
/proc/capitalize(var/t as text)
|
/proc/capitalize(var/t as text)
|
||||||
return uppertext(copytext(t, 1, 2)) + copytext(t, 2)
|
return uppertext(copytext(t, 1, 2)) + copytext(t, 2)
|
||||||
|
|
||||||
|
//This proc strips html properly, remove < > and all text between
|
||||||
|
//for complete text sanitizing should be used sanitize()
|
||||||
|
/proc/strip_html_properly(var/input)
|
||||||
|
if(!input)
|
||||||
|
return
|
||||||
|
var/opentag = 1 //These store the position of < and > respectively.
|
||||||
|
var/closetag = 1
|
||||||
|
while(1)
|
||||||
|
opentag = findtext(input, "<")
|
||||||
|
closetag = findtext(input, ">")
|
||||||
|
if(closetag && opentag)
|
||||||
|
if(closetag < opentag)
|
||||||
|
input = copytext(input, (closetag + 1))
|
||||||
|
else
|
||||||
|
input = copytext(input, 1, opentag) + copytext(input, (closetag + 1))
|
||||||
|
else if(closetag || opentag)
|
||||||
|
if(opentag)
|
||||||
|
input = copytext(input, 1, opentag)
|
||||||
|
else
|
||||||
|
input = copytext(input, (closetag + 1))
|
||||||
|
else
|
||||||
|
break
|
||||||
|
|
||||||
|
return input
|
||||||
|
|
||||||
//This proc fills in all spaces with the "replace" var (* by default) with whatever
|
//This proc fills in all spaces with the "replace" var (* by default) with whatever
|
||||||
//is in the other string at the same spot (assuming it is not a replace char).
|
//is in the other string at the same spot (assuming it is not a replace char).
|
||||||
//This is used for fingerprints
|
//This is used for fingerprints
|
||||||
@@ -274,7 +299,11 @@ proc/TextPreview(var/string,var/len=40)
|
|||||||
else
|
else
|
||||||
return string
|
return string
|
||||||
else
|
else
|
||||||
return "[copytext(string, 1, 37)]..."
|
return "[copytext_preserve_html(string, 1, 37)]..."
|
||||||
|
|
||||||
|
//alternative copytext() for encoded text, doesn't break html entities (" and other)
|
||||||
|
/proc/copytext_preserve_html(var/text, var/first, var/last)
|
||||||
|
return html_encode(copytext(html_decode(text), first, last))
|
||||||
|
|
||||||
//For generating neat chat tag-images
|
//For generating neat chat tag-images
|
||||||
//The icon var could be local in the proc, but it's a waste of resources
|
//The icon var could be local in the proc, but it's a waste of resources
|
||||||
@@ -283,4 +312,4 @@ proc/TextPreview(var/string,var/len=40)
|
|||||||
/proc/create_text_tag(var/tagname, var/tagdesc = tagname, var/client/C = null)
|
/proc/create_text_tag(var/tagname, var/tagdesc = tagname, var/client/C = null)
|
||||||
if(C && (C.prefs.toggles & CHAT_NOICONS))
|
if(C && (C.prefs.toggles & CHAT_NOICONS))
|
||||||
return tagdesc
|
return tagdesc
|
||||||
return "<IMG src='\ref[text_tag_icons.icon]' class='text_tag' iconstate='[tagname]'" + (tagdesc ? " alt='[tagdesc]'" : "") + ">"
|
return "<IMG src='\ref[text_tag_icons.icon]' class='text_tag' iconstate='[tagname]'" + (tagdesc ? " alt='[tagdesc]'" : "") + ">"
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -14,6 +14,9 @@
|
|||||||
var/obj/master = null //A reference to the object in the slot. Grabs or items, generally.
|
var/obj/master = null //A reference to the object in the slot. Grabs or items, generally.
|
||||||
var/gun_click_time = -100 //I'm lazy.
|
var/gun_click_time = -100 //I'm lazy.
|
||||||
|
|
||||||
|
/obj/screen/Destroy()
|
||||||
|
master = null
|
||||||
|
..()
|
||||||
|
|
||||||
/obj/screen/text
|
/obj/screen/text
|
||||||
icon = null
|
icon = null
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
return // seems legit.
|
return // seems legit.
|
||||||
|
|
||||||
// Things you might plausibly want to follow
|
// 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)
|
ManualFollow(A)
|
||||||
|
|
||||||
// Otherwise jump
|
// Otherwise jump
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
@@ -315,3 +314,9 @@ datum/controller/process/proc/enable()
|
|||||||
|
|
||||||
/datum/controller/process/proc/getTicks()
|
/datum/controller/process/proc/getTicks()
|
||||||
return ticks
|
return ticks
|
||||||
|
|
||||||
|
/datum/controller/process/proc/getStatName()
|
||||||
|
return name
|
||||||
|
|
||||||
|
/datum/controller/process/proc/getTickTime()
|
||||||
|
return "#[getTicks()]\t- [getLastRunTime()]"
|
||||||
|
|||||||
@@ -4,3 +4,7 @@
|
|||||||
|
|
||||||
/datum/controller/process/alarm/doWork()
|
/datum/controller/process/alarm/doWork()
|
||||||
alarm_manager.fire()
|
alarm_manager.fire()
|
||||||
|
|
||||||
|
/datum/controller/process/alarm/getStatName()
|
||||||
|
var/list/alarms = alarm_manager.active_alarms()
|
||||||
|
return ..()+"([alarms.len])"
|
||||||
|
|||||||
@@ -9,3 +9,6 @@
|
|||||||
/datum/controller/process/disease/doWork()
|
/datum/controller/process/disease/doWork()
|
||||||
updateQueueInstance.init(active_diseases, "process")
|
updateQueueInstance.init(active_diseases, "process")
|
||||||
updateQueueInstance.Run()
|
updateQueueInstance.Run()
|
||||||
|
|
||||||
|
/datum/controller/process/disease/getStatName()
|
||||||
|
return ..()+"([active_diseases.len])"
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
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
|
|
||||||
/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 SS 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 SS tick.
|
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/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
|
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()
|
// 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
|
// 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()
|
/datum/controller/process/garbage_collector/setup()
|
||||||
name = "garbage"
|
name = "garbage"
|
||||||
schedule_interval = 60 // every 6 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,76 +40,113 @@ 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]"]++
|
||||||
del(A)
|
del(A)
|
||||||
++dels
|
++dels
|
||||||
|
++hard_dels
|
||||||
#ifdef GC_DEBUG
|
#ifdef GC_DEBUG
|
||||||
else
|
else
|
||||||
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
|
||||||
|
|
||||||
|
/datum/controller/process/garbage_collector/getStatName()
|
||||||
|
return ..()+"([garbage_collector.dels]/[garbage_collector.hard_dels])"
|
||||||
|
|
||||||
// Should be treated as a replacement for the 'del' keyword.
|
// 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.
|
// 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)
|
/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))
|
garbage_collector.hard_dels++
|
||||||
// Let our friend know they're about to get fucked up.
|
else if(isnull(A.gcDestroyed))
|
||||||
|
// 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()
|
||||||
|
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)
|
del(src)
|
||||||
|
|
||||||
/turf/finalize_qdel()
|
/turf/finalize_qdel()
|
||||||
garbage_collector.AddTrash(src)
|
del(src)
|
||||||
|
|
||||||
// Default implementation of clean-up code.
|
// Default implementation of clean-up code.
|
||||||
// This should be overridden to remove all references pointing to the object being destroyed.
|
// 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.)
|
// Return true if the the GC controller should allow the object to continue existing. (Useful if pooling objects.)
|
||||||
/datum/proc/Destroy()
|
/datum/proc/Destroy()
|
||||||
|
tag = null
|
||||||
return
|
return
|
||||||
|
|
||||||
/datum/var/gc_destroyed //Time when this object was destroyed.
|
|
||||||
|
|
||||||
#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"
|
||||||
@@ -119,8 +165,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].")
|
||||||
@@ -146,13 +192,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
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|
||||||
|
|||||||
@@ -42,3 +42,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
scheck()
|
scheck()
|
||||||
|
|
||||||
|
|
||||||
|
/datum/controller/process/machinery/getStatName()
|
||||||
|
return ..()+"([machines.len])"
|
||||||
@@ -18,3 +18,6 @@
|
|||||||
if(updateQueueInstance)
|
if(updateQueueInstance)
|
||||||
updateQueueInstance.init(mob_list, "Life")
|
updateQueueInstance.init(mob_list, "Life")
|
||||||
updateQueueInstance.Run()
|
updateQueueInstance.Run()
|
||||||
|
|
||||||
|
/datum/controller/process/mob/getStatName()
|
||||||
|
return ..()+"([mob_list.len])"
|
||||||
|
|||||||
@@ -9,3 +9,6 @@
|
|||||||
/datum/controller/process/nanoui/doWork()
|
/datum/controller/process/nanoui/doWork()
|
||||||
updateQueueInstance.init(nanomanager.processing_uis, "process")
|
updateQueueInstance.init(nanomanager.processing_uis, "process")
|
||||||
updateQueueInstance.Run()
|
updateQueueInstance.Run()
|
||||||
|
|
||||||
|
/datum/controller/process/nanoui/getStatName()
|
||||||
|
return ..()+"([nanomanager.processing_uis.len])"
|
||||||
|
|||||||
@@ -19,3 +19,6 @@ var/global/list/object_profiling = list()
|
|||||||
if(updateQueueInstance)
|
if(updateQueueInstance)
|
||||||
updateQueueInstance.init(processing_objects, "process")
|
updateQueueInstance.init(processing_objects, "process")
|
||||||
updateQueueInstance.Run()
|
updateQueueInstance.Run()
|
||||||
|
|
||||||
|
/datum/controller/process/obj/getStatName()
|
||||||
|
return ..()+"([processing_objects.len])"
|
||||||
|
|||||||
@@ -10,3 +10,6 @@
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
pipe_networks.Remove(pipeNetwork)
|
pipe_networks.Remove(pipeNetwork)
|
||||||
|
|
||||||
|
/datum/controller/process/pipenet/getStatName()
|
||||||
|
return ..()+"([pipe_networks.len])"
|
||||||
@@ -10,3 +10,6 @@
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
powernets.Remove(powerNetwork)
|
powernets.Remove(powerNetwork)
|
||||||
|
|
||||||
|
/datum/controller/process/powernet/getStatName()
|
||||||
|
return ..()+"([powernets.len])"
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
usr.client.debug_variables(antag)
|
usr.client.debug_variables(antag)
|
||||||
message_admins("Admin [key_name_admin(usr)] is debugging the [antag.role_text] template.")
|
message_admins("Admin [key_name_admin(usr)] is debugging the [antag.role_text] template.")
|
||||||
|
|
||||||
/client/proc/debug_controller(controller in list("Master","Failsafe","Ticker","Lighting","Air","Jobs","Sun","Radio","Supply","Shuttles","Emergency Shuttle","Configuration","pAI", "Cameras", "Transfer Controller", "Gas Data","Event","Plants","Alarm","Nano"))
|
/client/proc/debug_controller(controller in list("Master","Failsafe","Ticker","Ticker Process","Lighting","Air","Jobs","Sun","Radio","Supply","Shuttles","Emergency Shuttle","Configuration","pAI", "Cameras", "Transfer Controller", "Gas Data","Event","Plants","Alarm","Nano"))
|
||||||
set category = "Debug"
|
set category = "Debug"
|
||||||
set name = "Debug Controller"
|
set name = "Debug Controller"
|
||||||
set desc = "Debug the various periodic loop controllers for the game (be careful!)"
|
set desc = "Debug the various periodic loop controllers for the game (be careful!)"
|
||||||
@@ -78,6 +78,9 @@
|
|||||||
if("Ticker")
|
if("Ticker")
|
||||||
debug_variables(ticker)
|
debug_variables(ticker)
|
||||||
feedback_add_details("admin_verb","DTicker")
|
feedback_add_details("admin_verb","DTicker")
|
||||||
|
if("Ticker Process")
|
||||||
|
debug_variables(tickerProcess)
|
||||||
|
feedback_add_details("admin_verb","DTickerProcess")
|
||||||
if("Lighting")
|
if("Lighting")
|
||||||
debug_variables(lighting_controller)
|
debug_variables(lighting_controller)
|
||||||
feedback_add_details("admin_verb","DLighting")
|
feedback_add_details("admin_verb","DLighting")
|
||||||
|
|||||||
@@ -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 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 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 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 ********************/
|
/******************** Robocop ********************/
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
|
||||||
*/
|
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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"]
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -151,4 +151,8 @@ Data storage vars:
|
|||||||
start()
|
start()
|
||||||
return active()
|
return active()
|
||||||
|
|
||||||
|
/datum/global_iterator/Destroy()
|
||||||
|
tag = null
|
||||||
|
arg_list.Cut()
|
||||||
|
stop()
|
||||||
|
//Do not call ..()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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()
|
Destroy()
|
||||||
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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ var/datum/antagonist/rogue_ai/malf
|
|||||||
hacked_apcs |= apc
|
hacked_apcs |= apc
|
||||||
|
|
||||||
/datum/antagonist/rogue_ai/proc/update_takeover_time()
|
/datum/antagonist/rogue_ai/proc/update_takeover_time()
|
||||||
hack_time -= ((hacked_apcs.len/6)*tickerProcess.getLastTickerTimeDuration())
|
hack_time -= ((hacked_apcs.len/6)*2.0)
|
||||||
|
|
||||||
/datum/antagonist/rogue_ai/tick()
|
/datum/antagonist/rogue_ai/tick()
|
||||||
if(revealed && hacked_apcs.len >= 3)
|
if(revealed && hacked_apcs.len >= 3)
|
||||||
@@ -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"
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
var/air_doors_activated = 0
|
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/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/sound/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*/
|
/*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*/
|
/*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*/
|
||||||
var/list/teleportlocs = list()
|
var/list/teleportlocs = list()
|
||||||
@@ -808,6 +808,9 @@ area/space/atmosalert()
|
|||||||
|
|
||||||
//Hallway
|
//Hallway
|
||||||
|
|
||||||
|
/area/hallway/primary/
|
||||||
|
sound_env = 12 //hallway
|
||||||
|
|
||||||
/area/hallway/primary/fore
|
/area/hallway/primary/fore
|
||||||
name = "\improper Fore Primary Hallway"
|
name = "\improper Fore Primary Hallway"
|
||||||
icon_state = "hallF"
|
icon_state = "hallF"
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
/area/mine
|
/area/mine
|
||||||
icon_state = "mining"
|
icon_state = "mining"
|
||||||
music = 'sound/ambience/song_game.ogg'
|
music = 'sound/ambience/song_game.ogg'
|
||||||
|
sound_env = 5 //stoneroom
|
||||||
|
|
||||||
/area/mine/explored
|
/area/mine/explored
|
||||||
name = "Mine"
|
name = "Mine"
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -22,6 +22,18 @@
|
|||||||
//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()
|
||||||
|
. = ..()
|
||||||
|
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)
|
/atom/proc/assume_air(datum/gas_mixture/giver)
|
||||||
return null
|
return null
|
||||||
|
|
||||||
@@ -66,7 +78,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 +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
|
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 +200,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 +240,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 +373,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 +430,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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,25 @@
|
|||||||
var/moved_recently = 0
|
var/moved_recently = 0
|
||||||
var/mob/pulledby = null
|
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)
|
/atom/movable/Bump(var/atom/A, yes)
|
||||||
if(src.throwing)
|
if(src.throwing)
|
||||||
src.throw_impact(A)
|
src.throw_impact(A)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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()
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
@@ -22,6 +22,11 @@
|
|||||||
new/mob/living/simple_animal/hostile/blobspore(src.loc, src)
|
new/mob/living/simple_animal/hostile/blobspore(src.loc, src)
|
||||||
return 1
|
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
|
/mob/living/simple_animal/hostile/blobspore
|
||||||
name = "blob"
|
name = "blob"
|
||||||
@@ -58,9 +63,10 @@
|
|||||||
..(loc)
|
..(loc)
|
||||||
return
|
return
|
||||||
death()
|
death()
|
||||||
..()
|
qdel(src)
|
||||||
if(factory)
|
|
||||||
factory.spores -= src
|
|
||||||
..()
|
|
||||||
del(src)
|
|
||||||
|
|
||||||
|
/mob/living/simple_animal/hostile/blobspore/Destroy()
|
||||||
|
if(factory)
|
||||||
|
factory.spores -= src
|
||||||
|
factory = null
|
||||||
|
..()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
Del()
|
Destroy()
|
||||||
blobs -= src
|
blobs -= src
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
@@ -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"
|
||||||
@@ -158,7 +158,7 @@
|
|||||||
|
|
||||||
attackby(var/obj/item/weapon/W, var/mob/user)
|
attackby(var/obj/item/weapon/W, var/mob/user)
|
||||||
playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
|
playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
|
||||||
src.visible_message("\red <B>The [src.name] has been attacked with \the [W][(user ? " by [user]." : ".")]")
|
src.visible_message("<span class='danger'>The [src.name] has been attacked with \the [W][(user ? " by [user]." : ".")]</span>")
|
||||||
var/damage = 0
|
var/damage = 0
|
||||||
switch(W.damtype)
|
switch(W.damtype)
|
||||||
if("fire")
|
if("fire")
|
||||||
@@ -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"
|
||||||
@@ -212,7 +212,7 @@
|
|||||||
icon_state = "blobidle0"
|
icon_state = "blobidle0"
|
||||||
|
|
||||||
|
|
||||||
Del()
|
Destroy()
|
||||||
var/obj/effect/blob/B = new /obj/effect/blob( src.loc )
|
var/obj/effect/blob/B = new /obj/effect/blob( src.loc )
|
||||||
spawn(30)
|
spawn(30)
|
||||||
B.Life()
|
B.Life()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|||||||
@@ -32,11 +32,11 @@
|
|||||||
else
|
else
|
||||||
dust()
|
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(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)
|
||||||
|
|||||||
@@ -65,8 +65,11 @@
|
|||||||
new /obj/structure/cult/tome(loc)
|
new /obj/structure/cult/tome(loc)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
/obj/machinery/door/cultify()
|
/obj/machinery/door/airlock/external/cultify()
|
||||||
new /obj/structure/mineral_door/wood(loc)
|
new /obj/structure/mineral_door/wood(loc)
|
||||||
|
..()
|
||||||
|
|
||||||
|
/obj/machinery/door/cultify()
|
||||||
icon_state = "null"
|
icon_state = "null"
|
||||||
density = 0
|
density = 0
|
||||||
c_animation = new /atom/movable/overlay(src.loc)
|
c_animation = new /atom/movable/overlay(src.loc)
|
||||||
@@ -79,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()
|
||||||
@@ -125,7 +128,7 @@
|
|||||||
/obj/structure/mineral_door/wood/cultify()
|
/obj/structure/mineral_door/wood/cultify()
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/machinery/singularity/cultify()
|
/obj/singularity/cultify()
|
||||||
var/dist = max((current_size - 2), 1)
|
var/dist = max((current_size - 2), 1)
|
||||||
explosion(get_turf(src), dist, dist * 2, dist * 4)
|
explosion(get_turf(src), dist, dist * 2, dist * 4)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user