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:
feynman
2013-04-18 20:02:54 +00:00
parent 52cb4ff424
commit 26383d83a8
22 changed files with 451 additions and 490 deletions
-88
View File
@@ -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 );
}
}