diff --git a/code/game/objects/items/item.dm b/code/game/objects/items/item.dm index c9b74bd6d40..a9e65abf4e6 100755 --- a/code/game/objects/items/item.dm +++ b/code/game/objects/items/item.dm @@ -297,39 +297,46 @@ mob/proc/flash_weak_pain() Metroid.SStun = 0 spawn(0) - Metroid.canmove = 0 - step_away(Metroid, user) - if(prob(25 + power*2)) - sleep(2) + if(Metroid) + Metroid.canmove = 0 step_away(Metroid, user) - Metroid.canmove = 1 + if(prob(25 + power)) + sleep(2) + if(Metroid && user) + step_away(Metroid, user) + Metroid.canmove = 1 else if(prob(10 + power*2)) + if(Metroid) + if(Metroid.Victim) + if(prob(80) && !Metroid.client) + Metroid.Discipline++ - if(Metroid.Victim) - if(prob(80) && !Metroid.client) - Metroid.Discipline++ + if(Metroid.Discipline == 1) + Metroid.attacked = 0 - if(Metroid.Discipline == 1) - Metroid.attacked = 0 + spawn() + if(Metroid) + Metroid.SStun = 1 + sleep(rand(5,20)) + if(Metroid) + Metroid.SStun = 0 - spawn() - Metroid.SStun = 1 - sleep(rand(5,20)) - Metroid.SStun = 0 - - Metroid.Victim = null - Metroid.anchored = 0 + Metroid.Victim = null + Metroid.anchored = 0 spawn(0) - step_away(Metroid, user) - Metroid.canmove = 0 - if(prob(25 + power*4)) - sleep(2) + if(Metroid && user) step_away(Metroid, user) - Metroid.canmove = 1 + Metroid.canmove = 0 + if(prob(25 + power*4)) + sleep(2) + if(Metroid && user) + step_away(Metroid, user) + Metroid.canmove = 1 + var/showname = "." if(user) diff --git a/code/game/throwing.dm b/code/game/throwing.dm index 329e5e599ae..197548d64d3 100644 --- a/code/game/throwing.dm +++ b/code/game/throwing.dm @@ -155,7 +155,7 @@ - while(((((src.x < target.x && dx == EAST) || (src.x > target.x && dx == WEST)) && dist_travelled < range) || (a.has_gravity == 0) || istype(src.loc, /turf/space)) && src.throwing && istype(src.loc, /turf)) + while(src && target &&((((src.x < target.x && dx == EAST) || (src.x > target.x && dx == WEST)) && dist_travelled < range) || (a.has_gravity == 0) || istype(src.loc, /turf/space)) && src.throwing && istype(src.loc, /turf)) // only stop when we've gone the whole distance (or max throw range) and are on a non-space tile, or hit something, or hit the end of the map, or someone picks it up if(error < 0) var/atom/step = get_step(src, dy)