mirror of
https://github.com/1dot13/source.git
synced 2026-09-02 14:36:06 +02:00
Further refinement of new ModularizedTacticalAI architecture; added plans for Crows
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6017 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -1670,91 +1670,3 @@ void CreatureDecideAlertStatus( SOLDIERTYPE *pSoldier )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
INT8 CrowDecideActionRed( SOLDIERTYPE * pSoldier )
|
||||
{
|
||||
// OK, Fly away!
|
||||
//HandleCrowFlyAway( pSoldier );
|
||||
if (!gfTurnBasedAI)
|
||||
{
|
||||
pSoldier->aiData.usActionData = 30000;
|
||||
return( AI_ACTION_WAIT );
|
||||
}
|
||||
else
|
||||
{
|
||||
return( AI_ACTION_NONE );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INT8 CrowDecideActionGreen( SOLDIERTYPE * pSoldier )
|
||||
{
|
||||
INT32 sCorpseGridNo;
|
||||
UINT8 ubDirection;
|
||||
INT16 sFacingDir;
|
||||
|
||||
// Look for a corse!
|
||||
sCorpseGridNo = FindNearestRottingCorpse( pSoldier );
|
||||
|
||||
if (!TileIsOutOfBounds(sCorpseGridNo))
|
||||
{
|
||||
// Are we close, if so , peck!
|
||||
if ( SpacesAway( pSoldier->sGridNo, sCorpseGridNo ) < 2 )
|
||||
{
|
||||
// Change facing
|
||||
sFacingDir = GetDirectionFromGridNo( sCorpseGridNo, pSoldier );
|
||||
|
||||
if ( sFacingDir != pSoldier->ubDirection )
|
||||
{
|
||||
pSoldier->aiData.usActionData = sFacingDir;
|
||||
return(AI_ACTION_CHANGE_FACING);
|
||||
}
|
||||
else if (!gfTurnBasedAI)
|
||||
{
|
||||
pSoldier->aiData.usActionData = 30000;
|
||||
return( AI_ACTION_WAIT );
|
||||
}
|
||||
else
|
||||
{
|
||||
return( AI_ACTION_NONE );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Walk to nearest one!
|
||||
pSoldier->aiData.usActionData = FindGridNoFromSweetSpot( pSoldier, sCorpseGridNo, 4, &ubDirection );
|
||||
if (!TileIsOutOfBounds(pSoldier->aiData.usActionData))
|
||||
{
|
||||
return( AI_ACTION_GET_CLOSER );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return( AI_ACTION_NONE );
|
||||
}
|
||||
|
||||
INT8 CrowDecideAction( SOLDIERTYPE * pSoldier )
|
||||
{
|
||||
if ( pSoldier->usAnimState == CROW_FLY )
|
||||
{
|
||||
return( AI_ACTION_NONE );
|
||||
}
|
||||
|
||||
switch( pSoldier->aiData.bAlertStatus )
|
||||
{
|
||||
case STATUS_GREEN:
|
||||
case STATUS_YELLOW:
|
||||
return( CrowDecideActionGreen( pSoldier ) );
|
||||
|
||||
case STATUS_RED:
|
||||
case STATUS_BLACK:
|
||||
return( CrowDecideActionRed( pSoldier ) );
|
||||
|
||||
default:
|
||||
Assert( FALSE );
|
||||
return( AI_ACTION_NONE );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user