diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index c6e28f4cf46..b378282ca27 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -117,6 +117,12 @@ layer = 3 var/turf/last = null kill_count = 6 + var/bullet_acted = 0 + + Bump(var/atom/A) + if((A != firer) && !bullet_acted) + A.bullet_act(src) + bullet_acted = 1 proc/adjustAngle(angle) angle = round(angle) + 45 @@ -187,16 +193,15 @@ del(X) break for(var/atom/O in TT) - if(!O.CanPass(src)) - del(X) - broke = 1 - break - for(var/mob/living/O in TT.contents) - if(istype(O, /mob/living)) + if(istype(O,/mob/living)) if(O.density) del(X) broke = 1 break + if(!O.CanPass(src)) + del(X) + broke = 1 + break if(broke) if(X) del(X) @@ -216,8 +221,9 @@ icon_state = "[tang]" var/turf/simulated/floor/f = current if(f && istype(f)) - f.break_tile() - f.hotspot_expose(1000,CELL_VOLUME) + if(!bullet_acted) + f.break_tile() + f.hotspot_expose(1000,CELL_VOLUME) if((x == 1 || x == world.maxx || y == 1 || y == world.maxy)) //world << "deleting" //del(src) //Delete if it passes the world edge