Merge pull request #5376 from clusterfack/INTOTHETRASHITGOES

Removes more manual del() calls
This commit is contained in:
clusterfack
2015-07-17 15:35:14 -05:00
20 changed files with 275 additions and 260 deletions

View File

@@ -59,7 +59,7 @@
if(target.wear_mask || target.l_hand || target.r_hand || target.back || target.uniform || target.hat) if(target.wear_mask || target.l_hand || target.r_hand || target.back || target.uniform || target.hat)
user << "<span class='warning'>The monkey may not have abiotic items on.</span>" user << "<span class='warning'>The monkey may not have abiotic items on.</span>"
else else
del(target) qdel(target)
user << "<span class='notice'>You stuff the monkey in the machine.</span>" user << "<span class='notice'>You stuff the monkey in the machine.</span>"
playsound(get_turf(src), 'sound/machines/juicer.ogg', 50, 1) playsound(get_turf(src), 'sound/machines/juicer.ogg', 50, 1)
use_power(500) use_power(500)

View File

@@ -883,76 +883,76 @@ 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
proc/updateicon() /obj/structure/foamedmetal/proc/updateicon()
if(metal == 1) if(metal == 1)
icon_state = "metalfoam" icon_state = "metalfoam"
else else
icon_state = "ironfoam" 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) qdel(src)
blob_act() /obj/structure/foamedmetal/attack_paw(var/mob/user)
del(src) attack_hand(user)
return
bullet_act() /obj/structure/foamedmetal/attack_hand(var/mob/user)
if(metal==1 || prob(50)) user.delayNextAttack(10)
del(src) if ((M_HULK in user.mutations) || (prob(75 - metal*25)))
user << "<span class='notice'>You smash through the metal foam wall.</span>"
for(var/mob/O in oviewers(user))
if ((O.client && !( O.blinded )))
O << "<span class='warning'>[user] smashes through the foamed metal.</span>"
qdel(src)
else
user << "<span class='notice'>You hit the metal foam but bounce off it.</span>"
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 << "<span class='warning'>[G.assailant] smashes [G.affecting] through the foamed metal wall.</span>"
returnToPool(I)
qdel(src)
return return
attack_hand(var/mob/user) if(prob(I.force*20 - metal*25))
user.delayNextAttack(10) user << "<span class='notice'>You smash through the foamed metal with \the [I].</span>"
if ((M_HULK in user.mutations) || (prob(75 - metal*25))) for(var/mob/O in oviewers(user))
user << "<span class='notice'>You smash through the metal foam wall.</span>" if ((O.client && !( O.blinded )))
for(var/mob/O in oviewers(user)) O << "<span class='warning'>[user] smashes through the foamed metal.</span>"
if ((O.client && !( O.blinded ))) qdel(src)
O << "<span class='warning'>[user] smashes through the foamed metal.</span>" else
del(src) user << "<span class='notice'>You hit the metal foam to no effect.</span>"
else
user << "<span class='notice'>You hit the metal foam but bounce off it.</span>" /obj/structure/foamedmetal/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0)
return if(air_group) return 0
return !density
attackby(var/obj/item/I, var/mob/user) /obj/structure/foamedmetal/proc/update_nearby_tiles()
user.delayNextAttack(10) if (isnull(air_master))
if (istype(I, /obj/item/weapon/grab)) return 0
var/obj/item/weapon/grab/G = I
G.affecting.loc = src.loc
for(var/mob/O in viewers(src))
if (O.client)
O << "<span class='warning'>[G.assailant] smashes [G.affecting] through the foamed metal wall.</span>"
returnToPool(I)
qdel(src)
return
if(prob(I.force*20 - metal*25)) var/T = loc
user << "<span class='notice'>You smash through the foamed metal with \the [I].</span>"
for(var/mob/O in oviewers(user))
if ((O.client && !( O.blinded )))
O << "<span class='warning'>[user] smashes through the foamed metal.</span>"
qdel(src)
else
user << "<span class='notice'>You hit the metal foam to no effect.</span>"
CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) if (isturf(T))
if(air_group) return 0 air_master.mark_for_update(T)
return !density
return 1
proc/update_nearby_tiles()
if (isnull(air_master))
return 0
var/T = loc
if (isturf(T))
air_master.mark_for_update(T)
return 1
/obj/structure/foamedmetal/New() /obj/structure/foamedmetal/New()
. = ..() . = ..()

