diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index 6124474c9a2..47561690368 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -148,6 +148,9 @@ for(var/obj/mecha/M in protected_area.turretTargets) if(M.occupant) new_targets += M + for(var/mob/living/simple_animal/M in protected_area.turretTargets) + if(!M.stat) + new_targets += M if(new_targets.len) new_target = pick(new_targets) return new_target @@ -386,19 +389,37 @@ onclose(user, "turretid") +/obj/machinery/turret/attack_animal(mob/living/simple_animal/M as mob) + if(M.melee_damage_upper == 0) return + if(!(stat & BROKEN)) + for(var/mob/O in viewers(src, null)) + if ((O.client && !( O.blinded ))) + O.show_message(text("\red [M] [M.attacktext] [src]!"), 1) + src.health -= M.melee_damage_upper + if (src.health <= 0) + src.die() + else + M << "\red That object is useless to you." + return + + + + /obj/machinery/turret/attack_alien(mob/living/carbon/alien/humanoid/M as mob) if(!(stat & BROKEN)) playsound(src.loc, 'slash.ogg', 25, 1, -1) for(var/mob/O in viewers(src, null)) if ((O.client && !( O.blinded ))) O.show_message(text("\red [] has slashed at []!", M, src), 1) - src.health -= 15 + src.health -= M. if (src.health <= 0) src.die() else M << "\green That object is useless to you." return + + /obj/machinery/turretid/Topic(href, href_list) ..() if (src.locked) diff --git a/code/game/objects/grille.dm b/code/game/objects/grille.dm index 7317a0c9495..d1392a176cb 100644 --- a/code/game/objects/grille.dm +++ b/code/game/objects/grille.dm @@ -88,7 +88,7 @@ M.visible_message("[M.name] smashes against the [src.name].", \ "You smash against the [src.name].", \ "You hear a noise") - src.health -= rand(4) + src.health -= M.melee_damage_upper healthcheck() return diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 3d5cabb0e86..3c37fb703e7 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -455,6 +455,17 @@ M.show_message("\red [user.name] smashed the light!", 3, "You hear a tinkle of breaking glass", 2) broken() return + +/obj/machinery/light/attack_animal(mob/living/simple_animal/M) + if(M.melee_damage_upper == 0) return + if(status == LIGHT_EMPTY||status == LIGHT_BROKEN) + M << "\red That object is useless to you." + return + else if (status == LIGHT_OK||status == LIGHT_BURNED) + for(var/mob/O in viewers(src)) + O.show_message("\red [M.name] smashed the light!", 3, "You hear a tinkle of breaking glass", 2) + broken() + return // attack with hand - remove tube/bulb // if hands aren't protected and the light is on, burn the player