mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 18:32:03 +00:00
qdel and Destroy again.
This commit is contained in:
@@ -176,7 +176,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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -21,63 +21,54 @@ var/datum/garbage_collector/garbageCollector
|
|||||||
// To let them know how hardworking am I :^).
|
// To let them know how hardworking am I :^).
|
||||||
var/dels_count = 0
|
var/dels_count = 0
|
||||||
var/hard_dels = 0
|
var/hard_dels = 0
|
||||||
var/processing = 1
|
|
||||||
|
|
||||||
/datum/garbage_collector/proc/addTrash(const/datum/D)
|
/datum/garbage_collector/proc/addTrash(const/atom/movable/AM)
|
||||||
if(!D)
|
if(isnull(AM) || !istype(AM))
|
||||||
return
|
return
|
||||||
|
|
||||||
if(del_everything)
|
if(del_everything)
|
||||||
del(D)
|
del(AM)
|
||||||
hard_dels++
|
hard_dels++
|
||||||
dels_count++
|
dels_count++
|
||||||
return
|
return
|
||||||
|
|
||||||
if(!istype(D, /atom/movable))
|
|
||||||
del(D)
|
|
||||||
hard_dels++
|
|
||||||
dels_count++
|
|
||||||
return
|
|
||||||
|
|
||||||
var/atom/movable/AM = D
|
|
||||||
var/timeofday = world.timeofday
|
var/timeofday = world.timeofday
|
||||||
AM.timeDestroyed = timeofday
|
AM.timeDestroyed = timeofday
|
||||||
queue -= "\ref[AM]"
|
queue -= "\ref[AM]"
|
||||||
queue["\ref[AM]"] = timeofday
|
queue["\ref[AM]"] = timeofday
|
||||||
|
|
||||||
/datum/garbage_collector/proc/process()
|
/datum/garbage_collector/proc/process()
|
||||||
if(processing)
|
var/remainingCollectionPerTick = GC_COLLECTIONS_PER_TICK
|
||||||
var/remainingCollectionPerTick = GC_COLLECTIONS_PER_TICK
|
var/remainingForceDelPerTick = GC_FORCE_DEL_PER_TICK
|
||||||
var/remainingForceDelPerTick = GC_FORCE_DEL_PER_TICK
|
var/collectionTimeScope = world.timeofday - GC_COLLECTION_TIMEOUT
|
||||||
var/collectionTimeScope = world.timeofday - GC_COLLECTION_TIMEOUT
|
|
||||||
|
|
||||||
while(queue.len && --remainingCollectionPerTick >= 0)
|
while(queue.len && --remainingCollectionPerTick >= 0)
|
||||||
var/refID = queue[1]
|
var/refID = queue[1]
|
||||||
var/destroyedAtTime = queue[refID]
|
var/destroyedAtTime = queue[refID]
|
||||||
|
|
||||||
if(destroyedAtTime > collectionTimeScope)
|
if(destroyedAtTime > collectionTimeScope)
|
||||||
|
break
|
||||||
|
|
||||||
|
var/atom/movable/AM = locate(refID)
|
||||||
|
|
||||||
|
// Something's still referring to the qdel'd object. Kill it.
|
||||||
|
if(AM && AM.timeDestroyed == destroyedAtTime)
|
||||||
|
if(remainingForceDelPerTick <= 0)
|
||||||
break
|
break
|
||||||
|
|
||||||
var/atom/movable/A = locate(refID)
|
#ifdef GC_DEBUG
|
||||||
|
WARNING("gc process force delete [AM.type]")
|
||||||
|
#endif
|
||||||
|
|
||||||
// Something's still referring to the qdel'd object. Kill it.
|
gc_hard_del_types |= "[AM.type]"
|
||||||
if(A && A.timeDestroyed == destroyedAtTime)
|
|
||||||
if(remainingForceDelPerTick <= 0)
|
|
||||||
break
|
|
||||||
|
|
||||||
#ifdef GC_DEBUG
|
del(AM)
|
||||||
WARNING("gc process force delete [A.type]")
|
|
||||||
#endif
|
|
||||||
|
|
||||||
gc_hard_del_types |= "[A.type]"
|
hard_dels++
|
||||||
|
remainingForceDelPerTick--
|
||||||
|
|
||||||
del(A)
|
queue.Cut(1, 2)
|
||||||
|
dels_count++
|
||||||
hard_dels++
|
|
||||||
remainingForceDelPerTick--
|
|
||||||
|
|
||||||
queue.Cut(1, 2)
|
|
||||||
dels_count++
|
|
||||||
|
|
||||||
#ifdef GC_DEBUG
|
#ifdef GC_DEBUG
|
||||||
#undef GC_DEBUG
|
#undef GC_DEBUG
|
||||||
@@ -87,31 +78,30 @@ var/datum/garbage_collector/garbageCollector
|
|||||||
#undef GC_COLLECTION_TIMEOUT
|
#undef GC_COLLECTION_TIMEOUT
|
||||||
#undef GC_COLLECTIONS_PER_TICK
|
#undef GC_COLLECTIONS_PER_TICK
|
||||||
|
|
||||||
/proc/qdel(const/O)
|
/*
|
||||||
if (!O)
|
* NEVER USE THIS FOR ANYTHING OTHER THAN /atom/movable
|
||||||
|
* OTHER TYPES CANNOT BE QDEL'D BECAUSE THEIR LOC IS LOCKED OR THEY DON'T HAVE ONE.
|
||||||
|
*/
|
||||||
|
/proc/qdel(const/atom/movable/AM)
|
||||||
|
if(isnull(AM))
|
||||||
return
|
return
|
||||||
|
|
||||||
if (!garbageCollector)
|
if(isnull(garbageCollector))
|
||||||
del(O)
|
del(AM)
|
||||||
return
|
return
|
||||||
|
|
||||||
if (!istype(O, /datum))
|
if(!istype(AM))
|
||||||
del(O)
|
WARNING("qdel() passed object of type [AM.type]. qdel() can only handle /atom/movable types.")
|
||||||
|
del(AM)
|
||||||
garbageCollector.hard_dels++
|
garbageCollector.hard_dels++
|
||||||
garbageCollector.dels_count++
|
garbageCollector.dels_count++
|
||||||
return
|
return
|
||||||
|
|
||||||
var/datum/D = O
|
if(isnull(AM.gcDestroyed))
|
||||||
|
|
||||||
if (isnull(D.gcDestroyed))
|
|
||||||
// Let our friend know they're about to get fucked up.
|
// Let our friend know they're about to get fucked up.
|
||||||
D.Destroy()
|
AM.Destroy()
|
||||||
|
|
||||||
garbageCollector.addTrash(D)
|
garbageCollector.addTrash(AM)
|
||||||
|
|
||||||
/datum
|
|
||||||
// Garbage collection (qdel).
|
|
||||||
var/gcDestroyed
|
|
||||||
|
|
||||||
/datum/controller
|
/datum/controller
|
||||||
var/processing = 0
|
var/processing = 0
|
||||||
@@ -124,21 +114,12 @@ var/datum/garbage_collector/garbageCollector
|
|||||||
. = ..()
|
. = ..()
|
||||||
tag = "[type]:NOGC"
|
tag = "[type]:NOGC"
|
||||||
|
|
||||||
/datum/Del()
|
|
||||||
// Pass to Destroy().
|
|
||||||
if(isnull(gcDestroyed))
|
|
||||||
Destroy()
|
|
||||||
|
|
||||||
sleep(-1)
|
|
||||||
..()
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Like Del(), but for qdel.
|
* Like Del(), but for qdel.
|
||||||
* Called BEFORE qdel moves shit.
|
* Called BEFORE qdel moves shit.
|
||||||
*/
|
*/
|
||||||
/datum/proc/Destroy()
|
/datum/proc/Destroy()
|
||||||
tag = null
|
tag = null
|
||||||
gcDestroyed = "Bye world!"
|
|
||||||
|
|
||||||
/client/proc/qdel_toggle()
|
/client/proc/qdel_toggle()
|
||||||
set name = "Toggle qdel Behavior"
|
set name = "Toggle qdel Behavior"
|
||||||
|
|||||||
@@ -69,6 +69,9 @@
|
|||||||
DeleteFromProfiler()
|
DeleteFromProfiler()
|
||||||
|
|
||||||
//world << "[type] - [tag] - [x].[y].[z]"
|
//world << "[type] - [tag] - [x].[y].[z]"
|
||||||
|
if(reagents)
|
||||||
|
reagents.Destroy()
|
||||||
|
reagents = null
|
||||||
|
|
||||||
density = 0
|
density = 0
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
var/global/guid = 0
|
var/global/guid = 0
|
||||||
|
|
||||||
// Garbage collection (controller).
|
// Garbage collection (controller).
|
||||||
|
var/gcDestroyed
|
||||||
var/timeDestroyed
|
var/timeDestroyed
|
||||||
|
|
||||||
/atom/movable/New()
|
/atom/movable/New()
|
||||||
@@ -27,6 +28,19 @@
|
|||||||
areaMaster = get_area_master(src)
|
areaMaster = get_area_master(src)
|
||||||
tag = "[++guid]"
|
tag = "[++guid]"
|
||||||
|
|
||||||
|
/atom/movable/Destroy()
|
||||||
|
areaMaster = null
|
||||||
|
gcDestroyed = "Bye world!"
|
||||||
|
loc = null
|
||||||
|
..()
|
||||||
|
|
||||||
|
/atom/movable/Del()
|
||||||
|
// Pass to Destroy().
|
||||||
|
if(!gcDestroyed)
|
||||||
|
Destroy()
|
||||||
|
|
||||||
|
..()
|
||||||
|
|
||||||
/atom/movable/Move()
|
/atom/movable/Move()
|
||||||
var/atom/A = src.loc
|
var/atom/A = src.loc
|
||||||
. = ..()
|
. = ..()
|
||||||
@@ -195,11 +209,6 @@
|
|||||||
return src.master.attack_hand(a, b, c)
|
return src.master.attack_hand(a, b, c)
|
||||||
return
|
return
|
||||||
|
|
||||||
/atom/movable/Destroy()
|
|
||||||
areaMaster = null
|
|
||||||
loc = null
|
|
||||||
..()
|
|
||||||
|
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
// SINGULOTH PULL REFACTOR
|
// SINGULOTH PULL REFACTOR
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
|
|||||||
@@ -143,7 +143,7 @@
|
|||||||
pulse2.dir = pick(cardinal)
|
pulse2.dir = pick(cardinal)
|
||||||
|
|
||||||
spawn(10)
|
spawn(10)
|
||||||
pulse2.delete()
|
qdel(pulse2)
|
||||||
if (on)
|
if (on)
|
||||||
turn_off()
|
turn_off()
|
||||||
spawn(severity*300)
|
spawn(severity*300)
|
||||||
|
|||||||
@@ -866,7 +866,7 @@ Auto Patrol: []"},
|
|||||||
pulse2.anchored = 1
|
pulse2.anchored = 1
|
||||||
pulse2.dir = pick(cardinal)
|
pulse2.dir = pick(cardinal)
|
||||||
spawn(10)
|
spawn(10)
|
||||||
pulse2.delete()
|
qdel(pulse2)
|
||||||
var/list/mob/living/carbon/targets = new
|
var/list/mob/living/carbon/targets = new
|
||||||
for (var/mob/living/carbon/C in view(12,src))
|
for (var/mob/living/carbon/C in view(12,src))
|
||||||
if (C.stat==2)
|
if (C.stat==2)
|
||||||
|
|||||||
@@ -1160,7 +1160,7 @@ About the new airlock wires panel:
|
|||||||
return
|
return
|
||||||
|
|
||||||
/obj/machinery/door/airlock/New()
|
/obj/machinery/door/airlock/New()
|
||||||
..()
|
. = ..()
|
||||||
wires = new(src)
|
wires = new(src)
|
||||||
if(src.closeOtherId != null)
|
if(src.closeOtherId != null)
|
||||||
spawn (5)
|
spawn (5)
|
||||||
|
|||||||
@@ -162,13 +162,10 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
door_animate("deny")
|
door_animate("deny")
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/door/blob_act()
|
/obj/machinery/door/blob_act()
|
||||||
if (prob(BLOB_PROBABILITY))
|
if(prob(BLOB_PROBABILITY))
|
||||||
src = null
|
qdel(src)
|
||||||
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/door/proc/door_animate(var/animation as text)
|
/obj/machinery/door/proc/door_animate(var/animation as text)
|
||||||
switch (animation)
|
switch (animation)
|
||||||
@@ -267,16 +264,13 @@
|
|||||||
if (!glass)
|
if (!glass)
|
||||||
src.SetOpacity(1)
|
src.SetOpacity(1)
|
||||||
|
|
||||||
// TODO: analyze this proc
|
|
||||||
update_nearby_tiles()
|
|
||||||
|
|
||||||
// TODO: rework how fire works on doors
|
// TODO: rework how fire works on doors
|
||||||
var/obj/fire/F = locate() in loc
|
var/obj/fire/F = locate() in loc
|
||||||
if (F)
|
if(F)
|
||||||
F = null
|
qdel(F)
|
||||||
|
|
||||||
|
update_nearby_tiles()
|
||||||
operating = 0
|
operating = 0
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/door/New()
|
/obj/machinery/door/New()
|
||||||
. = ..()
|
. = ..()
|
||||||
@@ -286,7 +280,6 @@
|
|||||||
layer = 3.1
|
layer = 3.1
|
||||||
|
|
||||||
explosion_resistance = initial(explosion_resistance)
|
explosion_resistance = initial(explosion_resistance)
|
||||||
update_heat_protection(get_turf(src))
|
|
||||||
else
|
else
|
||||||
// under all objects if opened. 2.7 due to tables being at 2.6
|
// under all objects if opened. 2.7 due to tables being at 2.6
|
||||||
layer = 2.7
|
layer = 2.7
|
||||||
@@ -302,13 +295,10 @@
|
|||||||
bound_height = width * world.icon_size
|
bound_height = width * world.icon_size
|
||||||
|
|
||||||
update_nearby_tiles()
|
update_nearby_tiles()
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/door/Destroy()
|
/obj/machinery/door/Destroy()
|
||||||
density = 0
|
|
||||||
update_nearby_tiles()
|
update_nearby_tiles()
|
||||||
..()
|
..()
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/door/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
/obj/machinery/door/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||||
if(air_group) return 0
|
if(air_group) return 0
|
||||||
@@ -345,17 +335,12 @@
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
/obj/machinery/door/proc/update_nearby_tiles()
|
/obj/machinery/door/proc/update_nearby_tiles()
|
||||||
if (isnull(air_master))
|
if(!air_master)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
var/T
|
for(var/turf in locs)
|
||||||
|
update_heat_protection(turf)
|
||||||
for (T in locs.Copy())
|
air_master.mark_for_update(turf)
|
||||||
if (!isturf(T))
|
|
||||||
continue
|
|
||||||
|
|
||||||
update_heat_protection(T)
|
|
||||||
air_master.mark_for_update(T)
|
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ Class Procs:
|
|||||||
pulse2.dir = pick(cardinal)
|
pulse2.dir = pick(cardinal)
|
||||||
|
|
||||||
spawn(10)
|
spawn(10)
|
||||||
pulse2.delete()
|
qdel(pulse2)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/machinery/ex_act(severity)
|
/obj/machinery/ex_act(severity)
|
||||||
|
|||||||
@@ -16,47 +16,35 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
|||||||
|
|
||||||
/obj/effect/effect/water
|
/obj/effect/effect/water
|
||||||
name = "water"
|
name = "water"
|
||||||
icon = 'icons/effects/effects.dmi'
|
|
||||||
icon_state = "extinguish"
|
icon_state = "extinguish"
|
||||||
var/life = 15.0
|
var/life = 15.0
|
||||||
flags = TABLEPASS
|
|
||||||
mouse_opacity = 0
|
|
||||||
|
|
||||||
/obj/effect/proc/delete()
|
|
||||||
loc = null
|
|
||||||
if(reagents)
|
|
||||||
reagents.my_atom = null
|
|
||||||
reagents.delete()
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
/obj/effect/effect/water/New()
|
/obj/effect/effect/water/New()
|
||||||
..()
|
. = ..()
|
||||||
//var/turf/T = src.loc
|
//var/turf/T = src.loc
|
||||||
//if (istype(T, /turf))
|
//if (istype(T, /turf))
|
||||||
// T.firelevel = 0 //TODO: FIX
|
// T.firelevel = 0 //TODO: FIX
|
||||||
spawn( 70 )
|
|
||||||
delete()
|
spawn(70)
|
||||||
return
|
qdel(src)
|
||||||
return
|
|
||||||
|
|
||||||
/obj/effect/effect/water/Destroy()
|
/obj/effect/effect/water/Destroy()
|
||||||
//var/turf/T = src.loc
|
//var/turf/T = src.loc
|
||||||
//if (istype(T, /turf))
|
//if (istype(T, /turf))
|
||||||
// T.firelevel = 0 //TODO: FIX
|
// T.firelevel = 0 //TODO: FIX
|
||||||
src.delete()
|
|
||||||
..()
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/effect/effect/water/Move(turf/newloc)
|
..()
|
||||||
|
|
||||||
|
/obj/effect/effect/water/Move(NewLoc,Dir=0,step_x=0,step_y=0)
|
||||||
//var/turf/T = src.loc
|
//var/turf/T = src.loc
|
||||||
//if (istype(T, /turf))
|
//if (istype(T, /turf))
|
||||||
// T.firelevel = 0 //TODO: FIX
|
// T.firelevel = 0 //TODO: FIX
|
||||||
if (--src.life < 1)
|
|
||||||
|
if (--life < 1)
|
||||||
//SN src = null
|
//SN src = null
|
||||||
delete()
|
qdel(src)
|
||||||
if(newloc.density)
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
.=..()
|
.=..()
|
||||||
|
|
||||||
/obj/effect/effect/water/Bump(atom/A)
|
/obj/effect/effect/water/Bump(atom/A)
|
||||||
@@ -64,7 +52,6 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
|||||||
reagents.reaction(A)
|
reagents.reaction(A)
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
|
||||||
/datum/effect/effect/system
|
/datum/effect/effect/system
|
||||||
var/number = 3
|
var/number = 3
|
||||||
var/cardinals = 0
|
var/cardinals = 0
|
||||||
@@ -102,7 +89,6 @@ steam.start() -- spawns the effect
|
|||||||
/////////////////////////////////////////////
|
/////////////////////////////////////////////
|
||||||
/obj/effect/effect/steam
|
/obj/effect/effect/steam
|
||||||
name = "steam"
|
name = "steam"
|
||||||
icon = 'icons/effects/effects.dmi'
|
|
||||||
icon_state = "extinguish"
|
icon_state = "extinguish"
|
||||||
density = 0
|
density = 0
|
||||||
|
|
||||||
@@ -131,7 +117,8 @@ steam.start() -- spawns the effect
|
|||||||
sleep(5)
|
sleep(5)
|
||||||
step(steam,direction)
|
step(steam,direction)
|
||||||
spawn(20)
|
spawn(20)
|
||||||
if(steam) steam.delete()
|
if(steam)
|
||||||
|
qdel(steam)
|
||||||
|
|
||||||
/////////////////////////////////////////////
|
/////////////////////////////////////////////
|
||||||
//SPARK SYSTEM (like steam system)
|
//SPARK SYSTEM (like steam system)
|
||||||
@@ -144,8 +131,7 @@ steam.start() -- spawns the effect
|
|||||||
name = "sparks"
|
name = "sparks"
|
||||||
desc = "it's a spark what do you need to know?"
|
desc = "it's a spark what do you need to know?"
|
||||||
icon_state = "sparks"
|
icon_state = "sparks"
|
||||||
anchored = 1.0
|
anchored = 1
|
||||||
mouse_opacity = 0
|
|
||||||
|
|
||||||
var/inertia_dir = 0
|
var/inertia_dir = 0
|
||||||
var/energy = 0
|
var/energy = 0
|
||||||
@@ -166,9 +152,9 @@ steam.start() -- spawns the effect
|
|||||||
var/turf/T = src.loc
|
var/turf/T = src.loc
|
||||||
|
|
||||||
if (istype(T, /turf))
|
if (istype(T, /turf))
|
||||||
T.hotspot_expose(1000,100)
|
T.hotspot_expose(1000, 100)
|
||||||
|
|
||||||
..()
|
..()
|
||||||
return
|
|
||||||
|
|
||||||
/obj/effect/effect/sparks/Move()
|
/obj/effect/effect/sparks/Move()
|
||||||
..()
|
..()
|
||||||
@@ -223,8 +209,7 @@ steam.start() -- spawns the effect
|
|||||||
name = "smoke"
|
name = "smoke"
|
||||||
icon_state = "smoke"
|
icon_state = "smoke"
|
||||||
opacity = 1
|
opacity = 1
|
||||||
anchored = 0.0
|
anchored = 0
|
||||||
mouse_opacity = 0
|
|
||||||
var/amount = 6.0
|
var/amount = 6.0
|
||||||
var/time_to_live = 100
|
var/time_to_live = 100
|
||||||
|
|
||||||
@@ -234,10 +219,9 @@ steam.start() -- spawns the effect
|
|||||||
pixel_y = -32
|
pixel_y = -32
|
||||||
|
|
||||||
/obj/effect/effect/smoke/New()
|
/obj/effect/effect/smoke/New()
|
||||||
..()
|
. = ..()
|
||||||
spawn (time_to_live)
|
spawn(time_to_live)
|
||||||
delete()
|
qdel(src)
|
||||||
return
|
|
||||||
|
|
||||||
/obj/effect/effect/smoke/HasEntered(mob/living/carbon/M as mob )
|
/obj/effect/effect/smoke/HasEntered(mob/living/carbon/M as mob )
|
||||||
..()
|
..()
|
||||||
@@ -372,7 +356,7 @@ steam.start() -- spawns the effect
|
|||||||
sleep(10)
|
sleep(10)
|
||||||
step(smoke,direction)
|
step(smoke,direction)
|
||||||
spawn(smoke.time_to_live*0.75+rand(10,30))
|
spawn(smoke.time_to_live*0.75+rand(10,30))
|
||||||
if (smoke) smoke.delete()
|
if (smoke) qdel(smoke)
|
||||||
src.total_smoke--
|
src.total_smoke--
|
||||||
|
|
||||||
|
|
||||||
@@ -490,7 +474,7 @@ steam.start() -- spawns the effect
|
|||||||
sleep(10)
|
sleep(10)
|
||||||
step(smoke,direction)
|
step(smoke,direction)
|
||||||
spawn(150+rand(10,30))
|
spawn(150+rand(10,30))
|
||||||
if(smoke) smoke.delete()
|
if(smoke) qdel(smoke)
|
||||||
src.total_smoke--
|
src.total_smoke--
|
||||||
|
|
||||||
// Goon compat.
|
// Goon compat.
|
||||||
@@ -558,7 +542,7 @@ steam.start() -- spawns the effect
|
|||||||
flick("ion_fade", I)
|
flick("ion_fade", I)
|
||||||
I.icon_state = "blank"
|
I.icon_state = "blank"
|
||||||
spawn( 20 )
|
spawn( 20 )
|
||||||
if(I) I.delete()
|
if(I) qdel(I)
|
||||||
spawn(2)
|
spawn(2)
|
||||||
if(src.on)
|
if(src.on)
|
||||||
src.processing = 1
|
src.processing = 1
|
||||||
@@ -617,8 +601,8 @@ steam.start() -- spawns the effect
|
|||||||
I.icon_state = "blank"
|
I.icon_state = "blank"
|
||||||
II.icon_state = "blank"
|
II.icon_state = "blank"
|
||||||
spawn( 20 )
|
spawn( 20 )
|
||||||
if(I) I.delete()
|
if(I) qdel(I)
|
||||||
if(II) II.delete()
|
if(II) qdel(II)
|
||||||
spawn(2)
|
spawn(2)
|
||||||
if(src.on)
|
if(src.on)
|
||||||
src.processing = 1
|
src.processing = 1
|
||||||
@@ -658,7 +642,7 @@ steam.start() -- spawns the effect
|
|||||||
src.oldposition = get_turf(holder)
|
src.oldposition = get_turf(holder)
|
||||||
I.dir = src.holder.dir
|
I.dir = src.holder.dir
|
||||||
spawn(10)
|
spawn(10)
|
||||||
if(I) I.delete()
|
if(I) qdel(I)
|
||||||
src.number--
|
src.number--
|
||||||
spawn(2)
|
spawn(2)
|
||||||
if(src.on)
|
if(src.on)
|
||||||
@@ -687,15 +671,13 @@ steam.start() -- spawns the effect
|
|||||||
anchored = 1
|
anchored = 1
|
||||||
density = 0
|
density = 0
|
||||||
layer = OBJ_LAYER + 0.9
|
layer = OBJ_LAYER + 0.9
|
||||||
mouse_opacity = 0
|
|
||||||
var/amount = 3
|
var/amount = 3
|
||||||
var/expand = 1
|
var/expand = 1
|
||||||
animate_movement = 0
|
animate_movement = 0
|
||||||
var/metal = 0
|
var/metal = 0
|
||||||
|
|
||||||
|
|
||||||
/obj/effect/effect/foam/New(loc, var/ismetal=0)
|
/obj/effect/effect/foam/New(loc, var/ismetal=0)
|
||||||
..(loc)
|
. = ..(loc)
|
||||||
icon_state = "[ismetal ? "m":""]foam"
|
icon_state = "[ismetal ? "m":""]foam"
|
||||||
metal = ismetal
|
metal = ismetal
|
||||||
playsound(src, 'sound/effects/bubbles2.ogg', 80, 1, -3)
|
playsound(src, 'sound/effects/bubbles2.ogg', 80, 1, -3)
|
||||||
@@ -712,8 +694,7 @@ steam.start() -- spawns the effect
|
|||||||
|
|
||||||
flick("[icon_state]-disolve", src)
|
flick("[icon_state]-disolve", src)
|
||||||
sleep(5)
|
sleep(5)
|
||||||
delete()
|
qdel(src)
|
||||||
return
|
|
||||||
|
|
||||||
// on delete, transfer any reagents to the floor
|
// on delete, transfer any reagents to the floor
|
||||||
/obj/effect/effect/foam/Destroy()
|
/obj/effect/effect/foam/Destroy()
|
||||||
@@ -758,7 +739,7 @@ steam.start() -- spawns the effect
|
|||||||
flick("[icon_state]-disolve", src)
|
flick("[icon_state]-disolve", src)
|
||||||
|
|
||||||
spawn(5)
|
spawn(5)
|
||||||
delete()
|
qdel(src)
|
||||||
|
|
||||||
|
|
||||||
/obj/effect/effect/foam/HasEntered(var/atom/movable/AM)
|
/obj/effect/effect/foam/HasEntered(var/atom/movable/AM)
|
||||||
@@ -837,18 +818,6 @@ steam.start() -- spawns the effect
|
|||||||
desc = "A lightweight foamed metal wall."
|
desc = "A lightweight foamed metal wall."
|
||||||
var/metal = 1 // 1=aluminum, 2=iron
|
var/metal = 1 // 1=aluminum, 2=iron
|
||||||
|
|
||||||
New()
|
|
||||||
..()
|
|
||||||
update_nearby_tiles()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Destroy()
|
|
||||||
|
|
||||||
density = 0
|
|
||||||
update_nearby_tiles()
|
|
||||||
..()
|
|
||||||
|
|
||||||
proc/updateicon()
|
proc/updateicon()
|
||||||
if(metal == 1)
|
if(metal == 1)
|
||||||
icon_state = "metalfoam"
|
icon_state = "metalfoam"
|
||||||
@@ -920,6 +889,14 @@ steam.start() -- spawns the effect
|
|||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
/obj/structure/foamedmetal/New()
|
||||||
|
. = ..()
|
||||||
|
update_nearby_tiles()
|
||||||
|
|
||||||
|
/obj/structure/foamedmetal/Destroy()
|
||||||
|
update_nearby_tiles()
|
||||||
|
..()
|
||||||
|
|
||||||
/datum/effect/effect/system/reagents_explosion
|
/datum/effect/effect/system/reagents_explosion
|
||||||
var/amount // TNT equivalent
|
var/amount // TNT equivalent
|
||||||
var/flashing = 0 // does explosion creates flash effect?
|
var/flashing = 0 // does explosion creates flash effect?
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ proc/empulse(turf/epicenter, heavy_range, light_range, log=0)
|
|||||||
pulse.name = "emp pulse"
|
pulse.name = "emp pulse"
|
||||||
pulse.anchored = 1
|
pulse.anchored = 1
|
||||||
spawn(20)
|
spawn(20)
|
||||||
pulse.delete()
|
qdel(pulse)
|
||||||
|
|
||||||
if(heavy_range > light_range)
|
if(heavy_range > light_range)
|
||||||
light_range = heavy_range
|
light_range = heavy_range
|
||||||
|
|||||||
@@ -45,9 +45,6 @@
|
|||||||
if(istype(src.loc, /mob))
|
if(istype(src.loc, /mob))
|
||||||
var/mob/H = src.loc
|
var/mob/H = src.loc
|
||||||
H.drop_from_inventory(src) // items at the very least get unequipped from their mob before being deleted
|
H.drop_from_inventory(src) // items at the very least get unequipped from their mob before being deleted
|
||||||
if(reagents && istype(reagents))
|
|
||||||
reagents.my_atom = null
|
|
||||||
reagents.delete()
|
|
||||||
if(hasvar(src, "holder"))
|
if(hasvar(src, "holder"))
|
||||||
src:holder = null
|
src:holder = null
|
||||||
/* BROKEN, FUCK BYOND
|
/* BROKEN, FUCK BYOND
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src))
|
var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src))
|
||||||
T.icon = 'icons/effects/effects.dmi'
|
T.icon = 'icons/effects/effects.dmi'
|
||||||
flick("emppulse",T)
|
flick("emppulse",T)
|
||||||
spawn(8) T.delete()
|
spawn(8) qdel(T)
|
||||||
else
|
else
|
||||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 100, 1, -6)
|
playsound(get_turf(src), 'sound/effects/pop.ogg', 100, 1, -6)
|
||||||
var/obj/O = new saved_item(src)
|
var/obj/O = new saved_item(src)
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src))
|
var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src))
|
||||||
T.icon = 'icons/effects/effects.dmi'
|
T.icon = 'icons/effects/effects.dmi'
|
||||||
flick("emppulse",T)
|
flick("emppulse",T)
|
||||||
spawn(8) T.delete()
|
spawn(8) qdel(T)
|
||||||
|
|
||||||
/obj/item/device/chameleon/proc/disrupt(var/delete_dummy = 1)
|
/obj/item/device/chameleon/proc/disrupt(var/delete_dummy = 1)
|
||||||
if(active_dummy)
|
if(active_dummy)
|
||||||
|
|||||||
@@ -603,11 +603,12 @@ datum
|
|||||||
//world << "reagent data set ([reagent_id])"
|
//world << "reagent data set ([reagent_id])"
|
||||||
D.data = new_data
|
D.data = new_data
|
||||||
|
|
||||||
delete()
|
/datum/reagents/Destroy()
|
||||||
for(var/datum/reagent/R in reagent_list)
|
for(var/datum/reagent/reagent in reagent_list)
|
||||||
R.holder = null
|
reagent.holder = null
|
||||||
if(my_atom)
|
|
||||||
my_atom.reagents = null
|
if(my_atom)
|
||||||
|
my_atom = null
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@@ -66,7 +66,7 @@
|
|||||||
D.reagents.reaction(A_turf)
|
D.reagents.reaction(A_turf)
|
||||||
sleep(2)
|
sleep(2)
|
||||||
sleep(3)
|
sleep(3)
|
||||||
D.reagents.delete()
|
D.reagents.Destroy()
|
||||||
D.loc = null
|
D.loc = null
|
||||||
|
|
||||||
playsound(get_turf(src), 'sound/effects/spray2.ogg', 50, 1, -6)
|
playsound(get_turf(src), 'sound/effects/spray2.ogg', 50, 1, -6)
|
||||||
|
|||||||
Reference in New Issue
Block a user