mirror of
https://github.com/1dot13/source.git
synced 2026-09-02 14:36:06 +02:00
AI improvements (by Sevenfm):
Bugfixes: - Fix: Watched Locations system (never worked in 1.13) - Fix: LineOfSight test with NO_DISTANCE_LIMIT (stopped on trees previously) AI/tactical improvements: - EstimateThrowDamage additionally calculates damage from fragments (important for AI to use frag grenades with low main damage and many fragments) - EstimateThrowDamage correctly adds IndoorModifier - Additional checks for RED suppression (check that the soldier will not shoot his friends, check that he has extra clip to reload weapon, check that target is not cowering, don't suppress when flanking) - ClosestReachableDisturbance will use general noise only if cannot find any enemy - Allow RED seeking in prone stance if we haven't seen enemy for several turns Flanking improvements: - allow YELLOW flanking for CLOSEPATROL at night - better YELLOW/RED flanking start/stop conditions - better RED AI behavior when finished flanking (try to reach flanking spot) - allow RED flanking for CLOSEPATROL soldiers when at night, overcrowded or no other flanking soldiers yet Optional AI improvements: AI_EXTRA_SUPPRESSION - AI will use suppression fire more often in RED state (set minimum AI CTH to 1) AI_NEW_MORALE - Better dynamic morale calculation depending on tactical situation. - Additional min/max limits for AI morale - Disabled HOPELESS morale for soldiers without guns (they can pick up weapon or attack with hands sometimes) AI_BETTER_COVER - Additional checks for line of sight, fresh corpses and overcrowded locations AI_EXTRA_FLANKING - Allow flanking for BRAVEAID/BRAVESOLO git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8006 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+11
-6
@@ -276,6 +276,15 @@ UINT8 GetClosestMedicSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTe
|
||||
INT16 MaxNormalVisionDistance( void );
|
||||
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 );
|
||||
BOOLEAN AICheckFriendsNoContact( 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
|
||||
@@ -283,15 +292,11 @@ BOOLEAN GuySawEnemyThisTurnOrBefore( SOLDIERTYPE * pSoldier );
|
||||
#define MAX_FLANKS_YELLOW 25
|
||||
|
||||
// limit min/max flank distance depending on sight range and time of day
|
||||
//#define MIN_FLANK_DIST_YELLOW 10 * STRAIGHT_RATIO
|
||||
//#define MAX_FLANK_DIST_YELLOW 50 * STRAIGHT_RATIO
|
||||
#define MIN_FLANK_DIST_YELLOW (2*MaxNormalVisionDistance()/3)
|
||||
#define MIN_FLANK_DIST_YELLOW (gGameExternalOptions.ubStraightSightRange * STRAIGHT_RATIO)
|
||||
#define MAX_FLANK_DIST_YELLOW (MaxNormalVisionDistance() + 20)
|
||||
|
||||
// limit min/max flank distance depending on sight range and time of day
|
||||
//#define MIN_FLANK_DIST_RED 10 * STRAIGHT_RATIO
|
||||
//#define MAX_FLANK_DIST_RED 40 * STRAIGHT_RATIO
|
||||
#define MIN_FLANK_DIST_RED (2*MaxNormalVisionDistance()/3)
|
||||
#define MIN_FLANK_DIST_RED (gGameExternalOptions.ubStraightSightRange * STRAIGHT_RATIO)
|
||||
#define MAX_FLANK_DIST_RED (MaxNormalVisionDistance() + 20)
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user