Browse Source

🎨 Simplify monster AI walking checks using 'IsAnyOf'/'IsNoneOf'

pull/2774/head
Juliano Leal Goncalves 5 years ago committed by Anders Jenbo
parent
commit
5a9dd86e80
  1. 23
      Source/monster.cpp

23
Source/monster.cpp

@ -2170,7 +2170,7 @@ void AiAvoidance(int i, bool special)
if (monster._mgoal == MGOAL_NORMAL) {
if (abs(mx) >= 2 || abs(my) >= 2) {
if ((monster._mVar2 > 20 && v < 2 * monster._mint + 28)
|| ((monster._mVar1 == MM_WALK || monster._mVar1 == MM_WALK2 || monster._mVar1 == MM_WALK3)
|| (IsAnyOf(monster._mVar1, MM_WALK, MM_WALK2, MM_WALK3)
&& monster._mVar2 == 0
&& v < 2 * monster._mint + 78)) {
RandomWalk(i, md);
@ -2277,7 +2277,7 @@ void AiRangedAvoidance(int i, missile_id missileType, bool checkdoors, int dam,
} else if (dist >= 2) {
v = GenerateRnd(100);
if (v < 1000 * (monster._mint + 5)
|| ((monster._mVar1 == MM_WALK || monster._mVar1 == MM_WALK2 || monster._mVar1 == MM_WALK3) && monster._mVar2 == 0 && v < 1000 * (monster._mint + 8))) {
|| (IsAnyOf(monster._mVar1, MM_WALK, MM_WALK2, MM_WALK3) && monster._mVar2 == 0 && v < 1000 * (monster._mint + 8))) {
RandomWalk(i, md);
}
} else if (v < 1000 * (monster._mint + 6)) {
@ -2341,7 +2341,7 @@ void OverlordAi(int i)
int v = GenerateRnd(100);
if (abs(mx) >= 2 || abs(my) >= 2) {
if ((monster._mVar2 > 20 && v < 4 * monster._mint + 20)
|| ((monster._mVar1 == MM_WALK || monster._mVar1 == MM_WALK2 || monster._mVar1 == MM_WALK3)
|| (IsAnyOf(monster._mVar1, MM_WALK, MM_WALK2, MM_WALK3)
&& monster._mVar2 == 0
&& v < 4 * monster._mint + 70)) {
RandomWalk(i, md);
@ -2405,7 +2405,7 @@ void SkeletonBowAi(int i)
if (abs(mx) < 4 && abs(my) < 4) {
if ((monster._mVar2 > 20 && v < 2 * monster._mint + 13)
|| ((monster._mVar1 == MM_WALK || monster._mVar1 == MM_WALK2 || monster._mVar1 == MM_WALK3)
|| (IsAnyOf(monster._mVar1, MM_WALK, MM_WALK2, MM_WALK3)
&& monster._mVar2 == 0
&& v < 2 * monster._mint + 63)) {
walking = DumbWalk(i, opposite[md]);
@ -2561,7 +2561,7 @@ void RhinoAi(int i)
if (dist >= 2) {
v = GenerateRnd(100);
if (v >= 2 * monster._mint + 33
&& ((monster._mVar1 != MM_WALK && monster._mVar1 != MM_WALK2 && monster._mVar1 != MM_WALK3)
&& (IsNoneOf(monster._mVar1, MM_WALK, MM_WALK2, MM_WALK3)
|| monster._mVar2 != 0
|| v >= 2 * monster._mint + 83)) {
AiDelay(monster, GenerateRnd(10) + 10);
@ -2705,7 +2705,7 @@ void LeoricAi(int i)
if (dist >= 2) {
v = GenerateRnd(100);
if (v >= monster._mint + 25
&& ((monster._mVar1 != MM_WALK && monster._mVar1 != MM_WALK2 && monster._mVar1 != MM_WALK3) || monster._mVar2 != 0 || (v >= monster._mint + 75))) {
&& (IsNoneOf(monster._mVar1, MM_WALK, MM_WALK2, MM_WALK3) || monster._mVar2 != 0 || (v >= monster._mint + 75))) {
AiDelay(monster, GenerateRnd(10) + 10);
} else {
RandomWalk(i, md);
@ -2760,7 +2760,7 @@ void BatAi(int i)
}
} else if (abs(xd) >= 2 || abs(yd) >= 2) {
if ((monster._mVar2 > 20 && v < monster._mint + 13)
|| ((monster._mVar1 == MM_WALK || monster._mVar1 == MM_WALK2 || monster._mVar1 == MM_WALK3)
|| (IsAnyOf(monster._mVar1, MM_WALK, MM_WALK2, MM_WALK3)
&& monster._mVar2 == 0
&& v < monster._mint + 63)) {
RandomWalk(i, md);
@ -2890,7 +2890,7 @@ void SneakAi(int i)
StartFadeout(monster, md, true);
} else {
if (monster._mgoal == MGOAL_RETREAT
|| ((abs(mx) >= 2 || abs(my) >= 2) && ((monster._mVar2 > 20 && v < 4 * monster._mint + 14) || ((monster._mVar1 == MM_WALK || monster._mVar1 == MM_WALK2 || monster._mVar1 == MM_WALK3) && monster._mVar2 == 0 && v < 4 * monster._mint + 64)))) {
|| ((abs(mx) >= 2 || abs(my) >= 2) && ((monster._mVar2 > 20 && v < 4 * monster._mint + 14) || (IsAnyOf(monster._mVar1, MM_WALK, MM_WALK2, MM_WALK3) && monster._mVar2 == 0 && v < 4 * monster._mint + 64)))) {
monster._mgoalvar1++;
RandomWalk(i, md);
}
@ -3060,8 +3060,7 @@ void SnakeAi(int i)
AiDelay(monster, 15 - monster._mint + GenerateRnd(10));
}
} else {
if (monster._mVar1 == MM_DELAY
|| monster._mVar1 == MM_CHARGE
if (IsAnyOf(monster._mVar1, MM_DELAY, MM_CHARGE)
|| (GenerateRnd(100) < monster._mint + 20)) {
StartAttack(monster);
} else
@ -3219,7 +3218,7 @@ void MegaAi(int i)
} else if (dist >= 2) {
v = GenerateRnd(100);
if (v < 2 * (5 * monster._mint + 25)
|| ((monster._mVar1 == MM_WALK || monster._mVar1 == MM_WALK2 || monster._mVar1 == MM_WALK3)
|| (IsAnyOf(monster._mVar1, MM_WALK, MM_WALK2, MM_WALK3)
&& monster._mVar2 == 0
&& v < 2 * (5 * monster._mint + 40))) {
RandomWalk(i, md);
@ -3443,7 +3442,7 @@ void HorkDemonAi(int i)
} else {
v = GenerateRnd(100);
if (v < 2 * monster._mint + 33
|| ((monster._mVar1 == MM_WALK || monster._mVar1 == MM_WALK2 || monster._mVar1 == MM_WALK3) && monster._mVar2 == 0 && v < 2 * monster._mint + 83)) {
|| (IsAnyOf(monster._mVar1, MM_WALK, MM_WALK2, MM_WALK3) && monster._mVar2 == 0 && v < 2 * monster._mint + 83)) {
RandomWalk(i, md);
} else {
AiDelay(monster, GenerateRnd(10) + 10);

Loading…
Cancel
Save