mirror of
https://github.com/1dot13/source.git
synced 2026-08-05 14:00:23 +02:00
Brief: //dnl ch63
- Fixing AI problems when they use launchers. Details: - Seems from implementation of 100AP system and new attachment system and new kind of GL launchers, AI use them improperly or not used at all. Bugs was: - Bursting grenades from non burst launcher. - Not use GL if grenade is already in it - Not firing from rocket launcher if couldn't find hand grenade. - Refusing to launch grenade from attached GL if couldn't find grenade in other pockets. - Never fire from single rocket launchers like LAW. - Incorrect chance to throw calculation for GLs which lead into no decision to throw. - Whole cylinder of grenades was permanently remove from pocket after reloading launcher. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6321 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+7
-4
@@ -2330,11 +2330,11 @@ INT16 MinAPsToShootOrStab(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 bAimTime,
|
||||
else
|
||||
bAPCost += APBPConstants[AP_CHANGE_TARGET];
|
||||
}
|
||||
|
||||
#if 0//dnl ch63 240813 this seems very wrong, in most case (pSoldier->bActionPoints > bFullAps) and this will return less points then is actually required and could cancel some AI actions, like throwing grenades
|
||||
// the minimum AP cost of ANY shot can NEVER be more than merc's maximum APs!
|
||||
if ( bAPCost > bFullAPs )
|
||||
bAPCost = bFullAPs;
|
||||
|
||||
#endif
|
||||
// this SHOULD be impossible, but nevertheless...
|
||||
if ( bAPCost < 1 )
|
||||
bAPCost = 1;
|
||||
@@ -3478,8 +3478,11 @@ INT16 MinAPsToThrow( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubAddTurningCos
|
||||
UINT32 uiMercFlags;
|
||||
UINT8 ubDirection;
|
||||
|
||||
// make sure the guy's actually got a throwable item in his hand!
|
||||
usInHand = pSoldier->inv[ HANDPOS ].usItem;
|
||||
if(pSoldier->bWeaponMode == WM_ATTACHED_GL || pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST || pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO)//dnl ch63 240813
|
||||
usInHand = GetAttachedGrenadeLauncher(&pSoldier->inv[HANDPOS]);
|
||||
else
|
||||
// make sure the guy's actually got a throwable item in his hand!
|
||||
usInHand = pSoldier->inv[HANDPOS].usItem;
|
||||
|
||||
if ( ( !(Item[ usInHand ].usItemClass & IC_GRENADE) &&
|
||||
!(Item[ usInHand ].usItemClass & IC_LAUNCHER)) )
|
||||
|
||||
Reference in New Issue
Block a user