From 0750a7dffb45c6b8cca8b2b015fc60c6e96f2187 Mon Sep 17 00:00:00 2001 From: Joan Lung Date: Wed, 29 Mar 2017 18:16:36 -0400 Subject: [PATCH] Simple animal attacks with bonus effects now properly respect shields (#25571) * Simple animal attacks with bonus effects now properly respect shields. * very boring fixes --- code/game/gamemodes/blob/blobs/blob_mobs.dm | 12 +++---- .../gamemodes/miniantags/bot_swarm/swarmer.dm | 4 +-- code/game/gamemodes/miniantags/morph/morph.dm | 2 +- code/modules/mining/minebot.dm | 2 +- .../mob/living/carbon/alien/alien_defense.dm | 4 +-- .../mob/living/carbon/human/human_defense.dm | 7 +++-- .../living/carbon/monkey/monkey_defense.dm | 5 +-- .../mob/living/silicon/silicon_defense.dm | 4 +-- .../living/simple_animal/animal_defense.dm | 20 ++++++------ .../mob/living/simple_animal/constructs.dm | 2 +- .../living/simple_animal/friendly/lizard.dm | 3 +- .../living/simple_animal/guardian/guardian.dm | 7 ++--- .../simple_animal/guardian/types/assassin.dm | 3 +- .../simple_animal/guardian/types/explosive.dm | 25 +++++++-------- .../simple_animal/guardian/types/fire.dm | 6 ++-- .../simple_animal/guardian/types/lightning.dm | 24 +++++++------- .../simple_animal/guardian/types/standard.dm | 2 +- .../simple_animal/guardian/types/support.dm | 29 +++++++++-------- .../mob/living/simple_animal/hostile/alien.dm | 3 +- .../mob/living/simple_animal/hostile/bees.dm | 8 ++--- .../mob/living/simple_animal/hostile/carp.dm | 4 +-- .../living/simple_animal/hostile/faithless.dm | 11 +++---- .../simple_animal/hostile/giant_spider.dm | 4 +-- .../living/simple_animal/hostile/headcrab.dm | 14 ++------- .../living/simple_animal/hostile/hostile.dm | 2 +- .../living/simple_animal/hostile/illusion.dm | 6 ++-- .../simple_animal/hostile/mecha_pilot.dm | 2 +- .../hostile/megafauna/bubblegum.dm | 2 +- .../hostile/megafauna/colossus.dm | 2 +- .../simple_animal/hostile/megafauna/dragon.dm | 2 +- .../hostile/megafauna/hierophant.dm | 2 +- .../simple_animal/hostile/megafauna/legion.dm | 4 +-- .../hostile/megafauna/megafauna.dm | 4 +-- .../hostile/megafauna/swarmer.dm | 5 ++- .../mob/living/simple_animal/hostile/mimic.dm | 31 +++++++------------ .../simple_animal/hostile/mining_mobs.dm | 9 +++--- .../living/simple_animal/hostile/mushroom.dm | 5 +-- .../living/simple_animal/hostile/statue.dm | 4 +-- .../mob/living/simple_animal/hostile/tree.dm | 2 +- .../mob/living/simple_animal/parrot.dm | 2 +- .../modules/mob/living/simple_animal/shade.dm | 2 +- .../mob/living/simple_animal/slime/slime.dm | 3 +- 42 files changed, 142 insertions(+), 152 deletions(-) diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index 2249642bfc7..b5055fe8bc8 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -255,13 +255,11 @@ hud_used.healths.maptext = "
[round((health / maxHealth) * 100, 0.5)]%
" /mob/living/simple_animal/hostile/blob/blobbernaut/AttackingTarget() - if(isliving(target)) - if(overmind) - var/mob/living/L = target - var/mob_protection = L.get_permeability_protection() - overmind.blob_reagent_datum.reaction_mob(L, VAPOR, 20, 0, mob_protection, overmind)//this will do between 10 and 20 damage(reduced by mob protection), depending on chemical, plus 4 from base brute damage. - if(target) - ..() + . = ..() + if(. && isliving(target) && overmind) + var/mob/living/L = target + var/mob_protection = L.get_permeability_protection() + overmind.blob_reagent_datum.reaction_mob(L, VAPOR, 20, 0, mob_protection, overmind)//this will do between 10 and 20 damage(reduced by mob protection), depending on chemical, plus 4 from base brute damage. /mob/living/simple_animal/hostile/blob/blobbernaut/update_icons() ..() diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm index ac86cbe906d..3cde9bcec75 100644 --- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm +++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm @@ -168,9 +168,9 @@ ////CTRL CLICK FOR SWARMERS AND SWARMER_ACT()'S//// /mob/living/simple_animal/hostile/swarmer/AttackingTarget() if(!isliving(target)) - target.swarmer_act(src) + return target.swarmer_act(src) else - ..() + return ..() /mob/living/simple_animal/hostile/swarmer/CtrlClickOn(atom/A) face_atom(A) diff --git a/code/game/gamemodes/miniantags/morph/morph.dm b/code/game/gamemodes/miniantags/morph/morph.dm index 42bab67d651..6964b7abc40 100644 --- a/code/game/gamemodes/miniantags/morph/morph.dm +++ b/code/game/gamemodes/miniantags/morph/morph.dm @@ -193,7 +193,7 @@ if(do_after(src, 20, target = I)) eat(I) return - target.attack_animal(src) + return ..() //Spawn Event diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm index 5527cb20f24..f1390264616 100644 --- a/code/modules/mining/minebot.dm +++ b/code/modules/mining/minebot.dm @@ -130,7 +130,7 @@ if(istype(target, /obj/item/weapon/ore) && mode == MINEDRONE_COLLECT) CollectOre() return - ..() + return ..() /mob/living/simple_animal/hostile/mining_drone/proc/CollectOre() var/obj/item/weapon/ore/O diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm index 85a5ed7f9b4..9767623af47 100644 --- a/code/modules/mob/living/carbon/alien/alien_defense.dm +++ b/code/modules/mob/living/carbon/alien/alien_defense.dm @@ -74,7 +74,8 @@ In all, this is a lot like the monkey code. /N /mob/living/carbon/alien/attack_animal(mob/living/simple_animal/M) - if(..()) + . = ..() + if(.) var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) switch(M.melee_damage_type) if(BRUTE) @@ -89,7 +90,6 @@ In all, this is a lot like the monkey code. /N adjustCloneLoss(damage) if(STAMINA) adjustStaminaLoss(damage) - updatehealth() /mob/living/carbon/alien/attack_slime(mob/living/simple_animal/slime/M) if(..()) //successful slime attack diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 4054803b278..bbc716d5fc8 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -302,13 +302,14 @@ /mob/living/carbon/human/attack_animal(mob/living/simple_animal/M) - if(..()) + . = ..() + if(.) var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) if(check_shields(damage, "the [M.name]", null, MELEE_ATTACK, M.armour_penetration)) - return 0 + return FALSE var/dam_zone = dismembering_strike(M, pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")) if(!dam_zone) //Dismemberment successful - return 1 + return TRUE var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone)) if(!affecting) affecting = get_bodypart("chest") diff --git a/code/modules/mob/living/carbon/monkey/monkey_defense.dm b/code/modules/mob/living/carbon/monkey/monkey_defense.dm index 7665068d1f0..a8cf291c028 100644 --- a/code/modules/mob/living/carbon/monkey/monkey_defense.dm +++ b/code/modules/mob/living/carbon/monkey/monkey_defense.dm @@ -138,11 +138,12 @@ /mob/living/carbon/monkey/attack_animal(mob/living/simple_animal/M) - if(..()) + . = ..() + if(.) var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) var/dam_zone = dismembering_strike(M, pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")) if(!dam_zone) //Dismemberment successful - return 1 + return TRUE var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone)) if(!affecting) affecting = get_bodypart("chest") diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm index 8e6879b1fa9..2578c4b3d9d 100644 --- a/code/modules/mob/living/silicon/silicon_defense.dm +++ b/code/modules/mob/living/silicon/silicon_defense.dm @@ -24,7 +24,8 @@ "[M] took a swipe at [src]!") /mob/living/silicon/attack_animal(mob/living/simple_animal/M) - if(..()) + . = ..() + if(.) var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) if(prob(damage)) for(var/mob/living/N in buckled_mobs) @@ -44,7 +45,6 @@ adjustCloneLoss(damage) if(STAMINA) adjustStaminaLoss(damage) - updatehealth() /mob/living/silicon/attack_paw(mob/living/user) return attack_hand(user) diff --git a/code/modules/mob/living/simple_animal/animal_defense.dm b/code/modules/mob/living/simple_animal/animal_defense.dm index f3cbfd3359b..fc7a451c3b2 100644 --- a/code/modules/mob/living/simple_animal/animal_defense.dm +++ b/code/modules/mob/living/simple_animal/animal_defense.dm @@ -60,25 +60,25 @@ return 1 /mob/living/simple_animal/attack_larva(mob/living/carbon/alien/larva/L) - if(..() && stat != DEAD) //successful larva bite + . = ..() + if(. && stat != DEAD) //successful larva bite var/damage = rand(5, 10) - L.amount_grown = min(L.amount_grown + damage, L.max_grown) - attack_threshold_check(damage) - return 1 + . = attack_threshold_check(damage) + if(.) + L.amount_grown = min(L.amount_grown + damage, L.max_grown) /mob/living/simple_animal/attack_animal(mob/living/simple_animal/M) - if(..()) + . = ..() + if(.) var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) - attack_threshold_check(damage, M.melee_damage_type) - return 1 + return attack_threshold_check(damage, M.melee_damage_type) /mob/living/simple_animal/attack_slime(mob/living/simple_animal/slime/M) if(..()) //successful slime attack var/damage = rand(15, 25) if(M.is_adult) damage = rand(20, 35) - attack_threshold_check(damage) - return 1 + return attack_threshold_check(damage) /mob/living/simple_animal/proc/attack_threshold_check(damage, damagetype = BRUTE, armorcheck = "melee") var/temp_damage = damage @@ -89,8 +89,10 @@ if(temp_damage >= 0 && temp_damage <= force_threshold) visible_message("[src] looks unharmed.") + return FALSE else apply_damage(damage, damagetype, null, getarmor(null, armorcheck)) + return TRUE /mob/living/simple_animal/bullet_act(obj/item/projectile/Proj) if(!Proj) diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 886c7db33e7..249ebc10ced 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -74,7 +74,7 @@ else to_chat(M, "You cannot repair your own dents, as you have none!") else if(src != M) - ..() + return ..() /mob/living/simple_animal/hostile/construct/Process_Spacemove(movement_dir = 0) return 1 diff --git a/code/modules/mob/living/simple_animal/friendly/lizard.dm b/code/modules/mob/living/simple_animal/friendly/lizard.dm index b1d36ff2b9c..274a91bc214 100644 --- a/code/modules/mob/living/simple_animal/friendly/lizard.dm +++ b/code/modules/mob/living/simple_animal/friendly/lizard.dm @@ -36,5 +36,6 @@ qdel(target) //Nom target = null adjustBruteLoss(-2) + return TRUE else - ..() + return ..() diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 665a227a4ee..740ede826dd 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -183,12 +183,11 @@ var/global/list/parasites = list() //all currently existing/living guardians return 0 /mob/living/simple_animal/hostile/guardian/AttackingTarget() - if(src.loc == summoner) + if(loc == summoner) to_chat(src, "You must be manifested to attack!") - return 0 + return FALSE else - ..() - return 1 + return ..() /mob/living/simple_animal/hostile/guardian/death() drop_all_held_items() diff --git a/code/modules/mob/living/simple_animal/guardian/types/assassin.dm b/code/modules/mob/living/simple_animal/guardian/types/assassin.dm index 3baafb6c797..1fa54dfd216 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/assassin.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/assassin.dm @@ -33,7 +33,8 @@ stat(null, "Stealth Cooldown Remaining: [max(round((stealthcooldown - world.time)*0.1, 0.1), 0)] seconds") /mob/living/simple_animal/hostile/guardian/assassin/AttackingTarget() - if(..()) + . = ..() + if(.) if(toggle && (isliving(target) || istype(target, /obj/structure/window) || istype(target, /obj/structure/grille))) ToggleMode(1) diff --git a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm index 76e965fc903..9da40c0c7c5 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm @@ -17,19 +17,18 @@ stat(null, "Bomb Cooldown Remaining: [max(round((bomb_cooldown - world.time)*0.1, 0.1), 0)] seconds") /mob/living/simple_animal/hostile/guardian/bomb/AttackingTarget() - if(..()) - if(prob(40)) - if(isliving(target)) - var/mob/living/M = target - if(!M.anchored && M != summoner && !hasmatchingsummoner(M)) - new /obj/effect/overlay/temp/guardian/phase/out(get_turf(M)) - do_teleport(M, M, 10) - for(var/mob/living/L in range(1, M)) - if(hasmatchingsummoner(L)) //if the summoner matches don't hurt them - continue - if(L != src && L != summoner) - L.apply_damage(15, BRUTE) - new /obj/effect/overlay/temp/explosion(get_turf(M)) + . = ..() + if(. && prob(40) && isliving(target)) + var/mob/living/M = target + if(!M.anchored && M != summoner && !hasmatchingsummoner(M)) + new /obj/effect/overlay/temp/guardian/phase/out(get_turf(M)) + do_teleport(M, M, 10) + for(var/mob/living/L in range(1, M)) + if(hasmatchingsummoner(L)) //if the summoner matches don't hurt them + continue + if(L != src && L != summoner) + L.apply_damage(15, BRUTE) + new /obj/effect/overlay/temp/explosion(get_turf(M)) /mob/living/simple_animal/hostile/guardian/bomb/AltClickOn(atom/movable/A) if(!istype(A)) diff --git a/code/modules/mob/living/simple_animal/guardian/types/fire.dm b/code/modules/mob/living/simple_animal/guardian/types/fire.dm index 3712fa0893e..abcc9cf6a33 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/fire.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/fire.dm @@ -19,9 +19,9 @@ summoner.adjust_fire_stacks(-20) /mob/living/simple_animal/hostile/guardian/fire/AttackingTarget() - if(..()) - if(ishuman(target) && target != summoner) - new /obj/effect/hallucination/delusion(target.loc,target,force_kind="custom",duration=200,skip_nearby=0, custom_icon = src.icon_state, custom_icon_file = src.icon) + . = ..() + if(. && ishuman(target) && target != summoner) + new /obj/effect/hallucination/delusion(target.loc,target,force_kind="custom",duration=200,skip_nearby=0, custom_icon = src.icon_state, custom_icon_file = src.icon) /mob/living/simple_animal/hostile/guardian/fire/Crossed(AM as mob|obj) ..() diff --git a/code/modules/mob/living/simple_animal/guardian/types/lightning.dm b/code/modules/mob/living/simple_animal/guardian/types/lightning.dm index db245fea50e..ad1c47732bb 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/lightning.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/lightning.dm @@ -20,18 +20,18 @@ var/successfulshocks = 0 /mob/living/simple_animal/hostile/guardian/beam/AttackingTarget() - if(..()) - if(isliving(target) && target != src && target != summoner) - cleardeletedchains() - for(var/chain in enemychains) - var/datum/beam/B = chain - if(B.target == target) - return //oh this guy already HAS a chain, let's not chain again - if(enemychains.len > 2) - var/datum/beam/C = pick(enemychains) - qdel(C) - enemychains -= C - enemychains += Beam(target, "lightning[rand(1,12)]", time=70, maxdistance=7, beam_type=/obj/effect/ebeam/chain) + . = ..() + if(. && isliving(target) && target != src && target != summoner) + cleardeletedchains() + for(var/chain in enemychains) + var/datum/beam/B = chain + if(B.target == target) + return //oh this guy already HAS a chain, let's not chain again + if(enemychains.len > 2) + var/datum/beam/C = pick(enemychains) + qdel(C) + enemychains -= C + enemychains += Beam(target, "lightning[rand(1,12)]", time=70, maxdistance=7, beam_type=/obj/effect/ebeam/chain) /mob/living/simple_animal/hostile/guardian/beam/Destroy() removechains() diff --git a/code/modules/mob/living/simple_animal/guardian/types/standard.dm b/code/modules/mob/living/simple_animal/guardian/types/standard.dm index 45624bbaaa2..1d2cfdea6fe 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/standard.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/standard.dm @@ -22,10 +22,10 @@ /mob/living/simple_animal/hostile/guardian/punch/AttackingTarget() + . = ..() if(isliving(target)) src.say("[src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry]!!") playsound(loc, src.attack_sound, 50, 1, 1) playsound(loc, src.attack_sound, 50, 1, 1) playsound(loc, src.attack_sound, 50, 1, 1) playsound(loc, src.attack_sound, 50, 1, 1) - ..() diff --git a/code/modules/mob/living/simple_animal/guardian/types/support.dm b/code/modules/mob/living/simple_animal/guardian/types/support.dm index 9313d1311a7..04399b8eee3 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/support.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/support.dm @@ -27,21 +27,20 @@ stat(null, "Beacon Cooldown Remaining: [max(round((beacon_cooldown - world.time)*0.1, 0.1), 0)] seconds") /mob/living/simple_animal/hostile/guardian/healer/AttackingTarget() - if(..()) - if(toggle == TRUE) - if(iscarbon(target)) - var/mob/living/carbon/C = target - C.adjustBruteLoss(-5) - C.adjustFireLoss(-5) - C.adjustOxyLoss(-5) - C.adjustToxLoss(-5) - var/obj/effect/overlay/temp/heal/H = new /obj/effect/overlay/temp/heal(get_turf(C)) - if(namedatum) - H.color = namedatum.colour - if(C == summoner) - update_health_hud() - med_hud_set_health() - med_hud_set_status() + . = ..() + if(. && toggle && iscarbon(target)) + var/mob/living/carbon/C = target + C.adjustBruteLoss(-5) + C.adjustFireLoss(-5) + C.adjustOxyLoss(-5) + C.adjustToxLoss(-5) + var/obj/effect/overlay/temp/heal/H = new /obj/effect/overlay/temp/heal(get_turf(C)) + if(namedatum) + H.color = namedatum.colour + if(C == summoner) + update_health_hud() + med_hud_set_health() + med_hud_set_status() /mob/living/simple_animal/hostile/guardian/healer/ToggleMode() if(src.loc == summoner) diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index ceb8d563bfd..cfe08df89b8 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -169,7 +169,8 @@ if(istype(target, /obj/effect/decal/cleanable)) visible_message("[src] cleans up \the [target].") qdel(target) - return + return TRUE var/atom/movable/M = target M.clean_blood() visible_message("[src] polishes \the [target].") + return TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index fba21e36637..5312ea34617 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -144,12 +144,12 @@ target = null wanted_objects -= typecacheof(/obj/structure/beebox) //so we don't attack beeboxes when not going home else - if(beegent && isliving(target)) + . = ..() + if(. && beegent && isliving(target)) var/mob/living/L = target if(L.reagents) beegent.reaction_mob(L, INJECT) L.reagents.add_reagent(beegent.id, rand(1,5)) - target.attack_animal(src) /mob/living/simple_animal/hostile/poison/bees/proc/assign_reagent(datum/reagent/R) @@ -228,11 +228,11 @@ //leave pollination for the peasent bees /mob/living/simple_animal/hostile/poison/bees/queen/AttackingTarget() - if(beegent && isliving(target)) + . = ..() + if(. && beegent && isliving(target)) var/mob/living/L = target beegent.reaction_mob(L, TOUCH) L.reagents.add_reagent(beegent.id, rand(1,5)) - target.attack_animal(src) //PEASENT BEES diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index fe18390b58b..1d81eaf0ccf 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -39,8 +39,8 @@ return 1 //No drifting in space for space carp! //original comments do not steal /mob/living/simple_animal/hostile/carp/AttackingTarget() - ..() - if(ishuman(target)) + . = ..() + if(. && ishuman(target)) var/mob/living/carbon/human/H = target H.adjustStaminaLoss(8) diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index b9f7b834f98..8a18310fb3e 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -36,10 +36,9 @@ return 1 /mob/living/simple_animal/hostile/faithless/AttackingTarget() - ..() - if(iscarbon(target)) + . = ..() + if(. && prob(12) && iscarbon(target)) var/mob/living/carbon/C = target - if(prob(12)) - C.Weaken(3) - C.visible_message("\The [src] knocks down \the [C]!", \ - "\The [src] knocks you down!") \ No newline at end of file + C.Weaken(3) + C.visible_message("\The [src] knocks down \the [C]!", \ + "\The [src] knocks you down!") \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index e4241a4921d..16ef3124bc8 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -9,8 +9,8 @@ var/poison_type = "toxin" /mob/living/simple_animal/hostile/poison/AttackingTarget() - ..() - if(isliving(target)) + . = ..() + if(. && isliving(target)) var/mob/living/L = target if(L.reagents) L.reagents.add_reagent(poison_type, poison_per_bite) diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index fedd3021cfe..07ff6592df6 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -38,10 +38,8 @@ egg_lain = 1 /mob/living/simple_animal/hostile/headcrab/AttackingTarget() - if(egg_lain) - target.attack_animal(src) - return - if(iscarbon(target) && !ismonkey(target)) + . = ..() + if(. && !egg_lain && iscarbon(target) && !ismonkey(target)) // Changeling egg can survive in aliens! var/mob/living/carbon/C = target if(C.stat == DEAD) @@ -50,13 +48,7 @@ return Infect(target) to_chat(src, "With our egg laid, our death approaches rapidly...") - spawn(100) - death() - return - target.attack_animal(src) - - - + addtimer(CALLBACK(src, .proc/death), 100) /obj/item/organ/body_egg/changeling_egg name = "changeling egg" diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 4a39e95d00b..17976c3b759 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -280,7 +280,7 @@ /mob/living/simple_animal/hostile/proc/AttackingTarget() - target.attack_animal(src) + return target.attack_animal(src) /mob/living/simple_animal/hostile/proc/Aggro() vision_range = aggro_vision_range diff --git a/code/modules/mob/living/simple_animal/hostile/illusion.dm b/code/modules/mob/living/simple_animal/hostile/illusion.dm index eef563eda31..e09336059cc 100644 --- a/code/modules/mob/living/simple_animal/hostile/illusion.dm +++ b/code/modules/mob/living/simple_animal/hostile/illusion.dm @@ -48,8 +48,8 @@ /mob/living/simple_animal/hostile/illusion/AttackingTarget() - ..() - if(isliving(target) && prob(multiply_chance)) + . = ..() + if(. && isliving(target) && prob(multiply_chance)) var/mob/living/L = target if(L.stat == DEAD) return @@ -71,4 +71,4 @@ /mob/living/simple_animal/hostile/illusion/escape/AttackingTarget() - return + return FALSE diff --git a/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm b/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm index 5335cd7e350..f4195a93b30 100644 --- a/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm +++ b/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm @@ -194,7 +194,7 @@ target = null return - target.attack_animal(src) + return target.attack_animal(src) /mob/living/simple_animal/hostile/syndicate/mecha_pilot/handle_automated_action() diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm index 3516cb14927..6848147b80b 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -126,7 +126,7 @@ Difficulty: Hard /mob/living/simple_animal/hostile/megafauna/bubblegum/AttackingTarget() if(!charging) - ..() + return ..() /mob/living/simple_animal/hostile/megafauna/bubblegum/Goto(target, delay, minimum_distance) if(!charging) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 20aa46db2e7..5a9c719d234 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -639,7 +639,7 @@ Difficulty: Very Hard medsensor.add_hud_to(src) /mob/living/simple_animal/hostile/lightgeist/AttackingTarget() - ..() + . = ..() if(isliving(target) && target != src) var/mob/living/L = target if(L.stat < DEAD) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index b3fb02394a9..951df819685 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -69,7 +69,7 @@ Difficulty: Medium /mob/living/simple_animal/hostile/megafauna/dragon/AttackingTarget() if(!swooping) - ..() + return ..() /mob/living/simple_animal/hostile/megafauna/dragon/DestroySurroundings() if(!swooping) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm index 7131eb2dd49..9d19edad31a 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm @@ -139,7 +139,7 @@ Difficulty: Hard if(!blinking) if(target && isliving(target)) INVOKE_ASYNC(src, .proc/melee_blast, get_turf(target)) //melee attacks on living mobs produce a 3x3 blast - ..() + return ..() /mob/living/simple_animal/hostile/megafauna/hierophant/DestroySurroundings() if(!blinking) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm index 061d11d2e58..169b83169b4 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm @@ -55,8 +55,8 @@ Difficulty: Medium internal = new/obj/item/device/gps/internal/legion(src) /mob/living/simple_animal/hostile/megafauna/legion/AttackingTarget() - ..() - if(ishuman(target)) + . = ..() + if(. && ishuman(target)) var/mob/living/L = target if(L.stat == UNCONSCIOUS) var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/A = new(loc) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index a842e91fb8c..34d441cddab 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -71,8 +71,8 @@ ..() /mob/living/simple_animal/hostile/megafauna/AttackingTarget() - ..() - if(isliving(target)) + . = ..() + if(. && isliving(target)) var/mob/living/L = target if(L.stat != DEAD) if(!client && ranged && ranged_cooldown <= world.time) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm index 9ac4acd88ce..1e6229e4fd9 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm @@ -214,8 +214,10 @@ var/global/list/AISwarmerCapsByType = list(/mob/living/simple_animal/hostile/swa /mob/living/simple_animal/hostile/swarmer/ai/resource/AttackingTarget() if(target.swarmer_act(src)) add_type_to_wanted(target.type) + return TRUE else add_type_to_ignore(target.type) + return FALSE /mob/living/simple_animal/hostile/swarmer/ai/resource/handle_automated_action() @@ -308,8 +310,9 @@ var/global/list/AISwarmerCapsByType = list(/mob/living/simple_animal/hostile/swa var/mob/living/L = target L.attack_animal(src) L.electrocute_act(10, src, safety = TRUE) //safety = TRUE means we don't check gloves... Ok? + return TRUE else - ..() + return ..() diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index a2f49cc2cf8..a6ee0d8de89 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -66,6 +66,11 @@ . = ..() if(.) icon_state = initial(icon_state) + if(prob(15) && iscarbon(target)) + var/mob/living/carbon/C = target + C.Weaken(2) + C.visible_message("\The [src] knocks down \the [C]!", \ + "\The [src] knocks you down!") /mob/living/simple_animal/hostile/mimic/crate/proc/trigger() if(!attempt_open) @@ -87,18 +92,6 @@ O.loc = C ..() -/mob/living/simple_animal/hostile/mimic/crate/AttackingTarget() - . =..() - var/mob/living/L = . - if(iscarbon(L)) - var/mob/living/carbon/C = L - if(prob(15)) - C.Weaken(2) - C.visible_message("\The [src] knocks down \the [C]!", \ - "\The [src] knocks you down!") - - - var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/cable, /obj/structure/window) /mob/living/simple_animal/hostile/mimic/copy @@ -178,14 +171,12 @@ var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/ca ..() /mob/living/simple_animal/hostile/mimic/copy/AttackingTarget() - ..() - if(knockdown_people) - if(iscarbon(target)) - var/mob/living/carbon/C = target - if(prob(15)) - C.Weaken(2) - C.visible_message("\The [src] knocks down \the [C]!", \ - "\The [src] knocks you down!") + . = ..() + if(knockdown_people && . && prob(15) && iscarbon(target)) + var/mob/living/carbon/C = target + C.Weaken(2) + C.visible_message("\The [src] knocks down \the [C]!", \ + "\The [src] knocks you down!") /mob/living/simple_animal/hostile/mimic/copy/Aggro() ..() diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index 3cf5529c25a..1c64d25decd 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -165,7 +165,7 @@ if(istype(target, /obj/item/weapon/ore)) EatOre(target) return - ..() + return ..() /mob/living/simple_animal/hostile/asteroid/goldgrub/proc/EatOre(atom/targeted_ore) for(var/obj/item/weapon/ore/O in targeted_ore.loc) @@ -233,6 +233,7 @@ /mob/living/simple_animal/hostile/asteroid/hivelord/AttackingTarget() OpenFire() + return TRUE /mob/living/simple_animal/hostile/asteroid/hivelord/death(gibbed) mouse_opacity = 1 @@ -360,8 +361,8 @@ ..() /mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/AttackingTarget() - ..() - if(iscarbon(target)) + . = ..() + if(. && iscarbon(target)) transfer_reagents(target, 1) @@ -924,7 +925,7 @@ regenerate_icons() visible_message("[src] slurps up [target].") qdel(target) - ..() + return ..() /obj/item/udder/gutlunch diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm index 94941a0508e..4419b3eb04d 100644 --- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm +++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm @@ -77,7 +77,7 @@ if(faint_ticker < 2) M.visible_message("[M] chews a bit on [src].") faint_ticker++ - return + return TRUE M.visible_message("[M] devours [src]!") var/level_gain = (powerlevel - M.powerlevel) if(level_gain >= -1 && !bruised && !M.ckey)//Player shrooms can't level up to become robust gods. @@ -86,7 +86,8 @@ M.LevelUp(level_gain) M.adjustBruteLoss(-M.maxHealth) qdel(src) - ..() + return TRUE + return ..() /mob/living/simple_animal/hostile/mushroom/revive(full_heal = 0, admin_revive = 0) if(..()) diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm index 3d9d9591609..c930871bcd4 100644 --- a/code/modules/mob/living/simple_animal/hostile/statue.dm +++ b/code/modules/mob/living/simple_animal/hostile/statue.dm @@ -93,9 +93,9 @@ if(can_be_seen(get_turf(loc))) if(client) to_chat(src, "You cannot attack, there are eyes on you!") - return + return FALSE else - ..() + return ..() /mob/living/simple_animal/hostile/statue/DestroySurroundings() if(!can_be_seen(get_turf(loc))) diff --git a/code/modules/mob/living/simple_animal/hostile/tree.dm b/code/modules/mob/living/simple_animal/hostile/tree.dm index fb9e9fc3c6f..337dbfd17ed 100644 --- a/code/modules/mob/living/simple_animal/hostile/tree.dm +++ b/code/modules/mob/living/simple_animal/hostile/tree.dm @@ -52,7 +52,7 @@ T.atmos_spawn_air("o2=[amt]") /mob/living/simple_animal/hostile/tree/AttackingTarget() - ..() + . = ..() if(iscarbon(target)) var/mob/living/carbon/C = target if(prob(15)) diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index b66dd111666..2ccd7a08265 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -307,7 +307,7 @@ //Simple animals /mob/living/simple_animal/parrot/attack_animal(mob/living/simple_animal/M) - ..() //goodbye immortal parrots + . = ..() //goodbye immortal parrots if(client) return diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index 65907606dcb..b426aa996cb 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -52,7 +52,7 @@ else to_chat(M, "You cannot heal [src], as [p_they()] [p_are()] unharmed!") else if(src != M) - ..() + return ..() /mob/living/simple_animal/shade/attackby(obj/item/O, mob/user, params) //Marker -Agouri if(istype(O, /obj/item/device/soulstone)) diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 023aea68da3..62600cc512f 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -248,7 +248,8 @@ var/list/slime_colours = list("rainbow", "grey", "purple", "metal", "orange", M.updatehealth() /mob/living/simple_animal/slime/attack_animal(mob/living/simple_animal/M) - if(..()) + . = ..() + if(.) attacked += 10