diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm
index a58eabd44d7..7eed766eaab 100644
--- a/code/modules/mob/living/carbon/monkey/combat.dm
+++ b/code/modules/mob/living/carbon/monkey/combat.dm
@@ -16,6 +16,8 @@
var/pickpocketing = FALSE
var/disposing_body = FALSE
var/obj/machinery/disposal/bodyDisposal = null
+ var/next_battle_screech = 0
+ var/battle_screech_cooldown = 50
/mob/living/carbon/monkey/proc/IsStandingStill()
return resisting || pickpocketing || disposing_body
@@ -59,6 +61,12 @@
return 1
return 0
+/mob/living/carbon/monkey/proc/battle_screech()
+ if(next_battle_screech < world.time)
+ emote(pick("roar","screech"))
+ for(var/mob/living/carbon/monkey/M in view(7,src))
+ M.next_battle_screech = world.time + battle_screech_cooldown
+
/mob/living/carbon/monkey/proc/equip_item(var/obj/item/I)
if(I.loc == src)
@@ -197,7 +205,7 @@
for(var/mob/living/L in around)
if( should_target(L) )
if(L.stat == CONSCIOUS)
- emote(pick("roar","screech"))
+ battle_screech()
retaliate(L)
return TRUE
else if(bodyDisposal)
@@ -241,7 +249,7 @@
var/list/around = view(src, MONKEY_ENEMY_VISION)
for(var/mob/living/carbon/monkey/M in around)
if(M.mode == MONKEY_IDLE && prob(MONKEY_RECRUIT_PROB))
- M.emote(pick("roar","screech"))
+ M.battle_screech()
M.target = target
M.mode = MONKEY_HUNT
@@ -406,7 +414,7 @@
enemies[L] += MONKEY_HATRED_AMOUNT
if(a_intent != INTENT_HARM)
- emote(pick("roar","screech"))
+ battle_screech()
a_intent = INTENT_HARM
/mob/living/carbon/monkey/attack_hand(mob/living/L)
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 59640dc8451..abad6b4084e 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -907,13 +907,14 @@
// used by secbot and monkeys Crossed
/mob/living/proc/knockOver(var/mob/living/carbon/C)
- C.visible_message("[pick( \
- "[C] dives out of [src]'s way!", \
- "[C] stumbles over [src]!", \
- "[C] jumps out of [src]'s path!", \
- "[C] trips over [src] and falls!", \
- "[C] topples over [src]!", \
- "[C] leaps out of [src]'s way!")]")
+ if(C.key) //save us from monkey hordes
+ C.visible_message("[pick( \
+ "[C] dives out of [src]'s way!", \
+ "[C] stumbles over [src]!", \
+ "[C] jumps out of [src]'s path!", \
+ "[C] trips over [src] and falls!", \
+ "[C] topples over [src]!", \
+ "[C] leaps out of [src]'s way!")]")
C.Weaken(2)
/mob/living/post_buckle_mob(mob/living/M)