mirror of
https://github.com/1dot13/source.git
synced 2026-08-05 14:00:23 +02:00
AI:
- before deciding anything, stop cowering animation - before deciding anything, stop giving aid animation - before deciding to raise weapon, check if weapon can be raised - simplified scope check - removed duplicate code in Red AI Added missing actions to gzActionStr[]. Fixed OKLIFE checks. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8740 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+57
-13
@@ -2147,19 +2147,46 @@ INT8 ExecuteAction(SOLDIERTYPE *pSoldier)
|
||||
}
|
||||
break;
|
||||
|
||||
case AI_ACTION_STOP_COWERING:
|
||||
// make sure action data is set right
|
||||
if ( pSoldier->flags.uiStatusFlags & SOLDIER_COWERING )
|
||||
{
|
||||
pSoldier->aiData.usActionData = ANIM_STAND;
|
||||
pSoldier->SetSoldierCowerState( FALSE );
|
||||
}
|
||||
else
|
||||
{
|
||||
// nothing to do!
|
||||
ActionDone( pSoldier );
|
||||
return( FALSE );
|
||||
}
|
||||
case AI_ACTION_STOP_COWERING:
|
||||
if (SoldierAI(pSoldier))
|
||||
{
|
||||
// sevenfm: stop cowering for soldiers
|
||||
if (pSoldier->usAnimState == COWERING)
|
||||
{
|
||||
if (gAnimControl[pSoldier->usAnimState].ubEndHeight == ANIM_STAND)
|
||||
{
|
||||
pSoldier->ubDesiredHeight = ANIM_STAND;
|
||||
pSoldier->EVENT_InitNewSoldierAnim(END_COWER, 0, FALSE);
|
||||
}
|
||||
else if (gAnimControl[pSoldier->usAnimState].ubEndHeight == ANIM_CROUCH)
|
||||
{
|
||||
pSoldier->ubDesiredHeight = ANIM_CROUCH;
|
||||
pSoldier->EVENT_InitNewSoldierAnim(END_COWER_CROUCHED, 0, FALSE);
|
||||
}
|
||||
}
|
||||
else if (pSoldier->usAnimState == COWERING_PRONE)
|
||||
{
|
||||
if (gAnimControl[pSoldier->usAnimState].ubEndHeight == ANIM_PRONE)
|
||||
{
|
||||
pSoldier->ubDesiredHeight = ANIM_PRONE;
|
||||
pSoldier->EVENT_InitNewSoldierAnim(END_COWER_PRONE, 0, FALSE);
|
||||
}
|
||||
}
|
||||
// clear cowering flag
|
||||
pSoldier->flags.uiStatusFlags &= (~SOLDIER_COWERING);
|
||||
}
|
||||
else if (pSoldier->flags.uiStatusFlags & SOLDIER_COWERING)
|
||||
{
|
||||
// stop cowering for civilians
|
||||
pSoldier->aiData.usActionData = ANIM_STAND;
|
||||
pSoldier->SetSoldierCowerState(FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
// nothing to do!
|
||||
ActionDone(pSoldier);
|
||||
return(FALSE);
|
||||
}
|
||||
break;
|
||||
|
||||
case AI_ACTION_GIVE_AID: // help injured/dying friend
|
||||
@@ -2348,6 +2375,23 @@ INT8 ExecuteAction(SOLDIERTYPE *pSoldier)
|
||||
}
|
||||
break;
|
||||
|
||||
case AI_ACTION_STOP_MEDIC:
|
||||
if (pSoldier->stats.bLife >= OKLIFE &&
|
||||
pSoldier->bBreath > 0 &&
|
||||
!pSoldier->bCollapsed &&
|
||||
(pSoldier->usAnimState == GIVING_AID || pSoldier->usAnimState == GIVING_AID_PRN))
|
||||
{
|
||||
if (gAnimControl[pSoldier->usAnimState].ubEndHeight == ANIM_PRONE)
|
||||
pSoldier->ChangeSoldierState(END_AID_PRN, 0, 0);
|
||||
else
|
||||
pSoldier->ChangeSoldierState(END_AID, 0, 0);
|
||||
}
|
||||
pSoldier->ubServiceCount = 0;
|
||||
pSoldier->ubServicePartner = NOBODY;
|
||||
pSoldier->fDoingSurgery = FALSE;
|
||||
ActionDone(pSoldier);
|
||||
break;
|
||||
|
||||
case AI_ACTION_SELFDETONATE:
|
||||
{
|
||||
pSoldier->SelfDetonate( );
|
||||
|
||||
Reference in New Issue
Block a user