mirror of
https://github.com/1dot13/source.git
synced 2026-09-02 14:36:06 +02:00
AI update (by sevenfm):
- removed AI_EXTRA_FLANKING option - LocationToLocationLineOfSightTest allows to check sight with specified height - IsActionAffordable allows to specify action to check without faking it - ClosestReachableDisturbance: correctly calculate path to each disturbance, added safety checks, update for noise checks - CalcMoraleNew: update - CalcBestShot: allow shooting at empty vehicles, but they have low priority - allow AI to fire at dying opponents to avoid AI decision problems - CheckIfShotPossible: allow any soldier with long range weapon to shoot in RED state (if he can hit) - Flanking update - WATCH decision update - removed distance check for HELP decision to allow vanilla behavior, don't help if seen enemy recently or under fire - suppression fire update - pick up item decision: check that location is safe git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8125 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+21
-15
@@ -4,6 +4,7 @@
|
||||
#include "types.h"
|
||||
#include "worlddef.h"
|
||||
#include "Soldier Control.h"
|
||||
#include "Isometric Utils.h"
|
||||
|
||||
#define TESTAICONTROL
|
||||
|
||||
@@ -221,7 +222,7 @@ void HandleInitialRedAlert( INT8 bTeam, UINT8 ubCommunicate);
|
||||
|
||||
void InitPanicSystem();
|
||||
INT16 InWaterOrGas(SOLDIERTYPE *pSoldier, INT32 sGridno);
|
||||
BOOLEAN IsActionAffordable(SOLDIERTYPE *pSoldier);
|
||||
BOOLEAN IsActionAffordable(SOLDIERTYPE *pSoldier, INT8 bAction = AI_ACTION_NONE);
|
||||
BOOLEAN InitAI( void );
|
||||
|
||||
void MakeClosestEnemyChosenOne();
|
||||
@@ -274,29 +275,34 @@ UINT8 GetClosestMedicSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTe
|
||||
// sevenfm:
|
||||
|
||||
INT16 MaxNormalVisionDistance( void );
|
||||
UINT8 MinFlankDirections( SOLDIERTYPE *pSoldier );
|
||||
UINT8 CountFriendsInDirection( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo );
|
||||
BOOLEAN GuySawEnemyThisTurnOrBefore( SOLDIERTYPE * pSoldier );
|
||||
BOOLEAN CheckSuppressionDirection( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo );
|
||||
UINT8 CountNearbyFriendlies( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDistance );
|
||||
UINT8 CountNearbyFriendliesLastAttackHit( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDistance );
|
||||
UINT8 CountFriendsFlankSeek( SOLDIERTYPE *pSoldier );
|
||||
UINT8 CountNearbyFriendliesContact( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDistance );
|
||||
UINT8 CountNearbyFriendliesNoContact( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDistance );
|
||||
UINT8 CountNearbyFriends( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDistance );
|
||||
UINT8 CountNearbyFriendsLastAttackHit( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDistance );
|
||||
UINT8 CountFriendsFlankSameSpot( SOLDIERTYPE *pSoldier );
|
||||
UINT8 CountFriendsBlack( SOLDIERTYPE *pSoldier, INT32 sClosestOpponent = NOWHERE );
|
||||
|
||||
BOOLEAN AICheckFriendsNoContact( SOLDIERTYPE *pSoldier );
|
||||
BOOLEAN AICheckIsFlanking( SOLDIERTYPE *pSoldier );
|
||||
|
||||
INT8 CalcMoraleNew(SOLDIERTYPE *pSoldier);
|
||||
|
||||
// moved from DecideAction.cpp
|
||||
// sevenfm: set MAX_FLANKS_RED and MAX_FLANKS_YELLOW to equal values to avoid problems when soldier's alert state changes
|
||||
BOOLEAN ProneSightCoverAtSpot( SOLDIERTYPE *pSoldier, INT32 sSpot );
|
||||
BOOLEAN SightCoverAtSpot( SOLDIERTYPE *pSoldier, INT32 sSpot );
|
||||
|
||||
#define MAX_FLANKS_RED 25
|
||||
#define MAX_FLANKS_YELLOW 25
|
||||
|
||||
// limit min/max flank distance depending on sight range and time of day
|
||||
#define MIN_FLANK_DIST_YELLOW (gGameExternalOptions.ubStraightSightRange * STRAIGHT_RATIO)
|
||||
#define MAX_FLANK_DIST_YELLOW (MaxNormalVisionDistance() + 20)
|
||||
// vision range defines
|
||||
#define DAY_VISION_RANGE (gGameExternalOptions.ubStraightSightRange * STRAIGHT_RATIO * 2)
|
||||
#define NIGHT_VISION_RANGE (gGameExternalOptions.ubStraightSightRange * STRAIGHT_RATIO )
|
||||
#define VISION_RANGE MaxNormalVisionDistance()
|
||||
|
||||
// limit min/max flank distance depending on sight range and time of day
|
||||
#define MIN_FLANK_DIST_RED (gGameExternalOptions.ubStraightSightRange * STRAIGHT_RATIO)
|
||||
#define MAX_FLANK_DIST_RED (MaxNormalVisionDistance() + 20)
|
||||
// sevenfm: limit min/max flank distance depending on sight range and time of day
|
||||
#define MIN_FLANK_DIST_YELLOW (DAY_VISION_RANGE/2)
|
||||
#define MAX_FLANK_DIST_YELLOW (VISION_RANGE + 20)
|
||||
#define MIN_FLANK_DIST_RED (DAY_VISION_RANGE/2)
|
||||
#define MAX_FLANK_DIST_RED (VISION_RANGE + 20)
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user