diff --git a/Source/monster.cpp b/Source/monster.cpp index 4ac526d7b..49ff09dc1 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -2016,7 +2016,7 @@ bool AiPlanPath(int i) return false; } -void AiAvoidance(int i, bool special) +void AiAvoidance(int i) { assert(i >= 0 && i < MAXMONSTERS); auto &monster = Monsters[i]; @@ -2060,7 +2060,7 @@ void AiAvoidance(int i, bool special) } } else if (v < 2 * monster._mint + 23) { monster._mdir = md; - if (special && monster._mhitpoints < (monster._mmaxhp / 2) && GenerateRnd(2) != 0) + if (IsAnyOf(monster._mAi, AI_GOATMC, AI_GARBUD) && monster._mhitpoints < (monster._mmaxhp / 2) && GenerateRnd(2) != 0) StartSpecialAttack(monster); else StartAttack(monster); @@ -2166,7 +2166,6 @@ void AiRangedAvoidance(int i) int my = monster.position.tile.y - fy; Direction md = GetDirection(monster.position.tile, monster.position.last); if (IsAnyOf(monster._mAi, AI_MAGMA, AI_STORM, AI_BONEDEMON) && monster._msquelch < UINT8_MAX) - MonstCheckDoors(monster); int lessmissiles = (monster._mAi == AI_ACID) ? 1 : 0; int dam = (monster._mAi == AI_DIABLO) ? 40 : 4; @@ -2500,11 +2499,6 @@ void RhinoAi(int i) monster.CheckStandAnimationIsLoaded(monster._mdir); } -void GoatAi(int i) -{ - AiAvoidance(i, true); -} - void FallenAi(int i) { assert(i >= 0 && i < MAXMONSTERS); @@ -2722,7 +2716,7 @@ void GargoyleAi(int i) monster._mgoal = MGOAL_NORMAL; } } - AiAvoidance(i, false); + AiAvoidance(i); } void ButcherAi(int i) @@ -2853,7 +2847,7 @@ void GharbadAi(int i) } if (monster._mgoal == MGOAL_NORMAL || monster._mgoal == MGOAL_MOVE) - AiAvoidance(i, true); + AiAvoidance(i); monster.CheckStandAnimationIsLoaded(md); } @@ -3349,7 +3343,7 @@ void (*AiProc[])(int i) = { /*AI_SKELBOW */ &SkeletonBowAi, /*AI_SCAV */ &ScavengerAi, /*AI_RHINO */ &RhinoAi, - /*AI_GOATMC */ &GoatAi, + /*AI_GOATMC */ &AiAvoidance, /*AI_GOATBOW */ &AiRanged, /*AI_FALLEN */ &FallenAi, /*AI_MAGMA */ &AiRangedAvoidance,