diff --git a/code/game/objects/items/item.dm b/code/game/objects/items/item.dm
index a124ad211d0..bf3c7f3d118 100755
--- a/code/game/objects/items/item.dm
+++ b/code/game/objects/items/item.dm
@@ -369,6 +369,7 @@ mob/proc/flash_weak_pain()
M << "Aargh it burns!"
M.updatehealth()
src.add_fingerprint(user)
+ M.react_to_attack(user)
return 1
diff --git a/code/modules/chemical/Chemistry-Tools.dm b/code/modules/chemical/Chemistry-Tools.dm
index 1bd2c27ea9a..a9b1353f519 100644
--- a/code/modules/chemical/Chemistry-Tools.dm
+++ b/code/modules/chemical/Chemistry-Tools.dm
@@ -1018,6 +1018,9 @@
for(var/mob/O in viewers(4, user))
O.show_message("\red [user] takes a blood sample from [target].", 1)
+ if(prob(2) && istype(T,/mob/living/carbon/monkey))
+ T:react_to_attack(user)
+
else //if not mob
if(!target.reagents.total_volume)
user << "\red [target] is empty."
@@ -1059,6 +1062,9 @@
for(var/mob/O in viewers(world.view, user))
O.show_message(text("\red [] injects [] with the syringe!", user, target), 1)
src.reagents.reaction(target, INGEST)
+ if(prob(2) && istype(target,/mob/living/carbon/monkey))
+ var/mob/living/carbon/monkey/M = target
+ M.react_to_attack(user)
if(ismob(target) && target == user)
src.reagents.reaction(target, INGEST)
spawn(5)
diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm
index e7ba23c39e4..d268b95ede2 100644
--- a/code/modules/mob/living/carbon/monkey/life.dm
+++ b/code/modules/mob/living/carbon/monkey/life.dm
@@ -88,11 +88,7 @@
for(var/obj/item/weapon/grab/G in src)
G.process()
- if(!client && !stat)
- if(prob(33) && canmove && isturf(loc))
- step(src, pick(cardinal))
- if(prob(1))
- emote(pick("scratch","jump","roll","tail"))
+ npc_act()
/mob/living/carbon/monkey
proc
diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm
index 1de7f7d96ce..ef46139fc13 100644
--- a/code/modules/mob/living/carbon/monkey/monkey.dm
+++ b/code/modules/mob/living/carbon/monkey/monkey.dm
@@ -177,6 +177,7 @@
for(var/datum/disease/D in M.viruses)
if(istype(D, /datum/disease/jungle_fever))
contract_disease(D,1,0)
+ react_to_attack(M)
else
for(var/mob/O in viewers(src, null))
O.show_message("\red [M.name] has attempted to bite [name]!", 1)
@@ -239,11 +240,13 @@
return
bruteloss += damage
updatehealth()
+ react_to_attack(M)
else
playsound(loc, 'punchmiss.ogg', 25, 1, -1)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red [] has attempted to [attack_verb] [name]!", M), 1)
+ react_to_attack(M)
else
if (M.a_intent == "grab")
if (M == src)
@@ -265,6 +268,8 @@
playsound(loc, 'thudswoosh.ogg', 50, 1, -1)
for(var/mob/O in viewers(src, null))
O.show_message(text("\red [] has grabbed [name] passively!", M), 1)
+
+ if(prob(1)) react_to_attack(M)
else
if (!( paralysis ))
if (prob(25))
@@ -273,12 +278,14 @@
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red [] has pushed down [name]!", M), 1)
+ react_to_attack(M)
else
drop_item()
playsound(loc, 'thudswoosh.ogg', 50, 1, -1)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red [] has disarmed [name]!", M), 1)
+ react_to_attack(M)
return
/mob/living/carbon/monkey/attack_alien(mob/living/carbon/alien/humanoid/M as mob)
@@ -313,6 +320,7 @@
O.show_message(text("\red [] has slashed [name]!", M), 1)
bruteloss += damage
updatehealth()
+ react_to_attack(M)
else
playsound(loc, 'slashmiss.ogg', 25, 1, -1)
for(var/mob/O in viewers(src, null))
@@ -353,6 +361,7 @@
if ((O.client && !( O.blinded )))
O.show_message(text("\red [] has disarmed [name]!", M), 1)
bruteloss += damage
+ react_to_attack(M)
updatehealth()
return
@@ -415,6 +424,7 @@
updatehealth()
+ react_to_attack(M)
return
@@ -562,6 +572,15 @@
M.UpdateFeed(src)
return
+/mob/living/carbon/monkey/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ var/chealth = health
+ var/rval = ..()
+ if(chealth > health)
+ // we were damaged!
+ react_to_attack(user)
+
+ return rval
+
/mob/living/carbon/monkey/verb/removeinternal()
set name = "Remove Internals"
set category = "IC"
diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm
index 78d11e5a4a9..ac2fcf08059 100644
--- a/code/modules/mob/living/damage_procs.dm
+++ b/code/modules/mob/living/damage_procs.dm
@@ -72,4 +72,8 @@
if(slur) apply_effect(slur, SLUR, blocked)
if(eyeblur) apply_effect(eyeblur, EYE_BLUR, blocked)
if(drowsy) apply_effect(drowsy, DROWSY, blocked)
- return 1
\ No newline at end of file
+ return 1
+
+
+/mob/living/proc/react_to_attack(mob/M)
+ return
\ No newline at end of file