mirror of
https://github.com/1dot13/source.git
synced 2026-08-05 14:00:23 +02:00
Initialized many variables
Fix for enemy invasions and reinforcements git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@1192 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -869,7 +869,7 @@ INT16 ClosestReachableDisturbance(SOLDIERTYPE *pSoldier, UINT8 ubUnconsciousOK,
|
||||
INT16 *psLastLoc, *pusNoiseGridNo;
|
||||
INT8 *pbLastLevel;
|
||||
INT16 sGridNo=-1;
|
||||
INT8 bLevel, bClosestLevel;
|
||||
INT8 bLevel, bClosestLevel = -1;
|
||||
BOOLEAN fClimbingNecessary, fClosestClimbingNecessary = FALSE;
|
||||
INT32 iPathCost;
|
||||
INT16 sClosestDisturbance = NOWHERE;
|
||||
|
||||
@@ -1181,7 +1181,7 @@ void CalcBestStab(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestStab, BOOLEAN fBladeAt
|
||||
INT32 iAttackValue;
|
||||
INT32 iThreatValue,iHitRate,iBestHitRate,iPercentBetter, iEstDamage;
|
||||
BOOLEAN fSurpriseStab;
|
||||
UINT8 ubRawAPCost,ubMinAPCost,ubMaxPossibleAimTime,ubAimTime,ubBestAimTime;
|
||||
UINT8 ubRawAPCost,ubMinAPCost,ubMaxPossibleAimTime,ubAimTime,ubBestAimTime = 0;
|
||||
UINT8 ubChanceToHit,ubChanceToReallyHit,ubBestChanceToHit = 0;
|
||||
SOLDIERTYPE *pOpponent;
|
||||
UINT16 usTrueMovementMode;
|
||||
@@ -1394,7 +1394,7 @@ void CalcTentacleAttack(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestStab )
|
||||
INT32 iAttackValue;
|
||||
INT32 iThreatValue,iHitRate,iBestHitRate, iEstDamage;
|
||||
BOOLEAN fSurpriseStab;
|
||||
UINT8 ubRawAPCost,ubMinAPCost,ubMaxPossibleAimTime,ubAimTime,ubBestAimTime;
|
||||
UINT8 ubRawAPCost,ubMinAPCost,ubMaxPossibleAimTime,ubAimTime,ubBestAimTime = 0;
|
||||
UINT8 ubChanceToHit,ubChanceToReallyHit,ubBestChanceToHit = 0;
|
||||
SOLDIERTYPE *pOpponent;
|
||||
|
||||
|
||||
@@ -910,7 +910,7 @@ INT8 CreatureDecideActionBlack( SOLDIERTYPE * pSoldier )
|
||||
INT8 bCanAttack;
|
||||
INT8 bSpitIn, bWeaponIn;
|
||||
UINT32 uiChance;
|
||||
ATTACKTYPE BestShot, BestStab, BestAttack, CurrStab;
|
||||
ATTACKTYPE BestShot = {}, BestStab = {}, BestAttack = {}, CurrStab = {};
|
||||
BOOLEAN fRunAway = FALSE;
|
||||
BOOLEAN fChangeLevel;
|
||||
|
||||
|
||||
@@ -1233,13 +1233,17 @@ INT8 DecideActionGreen(SOLDIERTYPE *pSoldier)
|
||||
INT16 sNoiseGridNo = MostImportantNoiseHeard(pSoldier,&iNoiseValue, &fClimb, &fReachable);
|
||||
UINT8 ubNoiseDir;
|
||||
|
||||
if (sNoiseGridNo != NOWHERE)
|
||||
ubNoiseDir = atan8(CenterX(pSoldier->sGridNo),CenterY(pSoldier->sGridNo),CenterX(sNoiseGridNo),CenterY(sNoiseGridNo));
|
||||
|
||||
if ( sNoiseGridNo != NOWHERE && pSoldier->bDirection != ubNoiseDir )
|
||||
pSoldier->usActionData = ubNoiseDir;
|
||||
else
|
||||
if (sNoiseGridNo == NOWHERE ||
|
||||
(ubNoiseDir = atan8(CenterX(pSoldier->sGridNo),CenterY(pSoldier->sGridNo),CenterX(sNoiseGridNo),CenterY(sNoiseGridNo))
|
||||
) == pSoldier->bDirection )
|
||||
|
||||
{
|
||||
pSoldier->usActionData = (UINT16)PreRandom(8);
|
||||
}
|
||||
else
|
||||
{
|
||||
pSoldier->usActionData = ubNoiseDir;
|
||||
}
|
||||
}
|
||||
} while (pSoldier->usActionData == pSoldier->bDirection);
|
||||
|
||||
@@ -1997,7 +2001,8 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier, UINT8 ubUnconsciousOK)
|
||||
}
|
||||
}
|
||||
|
||||
if ( fCivilian && !( pSoldier->ubBodyType == COW || pSoldier->ubBodyType == CRIPPLECIV ) )
|
||||
if ( fCivilian && !( pSoldier->ubBodyType == COW || pSoldier->ubBodyType == CRIPPLECIV ) &&
|
||||
gTacticalStatus.bBoxingState == NOT_BOXING)
|
||||
{
|
||||
if ( FindAIUsableObjClass( pSoldier, IC_WEAPON ) == ITEM_NOT_FOUND )
|
||||
{
|
||||
@@ -3425,9 +3430,9 @@ INT8 DecideActionBlack(SOLDIERTYPE *pSoldier)
|
||||
#endif
|
||||
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("DecideActionBlack: soldier = %d, orders = %d, attitude = %d",pSoldier->ubID,pSoldier->bOrders,pSoldier->bAttitude));
|
||||
|
||||
ATTACKTYPE BestShot,BestThrow,BestStab,BestAttack;
|
||||
ATTACKTYPE BestShot = {},BestThrow = {},BestStab = {},BestAttack = {};
|
||||
BOOLEAN fCivilian = (PTR_CIVILIAN && (pSoldier->ubCivilianGroup == NON_CIV_GROUP || pSoldier->bNeutral || (pSoldier->ubBodyType >= FATCIV && pSoldier->ubBodyType <= CRIPPLECIV) ) );
|
||||
UINT8 ubBestStance, ubStanceCost;
|
||||
UINT8 ubBestStance = 1, ubStanceCost;
|
||||
BOOLEAN fChangeStanceFirst; // before firing
|
||||
BOOLEAN fClimb;
|
||||
UINT8 ubBurstAPs;
|
||||
@@ -4128,6 +4133,8 @@ INT8 DecideActionBlack(SOLDIERTYPE *pSoldier)
|
||||
|
||||
// if soldier has enough APs left to move at least 1 square's worth,
|
||||
// and either he can't attack any more, or his attack did wound someone
|
||||
iCoverPercentBetter = 0;
|
||||
|
||||
if ( (ubCanMove && !SkipCoverCheck && !gfHiddenInterrupt &&
|
||||
((ubBestAttackAction == AI_ACTION_NONE) || pSoldier->bLastAttackHit) &&
|
||||
(pSoldier->bTeam != gbPlayerNum || pSoldier->fAIFlags & AI_RTP_OPTION_CAN_SEEK_COVER) &&
|
||||
@@ -5254,6 +5261,12 @@ void DecideAlertStatus( SOLDIERTYPE *pSoldier )
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (gTacticalStatus.bBoxingState == DISQUALIFIED ||
|
||||
gTacticalStatus.bBoxingState == WON_ROUND ||
|
||||
gTacticalStatus.bBoxingState == LOST_ROUND)
|
||||
{
|
||||
pSoldier->bAlertStatus = STATUS_GREEN;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -535,7 +535,7 @@ INT16 FindBestNearbyCover(SOLDIERTYPE *pSoldier, INT32 morale, INT32 *piPercentB
|
||||
// all 32-bit integers for max. speed
|
||||
UINT32 uiLoop;
|
||||
INT32 iCurrentCoverValue, iCoverValue, iBestCoverValue;
|
||||
INT32 iCurrentScale, iCoverScale, iBestCoverScale;
|
||||
INT32 iCurrentScale = -1, iCoverScale = -1, iBestCoverScale = -1;
|
||||
INT32 iDistFromOrigin, iDistCoverFromOrigin, iThreatCertainty;
|
||||
INT16 sGridNo, sBestCover = NOWHERE;
|
||||
INT32 iPathCost;
|
||||
|
||||
@@ -225,8 +225,8 @@ BOOLEAN CanCharacterBeAutoBandagedByTeammate( SOLDIERTYPE *pSoldier )
|
||||
INT8 FindBestPatient( SOLDIERTYPE * pSoldier, BOOLEAN * pfDoClimb )
|
||||
{
|
||||
UINT8 cnt, cnt2;
|
||||
INT16 bBestPriority = 0, sBestAdjGridNo;
|
||||
INT16 sPatientGridNo, sBestPatientGridNo;
|
||||
INT16 bBestPriority = 0, sBestAdjGridNo = NOWHERE;
|
||||
INT16 sPatientGridNo = NOWHERE, sBestPatientGridNo = NOWHERE;
|
||||
INT16 sShortestPath = 1000, sPathCost, sOtherMedicPathCost;
|
||||
SOLDIERTYPE * pPatient;
|
||||
SOLDIERTYPE * pBestPatient = NULL;
|
||||
|
||||
+4
-3
@@ -2168,7 +2168,7 @@ INT16 NPCConsiderInitiatingConv( SOLDIERTYPE * pNPC, UINT8 * pubDesiredMerc )
|
||||
UINT8 ubNPC, ubMerc, ubDesiredMerc = NOBODY;
|
||||
UINT8 ubTalkDesire, ubHighestTalkDesire = 0;
|
||||
SOLDIERTYPE * pMerc;
|
||||
SOLDIERTYPE * pDesiredMerc;
|
||||
SOLDIERTYPE * pDesiredMerc = NULL;
|
||||
NPCQuoteInfo * pNPCQuoteInfoArray;
|
||||
|
||||
CHECKF( pubDesiredMerc );
|
||||
@@ -2215,16 +2215,17 @@ INT16 NPCConsiderInitiatingConv( SOLDIERTYPE * pNPC, UINT8 * pubDesiredMerc )
|
||||
{
|
||||
ubHighestTalkDesire = ubTalkDesire;
|
||||
ubDesiredMerc = ubMerc;
|
||||
pDesiredMerc = MercPtrs[ubMerc];
|
||||
pDesiredMerc = MercSlots[ubMerc];
|
||||
sDesiredMercDist = PythSpacesAway( sMyGridNo, pDesiredMerc->sGridNo );
|
||||
}
|
||||
else if (ubTalkDesire == ubHighestTalkDesire)
|
||||
{
|
||||
sDist = PythSpacesAway( sMyGridNo, MercPtrs[ubMerc]->sGridNo );
|
||||
sDist = PythSpacesAway( sMyGridNo, MercSlots[ubMerc]->sGridNo );
|
||||
if (sDist < sDesiredMercDist)
|
||||
{
|
||||
// we can say the same thing to this merc, and they're closer!
|
||||
ubDesiredMerc = ubMerc;
|
||||
pDesiredMerc = MercSlots[ubMerc];
|
||||
sDesiredMercDist = sDist;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,8 +46,9 @@
|
||||
RuntimeLibrary="1"
|
||||
RuntimeTypeInfo="false"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
WarningLevel="4"
|
||||
DebugInformationFormat="4"
|
||||
DisableSpecificWarnings="4100"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
|
||||
Reference in New Issue
Block a user