mirror of
https://github.com/1dot13/source.git
synced 2026-08-12 14:10:23 +02:00
Various AI improvements.
FindThrowableGrenade: allows to specify type and damage of searched grenade. New counter SOLDIER_COUNTER_RETREAT allows to set number of turns which soldier will try to retreat and take cover. FindBestNearbyCover: use PrepareThreatlist as unified function to make list of all known opponents. Militia Control: - start retreating mode for 2 turns when ordering retreat - replace AI_ACTION_RUN_AWAY with AI_ACTION_TAKE_COVER order so that militia do not retreat from sector New AI behavior: - soldier can use smoke grenade to cover himself when under fire - soldier can use use smoke grenade on his friend to cover him - if soldier used smoke, he starts retreat mode for 2 turns - added retreat code to Red, Black AI - improved Main Red AI for civilians (they only run away) Improved suppression code: - less chance of suppression when opponent has high shock level - prefer using suppression fire when soldier is in cover git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8879 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -25864,3 +25864,42 @@ BOOLEAN SOLDIERTYPE::IsFlanking(void)
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
UINT8 SOLDIERTYPE::ShockLevelPercent(void)
|
||||
{
|
||||
if (gGameExternalOptions.ubMaxSuppressionShock == 0)
|
||||
return 0;
|
||||
|
||||
return min(100, 100 * this->aiData.bShock / gGameExternalOptions.ubMaxSuppressionShock);
|
||||
}
|
||||
|
||||
BOOLEAN SOLDIERTYPE::TakenLargeHit(void)
|
||||
{
|
||||
if (this->usSoldierFlagMask2 & SOLDIER_TAKEN_LARGE_HIT)
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOLEAN SOLDIERTYPE::IsCowering(void)
|
||||
{
|
||||
if (this->usAnimState == COWERING || this->usAnimState == COWERING_PRONE)
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void SOLDIERTYPE::RetreatCounterStart(UINT16 usValue)
|
||||
{
|
||||
usSkillCounter[SOLDIER_COUNTER_RETREAT] = max(usValue, usSkillCounter[SOLDIER_COUNTER_RETREAT]);
|
||||
}
|
||||
|
||||
void SOLDIERTYPE::RetreatCounterStop(void)
|
||||
{
|
||||
usSkillCounter[SOLDIER_COUNTER_RETREAT] = 0;
|
||||
}
|
||||
|
||||
UINT16 SOLDIERTYPE::RetreatCounterValue(void)
|
||||
{
|
||||
return usSkillCounter[SOLDIER_COUNTER_RETREAT];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user