Focus skill: no watched location interrupt bonus if focus is active.

Improved data initialization.
Smart tree top hiding: increased max distance to hide tree in vertical direction.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8950 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Sevenfm
2021-03-05 07:01:51 +00:00
parent b157b47a34
commit d028282b39
6 changed files with 33 additions and 57 deletions
+1 -14
View File
@@ -2913,20 +2913,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile)
}
// sevenfm: initialize other SOLDIERTYPE data
this->ubLastShock=0;
this->ubLastSuppression=0;
this->ubLastAP=0;
this->ubLastMorale=0;
this->ubLastShockFromHit=0;
this->ubLastAPFromHit=0;
this->ubLastMoraleFromHit=0;
this->iLastBulletImpact = 0;
this->iLastArmourProtection = 0;
this->usQuickItemId = 0;
this->ubQuickItemSlot = 0;
this->usGrenadeItem = 0;
this->InitializeExtraData();
return TRUE;
}
+20 -27
View File
@@ -1073,20 +1073,7 @@ SOLDIERTYPE& SOLDIERTYPE::operator=(const OLDSOLDIERTYPE_101& src)
for ( UINT8 i = 0; i < SOLDIER_COUNTER_MAX; ++i ) this->usSkillCounter[i] = 0;
for ( UINT8 i = 0; i < SOLDIER_COOLDOWN_MAX; ++i ) this->usSkillCooldown[i] = 0;
this->ubLastShock = 0;
this->ubLastSuppression = 0;
this->ubLastAP = 0;
this->ubLastMorale = 0;
this->ubLastShockFromHit = 0;
this->ubLastMoraleFromHit = 0;
this->ubLastAPFromHit = 0;
this->iLastBulletImpact = 0;
this->iLastArmourProtection = 0;
this->usQuickItemId = 0;
this->ubQuickItemSlot = 0;
this->usGrenadeItem = 0;
this->InitializeExtraData();
}
return *this;
}
@@ -1150,19 +1137,7 @@ void SOLDIERTYPE::initialize( )
memset( &pathing, 0, sizeof(STRUCT_Pathing) );
// sevenfm:initialize additional data
this->ubLastShock = 0;
this->ubLastSuppression = 0;
this->ubLastAP = 0;
this->ubLastMorale = 0;
this->ubLastShockFromHit = 0;
this->ubLastMoraleFromHit = 0;
this->ubLastAPFromHit = 0;
this->iLastBulletImpact = 0;
this->iLastArmourProtection = 0;
this->usQuickItemId = 0;
this->ubQuickItemSlot = 0;
this->usDisabilityFlagMask = 0;
this->sDragGridNo = NOWHERE;
this->InitializeExtraData();
}
bool SOLDIERTYPE::exists( )
@@ -26013,3 +25988,21 @@ void SOLDIERTYPE::StartRadioAnimation(void)
break;
}
}
void SOLDIERTYPE::InitializeExtraData(void)
{
this->ubLastShock = 0;
this->ubLastSuppression = 0;
this->ubLastAP = 0;
this->ubLastMorale = 0;
this->ubLastShockFromHit = 0;
this->ubLastMoraleFromHit = 0;
this->ubLastAPFromHit = 0;
this->iLastBulletImpact = 0;
this->iLastArmourProtection = 0;
this->usQuickItemId = 0;
this->ubQuickItemSlot = 0;
this->usGrenadeItem = 0;
}
+2
View File
@@ -1878,6 +1878,8 @@ public:
void StartRadioAnimation(void);
void InitializeExtraData(void);
// Flugente: prisoner system
BOOLEAN CanProcessPrisoners();
UINT32 GetSurrenderStrength();
+3 -13
View File
@@ -2118,20 +2118,10 @@ void InitSoldierStruct( SOLDIERTYPE *pSoldier )
pSoldier->usChatPartnerID = NOBODY;
// sevenfm: initialize additional data
pSoldier->ubLastShock = 0;
pSoldier->ubLastSuppression = 0;
pSoldier->ubLastAP = 0;
pSoldier->ubLastMorale = 0;
pSoldier->ubLastShockFromHit = 0;
pSoldier->ubLastMoraleFromHit = 0;
pSoldier->ubLastAPFromHit = 0;
pSoldier->iLastBulletImpact = 0;
pSoldier->iLastArmourProtection = 0;
pSoldier->InitializeExtraData();
pSoldier->usQuickItemId = 0;
pSoldier->ubQuickItemSlot = 0;
pSoldier->usGrenadeItem = 0;
pSoldier->sDragGridNo = NOWHERE;
pSoldier->sFocusGridNo = NOWHERE;
}
+5 -1
View File
@@ -1804,6 +1804,9 @@ INT8 CalcInterruptDuelPts( SOLDIERTYPE * pSoldier, UINT8 ubOpponentID, BOOLEAN f
UINT8 ubDistance;
DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"CalcInterruptDuelPts");
// sevenfm: safety check
Assert(pSoldier);
// extra check to make sure neutral folks never get interrupts
if (pSoldier->aiData.bNeutral)
{
@@ -1846,7 +1849,8 @@ INT8 CalcInterruptDuelPts( SOLDIERTYPE * pSoldier, UINT8 ubOpponentID, BOOLEAN f
}
}
if (fUseWatchSpots)
// sevenfm: no watch spot bonus when focusing
if (fUseWatchSpots && !(pSoldier->usSoldierFlagMask2 & SOLDIER_TRAIT_FOCUS))
{
// if this is a previously noted spot of enemies, give bonus points!
iPoints += GetWatchedLocPoints( pSoldier->ubID, MercPtrs[ ubOpponentID ]->sGridNo, MercPtrs[ ubOpponentID ]->pathing.bLevel );
+2 -2
View File
@@ -4112,7 +4112,7 @@ void UpdateTreeVisibility()
// check trees near cursor position
if (!TileIsOutOfBounds(usMouseSpot) &&
(PythSpacesAway(sSpot, usMouseSpot) <= 2 && AIDirection(sSpot, usMouseSpot) == 0 ||
PythSpacesAway(sSpot, usMouseSpot) <= 5 && AIDirection(sSpot, usMouseSpot) == 7 ||
PythSpacesAway(sSpot, usMouseSpot) <= 6 && AIDirection(sSpot, usMouseSpot) == 7 ||
PythSpacesAway(sSpot, usMouseSpot) <= 2 && AIDirection(sSpot, usMouseSpot) == 6))
{
fHideTree = TRUE;
@@ -4129,7 +4129,7 @@ void UpdateTreeVisibility()
pOpponent->bVisible != -1 &&
!TileIsOutOfBounds(pOpponent->sGridNo) &&
(PythSpacesAway(sSpot, pOpponent->sGridNo) <= 2 && AIDirection(sSpot, pOpponent->sGridNo) == 0 ||
PythSpacesAway(sSpot, pOpponent->sGridNo) <= 5 && AIDirection(sSpot, pOpponent->sGridNo) == 7 ||
PythSpacesAway(sSpot, pOpponent->sGridNo) <= 6 && AIDirection(sSpot, pOpponent->sGridNo) == 7 ||
PythSpacesAway(sSpot, pOpponent->sGridNo) <= 2 && AIDirection(sSpot, pOpponent->sGridNo) == 6))
{
fHideTree = TRUE;