View File

@@ -19,18 +19,19 @@
//SN src = null //SN src = null
qdel(src) qdel(src)
if (istype(W, /obj/item/stack/rods)) 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 ) new /obj/item/weapon/table_parts/reinforced( user.loc )
user << "<span class='notice'>You reinforce the [name].</span>" user << "<span class='notice'>You reinforce the [name].</span>"
W:use(4) rods.use(4)
del(src) qdel(src)
else if (W:amount < 4) else if (rods.amount < 4)
user << "<span class='warning'>You need at least four rods to do this.</span>" user << "<span class='warning'>You need at least four rods to do this.</span>"
/obj/item/weapon/table_parts/attack_self(mob/user as mob) /obj/item/weapon/table_parts/attack_self(mob/user as mob)
new /obj/structure/table( user.loc ) new /obj/structure/table( user.loc )
user.drop_item(src) user.drop_item(src)
del(src) qdel(src)
return return

View File

@@ -3,7 +3,7 @@ obj/structure
obj/structure/blob_act() obj/structure/blob_act()
if(prob(50)) if(prob(50))
del(src) qdel(src)
obj/structure/ex_act(severity) obj/structure/ex_act(severity)
switch(severity) switch(severity)

View File

@@ -205,7 +205,7 @@
/obj/machinery/shower/update_icon() //this is terribly unreadable, but basically it makes the shower mist up /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. overlays.len = 0 //once it's been on for a while, in addition to handling the water overlay.
if(mymist) if(mymist)
del(mymist) returnToPool(mymist)
if(on) if(on)
overlays += image('icons/obj/watercloset.dmi', src, "water", MOB_LAYER + 1, dir) overlays += image('icons/obj/watercloset.dmi', src, "water", MOB_LAYER + 1, dir)
@@ -215,16 +215,16 @@
spawn(50) spawn(50)
if(src && on) if(src && on)
ismist = 1 ismist = 1
mymist = new /obj/effect/mist(loc) mymist = getFromPool(/obj/effect/mist,loc)
else else
ismist = 1 ismist = 1
mymist = new /obj/effect/mist(loc) mymist = getFromPool(/obj/effect/mist,loc)
else if(ismist) else if(ismist)
ismist = 1 ismist = 1
mymist = new /obj/effect/mist(loc) mymist = getFromPool(/obj/effect/mist,loc)
spawn(250) spawn(250)
if(src && !on) if(src && !on)
del(mymist) returnToPool(mymist)
ismist = 0 ismist = 0
/obj/machinery/shower/Crossed(atom/movable/O) /obj/machinery/shower/Crossed(atom/movable/O)

View File

