More conversions to SoldierID

This commit is contained in:
Asdow
2025-06-27 19:58:20 +03:00
parent 36a84ffe59
commit 1a8db5d15b
12 changed files with 111 additions and 125 deletions
@@ -39,7 +39,7 @@ namespace AI
if(i.event_type_ == AIInputData::auditive_event) if(i.event_type_ == AIInputData::auditive_event)
return os<<"sound: "<<i.noise_maker_<<" made a sound at "<<i.grid_no_<<", lvl "<<i.level_<<" vol "<<i.volume_<<" type "<<i.type_; return os<<"sound: "<<i.noise_maker_<<" made a sound at "<<i.grid_no_<<", lvl "<<i.level_<<" vol "<<i.volume_<<" type "<<i.type_;
if(i.event_type_ == AIInputData::visual_event) if(i.event_type_ == AIInputData::visual_event)
return os<<"visual: "<<(int)i.opponent_->ubID<<" was seen at "<<i.grid_no_<<", lvl "<<i.level_<<" caller1 "<<i.caller1_<<" caller2 "<<i.caller2_; return os<<"visual: "<<i.opponent_->ubID.i<<" was seen at "<<i.grid_no_<<", lvl "<<i.level_<<" caller1 "<<i.caller1_<<" caller2 "<<i.caller2_;
return os; return os;
} }
+80 -94
View File
@@ -655,7 +655,6 @@ void ShutdownTacticalEngine( )
BOOLEAN InitOverhead( ) BOOLEAN InitOverhead( )
{ {
UINT32 cnt; UINT32 cnt;
UINT16 cnt2;
// Set pointers list // Set pointers list
for( cnt = 0; cnt < TOTAL_SOLDIERS; cnt++ ) for( cnt = 0; cnt < TOTAL_SOLDIERS; cnt++ )
@@ -751,9 +750,9 @@ BOOLEAN InitOverhead( )
gTacticalStatus.Team[ cnt ].bAwareOfOpposition = FALSE; gTacticalStatus.Team[ cnt ].bAwareOfOpposition = FALSE;
// set team values in soldier structures for all who are on this team // set team values in soldier structures for all who are on this team
for ( cnt2 = gTacticalStatus.Team[ cnt ].bFirstID; cnt2 <= gTacticalStatus.Team[ cnt ].bLastID; cnt2++ ) for (SoldierID cnt2 = gTacticalStatus.Team[ cnt ].bFirstID; cnt2 <= gTacticalStatus.Team[ cnt ].bLastID; ++cnt2 )
{ {
MercPtrs[ cnt2 ]->bTeam = (INT8) cnt; cnt2->bTeam = (INT8) cnt;
} }
} }
@@ -3962,7 +3961,7 @@ void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldierOld )
#ifdef JA2UB #ifdef JA2UB
if ( pSoldierOld->ubProfile == MORRIS_UB ) if ( pSoldierOld->ubProfile == MORRIS_UB )
{ {
INT16 bSoldierID; SoldierID bSoldierID;
SOLDIERTYPE* pOther = FindSoldierByProfileID( MORRIS_UB, FALSE ); SOLDIERTYPE* pOther = FindSoldierByProfileID( MORRIS_UB, FALSE );
if ( pOther ) if ( pOther )
{ {
@@ -3975,10 +3974,10 @@ void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldierOld )
bSoldierID = RandomSoldierIdFromNewMercsOnPlayerTeam(); bSoldierID = RandomSoldierIdFromNewMercsOnPlayerTeam();
//if there is any //if there is any
if( bSoldierID != -1 ) if( bSoldierID != NOBODY )
{ {
//say the MORRIS dead quote //say the MORRIS dead quote
TacticalCharacterDialogue( &Menptr[ bSoldierID ], QUOTE_LEARNED_TO_HATE_ON_TEAM_WONT_RENEW ); TacticalCharacterDialogue( bSoldierID, QUOTE_LEARNED_TO_HATE_ON_TEAM_WONT_RENEW );
} }
} }
// Ja25no queen // Ja25no queen
@@ -6860,10 +6859,8 @@ BOOLEAN WeSawSomeoneThisTurn( )
void SayBattleSoundFromAnyBodyInSector( INT32 iBattleSnd ) void SayBattleSoundFromAnyBodyInSector( INT32 iBattleSnd )
{ {
// WDS - make number of mercenaries, etc. be configurable // WDS - make number of mercenaries, etc. be configurable
// UINT8 ubMercsInSector[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = { 0 }; SoldierID ubMercsInSector[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = {};
std::vector<UINT16> ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0);
UINT16 ubNumMercs = 0; UINT16 ubNumMercs = 0;
UINT16 ubChosenMerc;
SOLDIERTYPE *pTeamSoldier; SOLDIERTYPE *pTeamSoldier;
// Loop through all our guys and randomly say one from someone in our sector // Loop through all our guys and randomly say one from someone in our sector
@@ -6878,7 +6875,7 @@ void SayBattleSoundFromAnyBodyInSector( INT32 iBattleSnd )
// Add guy if he's a candidate... // Add guy if he's a candidate...
if ( OK_INSECTOR_MERC( pTeamSoldier ) && !AM_AN_EPC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !(AM_A_ROBOT( pTeamSoldier )) && !pTeamSoldier->flags.fMercAsleep ) if ( OK_INSECTOR_MERC( pTeamSoldier ) && !AM_AN_EPC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !(AM_A_ROBOT( pTeamSoldier )) && !pTeamSoldier->flags.fMercAsleep )
{ {
ubMercsInSector[ ubNumMercs ] = (UINT16)cnt; ubMercsInSector[ ubNumMercs ] = cnt;
ubNumMercs++; ubNumMercs++;
} }
} }
@@ -6886,9 +6883,9 @@ void SayBattleSoundFromAnyBodyInSector( INT32 iBattleSnd )
// If we are > 0 // If we are > 0
if ( ubNumMercs > 0 ) if ( ubNumMercs > 0 )
{ {
ubChosenMerc = ubMercsInSector[ (UINT16)Random( ubNumMercs ) ]; SoldierID ubChosenMerc = ubMercsInSector[ (UINT16)Random( ubNumMercs ) ];
MercPtrs[ ubChosenMerc ]->DoMercBattleSound( (UINT8)iBattleSnd ); ubChosenMerc->DoMercBattleSound( (UINT8)iBattleSnd );
} }
} }
@@ -7945,10 +7942,9 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated )
void CycleThroughKnownEnemies( BOOLEAN backward ) void CycleThroughKnownEnemies( BOOLEAN backward )
{ {
// static to indicate last position we were at: // static to indicate last position we were at:
SOLDIERTYPE *pSoldier; static BOOLEAN fFirstTime = TRUE;
static BOOLEAN fFirstTime = TRUE; static SoldierID usStartToLook;
static UINT16 usStartToLook; SoldierID enemy;
UINT32 cnt;
BOOLEAN fEnemyBehindStartLook = FALSE; BOOLEAN fEnemyBehindStartLook = FALSE;
BOOLEAN fEnemiesFound = FALSE; BOOLEAN fEnemiesFound = FALSE;
@@ -7959,30 +7955,31 @@ void CycleThroughKnownEnemies( BOOLEAN backward )
if(backward) if(backward)
usStartToLook = TOTAL_SOLDIERS; usStartToLook = TOTAL_SOLDIERS;
else else
usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID; usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
} }
if(backward) if (backward)
for ( cnt = TOTAL_SOLDIERS-1 , pSoldier = MercPtrs[ cnt ]; cnt >= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt--, pSoldier-- ) {
for ( enemy = TOTAL_SOLDIERS-1; enemy >= gTacticalStatus.Team[ gbPlayerNum ].bLastID; --enemy )
{ {
// try to find first active, OK enemy // try to find first active, OK enemy
if ( pSoldier->bActive && pSoldier->bInSector && !pSoldier->aiData.bNeutral && (pSoldier->bSide != gbPlayerNum) && (pSoldier->stats.bLife > 0) ) if ( enemy->bActive && enemy->bInSector && !enemy->aiData.bNeutral && (enemy->bSide != gbPlayerNum) && (enemy->stats.bLife > 0) )
{ {
if ( pSoldier->bVisible != -1 ) if ( enemy->bVisible != -1 )
{ {
fEnemiesFound = TRUE; fEnemiesFound = TRUE;
// If we are < ok start, this is the one! // If we are < ok start, this is the one!
if ( cnt < usStartToLook ) if ( enemy < usStartToLook )
{ {
usStartToLook = (UINT16)cnt; usStartToLook = enemy;
// Locate to! // Locate to!
//LocateSoldier( pSoldier->ubID, 1 ); //LocateSoldier( pSoldier->ubID, 1 );
//ATE: Change to Slide To... //ATE: Change to Slide To...
SlideTo( pSoldier->ubID, SETANDREMOVEPREVIOUSLOCATOR ); SlideTo( enemy, SETANDREMOVEPREVIOUSLOCATOR );
return; return;
} }
else else
@@ -7992,31 +7989,34 @@ void CycleThroughKnownEnemies( BOOLEAN backward )
} }
} }
} }
}
else else
for ( cnt = gTacticalStatus.Team[ gbPlayerNum ].bLastID, pSoldier = MercPtrs[ cnt ]; cnt < TOTAL_SOLDIERS; cnt++, pSoldier++ )
{ {
// try to find first active, OK enemy for ( enemy = gTacticalStatus.Team[gbPlayerNum].bLastID; enemy < TOTAL_SOLDIERS; ++enemy )
if ( pSoldier->bActive && pSoldier->bInSector && !pSoldier->aiData.bNeutral && (pSoldier->bSide != gbPlayerNum) && (pSoldier->stats.bLife > 0) )
{ {
if ( pSoldier->bVisible != -1 ) // try to find first active, OK enemy
if ( enemy->bActive && enemy->bInSector && !enemy->aiData.bNeutral && (enemy->bSide != gbPlayerNum) && (enemy->stats.bLife > 0) )
{ {
fEnemiesFound = TRUE; if (enemy->bVisible != -1)
// If we are > ok start, this is the one!
if ( cnt > usStartToLook )
{ {
usStartToLook = (UINT16)cnt; fEnemiesFound = TRUE;
// Locate to! // If we are > ok start, this is the one!
//LocateSoldier( pSoldier->ubID, 1 ); if (enemy > usStartToLook)
{
usStartToLook = enemy;
//ATE: Change to Slide To... // Locate to!
SlideTo( pSoldier->ubID, SETANDREMOVEPREVIOUSLOCATOR ); //LocateSoldier( pSoldier->ubID, 1 );
return;
} //ATE: Change to Slide To...
else SlideTo(enemy, SETANDREMOVEPREVIOUSLOCATOR);
{ return;
fEnemyBehindStartLook = TRUE; }
else
{
fEnemyBehindStartLook = TRUE;
}
} }
} }
} }
@@ -8038,39 +8038,34 @@ void CycleThroughKnownEnemies( BOOLEAN backward )
} }
else else
{ {
usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID; usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
CycleThroughKnownEnemies( );
CycleThroughKnownEnemies( ); }
}
} }
} }
void CycleVisibleEnemies( SOLDIERTYPE *pSrcSoldier ) void CycleVisibleEnemies( SOLDIERTYPE *pSrcSoldier )
{ {
// static to indicate last position we were at: SoldierID enemy;
SOLDIERTYPE *pSoldier; SoldierID usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
UINT16 usStartToLook;
UINT32 cnt;
usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID; for ( enemy = gTacticalStatus.Team[ gbPlayerNum ].bLastID; enemy < TOTAL_SOLDIERS; ++enemy )
for ( cnt = gTacticalStatus.Team[ gbPlayerNum ].bLastID, pSoldier = MercPtrs[ cnt ]; cnt < TOTAL_SOLDIERS; cnt++, pSoldier++ )
{ {
// try to find first active, OK enemy // try to find first active, OK enemy
if ( pSoldier->bActive && pSoldier->bInSector && !pSoldier->aiData.bNeutral && (pSoldier->bSide != gbPlayerNum) && (pSoldier->stats.bLife > 0) ) if ( enemy->bActive && enemy->bInSector && !enemy->aiData.bNeutral && (enemy->bSide != gbPlayerNum) && (enemy->stats.bLife > 0) )
{ {
if ( pSrcSoldier->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY ) if ( pSrcSoldier->aiData.bOppList[ enemy ] == SEEN_CURRENTLY )
{ {
// If we are > ok start, this is the one! // If we are > ok start, this is the one!
if ( cnt > pSrcSoldier->ubLastEnemyCycledID ) if ( enemy > pSrcSoldier->ubLastEnemyCycledID )
{ {
pSrcSoldier->ubLastEnemyCycledID = (UINT16)cnt; pSrcSoldier->ubLastEnemyCycledID = enemy;
//ATE: Change to Slide To... //ATE: Change to Slide To...
SlideTo( pSoldier->ubID, SETANDREMOVEPREVIOUSLOCATOR ); SlideTo( enemy, SETANDREMOVEPREVIOUSLOCATOR );
ChangeInterfaceLevel( pSoldier->pathing.bLevel ); ChangeInterfaceLevel( enemy->pathing.bLevel );
return; return;
} }
} }
@@ -8082,58 +8077,51 @@ void CycleVisibleEnemies( SOLDIERTYPE *pSrcSoldier )
usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID; usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
for ( cnt = gTacticalStatus.Team[ gbPlayerNum ].bLastID, pSoldier = MercPtrs[ cnt ]; cnt < TOTAL_SOLDIERS; cnt++, pSoldier++ ) for ( enemy = gTacticalStatus.Team[ gbPlayerNum ].bLastID; enemy < TOTAL_SOLDIERS; ++enemy )
{ {
// try to find first active, OK enemy // try to find first active, OK enemy
if ( pSoldier->bActive && pSoldier->bInSector && !pSoldier->aiData.bNeutral && (pSoldier->bSide != gbPlayerNum) && (pSoldier->stats.bLife > 0) ) if (enemy->bActive && enemy->bInSector && !enemy->aiData.bNeutral && (enemy->bSide != gbPlayerNum) && (enemy->stats.bLife > 0) )
{ {
if ( pSrcSoldier->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY ) if ( pSrcSoldier->aiData.bOppList[ enemy ] == SEEN_CURRENTLY )
{ {
// If we are > ok start, this is the one! // If we are > ok start, this is the one!
if ( cnt > pSrcSoldier->ubLastEnemyCycledID ) if ( enemy > pSrcSoldier->ubLastEnemyCycledID )
{ {
pSrcSoldier->ubLastEnemyCycledID = (UINT16)cnt; pSrcSoldier->ubLastEnemyCycledID = enemy;
//ATE: Change to Slide To... //ATE: Change to Slide To...
SlideTo( pSoldier->ubID, SETANDREMOVEPREVIOUSLOCATOR ); SlideTo(enemy, SETANDREMOVEPREVIOUSLOCATOR );
ChangeInterfaceLevel( pSoldier->pathing.bLevel ); ChangeInterfaceLevel( enemy->pathing.bLevel );
return; return;
} }
} }
} }
} }
} }
void CycleVisibleEnemiesBackward( SOLDIERTYPE *pSrcSoldier ) void CycleVisibleEnemiesBackward( SOLDIERTYPE *pSrcSoldier )
{ {
// static to indicate last position we were at: SoldierID enemy;
SOLDIERTYPE *pSoldier; SoldierID usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
UINT16 usStartToLook;
UINT32 cnt;
usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID; for ( enemy = TOTAL_SOLDIERS-1; enemy >= gTacticalStatus.Team[ gbPlayerNum ].bLastID ; --enemy )
// for ( cnt = gTacticalStatus.Team[ gbPlayerNum ].bLastID, pSoldier = MercPtrs[ cnt ]; cnt < TOTAL_SOLDIERS; cnt++, pSoldier++ )
for ( cnt = TOTAL_SOLDIERS-1, pSoldier = MercPtrs[ cnt ]; cnt >= gTacticalStatus.Team[ gbPlayerNum ].bLastID ; cnt--, pSoldier-- )
{ {
// try to find first active, OK enemy // try to find first active, OK enemy
if ( pSoldier->bActive && pSoldier->bInSector && !pSoldier->aiData.bNeutral && (pSoldier->bSide != gbPlayerNum) && (pSoldier->stats.bLife > 0) ) if ( enemy->bActive && enemy->bInSector && !enemy->aiData.bNeutral && (enemy->bSide != gbPlayerNum) && (enemy->stats.bLife > 0) )
{ {
if ( pSrcSoldier->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY ) if ( pSrcSoldier->aiData.bOppList[ enemy ] == SEEN_CURRENTLY )
{ {
// If we are > ok start, this is the one! // If we are > ok start, this is the one!
if ( cnt < pSrcSoldier->ubLastEnemyCycledID ) if ( enemy < pSrcSoldier->ubLastEnemyCycledID )
{ {
pSrcSoldier->ubLastEnemyCycledID = (UINT16)cnt; pSrcSoldier->ubLastEnemyCycledID = enemy;
//ATE: Change to Slide To... //ATE: Change to Slide To...
SlideTo( pSoldier->ubID, SETANDREMOVEPREVIOUSLOCATOR ); SlideTo( enemy, SETANDREMOVEPREVIOUSLOCATOR );
ChangeInterfaceLevel( pSoldier->pathing.bLevel ); ChangeInterfaceLevel( enemy->pathing.bLevel );
return; return;
} }
} }
@@ -8145,24 +8133,23 @@ void CycleVisibleEnemiesBackward( SOLDIERTYPE *pSrcSoldier )
usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID; usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
//for ( cnt = gTacticalStatus.Team[ gbPlayerNum ].bLastID, pSoldier = MercPtrs[ cnt ]; cnt >= 0; cnt--, pSoldier-- ) for ( enemy = TOTAL_SOLDIERS-1; enemy >= gTacticalStatus.Team[ gbPlayerNum ].bLastID; --enemy )
for ( cnt = TOTAL_SOLDIERS-1, pSoldier = MercPtrs[ cnt ]; cnt >= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt--, pSoldier-- )
{ {
// try to find first active, OK enemy // try to find first active, OK enemy
if ( pSoldier->bActive && pSoldier->bInSector && !pSoldier->aiData.bNeutral && (pSoldier->bSide != gbPlayerNum) && (pSoldier->stats.bLife > 0) ) if ( enemy->bActive && enemy->bInSector && !enemy->aiData.bNeutral && (enemy->bSide != gbPlayerNum) && (enemy->stats.bLife > 0) )
{ {
if ( pSrcSoldier->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY ) if ( pSrcSoldier->aiData.bOppList[ enemy ] == SEEN_CURRENTLY )
{ {
// If we are > ok start, this is the one! // If we are > ok start, this is the one!
if ( cnt < pSrcSoldier->ubLastEnemyCycledID ) if ( enemy < pSrcSoldier->ubLastEnemyCycledID )
{ {
pSrcSoldier->ubLastEnemyCycledID = (UINT16)cnt; pSrcSoldier->ubLastEnemyCycledID = enemy;
//ATE: Change to Slide To... //ATE: Change to Slide To...
SlideTo( pSoldier->ubID, SETANDREMOVEPREVIOUSLOCATOR ); SlideTo( enemy, SETANDREMOVEPREVIOUSLOCATOR );
ChangeInterfaceLevel( pSoldier->pathing.bLevel ); ChangeInterfaceLevel( enemy->pathing.bLevel );
return; return;
} }
} }
@@ -10492,8 +10479,7 @@ BOOLEAN HostileCreaturesPresent()
void HandleCreatureTenseQuote( ) void HandleCreatureTenseQuote( )
{ {
// WDS - make number of mercenaries, etc. be configurable // WDS - make number of mercenaries, etc. be configurable
// UINT8 ubMercsInSector[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = { 0 }; SoldierID ubMercsInSector[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = {};
std::vector<UINT16> ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0);
UINT16 ubNumMercs = 0; UINT16 ubNumMercs = 0;
UINT16 ubChosenMerc; UINT16 ubChosenMerc;
SOLDIERTYPE *pTeamSoldier; SOLDIERTYPE *pTeamSoldier;
@@ -10523,7 +10509,7 @@ void HandleCreatureTenseQuote( )
// Add guy if he's a candidate... // Add guy if he's a candidate...
if ( OK_INSECTOR_MERC( pTeamSoldier ) && !AM_AN_EPC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !(AM_A_ROBOT( pTeamSoldier )) && !pTeamSoldier->flags.fMercAsleep ) if ( OK_INSECTOR_MERC( pTeamSoldier ) && !AM_AN_EPC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !(AM_A_ROBOT( pTeamSoldier )) && !pTeamSoldier->flags.fMercAsleep )
{ {
ubMercsInSector[ ubNumMercs ] = (UINT16)cnt; ubMercsInSector[ ubNumMercs ] = cnt;
ubNumMercs++; ubNumMercs++;
} }
} }
@@ -10533,7 +10519,7 @@ void HandleCreatureTenseQuote( )
{ {
ubChosenMerc = (UINT16)Random( ubNumMercs ); ubChosenMerc = (UINT16)Random( ubNumMercs );
DoCreatureTensionQuote ( MercPtrs[ ubMercsInSector[ ubChosenMerc ] ] ); DoCreatureTensionQuote ( ubMercsInSector[ ubChosenMerc ] );
} }
// Adjust delay.... // Adjust delay....
+1 -1
View File
@@ -69,7 +69,7 @@ struct TacticalStatusType
INT8 fPanicFlags; INT8 fPanicFlags;
INT32 sPanicTriggerGridNoUnused; INT32 sPanicTriggerGridNoUnused;
INT16 sHandGrid; INT16 sHandGrid;
UINT16 ubSpottersCalledForBy; SoldierID ubSpottersCalledForBy;
SoldierID ubTheChosenOne; SoldierID ubTheChosenOne;
UINT32 uiTimeOfLastInput; UINT32 uiTimeOfLastInput;
UINT32 uiTimeSinceDemoOn; UINT32 uiTimeSinceDemoOn;
+1 -1
View File
@@ -992,7 +992,7 @@ SOLDIERTYPE& SOLDIERTYPE::operator=(const OLDSOLDIERTYPE_101& src)
this->bRegenBoostersUsedToday = src.bRegenBoostersUsedToday; this->bRegenBoostersUsedToday = src.bRegenBoostersUsedToday;
this->bNumPelletsHitBy = src.bNumPelletsHitBy; this->bNumPelletsHitBy = src.bNumPelletsHitBy;
this->sSkillCheckGridNo = src.sSkillCheckGridNo; this->sSkillCheckGridNo = src.sSkillCheckGridNo;
this->ubLastEnemyCycledID = src.ubLastEnemyCycledID; this->ubLastEnemyCycledID = static_cast<UINT16>( src.ubLastEnemyCycledID );
this->ubPrevSectorID = src.ubPrevSectorID; this->ubPrevSectorID = src.ubPrevSectorID;
this->ubNumTilesMovesSinceLastForget = src.ubNumTilesMovesSinceLastForget; this->ubNumTilesMovesSinceLastForget = src.ubNumTilesMovesSinceLastForget;
+1 -1
View File
@@ -1453,7 +1453,7 @@ public:
INT8 bRegenBoostersUsedToday; // Flugente: not used anymore! INT8 bRegenBoostersUsedToday; // Flugente: not used anymore!
INT8 bNumPelletsHitBy; INT8 bNumPelletsHitBy;
INT32 sSkillCheckGridNo; INT32 sSkillCheckGridNo;
UINT16 ubLastEnemyCycledID; SoldierID ubLastEnemyCycledID;
UINT8 ubPrevSectorID; UINT8 ubPrevSectorID;
UINT8 ubNumTilesMovesSinceLastForget; UINT8 ubNumTilesMovesSinceLastForget;
+2 -2
View File
@@ -107,7 +107,7 @@ BOOLEAN InterruptsAllowed = TRUE;
BOOLEAN gfHiddenInterrupt = FALSE; BOOLEAN gfHiddenInterrupt = FALSE;
SoldierID gubLastInterruptedGuy = NOBODY; SoldierID gubLastInterruptedGuy = NOBODY;
extern UINT16 gsWhoThrewRock; extern SoldierID gsWhoThrewRock;
extern UINT8 gubSightFlags; extern UINT8 gubSightFlags;
typedef struct typedef struct
@@ -115,7 +115,7 @@ typedef struct
UINT16 ubOutOfTurnPersons; UINT16 ubOutOfTurnPersons;
SoldierID InterruptOnlyGuynum; SoldierID InterruptOnlyGuynum;
INT16 sWhoThrewRock; SoldierID sWhoThrewRock;
BOOLEAN InterruptsAllowed; BOOLEAN InterruptsAllowed;
BOOLEAN fHiddenInterrupt; BOOLEAN fHiddenInterrupt;
SoldierID ubLastInterruptedGuy; SoldierID ubLastInterruptedGuy;
+8 -8
View File
@@ -248,7 +248,7 @@ INT8 gbSmellStrength[3] =
}; };
UINT16 gsWhoThrewRock = NOBODY; SoldierID gsWhoThrewRock = NOBODY;
// % values of sighting distance at various light levels // % values of sighting distance at various light levels
//DBrot: use gGameExternalOptions.ubBrightnessVisionMod instead //DBrot: use gGameExternalOptions.ubBrightnessVisionMod instead
@@ -1056,7 +1056,7 @@ void OurTeamRadiosRandomlyAbout(UINT16 ubAbout)
INT16 TeamNoLongerSeesMan( UINT8 ubTeam, SOLDIERTYPE *pOpponent, UINT16 ubExcludeID, INT8 bIteration ) INT16 TeamNoLongerSeesMan( UINT8 ubTeam, SOLDIERTYPE *pOpponent, SoldierID ubExcludeID, INT8 bIteration )
{ {
SOLDIERTYPE *pMate; SOLDIERTYPE *pMate;
SoldierID bLoop = gTacticalStatus.Team[ubTeam].bFirstID; SoldierID bLoop = gTacticalStatus.Team[ubTeam].bFirstID;
@@ -1833,7 +1833,7 @@ void HandleManNoLongerSeen( SOLDIERTYPE * pSoldier, SOLDIERTYPE * pOpponent, INT
{ {
// check if I was the only one who was seeing this guy (exlude ourselves) // check if I was the only one who was seeing this guy (exlude ourselves)
// THIS MUST HAPPEN EVEN FOR ENEMIES, TO MAKE THEIR PUBLIC opplist DECAY! // THIS MUST HAPPEN EVEN FOR ENEMIES, TO MAKE THEIR PUBLIC opplist DECAY!
if (TeamNoLongerSeesMan(pSoldier->bTeam,pOpponent,pSoldier->ubID, 0 )) if (TeamNoLongerSeesMan(pSoldier->bTeam, pOpponent, pSoldier->ubID, 0))
{ {
#ifdef TESTOPPLIST #ifdef TESTOPPLIST
DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, String( "TeamNoLongerSeesMan: ID %d(%S) to ID %d",pSoldier->ubID,pSoldier->name,pOpponent->ubID) ); DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, String( "TeamNoLongerSeesMan: ID %d(%S) to ID %d",pSoldier->ubID,pSoldier->name,pOpponent->ubID) );
@@ -5720,7 +5720,7 @@ void ProcessNoise( SoldierID ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubT
UINT8 ubLoudestEffVolume, ubEffVolume; UINT8 ubLoudestEffVolume, ubEffVolume;
// UINT8 ubPlayVolume; // UINT8 ubPlayVolume;
UINT8 ubSourceTerrType; UINT8 ubSourceTerrType;
UINT16 ubSource; SoldierID ubSource;
INT8 bTellPlayer = FALSE, bHeard, bSeen; INT8 bTellPlayer = FALSE, bHeard, bSeen;
SoldierID ubHeardLoudestBy = NOBODY; SoldierID ubHeardLoudestBy = NOBODY;
UINT8 ubNoiseDir = 0xff, ubLoudestNoiseDir = 0xff; UINT8 ubNoiseDir = 0xff, ubLoudestNoiseDir = 0xff;
@@ -7718,9 +7718,9 @@ void SetWatchedLocAsUsed( UINT16 ubID, INT32 sGridNo, INT8 bLevel )
BOOLEAN WatchedLocLocationIsEmpty( INT32 sGridNo, INT8 bLevel, INT8 bTeam ) BOOLEAN WatchedLocLocationIsEmpty( INT32 sGridNo, INT8 bLevel, INT8 bTeam )
{ {
// look to see if there is anyone near the watched loc who is not on this team // look to see if there is anyone near the watched loc who is not on this team
UINT16 ubID; SoldierID ubID;
INT32 sTempGridNo; INT32 sTempGridNo;
INT16 sX, sY; INT16 sX, sY;
for ( sY = -WATCHED_LOC_RADIUS; sY <= WATCHED_LOC_RADIUS; sY++ ) for ( sY = -WATCHED_LOC_RADIUS; sY <= WATCHED_LOC_RADIUS; sY++ )
{ {
@@ -7732,7 +7732,7 @@ BOOLEAN WatchedLocLocationIsEmpty( INT32 sGridNo, INT8 bLevel, INT8 bTeam )
continue; continue;
} }
ubID = WhoIsThere2( sTempGridNo, bLevel ); ubID = WhoIsThere2( sTempGridNo, bLevel );
if ( ubID != NOBODY && MercPtrs[ ubID ]->bTeam != bTeam ) if ( ubID != NOBODY && ubID->bTeam != bTeam )
{ {
return( FALSE ); return( FALSE );
} }
+6 -5
View File
@@ -830,7 +830,8 @@ INT16 RandomFriendWithin(SOLDIERTYPE *pSoldier)
{ {
UINT32 uiLoop; UINT32 uiLoop;
UINT16 usMaxDist; UINT16 usMaxDist;
UINT16 ubFriendCount, ubFriendIDs[MAXMERCS], ubFriendID; UINT16 ubFriendCount;
SoldierID ubFriendIDs[MAXMERCS], ubFriendID;
UINT8 ubDirection; UINT8 ubDirection;
UINT8 ubDirsLeft; UINT8 ubDirsLeft;
BOOLEAN fDirChecked[8]; BOOLEAN fDirChecked[8];
@@ -5929,14 +5930,14 @@ INT32 RandomizeOpponentLocation(INT32 sSpot, SOLDIERTYPE *pOpponent, INT16 sMaxD
} }
// first call PrepareThreatlist to make threat list // first call PrepareThreatlist to make threat list
UINT16 ClosestKnownThreatID(SOLDIERTYPE *pSoldier, UINT32 uiThreatCnt) SoldierID ClosestKnownThreatID(SOLDIERTYPE *pSoldier, UINT32 uiThreatCnt)
{ {
CHECKF(pSoldier); CHECKF(pSoldier);
UINT32 uiLoop; UINT32 uiLoop;
INT32 sClosestOpponent = NOWHERE; INT32 sClosestOpponent = NOWHERE;
INT32 iRange, iClosestRange; INT32 iRange, iClosestRange;
UINT16 ubClosestOpponentID = NOBODY; SoldierID ubClosestOpponentID = NOBODY;
// use global defined threat list // use global defined threat list
for (uiLoop = 0; uiLoop < uiThreatCnt; uiLoop++) for (uiLoop = 0; uiLoop < uiThreatCnt; uiLoop++)
@@ -5959,14 +5960,14 @@ UINT16 ClosestKnownThreatID(SOLDIERTYPE *pSoldier, UINT32 uiThreatCnt)
} }
// first call PrepareThreatlist to make threat list // first call PrepareThreatlist to make threat list
UINT16 ClosestSeenThreatID(SOLDIERTYPE *pSoldier, UINT32 uiThreatCnt, UINT8 ubMax) SoldierID ClosestSeenThreatID(SOLDIERTYPE *pSoldier, UINT32 uiThreatCnt, UINT8 ubMax)
{ {
CHECKF(pSoldier); CHECKF(pSoldier);
UINT32 uiLoop; UINT32 uiLoop;
INT32 sClosestOpponent = NOWHERE; INT32 sClosestOpponent = NOWHERE;
INT32 iRange, iClosestRange; INT32 iRange, iClosestRange;
UINT16 ubClosestOpponentID = NOBODY; SoldierID ubClosestOpponentID = NOBODY;
// use global defined threat list // use global defined threat list
for (uiLoop = 0; uiLoop < uiThreatCnt; uiLoop++) for (uiLoop = 0; uiLoop < uiThreatCnt; uiLoop++)
+4 -4
View File
@@ -2909,7 +2909,7 @@ BOOLEAN PCDoesFirstAidOnNPC( UINT8 ubNPC )
void TriggerClosestMercWhoCanSeeNPC( UINT8 ubNPC, NPCQuoteInfo *pQuotePtr ) void TriggerClosestMercWhoCanSeeNPC( UINT8 ubNPC, NPCQuoteInfo *pQuotePtr )
{ {
// Loop through all mercs, gather closest mercs who can see and trigger one! // Loop through all mercs, gather closest mercs who can see and trigger one!
UINT16 ubMercsInSector[CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS] = { 0 }; //std::vector would probably be better here SoldierID ubMercsInSector[CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS] = {}; //std::vector would probably be better here
UINT16 ubNumMercs = 0; UINT16 ubNumMercs = 0;
UINT16 ubChosenMerc; UINT16 ubChosenMerc;
SOLDIERTYPE *pTeamSoldier, *pSoldier; SOLDIERTYPE *pTeamSoldier, *pSoldier;
@@ -2929,7 +2929,7 @@ void TriggerClosestMercWhoCanSeeNPC( UINT8 ubNPC, NPCQuoteInfo *pQuotePtr )
// Add guy if he's a candidate... // Add guy if he's a candidate...
if ( OK_INSECTOR_MERC( pTeamSoldier ) && pTeamSoldier->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY ) if ( OK_INSECTOR_MERC( pTeamSoldier ) && pTeamSoldier->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY )
{ {
ubMercsInSector[ ubNumMercs ] = (UINT16)cnt; ubMercsInSector[ ubNumMercs ] = cnt;
ubNumMercs++; ubNumMercs++;
} }
} }
@@ -2945,11 +2945,11 @@ void TriggerClosestMercWhoCanSeeNPC( UINT8 ubNPC, NPCQuoteInfo *pQuotePtr )
// If 64, do something special // If 64, do something special
if ( pQuotePtr->ubTriggerNPCRec == QUOTE_RESPONSE_TO_MIGUEL_SLASH_QUOTE_MERC_OR_RPC_LETGO ) if ( pQuotePtr->ubTriggerNPCRec == QUOTE_RESPONSE_TO_MIGUEL_SLASH_QUOTE_MERC_OR_RPC_LETGO )
{ {
TacticalCharacterDialogueWithSpecialEvent( MercPtrs[ ubMercsInSector[ ubChosenMerc ] ], pQuotePtr->ubTriggerNPCRec, DIALOGUE_SPECIAL_EVENT_PCTRIGGERNPC, 57, 6 ); TacticalCharacterDialogueWithSpecialEvent( ubMercsInSector[ ubChosenMerc ], pQuotePtr->ubTriggerNPCRec, DIALOGUE_SPECIAL_EVENT_PCTRIGGERNPC, 57, 6 );
} }
else else
{ {
TacticalCharacterDialogue( MercPtrs[ ubMercsInSector[ ubChosenMerc ] ], pQuotePtr->ubTriggerNPCRec ); TacticalCharacterDialogue( ubMercsInSector[ ubChosenMerc ], pQuotePtr->ubTriggerNPCRec );
} }
} }
+2 -2
View File
@@ -315,8 +315,8 @@ BOOLEAN AICheckIsFlanking( SOLDIERTYPE *pSoldier );
INT8 CalcMoraleNew(SOLDIERTYPE *pSoldier); INT8 CalcMoraleNew(SOLDIERTYPE *pSoldier);
UINT32 PrepareThreatlist(SOLDIERTYPE *pSoldier); UINT32 PrepareThreatlist(SOLDIERTYPE *pSoldier);
UINT16 ClosestSeenThreatID(SOLDIERTYPE *pSoldier, UINT32 uiThreatCnt, UINT8 ubMax = SEEN_CURRENTLY); // first call PrepareThreatlist to make threat list SoldierID ClosestSeenThreatID(SOLDIERTYPE *pSoldier, UINT32 uiThreatCnt, UINT8 ubMax = SEEN_CURRENTLY); // first call PrepareThreatlist to make threat list
UINT16 ClosestKnownThreatID(SOLDIERTYPE *pSoldier, UINT32 uiThreatCnt); // first call PrepareThreatlist to make threat list SoldierID ClosestKnownThreatID(SOLDIERTYPE *pSoldier, UINT32 uiThreatCnt); // first call PrepareThreatlist to make threat list
BOOLEAN ProneSightCoverAtSpot(SOLDIERTYPE *pSoldier, INT32 sSpot, BOOLEAN fUnlimited); BOOLEAN ProneSightCoverAtSpot(SOLDIERTYPE *pSoldier, INT32 sSpot, BOOLEAN fUnlimited);
BOOLEAN SightCoverAtSpot(SOLDIERTYPE *pSoldier, INT32 sSpot, BOOLEAN fUnlimited); BOOLEAN SightCoverAtSpot(SOLDIERTYPE *pSoldier, INT32 sSpot, BOOLEAN fUnlimited);
+1 -1
View File
@@ -204,7 +204,7 @@ INT32 NewSmokeEffect( INT32 sGridNo, UINT16 usItem, INT8 bLevel, SoldierID ubOwn
// OJW - 20091027 - Syncronising smoke effect start for multiplayer // OJW - 20091027 - Syncronising smoke effect start for multiplayer
if (is_networked && is_client) if (is_networked && is_client)
{ {
SOLDIERTYPE* pSoldier = MercPtrs[ubOwner]; SOLDIERTYPE* pSoldier = ubOwner;
if (pSoldier != NULL) if (pSoldier != NULL)
{ {
if (pSoldier->bTeam == 0 || (pSoldier->bTeam == 1 && is_server)) if (pSoldier->bTeam == 0 || (pSoldier->bTeam == 1 && is_server))
+4 -5
View File
@@ -1378,11 +1378,10 @@ void RenderOverheadOverlays()
{ {
UINT32 uiDestPitchBYTES; UINT32 uiDestPitchBYTES;
WORLDITEM *pWorldItem; WORLDITEM *pWorldItem;
UINT32 i;
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
HVOBJECT hVObject; HVOBJECT hVObject;
INT16 sX, sY; INT16 sX, sY;
UINT16 end; SoldierID id, end;
UINT16 usLineColor=0; UINT16 usLineColor=0;
UINT8 *pDestBuf; UINT8 *pDestBuf;
UINT8 ubPassengers = 0; UINT8 ubPassengers = 0;
@@ -1416,10 +1415,10 @@ void RenderOverheadOverlays()
|| RebelCommand::ShowApproximateEnemyLocations()) || RebelCommand::ShowApproximateEnemyLocations())
marklastenemy = TRUE; marklastenemy = TRUE;
for( i = 0; i < end; ++i ) for( id = 0; id < end; ++id )
{ {
//First, check to see if the soldier exists and is in the sector. //First, check to see if the soldier exists and is in the sector.
pSoldier = MercPtrs[ i ]; pSoldier = id;
if( !pSoldier->bActive || !pSoldier->bInSector ) if( !pSoldier->bActive || !pSoldier->bInSector )
continue; continue;
//Soldier is here. Calculate his screen position based on his current gridno. //Soldier is here. Calculate his screen position based on his current gridno.
@@ -1695,7 +1694,7 @@ void RenderOverheadOverlays()
FLOAT radius_inner = radius - thickness / 2; FLOAT radius_inner = radius - thickness / 2;
FLOAT radius_outer = radius + thickness / 2; FLOAT radius_outer = radius + thickness / 2;
for( i = 0 ; i < guiNumWorldItems; ++i ) for( UINT32 i = 0 ; i < guiNumWorldItems; ++i )
{ {
pWorldItem = &gWorldItems[ i ]; pWorldItem = &gWorldItems[ i ];
if( !pWorldItem || !pWorldItem->fExists ) if( !pWorldItem || !pWorldItem->fExists )