From 6293688af9b0e3804e468f69fc3a9db62638e9a4 Mon Sep 17 00:00:00 2001 From: clusterfack Date: Thu, 16 Jul 2015 00:25:16 -0500 Subject: [PATCH] Removes more manual del() calls -Lots of things -They all call delete -Lots call spawn() unnecessarily -They should garbage collect or be pooled now --- code/game/machinery/kitchen/monkeyrecycler.dm | 2 +- code/game/objects/effects/effect_system.dm | 114 ++++++------- .../objects/items/weapons/table_rack_parts.dm | 11 +- code/game/objects/structures.dm | 2 +- code/game/objects/structures/watercloset.dm | 10 +- code/modules/flufftext/Hallucination.dm | 159 +++++++++--------- code/modules/mining/mine_turfs.dm | 4 +- code/modules/mob/dead/observer/logout.dm | 2 +- code/modules/mob/dead/observer/observer.dm | 6 + .../mob/living/carbon/monkey/monkey.dm | 6 + .../living/simple_animal/friendly/slime.dm | 2 +- .../living/simple_animal/hostile/hostile.dm | 5 + .../simple_animal/hostile/mining_mobs.dm | 18 +- code/modules/mob/new_player/logout.dm | 2 +- code/modules/power/antimatter/control.dm | 21 ++- code/modules/power/antimatter/shielding.dm | 37 ++-- .../modules/projectiles/projectile/special.dm | 4 +- .../reagent_containers/food/snacks.dm | 110 ++++++------ .../xenoarchaeology/artifact/artifact.dm | 9 +- .../research/xenoarchaeology/finds/finds.dm | 11 +- 20 files changed, 275 insertions(+), 260 deletions(-) diff --git a/code/game/machinery/kitchen/monkeyrecycler.dm b/code/game/machinery/kitchen/monkeyrecycler.dm index a39139a1b99..8a6022db2c0 100644 --- a/code/game/machinery/kitchen/monkeyrecycler.dm +++ b/code/game/machinery/kitchen/monkeyrecycler.dm @@ -59,7 +59,7 @@ if(target.wear_mask || target.l_hand || target.r_hand || target.back || target.uniform || target.hat) user << "The monkey may not have abiotic items on." else - del(target) + qdel(target) user << "You stuff the monkey in the machine." playsound(get_turf(src), 'sound/machines/juicer.ogg', 50, 1) use_power(500) diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 4554009efce..80710cd2f03 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -883,76 +883,76 @@ steam.start() -- spawns the effect desc = "A lightweight foamed metal wall." var/metal = 1 // 1=aluminum, 2=iron - proc/updateicon() - if(metal == 1) - icon_state = "metalfoam" - else - icon_state = "ironfoam" +/obj/structure/foamedmetal/proc/updateicon() + if(metal == 1) + icon_state = "metalfoam" + else + icon_state = "ironfoam" - ex_act(severity) +/obj/structure/foamedmetal/ex_act(severity) + qdel(src) + +/obj/structure/foamedmetal/blob_act() + qdel(src) + +/obj/structure/foamedmetal/bullet_act() + if(metal==1 || prob(50)) qdel(src) - blob_act() - del(src) +/obj/structure/foamedmetal/attack_paw(var/mob/user) + attack_hand(user) + return - bullet_act() - if(metal==1 || prob(50)) - del(src) +/obj/structure/foamedmetal/attack_hand(var/mob/user) + user.delayNextAttack(10) + if ((M_HULK in user.mutations) || (prob(75 - metal*25))) + user << "You smash through the metal foam wall." + for(var/mob/O in oviewers(user)) + if ((O.client && !( O.blinded ))) + O << "[user] smashes through the foamed metal." + qdel(src) + else + user << "You hit the metal foam but bounce off it." + return - attack_paw(var/mob/user) - attack_hand(user) + +/obj/structure/foamedmetal/attackby(var/obj/item/I, var/mob/user) + user.delayNextAttack(10) + if (istype(I, /obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = I + G.affecting.loc = src.loc + for(var/mob/O in viewers(src)) + if (O.client) + O << "[G.assailant] smashes [G.affecting] through the foamed metal wall." + returnToPool(I) + qdel(src) return - attack_hand(var/mob/user) - user.delayNextAttack(10) - if ((M_HULK in user.mutations) || (prob(75 - metal*25))) - user << "You smash through the metal foam wall." - for(var/mob/O in oviewers(user)) - if ((O.client && !( O.blinded ))) - O << "[user] smashes through the foamed metal." - del(src) - else - user << "You hit the metal foam but bounce off it." - return + if(prob(I.force*20 - metal*25)) + user << "You smash through the foamed metal with \the [I]." + for(var/mob/O in oviewers(user)) + if ((O.client && !( O.blinded ))) + O << "[user] smashes through the foamed metal." + qdel(src) + else + user << "You hit the metal foam to no effect." + +/obj/structure/foamedmetal/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) + if(air_group) return 0 + return !density - attackby(var/obj/item/I, var/mob/user) - user.delayNextAttack(10) - if (istype(I, /obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = I - G.affecting.loc = src.loc - for(var/mob/O in viewers(src)) - if (O.client) - O << "[G.assailant] smashes [G.affecting] through the foamed metal wall." - returnToPool(I) - qdel(src) - return +/obj/structure/foamedmetal/proc/update_nearby_tiles() + if (isnull(air_master)) + return 0 - if(prob(I.force*20 - metal*25)) - user << "You smash through the foamed metal with \the [I]." - for(var/mob/O in oviewers(user)) - if ((O.client && !( O.blinded ))) - O << "[user] smashes through the foamed metal." - qdel(src) - else - user << "You hit the metal foam to no effect." + var/T = loc - CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) - if(air_group) return 0 - return !density + if (isturf(T)) + air_master.mark_for_update(T) - - proc/update_nearby_tiles() - if (isnull(air_master)) - return 0 - - var/T = loc - - if (isturf(T)) - air_master.mark_for_update(T) - - return 1 + return 1 /obj/structure/foamedmetal/New() . = ..() diff --git a/code/game/objects/items/weapons/table_rack_parts.dm b/code/game/objects/items/weapons/table_rack_parts.dm index d76f761e49e..9104f7ae3d0 100644 --- a/code/game/objects/items/weapons/table_rack_parts.dm +++ b/code/game/objects/items/weapons/table_rack_parts.dm @@ -19,18 +19,19 @@ //SN src = null qdel(src) if (istype(W, /obj/item/stack/rods)) - if (W:amount >= 4) + var/obj/item/stack/rods/rods = W + if (rods.amount >= 4) new /obj/item/weapon/table_parts/reinforced( user.loc ) user << "You reinforce the [name]." - W:use(4) - del(src) - else if (W:amount < 4) + rods.use(4) + qdel(src) + else if (rods.amount < 4) user << "You need at least four rods to do this." /obj/item/weapon/table_parts/attack_self(mob/user as mob) new /obj/structure/table( user.loc ) user.drop_item(src) - del(src) + qdel(src) return diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index cb1289bab5e..a2070a61530 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -3,7 +3,7 @@ obj/structure obj/structure/blob_act() if(prob(50)) - del(src) + qdel(src) obj/structure/ex_act(severity) switch(severity) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index b9c3ed0c820..fb7e2501436 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -205,7 +205,7 @@ /obj/machinery/shower/update_icon() //this is terribly unreadable, but basically it makes the shower mist up overlays.len = 0 //once it's been on for a while, in addition to handling the water overlay. if(mymist) - del(mymist) + returnToPool(mymist) if(on) overlays += image('icons/obj/watercloset.dmi', src, "water", MOB_LAYER + 1, dir) @@ -215,16 +215,16 @@ spawn(50) if(src && on) ismist = 1 - mymist = new /obj/effect/mist(loc) + mymist = getFromPool(/obj/effect/mist,loc) else ismist = 1 - mymist = new /obj/effect/mist(loc) + mymist = getFromPool(/obj/effect/mist,loc) else if(ismist) ismist = 1 - mymist = new /obj/effect/mist(loc) + mymist = getFromPool(/obj/effect/mist,loc) spawn(250) if(src && !on) - del(mymist) + returnToPool(mymist) ismist = 0 /obj/machinery/shower/Crossed(atom/movable/O) diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 3636d1bd36a..8f9c1df8e32 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -284,96 +284,98 @@ proc/check_panel(mob/M) var/health = 100 - attackby(var/obj/item/weapon/P as obj, mob/user as mob) +/obj/effect/fake_attacker/attackby(var/obj/item/weapon/P as obj, mob/user as mob) + step_away(src,my_target,2) + for(var/mob/M in oviewers(world.view,my_target)) + M << "[my_target] flails around wildly." + my_target.show_message("[src] has been attacked by [my_target] ", 1) //Lazy. + + src.health -= P.force + + + return + +/obj/effect/fake_attacker/Crossed(var/mob/M, somenumber) + if(M == my_target) step_away(src,my_target,2) - for(var/mob/M in oviewers(world.view,my_target)) - M << "[my_target] flails around wildly." - my_target.show_message("[src] has been attacked by [my_target] ", 1) //Lazy. + if(prob(30)) + for(var/mob/O in oviewers(world.view , my_target)) + O << "[my_target] stumbles around." - src.health -= P.force +/obj/effect/fake_attacker/New() + ..() + step_away(src,my_target,2) + attack_loop() + if(my_target) + my_target.hallucinations -= src + returnToPool(src) - return - - Crossed(var/mob/M, somenumber) - if(M == my_target) - step_away(src,my_target,2) - if(prob(30)) - for(var/mob/O in oviewers(world.view , my_target)) - O << "[my_target] stumbles around." - - New() - ..() - spawn(300) - if(my_target) - my_target.hallucinations -= src - del(src) - step_away(src,my_target,2) - spawn attack_loop() +/obj/effect/fake_attacker/proc/updateimage() +// del src.currentimage - proc/updateimage() - // del src.currentimage + if(src.dir == NORTH) + del src.currentimage + src.currentimage = new /image(up,src) + else if(src.dir == SOUTH) + del src.currentimage + src.currentimage = new /image(down,src) + else if(src.dir == EAST) + del src.currentimage + src.currentimage = new /image(right,src) + else if(src.dir == WEST) + del src.currentimage + src.currentimage = new /image(left,src) + my_target << currentimage - if(src.dir == NORTH) - del src.currentimage - src.currentimage = new /image(up,src) - else if(src.dir == SOUTH) - del src.currentimage - src.currentimage = new /image(down,src) - else if(src.dir == EAST) - del src.currentimage - src.currentimage = new /image(right,src) - else if(src.dir == WEST) - del src.currentimage - src.currentimage = new /image(left,src) - my_target << currentimage - - - proc/attack_loop() - while(1) - sleep(rand(5,10)) - if(src.health < 0) - collapse() - continue - if(get_dist(src,my_target) > 1) - src.dir = get_dir(src,my_target) - step_towards(src,my_target) - updateimage() - else - if(prob(15)) - if(weapon_name) - my_target << sound(pick('sound/weapons/genhit1.ogg', 'sound/weapons/genhit2.ogg', 'sound/weapons/genhit3.ogg')) - my_target.show_message("[my_target] has been attacked with [weapon_name] by [src.name] ", 1) - my_target.halloss += 8 - if(prob(20)) my_target.eye_blurry += 3 - if(prob(33)) - if(!locate(/obj/effect/overlay) in my_target.loc) - fake_blood(my_target) - else - my_target << sound(pick('sound/weapons/punch1.ogg','sound/weapons/punch2.ogg','sound/weapons/punch3.ogg','sound/weapons/punch4.ogg')) - my_target.show_message("[src.name] has punched [my_target]!", 1) - my_target.halloss += 4 - if(prob(33)) - if(!locate(/obj/effect/overlay) in my_target.loc) - fake_blood(my_target) - +/obj/effect/fake_attacker/proc/attack_loop() + var/time = 0 + while(time < 300) + var/timespent = rand(5,10) + time += timespent + sleep(timespent) + if(src.health < 0) + collapse = 1 + updateimage() + continue + if(get_dist(src,my_target) > 1) + src.dir = get_dir(src,my_target) + step_towards(src,my_target) + updateimage() + else if(prob(15)) - step_away(src,my_target,2) - - proc/collapse() - collapse = 1 - updateimage() + if(weapon_name) + my_target << sound(pick('sound/weapons/genhit1.ogg', 'sound/weapons/genhit2.ogg', 'sound/weapons/genhit3.ogg')) + my_target.show_message("[my_target] has been attacked with [weapon_name] by [src.name] ", 1) + my_target.halloss += 8 + if(prob(20)) my_target.eye_blurry += 3 + if(prob(33)) + if(!locate(/obj/effect/overlay) in my_target.loc) + fake_blood(my_target) + else + my_target << sound(pick('sound/weapons/punch1.ogg','sound/weapons/punch2.ogg','sound/weapons/punch3.ogg','sound/weapons/punch4.ogg')) + my_target.show_message("[src.name] has punched [my_target]!", 1) + my_target.halloss += 4 + if(prob(33)) + if(!locate(/obj/effect/overlay) in my_target.loc) + fake_blood(my_target) + if(prob(15)) + step_away(src,my_target,2) +/* +/obj/effect/fake_attacker/proc/collapse() + collapse = 1 + updateimage() +*/ /proc/fake_blood(var/mob/target) - var/obj/effect/overlay/O = new/obj/effect/overlay(target.loc) + var/obj/effect/overlay/O = getFromPool(/obj/effect/overlay,target.loc) O.name = "blood" var/image/I = image('icons/effects/blood.dmi',O,"floor[rand(1,7)]",O.dir,1) target << I - spawn(300) - del(O) - return + sleep(300) + returnToPool(O) var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/item/ammo_storage/box/a357,\ /obj/item/weapon/gun/energy/crossbow, /obj/item/weapon/melee/energy/sword,\ @@ -407,7 +409,7 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/ite if(!clone) return //var/obj/effect/fake_attacker/F = new/obj/effect/fake_attacker(outside_range(target)) - var/obj/effect/fake_attacker/F = new/obj/effect/fake_attacker(target.loc) + var/obj/effect/fake_attacker/F = getFromPool(/obj/effect/fake_attacker,target.loc) if(clone.l_hand) if(!(locate(clone.l_hand) in non_fakeattack_weapons)) clone_weapon = clone.l_hand.name @@ -432,9 +434,6 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/ite // F.currentimage = new /image(clone) /* - - - F.left = new /icon(clone.stand_icon,dir=WEST) for(var/icon/i in clone.overlays) F.left.Blend(i) diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 43a4a6448d6..e5b30e51490 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -271,14 +271,14 @@ if(artifact_find) if( excavation_level > 0 || prob(15) ) - B = new(src) + B = getFromPool(/obj/structure/boulder, src) if(artifact_find) B.artifact_find = artifact_find else artifact_debris(1) else if(prob(15)) - B = new(src) + B = getFromPool(/obj/structure/boulder, src) if(B) GetDrilled(0) diff --git a/code/modules/mob/dead/observer/logout.dm b/code/modules/mob/dead/observer/logout.dm index cf51df634eb..11c6c3c834c 100644 --- a/code/modules/mob/dead/observer/logout.dm +++ b/code/modules/mob/dead/observer/logout.dm @@ -2,4 +2,4 @@ ..() spawn(0) if(src && !key) //we've transferred to another mob. This ghost should be deleted. - del(src) + qdel(src) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 96dc6732336..d290644669a 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -102,6 +102,12 @@ real_name = name ..() +/mob/dead/observer/Destroy() + ..() + following = null + ghostMulti = null + canclone = null + /mob/dead/observer/hasFullAccess() return isAdminGhost(src) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 155fff2c52f..bc70b602f0f 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -29,6 +29,12 @@ var/update_muts = 1 // Monkey gene must be set at start. var/alien = 0 //Used for reagent metabolism. +/mob/living/carbon/monkey/Destroy() + ..() + uniform = null + hat = null + glasses = null + /mob/living/carbon/monkey/tajara name = "farwa" voice_name = "farwa" diff --git a/code/modules/mob/living/simple_animal/friendly/slime.dm b/code/modules/mob/living/simple_animal/friendly/slime.dm index 33bd2e85a72..8373d59cc1c 100644 --- a/code/modules/mob/living/simple_animal/friendly/slime.dm +++ b/code/modules/mob/living/simple_animal/friendly/slime.dm @@ -50,7 +50,7 @@ S2.icon_living = "[src.colour] baby slime" S2.icon_dead = "[src.colour] baby slime dead" S2.colour = "[src.colour]" - del(src) + qdel(src) /mob/living/simple_animal/slime/proc/rabid() diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index cfd77907c34..5c1587554cd 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -29,6 +29,11 @@ var/stat_exclusive = 0 //Mobs with this set to 1 will exclusively attack things defined by stat_attack, stat_attack 2 means they will only attack corpses var/attack_faction = null //Put a faction string here to have a mob only ever attack a specific faction +/mob/living/simple_animal/hostile/resetVariables() + ..("wanted_objects", "friends") + wanted_objects = list() + friends = list() + /mob/living/simple_animal/hostile/Life() . = ..() if(istype(loc, /obj/item/device/mobcapsule)) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index 6f45fb16274..707b5b2f480 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -242,7 +242,7 @@ pass_flags = PASSTABLE /mob/living/simple_animal/hostile/asteroid/hivelord/OpenFire(var/the_target) - var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/A = new /mob/living/simple_animal/hostile/asteroid/hivelordbrood(src.loc) + var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/A = getFromPool(/mob/living/simple_animal/hostile/asteroid/hivelordbrood,src.loc) A.GiveTarget(target) A.friends = friends A.faction = faction @@ -263,9 +263,9 @@ var/inert = 0 /obj/item/asteroid/hivelord_core/New() - spawn(1200) - inert = 1 - desc = "The remains of a hivelord that have become useless, having been left alone too long after being harvested." + sleep(1200) + inert = 1 + desc = "The remains of a hivelord that have become useless, having been left alone too long after being harvested." /obj/item/asteroid/hivelord_core/attack(mob/living/M as mob, mob/living/user as mob) if(ishuman(M)) @@ -283,7 +283,7 @@ user << "You chomp into [src], barely managing to hold it down, but feel amazingly refreshed in mere moments." playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) H.revive() - del(src) + qdel(src) ..() /mob/living/simple_animal/hostile/asteroid/hivelordbrood @@ -312,11 +312,11 @@ /mob/living/simple_animal/hostile/asteroid/hivelordbrood/New() ..() - spawn(100) - del(src) + sleep(100) + returnToPool(src) /mob/living/simple_animal/hostile/asteroid/hivelordbrood/Die() - del(src) + returnToPool(src) /mob/living/simple_animal/hostile/asteroid/goliath name = "goliath" @@ -417,7 +417,7 @@ if(current_armor.["melee"] < 90) current_armor.["melee"] = min(current_armor.["melee"] + 10, 90) user << "You strengthen [target], improving its resistance against melee attacks." - del(src) + qdel(src) else user << "You can't improve [C] any further." return diff --git a/code/modules/mob/new_player/logout.dm b/code/modules/mob/new_player/logout.dm index 9f064a99cd5..ad1c9b3098d 100644 --- a/code/modules/mob/new_player/logout.dm +++ b/code/modules/mob/new_player/logout.dm @@ -3,5 +3,5 @@ ..() if(!spawning)//Here so that if they are spawning and log out, the other procs can play out and they will have a mob to come back to. key = null//We null their key before deleting the mob, so they are properly kicked out. - del(src) + qdel(src) return \ No newline at end of file diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm index 4e68e470b91..63b7d755856 100644 --- a/code/modules/power/antimatter/control.dm +++ b/code/modules/power/antimatter/control.dm @@ -41,7 +41,13 @@ /obj/machinery/power/am_control_unit/Destroy()//Perhaps damage and run stability checks rather than just del on the others for(var/obj/machinery/am_shielding/AMS in linked_shielding) - del(AMS) + AMS.control_unit = null + qdel(AMS) + for(var/obj/machinery/am_shielding/AMS in linked_cores) + AMS.control_unit = null + qdel(AMS) + qdel(fueljar) + fueljar = null ..() @@ -51,7 +57,7 @@ exploded=1 explosion(get_turf(src),8,10,12,15) if(src) - del(src) + qdel(src) if(update_shield_icons && !shield_icon_delay) check_shield_icons() @@ -115,9 +121,7 @@ if(prob(100-stability))//Might infect the rest of the machine for(var/obj/machinery/am_shielding/AMS in linked_shielding) AMS.blob_act() - spawn(0) - //Likely explode - del(src) + qdel(src) return check_stability() return @@ -224,7 +228,7 @@ /obj/machinery/power/am_control_unit/proc/check_stability()//TODO: make it break when low also might want to add a way to fix it like a part or such that can be replaced if(stability <= 0) - del(src) + qdel(src) return @@ -256,9 +260,8 @@ else for(var/obj/machinery/am_shielding/AMS in linked_shielding) AMS.update_icon() - spawn(20) - shield_icon_delay = 0 - return + sleep(20) + shield_icon_delay = 0 /obj/machinery/power/am_control_unit/proc/check_core_stability() diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm index d1d2ec63164..c47c3568e52 100644 --- a/code/modules/power/antimatter/shielding.dm +++ b/code/modules/power/antimatter/shielding.dm @@ -33,20 +33,18 @@ proc/cardinalrange(var/center) ..(loc) machines -= src power_machines += src - spawn(10) - controllerscan() - return + sleep(10) + controllerscan() /obj/machinery/am_shielding/proc/controllerscan(var/priorscan = 0) //Make sure we are the only one here if(!istype(src.loc, /turf)) - del(src) + qdel(src) return for(var/obj/machinery/am_shielding/AMS in loc.contents) if(AMS == src) continue - spawn(0) - del(src) + qdel(src) return //Search for shielding first @@ -55,19 +53,14 @@ proc/cardinalrange(var/center) break if(!control_unit)//No other guys nearby, look for a control unit - for(var/direction in cardinal) for(var/obj/machinery/power/am_control_unit/AMC in cardinalrange(src)) if(AMC.add_shielding(src)) break - - if(!control_unit) if(!priorscan) - spawn(20) - controllerscan(1)//Last chance + sleep(20) + controllerscan(1)//Last chance return - spawn(0) - del(src) - return + qdel(src) /obj/machinery/am_shielding/Destroy() @@ -103,8 +96,7 @@ proc/cardinalrange(var/center) new /obj/effect/blob/node(src.loc,150) else new /obj/effect/blob(src.loc,60) - spawn(0) - del(src) + qdel(src) return check_stability() return @@ -200,7 +192,6 @@ proc/cardinalrange(var/center) if(!control_unit) return control_unit.linked_cores.Add(src) control_unit.reported_core_efficiency += efficiency - return /obj/machinery/am_shielding/proc/shutdown_core() @@ -208,17 +199,13 @@ proc/cardinalrange(var/center) if(!control_unit) return control_unit.linked_cores.Remove(src) control_unit.reported_core_efficiency -= efficiency - return /obj/machinery/am_shielding/proc/check_stability(var/injecting_fuel = 0) if(stability > 0) return if(injecting_fuel && control_unit) control_unit.exploding = 1 - if(src) - del(src) - return - + qdel(src) /obj/machinery/am_shielding/proc/recalc_efficiency(var/new_efficiency)//tbh still not 100% sure how I want to deal with efficiency so this is likely temp if(!control_unit || !processing) return @@ -226,7 +213,6 @@ proc/cardinalrange(var/center) new_efficiency /= 2 control_unit.reported_core_efficiency += (new_efficiency - efficiency) efficiency = new_efficiency - return @@ -248,7 +234,6 @@ proc/cardinalrange(var/center) /obj/item/device/am_shielding_container/attackby(var/obj/item/I, var/mob/user) if(istype(I, /obj/item/device/multitool) && istype(src.loc,/turf)) new/obj/machinery/am_shielding(src.loc) - del(src) + qdel(src) return - ..() - return \ No newline at end of file + ..() \ No newline at end of file diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index a2f8b99f791..6caf00dee7a 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -247,5 +247,5 @@ obj/item/projectile/kinetic/New() /obj/item/effect/kinetic_blast/New() ..() - spawn(4) - del(src) \ No newline at end of file + sleep(4) + returnToPool(src) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 75e74703f59..32518469e44 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -1437,68 +1437,68 @@ //var/wrapped = 0 var/monkey_type = /mob/living/carbon/monkey - New() - ..() - reagents.add_reagent("nutriment",10) +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/New() + ..() + reagents.add_reagent("nutriment",10) - afterattack(obj/O, mob/user,proximity) - if(!proximity) return - if(istype(O,/obj/structure/sink) && !wrapped) - user << "You place [src] under a stream of water..." - return Expand() - ..() +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/afterattack(obj/O, mob/user,proximity) + if(!proximity) return + if(istype(O,/obj/structure/sink) && !wrapped) + user << "You place [src] under a stream of water..." + return Expand() + ..() - attack_self(mob/user) - if(wrapped) - Unwrap(user) +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/attack_self(mob/user) + if(wrapped) + Unwrap(user) - On_Consume(var/mob/M) - M << "Something inside of you suddently expands!" +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/On_Consume(var/mob/M) + M << "Something inside of you suddently expands!" - if (istype(M, /mob/living/carbon/human)) - //Do not try to understand. - var/obj/item/weapon/surprise = new/obj/item/weapon(M) - var/mob/living/carbon/monkey/ook = new monkey_type(null) //no other way to get access to the vars, alas - surprise.icon = ook.icon - surprise.icon_state = ook.icon_state - surprise.name = "malformed [ook.name]" - surprise.desc = "Looks like \a very deformed [ook.name], a little small for its kind. It shows no signs of life." - del(ook) //rip nullspace monkey - surprise.transform *= 0.6 - surprise.add_blood(M) - var/mob/living/carbon/human/H = M - var/datum/organ/external/E = H.get_organ("chest") - E.fracture() - for (var/datum/organ/internal/I in E.internal_organs) - I.take_damage(rand(I.min_bruised_damage, I.min_broken_damage+1)) + if (istype(M, /mob/living/carbon/human)) + //Do not try to understand. + var/obj/item/weapon/surprise = new/obj/item/weapon(M) + var/mob/living/carbon/monkey/ook = new monkey_type(null) //no other way to get access to the vars, alas + surprise.icon = ook.icon + surprise.icon_state = ook.icon_state + surprise.name = "malformed [ook.name]" + surprise.desc = "Looks like \a very deformed [ook.name], a little small for its kind. It shows no signs of life." + qdel(ook) //rip nullspace monkey + surprise.transform *= 0.6 + surprise.add_blood(M) + var/mob/living/carbon/human/H = M + var/datum/organ/external/E = H.get_organ("chest") + E.fracture() + for (var/datum/organ/internal/I in E.internal_organs) + I.take_damage(rand(I.min_bruised_damage, I.min_broken_damage+1)) - if (!E.hidden && prob(60)) //set it snuggly - E.hidden = surprise - E.cavity = 0 - else //someone is having a bad day - E.createwound(CUT, 30) - E.embed(surprise) - else if (ismonkey(M)) - M.visible_message("[M] suddenly tears in half!") - var/mob/living/carbon/monkey/ook = new monkey_type(M.loc) - ook.name = "malformed [ook.name]" - ook.transform *= 0.6 - ook.add_blood(M) - M.gib() - ..() + if (!E.hidden && prob(60)) //set it snuggly + E.hidden = surprise + E.cavity = 0 + else //someone is having a bad day + E.createwound(CUT, 30) + E.embed(surprise) + else if (ismonkey(M)) + M.visible_message("[M] suddenly tears in half!") + var/mob/living/carbon/monkey/ook = new monkey_type(M.loc) + ook.name = "malformed [ook.name]" + ook.transform *= 0.6 + ook.add_blood(M) + M.gib() + ..() - proc/Expand() - for(var/mob/M in viewers(src,7)) - M << "\The [src] expands!" - new monkey_type(get_turf(src)) - del(src) +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Expand() + for(var/mob/M in viewers(src,7)) + M << "\The [src] expands!" + new monkey_type(get_turf(src)) + qdel(src) - proc/Unwrap(mob/user as mob) - icon_state = "monkeycube" - desc = "Just add water!" - user << "You unwrap the cube." - wrapped = 0 - return +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Unwrap(mob/user as mob) + icon_state = "monkeycube" + desc = "Just add water!" + user << "You unwrap the cube." + wrapped = 0 + return /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped desc = "Still wrapped in some paper." diff --git a/code/modules/research/xenoarchaeology/artifact/artifact.dm b/code/modules/research/xenoarchaeology/artifact/artifact.dm index fa37ee6072b..45ca0bfdd33 100644 --- a/code/modules/research/xenoarchaeology/artifact/artifact.dm +++ b/code/modules/research/xenoarchaeology/artifact/artifact.dm @@ -40,6 +40,11 @@ var/datum/geosample/geological_data var/datum/artifact_find/artifact_find +/obj/structure/boulder/Destroy() + ..() + geological_data = null + artifact_find = null + /obj/structure/boulder/New() ..() icon_state = "boulder[rand(1,4)]" @@ -84,7 +89,7 @@ //failure src.visible_message("\The [src] suddenly crumbles away.") user << "\The [src] has disintegrated under your onslaught, any secrets it was holding are long gone." - del(src) + returnToPool(src) return if(prob(excavation_level)) @@ -99,7 +104,7 @@ X.my_effect.artifact_id = artifact_find.artifact_id else user << "[src] has been whittled away under your careful excavation, but there was nothing of interest inside." - del(src) + returnToPool(src) /obj/structure/boulder/Bumped(AM) . = ..() diff --git a/code/modules/research/xenoarchaeology/finds/finds.dm b/code/modules/research/xenoarchaeology/finds/finds.dm index 41f6ac4f941..1cdbabfbbc7 100644 --- a/code/modules/research/xenoarchaeology/finds/finds.dm +++ b/code/modules/research/xenoarchaeology/finds/finds.dm @@ -42,6 +42,11 @@ if(!inside) inside = locate() in contents +/obj/item/weapon/strangerock/Destroy() + ..() + qdel(inside) + inside = null + /*/obj/item/weapon/strangerock/ex_act(var/severity) if(severity && prob(30)) src.visible_message("The [src] crumbles away, leaving some dust and gravel behind.")*/ @@ -58,7 +63,7 @@ else for(var/mob/M in viewers(world.view, user)) M.show_message("[src] burns away into nothing.",1) - del(src) + qdel(src) w.remove_fuel(4) else for(var/mob/M in viewers(world.view, user)) @@ -74,7 +79,7 @@ ..() if(prob(33)) src.visible_message("[src] crumbles away, leaving some dust and gravel behind.") - del(src) + qdel(src) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Archaeological finds @@ -547,7 +552,7 @@ var/turf/T = get_turf(src) if(istype(T, /turf/unsimulated/mineral)) T:last_find = new_item - del(src) + qdel(src) else if(talkative) listening_to_players = 1