Improved code to update scope mode when changing stance.

ChangeScopeMode: use NOWHERE instead of 0 as incorrect target gridno.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8796 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Sevenfm
2020-04-30 00:48:52 +00:00
parent b729583bcb
commit 7f8fc44a7d
4 changed files with 18 additions and 6 deletions
+15 -3
View File
@@ -3828,14 +3828,21 @@ void UIHandleSoldierStanceChange( UINT8 ubSoldierID, INT8 bNewStance )
pSoldier->bGoodContPath = FALSE;
//dnl ch71 180913 when we go to crouch or prone for now there is no alternative fire mode option
if(pSoldier->bScopeMode == USE_ALT_WEAPON_HOLD && bNewStance != ANIM_STAND)
if (pSoldier->bScopeMode == USE_ALT_WEAPON_HOLD && bNewStance != ANIM_STAND ||
gGameExternalOptions.ubAllowAlternativeWeaponHolding &&
pSoldier->inv[HANDPOS].exists() &&
Weapon[pSoldier->inv[HANDPOS].usItem].HeavyGun &&
Item[pSoldier->inv[HANDPOS].usItem].twohanded &&
bNewStance == ANIM_STAND)
{
ChangeScopeMode(pSoldier, 0);
ChangeScopeMode(pSoldier, NOWHERE);
ManLooksForOtherTeams(pSoldier);
}
}
else
{
return;
}
}
// If realtime- change walking animation!
@@ -3872,7 +3879,12 @@ void UIHandleSoldierStanceChange( UINT8 ubSoldierID, INT8 bNewStance )
}
// sevenfm: switch from alt weapon holding when changing stance in realtime
if (pSoldier->bScopeMode == USE_ALT_WEAPON_HOLD && bNewStance != ANIM_STAND)
if (pSoldier->bScopeMode == USE_ALT_WEAPON_HOLD && bNewStance != ANIM_STAND ||
gGameExternalOptions.ubAllowAlternativeWeaponHolding &&
pSoldier->inv[HANDPOS].exists() &&
Weapon[pSoldier->inv[HANDPOS].usItem].HeavyGun &&
Item[pSoldier->inv[HANDPOS].usItem].twohanded &&
bNewStance == ANIM_STAND)
{
ChangeScopeMode(pSoldier, NOWHERE);
ManLooksForOtherTeams(pSoldier);
+1 -1
View File
@@ -6519,7 +6519,7 @@ void ItemDescAttachmentsCallback( MOUSE_REGION * pRegion, INT32 iReason )
// Flugente: if we altered a gun's attachments, re-evaluate the scope mode and sight
if ( gGameExternalOptions.fScopeModes && gpItemPointerSoldier && Item[gpItemDescObject->usItem].usItemClass == IC_GUN )
{
ChangeScopeMode( gpItemPointerSoldier, 0 );
ChangeScopeMode(gpItemPointerSoldier, NOWHERE);
// reevaluate sight
ManLooksForOtherTeams( gpItemPointerSoldier );
+1 -1
View File
@@ -5160,7 +5160,7 @@ void SetScopeMode( INT32 usMapPos )
if ( GetMouseMapPos( &usMapPos ))
ChangeScopeMode( MercPtrs[ gusSelectedSoldier ], usMapPos );
else
ChangeScopeMode( MercPtrs[ gusSelectedSoldier ], 0 );
ChangeScopeMode( MercPtrs[ gusSelectedSoldier ], NOWHERE );
// reevaluate sight
ManLooksForOtherTeams( MercPtrs[ gusSelectedSoldier ] );
+1 -1
View File
@@ -10269,7 +10269,7 @@ void ChangeScopeMode( SOLDIERTYPE * pSoldier, INT32 iTrgGridNo )
// changing scope mode can change number of aiming levels, we should reset the aiming variable here
// for the luxury of the payer, I've made it so if he had aiming set to a higher value, we give him the maximum value for the new scope mode,
// assuming he wants to go for the most accurate shot
if ( iTrgGridNo != 0 )
if ( iTrgGridNo != NOWHERE )
{
if ( bOldAimTime > AllowedAimingLevels(pSoldier, iTrgGridNo) )
{