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)
user << "<span class='warning'>The monkey may not have abiotic items on.</span>"
else
del(target)
qdel(target)
user << "<span class='notice'>You stuff the monkey in the machine.</span>"
playsound(get_turf(src), 'sound/machines/juicer.ogg', 50, 1)
use_power(500)

View File

@@ -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 << "<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
attack_hand(var/mob/user)
user.delayNextAttack(10)
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>"
del(src)
else
user << "<span class='notice'>You hit the metal foam but bounce off it.</span>"
return
if(prob(I.force*20 - metal*25))
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>"
/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 << "<span class='warning'>[G.assailant] smashes [G.affecting] through the foamed metal wall.</span>"
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 << "<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>"
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()
. = ..()

View File

@@ -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 << "<span class='notice'>You reinforce the [name].</span>"
W:use(4)
del(src)
else if (W:amount < 4)
rods.use(4)
qdel(src)
else if (rods.amount < 4)
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)
new /obj/structure/table( user.loc )
user.drop_item(src)
del(src)
qdel(src)
return

View File

@@ -3,7 +3,7 @@ obj/structure
obj/structure/blob_act()
if(prob(50))
del(src)
qdel(src)
obj/structure/ex_act(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
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)

View File

@@ -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 << "<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)
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.
if(prob(30))
for(var/mob/O in oviewers(world.view , my_target))
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
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()
/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("<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)
/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("<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))
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)

View File

@@ -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)

View File

@@ -2,4 +2,4 @@
..()
spawn(0)
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
..()
/mob/dead/observer/Destroy()
..()
following = null
ghostMulti = null
canclone = null
/mob/dead/observer/hasFullAccess()
return isAdminGhost(src)

View File

@@ -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"

View File

@@ -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()

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/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))

View File

@@ -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 << "<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)
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 << "<span class='info'>You strengthen [target], improving its resistance against melee attacks.</span>"
del(src)
qdel(src)
else
user << "<span class='info'>You can't improve [C] any further.</span>"
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.
key = null//We null their key before deleting the mob, so they are properly kicked out.
del(src)
qdel(src)
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
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()

View File

@@ -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
..()

View File

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

View File

@@ -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 << "<span class='notice'>You place [src] under a stream of water...</span>"
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 << "<span class='notice'>You place [src] under a stream of water...</span>"
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 << "<span class = 'warning'>Something inside of you suddently expands!</span>"
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/On_Consume(var/mob/M)
M << "<span class = 'warning'>Something inside of you suddently expands!</span>"
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("<span class='danger'>[M] suddenly tears in half!</span>")
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("<span class='danger'>[M] suddenly tears in half!</span>")
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 << "<span class='warning'>\The [src] expands!</span>"
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 << "<span class='warning'>\The [src] expands!</span>"
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."

View File

@@ -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("<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>"
del(src)
returnToPool(src)
return
if(prob(excavation_level))
@@ -99,7 +104,7 @@
X.my_effect.artifact_id = artifact_find.artifact_id
else
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)
. = ..()

View File

@@ -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("<span class='info'>[src] burns away into nothing.</span>",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("<span class='warning'>[src] crumbles away, leaving some dust and gravel behind.</span>")
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