NO_STANDING_ANIM_ADJUSTMENT_IN_COMBAT: apply only for player mercs, to avoid possible problems with AI.

CalcChanceHTH: only use reduced chance for boxers.
AIDoctorFriend, AIDoctorSelf: first change soldier to stationary.
AIDoctorFriend: change target to stationary.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8928 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Sevenfm
2021-02-08 18:27:27 +00:00
parent 6ad8b22368
commit d66a05b0f4
3 changed files with 26 additions and 9 deletions
+13 -6
View File
@@ -1628,8 +1628,11 @@ BOOLEAN ExecuteOverhead( )
{
// Flugente: if in turnbased combat and option is selected, do not go to standing animation
// By this, we wont have to spend additional APs when we continue to run
if ( gTacticalStatus.uiFlags & TURNBASED && gTacticalStatus.uiFlags & INCOMBAT && gGameExternalOptions.fNoStandingAnimAdjustInCombat &&
!pSoldier->bCollapsed && !pSoldier->bBreathCollapsed )
if ((gTacticalStatus.uiFlags & TURNBASED && gTacticalStatus.uiFlags & INCOMBAT) &&
(pSoldier->flags.uiStatusFlags & SOLDIER_PC) && // sevenfm: this option works only for player
gGameExternalOptions.fNoStandingAnimAdjustInCombat &&
!pSoldier->bCollapsed &&
!pSoldier->bBreathCollapsed)
{
// Flugente: We have to decide depending on the animation we have, otherwise we can cause bugs if we do this after being hit by an explosion etc.
BOOLEAN dontadjustanim = FALSE;
@@ -1670,11 +1673,15 @@ BOOLEAN ExecuteOverhead( )
pSoldier->ubPendingDirection = NO_PENDING_DIRECTION;
pSoldier->aiData.ubPendingAction = NO_PENDING_ACTION;
}
else
pSoldier->SoldierGotoStationaryStance( );
else
{
pSoldier->SoldierGotoStationaryStance();
}
}
else
pSoldier->SoldierGotoStationaryStance( );
else
{
pSoldier->SoldierGotoStationaryStance();
}
}
}
}
+11 -1
View File
@@ -7411,7 +7411,7 @@ void SOLDIERTYPE::StopSoldier( void )
this->EVENT_StopMerc( this->sGridNo, this->ubDirection );
}
// Set desination
// Set destination
this->pathing.sFinalDestination = this->sGridNo;
}
@@ -19403,9 +19403,16 @@ BOOLEAN SOLDIERTYPE::AIDoctorFriend( )
if ( gAnimControl[this->usAnimState].ubEndHeight == ANIM_CROUCH )
{
// sevenfm: first change to stationary
this->SoldierGotoStationaryStance();
this->EVENT_InitNewSoldierAnim( START_AID, 0, FALSE );
}
// sevenfm: change target to stationary
if (pSoldier->stats.bLife >= OKLIFE && pSoldier->bBreath >= OKBREATH && !pSoldier->bCollapsed)
pSoldier->SoldierGotoStationaryStance();
// AI medics always perform surgery
this->fDoingSurgery = TRUE;
@@ -19448,6 +19455,9 @@ BOOLEAN SOLDIERTYPE::AIDoctorSelf( )
if ( gAnimControl[this->usAnimState].ubEndHeight == ANIM_CROUCH )
{
// sevenfm: first change to stationary
this->SoldierGotoStationaryStance();
this->EVENT_InitNewSoldierAnim( START_AID, 0, FALSE );
}
+2 -2
View File
@@ -9515,8 +9515,8 @@ UINT32 CalcChanceHTH( SOLDIERTYPE * pAttacker,SOLDIERTYPE *pDefender, INT16 ubAi
else
{
// Changed from DG by CJC to give higher chances of hitting with a stab or punch
// sevenfm: lowered chance for HTH
if (ubMode == HTH_MODE_PUNCH)
// sevenfm: lowered chance for boxers
if (pAttacker->flags.uiStatusFlags & SOLDIER_BOXER)
iChance = 50 + (iAttRating - iDefRating) / 3;
else
iChance = 67 + (iAttRating - iDefRating) / 3;