diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm
index b5854ed9818..d70c181830a 100644
--- a/code/game/gamemodes/cult/cult_structures.dm
+++ b/code/game/gamemodes/cult/cult_structures.dm
@@ -38,11 +38,12 @@
/obj/structure/cult/pylon/proc/attackpylon(mob/user as mob, var/damage)
if(!isbroken)
if(prob(1+ damage * 5))
- user << "You hit the pylon, and its crystal breaks apart!"
- for(var/mob/M in viewers(src))
- if(M == user)
- continue
- M.show_message("[user.name] smashed the pylon!", 3, "You hear a tinkle of crystal shards", 2)
+ user.visible_message(
+ "[user] smashed the pylon!",
+ "You hit the pylon, and its crystal breaks apart!",
+ "You hear a tinkle of crystal shards"
+ )
+ user.do_attack_animation(src)
playsound(get_turf(src), 'sound/effects/Glassbr3.ogg', 75, 1)
isbroken = 1
density = 0
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 0f3760009d6..5fe902c4854 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -43,6 +43,7 @@
take_damage(damage)
else
visible_message("\The [user] bonks \the [src] harmlessly.")
+ user.do_attack_animation(src)
/obj/machinery/door/New()
. = ..()
diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm
index e3a104d21c5..c36fe7c0644 100644
--- a/code/game/machinery/turrets.dm
+++ b/code/game/machinery/turrets.dm
@@ -341,6 +341,7 @@
if(stat & BROKEN)
user << "That object is useless to you."
return 0
+ user.do_attack_animation(src)
visible_message("[user] [attack_message] the [src]!")
user.attack_log += text("\[[time_stamp()]\] attacked [src.name]")
src.health -= damage
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index b0423340e7e..3e4703cd331 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -1791,8 +1791,9 @@
if(!damage)
return 0
- src.log_message("Attack by an animal. Attacker - [user].",1)
+ src.log_message("Attacked. Attacker - [user].",1)
+ user.do_attack_animation(src)
if(!prob(src.deflect_chance))
src.take_damage(damage)
src.check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm
index 4b0501a2d11..fe96abb4696 100644
--- a/code/game/objects/structures.dm
+++ b/code/game/objects/structures.dm
@@ -192,5 +192,6 @@
if(!breakable || !damage || !wallbreaker)
return 0
visible_message("[user] [attack_verb] the [src] apart!")
+ user.do_attack_animation(src)
spawn(1) qdel(src)
return 1
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 5e1a551cecf..2bb423c2410 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -305,6 +305,7 @@
/obj/structure/closet/attack_generic(var/mob/user, var/damage, var/attack_message = "destroys", var/wallbreaker)
if(!damage || !wallbreaker)
return
+ user.do_attack_animation(src)
visible_message("[user] [attack_message] the [src]!")
dump_contents()
spawn(1) qdel(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm
index 67a159e7cac..b59cd62dfa3 100644
--- a/code/game/objects/structures/crates_lockers/closets/statue.dm
+++ b/code/game/objects/structures/crates_lockers/closets/statue.dm
@@ -105,6 +105,7 @@
/obj/structure/closet/statue/attackby(obj/item/I as obj, mob/user as mob)
health -= I.force
+ user.do_attack_animation(src)
visible_message("[user] strikes [src] with [I].")
if(health <= 0)
for(var/mob/M in src)
diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
index e8cb65a33d7..4a12eb9e007 100644
--- a/code/game/objects/structures/girders.dm
+++ b/code/game/objects/structures/girders.dm
@@ -17,6 +17,7 @@
/obj/structure/girder/attack_generic(var/mob/user, var/damage, var/attack_message = "smashes apart", var/wallbreaker)
if(!damage || !wallbreaker)
return 0
+ user.do_attack_animation(src)
visible_message("[user] [attack_message] the [src]!")
spawn(1) dismantle()
return 1
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index b18658d4a6c..0dadc6b44f1 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -217,6 +217,7 @@
/obj/structure/grille/attack_generic(var/mob/user, var/damage, var/attack_verb)
visible_message("[user] [attack_verb] the [src]!")
+ user.do_attack_animation(src)
health -= damage
spawn(1) healthcheck()
return 1
diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm
index a9b1359b754..7ded57a35e8 100644
--- a/code/game/objects/structures/inflatable.dm
+++ b/code/game/objects/structures/inflatable.dm
@@ -115,6 +115,7 @@
/obj/structure/inflatable/attack_generic(var/mob/user, var/damage, var/attack_verb)
health -= damage
+ user.do_attack_animation(src)
if(health <= 0)
user.visible_message("[user] [attack_verb] open the [src]!")
spawn(1) deflate(1)
diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm
index 4868f6e0ca5..8141dcf5a39 100644
--- a/code/game/objects/structures/mirror.dm
+++ b/code/game/objects/structures/mirror.dm
@@ -54,6 +54,7 @@
/obj/structure/mirror/attack_generic(var/mob/user, var/damage)
+ user.do_attack_animation(src)
if(shattered)
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
return 0
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index 387c76eb698..8be7d2bd976 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -207,6 +207,7 @@
take_damage(damage)
else
visible_message("\The [user] bonks \the [src] harmlessly.")
+ user.do_attack_animation(src)
return 1
/obj/structure/window/attackby(obj/item/W as obj, mob/user as mob)
diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm
index 4d86d70877d..e3037f94a96 100644
--- a/code/game/turfs/simulated/wall_attacks.dm
+++ b/code/game/turfs/simulated/wall_attacks.dm
@@ -28,6 +28,7 @@
/turf/simulated/wall/proc/success_smash(var/mob/user)
user << "You smash through the wall!"
+ user.do_attack_animation(src)
spawn(1)
dismantle_wall(1)
diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm
index 92a022f1059..081f2c2def1 100644
--- a/code/modules/mob/living/carbon/human/human_attackhand.dm
+++ b/code/modules/mob/living/carbon/human/human_attackhand.dm
@@ -275,6 +275,7 @@
user.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])")
src.attack_log += text("\[[time_stamp()]\] was attacked by [user.name] ([user.ckey])")
src.visible_message("[user] has [attack_message] [src]!")
+ user.do_attack_animation(src)
var/dam_zone = pick("head", "chest", "l_arm", "r_arm", "l_leg", "r_leg", "groin")
var/obj/item/organ/external/affecting = get_organ(ran_zone(dam_zone))
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 4a41479e340..9dd399a8041 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -194,6 +194,7 @@
user.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])")
src.attack_log += text("\[[time_stamp()]\] was attacked by [user.name] ([user.ckey])")
src.visible_message("[user] has [attack_message] [src]!")
+ user.do_attack_animation(src)
spawn(1) updatehealth()
return 1
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index ba3c539c775..0c02a4e182c 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -271,6 +271,7 @@
if(!(status == LIGHT_OK||status == LIGHT_BURNED))
return
visible_message("[user] smashes the light!")
+ user.do_attack_animation(src)
broken()
return 1
diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm
index 9407dc937a0..dc5f1faaf79 100644
--- a/code/modules/vehicles/vehicle.dm
+++ b/code/modules/vehicles/vehicle.dm
@@ -363,6 +363,7 @@
return
visible_message("[user] [attack_message] the [src]!")
user.attack_log += text("\[[time_stamp()]\] attacked [src.name]")
+ user.do_attack_animation(src)
src.health -= damage
if(prob(10))
new /obj/effect/decal/cleanable/blood/oil(src.loc)