diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index da6449bcfac..8cc575628d7 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -159,6 +159,12 @@ healthcheck() return +/obj/machinery/portable_atmospherics/canister/bullet_act(var/obj/item/projectile/Proj) + if(Proj.damage) + src.health -= round(Proj.damage / 2) + healthcheck() + ..() + /obj/machinery/portable_atmospherics/canister/meteorhit(var/obj/O as obj) src.health = 0 healthcheck() diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index 1986368ab22..eab0f5ddf93 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -48,6 +48,11 @@ else return + bullet_act(var/obj/item/projectile/Proj) + if(prob(Proj.damage)) + set_broken() + ..() + blob_act() if (prob(75)) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 7ee56066db5..7a9cca90244 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -134,6 +134,21 @@ src.operating = 0 return 1 +/obj/machinery/door/window/proc/take_damage(var/damage) + src.health = max(0, src.health - damage) + if (src.health <= 0) + new /obj/item/weapon/shard(src.loc) + var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src.loc) + CC.amount = 2 + src.density = 0 + del(src) + return + +/obj/machinery/door/window/bullet_act(var/obj/item/projectile/Proj) + if(Proj.damage) + take_damage(round(Proj.damage / 2)) + ..() + //When an object is thrown at the window /obj/machinery/door/window/hitby(AM as mob|obj) @@ -145,14 +160,7 @@ else tforce = AM:throwforce playsound(src.loc, 'sound/effects/Glasshit.ogg', 100, 1) - src.health = max(0, src.health - tforce) - if (src.health <= 0) - new /obj/item/weapon/shard(src.loc) - var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src.loc) - CC.amount = 2 - src.density = 0 - del(src) - return + take_damage(tforce) //..() //Does this really need to be here twice? The parent proc doesn't even do anything yet. - Nodrak return diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index b95a3a52629..ad3eeb90926 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -44,7 +44,7 @@ O.emp_act(severity) - afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag, params)//TODO: go over this + afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params)//TODO: go over this if(flag) return //we're placing gun on a table or in backpack if(istype(target, /obj/machinery/recharger) && istype(src, /obj/item/weapon/gun/energy)) return//Shouldnt flag take care of this? @@ -104,7 +104,7 @@ playsound(user, fire_sound, 50, 1) user.visible_message("\red [user.name] fires the [src.name]!", "\red You fire the [src.name]!", "\blue You hear a [istype(in_chamber, /obj/item/projectile/beam) ? "laser blast" : "gunshot"]!") - in_chamber.original = targloc + in_chamber.original = target in_chamber.loc = get_turf(user) in_chamber.starting = get_turf(user) user.next_move = world.time + 4 diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index b10a5183a3a..23a0c96403f 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -26,7 +26,7 @@ var/yo = null var/xo = null var/current = null - var/turf/original = null // the original turf clicked + var/atom/original = null // the original target clicked var/turf/starting = null // the projectile's starting turf var/list/permutated = list() // we've passed through these atoms, don't try to hit them again @@ -139,10 +139,9 @@ return step_towards(src, current) sleep(1) - if(!bumped) - if(loc == original) - for(var/mob/living/M in original) - if(!(M in permutated)) - Bump(M) - sleep(1) + if(!bumped && !isturf(original)) + if(loc == get_turf(original)) + if(!(original in permutated)) + Bump(original) + sleep(1) return diff --git a/html/changelog.html b/html/changelog.html index 6782953ba5c..1ad18968887 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -57,6 +57,8 @@ should be listed in the changelog upon commit tho. Thanks. -->