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