diff --git a/Tactical/SoldierTooltips.cpp b/Tactical/SoldierTooltips.cpp index dac43998b..d61b028a5 100644 --- a/Tactical/SoldierTooltips.cpp +++ b/Tactical/SoldierTooltips.cpp @@ -257,12 +257,13 @@ void SoldierTooltip( SOLDIERTYPE* pSoldier ) } swprintf(pStrInfo, L"%s|A|I |Morale/|R|C|D: %d/%d\n", pStrInfo, pSoldier->aiData.bAIMorale, RangeChangeDesire(pSoldier)); swprintf(pStrInfo, L"%s|Last |Action: %d\n", pStrInfo, pSoldier->aiData.bLastAction); - swprintf(pStrInfo, L"%s|OpponentsSeen: %d |LastTurn: %d, |Public %d\n", pStrInfo, pSoldier->aiData.bOppCnt, CountSeenEnemiesLastTurn(pSoldier), CountSeenEnemiesLastTurn(pSoldier)); + swprintf(pStrInfo, L"%s|OpponentsSeen: %d\n", pStrInfo, pSoldier->aiData.bOppCnt); + swprintf(pStrInfo, L"%s|SeenLastTurn: %d, |Public %d\n", pStrInfo, CountSeenEnemiesLastTurn(pSoldier), CountSeenEnemiesLastTurn(pSoldier)); swprintf(pStrInfo, L"%s|Friends|Black: %d\n", pStrInfo, CountFriendsBlack(pSoldier)); swprintf(pStrInfo, L"%s|Soldier Level: %d |Diff: %d\n", pStrInfo, pSoldier->stats.bExpLevel, SoldierDifficultyLevel(pSoldier)); INT32 usOrigin; swprintf(pStrInfo, L"%s|Roaming |Range: %d\n", pStrInfo, RoamingRange(pSoldier, &usOrigin)); - swprintf(pStrInfo, L"%s|Aware |of |Opposition: %d\n", pStrInfo, gTacticalStatus.Team[pSoldier->bTeam].bAwareOfOpposition); + swprintf(pStrInfo, L"%s|Team |Aware: %d\n", pStrInfo, gTacticalStatus.Team[pSoldier->bTeam].bAwareOfOpposition); swprintf(pStrInfo, L"%s|Collapsed %d |BreathCollapsed %d\n", pStrInfo, pSoldier->bCollapsed, pSoldier->bBreathCollapsed); if (pSoldier->ubPreviousAttackerID != NOBODY && MercPtrs[pSoldier->ubPreviousAttackerID]) { @@ -274,7 +275,8 @@ void SoldierTooltip( SOLDIERTYPE* pSoldier ) } swprintf(pStrInfo, L"%s|Visible %d |Moved %d\n", pStrInfo, pSoldier->bVisible, pSoldier->aiData.bMoved); - swprintf(pStrInfo, L"%s|Noise %d %d %d |Public |Noise %d %d %d\n", pStrInfo, pSoldier->aiData.sNoiseGridno, pSoldier->bNoiseLevel, pSoldier->aiData.ubNoiseVolume, gsPublicNoiseGridNo[pSoldier->bTeam], gbPublicNoiseLevel[pSoldier->bTeam], gubPublicNoiseVolume[pSoldier->bTeam]); + swprintf(pStrInfo, L"%s|Noise %d %d %d\n", pStrInfo, pSoldier->aiData.sNoiseGridno, pSoldier->bNoiseLevel, pSoldier->aiData.ubNoiseVolume); + swprintf(pStrInfo, L"%s|Public |Noise %d %d %d\n", pStrInfo, gsPublicNoiseGridNo[pSoldier->bTeam], gbPublicNoiseLevel[pSoldier->bTeam], gubPublicNoiseVolume[pSoldier->bTeam]); // show watched locations: INT8 bLoop; diff --git a/TacticalAI/AIUtils.cpp b/TacticalAI/AIUtils.cpp index 3334c5538..b7f44b47d 100644 --- a/TacticalAI/AIUtils.cpp +++ b/TacticalAI/AIUtils.cpp @@ -3111,25 +3111,26 @@ INT32 RangeChangeDesire( SOLDIERTYPE * pSoldier ) return 0; } - switch (pSoldier->aiData.bAttitude) - { - case DEFENSIVE: iRangeFactorMultiplier += -1; break; - case BRAVESOLO: iRangeFactorMultiplier += 2; break; - case BRAVEAID: iRangeFactorMultiplier += 2; break; - case CUNNINGSOLO: iRangeFactorMultiplier += 0; break; - case CUNNINGAID: iRangeFactorMultiplier += 0; break; - case ATTACKSLAYONLY: - case AGGRESSIVE: iRangeFactorMultiplier += 1; break; - } - - if(IS_MERC_BODY_TYPE(pSoldier)) + INT8 bBonus = -1; + if (IS_MERC_BODY_TYPE(pSoldier)) { if (!AICheckHasGun(pSoldier)) - iRangeFactorMultiplier += 2; // if we have no weapons, try to get closer to enemy + bBonus = 2; // if we have no weapons, try to get closer to enemy else if (GuySawEnemy(pSoldier, SEEN_LAST_TURN) && AICheckShortWeaponRange(pSoldier)) - iRangeFactorMultiplier += 1; // bonus if weapon range is short + bBonus = 1; // bonus if weapon range is short } + switch (pSoldier->aiData.bAttitude) + { + case DEFENSIVE: iRangeFactorMultiplier += max(-1, bBonus); break; + case BRAVESOLO: iRangeFactorMultiplier += max(2, bBonus); break; + case BRAVEAID: iRangeFactorMultiplier += max(2, bBonus); break; + case CUNNINGSOLO: iRangeFactorMultiplier += max(0, bBonus); break; + case CUNNINGAID: iRangeFactorMultiplier += max(0, bBonus); break; + case ATTACKSLAYONLY: + case AGGRESSIVE: iRangeFactorMultiplier += max(1, bBonus); break; + } + if ( gTacticalStatus.bConsNumTurnsWeHaventSeenButEnemyDoes > 0 ) { iRangeFactorMultiplier += gTacticalStatus.bConsNumTurnsWeHaventSeenButEnemyDoes;