@@ -284,96 +284,98 @@ proc/check_panel(mob/M)
var/health = 100 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 << "<span class='danger'>[my_target] flails around wildly.</span>"
my_target.show_message("<span class='danger'>[src] has been attacked by [my_target] </span>", 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) step_away(src,my_target,2)
for(var/mob/M in oviewers(world.view,my_target)) if(prob(30))
M << "<span class='danger'>[my_target] flails around wildly.</span>" for(var/mob/O in oviewers(world.view , my_target))
my_target.show_message("<span class='danger'>[src] has been attacked by [my_target] </span>", 1) //Lazy. O << "<span class='danger'>[my_target] stumbles around.</span>"
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 /obj/effect/fake_attacker/proc/updateimage()
// del src.currentimage
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 << "<span class='danger'>[my_target] stumbles around.</span>"
New()
..()
spawn(300)
if(my_target)
my_target.hallucinations -= src
del(src)
step_away(src,my_target,2)
spawn attack_loop()
proc/updateimage() if(src.dir == NORTH)
// del src.currentimage 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) /obj/effect/fake_attacker/proc/attack_loop()
del src.currentimage var/time = 0
src.currentimage = new /image(up,src) while(time < 300)
else if(src.dir == SOUTH) var/timespent = rand(5,10)
del src.currentimage time += timespent
src.currentimage = new /image(down,src) sleep(timespent)
else if(src.dir == EAST) if(src.health < 0)
del src.currentimage collapse = 1
src.currentimage = new /image(right,src) updateimage()
else if(src.dir == WEST) continue
del src.currentimage if(get_dist(src,my_target) > 1)
src.currentimage = new /image(left,src) src.dir = get_dir(src,my_target)
my_target << currentimage step_towards(src,my_target)
updateimage()
else
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("<span class='danger'>[my_target] has been attacked with [weapon_name] by [src.name] </span>", 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("<span class='danger'>[src.name] has punched [my_target]!</span>", 1)
my_target.halloss += 4
if(prob(33))
if(!locate(/obj/effect/overlay) in my_target.loc)
fake_blood(my_target)
if(prob(15)) if(prob(15))
step_away(src,my_target,2) if(weapon_name)
my_target << sound(pick('sound/weapons/genhit1.ogg', 'sound/weapons/genhit2.ogg', 'sound/weapons/genhit3.ogg'))
proc/collapse() my_target.show_message("<span class='danger'>[my_target] has been attacked with [weapon_name] by [src.name] </span>", 1)
collapse = 1 my_target.halloss += 8
updateimage() 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("<span class='danger'>[src.name] has punched [my_target]!</span>", 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) /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" O.name = "blood"
var/image/I = image('icons/effects/blood.dmi',O,"floor[rand(1,7)]",O.dir,1) var/image/I = image('icons/effects/blood.dmi',O,"floor[rand(1,7)]",O.dir,1)
target << I target << I
spawn(300) sleep(300)
del(O) returnToPool(O)
return
var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/item/ammo_storage/box/a357,\ 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,\ /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 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(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(clone.l_hand)
if(!(locate(clone.l_hand) in non_fakeattack_weapons)) if(!(locate(clone.l_hand) in non_fakeattack_weapons))
clone_weapon = clone.l_hand.name 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.currentimage = new /image(clone)
/* /*
F.left = new /icon(clone.stand_icon,dir=WEST) F.left = new /icon(clone.stand_icon,dir=WEST)
for(var/icon/i in clone.overlays) for(var/icon/i in clone.overlays)
F.left.Blend(i) F.left.Blend(i)

View File

@@ -271,14 +271,14 @@
if(artifact_find) if(artifact_find)
if( excavation_level > 0 || prob(15) ) if( excavation_level > 0 || prob(15) )
B = new(src) B = getFromPool(/obj/structure/boulder, src)
if(artifact_find) if(artifact_find)
B.artifact_find = artifact_find B.artifact_find = artifact_find
else else
artifact_debris(1) artifact_debris(1)
else if(prob(15)) else if(prob(15))
B = new(src) B = getFromPool(/obj/structure/boulder, src)
if(B) if(B)
GetDrilled(0) GetDrilled(0)

View File

@@ -2,4 +2,4 @@
..() ..()
spawn(0) spawn(0)
if(src && !key) //we've transferred to another mob. This ghost should be deleted. if(src && !key) //we've transferred to another mob. This ghost should be deleted.
del(src) qdel(src)

View File

@@ -102,6 +102,12 @@
real_name = name real_name = name
..() ..()
/mob/dead/observer/Destroy()
..()
following = null
ghostMulti = null
canclone = null
/mob/dead/observer/hasFullAccess() /mob/dead/observer/hasFullAccess()
return isAdminGhost(src) return isAdminGhost(src)

View File

@@ -29,6 +29,12 @@
var/update_muts = 1 // Monkey gene must be set at start. var/update_muts = 1 // Monkey gene must be set at start.
var/alien = 0 //Used for reagent metabolism. var/alien = 0 //Used for reagent metabolism.
/mob/living/carbon/monkey/Destroy()
..()
uniform = null
hat = null
glasses = null
/mob/living/carbon/monkey/tajara /mob/living/carbon/monkey/tajara
name = "farwa" name = "farwa"
voice_name = "farwa" voice_name = "farwa"

View File

@@ -50,7 +50,7 @@
S2.icon_living = "[src.colour] baby slime" S2.icon_living = "[src.colour] baby slime"
S2.icon_dead = "[src.colour] baby slime dead" S2.icon_dead = "[src.colour] baby slime dead"
S2.colour = "[src.colour]" S2.colour = "[src.colour]"
del(src) qdel(src)
/mob/living/simple_animal/slime/proc/rabid() /mob/living/simple_animal/slime/proc/rabid()

View File

@@ -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/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 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() /mob/living/simple_animal/hostile/Life()
. = ..() . = ..()
if(istype(loc, /obj/item/device/mobcapsule)) if(istype(loc, /obj/item/device/mobcapsule))

View File

@@ -242,7 +242,7 @@
pass_flags = PASSTABLE pass_flags = PASSTABLE
/mob/living/simple_animal/hostile/asteroid/hivelord/OpenFire(var/the_target) /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.GiveTarget(target)
A.friends = friends A.friends = friends
A.faction = faction A.faction = faction
@@ -263,9 +263,9 @@
var/inert = 0 var/inert = 0
/obj/item/asteroid/hivelord_core/New() /obj/item/asteroid/hivelord_core/New()
spawn(1200) sleep(1200)
inert = 1 inert = 1
desc = "The remains of a hivelord that have become useless, having been left alone too long after being harvested." 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) /obj/item/asteroid/hivelord_core/attack(mob/living/M as mob, mob/living/user as mob)
if(ishuman(M)) if(ishuman(M))
@@ -283,7 +283,7 @@
user << "<span class='notice'>You chomp into [src], barely managing to hold it down, but feel amazingly refreshed in mere moments.</span>" user << "<span class='notice'>You chomp into [src], barely managing to hold it down, but feel amazingly refreshed in mere moments.</span>"
playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
H.revive() H.revive()
del(src) qdel(src)
..() ..()
/mob/living/simple_animal/hostile/asteroid/hivelordbrood /mob/living/simple_animal/hostile/asteroid/hivelordbrood
@@ -312,11 +312,11 @@
/mob/living/simple_animal/hostile/asteroid/hivelordbrood/New() /mob/living/simple_animal/hostile/asteroid/hivelordbrood/New()
..() ..()
spawn(100) sleep(100)
del(src) returnToPool(src)
/mob/living/simple_animal/hostile/asteroid/hivelordbrood/Die() /mob/living/simple_animal/hostile/asteroid/hivelordbrood/Die()
del(src) returnToPool(src)
/mob/living/simple_animal/hostile/asteroid/goliath /mob/living/simple_animal/hostile/asteroid/goliath
name = "goliath" name = "goliath"
@@ -417,7 +417,7 @@
if(current_armor.["melee"] < 90) if(current_armor.["melee"] < 90)
current_armor.["melee"] = min(current_armor.["melee"] + 10, 90) current_armor.["melee"] = min(current_armor.["melee"] + 10, 90)
user << "<span class='info'>You strengthen [target], improving its resistance against melee attacks.</span>" user << "<span class='info'>You strengthen [target], improving its resistance against melee attacks.</span>"
del(src) qdel(src)
else else
user << "<span class='info'>You can't improve [C] any further.</span>" user << "<span class='info'>You can't improve [C] any further.</span>"
return return

View File

@@ -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. 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. key = null//We null their key before deleting the mob, so they are properly kicked out.
del(src) qdel(src)
return return

View File

@@ -41,7 +41,13 @@
/obj/machinery/power/am_control_unit/Destroy()//Perhaps damage and run stability checks rather than just del on the others /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) 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 exploded=1
explosion(get_turf(src),8,10,12,15) explosion(get_turf(src),8,10,12,15)
if(src) if(src)
del(src) qdel(src)
if(update_shield_icons && !shield_icon_delay) if(update_shield_icons && !shield_icon_delay)
check_shield_icons() check_shield_icons()
@@ -115,9 +121,7 @@
if(prob(100-stability))//Might infect the rest of the machine if(prob(100-stability))//Might infect the rest of the machine
for(var/obj/machinery/am_shielding/AMS in linked_shielding) for(var/obj/machinery/am_shielding/AMS in linked_shielding)
AMS.blob_act() AMS.blob_act()
spawn(0) qdel(src)
//Likely explode
del(src)
return return
check_stability() check_stability()
return 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 /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) if(stability <= 0)
del(src) qdel(src)
return return
@@ -256,9 +260,8 @@
else else
for(var/obj/machinery/am_shielding/AMS in linked_shielding) for(var/obj/machinery/am_shielding/AMS in linked_shielding)
AMS.update_icon() AMS.update_icon()
spawn(20) sleep(20)
shield_icon_delay = 0 shield_icon_delay = 0
return
/obj/machinery/power/am_control_unit/proc/check_core_stability() /obj/machinery/power/am_control_unit/proc/check_core_stability()

View File

@@ -33,20 +33,18 @@ proc/cardinalrange(var/center)
..(loc) ..(loc)
machines -= src machines -= src
power_machines += src power_machines += src
spawn(10) sleep(10)
controllerscan() controllerscan()
return
/obj/machinery/am_shielding/proc/controllerscan(var/priorscan = 0) /obj/machinery/am_shielding/proc/controllerscan(var/priorscan = 0)
//Make sure we are the only one here //Make sure we are the only one here
if(!istype(src.loc, /turf)) if(!istype(src.loc, /turf))
del(src) qdel(src)
return return
for(var/obj/machinery/am_shielding/AMS in loc.contents) for(var/obj/machinery/am_shielding/AMS in loc.contents)
if(AMS == src) continue if(AMS == src) continue
spawn(0) qdel(src)
del(src)
return return
//Search for shielding first //Search for shielding first
@@ -55,19 +53,14 @@ proc/cardinalrange(var/center)
break break
if(!control_unit)//No other guys nearby, look for a control unit 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)) for(var/obj/machinery/power/am_control_unit/AMC in cardinalrange(src))
if(AMC.add_shielding(src)) if(AMC.add_shielding(src))
break break
if(!control_unit)
if(!priorscan) if(!priorscan)
spawn(20) sleep(20)
controllerscan(1)//Last chance controllerscan(1)//Last chance
return return
spawn(0) qdel(src)
del(src)
return
/obj/machinery/am_shielding/Destroy() /obj/machinery/am_shielding/Destroy()
@@ -103,8 +96,7 @@ proc/cardinalrange(var/center)
new /obj/effect/blob/node(src.loc,150) new /obj/effect/blob/node(src.loc,150)
else else
new /obj/effect/blob(src.loc,60) new /obj/effect/blob(src.loc,60)
spawn(0) qdel(src)
del(src)
return return
check_stability() check_stability()
return return
@@ -200,7 +192,6 @@ proc/cardinalrange(var/center)
if(!control_unit) return if(!control_unit) return
control_unit.linked_cores.Add(src) control_unit.linked_cores.Add(src)
control_unit.reported_core_efficiency += efficiency control_unit.reported_core_efficiency += efficiency
return
/obj/machinery/am_shielding/proc/shutdown_core() /obj/machinery/am_shielding/proc/shutdown_core()
@@ -208,17 +199,13 @@ proc/cardinalrange(var/center)
if(!control_unit) return if(!control_unit) return
control_unit.linked_cores.Remove(src) control_unit.linked_cores.Remove(src)
control_unit.reported_core_efficiency -= efficiency control_unit.reported_core_efficiency -= efficiency
return
/obj/machinery/am_shielding/proc/check_stability(var/injecting_fuel = 0) /obj/machinery/am_shielding/proc/check_stability(var/injecting_fuel = 0)
if(stability > 0) return if(stability > 0) return
if(injecting_fuel && control_unit) if(injecting_fuel && control_unit)
control_unit.exploding = 1 control_unit.exploding = 1
if(src) qdel(src)
del(src)
return
/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 /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 if(!control_unit || !processing) return
@@ -226,7 +213,6 @@ proc/cardinalrange(var/center)
new_efficiency /= 2 new_efficiency /= 2
control_unit.reported_core_efficiency += (new_efficiency - efficiency) control_unit.reported_core_efficiency += (new_efficiency - efficiency)
efficiency = new_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) /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)) if(istype(I, /obj/item/device/multitool) && istype(src.loc,/turf))
new/obj/machinery/am_shielding(src.loc) new/obj/machinery/am_shielding(src.loc)
del(src) qdel(src)
return return
..() ..()
return

View File

@@ -247,5 +247,5 @@ obj/item/projectile/kinetic/New()
/obj/item/effect/kinetic_blast/New() /obj/item/effect/kinetic_blast/New()
..() ..()
spawn(4) sleep(4)
del(src) returnToPool(src)

View File

@@ -1437,68 +1437,68 @@
//var/wrapped = 0 //var/wrapped = 0
var/monkey_type = /mob/living/carbon/monkey var/monkey_type = /mob/living/carbon/monkey
New() /obj/item/weapon/reagent_containers/food/snacks/monkeycube/New()
..() ..()
reagents.add_reagent("nutriment",10) reagents.add_reagent("nutriment",10)
afterattack(obj/O, mob/user,proximity) /obj/item/weapon/reagent_containers/food/snacks/monkeycube/afterattack(obj/O, mob/user,proximity)
if(!proximity) return if(!proximity) return
if(istype(O,/obj/structure/sink) && !wrapped) if(istype(O,/obj/structure/sink) && !wrapped)
user << "<span class='notice'>You place [src] under a stream of water...</span>" user << "<span class='notice'>You place [src] under a stream of water...</span>"
return Expand() return Expand()
..() ..()
attack_self(mob/user) /obj/item/weapon/reagent_containers/food/snacks/monkeycube/attack_self(mob/user)
if(wrapped) if(wrapped)
Unwrap(user) Unwrap(user)
On_Consume(var/mob/M) /obj/item/weapon/reagent_containers/food/snacks/monkeycube/On_Consume(var/mob/M)
M << "<span class = 'warning'>Something inside of you suddently expands!</span>" M << "<span class = 'warning'>Something inside of you suddently expands!</span>"
if (istype(M, /mob/living/carbon/human)) if (istype(M, /mob/living/carbon/human))
//Do not try to understand. //Do not try to understand.
var/obj/item/weapon/surprise = new/obj/item/weapon(M) 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 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 = ook.icon
surprise.icon_state = ook.icon_state surprise.icon_state = ook.icon_state
surprise.name = "malformed [ook.name]" 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." 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 qdel(ook) //rip nullspace monkey
surprise.transform *= 0.6 surprise.transform *= 0.6
surprise.add_blood(M) surprise.add_blood(M)
var/mob/living/carbon/human/H = M var/mob/living/carbon/human/H = M
var/datum/organ/external/E = H.get_organ("chest") var/datum/organ/external/E = H.get_organ("chest")
E.fracture() E.fracture()
for (var/datum/organ/internal/I in E.internal_organs) for (var/datum/organ/internal/I in E.internal_organs)
I.take_damage(rand(I.min_bruised_damage, I.min_broken_damage+1)) I.take_damage(rand(I.min_bruised_damage, I.min_broken_damage+1))
if (!E.hidden && prob(60)) //set it snuggly if (!E.hidden && prob(60)) //set it snuggly
E.hidden = surprise E.hidden = surprise
E.cavity = 0 E.cavity = 0
else //someone is having a bad day else //someone is having a bad day
E.createwound(CUT, 30) E.createwound(CUT, 30)
E.embed(surprise) E.embed(surprise)
else if (ismonkey(M)) else if (ismonkey(M))
M.visible_message("<span class='danger'>[M] suddenly tears in half!</span>") M.visible_message("<span class='danger'>[M] suddenly tears in half!</span>")
var/mob/living/carbon/monkey/ook = new monkey_type(M.loc) var/mob/living/carbon/monkey/ook = new monkey_type(M.loc)
ook.name = "malformed [ook.name]" ook.name = "malformed [ook.name]"
ook.transform *= 0.6 ook.transform *= 0.6
ook.add_blood(M) ook.add_blood(M)
M.gib() M.gib()
..() ..()
proc/Expand() /obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Expand()
for(var/mob/M in viewers(src,7)) for(var/mob/M in viewers(src,7))
M << "<span class='warning'>\The [src] expands!</span>" M << "<span class='warning'>\The [src] expands!</span>"
new monkey_type(get_turf(src)) new monkey_type(get_turf(src))
del(src) qdel(src)
proc/Unwrap(mob/user as mob) /obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Unwrap(mob/user as mob)
icon_state = "monkeycube" icon_state = "monkeycube"
desc = "Just add water!" desc = "Just add water!"
user << "You unwrap the cube." user << "You unwrap the cube."
wrapped = 0 wrapped = 0
return return
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped
desc = "Still wrapped in some paper." desc = "Still wrapped in some paper."

View File

@@ -40,6 +40,11 @@
var/datum/geosample/geological_data var/datum/geosample/geological_data
var/datum/artifact_find/artifact_find var/datum/artifact_find/artifact_find
/obj/structure/boulder/Destroy()
..()
geological_data = null
artifact_find = null
/obj/structure/boulder/New() /obj/structure/boulder/New()
..() ..()
icon_state = "boulder[rand(1,4)]" icon_state = "boulder[rand(1,4)]"
@@ -84,7 +89,7 @@
//failure //failure
src.visible_message("<span class='danger'>\The [src] suddenly crumbles away.</span>") src.visible_message("<span class='danger'>\The [src] suddenly crumbles away.</span>")
user << "<span class='rose'>\The [src] has disintegrated under your onslaught, any secrets it was holding are long gone.</span>" user << "<span class='rose'>\The [src] has disintegrated under your onslaught, any secrets it was holding are long gone.</span>"
del(src) returnToPool(src)
return return
if(prob(excavation_level)) if(prob(excavation_level))
@@ -99,7 +104,7 @@
X.my_effect.artifact_id = artifact_find.artifact_id X.my_effect.artifact_id = artifact_find.artifact_id
else else
user << "<span class='notice'>[src] has been whittled away under your careful excavation, but there was nothing of interest inside.</span>" user << "<span class='notice'>[src] has been whittled away under your careful excavation, but there was nothing of interest inside.</span>"
del(src) returnToPool(src)
/obj/structure/boulder/Bumped(AM) /obj/structure/boulder/Bumped(AM)
. = ..() . = ..()

View File

@@ -42,6 +42,11 @@
if(!inside) if(!inside)
inside = locate() in contents inside = locate() in contents
/obj/item/weapon/strangerock/Destroy()
..()
qdel(inside)
inside = null
/*/obj/item/weapon/strangerock/ex_act(var/severity) /*/obj/item/weapon/strangerock/ex_act(var/severity)
if(severity && prob(30)) if(severity && prob(30))
src.visible_message("The [src] crumbles away, leaving some dust and gravel behind.")*/ src.visible_message("The [src] crumbles away, leaving some dust and gravel behind.")*/
@@ -58,7 +63,7 @@
else else
for(var/mob/M in viewers(world.view, user)) for(var/mob/M in viewers(world.view, user))
M.show_message("<span class='info'>[src] burns away into nothing.</span>",1) M.show_message("<span class='info'>[src] burns away into nothing.</span>",1)
del(src) qdel(src)
w.remove_fuel(4) w.remove_fuel(4)
else else
for(var/mob/M in viewers(world.view, user)) for(var/mob/M in viewers(world.view, user))
@@ -74,7 +79,7 @@
..() ..()
if(prob(33)) if(prob(33))
src.visible_message("<span class='warning'>[src] crumbles away, leaving some dust and gravel behind.</span>") src.visible_message("<span class='warning'>[src] crumbles away, leaving some dust and gravel behind.</span>")
del(src) qdel(src)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Archaeological finds // Archaeological finds
@@ -547,7 +552,7 @@
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
if(istype(T, /turf/unsimulated/mineral)) if(istype(T, /turf/unsimulated/mineral))
T:last_find = new_item T:last_find = new_item
del(src) qdel(src)
else if(talkative) else if(talkative)
listening_to_players = 1 listening_to_players = 1