Use SoldierID

This commit is contained in:
Asdow
2024-11-30 23:47:00 +02:00
parent 79b57c326e
commit de56f653ec
38 changed files with 454 additions and 461 deletions
+36 -32
View File
@@ -9122,81 +9122,85 @@ void AssignPersonnelWoundsHelpText( INT32 ubProfile )
INT8 CalculateMercsAchievementPercentage( INT32 ubProfile ) INT8 CalculateMercsAchievementPercentage( INT32 ubProfile )
{ {
SOLDIERTYPE *pTeamSoldier; SOLDIERTYPE *pTeamSoldier;
INT32 cnt=0;
UINT32 uiMercPoints, uiMercPercentage; UINT32 uiMercPoints, uiMercPercentage;
unsigned long ulTotalMercPoints = 0; unsigned long ulTotalMercPoints = 0;
// run through active soldiers // run through active soldiers
for ( cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++) SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID;
const SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID;
for ( ; id <= lastid; ++id)
{ {
pTeamSoldier = MercPtrs[cnt]; pTeamSoldier = id;
// Only count stats of merc (not vehicles) // Only count stats of merc (not vehicles)
if ( !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && !AM_A_ROBOT( pTeamSoldier ) ) if ( !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && !AM_A_ROBOT( pTeamSoldier ) )
{ {
if( pTeamSoldier->bActive && pTeamSoldier->stats.bLife > 0 && pTeamSoldier->ubProfile != 0 ) if( pTeamSoldier->bActive && pTeamSoldier->stats.bLife > 0 && pTeamSoldier->ubProfile != 0 )
{ {
const STRUCT_Records &records = gMercProfiles[pTeamSoldier->ubProfile].records;
// get total value of all mercs, adjust by importance // get total value of all mercs, adjust by importance
ulTotalMercPoints += ulTotalMercPoints +=
( gMercProfiles[ pTeamSoldier->ubProfile ].records.usLocksPicked ) ( records.usLocksPicked )
+ +
( gMercProfiles[ pTeamSoldier->ubProfile ].records.usLocksBreached ) ( records.usLocksBreached )
+ +
( gMercProfiles[ pTeamSoldier->ubProfile ].records.usTrapsRemoved *3/2) ( records.usTrapsRemoved *3/2)
+ +
( gMercProfiles[ pTeamSoldier->ubProfile ].records.usExpDetonated *3/2) ( records.usExpDetonated *3/2)
+ +
( gMercProfiles[ pTeamSoldier->ubProfile ].records.usItemsRepaired /2) ( records.usItemsRepaired /2)
+ +
( gMercProfiles[ pTeamSoldier->ubProfile ].records.usItemsCombined *2) ( records.usItemsCombined *2)
+ +
( gMercProfiles[ pTeamSoldier->ubProfile ].records.usItemsStolen ) ( records.usItemsStolen )
+ +
( gMercProfiles[ pTeamSoldier->ubProfile ].records.usMercsBandaged *3/4) ( records.usMercsBandaged *3/4)
+ +
( gMercProfiles[ pTeamSoldier->ubProfile ].records.usSurgeriesMade *3/2) ( records.usSurgeriesMade *3/2)
+ +
( gMercProfiles[ pTeamSoldier->ubProfile ].records.usNPCsDiscovered *4/3) ( records.usNPCsDiscovered *4/3)
+ +
( gMercProfiles[ pTeamSoldier->ubProfile ].records.usSectorsDiscovered ) ( records.usSectorsDiscovered )
+ +
( gMercProfiles[ pTeamSoldier->ubProfile ].records.usMilitiaTrained /4) ( records.usMilitiaTrained /4)
+ +
( gMercProfiles[ pTeamSoldier->ubProfile ].records.ubQuestsHandled *2) ( records.ubQuestsHandled *2)
+ +
(gMercProfiles[pTeamSoldier->ubProfile].records.usInterrogations); ( records.usInterrogations);
} }
} }
} }
// Now get points of our mercs // Now get points of our mercs
uiMercPoints = const STRUCT_Records &records = gMercProfiles[ubProfile].records;
( gMercProfiles[ ubProfile ].records.usLocksPicked ) uiMercPoints =
( records.usLocksPicked )
+ +
( gMercProfiles[ ubProfile ].records.usLocksBreached ) ( records.usLocksBreached )
+ +
( gMercProfiles[ ubProfile ].records.usTrapsRemoved *3/2) ( records.usTrapsRemoved *3/2)
+ +
( gMercProfiles[ ubProfile ].records.usExpDetonated *3/2) ( records.usExpDetonated *3/2)
+ +
( gMercProfiles[ ubProfile ].records.usItemsRepaired /2) ( records.usItemsRepaired /2)
+ +
( gMercProfiles[ ubProfile ].records.usItemsCombined *2) ( records.usItemsCombined *2)
+ +
( gMercProfiles[ ubProfile ].records.usItemsStolen ) ( records.usItemsStolen )
+ +
( gMercProfiles[ ubProfile ].records.usMercsBandaged *3/4) ( records.usMercsBandaged *3/4)
+ +
( gMercProfiles[ ubProfile ].records.usSurgeriesMade *3/2) ( records.usSurgeriesMade *3/2)
+ +
( gMercProfiles[ ubProfile ].records.usNPCsDiscovered *4/3) ( records.usNPCsDiscovered *4/3)
+ +
( gMercProfiles[ ubProfile ].records.usSectorsDiscovered ) ( records.usSectorsDiscovered )
+ +
( gMercProfiles[ ubProfile ].records.usMilitiaTrained /4) ( records.usMilitiaTrained /4)
+ +
( gMercProfiles[ ubProfile ].records.ubQuestsHandled *2) ( records.ubQuestsHandled *2)
+ +
( gMercProfiles[ubProfile].records.usInterrogations ); ( records.usInterrogations );
// Calculate percentage // Calculate percentage
if( ulTotalMercPoints != 0 ) if( ulTotalMercPoints != 0 )
+18 -15
View File
@@ -18407,12 +18407,12 @@ BOOLEAN HandleSelectedMercsBeingPutAsleep( BOOLEAN fWakeUp, BOOLEAN fDisplayWarn
BOOLEAN IsAnyOneOnPlayersTeamOnThisAssignment( INT8 bAssignment ) BOOLEAN IsAnyOneOnPlayersTeamOnThisAssignment( INT8 bAssignment )
{ {
SOLDIERTYPE *pSoldier = NULL; SoldierID id = gTacticalStatus.Team[OUR_TEAM].bFirstID;
SoldierID lastid = gTacticalStatus.Team[OUR_TEAM].bLastID;
for( INT32 iCounter = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; iCounter <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++iCounter ) for( ; id <= lastid; ++id)
{ {
// get the current soldier // get the current soldier
pSoldier = &Menptr[ iCounter ]; SOLDIERTYPE *pSoldier = id;
// active? // active?
if( pSoldier->bActive == FALSE ) if( pSoldier->bActive == FALSE )
@@ -18443,7 +18443,6 @@ void RebuildAssignmentsBox( void )
void BandageBleedingDyingPatientsBeingTreated( ) void BandageBleedingDyingPatientsBeingTreated( )
{ {
INT32 iCounter = 0;
SOLDIERTYPE *pSoldier = NULL; SOLDIERTYPE *pSoldier = NULL;
SOLDIERTYPE *pDoctor = NULL; SOLDIERTYPE *pDoctor = NULL;
INT32 iKitSlot; INT32 iKitSlot;
@@ -18452,10 +18451,10 @@ void BandageBleedingDyingPatientsBeingTreated( )
UINT32 uiKitPtsUsed; UINT32 uiKitPtsUsed;
BOOLEAN fSomeoneStillBleedingDying = FALSE; BOOLEAN fSomeoneStillBleedingDying = FALSE;
for( iCounter = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; iCounter <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; iCounter++ ) for( SoldierID id = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; id <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++id )
{ {
// get the soldier // get the soldier
pSoldier = &Menptr[ iCounter ]; pSoldier = id;
// check if the soldier is currently active? // check if the soldier is currently active?
if( pSoldier->bActive == FALSE ) if( pSoldier->bActive == FALSE )
@@ -19601,9 +19600,11 @@ void RepairItemsOnOthers( SOLDIERTYPE *pSoldier, UINT8 *pubRepairPtsLeft )
fSomethingWasRepairedThisPass = FALSE; fSomethingWasRepairedThisPass = FALSE;
// look for jammed guns on other soldiers in sector and unjam them // look for jammed guns on other soldiers in sector and unjam them
for( bLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++bLoop ) SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID;
const SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID;
for ( ; id <= lastid; ++id )
{ {
pOtherSoldier = MercPtrs[ bLoop ]; pOtherSoldier = id;
// check character is valid, alive, same sector, not between, has inventory, etc. // check character is valid, alive, same sector, not between, has inventory, etc.
if ( CanCharacterRepairAnotherSoldiersStuff( pSoldier, pOtherSoldier ) ) if ( CanCharacterRepairAnotherSoldiersStuff( pSoldier, pOtherSoldier ) )
@@ -19621,9 +19622,11 @@ void RepairItemsOnOthers( SOLDIERTYPE *pSoldier, UINT8 *pubRepairPtsLeft )
pBestOtherSoldier = NULL; pBestOtherSoldier = NULL;
// now look for items to repair on other mercs // now look for items to repair on other mercs
for( bLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++bLoop ) SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID;
const SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID;
for ( ; id <= lastid; ++id )
{ {
pOtherSoldier = MercPtrs[ bLoop ]; pOtherSoldier = id;
// check character is valid, alive, same sector, not between, has inventory, etc. // check character is valid, alive, same sector, not between, has inventory, etc.
if ( CanCharacterRepairAnotherSoldiersStuff( pSoldier, pOtherSoldier ) ) if ( CanCharacterRepairAnotherSoldiersStuff( pSoldier, pOtherSoldier ) )
@@ -22806,11 +22809,11 @@ BOOLEAN MercStaffsMilitaryHQ()
return TRUE; return TRUE;
SOLDIERTYPE *pSoldier = NULL; SOLDIERTYPE *pSoldier = NULL;
UINT32 uiCnt = 0; SoldierID id = gTacticalStatus.Team[ OUR_TEAM ].bFirstID;
UINT32 firstid = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; SoldierID lastid = gTacticalStatus.Team[ OUR_TEAM ].bLastID;
UINT32 lastid = gTacticalStatus.Team[ OUR_TEAM ].bLastID; for ( ; id <= lastid; ++id)
for ( uiCnt = firstid, pSoldier = MercPtrs[ uiCnt ]; uiCnt <= lastid; ++uiCnt, ++pSoldier)
{ {
pSoldier = id;
if( pSoldier && pSoldier->bAssignment == FACILITY_STRATEGIC_MILITIA_MOVEMENT && pSoldier->flags.fMercAsleep == FALSE ) if( pSoldier && pSoldier->bAssignment == FACILITY_STRATEGIC_MILITIA_MOVEMENT && pSoldier->flags.fMercAsleep == FALSE )
{ {
return TRUE; return TRUE;
+18 -12
View File
@@ -1852,11 +1852,14 @@ void RenderAutoResolve()
case BATTLE_SURRENDERED: case BATTLE_SURRENDERED:
case BATTLE_CAPTURED: case BATTLE_CAPTURED:
for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) {
SoldierID id = gTacticalStatus.Team[OUR_TEAM].bFirstID;
const SoldierID lastid = gTacticalStatus.Team[OUR_TEAM].bLastID;
for ( ; id <= lastid; ++id )
{ {
SOLDIERTYPE *pSoldier = MercPtrs[i]; SOLDIERTYPE *pSoldier = id;
if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && !AM_A_ROBOT( pSoldier ) ) if ( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && !AM_A_ROBOT( pSoldier ) )
{ //Merc is active and alive, and not a vehicle or robot { //Merc is active and alive, and not a vehicle or robot
if ( PlayerMercInvolvedInThisCombat( pSoldier ) ) if ( PlayerMercInvolvedInThisCombat( pSoldier ) )
{ {
@@ -1866,17 +1869,18 @@ void RenderAutoResolve()
} }
} }
HandleMoraleEvent( NULL, MORALE_HEARD_BATTLE_LOST, gpAR->ubSectorX, gpAR->ubSectorY, 0 ); HandleMoraleEvent( NULL, MORALE_HEARD_BATTLE_LOST, gpAR->ubSectorX, gpAR->ubSectorY, 0 );
if( ProcessLoyalty() )HandleGlobalLoyaltyEvent( GLOBAL_LOYALTY_BATTLE_LOST, gpAR->ubSectorX, gpAR->ubSectorY, 0 ); if ( ProcessLoyalty() )HandleGlobalLoyaltyEvent( GLOBAL_LOYALTY_BATTLE_LOST, gpAR->ubSectorX, gpAR->ubSectorY, 0 );
#ifdef NEWMUSIC #ifdef NEWMUSIC
GlobalSoundID = MusicSoundValues[ SECTOR( gpAR->ubSectorX, gpAR->ubSectorY ) ].SoundTacticalDeath[0]; GlobalSoundID = MusicSoundValues[SECTOR( gpAR->ubSectorX, gpAR->ubSectorY )].SoundTacticalDeath[0];
if ( MusicSoundValues[ SECTOR( gpAR->ubSectorX, gpAR->ubSectorY ) ].SoundTacticalDeath[0] != -1 ) if ( MusicSoundValues[SECTOR( gpAR->ubSectorX, gpAR->ubSectorY )].SoundTacticalDeath[0] != -1 )
SetMusicModeID( MUSIC_TACTICAL_DEATH, MusicSoundValues[ SECTOR( gpAR->ubSectorX, gpAR->ubSectorY ) ].SoundTacticalDeath[0] ); SetMusicModeID( MUSIC_TACTICAL_DEATH, MusicSoundValues[SECTOR( gpAR->ubSectorX, gpAR->ubSectorY )].SoundTacticalDeath[0] );
else else
#endif #endif
SetMusicMode( MUSIC_TACTICAL_DEATH ); SetMusicMode( MUSIC_TACTICAL_DEATH );
gsEnemyGainedControlOfSectorID = (INT16)SECTOR( gpAR->ubSectorX, gpAR->ubSectorY ); gsEnemyGainedControlOfSectorID = (INT16)SECTOR( gpAR->ubSectorX, gpAR->ubSectorY );
break; break;
}
case BATTLE_DEFEAT: case BATTLE_DEFEAT:
HandleMoraleEvent( NULL, MORALE_HEARD_BATTLE_LOST, gpAR->ubSectorX, gpAR->ubSectorY, 0 ); HandleMoraleEvent( NULL, MORALE_HEARD_BATTLE_LOST, gpAR->ubSectorX, gpAR->ubSectorY, 0 );
@@ -5959,9 +5963,11 @@ void CheckForSoldiersWhoRetreatedIntoMilitiaHeldSectors()
(!gTacticalStatus.fEnemyInSector)) (!gTacticalStatus.fEnemyInSector))
{ {
unsigned mercCnt = 0; unsigned mercCnt = 0;
for( int i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) SoldierID id = gTacticalStatus.Team[OUR_TEAM].bFirstID;
const SoldierID lastid = gTacticalStatus.Team[OUR_TEAM].bLastID;
for ( ; id <= lastid; ++id )
{ {
SOLDIERTYPE *pSoldier = MercPtrs[i]; SOLDIERTYPE *pSoldier = id;
if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && !AM_A_ROBOT( pSoldier ) ) if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && !AM_A_ROBOT( pSoldier ) )
{ {
+6 -7
View File
@@ -1676,9 +1676,9 @@ void DetermineCreatureTownCompositionBasedOnTacticalInformation( UINT16 *pubNumC
*pubNumCreatures = 0; *pubNumCreatures = 0;
pSector->ubNumCreatures = 0; pSector->ubNumCreatures = 0;
pSector->ubCreaturesInBattle = 0; pSector->ubCreaturesInBattle = 0;
for( INT32 i = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; i <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++i ) for( SoldierID i = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; i <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++i )
{ {
pSoldier = MercPtrs[ i ]; pSoldier = i;
if( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife ) if( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife )
{ {
switch( pSoldier->ubBodyType ) switch( pSoldier->ubBodyType )
@@ -1712,9 +1712,9 @@ void DetermineOtherCreatureTownCompositionBasedOnTacticalInformation( UINT16* pu
*pubNumCreatures = 0; *pubNumCreatures = 0;
pSector->ubNumCreatures = 0; pSector->ubNumCreatures = 0;
pSector->ubCreaturesInBattle = 0; pSector->ubCreaturesInBattle = 0;
for ( INT32 i = gTacticalStatus.Team[CREATURE_TEAM].bFirstID; i <= gTacticalStatus.Team[CREATURE_TEAM].bLastID; ++i ) for ( SoldierID i = gTacticalStatus.Team[CREATURE_TEAM].bFirstID; i <= gTacticalStatus.Team[CREATURE_TEAM].bLastID; ++i )
{ {
pSoldier = MercPtrs[i]; pSoldier = i;
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife ) if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife )
{ {
if ( pSoldier->IsZombie() ) if ( pSoldier->IsZombie() )
@@ -2243,7 +2243,6 @@ BOOLEAN PlayerGroupIsInACreatureInfestedMine()
{ {
CREATURE_DIRECTIVE *curr; CREATURE_DIRECTIVE *curr;
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
INT32 i;
INT16 sSectorX, sSectorY; INT16 sSectorX, sSectorY;
INT8 bSectorZ; INT8 bSectorZ;
@@ -2261,9 +2260,9 @@ BOOLEAN PlayerGroupIsInACreatureInfestedMine()
bSectorZ = (INT8)curr->pLevel->ubSectorZ; bSectorZ = (INT8)curr->pLevel->ubSectorZ;
//Loop through all the creature directives (mine sectors that are infectible) and //Loop through all the creature directives (mine sectors that are infectible) and
//see if players are there. //see if players are there.
for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i )
{ {
pSoldier = MercPtrs[ i ]; pSoldier = i;
if( pSoldier->bActive && pSoldier->stats.bLife && if( pSoldier->bActive && pSoldier->stats.bLife &&
pSoldier->sSectorX == sSectorX && pSoldier->sSectorX == sSectorX &&
pSoldier->sSectorY == sSectorY && pSoldier->sSectorY == sSectorY &&
+5 -10
View File
@@ -842,19 +842,14 @@ fFirstTimeInMapScreen = TRUE;
BOOLEAN AnyMercsHired( ) BOOLEAN AnyMercsHired( )
{ {
INT32 cnt; // Find first guy available in team
SOLDIERTYPE *pTeamSoldier; SoldierID id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
INT16 bLastTeamID; SoldierID bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
// Find first guy availible in team
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
// look for all mercs on the same team, // look for all mercs on the same team,
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= bLastTeamID; cnt++,pTeamSoldier++) for ( ; id <= bLastTeamID; ++id)
{ {
if ( pTeamSoldier->bActive ) if ( id->bActive )
{ {
return( TRUE ); return( TRUE );
} }
+24 -24
View File
@@ -361,18 +361,18 @@ UINT16 LarryItems[ NUM_LARRY_ITEMS ][ 3 ] =
void HourlyLarryUpdate() void HourlyLarryUpdate()
{ {
SOLDIERTYPE * pSoldier = NULL; SOLDIERTYPE *pSoldier = NULL;
SOLDIERTYPE * pOtherSoldier = NULL; SOLDIERTYPE *pOtherSoldier = NULL;
INT8 bSlot = NO_SLOT, bBoozeSlot; INT8 bSlot = NO_SLOT, bBoozeSlot;
UINT16 usTemptation = 0; UINT16 usTemptation = 0;
UINT16 usCashAmount; UINT16 usCashAmount;
BOOLEAN fBar = FALSE; BOOLEAN fBar = FALSE;
OBJECTTYPE* pObj = NULL; OBJECTTYPE* pObj = NULL;
BOOLEAN fTookDrugs = FALSE; BOOLEAN fTookDrugs = FALSE;
for( UINT32 cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt ) for( SoldierID id = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; id <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++id )
{ {
pSoldier = MercPtrs[ cnt ]; pSoldier = id;
if ( pSoldier && pSoldier->bActive && !pSoldier->flags.fMercAsleep && ( pSoldier->ubProfile == LARRY_NORMAL || pSoldier->ubProfile == LARRY_DRUNK || pSoldier->HasBackgroundFlag( BACKGROUND_DRUGUSE ) ) ) if ( pSoldier && pSoldier->bActive && !pSoldier->flags.fMercAsleep && ( pSoldier->ubProfile == LARRY_NORMAL || pSoldier->ubProfile == LARRY_DRUNK || pSoldier->HasBackgroundFlag( BACKGROUND_DRUGUSE ) ) )
{ {
@@ -484,9 +484,9 @@ void HourlyLarryUpdate()
{ {
// anv: snitches stop mercs from getting wasted // anv: snitches stop mercs from getting wasted
BOOLEAN fSnitchStoppedBehaviour = FALSE; BOOLEAN fSnitchStoppedBehaviour = FALSE;
for( INT32 cnt2 = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; cnt2 <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt2 ) for( SoldierID id2 = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; id2 <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++id2 )
{ {
pOtherSoldier = MercPtrs[ cnt2 ]; pOtherSoldier = id2;
// note - snitches stop others, but can get wasted themselves (if they have drug use specifically set in background...) // note - snitches stop others, but can get wasted themselves (if they have drug use specifically set in background...)
if( pOtherSoldier && !pOtherSoldier->flags.fBetweenSectors && pOtherSoldier->bActive && !pOtherSoldier->flags.fMercAsleep && pSoldier->ubProfile != pOtherSoldier->ubProfile ) if( pOtherSoldier && !pOtherSoldier->flags.fBetweenSectors && pOtherSoldier->bActive && !pOtherSoldier->flags.fMercAsleep && pSoldier->ubProfile != pOtherSoldier->ubProfile )
{ {
@@ -612,12 +612,12 @@ void HourlyLarryUpdate()
// Flugente: mercs that are smokers occasionally consume smokes if they have some in their inventory // Flugente: mercs that are smokers occasionally consume smokes if they have some in their inventory
void HourlySmokerUpdate( ) void HourlySmokerUpdate( )
{ {
SOLDIERTYPE * pSoldier = NULL; SOLDIERTYPE *pSoldier = NULL;
OBJECTTYPE* pObj = NULL; OBJECTTYPE *pObj = NULL;
for ( UINT32 cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt ) for ( SoldierID id = gTacticalStatus.Team[OUR_TEAM].bFirstID; id <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++id )
{ {
pSoldier = MercPtrs[cnt]; pSoldier = id;
if ( pSoldier && pSoldier->bActive && !pSoldier->flags.fMercAsleep ) if ( pSoldier && pSoldier->bActive && !pSoldier->flags.fMercAsleep )
{ {
@@ -647,9 +647,9 @@ void HourlyDisabilityUpdate( )
SOLDIERTYPE* pSoldier = NULL; SOLDIERTYPE* pSoldier = NULL;
SOLDIERTYPE* pOtherSoldier = NULL; SOLDIERTYPE* pOtherSoldier = NULL;
for ( UINT32 cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt ) for ( SoldierID id = gTacticalStatus.Team[OUR_TEAM].bFirstID; id <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++id )
{ {
pSoldier = MercPtrs[cnt]; pSoldier = id;
if ( pSoldier && pSoldier->bActive ) if ( pSoldier && pSoldier->bActive )
{ {
@@ -664,9 +664,9 @@ void HourlyDisabilityUpdate( )
{ {
// anv: snitches stop mercs from getting wasted // anv: snitches stop mercs from getting wasted
BOOLEAN fSnitchStoppedBehaviour = FALSE; BOOLEAN fSnitchStoppedBehaviour = FALSE;
for ( INT32 cnt2 = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt2 <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt2 ) for ( SoldierID id2 = gTacticalStatus.Team[OUR_TEAM].bFirstID; id2 <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++id2 )
{ {
pOtherSoldier = MercPtrs[cnt2]; pOtherSoldier = id2;
// note - snitches stop others, but can get wasted themselves (if they have drug use specifically set in background...) // note - snitches stop others, but can get wasted themselves (if they have drug use specifically set in background...)
if ( pOtherSoldier && !pOtherSoldier->flags.fBetweenSectors && pOtherSoldier->bActive && !pOtherSoldier->flags.fMercAsleep && pSoldier->ubProfile != pOtherSoldier->ubProfile ) if ( pOtherSoldier && !pOtherSoldier->flags.fBetweenSectors && pOtherSoldier->bActive && !pOtherSoldier->flags.fMercAsleep && pSoldier->ubProfile != pOtherSoldier->ubProfile )
@@ -760,9 +760,9 @@ void HourlyStealUpdate()
SOLDIERTYPE * pSoldier = NULL; SOLDIERTYPE * pSoldier = NULL;
SOLDIERTYPE * pOtherSoldier = NULL; SOLDIERTYPE * pOtherSoldier = NULL;
for( INT32 cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt ) for( SoldierID cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt )
{ {
pSoldier = MercPtrs[ cnt ]; pSoldier = cnt;
// merc must be alive, not travelling and awake. If he is in the currently loaded sector, we may not be in tactical (we would see an item suddenly disappearing) and not in combat // merc must be alive, not travelling and awake. If he is in the currently loaded sector, we may not be in tactical (we would see an item suddenly disappearing) and not in combat
if ( pSoldier if ( pSoldier
@@ -794,9 +794,9 @@ void HourlyStealUpdate()
// anv: snitches prevent scrounging in the same sector // anv: snitches prevent scrounging in the same sector
BOOLEAN fSnitchStoppedBehaviour = FALSE; BOOLEAN fSnitchStoppedBehaviour = FALSE;
for ( UINT32 cnt2 = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt2 <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt2 ) for ( SoldierID cnt2 = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt2 <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt2 )
{ {
pOtherSoldier = MercPtrs[cnt2]; pOtherSoldier = cnt2;
// note - snitches stop others, but can scrounge themselves (if they have scrounging specifically set in background...) // note - snitches stop others, but can scrounge themselves (if they have scrounging specifically set in background...)
if ( pOtherSoldier if ( pOtherSoldier
+10 -13
View File
@@ -2953,17 +2953,14 @@ SOLDIERTYPE * FindSoldierByProfileID_( UINT8 ubProfileID )
SOLDIERTYPE * FindSoldierByProfileID2( UINT8 ubProfileID, BOOLEAN fPlayerMercsOnly ) SOLDIERTYPE * FindSoldierByProfileID2( UINT8 ubProfileID, BOOLEAN fPlayerMercsOnly )
{ {
UINT16 cnt2, ubLoopLimit; SoldierID soldier = gTacticalStatus.Team[ CIV_TEAM ].bFirstID;
SOLDIERTYPE * pSoldier; SoldierID lastid = gTacticalStatus.Team[CIV_TEAM].bLastID;
ubLoopLimit = gTacticalStatus.Team[CIV_TEAM].bLastID; for ( ; soldier <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++soldier)
cnt2 = gTacticalStatus.Team[ CIV_TEAM ].bFirstID;
for ( pSoldier = MercPtrs[ cnt2 ]; cnt2 <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; cnt2++ ,pSoldier++)
{ {
if ( pSoldier->bActive && pSoldier->bInSector ) if ( soldier->bActive && soldier->bInSector )
{ {
return( pSoldier ); return( soldier );
} }
} }
return( NULL ); return( NULL );
@@ -5977,7 +5974,6 @@ return 0;
static int l_ActionInProgress(lua_State *L) static int l_ActionInProgress(lua_State *L)
{ {
UINT16 cnt2;
SOLDIERTYPE * pSoldier; SOLDIERTYPE * pSoldier;
if (lua_gettop(L) >= 2) if (lua_gettop(L) >= 2)
@@ -5995,9 +5991,10 @@ static int l_ActionInProgress(lua_State *L)
} }
else else
{ {
cnt2 = gTacticalStatus.Team[CIV_TEAM].bFirstID; SoldierID cnt2 = gTacticalStatus.Team[CIV_TEAM].bFirstID;
for (pSoldier = MercPtrs[cnt2]; cnt2 <= gTacticalStatus.Team[CIV_TEAM].bLastID; cnt2++, pSoldier++) for ( ; cnt2 <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++cnt2)
{ {
pSoldier = cnt2;
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->ubProfile == NO_PROFILE) if (pSoldier->bActive && pSoldier->bInSector && pSoldier->ubProfile == NO_PROFILE)
{ {
pSoldier->aiData.bActionInProgress = ExecuteAction(pSoldier); pSoldier->aiData.bActionInProgress = ExecuteAction(pSoldier);
@@ -7623,9 +7620,9 @@ static int l_SetEnterCombatMode (lua_State *L)
return 0; return 0;
SOLDIERTYPE* pGoon = NULL; SOLDIERTYPE* pGoon = NULL;
for ( UINT16 ubLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ubLoop++ ) for ( SoldierID ubLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++ubLoop)
{ {
pGoon = MercPtrs[ ubLoop ]; pGoon = ubLoop;
if ( pGoon->ubCivilianGroup == group && pGoon->bActive && pGoon->bInSector && pGoon->stats.bLife >= OKLIFE && pGoon->aiData.bOppList[ ubID ] == SEEN_CURRENTLY ) if ( pGoon->ubCivilianGroup == group && pGoon->bActive && pGoon->bInSector && pGoon->stats.bLife >= OKLIFE && pGoon->aiData.bOppList[ ubID ] == SEEN_CURRENTLY )
{ {
MakeCivHostile(pGoon); MakeCivHostile(pGoon);
+4 -8
View File
@@ -6948,19 +6948,15 @@ UINT32 WhatPlayerKnowsAboutEnemiesInSector( INT16 sSectorX, INT16 sSectorY )
BOOLEAN CanMercsScoutThisSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ ) BOOLEAN CanMercsScoutThisSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ )
{ {
INT32 iFirstId = 0, iLastId = 0;
INT32 iCounter = 0;
SOLDIERTYPE *pSoldier = NULL; SOLDIERTYPE *pSoldier = NULL;
// to speed it up a little? // to speed it up a little?
iFirstId = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; SoldierID id = gTacticalStatus.Team[ OUR_TEAM ].bFirstID;
iLastId = gTacticalStatus.Team[ OUR_TEAM ].bLastID; const SoldierID iLastId = gTacticalStatus.Team[ OUR_TEAM ].bLastID;
for( ; id <= iLastId; ++id )
for( iCounter = iFirstId; iCounter <= iLastId; iCounter++ )
{ {
// get the soldier // get the soldier
pSoldier = &Menptr[ iCounter ]; pSoldier = id;
// is the soldier active // is the soldier active
if( pSoldier->bActive == FALSE ) if( pSoldier->bActive == FALSE )
+3 -2
View File
@@ -6173,7 +6173,7 @@ BOOLEAN CanCharacterMoveInStrategic( SOLDIERTYPE *pSoldier, INT8 *pbErrorNumber
( !pSoldier->flags.fBetweenSectors ) && gMercProfiles[ ELDIN ].bMercStatus != MERC_IS_DEAD ) ( !pSoldier->flags.fBetweenSectors ) && gMercProfiles[ ELDIN ].bMercStatus != MERC_IS_DEAD )
{ {
//DBrot: More Rooms //DBrot: More Rooms
UINT16 /*ubRoom,*/ cnt; SoldierID /*ubRoom,*/ cnt;
UINT16 usRoom; UINT16 usRoom;
SOLDIERTYPE * pSoldier2; SOLDIERTYPE * pSoldier2;
@@ -6181,8 +6181,9 @@ BOOLEAN CanCharacterMoveInStrategic( SOLDIERTYPE *pSoldier, INT8 *pbErrorNumber
{ {
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
for ( pSoldier2 = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier2++) for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt)
{ {
pSoldier2 = cnt;
if ( pSoldier2->bActive ) if ( pSoldier2->bActive )
{ {
if ( FindObj( pSoldier2, CHALICE ) != ITEM_NOT_FOUND ) if ( FindObj( pSoldier2, CHALICE ) != ITEM_NOT_FOUND )
+4 -8
View File
@@ -742,16 +742,12 @@ BOOLEAN WillMercRenew( SOLDIERTYPE *pSoldier, BOOLEAN fSayQuote )
void HandleBuddiesReactionToFiringMerc(SOLDIERTYPE *pFiredSoldier, INT8 bMoraleEvent ) void HandleBuddiesReactionToFiringMerc(SOLDIERTYPE *pFiredSoldier, INT8 bMoraleEvent )
{ {
UINT16 bMercID; SoldierID bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
UINT16 bLastTeamID; SoldierID bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
SOLDIERTYPE * pSoldier;
bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
// loop through all mercs to find buddies // loop through all mercs to find buddies
for ( pSoldier = MercPtrs[ bMercID ]; bMercID <= bLastTeamID; bMercID++,pSoldier++) for ( ; bMercID <= bLastTeamID; ++bMercID)
{ {
SOLDIERTYPE *pSoldier = bMercID;
//if the merc is active, in Arulco, not POW and is a buddy //if the merc is active, in Arulco, not POW and is a buddy
if ( WhichBuddy(pSoldier->ubProfile,pFiredSoldier->ubProfile) != (-1) && if ( WhichBuddy(pSoldier->ubProfile,pFiredSoldier->ubProfile) != (-1) &&
pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE &&
+19 -18
View File
@@ -282,9 +282,9 @@ void UpdateMilitia( MILITIA aMilitia )
SOLDIERTYPE* GetUsedSoldierToIndividualMilitia( UINT32 aMilitiaId ) SOLDIERTYPE* GetUsedSoldierToIndividualMilitia( UINT32 aMilitiaId )
{ {
for ( UINT32 cnt = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; cnt <= gTacticalStatus.Team[MILITIA_TEAM].bLastID; ++cnt ) for ( SoldierID cnt = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; cnt <= gTacticalStatus.Team[MILITIA_TEAM].bLastID; ++cnt )
{ {
SOLDIERTYPE *pSoldier = MercPtrs[cnt]; SOLDIERTYPE *pSoldier = cnt;
if ( pSoldier && pSoldier->bActive && pSoldier->usIndividualMilitiaID == aMilitiaId ) if ( pSoldier && pSoldier->bActive && pSoldier->usIndividualMilitiaID == aMilitiaId )
{ {
return pSoldier; return pSoldier;
@@ -300,11 +300,11 @@ void ApplyTacticalLifeRatioToMilitia()
if ( !gGameExternalOptions.fIndividualMilitia ) if ( !gGameExternalOptions.fIndividualMilitia )
return; return;
SOLDIERTYPE* pSoldier; SoldierID cnt = gTacticalStatus.Team[MILITIA_TEAM].bFirstID;
UINT32 cnt = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; SoldierID lastid = gTacticalStatus.Team[MILITIA_TEAM].bLastID;
INT32 lastid = gTacticalStatus.Team[MILITIA_TEAM].bLastID; for ( ; cnt < lastid; ++cnt )
for ( pSoldier = MercPtrs[cnt]; cnt < lastid; ++cnt, ++pSoldier )
{ {
SOLDIERTYPE *pSoldier = cnt;
MILITIA militia; MILITIA militia;
if ( pSoldier && pSoldier->bActive && pSoldier->stats.bLifeMax && GetMilitia( pSoldier->usIndividualMilitiaID, &militia ) ) if ( pSoldier && pSoldier->bActive && pSoldier->stats.bLifeMax && GetMilitia( pSoldier->usIndividualMilitiaID, &militia ) )
{ {
@@ -326,11 +326,11 @@ void ApplyMilitiaHealthRatioToTactical()
if ( !gGameExternalOptions.fIndividualMilitia || !gGameExternalOptions.fIndividualMilitia_ManageHealth ) if ( !gGameExternalOptions.fIndividualMilitia || !gGameExternalOptions.fIndividualMilitia_ManageHealth )
return; return;
SOLDIERTYPE* pSoldier; SoldierID cnt = gTacticalStatus.Team[MILITIA_TEAM].bFirstID;
UINT32 cnt = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; SoldierID lastid = gTacticalStatus.Team[MILITIA_TEAM].bLastID;
INT32 lastid = gTacticalStatus.Team[MILITIA_TEAM].bLastID; for ( ; cnt < lastid; ++cnt )
for ( pSoldier = MercPtrs[cnt]; cnt < lastid; ++cnt, ++pSoldier )
{ {
SOLDIERTYPE *pSoldier = cnt;
MILITIA militia; MILITIA militia;
if ( pSoldier && pSoldier->bActive && pSoldier->stats.bLifeMax && GetMilitia( pSoldier->usIndividualMilitiaID, &militia ) ) if ( pSoldier && pSoldier->bActive && pSoldier->stats.bLifeMax && GetMilitia( pSoldier->usIndividualMilitiaID, &militia ) )
{ {
@@ -696,12 +696,12 @@ UINT32 GetIdOfUnusedIndividualMilitia( UINT8 aSoldierClass, UINT8 aSector )
// fitting data found - now we have to make sure this one isn't already in use // fitting data found - now we have to make sure this one isn't already in use
BOOLEAN found = FALSE; BOOLEAN found = FALSE;
SOLDIERTYPE* pSoldier; SoldierID cnt = gTacticalStatus.Team[MILITIA_TEAM].bFirstID;
SoldierID lastid = gTacticalStatus.Team[MILITIA_TEAM].bLastID;
INT32 cnt = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; for ( ; cnt < lastid; ++cnt )
INT32 lastid = gTacticalStatus.Team[MILITIA_TEAM].bLastID;
for ( pSoldier = MercPtrs[cnt]; cnt < lastid; ++cnt, ++pSoldier )
{ {
SOLDIERTYPE *pSoldier = cnt;
if ( pSoldier && pSoldier->bActive && ( *it ).id == pSoldier->usIndividualMilitiaID && IsLegalMilitiaId( pSoldier->usIndividualMilitiaID ) ) if ( pSoldier && pSoldier->bActive && ( *it ).id == pSoldier->usIndividualMilitiaID && IsLegalMilitiaId( pSoldier->usIndividualMilitiaID ) )
{ {
found = TRUE; found = TRUE;
@@ -853,10 +853,11 @@ FLOAT PromoteIndividualMilitiaInSector( UINT8 aSector, FLOAT aPointsToAdd )
{ {
BOOLEAN changesnecessary = FALSE; BOOLEAN changesnecessary = FALSE;
SOLDIERTYPE* pSoldier = NULL; SoldierID cnt = gTacticalStatus.Team[MILITIA_TEAM].bFirstID;
int cnt = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; SoldierID lastid = gTacticalStatus.Team[MILITIA_TEAM].bLastID;
for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[MILITIA_TEAM].bLastID; ++cnt, ++pSoldier ) for ( ; cnt < lastid; ++cnt )
{ {
SOLDIERTYPE *pSoldier = cnt;
MILITIA militia; MILITIA militia;
if ( pSoldier && GetMilitia( pSoldier->usIndividualMilitiaID, &militia ) ) if ( pSoldier && GetMilitia( pSoldier->usIndividualMilitiaID, &militia ) )
+8 -8
View File
@@ -1089,9 +1089,9 @@ namespace MiniEventHelpers
INT16 x = 0; INT16 x = 0;
INT16 y = 0; INT16 y = 0;
INT8 z = 0; INT8 z = 0;
for (UINT32 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) for (SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i)
{ {
const SOLDIERTYPE* merc = MercPtrs[i]; const SOLDIERTYPE* merc = i;
if (merc && merc->ubProfile == profileId) if (merc && merc->ubProfile == profileId)
{ {
x = merc->sSectorX; x = merc->sSectorX;
@@ -1519,9 +1519,9 @@ void MiniEventsLua(UINT32 eventId)
gAllMercs.clear(); gAllMercs.clear();
// get all mercs eligible to get a mini event // get all mercs eligible to get a mini event
for (UINT32 cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt) for (SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt)
{ {
SOLDIERTYPE* pSoldier = MercPtrs[ cnt ]; SOLDIERTYPE* pSoldier = cnt;
if (pSoldier && pSoldier->bActive if (pSoldier && pSoldier->bActive
&& pSoldier->stats.bLife > 0 && pSoldier->stats.bLife > 0
@@ -1542,9 +1542,9 @@ void MiniEventsLua(UINT32 eventId)
// second param: a table containing basic info about all of the player's mercs ({ nickname = profileid }) // second param: a table containing basic info about all of the player's mercs ({ nickname = profileid })
f.TableOpen(); f.TableOpen();
for (UINT32 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) for (SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i)
{ {
const SOLDIERTYPE* merc = MercPtrs[i]; const SOLDIERTYPE* merc = i;
if (merc && merc->bActive && merc->bAssignment != IN_TRANSIT && !(merc->flags.uiStatusFlags & SOLDIER_VEHICLE) && !(AM_A_ROBOT(merc))) if (merc && merc->bActive && merc->bAssignment != IN_TRANSIT && !(merc->flags.uiStatusFlags & SOLDIER_VEHICLE) && !(AM_A_ROBOT(merc)))
{ {
std::wstring ws(gMercProfiles[merc->ubProfile].zNickname); std::wstring ws(gMercProfiles[merc->ubProfile].zNickname);
@@ -1561,9 +1561,9 @@ void MiniEventsLua(UINT32 eventId)
LuaFunction f = LuaFunction(gLS, "BeginRandomEvent"); LuaFunction f = LuaFunction(gLS, "BeginRandomEvent");
// first param: a table containing basic info about all of the player's mercs ({ nickname = profileid }) // first param: a table containing basic info about all of the player's mercs ({ nickname = profileid })
f.TableOpen(); f.TableOpen();
for (UINT32 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i)
{ {
const SOLDIERTYPE* merc = MercPtrs[i]; const SOLDIERTYPE* merc = i;
if (merc && merc->bActive && merc->bAssignment != IN_TRANSIT && !(merc->flags.uiStatusFlags & SOLDIER_VEHICLE) && !(AM_A_ROBOT(merc))) if (merc && merc->bActive && merc->bAssignment != IN_TRANSIT && !(merc->flags.uiStatusFlags & SOLDIER_VEHICLE) && !(AM_A_ROBOT(merc)))
{ {
std::wstring ws(gMercProfiles[merc->ubProfile].zNickname); std::wstring ws(gMercProfiles[merc->ubProfile].zNickname);
+12 -15
View File
@@ -296,7 +296,6 @@ FLOAT gAmbushRadiusModifier = 1.0f;
void InitPreBattleInterface( GROUP *pBattleGroup, BOOLEAN fPersistantPBI ) void InitPreBattleInterface( GROUP *pBattleGroup, BOOLEAN fPersistantPBI )
{ {
VOBJECT_DESC VObjectDesc; VOBJECT_DESC VObjectDesc;
INT32 i;
UINT8 ubGroupID = 0; UINT8 ubGroupID = 0;
UINT16 ubNumStationaryEnemies = 0; UINT16 ubNumStationaryEnemies = 0;
UINT16 ubNumMobileEnemies = 0; UINT16 ubNumMobileEnemies = 0;
@@ -600,9 +599,9 @@ void InitPreBattleInterface( GROUP *pBattleGroup, BOOLEAN fPersistantPBI )
//Count the number of players involved or not involved in this battle //Count the number of players involved or not involved in this battle
guiNumUninvolved = 0; guiNumUninvolved = 0;
guiNumInvolved = 0; guiNumInvolved = 0;
for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i )
{ {
SOLDIERTYPE *pSoldier = MercPtrs[i]; SOLDIERTYPE *pSoldier = i;
if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) ) if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) )
{ {
if ( PlayerMercInvolvedInThisCombat( pSoldier ) ) if ( PlayerMercInvolvedInThisCombat( pSoldier ) )
@@ -889,9 +888,9 @@ void InitPreBattleInterface( GROUP *pBattleGroup, BOOLEAN fPersistantPBI )
// SANDRO - merc records - ambush experienced // SANDRO - merc records - ambush experienced
if ( GetEnemyEncounterCode() == ENEMY_AMBUSH_CODE || GetEnemyEncounterCode() == BLOODCAT_AMBUSH_CODE || GetEnemyEncounterCode() == ENEMY_AMBUSH_DEPLOYMENT_CODE || fAmbushPrevented ) if ( GetEnemyEncounterCode() == ENEMY_AMBUSH_CODE || GetEnemyEncounterCode() == BLOODCAT_AMBUSH_CODE || GetEnemyEncounterCode() == ENEMY_AMBUSH_DEPLOYMENT_CODE || fAmbushPrevented )
{ {
for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i )
{ {
SOLDIERTYPE *pSoldier = MercPtrs[i]; SOLDIERTYPE *pSoldier = i;
if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) ) if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) )
{ {
if ( PlayerMercInvolvedInThisCombat( pSoldier ) && pSoldier->ubProfile != NO_PROFILE ) if ( PlayerMercInvolvedInThisCombat( pSoldier ) && pSoldier->ubProfile != NO_PROFILE )
@@ -1577,9 +1576,9 @@ void RenderPreBattleInterface()
// | NAME | ASSIGN | COND | HP | BP | // | NAME | ASSIGN | COND | HP | BP |
line = 0; line = 0;
y = TOP_Y + TOP_Y_TEXT_BUFFER - bListOffset; y = TOP_Y + TOP_Y_TEXT_BUFFER - bListOffset;
for( i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; i++) for( SoldierID id = gTacticalStatus.Team[OUR_TEAM].bFirstID; id <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++id)
{ {
SOLDIERTYPE *pSoldier = MercPtrs[i]; SOLDIERTYPE *pSoldier = id;
if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) ) if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) )
{ {
if( PlayerMercInvolvedInThisCombat( pSoldier ) ) if( PlayerMercInvolvedInThisCombat( pSoldier ) )
@@ -1623,9 +1622,9 @@ void RenderPreBattleInterface()
{ {
pGroup = gpGroupList; pGroup = gpGroupList;
y = TOP_Y + TOP_Y_TEXT_BUFFER + ubUninvolvedStartY + UNINVOLVED_RELEVANT_HEIGHT - bListOffset; y = TOP_Y + TOP_Y_TEXT_BUFFER + ubUninvolvedStartY + UNINVOLVED_RELEVANT_HEIGHT - bListOffset;
for( i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; i++ ) for( SoldierID id = gTacticalStatus.Team[OUR_TEAM].bFirstID; id <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++id )
{ {
SOLDIERTYPE *pSoldier = MercPtrs[i]; SOLDIERTYPE *pSoldier = id;
if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) ) if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) )
{ {
if( !PlayerMercInvolvedInThisCombat(pSoldier) ) if( !PlayerMercInvolvedInThisCombat(pSoldier) )
@@ -1816,9 +1815,9 @@ void RetreatMercsCallback( GUI_BUTTON *btn, INT32 reason )
{ {
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
// SANDRO - merc records - times retreated counter // SANDRO - merc records - times retreated counter
for( UINT16 i = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; i <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; i++ ) for( SoldierID i = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; i <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++i )
{ {
SOLDIERTYPE *pSoldier = MercPtrs[i]; SOLDIERTYPE *pSoldier = i;
if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE ) if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE )
{ {
if ( PlayerMercInvolvedInThisCombat( pSoldier ) && pSoldier->ubProfile != NO_PROFILE ) if ( PlayerMercInvolvedInThisCombat( pSoldier ) && pSoldier->ubProfile != NO_PROFILE )
@@ -2558,12 +2557,10 @@ BOOLEAN CurrentBattleSectorIs( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ )
void CheckForRobotAndIfItsControlled( void ) void CheckForRobotAndIfItsControlled( void )
{ {
INT32 i;
// search for the robot on player's team // search for the robot on player's team
for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i )
{ {
SOLDIERTYPE *pSoldier = MercPtrs[i]; SOLDIERTYPE *pSoldier = i;
if( pSoldier->bActive && pSoldier->stats.bLife && AM_A_ROBOT( pSoldier )) if( pSoldier->bActive && pSoldier->stats.bLife && AM_A_ROBOT( pSoldier ))
{ {
// check whether it has a valid controller with it. This sets its ubRobotRemoteHolderID field. // check whether it has a valid controller with it. This sets its ubRobotRemoteHolderID field.
+30 -30
View File
@@ -103,13 +103,13 @@ void ValidateEnemiesHaveWeapons()
{ {
#ifdef JA2BETAVERSION #ifdef JA2BETAVERSION
SGPRect CenteringRect= {0 + xResOffset, 0, SCREEN_WIDTH - xResOffset, SCREEN_HEIGHT }; SGPRect CenteringRect= {0 + xResOffset, 0, SCREEN_WIDTH - xResOffset, SCREEN_HEIGHT };
INT32 i, iErrorDialog; INT32 iErrorDialog;
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
INT32 iNumInvalid = 0; INT32 iNumInvalid = 0;
for( i = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; i <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; ++i ) for( SoldierID i = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; i <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; ++i )
{ {
pSoldier = MercPtrs[ i ]; pSoldier = i;
if( !pSoldier->bActive || !pSoldier->bInSector ) if( !pSoldier->bActive || !pSoldier->bInSector )
{ {
continue; continue;
@@ -287,11 +287,12 @@ UINT16 NumPlayerTeamMembersInSector( INT16 sSectorX, INT16 sSectorY, INT8 sSecto
{ {
UINT16 teammemberspresent = 0; UINT16 teammemberspresent = 0;
SOLDIERTYPE* pTeamSoldier = NULL; SOLDIERTYPE *pTeamSoldier = NULL;
UINT16 bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; SoldierID bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID;
UINT16 bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID;
for ( pTeamSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, pTeamSoldier++ ) for ( ; bMercID <= bLastTeamID; ++bMercID )
{ {
pTeamSoldier = bMercID;
// we test several conditions before we allow adding an opinion // we test several conditions before we allow adding an opinion
// other merc must be active, have a profile, be someone else and not be in transit or dead // other merc must be active, have a profile, be someone else and not be in transit or dead
if ( pTeamSoldier->bActive && !pTeamSoldier->flags.fBetweenSectors && pTeamSoldier->stats.bLife > 0 && !(pTeamSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && if ( pTeamSoldier->bActive && !pTeamSoldier->flags.fBetweenSectors && pTeamSoldier->stats.bLife > 0 && !(pTeamSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) &&
@@ -505,7 +506,6 @@ void GetNumberOfEnemiesInSector( INT16 sSectorX, INT16 sSectorY, UINT16 *pubNumA
void EndTacticalBattleForEnemy() void EndTacticalBattleForEnemy()
{ {
GROUP *pGroup; GROUP *pGroup;
INT32 i;
//Clear enemies in battle for all stationary groups in the sector. //Clear enemies in battle for all stationary groups in the sector.
if( gbWorldSectorZ > 0 ) if( gbWorldSectorZ > 0 )
@@ -558,15 +558,15 @@ void EndTacticalBattleForEnemy()
//Check to see if any of our mercs have abandoned the militia during a battle. This is cause for a rather //Check to see if any of our mercs have abandoned the militia during a battle. This is cause for a rather
//severe loyalty blow. //severe loyalty blow.
for( i = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; i <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++i ) for( SoldierID i = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; i <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++i )
{ {
SOLDIERTYPE *pSoldier = MercPtrs[i]; SOLDIERTYPE *pSoldier = i;
if( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE ) if( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE )
{ //found one live militia, so look for any enemies/creatures. { //found one live militia, so look for any enemies/creatures.
// NOTE: this is relying on ENEMY_TEAM being immediately followed by CREATURE_TEAM // NOTE: this is relying on ENEMY_TEAM being immediately followed by CREATURE_TEAM
for(UINT16 j = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; j <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++i ) for( SoldierID j = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; j <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++j )
{ {
SOLDIERTYPE *pEnemy = MercPtrs[j]; SOLDIERTYPE *pEnemy = j;
if( pEnemy->bActive && pEnemy->bInSector && pEnemy->stats.bLife >= OKLIFE ) if( pEnemy->bActive && pEnemy->bInSector && pEnemy->stats.bLife >= OKLIFE )
{ //confirmed at least one enemy here, so do the loyalty penalty. { //confirmed at least one enemy here, so do the loyalty penalty.
HandleGlobalLoyaltyEvent( GLOBAL_LOYALTY_ABANDON_MILITIA, gWorldSectorX, gWorldSectorY, 0 ); HandleGlobalLoyaltyEvent( GLOBAL_LOYALTY_ABANDON_MILITIA, gWorldSectorX, gWorldSectorY, 0 );
@@ -583,9 +583,9 @@ UINT16 NumFreeSlots( UINT8 ubTeam )
UINT16 ubNumFreeSlots = 0; UINT16 ubNumFreeSlots = 0;
//Count the number of free enemy slots. It is possible to have multiple groups exceed the maximum. //Count the number of free enemy slots. It is possible to have multiple groups exceed the maximum.
for ( INT32 i = gTacticalStatus.Team[ubTeam].bFirstID; i <= gTacticalStatus.Team[ubTeam].bLastID; ++i ) for ( SoldierID i = gTacticalStatus.Team[ubTeam].bFirstID; i <= gTacticalStatus.Team[ubTeam].bLastID; ++i )
{ {
if ( !Menptr[i].bActive ) if ( !i->bActive )
++ubNumFreeSlots; ++ubNumFreeSlots;
} }
@@ -2106,14 +2106,14 @@ void AddPossiblePendingEnemiesToBattle()
void NotifyPlayersOfNewEnemies() void NotifyPlayersOfNewEnemies()
{ {
INT32 iSoldiers, iChosenSoldier, i; INT32 iSoldiers, iChosenSoldier;
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
BOOLEAN fIgnoreBreath = FALSE; BOOLEAN fIgnoreBreath = FALSE;
iSoldiers = 0; iSoldiers = 0;
for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i )
{ //find a merc that is aware. { //find a merc that is aware.
pSoldier = MercPtrs[ i ]; pSoldier = i;
if( pSoldier->bInSector && pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && pSoldier->bBreath >= OKBREATH ) if( pSoldier->bInSector && pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && pSoldier->bBreath >= OKBREATH )
{ {
iSoldiers++; iSoldiers++;
@@ -2123,9 +2123,9 @@ void NotifyPlayersOfNewEnemies()
{ // look for an out of breath merc. { // look for an out of breath merc.
fIgnoreBreath = TRUE; fIgnoreBreath = TRUE;
for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i )
{ //find a merc that is aware. { //find a merc that is aware.
pSoldier = MercPtrs[ i ]; pSoldier = i;
if( pSoldier->bInSector && pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE ) if( pSoldier->bInSector && pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE )
{ {
iSoldiers++; iSoldiers++;
@@ -2135,9 +2135,9 @@ void NotifyPlayersOfNewEnemies()
if( iSoldiers ) if( iSoldiers )
{ {
iChosenSoldier = Random( iSoldiers ); iChosenSoldier = Random( iSoldiers );
for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i )
{ //find a merc that is aware. { //find a merc that is aware.
pSoldier = MercPtrs[ i ]; pSoldier = i;
if( pSoldier->bInSector && pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && if( pSoldier->bInSector && pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE &&
( ( pSoldier->bBreath >= OKBREATH ) || fIgnoreBreath ) ) ( ( pSoldier->bBreath >= OKBREATH ) || fIgnoreBreath ) )
{ {
@@ -2969,13 +2969,13 @@ BOOLEAN PlayerSectorDefended( UINT8 ubSectorID )
BOOLEAN OnlyHostileCivsInSector() BOOLEAN OnlyHostileCivsInSector()
{ {
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
INT32 i; SoldierID i;
BOOLEAN fHostileCivs = FALSE; BOOLEAN fHostileCivs = FALSE;
//Look for any hostile civs. //Look for any hostile civs.
for( i = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; i <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; i++ ) for( i = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; i <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++i )
{ {
pSoldier = MercPtrs[ i ]; pSoldier = i;
if( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife ) if( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife )
{ {
if( !pSoldier->aiData.bNeutral ) if( !pSoldier->aiData.bNeutral )
@@ -2990,9 +2990,9 @@ BOOLEAN OnlyHostileCivsInSector()
return FALSE; return FALSE;
} }
//Look for anybody else hostile. If found, return FALSE immediately. //Look for anybody else hostile. If found, return FALSE immediately.
for( i = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; i <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; i++ ) for( i = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; i <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; ++i )
{ {
pSoldier = MercPtrs[ i ]; pSoldier = i;
if( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife ) if( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife )
{ {
if( !pSoldier->aiData.bNeutral ) if( !pSoldier->aiData.bNeutral )
@@ -3001,9 +3001,9 @@ BOOLEAN OnlyHostileCivsInSector()
} }
} }
} }
for( i = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; i <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; i++ ) for( i = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; i <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++i )
{ {
pSoldier = MercPtrs[ i ]; pSoldier = i;
if( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife ) if( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife )
{ {
if( !pSoldier->aiData.bNeutral ) if( !pSoldier->aiData.bNeutral )
@@ -3012,9 +3012,9 @@ BOOLEAN OnlyHostileCivsInSector()
} }
} }
} }
for( i = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; i <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; i++ ) for( i = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; i <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++i )
{ {
pSoldier = MercPtrs[ i ]; pSoldier = i;
if( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife ) if( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife )
{ {
if( !pSoldier->aiData.bNeutral ) if( !pSoldier->aiData.bNeutral )
+7 -8
View File
@@ -394,7 +394,7 @@ BOOLEAN PCInSameRoom( UINT8 ubProfileID )
//DBrot: More Rooms //DBrot: More Rooms
//UINT8 ubRoom; //UINT8 ubRoom;
UINT16 usRoom; UINT16 usRoom;
UINT16 bLoop; SoldierID bLoop;
SOLDIERTYPE * pSoldier; SOLDIERTYPE * pSoldier;
pNPC = FindSoldierByProfileID( ubProfileID, FALSE ); pNPC = FindSoldierByProfileID( ubProfileID, FALSE );
@@ -404,9 +404,9 @@ BOOLEAN PCInSameRoom( UINT8 ubProfileID )
} }
usRoom = gusWorldRoomInfo[ pNPC->sGridNo ]; usRoom = gusWorldRoomInfo[ pNPC->sGridNo ];
for ( bLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; bLoop++ ) for ( bLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++bLoop )
{ {
pSoldier = MercPtrs[ bLoop ]; pSoldier = bLoop;
if ( pSoldier && pSoldier->bActive && pSoldier->bInSector ) if ( pSoldier && pSoldier->bActive && pSoldier->bInSector )
{ {
if ( gusWorldRoomInfo[ pSoldier->sGridNo ] == usRoom ) if ( gusWorldRoomInfo[ pSoldier->sGridNo ] == usRoom )
@@ -536,12 +536,11 @@ BOOLEAN FemalePresent( UINT8 ubProfileID )
BOOLEAN CheckPlayerHasHead( void ) BOOLEAN CheckPlayerHasHead( void )
{ {
UINT16 bLoop;
SOLDIERTYPE * pSoldier; SOLDIERTYPE * pSoldier;
for ( bLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; bLoop++ ) for ( SoldierID bLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++bLoop )
{ {
pSoldier = MercPtrs[ bLoop ]; pSoldier = bLoop;
if ( pSoldier->bActive && pSoldier->stats.bLife > 0 ) if ( pSoldier->bActive && pSoldier->stats.bLife > 0 )
{ {
@@ -1714,9 +1713,9 @@ void GiveQuestRewardPoint( INT16 sQuestSectorX, INT16 sQuestsSectorY, INT8 bExpR
{ {
ScreenMsg( FONT_MCOLOR_LTBLUE, MSG_TESTVERSION, L"QUEST COMPLETED - Adding to merc records and awarding experiences (%d).", (bExpReward * gGameExternalOptions.usAwardSpecialExpForQuests) ); ScreenMsg( FONT_MCOLOR_LTBLUE, MSG_TESTVERSION, L"QUEST COMPLETED - Adding to merc records and awarding experiences (%d).", (bExpReward * gGameExternalOptions.usAwardSpecialExpForQuests) );
for ( UINT16 i = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; i <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; i++ ) for ( SoldierID i = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; i <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++i )
{ {
SOLDIERTYPE *pSoldier = MercPtrs[i]; SOLDIERTYPE *pSoldier = i;
if( pSoldier->bActive && pSoldier->stats.bLife >= CONSCIOUSNESS && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && pSoldier->ubProfile != NO_PROFILE && if( pSoldier->bActive && pSoldier->stats.bLife >= CONSCIOUSNESS && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && pSoldier->ubProfile != NO_PROFILE &&
pSoldier->sSectorX == sQuestSectorX && pSoldier->sSectorY == sQuestsSectorY && !pSoldier->flags.fBetweenSectors && pSoldier->bTeam == gbPlayerNum && pSoldier->sSectorX == sQuestSectorX && pSoldier->sSectorY == sQuestsSectorY && !pSoldier->flags.fBetweenSectors && pSoldier->bTeam == gbPlayerNum &&
pSoldier->bAssignment != IN_TRANSIT && pSoldier->bAssignment != ASSIGNMENT_DEAD && gMercProfiles[ pSoldier->ubProfile ].ubBodyType != 21 ) // != ROBOTNOWEAPON ) pSoldier->bAssignment != IN_TRANSIT && pSoldier->bAssignment != ASSIGNMENT_DEAD && gMercProfiles[ pSoldier->ubProfile ].ubBodyType != 21 ) // != ROBOTNOWEAPON )
+14 -14
View File
@@ -2178,9 +2178,9 @@ BOOLEAN SetupMissionAgentBox(UINT16 x, UINT16 y, INT8 index)
// temp/fixme // temp/fixme
std::vector<SOLDIERTYPE*> mercs; std::vector<SOLDIERTYPE*> mercs;
for (UINT16 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i)
{ {
SOLDIERTYPE* pSoldier = MercPtrs[i]; SOLDIERTYPE* pSoldier = i;
if (pSoldier && pSoldier->bActive if (pSoldier && pSoldier->bActive
&& !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE)
@@ -2823,9 +2823,9 @@ void PrepareMission(INT8 index)
// confirmation popup // confirmation popup
std::vector<SOLDIERTYPE*> mercs; std::vector<SOLDIERTYPE*> mercs;
for (UINT16 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i)
{ {
SOLDIERTYPE* pSoldier = MercPtrs[i]; SOLDIERTYPE* pSoldier = i;
if (pSoldier && pSoldier->bActive if (pSoldier && pSoldier->bActive
&& !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE)
@@ -2988,9 +2988,9 @@ void PrepareMission(INT8 index)
if (!evt.sentGenericRebelAgent) if (!evt.sentGenericRebelAgent)
{ {
for (UINT16 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i)
{ {
SOLDIERTYPE* pSoldier = MercPtrs[i]; SOLDIERTYPE* pSoldier = i;
if (pSoldier->ubProfile == evt.mercProfileId) if (pSoldier->ubProfile == evt.mercProfileId)
{ {
TakeSoldierOutOfVehicle(pSoldier); TakeSoldierOutOfVehicle(pSoldier);
@@ -4908,9 +4908,9 @@ void HandleStrategicEvent(const UINT32 eventParam)
// make sure the merc's still on our team // make sure the merc's still on our team
BOOLEAN foundMerc = FALSE; BOOLEAN foundMerc = FALSE;
for (UINT16 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i)
{ {
const SOLDIERTYPE* pSoldier = MercPtrs[i]; const SOLDIERTYPE* pSoldier = i;
if (pSoldier->ubProfile == evt1.mercProfileId && pSoldier->bActive) if (pSoldier->ubProfile == evt1.mercProfileId && pSoldier->bActive)
{ {
@@ -4979,9 +4979,9 @@ void HandleStrategicEvent(const UINT32 eventParam)
if (!evt1.sentGenericRebelAgent) if (!evt1.sentGenericRebelAgent)
{ {
for (UINT16 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i)
{ {
SOLDIERTYPE* pSoldier = MercPtrs[i]; SOLDIERTYPE* pSoldier = i;
if (pSoldier->ubProfile == evt1.mercProfileId) if (pSoldier->ubProfile == evt1.mercProfileId)
{ {
if (mission == RCAM_FORGE_TRANSPORT_ORDERS) if (mission == RCAM_FORGE_TRANSPORT_ORDERS)
@@ -5006,9 +5006,9 @@ void HandleStrategicEvent(const UINT32 eventParam)
{ {
if (!evt1.sentGenericRebelAgent && foundMerc) if (!evt1.sentGenericRebelAgent && foundMerc)
{ {
for (UINT16 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i)
{ {
SOLDIERTYPE* pSoldier = MercPtrs[i]; SOLDIERTYPE* pSoldier = i;
if (pSoldier->ubProfile == evt1.mercProfileId) if (pSoldier->ubProfile == evt1.mercProfileId)
{ {
// mission failed! we tried, give some pity exp // mission failed! we tried, give some pity exp
@@ -5028,9 +5028,9 @@ void HandleStrategicEvent(const UINT32 eventParam)
if (!evt1.sentGenericRebelAgent && foundMerc) if (!evt1.sentGenericRebelAgent && foundMerc)
{ {
for (UINT16 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i)
{ {
SOLDIERTYPE* pSoldier = MercPtrs[i]; SOLDIERTYPE* pSoldier = i;
if (pSoldier->ubProfile == evt1.mercProfileId) if (pSoldier->ubProfile == evt1.mercProfileId)
{ {
// merc ready for reassignment // merc ready for reassignment
+5 -7
View File
@@ -912,7 +912,6 @@ void RemovePlayersFromAllMismatchGroups( SOLDIERTYPE *pSoldier )
#ifdef JA2BETAVERSION #ifdef JA2BETAVERSION
void ValidatePlayersAreInOneGroupOnly() void ValidatePlayersAreInOneGroupOnly()
{ {
INT32 i;
INT32 iGroups; INT32 iGroups;
INT32 iMismatches; INT32 iMismatches;
INT32 iNumErrors; INT32 iNumErrors;
@@ -923,10 +922,10 @@ void ValidatePlayersAreInOneGroupOnly()
UINT8 ubGroupID; UINT8 ubGroupID;
//Go through each merc slot in the player team //Go through each merc slot in the player team
iNumErrors = 0; iNumErrors = 0;
for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i )
{ //check to see if the merc has a group ID { //check to see if the merc has a group ID
pSoldier = MercPtrs[ i ]; pSoldier = i;
if( !pSoldier || !pSoldier->bActive || !pSoldier->stats.bLife || !pSoldier->ubGroupID ) if( !pSoldier || !pSoldier->bActive || !pSoldier->stats.bLife || !pSoldier->ubGroupID )
{ //non-existant, dead, or in no group (don't care, skip to next merc) { //non-existant, dead, or in no group (don't care, skip to next merc)
@@ -4107,13 +4106,12 @@ BOOLEAN LoadStrategicAI( HWFILE hFile )
} }
else else
{ //We are in the basement sector, relocate queen to proper position. { //We are in the basement sector, relocate queen to proper position.
INT32 i; for( SoldierID i = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; i <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++i )
for( i = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; i <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; i++ )
{ {
if( MercPtrs[ i ]->ubProfile == QUEEN ) if( i->ubProfile == QUEEN )
{ //Found queen, relocate her to 16866 { //Found queen, relocate her to 16866
BumpAnyExistingMerc( 16866 ); BumpAnyExistingMerc( 16866 );
TeleportSoldier( MercPtrs[ i ], 16866, TRUE ); TeleportSoldier( i, 16866, TRUE );
break; break;
} }
} }
+17 -15
View File
@@ -184,8 +184,8 @@ void StrategicHandlePlayerTeamMercDeath( SOLDIERTYPE *pSoldier )
// MercDailyUpdate() gets called every day at midnight. If something is to happen to a merc that day, add an event for it. // MercDailyUpdate() gets called every day at midnight. If something is to happen to a merc that day, add an event for it.
void MercDailyUpdate() void MercDailyUpdate()
{ {
INT32 cnt; SoldierID id;
UINT16 bLastTeamID; SoldierID bLastTeamID;
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
//SOLDIERTYPE *pQuitList[ 21 ]; //SOLDIERTYPE *pQuitList[ 21 ];
MERCPROFILESTRUCT *pProfile; MERCPROFILESTRUCT *pProfile;
@@ -217,12 +217,13 @@ void MercDailyUpdate()
AddSameDayStrategicEvent( EVENT_BEGIN_CONTRACT_RENEWAL_SEQUENCE, MERC_ARRIVE_TIME_SLOT_2, 0 ); AddSameDayStrategicEvent( EVENT_BEGIN_CONTRACT_RENEWAL_SEQUENCE, MERC_ARRIVE_TIME_SLOT_2, 0 );
AddSameDayStrategicEvent( EVENT_BEGIN_CONTRACT_RENEWAL_SEQUENCE, MERC_ARRIVE_TIME_SLOT_3, 0 ); AddSameDayStrategicEvent( EVENT_BEGIN_CONTRACT_RENEWAL_SEQUENCE, MERC_ARRIVE_TIME_SLOT_3, 0 );
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
//loop though all the mercs //loop though all the mercs
for ( pSoldier = MercPtrs[ cnt ]; cnt <= bLastTeamID; ++cnt,++pSoldier) for ( ; id <= bLastTeamID; ++id)
{ {
pSoldier = id;
//if the merc is active //if the merc is active
if ( ( pSoldier->bActive )&&( pSoldier->bAssignment != ASSIGNMENT_POW ) && ( pSoldier->bAssignment != IN_TRANSIT ) ) if ( ( pSoldier->bActive )&&( pSoldier->bAssignment != ASSIGNMENT_POW ) && ( pSoldier->bAssignment != IN_TRANSIT ) )
{ {
@@ -374,11 +375,10 @@ void MercDailyUpdate()
} }
} }
//r eset the counter //reset the counter
cnt = 0; for ( id = 0; id <= bLastTeamID; ++id )
for ( pSoldier = MercPtrs[ cnt ]; cnt <= bLastTeamID; cnt++,pSoldier++)
{ {
pSoldier = id;
//if the merc is active //if the merc is active
if ( ( pSoldier->bActive )&&( pSoldier->bAssignment != ASSIGNMENT_POW ) && ( pSoldier->bAssignment != IN_TRANSIT ) ) if ( ( pSoldier->bActive )&&( pSoldier->bAssignment != ASSIGNMENT_POW ) && ( pSoldier->bAssignment != IN_TRANSIT ) )
{ {
@@ -402,7 +402,7 @@ void MercDailyUpdate()
// WANNE: Only send mails from the original 1.13 merc, and not from the wildfire merc, // WANNE: Only send mails from the original 1.13 merc, and not from the wildfire merc,
// otherwise we get wrong mails cause of hardcoded Email.edt structure!!!!! // otherwise we get wrong mails cause of hardcoded Email.edt structure!!!!!
UINT16 numOriginalProfiles = 255; UINT16 numOriginalProfiles = 255;
for( cnt = 0; cnt < numOriginalProfiles; ++cnt) for( UINT16 cnt = 0; cnt < numOriginalProfiles; ++cnt)
{ {
pProfile = &(gMercProfiles[ cnt ]); pProfile = &(gMercProfiles[ cnt ]);
@@ -900,7 +900,7 @@ void MercComplainAboutEquipment( UINT8 ubProfile )
void UpdateBuddyAndHatedCounters( void ) void UpdateBuddyAndHatedCounters( void )
{ {
UINT16 bMercID, bOtherID, bLastTeamID; SoldierID bMercID, bOtherID, bLastTeamID;
INT32 iLoop; INT32 iLoop;
UINT8 ubOtherProfileID; UINT8 ubOtherProfileID;
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
@@ -913,8 +913,9 @@ void UpdateBuddyAndHatedCounters( void )
bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
//loop though all the mercs //loop though all the mercs
for ( pSoldier = MercPtrs[ bMercID ]; bMercID <= bLastTeamID; bMercID++,pSoldier++) for ( ; bMercID <= bLastTeamID; ++bMercID )
{ {
pSoldier = bMercID;
fSameGroupOnly = FALSE; fSameGroupOnly = FALSE;
//if the merc is active and on a combat assignment //if the merc is active and on a combat assignment
@@ -931,9 +932,9 @@ void UpdateBuddyAndHatedCounters( void )
fUpdatedTimeTillNextHatedComplaint = FALSE; fUpdatedTimeTillNextHatedComplaint = FALSE;
bOtherID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bOtherID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
for ( ; bOtherID <= bLastTeamID; ++bOtherID )
for ( pOtherSoldier = MercPtrs[ bOtherID ]; bOtherID <= bLastTeamID; bOtherID++, pOtherSoldier++)
{ {
pOtherSoldier = bOtherID;
// is this guy in the same sector and on active duty (or in the same moving group) // is this guy in the same sector and on active duty (or in the same moving group)
if (bOtherID != bMercID && pOtherSoldier->bActive && pOtherSoldier->bAssignment < ON_DUTY ) if (bOtherID != bMercID && pOtherSoldier->bActive && pOtherSoldier->bAssignment < ON_DUTY )
@@ -1248,15 +1249,16 @@ void UpdateBuddyAndHatedCounters( void )
void HourlyCamouflageUpdate( void ) void HourlyCamouflageUpdate( void )
{ {
UINT16 bMercID, bLastTeamID; SoldierID bMercID, bLastTeamID;
SOLDIERTYPE * pSoldier; SOLDIERTYPE * pSoldier;
BOOLEAN camoWoreOff = FALSE; BOOLEAN camoWoreOff = FALSE;
bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
// loop through all mercs // loop through all mercs
for ( pSoldier = MercPtrs[ bMercID ]; bMercID <= bLastTeamID; bMercID++,pSoldier++) for ( ; bMercID <= bLastTeamID; ++bMercID )
{ {
pSoldier = bMercID;
if ( pSoldier->bActive ) if ( pSoldier->bActive )
{ {
// SANDRO - new Ranger trait reduces camo degrading, which replaces camouflage trait // SANDRO - new Ranger trait reduces camo degrading, which replaces camouflage trait
+6 -8
View File
@@ -5456,9 +5456,9 @@ BOOLEAN TestForBloodcatAmbush( GROUP *pGroup )
// merc recoeds - get a point to scouts // merc recoeds - get a point to scouts
if ( fBloodCatAmbushPrevented ) if ( fBloodCatAmbushPrevented )
{ {
for( UINT16 i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i )
{ {
SOLDIERTYPE *pSoldier = MercPtrs[i]; SOLDIERTYPE *pSoldier = i;
if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) ) if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) )
{ {
if ( pSoldier->sSectorX == pGroup->ubSectorX && pSoldier->sSectorY == pGroup->ubSectorY && pSoldier->bAssignment != ASSIGNMENT_POW && pSoldier->bAssignment != ASSIGNMENT_MINIEVENT && pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND && pSoldier->stats.bLife >= OKLIFE ) if ( pSoldier->sSectorX == pGroup->ubSectorX && pSoldier->sSectorY == pGroup->ubSectorY && pSoldier->bAssignment != ASSIGNMENT_POW && pSoldier->bAssignment != ASSIGNMENT_MINIEVENT && pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND && pSoldier->stats.bLife >= OKLIFE )
@@ -5939,12 +5939,10 @@ BOOLEAN ValidateGroups( GROUP *pGroup )
BOOLEAN ScoutIsPresentInSquad( INT16 ubSectorNumX, INT16 ubSectorNumY ) BOOLEAN ScoutIsPresentInSquad( INT16 ubSectorNumX, INT16 ubSectorNumY )
{ {
BOOLEAN fScoutPresent = FALSE; BOOLEAN fScoutPresent = FALSE;
INT32 i;
// sevenfm: scout should not be sleeping, in vehicle or on assignment // sevenfm: scout should not be sleeping, in vehicle or on assignment
for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i )
{ {
SOLDIERTYPE *pSoldier = MercPtrs[i]; SOLDIERTYPE *pSoldier = i;
if( pSoldier->bActive && if( pSoldier->bActive &&
pSoldier->stats.bLife >= OKLIFE && pSoldier->stats.bLife >= OKLIFE &&
pSoldier->sSectorX == ubSectorNumX && pSoldier->sSectorX == ubSectorNumX &&
@@ -5982,9 +5980,9 @@ BOOLEAN ConcealedMercInSector( INT16 ubSectorNumX, INT16 ubSectorNumY, BOOLEAN a
if ( !gGameOptions.fNewTraitSystem ) if ( !gGameOptions.fNewTraitSystem )
return FALSE; return FALSE;
for ( int i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i ) for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i )
{ {
SOLDIERTYPE *pSoldier = MercPtrs[i]; SOLDIERTYPE *pSoldier = i;
if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && SPY_LOCATION( pSoldier->bAssignment ) ) if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && SPY_LOCATION( pSoldier->bAssignment ) )
{ {
if ( pSoldier->sSectorX == ubSectorNumX && pSoldier->sSectorY == ubSectorNumY && pSoldier->bSectorZ == 10 ) if ( pSoldier->sSectorX == ubSectorNumX && pSoldier->sSectorY == ubSectorNumY && pSoldier->bSectorZ == 10 )
+7 -10
View File
@@ -679,7 +679,6 @@ void HandleMurderOfCivilian( SOLDIERTYPE *pSoldier, BOOLEAN fIntentional )
INT8 bTownId = 0; INT8 bTownId = 0;
INT32 iLoyaltyChange = 0; INT32 iLoyaltyChange = 0;
INT8 bSeenState = 0; INT8 bSeenState = 0;
INT32 iCounter = 0;
SOLDIERTYPE *pCivSoldier = NULL; SOLDIERTYPE *pCivSoldier = NULL;
UINT32 uiChanceFalseAccusal = 0; UINT32 uiChanceFalseAccusal = 0;
INT8 bKillerTeam = 0; INT8 bKillerTeam = 0;
@@ -789,10 +788,10 @@ void HandleMurderOfCivilian( SOLDIERTYPE *pSoldier, BOOLEAN fIntentional )
// check if LOS between any civ, killer and killed // check if LOS between any civ, killer and killed
// if so, then do not adjust // if so, then do not adjust
for( iCounter = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; iCounter <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; iCounter++ ) for( SoldierID iCounter = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; iCounter <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++iCounter )
{ {
// set current civ soldier // set current civ soldier
pCivSoldier = MercPtrs[ iCounter ]; pCivSoldier = iCounter;
if ( pCivSoldier == pSoldier ) if ( pCivSoldier == pSoldier )
{ {
@@ -2129,13 +2128,12 @@ BOOLEAN DidFirstBattleTakePlaceInThisTown( INT8 bTownId )
UINT32 PlayerStrength( void ) UINT32 PlayerStrength( void )
{ {
UINT16 ubLoop; SOLDIERTYPE *pSoldier;
SOLDIERTYPE * pSoldier;
UINT32 uiStrength, uiTotal = 0; UINT32 uiStrength, uiTotal = 0;
for ( ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++ ) for ( SoldierID ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubLoop )
{ {
pSoldier = MercPtrs[ ubLoop ]; pSoldier = ubLoop;
if ( pSoldier->bActive ) if ( pSoldier->bActive )
{ {
if ( pSoldier->bInSector || (pSoldier->flags.fBetweenSectors && SECTORX( pSoldier->ubPrevSectorID ) == gWorldSectorX && SECTORY( pSoldier->ubPrevSectorID ) == gWorldSectorY && (pSoldier->bSectorZ == gbWorldSectorZ)) ) if ( pSoldier->bInSector || (pSoldier->flags.fBetweenSectors && SECTORX( pSoldier->ubPrevSectorID ) == gWorldSectorX && SECTORY( pSoldier->ubPrevSectorID ) == gWorldSectorY && (pSoldier->bSectorZ == gbWorldSectorZ)) )
@@ -2151,13 +2149,12 @@ UINT32 PlayerStrength( void )
UINT32 EnemyStrength( void ) UINT32 EnemyStrength( void )
{ {
UINT16 ubLoop;
SOLDIERTYPE * pSoldier; SOLDIERTYPE * pSoldier;
UINT32 uiStrength, uiTotal = 0; UINT32 uiStrength, uiTotal = 0;
for ( ubLoop = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ubLoop++ ) for ( SoldierID ubLoop = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++ubLoop )
{ {
pSoldier = MercPtrs[ ubLoop ]; pSoldier = ubLoop;
if ( pSoldier->bActive && pSoldier->bInSector && !pSoldier->aiData.bNeutral ) if ( pSoldier->bActive && pSoldier->bInSector && !pSoldier->aiData.bNeutral )
{ {
// count this person's strength (condition), calculated as life reduced up to half according to maxbreath // count this person's strength (condition), calculated as life reduced up to half according to maxbreath
+8 -8
View File
@@ -222,9 +222,9 @@ void FillMapColoursForTransportGroups(INT32(&colorMap)[MAXIMUM_VALID_Y_COORDINAT
// build map of detection sectors + ranges // build map of detection sectors + ranges
std::map<std::pair<INT16,INT16>, INT8> detectionMap; std::map<std::pair<INT16,INT16>, INT8> detectionMap;
std::map<UINT8, MonitoredSectorState> monitoredTowns; std::map<UINT8, MonitoredSectorState> monitoredTowns;
for( INT16 i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i )
{ {
SOLDIERTYPE *pSoldier = MercPtrs[i]; SOLDIERTYPE *pSoldier = i;
if( pSoldier->bActive && if( pSoldier->bActive &&
pSoldier->stats.bLife >= OKLIFE && pSoldier->stats.bLife >= OKLIFE &&
@@ -448,8 +448,8 @@ void UpdateTransportGroupInventory()
if (gGameExternalOptions.fStrategicTransportGroupsEnabled == FALSE) if (gGameExternalOptions.fStrategicTransportGroupsEnabled == FALSE)
return; return;
const int firstSlot = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; const SoldierID firstSlot = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID;
const int lastSlot = gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; const SoldierID lastSlot = gTacticalStatus.Team[ ENEMY_TEAM ].bLastID;
const UINT8 progress = CurrentPlayerProgressPercentage(); const UINT8 progress = CurrentPlayerProgressPercentage();
enum ItemTypes enum ItemTypes
@@ -481,9 +481,9 @@ void UpdateTransportGroupInventory()
{ {
// let's be nice to the player and only drop ammo for guns their mercs have in inventory // let's be nice to the player and only drop ammo for guns their mercs have in inventory
std::set<UINT8> playerCalibres; std::set<UINT8> playerCalibres;
for (INT16 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; i++) for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i)
{ {
SOLDIERTYPE *pSoldier = MercPtrs[i]; SOLDIERTYPE *pSoldier = i;
if (pSoldier->bActive && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE)) if (pSoldier->bActive && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE))
{ {
for (int j = 0 ; j < pSoldier->inv.size(); ++j) for (int j = 0 ; j < pSoldier->inv.size(); ++j)
@@ -602,9 +602,9 @@ void UpdateTransportGroupInventory()
// cache the initial jeep count of every group we find // cache the initial jeep count of every group we find
std::map<UINT8, int> cachedGroupJeepCount; std::map<UINT8, int> cachedGroupJeepCount;
for (int slot = firstSlot; (slot <= lastSlot); ++slot) for ( SoldierID slot = firstSlot; (slot <= lastSlot); ++slot)
{ {
SOLDIERTYPE* pSoldier = &Menptr[slot]; SOLDIERTYPE* pSoldier = slot;
const std::map<UINT8, std::map<int, UINT16>>::iterator groupIter = transportGroupIdToSoldierMap.find(pSoldier->ubGroupID); const std::map<UINT8, std::map<int, UINT16>>::iterator groupIter = transportGroupIdToSoldierMap.find(pSoldier->ubGroupID);
if (groupIter != transportGroupIdToSoldierMap.end()) if (groupIter != transportGroupIdToSoldierMap.end())
+12 -17
View File
@@ -12864,12 +12864,12 @@ void ReBuildCharactersList( void )
gCharactersList[ sCount ].usSolID = NOBODY; gCharactersList[ sCount ].usSolID = NOBODY;
} }
// fills array with pressence of player controlled characters // fills array with presence of player controlled characters
for ( INT32 cnt=gTacticalStatus.Team[ OUR_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; cnt++) for ( SoldierID soldier = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; soldier <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++soldier )
{ {
if(Menptr[ cnt ].bActive == 1) if( soldier->bActive )
{ {
AddCharacter( &Menptr[ cnt ] ); AddCharacter( soldier );
} }
} }
@@ -16029,19 +16029,15 @@ void MakeMapModesSuitableForDestPlotting( INT8 bCharNumber )
BOOLEAN AnyMovableCharsInOrBetweenThisSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ ) BOOLEAN AnyMovableCharsInOrBetweenThisSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ )
{ {
INT32 iFirstId = 0, iLastId = 0;
INT32 iCounter = 0;
SOLDIERTYPE *pSoldier = NULL; SOLDIERTYPE *pSoldier = NULL;
// to speed it up a little? // to speed it up a little?
iFirstId = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; SoldierID id = gTacticalStatus.Team[ OUR_TEAM ].bFirstID;
iLastId = gTacticalStatus.Team[ OUR_TEAM ].bLastID; SoldierID iLastId = gTacticalStatus.Team[ OUR_TEAM ].bLastID;
for( iCounter = iFirstId; iCounter <= iLastId; iCounter++ ) for( ; id <= iLastId; ++id)
{ {
// get the soldier // get the soldier
pSoldier = &Menptr[ iCounter ]; pSoldier = id;
// is the soldier active // is the soldier active
if( pSoldier->bActive == FALSE ) if( pSoldier->bActive == FALSE )
@@ -17629,12 +17625,11 @@ BOOLEAN CanGiveStrategicMilitiaMoveOrder( INT16 sMapX, INT16 sMapY )
// 3. they are a radio operator in an adjacent sector // 3. they are a radio operator in an adjacent sector
// 4. they are a radio operator in a sector adjacent to the militia's town // 4. they are a radio operator in a sector adjacent to the militia's town
// 5. they are a radio operator in a town adjacent to the militia's sector // 5. they are a radio operator in a town adjacent to the militia's sector
SOLDIERTYPE *pSoldier = NULL; SoldierID id = gTacticalStatus.Team[OUR_TEAM].bFirstID;
UINT32 uiCnt = 0; SoldierID lastid = gTacticalStatus.Team[OUR_TEAM].bLastID;
UINT32 firstid = gTacticalStatus.Team[OUR_TEAM].bFirstID; for ( ; id <= lastid; ++id)
UINT32 lastid = gTacticalStatus.Team[OUR_TEAM].bLastID;
for ( uiCnt = firstid, pSoldier = MercPtrs[uiCnt]; uiCnt <= lastid; ++uiCnt, ++pSoldier )
{ {
SOLDIERTYPE *pSoldier = id;
if ( pSoldier && pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE ) if ( pSoldier && pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE )
{ {
BOOLEAN fRadioOperator = pSoldier->CanUseRadio( FALSE ); BOOLEAN fRadioOperator = pSoldier->CanUseRadio( FALSE );
+3 -3
View File
@@ -101,16 +101,16 @@ BOOLEAN HandleStrategicDeath( SOLDIERTYPE *pSoldier )
void HandleSoldierDeadComments( SOLDIERTYPE *pSoldier ) void HandleSoldierDeadComments( SOLDIERTYPE *pSoldier )
{ {
INT32 cnt = 0;
SOLDIERTYPE *pTeamSoldier; SOLDIERTYPE *pTeamSoldier;
INT8 bBuddyIndex; INT8 bBuddyIndex;
// IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED! // IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED!
cnt = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; SoldierID cnt = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID;
// see if this was the friend of a living merc // see if this was the friend of a living merc
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; cnt++,pTeamSoldier++) for ( ; cnt <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; ++cnt )
{ {
pTeamSoldier = cnt;
if ( pTeamSoldier->stats.bLife >= OKLIFE && pTeamSoldier->bActive ) if ( pTeamSoldier->stats.bLife >= OKLIFE && pTeamSoldier->bActive )
{ {
bBuddyIndex = WhichBuddy( pTeamSoldier->ubProfile, pSoldier->ubProfile ); bBuddyIndex = WhichBuddy( pTeamSoldier->ubProfile, pSoldier->ubProfile );
+34 -37
View File
@@ -2429,15 +2429,15 @@ BOOLEAN MapExists( UINT8 * szFilename )
void RemoveMercsInSector( ) void RemoveMercsInSector( )
{ {
INT32 cnt;
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
// IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED! // IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED!
cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID;
// ATE: only for OUR guys.. the rest is taken care of in TrashWorld() when a new sector is added... // ATE: only for OUR guys.. the rest is taken care of in TrashWorld() when a new sector is added...
for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; cnt++, pSoldier++ ) for ( ; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt )
{ {
pSoldier = cnt;
if ( pSoldier->bActive ) if ( pSoldier->bActive )
{ {
pSoldier->RemoveSoldierFromGridNo( ); pSoldier->RemoveSoldierFromGridNo( );
@@ -2698,7 +2698,6 @@ void HandleQuestCodeOnSectorEntry( INT16 sNewSectorX, INT16 sNewSectorY, INT8 bN
//UINT8 ubRandomMiner[RANDOM_HEAD_MINERS] = { 106, 156, 157, 158 }; //UINT8 ubRandomMiner[RANDOM_HEAD_MINERS] = { 106, 156, 157, 158 };
//UINT8 ubMiner, ubMinersPlaced, ubMine; //UINT8 ubMiner, ubMinersPlaced, ubMine;
UINT8 ubThisMine; UINT8 ubThisMine;
UINT16 cnt;
SOLDIERTYPE * pSoldier; SOLDIERTYPE * pSoldier;
// are we in a mine sector, on the surface? // are we in a mine sector, on the surface?
@@ -2783,13 +2782,13 @@ void HandleQuestCodeOnSectorEntry( INT16 sNewSectorX, INT16 sNewSectorY, INT8 bN
// Check to see if any player merc has the Chalice; if so, // Check to see if any player merc has the Chalice; if so,
// note it as stolen // note it as stolen
cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID;
for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt, pSoldier++ ) for ( ; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt )
{ {
if ( pSoldier->bActive ) if ( cnt->bActive )
{ {
if ( FindObj( pSoldier, CHALICE ) != ITEM_NOT_FOUND ) if ( FindObj( cnt, CHALICE ) != ITEM_NOT_FOUND )
{ {
SetFactTrue( FACT_CHALICE_STOLEN ); SetFactTrue( FACT_CHALICE_STOLEN );
} }
@@ -2951,7 +2950,6 @@ extern void SetLastTimePlayerWasInSector( );
// @calls SetLastTimePlayerWasInSector // @calls SetLastTimePlayerWasInSector
BOOLEAN EnterSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ ) BOOLEAN EnterSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ )
{ {
INT32 i;
UNDERGROUND_SECTORINFO *pNode = NULL; UNDERGROUND_SECTORINFO *pNode = NULL;
CHAR8 bFilename[50]; CHAR8 bFilename[50];
@@ -2968,9 +2966,9 @@ BOOLEAN EnterSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ )
//@@@Evaluate //@@@Evaluate
if ( gfWorldLoaded ) if ( gfWorldLoaded )
{ {
for ( i = gTacticalStatus.Team[CIV_TEAM].bFirstID; i <= gTacticalStatus.Team[CIV_TEAM].bLastID; i++ ) for ( SoldierID i = gTacticalStatus.Team[CIV_TEAM].bFirstID; i <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++i )
{ {
SOLDIERTYPE *pSoldier = MercPtrs[i]; SOLDIERTYPE *pSoldier = i;
if ( pSoldier->bActive && pSoldier->bInSector ) if ( pSoldier->bActive && pSoldier->bInSector )
{ {
SetupProfileInsertionDataForSoldier( pSoldier ); SetupProfileInsertionDataForSoldier( pSoldier );
@@ -3099,7 +3097,6 @@ BOOLEAN EnterSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ )
void UpdateMercsInSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ ) void UpdateMercsInSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ )
{ {
INT32 cnt;
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
BOOLEAN fPOWSquadSet = FALSE; BOOLEAN fPOWSquadSet = FALSE;
UINT8 ubPOWSquad = 0; UINT8 ubPOWSquad = 0;
@@ -3129,8 +3126,9 @@ void UpdateMercsInSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ )
//if( !(gTacticalStatus.uiFlags & LOADING_SAVED_GAME ) ) //if( !(gTacticalStatus.uiFlags & LOADING_SAVED_GAME ) )
{ {
for ( cnt = 0, pSoldier = MercPtrs[cnt]; cnt < MAX_NUM_SOLDIERS; ++cnt, ++pSoldier ) for ( SoldierID cnt = 0; cnt < MAX_NUM_SOLDIERS; ++cnt )
{ {
pSoldier = cnt;
if ( gfRestoringEnemySoldiersFromTempFile && if ( gfRestoringEnemySoldiersFromTempFile &&
cnt >= gTacticalStatus.Team[ENEMY_TEAM].bFirstID && cnt >= gTacticalStatus.Team[ENEMY_TEAM].bFirstID &&
cnt <= gTacticalStatus.Team[CREATURE_TEAM].bLastID ) cnt <= gTacticalStatus.Team[CREATURE_TEAM].bLastID )
@@ -3954,7 +3952,6 @@ UINT8 GetStrategicInsertionDataFromAdjacentMoveDirection( UINT8 ubTacticalDirect
void JumpIntoAdjacentSector( UINT8 ubTacticalDirection, UINT8 ubJumpCode, INT32 sAdditionalData )//dnl ch56 151009 void JumpIntoAdjacentSector( UINT8 ubTacticalDirection, UINT8 ubJumpCode, INT32 sAdditionalData )//dnl ch56 151009
{ {
INT32 cnt;
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
SOLDIERTYPE *pValidSoldier = NULL; SOLDIERTYPE *pValidSoldier = NULL;
GROUP *pGroup; GROUP *pGroup;
@@ -3972,11 +3969,12 @@ void JumpIntoAdjacentSector( UINT8 ubTacticalDirection, UINT8 ubJumpCode, INT32
{ {
// TODO: Check flags to see if we can jump! // TODO: Check flags to see if we can jump!
// Move controllable mercs! // Move controllable mercs!
cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID;
// look for all mercs on the same team, // look for all mercs on the same team,
for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; cnt++, pSoldier++ ) for ( ; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt )
{ {
pSoldier = cnt;
// If we are controllable // If we are controllable
if ( OK_CONTROLLABLE_MERC( pSoldier ) && pSoldier->bAssignment == CurrentSquad( ) ) if ( OK_CONTROLLABLE_MERC( pSoldier ) && pSoldier->bAssignment == CurrentSquad( ) )
{ {
@@ -4214,12 +4212,13 @@ void JumpIntoAdjacentSector( UINT8 ubTacticalDirection, UINT8 ubJumpCode, INT32
void JumpIntoEscapedSector(UINT8 ubTacticalDirection) void JumpIntoEscapedSector(UINT8 ubTacticalDirection)
{ {
// Remove any incapacitated mercs from current squads and assign them to new squad // Remove any incapacitated mercs from current squads and assign them to new squad
UINT32 i = gTacticalStatus.Team[gbPlayerNum].bFirstID; SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID;
UINT32 const lastID = gTacticalStatus.Team[gbPlayerNum].bLastID; SoldierID const lastID = gTacticalStatus.Team[gbPlayerNum].bLastID;
INT8 currentSquad = -1; INT8 currentSquad = -1;
for (SOLDIERTYPE* pSoldier = MercPtrs[i]; i <= lastID; ++i, ++pSoldier) for ( ; id <= lastID; ++id )
{ {
SOLDIERTYPE *pSoldier = id;
// Are we not active in sector // Are we not active in sector
if (!pSoldier->bActive || !pSoldier->bInSector || pSoldier->stats.bLife >= OKLIFE) if (!pSoldier->bActive || !pSoldier->bInSector || pSoldier->stats.bLife >= OKLIFE)
{ {
@@ -4833,7 +4832,6 @@ BOOLEAN SoldierOKForSectorExit( SOLDIERTYPE * pSoldier, INT8 bExitDirection, INT
//ATE: Returns FALSE if NOBODY is close enough, 1 if ONLY selected guy is and 2 if all on squad are... //ATE: Returns FALSE if NOBODY is close enough, 1 if ONLY selected guy is and 2 if all on squad are...
BOOLEAN OKForSectorExit( INT8 bExitDirection, INT32 usAdditionalData, UINT32 *puiTraverseTimeInMinutes )//dnl ch56 151009 BOOLEAN OKForSectorExit( INT8 bExitDirection, INT32 usAdditionalData, UINT32 *puiTraverseTimeInMinutes )//dnl ch56 151009
{ {
INT32 cnt;
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
BOOLEAN fAtLeastOneMercControllable = FALSE; BOOLEAN fAtLeastOneMercControllable = FALSE;
BOOLEAN fOnlySelectedGuy = FALSE; BOOLEAN fOnlySelectedGuy = FALSE;
@@ -4876,11 +4874,12 @@ BOOLEAN OKForSectorExit( INT8 bExitDirection, INT32 usAdditionalData, UINT32 *pu
gbPotentiallyAbandonedEPCSlotID = NOBODY; gbPotentiallyAbandonedEPCSlotID = NOBODY;
// Look through all mercs and check if they are within range of east end.... // Look through all mercs and check if they are within range of east end....
cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID;
// look for all mercs on the same team, // look for all mercs on the same team,
for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt, ++pSoldier ) for ( ; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt )
{ {
pSoldier = cnt;
// If we are controllable // If we are controllable
if ( OK_CONTROLLABLE_MERC( pSoldier ) && (pSoldier->bAssignment == CurrentSquad( ) || if ( OK_CONTROLLABLE_MERC( pSoldier ) && (pSoldier->bAssignment == CurrentSquad( ) ||
(pSoldier->bAssignment == VEHICLE && pSoldier->iVehicleId != iHelicopterVehicleId && GetSoldierStructureForVehicle( pSoldier->iVehicleId )->bAssignment == CurrentSquad( ))) ) (pSoldier->bAssignment == VEHICLE && pSoldier->iVehicleId != iHelicopterVehicleId && GetSoldierStructureForVehicle( pSoldier->iVehicleId )->bAssignment == CurrentSquad( ))) )
@@ -5157,7 +5156,7 @@ void SetSamHackStatus( INT16 sSectorX, INT16 sSectorY, INT8 sStatus )
BOOLEAN CanGoToTacticalInSector( INT16 sX, INT16 sY, UINT8 ubZ ) BOOLEAN CanGoToTacticalInSector( INT16 sX, INT16 sY, UINT8 ubZ )
{ {
INT32 cnt; SoldierID cnt;
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
// if not a valid sector // if not a valid sector
@@ -5170,8 +5169,9 @@ BOOLEAN CanGoToTacticalInSector( INT16 sX, INT16 sY, UINT8 ubZ )
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
// look for all living, fighting mercs on player's team. Robot and EPCs qualify! // look for all living, fighting mercs on player's team. Robot and EPCs qualify!
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++, pSoldier++) for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt )
{ {
pSoldier = cnt;
// ARM: now allows loading of sector with all mercs below OKLIFE as long as they're alive // ARM: now allows loading of sector with all mercs below OKLIFE as long as they're alive
if( ( pSoldier->bActive && pSoldier->stats.bLife ) && !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && if( ( pSoldier->bActive && pSoldier->stats.bLife ) && !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) &&
( pSoldier->bAssignment != IN_TRANSIT ) && ( pSoldier->bAssignment != ASSIGNMENT_POW ) && ( pSoldier->bAssignment != ASSIGNMENT_MINIEVENT ) && ( pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND ) && ( pSoldier->bAssignment != IN_TRANSIT ) && ( pSoldier->bAssignment != ASSIGNMENT_POW ) && ( pSoldier->bAssignment != ASSIGNMENT_MINIEVENT ) && ( pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND ) &&
@@ -6430,8 +6430,6 @@ BOOLEAN IsSectorRoad( INT16 sSectorX, INT16 sSectorY )
BOOLEAN HandleDefiniteUnloadingOfWorld( UINT8 ubUnloadCode ) BOOLEAN HandleDefiniteUnloadingOfWorld( UINT8 ubUnloadCode )
{ {
INT32 i;
// clear tactical queue // clear tactical queue
ClearEventQueue( ); ClearEventQueue( );
@@ -6493,9 +6491,9 @@ BOOLEAN HandleDefiniteUnloadingOfWorld( UINT8 ubUnloadCode )
//Setup the tactical existance of the current soldier. //Setup the tactical existance of the current soldier.
//@@@Evaluate //@@@Evaluate
for ( i = gTacticalStatus.Team[CIV_TEAM].bFirstID; i <= gTacticalStatus.Team[CIV_TEAM].bLastID; i++ ) for ( SoldierID i = gTacticalStatus.Team[CIV_TEAM].bFirstID; i <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++i )
{ {
SOLDIERTYPE *pSoldier = MercPtrs[i]; SOLDIERTYPE *pSoldier = i;
if ( pSoldier->bActive && pSoldier->bInSector ) if ( pSoldier->bActive && pSoldier->bInSector )
{ {
SetupProfileInsertionDataForSoldier( pSoldier ); SetupProfileInsertionDataForSoldier( pSoldier );
@@ -6514,18 +6512,18 @@ BOOLEAN HandlePotentialBringUpAutoresolveToFinishBattle( int pSectorX, int pSect
{ {
//We don't have mercs in the sector. Now, we check to see if there are BOTH enemies and militia. If both //We don't have mercs in the sector. Now, we check to see if there are BOTH enemies and militia. If both
//co-exist in the sector, then make them fight for control of the sector via autoresolve. //co-exist in the sector, then make them fight for control of the sector via autoresolve.
for ( int i = gTacticalStatus.Team[ENEMY_TEAM].bFirstID; i <= gTacticalStatus.Team[CREATURE_TEAM].bLastID; i++ ) for ( SoldierID i = gTacticalStatus.Team[ENEMY_TEAM].bFirstID; i <= gTacticalStatus.Team[CREATURE_TEAM].bLastID; ++i )
{ {
SOLDIERTYPE *pEnemy = MercPtrs[i]; SOLDIERTYPE *pEnemy = i;
if ( pEnemy->bActive && pEnemy->stats.bLife ) if ( pEnemy->bActive && pEnemy->stats.bLife )
{ {
if ( pEnemy->sSectorX == pSectorX && if ( pEnemy->sSectorX == pSectorX &&
pEnemy->sSectorY == pSectorY && pEnemy->sSectorY == pSectorY &&
pEnemy->bSectorZ == pSectorZ ) pEnemy->bSectorZ == pSectorZ )
{ //We have enemies, now look for militia! { //We have enemies, now look for militia!
for ( i = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; i <= gTacticalStatus.Team[MILITIA_TEAM].bLastID; i++ ) for ( SoldierID j = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; j <= gTacticalStatus.Team[MILITIA_TEAM].bLastID; ++j )
{ {
SOLDIERTYPE *pMilitia = MercPtrs[i]; SOLDIERTYPE *pMilitia = j;
if ( pMilitia->bActive && pMilitia->stats.bLife && pMilitia->bSide == OUR_TEAM ) if ( pMilitia->bActive && pMilitia->stats.bLife && pMilitia->bSide == OUR_TEAM )
{ {
if ( pMilitia->sSectorX == pSectorX && if ( pMilitia->sSectorX == pSectorX &&
@@ -6567,7 +6565,6 @@ BOOLEAN HandlePotentialBringUpAutoresolveToFinishBattle( int pSectorX, int pSect
BOOLEAN CheckAndHandleUnloadingOfCurrentWorld( ) BOOLEAN CheckAndHandleUnloadingOfCurrentWorld( )
{ {
INT32 i;
INT16 sBattleSectorX, sBattleSectorY, sBattleSectorZ; INT16 sBattleSectorX, sBattleSectorY, sBattleSectorZ;
//Don't bother checking this if we don't have a world loaded. //Don't bother checking this if we don't have a world loaded.
@@ -6592,9 +6589,9 @@ BOOLEAN CheckAndHandleUnloadingOfCurrentWorld( )
{ //The user has decided to let the game autoresolve the current battle. { //The user has decided to let the game autoresolve the current battle.
if ( gWorldSectorX == sBattleSectorX && gWorldSectorY == sBattleSectorY && gbWorldSectorZ == sBattleSectorZ ) if ( gWorldSectorX == sBattleSectorX && gWorldSectorY == sBattleSectorY && gbWorldSectorZ == sBattleSectorZ )
{ {
for ( i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; i++ ) for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i )
{ //If we have a live and valid soldier { //If we have a live and valid soldier
SOLDIERTYPE *pSoldier = MercPtrs[i]; SOLDIERTYPE *pSoldier = i;
if ( pSoldier->bActive && pSoldier->stats.bLife && !pSoldier->flags.fBetweenSectors && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && !AM_A_ROBOT( pSoldier ) && !AM_AN_EPC( pSoldier ) ) if ( pSoldier->bActive && pSoldier->stats.bLife && !pSoldier->flags.fBetweenSectors && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && !AM_A_ROBOT( pSoldier ) && !AM_AN_EPC( pSoldier ) )
{ {
if ( pSoldier->sSectorX == gWorldSectorX && if ( pSoldier->sSectorX == gWorldSectorX &&
@@ -6610,9 +6607,9 @@ BOOLEAN CheckAndHandleUnloadingOfCurrentWorld( )
} }
else else
{ //Check and see if we have any live mercs in the sector. { //Check and see if we have any live mercs in the sector.
for ( i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; i++ ) for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i )
{ //If we have a live and valid soldier { //If we have a live and valid soldier
SOLDIERTYPE *pSoldier = MercPtrs[i]; SOLDIERTYPE *pSoldier = i;
if ( pSoldier->bActive && pSoldier->stats.bLife && !pSoldier->flags.fBetweenSectors && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && !AM_A_ROBOT( pSoldier ) && !AM_AN_EPC( pSoldier ) ) if ( pSoldier->bActive && pSoldier->stats.bLife && !pSoldier->flags.fBetweenSectors && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && !AM_A_ROBOT( pSoldier ) && !AM_AN_EPC( pSoldier ) )
{ {
if ( pSoldier->sSectorX == gWorldSectorX && if ( pSoldier->sSectorX == gWorldSectorX &&
+14 -12
View File
@@ -187,7 +187,6 @@ void ScheduleAirRaid( AIR_RAID_DEFINITION *pAirRaidDef )
BOOLEAN BeginAirRaid( ) BOOLEAN BeginAirRaid( )
{ {
INT32 cnt=0;
BOOLEAN fOK = FALSE; BOOLEAN fOK = FALSE;
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
gfQuoteSaid = FALSE; gfQuoteSaid = FALSE;
@@ -215,9 +214,10 @@ BOOLEAN BeginAirRaid( )
// Do we have any guys in here... // Do we have any guys in here...
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("BeginAirRaid: check for mercs: first id = %d, last id = %d ",gTacticalStatus.Team[ gbPlayerNum ].bFirstID, gTacticalStatus.Team[ gbPlayerNum ].bLastID)); DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("BeginAirRaid: check for mercs: first id = %d, last id = %d ",gTacticalStatus.Team[ gbPlayerNum ].bFirstID, gTacticalStatus.Team[ gbPlayerNum ].bLastID));
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
for ( cnt = 0, pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++, pSoldier++) for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt )
{ {
pSoldier = cnt;
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("BeginAirRaid: soldier id = %d, active = %d",pSoldier->ubID,pSoldier->bActive)); DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("BeginAirRaid: soldier id = %d, active = %d",pSoldier->ubID,pSoldier->bActive));
if ( pSoldier->bActive ) if ( pSoldier->bActive )
{ {
@@ -309,18 +309,18 @@ INT32 PickLocationNearAnyMercInSector( )
UINT16 ubNumMercs = 0; UINT16 ubNumMercs = 0;
UINT16 ubChosenMerc; UINT16 ubChosenMerc;
SOLDIERTYPE *pTeamSoldier; SOLDIERTYPE *pTeamSoldier;
INT32 cnt=0;
// 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
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,"PickLocationNearAnyMercInSector"); DebugMsg(TOPIC_JA2,DBG_LEVEL_3,"PickLocationNearAnyMercInSector");
// set up soldier ptr as first element in mercptrs list // set up soldier ptr as first element in mercptrs list
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
// run through list // run through list
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("PickLocationNearAnyMercInSector: total guys = %d", gTacticalStatus.Team[ gbPlayerNum ].bLastID)); DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("PickLocationNearAnyMercInSector: total guys = %d", gTacticalStatus.Team[ gbPlayerNum ].bLastID));
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++ ) for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt )
{ {
pTeamSoldier = cnt;
// Add guy if he's a candidate... // Add guy if he's a candidate...
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("PickLocationNearAnyMercInSector: looping %d",cnt)); DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("PickLocationNearAnyMercInSector: looping %d",cnt));
if ( OK_INSECTOR_MERC( pTeamSoldier ) ) if ( OK_INSECTOR_MERC( pTeamSoldier ) )
@@ -1057,9 +1057,10 @@ void HandleAirRaid( )
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("HandleAirRaid: check for mercs: first id = %d, last id = %d ",gTacticalStatus.Team[ gbPlayerNum ].bFirstID, gTacticalStatus.Team[ gbPlayerNum ].bLastID)); DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("HandleAirRaid: check for mercs: first id = %d, last id = %d ",gTacticalStatus.Team[ gbPlayerNum ].bFirstID, gTacticalStatus.Team[ gbPlayerNum ].bLastID));
SOLDIERTYPE * pSoldier; SOLDIERTYPE * pSoldier;
BOOLEAN fOK = FALSE; BOOLEAN fOK = FALSE;
int cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
for ( cnt = 0, pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++, pSoldier++) for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt )
{ {
pSoldier = cnt;
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("HandleAirRaid: soldier id = %d, active = %d",pSoldier->ubID,pSoldier->bActive)); DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("HandleAirRaid: soldier id = %d, active = %d",pSoldier->ubID,pSoldier->bActive));
if ( pSoldier->bActive ) if ( pSoldier->bActive )
{ {
@@ -1447,12 +1448,12 @@ void EndAirRaid( )
if ( !gTacticalStatus.Team[ ENEMY_TEAM ].bTeamActive && !gTacticalStatus.Team[ CREATURE_TEAM ].bTeamActive ) if ( !gTacticalStatus.Team[ ENEMY_TEAM ].bTeamActive && !gTacticalStatus.Team[ CREATURE_TEAM ].bTeamActive )
{ {
SOLDIERTYPE * pTeamSoldier; SOLDIERTYPE * pTeamSoldier;
INT32 cnt;
// Loop through all militia and restore them to peaceful status // Loop through all militia and restore them to peaceful status
cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; SoldierID cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID;
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++,pTeamSoldier++) for ( ; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++cnt )
{ {
pTeamSoldier = cnt;
if ( pTeamSoldier->bActive && pTeamSoldier->bInSector ) if ( pTeamSoldier->bActive && pTeamSoldier->bInSector )
{ {
pTeamSoldier->aiData.bAlertStatus = STATUS_GREEN; pTeamSoldier->aiData.bAlertStatus = STATUS_GREEN;
@@ -1462,8 +1463,9 @@ void EndAirRaid( )
cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID;
// Loop through all civs and restore them to peaceful status // Loop through all civs and restore them to peaceful status
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; cnt++,pTeamSoldier++) for ( ; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++cnt )
{ {
pTeamSoldier = cnt;
if ( pTeamSoldier->bActive && pTeamSoldier->bInSector ) if ( pTeamSoldier->bActive && pTeamSoldier->bInSector )
{ {
pTeamSoldier->aiData.bAlertStatus = STATUS_GREEN; pTeamSoldier->aiData.bAlertStatus = STATUS_GREEN;
+2 -5
View File
@@ -478,8 +478,6 @@ BOOLEAN AnotherFightPossible( void )
// a player has at least OKLIFE + 5 life // a player has at least OKLIFE + 5 life
// and at least one fight HAS occurred // and at least one fight HAS occurred
UINT16 ubLoop;
SOLDIERTYPE * pSoldier;
UINT8 ubAvailable; UINT8 ubAvailable;
ubAvailable = BoxersAvailable(); ubAvailable = BoxersAvailable();
@@ -490,9 +488,8 @@ BOOLEAN AnotherFightPossible( void )
} }
// Loop through all mercs on player team // Loop through all mercs on player team
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; SoldierID pSoldier = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
pSoldier = MercPtrs[ ubLoop ]; for ( ; pSoldier <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++pSoldier )
for ( ; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubLoop, pSoldier++ )
{ {
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > (OKLIFE + 5) && !pSoldier->bCollapsed ) if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > (OKLIFE + 5) && !pSoldier->bCollapsed )
{ {
+4 -8
View File
@@ -1836,13 +1836,9 @@ void TestDumpStatChanges(void)
void AwardExperienceBonusToActiveSquad( UINT8 ubExpBonusType ) void AwardExperienceBonusToActiveSquad( UINT8 ubExpBonusType )
{ {
UINT16 usXPs = 0;
UINT16 ubGuynum;
SOLDIERTYPE *pSoldier;
Assert ( ubExpBonusType < NUM_EXP_BONUS_TYPES ); Assert ( ubExpBonusType < NUM_EXP_BONUS_TYPES );
UINT16 usXPs = 0;
switch ( ubExpBonusType ) switch ( ubExpBonusType )
{ {
case EXP_BONUS_MINIMUM: usXPs = 25; break; case EXP_BONUS_MINIMUM: usXPs = 25; break;
@@ -1853,9 +1849,9 @@ void AwardExperienceBonusToActiveSquad( UINT8 ubExpBonusType )
} }
// to do: find guys in sector on the currently active squad, those that are conscious get this amount in XPs // to do: find guys in sector on the currently active squad, those that are conscious get this amount in XPs
for ( ubGuynum = gTacticalStatus.Team[ gbPlayerNum ].bFirstID, pSoldier = MercPtrs[ ubGuynum ]; for ( SoldierID pSoldier = gTacticalStatus.Team[ gbPlayerNum ].bFirstID ;
ubGuynum <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; pSoldier <= gTacticalStatus.Team[ gbPlayerNum ].bLastID;
ubGuynum++, pSoldier++ ) ++pSoldier)
{ {
if ( pSoldier->bActive && pSoldier->bInSector && IsMercOnCurrentSquad( pSoldier ) && ( pSoldier->stats.bLife >= CONSCIOUSNESS ) && if ( pSoldier->bActive && pSoldier->bInSector && IsMercOnCurrentSquad( pSoldier ) && ( pSoldier->stats.bLife >= CONSCIOUSNESS ) &&
!( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && !AM_A_ROBOT( pSoldier ) ) !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && !AM_A_ROBOT( pSoldier ) )
+20 -18
View File
@@ -1759,9 +1759,10 @@ void AdditionalTacticalCharacterDialogue_AllInSector(INT16 aSectorX, INT16 aSect
UINT16 usEventNr, UINT32 aData1, UINT32 aData2, UINT32 aData3, INT32 aAroundGridno, INT32 aRadius ) UINT16 usEventNr, UINT32 aData1, UINT32 aData2, UINT32 aData3, INT32 aAroundGridno, INT32 aRadius )
{ {
SOLDIERTYPE* pSoldier; SOLDIERTYPE* pSoldier;
int cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID;
for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt, pSoldier++ ) for ( ; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt )
{ {
pSoldier = cnt;
if ( pSoldier->stats.bLife >= OKLIFE && pSoldier->bActive && if ( pSoldier->stats.bLife >= OKLIFE && pSoldier->bActive &&
pSoldier->ubProfile != ausIgnoreProfile && pSoldier->ubProfile != ausIgnoreProfile &&
pSoldier->sSectorX == aSectorX && pSoldier->sSectorY == aSectorY && pSoldier->bSectorZ == aSectorZ && pSoldier->sSectorX == aSectorX && pSoldier->sSectorY == aSectorY && pSoldier->bSectorZ == aSectorZ &&
@@ -3122,10 +3123,10 @@ void HandleDialogueEnd( FACETYPE *pFace )
break; break;
default: default:
// select random enemy, who we see, who sees us and isn't deaf // select random enemy, who we see, who sees us and isn't deaf
for(UINT16 cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID ; cnt++ ) for( SoldierID cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID ; ++cnt )
{ {
if( MercPtrs[cnt] != NULL && MercPtrs[cnt]->aiData.bOppList[pSoldier->ubID] == SEEN_CURRENTLY if( cnt->aiData.bOppList[pSoldier->ubID] == SEEN_CURRENTLY
&& MercPtrs[pSoldier->ubID]->aiData.bOppList[cnt] == SEEN_CURRENTLY && !( MercPtrs[cnt]->bDeafenedCounter > 0 ) ) && pSoldier->ubID->aiData.bOppList[cnt] == SEEN_CURRENTLY && !( cnt->bDeafenedCounter > 0 ) )
{ {
ubSeenEnemies[ubSeenEnemiesCnt] = cnt; ubSeenEnemies[ubSeenEnemiesCnt] = cnt;
ubSeenEnemiesCnt++; ubSeenEnemiesCnt++;
@@ -3297,16 +3298,16 @@ void SayQuoteFromAnyBodyInSector( UINT16 usQuoteNum )
UINT16 ubNumMercs = 0; UINT16 ubNumMercs = 0;
UINT16 ubChosenMerc; UINT16 ubChosenMerc;
SOLDIERTYPE *pTeamSoldier; SOLDIERTYPE *pTeamSoldier;
INT32 cnt;
// 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
// set up soldier ptr as first element in mercptrs list // set up soldier ptr as first element in mercptrs list
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; SoldierID id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
// run through list // run through list
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++ ) for ( ; id <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++id )
{ {
pTeamSoldier = id;
// 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 )
{ {
@@ -3329,7 +3330,7 @@ void SayQuoteFromAnyBodyInSector( UINT16 usQuoteNum )
#endif #endif
} }
ubMercsInSector[ ubNumMercs ] = (UINT16)cnt; ubMercsInSector[ ubNumMercs ] = (UINT16)id;
ubNumMercs++; ubNumMercs++;
} }
} }
@@ -3342,7 +3343,7 @@ void SayQuoteFromAnyBodyInSector( UINT16 usQuoteNum )
// If we are air raid, AND red exists somewhere... // If we are air raid, AND red exists somewhere...
if ( usQuoteNum == QUOTE_AIR_RAID ) if ( usQuoteNum == QUOTE_AIR_RAID )
{ {
for ( cnt = 0; cnt < ubNumMercs; cnt++ ) for ( UINT16 cnt = 0; cnt < ubNumMercs; cnt++ )
{ {
if ( ubMercsInSector[ cnt ] == 11 ) if ( ubMercsInSector[ cnt ] == 11 )
{ {
@@ -3366,16 +3367,16 @@ void SayQuoteFromAnyBodyInThisSector( INT16 sSectorX, INT16 sSectorY, INT8 bSect
UINT16 ubNumMercs = 0; UINT16 ubNumMercs = 0;
UINT16 ubChosenMerc; UINT16 ubChosenMerc;
SOLDIERTYPE *pTeamSoldier; SOLDIERTYPE *pTeamSoldier;
INT32 cnt;
// 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
// set up soldier ptr as first element in mercptrs list // set up soldier ptr as first element in mercptrs list
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
// run through list // run through list
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++ ) for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt )
{ {
pTeamSoldier = cnt;
if ( pTeamSoldier->bActive ) if ( pTeamSoldier->bActive )
{ {
// Add guy if he's a candidate... // Add guy if he's a candidate...
@@ -3419,16 +3420,16 @@ void SayQuoteFromNearbyMercInSector( INT32 sGridNo, INT8 bDistance, UINT16 usQuo
UINT16 ubNumMercs = 0; UINT16 ubNumMercs = 0;
UINT16 ubChosenMerc; UINT16 ubChosenMerc;
SOLDIERTYPE *pTeamSoldier; SOLDIERTYPE *pTeamSoldier;
INT32 cnt;
// 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
// set up soldier ptr as first element in mercptrs list // set up soldier ptr as first element in mercptrs list
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
// run through list // run through list
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++ ) for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt )
{ {
pTeamSoldier = cnt;
// Add guy if he's a candidate... // Add guy if he's a candidate...
if ( OK_INSECTOR_MERC( pTeamSoldier ) && PythSpacesAway( sGridNo, pTeamSoldier->sGridNo ) < bDistance && !AM_AN_EPC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !(AM_A_ROBOT( pTeamSoldier )) && !pTeamSoldier->flags.fMercAsleep && if ( OK_INSECTOR_MERC( pTeamSoldier ) && PythSpacesAway( sGridNo, pTeamSoldier->sGridNo ) < bDistance && !AM_AN_EPC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !(AM_A_ROBOT( pTeamSoldier )) && !pTeamSoldier->flags.fMercAsleep &&
SoldierTo3DLocationLineOfSightTest( pTeamSoldier, sGridNo, 0, 0, TRUE ) ) SoldierTo3DLocationLineOfSightTest( pTeamSoldier, sGridNo, 0, 0, TRUE ) )
@@ -3464,14 +3465,15 @@ void SayQuote58FromNearbyMercInSector( INT32 sGridNo, INT8 bDistance, UINT16 usQ
UINT16 ubNumMercs = 0; UINT16 ubNumMercs = 0;
UINT16 ubChosenMerc; UINT16 ubChosenMerc;
SOLDIERTYPE *pTeamSoldier; SOLDIERTYPE *pTeamSoldier;
INT32 cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID;
// 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
// set up soldier ptr as first element in mercptrs list // set up soldier ptr as first element in mercptrs list
// run through list // run through list
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt,pTeamSoldier++ ) for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt )
{ {
pTeamSoldier = cnt;
// Add guy if he's a candidate... // Add guy if he's a candidate...
if ( OK_INSECTOR_MERC( pTeamSoldier ) && PythSpacesAway( sGridNo, pTeamSoldier->sGridNo ) < bDistance && !AM_AN_EPC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !(AM_A_ROBOT( pTeamSoldier )) && !pTeamSoldier->flags.fMercAsleep && if ( OK_INSECTOR_MERC( pTeamSoldier ) && PythSpacesAway( sGridNo, pTeamSoldier->sGridNo ) < bDistance && !AM_AN_EPC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !(AM_A_ROBOT( pTeamSoldier )) && !pTeamSoldier->flags.fMercAsleep &&
SoldierTo3DLocationLineOfSightTest( pTeamSoldier, sGridNo, 0, 0, TRUE ) ) SoldierTo3DLocationLineOfSightTest( pTeamSoldier, sGridNo, 0, 0, TRUE ) )
+3 -2
View File
@@ -711,9 +711,10 @@ void CalculateCover()
if (gTacticalStatus.fAtLeastOneGuyOnMultiSelect) // view of selected mercs if (gTacticalStatus.fAtLeastOneGuyOnMultiSelect) // view of selected mercs
{ {
// OK, loop through all guys who are 'multi-selected' and // OK, loop through all guys who are 'multi-selected' and
INT32 cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID;
for (pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt, ++pSoldier) for ( ; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt )
{ {
pSoldier = cnt;
if (pSoldier->bActive && pSoldier->bInSector) if (pSoldier->bActive && pSoldier->bInSector)
{ {
if (pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED) if (pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED)
+5 -5
View File
@@ -407,16 +407,16 @@ BOOLEAN MercDrugged( SOLDIERTYPE *pSoldier )
void HourlyDrugUpdate( ) void HourlyDrugUpdate( )
{ {
for ( UINT16 ubID = gTacticalStatus.Team[OUR_TEAM].bFirstID; ubID <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++ubID ) for ( SoldierID ubID = gTacticalStatus.Team[OUR_TEAM].bFirstID; ubID <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++ubID )
{ {
// every hour, we lower our alcohol counter // every hour, we lower our alcohol counter
if ( MercPtrs[ubID]->newdrugs.drinkstaken > 0.0f ) if ( ubID->newdrugs.drinkstaken > 0.0f )
{ {
MercPtrs[ubID]->newdrugs.drinkstaken = max( 0.0, MercPtrs[ubID]->newdrugs.drinkstaken - 0.15f ); ubID->newdrugs.drinkstaken = max( 0.0, ubID->newdrugs.drinkstaken - 0.15f );
if ( MercPtrs[ubID]->newdrugs.drinkstaken <= 0.0f ) if ( ubID->newdrugs.drinkstaken <= 0.0f )
{ {
MercPtrs[ubID]->usSoldierFlagMask2 &= ~SOLDIER_HUNGOVER; ubID->usSoldierFlagMask2 &= ~SOLDIER_HUNGOVER;
} }
} }
} }
+40 -35
View File
@@ -1632,11 +1632,11 @@ void HandleDynamicOpinionsDailyRefresh( )
RolloverDynamicOpinions( usProfileA ); RolloverDynamicOpinions( usProfileA );
} }
SOLDIERTYPE* pSoldier = NULL; SoldierID bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID;
UINT16 bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID;
UINT16 bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; for ( ; bMercID <= bLastTeamID; ++bMercID )
for ( pSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, pSoldier++ )
{ {
SOLDIERTYPE* pSoldier = bMercID;
if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE &&
!(pSoldier->bAssignment == IN_TRANSIT || AM_A_ROBOT(pSoldier) || !(pSoldier->bAssignment == IN_TRANSIT || AM_A_ROBOT(pSoldier) ||
pSoldier->bAssignment == ASSIGNMENT_DEAD) ) pSoldier->bAssignment == ASSIGNMENT_DEAD) )
@@ -1672,11 +1672,11 @@ void RolloverDynamicOpinions( UINT8 usProfileA )
// check wether other people are friends with someone else we hate. All persons must be in Arulco // check wether other people are friends with someone else we hate. All persons must be in Arulco
void CheckForFriendsofHated( SOLDIERTYPE* pSoldier ) void CheckForFriendsofHated( SOLDIERTYPE* pSoldier )
{ {
UINT16 bMercID, bOtherID, bThirdID, bLastTeamID; SoldierID bMercID, bOtherID, bThirdID, bLastTeamID;
INT8 bOpinion = -1; INT8 bOpinion = -1;
INT8 bSecondOpinion = -1; INT8 bSecondOpinion = -1;
SOLDIERTYPE* pOtherSoldier; SOLDIERTYPE *pOtherSoldier;
SOLDIERTYPE* pThirdSoldier; SOLDIERTYPE *pThirdSoldier;
// make sure we ourselves aren't in transit // make sure we ourselves aren't in transit
if ( !pSoldier->bActive || pSoldier->ubProfile == NO_PROFILE || AM_A_ROBOT(pSoldier) || pSoldier->bAssignment == IN_TRANSIT || pSoldier->bAssignment == ASSIGNMENT_DEAD ) if ( !pSoldier->bActive || pSoldier->ubProfile == NO_PROFILE || AM_A_ROBOT(pSoldier) || pSoldier->bAssignment == IN_TRANSIT || pSoldier->bAssignment == ASSIGNMENT_DEAD )
@@ -1687,8 +1687,9 @@ void CheckForFriendsofHated( SOLDIERTYPE* pSoldier )
// loop through all other mercs // loop through all other mercs
bOtherID = gTacticalStatus.Team[gbPlayerNum].bFirstID; bOtherID = gTacticalStatus.Team[gbPlayerNum].bFirstID;
for ( pOtherSoldier = MercPtrs[bOtherID]; bOtherID <= bLastTeamID; ++bOtherID, pOtherSoldier++ ) for ( ; bOtherID <= bLastTeamID; ++bOtherID )
{ {
pOtherSoldier = bOtherID;
// skip past ourselves and all inactive mercs // skip past ourselves and all inactive mercs
if ( bOtherID != bMercID && pOtherSoldier->bActive && pOtherSoldier->ubProfile != NO_PROFILE && if ( bOtherID != bMercID && pOtherSoldier->bActive && pOtherSoldier->ubProfile != NO_PROFILE &&
!(pOtherSoldier->bAssignment == IN_TRANSIT || !(pOtherSoldier->bAssignment == IN_TRANSIT ||
@@ -1702,8 +1703,9 @@ void CheckForFriendsofHated( SOLDIERTYPE* pSoldier )
// there is someone in our team that we hate. We dislike his friends somewhat, purely because they like our foe // there is someone in our team that we hate. We dislike his friends somewhat, purely because they like our foe
// loop through all other mercs // loop through all other mercs
bThirdID = gTacticalStatus.Team[gbPlayerNum].bFirstID; bThirdID = gTacticalStatus.Team[gbPlayerNum].bFirstID;
for ( pThirdSoldier = MercPtrs[bThirdID]; bThirdID <= bLastTeamID; ++bThirdID, pThirdSoldier++ ) for ( ; bThirdID <= bLastTeamID; ++bThirdID )
{ {
pThirdSoldier = bThirdID;
// skip past ourselves and all inactive mercs // skip past ourselves and all inactive mercs
if ( bThirdID != bMercID && bThirdID != bOtherID && pThirdSoldier->bActive && pThirdSoldier->ubProfile != NO_PROFILE && if ( bThirdID != bMercID && bThirdID != bOtherID && pThirdSoldier->bActive && pThirdSoldier->ubProfile != NO_PROFILE &&
!(pThirdSoldier->bAssignment == IN_TRANSIT || !(pThirdSoldier->bAssignment == IN_TRANSIT ||
@@ -1843,11 +1845,11 @@ void HandleDynamicOpinionTeamDrinking( SOLDIERTYPE* pSoldier )
if ( !pSoldier || pSoldier->ubProfile == NO_PROFILE || AM_A_ROBOT(pSoldier) || pSoldier->newdrugs.drinkstaken <= 0.0 ) if ( !pSoldier || pSoldier->ubProfile == NO_PROFILE || AM_A_ROBOT(pSoldier) || pSoldier->newdrugs.drinkstaken <= 0.0 )
return; return;
SOLDIERTYPE* pTeamSoldier = NULL; SoldierID bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID;
UINT16 bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID;
UINT16 bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; for ( ; bMercID <= bLastTeamID; ++bMercID)
for ( pTeamSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, pTeamSoldier++ )
{ {
SOLDIERTYPE* pTeamSoldier = bMercID;
// everybody other merc in the same sector can get updated if they are drugged too // everybody other merc in the same sector can get updated if they are drugged too
if ( pTeamSoldier->bActive && pTeamSoldier->ubProfile != NO_PROFILE && pTeamSoldier->ubProfile != pSoldier->ubProfile && if ( pTeamSoldier->bActive && pTeamSoldier->ubProfile != NO_PROFILE && pTeamSoldier->ubProfile != pSoldier->ubProfile &&
pTeamSoldier->sSectorX == pSoldier->sSectorX && pTeamSoldier->sSectorY == pSoldier->sSectorY && pTeamSoldier->bSectorZ == pSoldier->bSectorZ && pTeamSoldier->sSectorX == pSoldier->sSectorX && pTeamSoldier->sSectorY == pSoldier->sSectorY && pTeamSoldier->bSectorZ == pSoldier->bSectorZ &&
@@ -1902,11 +1904,11 @@ void HandleDynamicOpinionTeaching( SOLDIERTYPE* pSoldier, UINT8 ubStat )
break; break;
} }
SOLDIERTYPE* pTeamSoldier = NULL; SoldierID bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID;
UINT16 bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID;
UINT16 bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; for ( ; bMercID <= bLastTeamID; ++bMercID)
for ( pTeamSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, pTeamSoldier++ )
{ {
SOLDIERTYPE* pTeamSoldier = bMercID;
// award event for every trainer in this sector // award event for every trainer in this sector
if ( pTeamSoldier->bActive && pTeamSoldier->ubProfile != NO_PROFILE && pTeamSoldier->ubProfile != pSoldier->ubProfile && if ( pTeamSoldier->bActive && pTeamSoldier->ubProfile != NO_PROFILE && pTeamSoldier->ubProfile != pSoldier->ubProfile &&
pTeamSoldier->sSectorX == pSoldier->sSectorX && pTeamSoldier->sSectorY == pSoldier->sSectorY && pTeamSoldier->bSectorZ == pSoldier->bSectorZ && pTeamSoldier->sSectorX == pSoldier->sSectorX && pTeamSoldier->sSectorY == pSoldier->sSectorY && pTeamSoldier->bSectorZ == pSoldier->bSectorZ &&
@@ -1939,16 +1941,16 @@ UINT32 GetSoldierLeaderRating( SOLDIERTYPE* pSoldier )
} }
UINT16 GetBestMercLeaderInSector( INT16 sX, INT16 sY, INT8 sZ ) SoldierID GetBestMercLeaderInSector( INT16 sX, INT16 sY, INT8 sZ )
{ {
UINT32 highestrating = 0; UINT32 highestrating = 0;
UINT16 bestid = NOBODY; SoldierID bestid = NOBODY;
SoldierID bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID;
SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID;
SOLDIERTYPE* pSoldier = NULL; for ( ; bMercID <= bLastTeamID; ++bMercID )
UINT16 bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID;
UINT16 bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID;
for ( pSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, ++pSoldier )
{ {
SOLDIERTYPE* pSoldier = bMercID;
// everybody other merc in the same sector gets annoyed // everybody other merc in the same sector gets annoyed
if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE &&
pSoldier->sSectorX == sX && pSoldier->sSectorY == sY && pSoldier->bSectorZ == sZ && pSoldier->sSectorX == sX && pSoldier->sSectorY == sY && pSoldier->bSectorZ == sZ &&
@@ -1971,10 +1973,11 @@ UINT8 GetRandomMercInSectorNotInList( INT16 sX, INT16 sY, INT8 sZ, std::vector<U
{ {
std::vector<UINT16> resultvector; std::vector<UINT16> resultvector;
SOLDIERTYPE* pTeamSoldier = NULL; SOLDIERTYPE* pTeamSoldier = NULL;
UINT16 bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; SoldierID bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID;
UINT16 bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID;
for ( pTeamSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, ++pTeamSoldier ) for ( ; bMercID <= bLastTeamID; ++bMercID )
{ {
pTeamSoldier = bMercID;
// everybody other merc in the same sector gets annoyed // everybody other merc in the same sector gets annoyed
if ( pTeamSoldier->bActive && pTeamSoldier->ubProfile != NO_PROFILE && if ( pTeamSoldier->bActive && pTeamSoldier->ubProfile != NO_PROFILE &&
pTeamSoldier->sSectorX == sX && pTeamSoldier->sSectorY == sY && pTeamSoldier->bSectorZ == sZ && pTeamSoldier->sSectorX == sX && pTeamSoldier->sSectorY == sY && pTeamSoldier->bSectorZ == sZ &&
@@ -2017,10 +2020,11 @@ UINT8 GetFittingInterjectorProfile( UINT8 usEvent, UINT8 usProfileVictim, UINT8
std::vector<UINT8> profilevector; std::vector<UINT8> profilevector;
SOLDIERTYPE* pTeamSoldier = NULL; SOLDIERTYPE* pTeamSoldier = NULL;
UINT16 bMercID = gTacticalStatus.Team[pSoldierVictim->bTeam].bFirstID; SoldierID bMercID = gTacticalStatus.Team[pSoldierVictim->bTeam].bFirstID;
UINT16 bLastTeamID = gTacticalStatus.Team[pSoldierVictim->bTeam].bLastID; SoldierID bLastTeamID = gTacticalStatus.Team[pSoldierVictim->bTeam].bLastID;
for ( pTeamSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, pTeamSoldier++ ) for ( ; bMercID <= bLastTeamID; ++bMercID )
{ {
pTeamSoldier = bMercID;
// only people that are here // only people that are here
if ( !pTeamSoldier->bActive || pTeamSoldier->bAssignment == IN_TRANSIT || pTeamSoldier->bAssignment == ASSIGNMENT_DEAD || pTeamSoldier->bAssignment == ASSIGNMENT_POW || pTeamSoldier->bAssignment == ASSIGNMENT_MINIEVENT || pTeamSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND ) if ( !pTeamSoldier->bActive || pTeamSoldier->bAssignment == IN_TRANSIT || pTeamSoldier->bAssignment == ASSIGNMENT_DEAD || pTeamSoldier->bAssignment == ASSIGNMENT_POW || pTeamSoldier->bAssignment == ASSIGNMENT_MINIEVENT || pTeamSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND )
continue; continue;
@@ -2156,10 +2160,11 @@ void HandleDynamicOpinionChange( SOLDIERTYPE* pSoldier, UINT8 usEvent, BOOLEAN f
UINT8 usEventUsed; // it is possible that the individual event is switched UINT8 usEventUsed; // it is possible that the individual event is switched
SOLDIERTYPE* pTeamSoldier = NULL; SOLDIERTYPE* pTeamSoldier = NULL;
UINT16 bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; SoldierID bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID;
UINT16 bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID;
for ( pTeamSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, pTeamSoldier++ ) for ( ; bMercID <= bLastTeamID; ++bMercID )
{ {
pTeamSoldier = bMercID;
// we test several conditions before we allow adding an opinion // we test several conditions before we allow adding an opinion
// other merc must be active, have a profile, be someone else and not be in transit or dead // other merc must be active, have a profile, be someone else and not be in transit or dead
if ( pTeamSoldier->bActive && pTeamSoldier->ubProfile != NO_PROFILE && pTeamSoldier->ubProfile != pSoldier->ubProfile && if ( pTeamSoldier->bActive && pTeamSoldier->ubProfile != NO_PROFILE && pTeamSoldier->ubProfile != pSoldier->ubProfile &&
+1 -1
View File
@@ -480,7 +480,7 @@ void HandleDynamicOpinionTeaching( SOLDIERTYPE* pSoldier, UINT8 ubStat );
// some events require a 'leader' - merc the team will regard as the one being in charge, and subsequently being praised or damned for the way things develop // some events require a 'leader' - merc the team will regard as the one being in charge, and subsequently being praised or damned for the way things develop
UINT32 GetSoldierLeaderRating( SOLDIERTYPE* pSoldier ); UINT32 GetSoldierLeaderRating( SOLDIERTYPE* pSoldier );
UINT16 GetBestMercLeaderInSector( INT16 sX, INT16 sY, INT8 sZ ); SoldierID GetBestMercLeaderInSector( INT16 sX, INT16 sY, INT8 sZ );
// get id of a random merc in a sector, provided one exists // get id of a random merc in a sector, provided one exists
UINT8 GetRandomMercInSectorNotInList( INT16 sX, INT16 sY, INT8 sZ, std::vector<UINT8> aTaboo, BOOLEAN fImpOnly ); UINT8 GetRandomMercInSectorNotInList( INT16 sX, INT16 sY, INT8 sZ, std::vector<UINT8> aTaboo, BOOLEAN fImpOnly );
+15 -11
View File
@@ -240,15 +240,16 @@ void DoneFadeInKilledQueen( void )
void DoneFadeOutKilledQueen( void ) void DoneFadeOutKilledQueen( void )
{ {
INT32 cnt; SoldierID cnt;
SOLDIERTYPE *pSoldier, *pTeamSoldier; SOLDIERTYPE *pSoldier, *pTeamSoldier;
// For one, loop through our current squad and move them over // For one, loop through our current squad and move them over
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
// look for all mercs on the same team, // look for all mercs on the same team,
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++) for (; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt )
{ {
pSoldier = cnt;
// Are we in this sector, On the current squad? // Are we in this sector, On the current squad?
if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && pSoldier->bInSector && pSoldier->bAssignment == CurrentSquad( ) ) if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && pSoldier->bInSector && pSoldier->bAssignment == CurrentSquad( ) )
{ {
@@ -272,8 +273,9 @@ void DoneFadeOutKilledQueen( void )
cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID;
// look for all mercs on the same team, // look for all mercs on the same team,
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; cnt++,pTeamSoldier++) for ( ; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; ++cnt )
{ {
pSoldier = cnt;
// Are we active and in sector..... // Are we active and in sector.....
if ( pTeamSoldier->bActive ) if ( pTeamSoldier->bActive )
{ {
@@ -350,7 +352,7 @@ void HandleDoneLastKilledQueenQuote( )
void EndQueenDeathEndgameBeginEndCimenatic( ) void EndQueenDeathEndgameBeginEndCimenatic( )
{ {
INT32 cnt; SoldierID cnt;
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
// Start end cimimatic.... // Start end cimimatic....
@@ -360,8 +362,9 @@ void EndQueenDeathEndgameBeginEndCimenatic( )
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
// look for all mercs on the same team, // look for all mercs on the same team,
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++) for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt )
{ {
pSoldier = cnt;
// Are we in this sector, On the current squad? // Are we in this sector, On the current squad?
if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && !AM_AN_EPC( pSoldier ) ) if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && !AM_AN_EPC( pSoldier ) )
{ {
@@ -633,7 +636,7 @@ void FadeOutToLaptopOnEndGame( void )
void BeginHandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT8 bLevel ) void BeginHandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT8 bLevel )
{ {
SOLDIERTYPE *pTeamSoldier; SOLDIERTYPE *pTeamSoldier;
INT32 cnt; SoldierID cnt;
gpKillerSoldier = pKillerSoldier; gpKillerSoldier = pKillerSoldier;
@@ -654,8 +657,9 @@ void BeginHandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT
cnt = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; cnt = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID;
// look for all mercs on the same team, // look for all mercs on the same team,
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; cnt++,pTeamSoldier++) for ( ; cnt <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++cnt )
{ {
pTeamSoldier = cnt;
// Are we active and ALIVE and in sector..... // Are we active and ALIVE and in sector.....
if ( pTeamSoldier->bActive && pTeamSoldier->stats.bLife > 0 ) if ( pTeamSoldier->bActive && pTeamSoldier->stats.bLife > 0 )
{ {
@@ -679,8 +683,7 @@ void BeginHandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT
void HandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT8 bLevel ) void HandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT8 bLevel )
{ {
SOLDIERTYPE *pTeamSoldier; SOLDIERTYPE *pTeamSoldier;
INT32 cnt; SoldierID ubKillerSoldierID = NOBODY;
UINT16 ubKillerSoldierID = NOBODY;
// Start victory music here... // Start victory music here...
SetMusicMode( MUSIC_TACTICAL_VICTORY ); SetMusicMode( MUSIC_TACTICAL_VICTORY );
@@ -693,13 +696,14 @@ void HandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT8 bLe
// STEP 1 ) START ALL QUOTES GOING! // STEP 1 ) START ALL QUOTES GOING!
// OK - loop through all witnesses and see if they want to say something abou this... // OK - loop through all witnesses and see if they want to say something abou this...
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
// run through list // run through list
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++ ) for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt )
{ {
if ( cnt != ubKillerSoldierID ) if ( cnt != ubKillerSoldierID )
{ {
pTeamSoldier = cnt;
if ( OK_INSECTOR_MERC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !AM_AN_EPC( pTeamSoldier ) ) if ( OK_INSECTOR_MERC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !AM_AN_EPC( pTeamSoldier ) )
{ {
if ( QuoteExp[ pTeamSoldier->ubProfile ].QuoteExpWitnessQueenBugDeath ) if ( QuoteExp[ pTeamSoldier->ubProfile ].QuoteExpWitnessQueenBugDeath )
+4 -5
View File
@@ -1395,7 +1395,6 @@ BOOLEAN NewWayOfSavingEnemyAndCivliansToTempFile( INT16 sSectorX, INT16 sSectorY
{ {
SOLDIERINITNODE *curr; SOLDIERINITNODE *curr;
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
INT32 i;
INT32 slots = 0; INT32 slots = 0;
UINT32 uiNumBytesWritten; UINT32 uiNumBytesWritten;
UINT32 uiTimeStamp; UINT32 uiTimeStamp;
@@ -1428,9 +1427,9 @@ BOOLEAN NewWayOfSavingEnemyAndCivliansToTempFile( INT16 sSectorX, INT16 sSectorY
//STEP ONE: Prep the soldiers for saving... //STEP ONE: Prep the soldiers for saving...
//modify the map's soldier init list to reflect the changes to the members still alive... //modify the map's soldier init list to reflect the changes to the members still alive...
for( i = gTacticalStatus.Team[ ubStartID ].bFirstID; i <= gTacticalStatus.Team[ ubEndID ].bLastID; i++ ) for( SoldierID i = gTacticalStatus.Team[ ubStartID ].bFirstID; i <= gTacticalStatus.Team[ ubEndID ].bLastID; ++i )
{ {
pSoldier = MercPtrs[ i ]; pSoldier = i;
//make sure the person is active, alive, in the sector, and is not a profiled person //make sure the person is active, alive, in the sector, and is not a profiled person
if( pSoldier && pSoldier->bActive /*&& pSoldier->bInSector*/ && pSoldier->stats.bLife && pSoldier->ubProfile == NO_PROFILE ) if( pSoldier && pSoldier->bActive /*&& pSoldier->bInSector*/ && pSoldier->stats.bLife && pSoldier->ubProfile == NO_PROFILE )
@@ -1584,9 +1583,9 @@ BOOLEAN NewWayOfSavingEnemyAndCivliansToTempFile( INT16 sSectorX, INT16 sSectorY
return TRUE; return TRUE;
} }
for( i = gTacticalStatus.Team[ ubStartID ].bFirstID; i <= gTacticalStatus.Team[ ubEndID ].bLastID; i++ ) for( SoldierID i = gTacticalStatus.Team[ ubStartID ].bFirstID; i <= gTacticalStatus.Team[ ubEndID ].bLastID; ++i )
{ {
pSoldier = MercPtrs[ i ]; pSoldier = i;
// CJC: note that bInSector is not required; the civ could be offmap! // CJC: note that bInSector is not required; the civ could be offmap!
if( pSoldier->bActive /*&& pSoldier->bInSector*/ && pSoldier->stats.bLife ) if( pSoldier->bActive /*&& pSoldier->bInSector*/ && pSoldier->stats.bLife )
{ {
+9 -6
View File
@@ -763,15 +763,16 @@ void EatFromInventory( SOLDIERTYPE *pSoldier, BOOLEAN fcanteensonly )
void HourlyFoodUpdate( void ) void HourlyFoodUpdate( void )
{ {
UINT16 bMercID, bLastTeamID; SoldierID bMercID, bLastTeamID;
SOLDIERTYPE * pSoldier = NULL; SOLDIERTYPE * pSoldier = NULL;
bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
// loop through all mercs to calculate their morale // loop through all mercs to calculate their morale
for ( pSoldier = MercPtrs[ bMercID ]; bMercID <= bLastTeamID; ++bMercID, ++pSoldier) for ( ; bMercID <= bLastTeamID; ++bMercID )
{ {
pSoldier = bMercID;
//if the merc is active, and in Arulco //if the merc is active, and in Arulco
if ( pSoldier && pSoldier->bActive && !AM_AN_EPC(pSoldier) && pSoldier->ubProfile != ROBOT && !IsVehicle(pSoldier) && !(pSoldier->bAssignment == IN_TRANSIT || pSoldier->bAssignment == ASSIGNMENT_DEAD ) ) if ( pSoldier && pSoldier->bActive && !AM_AN_EPC(pSoldier) && pSoldier->ubProfile != ROBOT && !IsVehicle(pSoldier) && !(pSoldier->bAssignment == IN_TRANSIT || pSoldier->bAssignment == ASSIGNMENT_DEAD ) )
{ {
@@ -829,15 +830,16 @@ void SectorFillCanteens( void )
addtemperature = FOOD_WATER_POISONOUS_TEMPERATURE; addtemperature = FOOD_WATER_POISONOUS_TEMPERATURE;
// first step: fill all canteens in inventories // first step: fill all canteens in inventories
UINT16 bMercID, bLastTeamID; SoldierID bMercID, bLastTeamID;
SOLDIERTYPE * pSoldier = NULL; SOLDIERTYPE * pSoldier = NULL;
bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
// loop through all mercs // loop through all mercs
for ( pSoldier = MercPtrs[ bMercID ]; bMercID <= bLastTeamID; ++bMercID, pSoldier++) for ( ; bMercID <= bLastTeamID; ++bMercID )
{ {
pSoldier = bMercID;
//if the merc is in this sector //if the merc is in this sector
if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && pSoldier->bInSector && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) ) if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && pSoldier->bInSector && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) )
{ {
@@ -903,15 +905,16 @@ void SectorFillCanteens( void )
INT32 drumsize = Food[Item[pWaterDrum->usItem].foodtype].bDrinkPoints; INT32 drumsize = Food[Item[pWaterDrum->usItem].foodtype].bDrinkPoints;
// first step: fill all canteens in inventories // first step: fill all canteens in inventories
UINT16 bMercID, bLastTeamID; SoldierID bMercID, bLastTeamID;
SOLDIERTYPE * pSoldier = NULL; SOLDIERTYPE * pSoldier = NULL;
bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
// loop through all mercs // loop through all mercs
for ( pSoldier = MercPtrs[ bMercID ]; bMercID <= bLastTeamID; ++bMercID, pSoldier++) for ( ; bMercID <= bLastTeamID; ++bMercID )
{ {
pSoldier = bMercID;
//if the merc is in this sector //if the merc is in this sector
if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && pSoldier->bInSector && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) ) if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && pSoldier->bInSector && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) )
{ {
+2 -2
View File
@@ -439,9 +439,9 @@ void ProcessImplicationsOfPCMessingWithDoor( SOLDIERTYPE * pSoldier )
if ( (InARoom( pSoldier->sGridNo, &usRoom ) && IN_BROTHEL( usRoom )) || (gWorldSectorX == 5 && gWorldSectorY == MAP_ROW_D && gbWorldSectorZ == 0 && (pSoldier->sGridNo == gModSettings.iBrothelDoor1 || pSoldier->sGridNo == gModSettings.iBrothelDoor2 || pSoldier->sGridNo == gModSettings.iBrothelDoor3 ) ) )//11010,11177,11176 if ( (InARoom( pSoldier->sGridNo, &usRoom ) && IN_BROTHEL( usRoom )) || (gWorldSectorX == 5 && gWorldSectorY == MAP_ROW_D && gbWorldSectorZ == 0 && (pSoldier->sGridNo == gModSettings.iBrothelDoor1 || pSoldier->sGridNo == gModSettings.iBrothelDoor2 || pSoldier->sGridNo == gModSettings.iBrothelDoor3 ) ) )//11010,11177,11176
{ {
// see if a kingpin goon can see us // see if a kingpin goon can see us
for (UINT16 ubLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ubLoop++ ) for ( SoldierID ubLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++ubLoop )
{ {
pGoon = MercPtrs[ ubLoop ]; pGoon = ubLoop;
if ( pGoon->ubCivilianGroup == KINGPIN_CIV_GROUP && pGoon->bActive && pGoon->bInSector && pGoon->stats.bLife >= OKLIFE && pGoon->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY ) if ( pGoon->ubCivilianGroup == KINGPIN_CIV_GROUP && pGoon->bActive && pGoon->bInSector && pGoon->stats.bLife >= OKLIFE && pGoon->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY )
{ {
MakeCivHostile(pGoon); MakeCivHostile(pGoon);
+6 -5
View File
@@ -5389,15 +5389,16 @@ void UpdateGear()
if ( (guiCurrentScreen != GAME_SCREEN && guiCurrentScreen != MSG_BOX_SCREEN) ) if ( (guiCurrentScreen != GAME_SCREEN && guiCurrentScreen != MSG_BOX_SCREEN) )
return; return;
UINT16 bMercID, bLastTeamID; SoldierID bMercID, bLastTeamID;
SOLDIERTYPE* pSoldier = NULL; SOLDIERTYPE* pSoldier = NULL;
bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID;
bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID;
// loop through all mercs // loop through all mercs
for ( pSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, ++pSoldier ) for ( ; bMercID <= bLastTeamID; ++bMercID )
{ {
pSoldier = bMercID;
//if the merc is in this sector //if the merc is in this sector
if ( pSoldier->bActive && pSoldier->bInSector && (pSoldier->sSectorX == gWorldSectorX) && (pSoldier->sSectorY == gWorldSectorY) && (pSoldier->bSectorZ == gbWorldSectorZ) ) if ( pSoldier->bActive && pSoldier->bInSector && (pSoldier->sSectorX == gWorldSectorX) && (pSoldier->sSectorY == gWorldSectorY) && (pSoldier->bSectorZ == gbWorldSectorZ) )
{ {
@@ -6735,7 +6736,7 @@ void CheckForPickedOwnership( void )
UINT8 ubProfile; UINT8 ubProfile;
UINT8 ubCivGroup; UINT8 ubCivGroup;
SOLDIERTYPE * pSoldier; SOLDIERTYPE * pSoldier;
UINT16 ubLoop; SoldierID ubLoop;
// LOOP THROUGH LIST TO FIND NODE WE WANT // LOOP THROUGH LIST TO FIND NODE WE WANT
GetItemPool( gsTempGridNo, &pItemPool, gpTempSoldier->pathing.bLevel ); GetItemPool( gsTempGridNo, &pItemPool, gpTempSoldier->pathing.bLevel );
@@ -6762,9 +6763,9 @@ void CheckForPickedOwnership( void )
pItemPool = pItemPool->pNext; pItemPool = pItemPool->pNext;
continue; continue;
} }
for ( ubLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ubLoop++ ) for ( ubLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++ubLoop )
{ {
pSoldier = MercPtrs[ ubLoop ]; pSoldier = ubLoop;
if ( pSoldier && pSoldier->ubCivilianGroup == ubCivGroup ) if ( pSoldier && pSoldier->ubCivilianGroup == ubCivGroup )
{ {
TestPotentialOwner( pSoldier ); TestPotentialOwner( pSoldier );
+19 -17
View File
@@ -1403,15 +1403,16 @@ UINT32 UIHandleEndTurn( UI_EVENT *pUIEvent )
// WANNE: Ignore, so the game can continue ... // WANNE: Ignore, so the game can continue ...
} }
INT32 tcnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; SoldierID tcnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
SOLDIERTYPE *tS; SOLDIERTYPE *tS;
INT16 sXOffset, sYOffset; INT16 sXOffset, sYOffset;
INT32 sGridNo; INT32 sGridNo;
UINT16 usSightLimit=0; UINT16 usSightLimit=0;
for ( tS = MercPtrs[ tcnt ]; tcnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++tcnt, tS++ ) for ( ; tcnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++tcnt )
{ {
tS = tcnt;
if ( tS->stats.bLife >= OKLIFE && tS->sGridNo != NOWHERE && tS->bInSector ) if ( tS->stats.bLife >= OKLIFE && tS->sGridNo != NOWHERE && tS->bInSector )
{ {
//loop through all the gridnos that we are interested in //loop through all the gridnos that we are interested in
@@ -2113,17 +2114,17 @@ UINT32 UIHandleCWait( UI_EVENT *pUIEvent )
// SelectedMercCanAffordMove // SelectedMercCanAffordMove
UINT32 UIHandleCMoveMerc( UI_EVENT *pUIEvent ) UINT32 UIHandleCMoveMerc( UI_EVENT *pUIEvent )
{ {
INT32 usMapPos; INT32 usMapPos;
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
INT32 sDestGridNo; INT32 sDestGridNo;
INT32 sActionGridNo; INT32 sActionGridNo;
STRUCTURE *pStructure; STRUCTURE *pStructure;
UINT8 ubDirection = 0xff; UINT8 ubDirection = 0xff;
BOOLEAN fAllMove; BOOLEAN fAllMove;
UINT16 bLoop; SoldierID bLoop;
LEVELNODE *pIntTile; LEVELNODE *pIntTile;
INT32 sIntTileGridNo; INT32 sIntTileGridNo;
BOOLEAN fOldFastMove; BOOLEAN fOldFastMove;
if ( gusSelectedSoldier != NOBODY ) if ( gusSelectedSoldier != NOBODY )
{ {
@@ -2144,13 +2145,14 @@ UINT32 UIHandleCMoveMerc( UI_EVENT *pUIEvent )
// Loop through all mercs and make go! // Loop through all mercs and make go!
// TODO: Only our squad! // TODO: Only our squad!
for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pSoldier++) for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop )
{ {
pSoldier = bLoop;
if ( OK_CONTROLLABLE_MERC( pSoldier ) && pSoldier->bAssignment == CurrentSquad( ) && !pSoldier->flags.fMercAsleep ) if ( OK_CONTROLLABLE_MERC( pSoldier ) && pSoldier->bAssignment == CurrentSquad( ) && !pSoldier->flags.fMercAsleep )
{ {
// If we can't be controlled, returninvalid... // If we can't be controlled, returninvalid...
if ( pSoldier->flags.uiStatusFlags & SOLDIER_ROBOT ) if ( pSoldier->flags.uiStatusFlags & SOLDIER_ROBOT )
{ {
if ( !pSoldier->CanRobotBeControlled( ) ) if ( !pSoldier->CanRobotBeControlled( ) )
{ {
continue; continue;