mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
Merge pull request #5376 from clusterfack/INTOTHETRASHITGOES
Removes more manual del() calls
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
. = ..()
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ obj/structure
|
||||
|
||||
obj/structure/blob_act()
|
||||
if(prob(50))
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
obj/structure/ex_act(severity)
|
||||
switch(severity)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
..()
|
||||
spawn(0)
|
||||
if(src && !key) //we've transferred to another mob. This ghost should be deleted.
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
@@ -102,6 +102,12 @@
|
||||
real_name = name
|
||||
..()
|
||||
|
||||
/mob/dead/observer/Destroy()
|
||||
..()
|
||||
following = null
|
||||
ghostMulti = null
|
||||
canclone = null
|
||||
|
||||
/mob/dead/observer/hasFullAccess()
|
||||
return isAdminGhost(src)
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
..()
|
||||
@@ -247,5 +247,5 @@ obj/item/projectile/kinetic/New()
|
||||
|
||||
/obj/item/effect/kinetic_blast/New()
|
||||
..()
|
||||
spawn(4)
|
||||
del(src)
|
||||
sleep(4)
|
||||
returnToPool(src)
|
||||
@@ -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."
|
||||
|
||||
@@ -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)
|
||||
. = ..()
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user