mirror of
https://github.com/1dot13/source.git
synced 2026-09-02 14:36:06 +02:00
Use SoldierID
This commit is contained in:
@@ -3719,26 +3719,27 @@ void OutOfStockMessageBoxCallBack( UINT8 bExitValue )
|
|||||||
UINT8 CheckPlayersInventoryForGunMatchingGivenAmmoID( INT16 sItemID )
|
UINT8 CheckPlayersInventoryForGunMatchingGivenAmmoID( INT16 sItemID )
|
||||||
{
|
{
|
||||||
UINT8 ubItemCount=0;
|
UINT8 ubItemCount=0;
|
||||||
UINT16 ubMercCount;
|
|
||||||
UINT8 ubPocketCount;
|
UINT8 ubPocketCount;
|
||||||
|
|
||||||
UINT16 ubFirstID = gTacticalStatus.Team[ OUR_TEAM ].bFirstID;
|
SoldierID id;
|
||||||
UINT16 ubLastID = gTacticalStatus.Team[ OUR_TEAM ].bLastID;
|
SoldierID ubFirstID = gTacticalStatus.Team[ OUR_TEAM ].bFirstID;
|
||||||
|
SoldierID ubLastID = gTacticalStatus.Team[ OUR_TEAM ].bLastID;
|
||||||
|
|
||||||
//loop through all the mercs on the team
|
//loop through all the mercs on the team
|
||||||
for( ubMercCount = ubFirstID; ubMercCount <= ubLastID; ++ubMercCount )
|
for( id = ubFirstID; id <= ubLastID; ++id )
|
||||||
{
|
{
|
||||||
if( Menptr[ ubMercCount ].bActive )
|
SOLDIERTYPE *pSoldier = id;
|
||||||
|
if( pSoldier->bActive )
|
||||||
{
|
{
|
||||||
//loop through all the pockets on the merc
|
//loop through all the pockets on the merc
|
||||||
UINT8 invsize = Menptr[ ubMercCount ].inv.size();
|
UINT8 invsize = pSoldier->inv.size();
|
||||||
for( ubPocketCount=0; ubPocketCount<invsize; ++ubPocketCount)
|
for( ubPocketCount=0; ubPocketCount<invsize; ++ubPocketCount)
|
||||||
{
|
{
|
||||||
//if there is a weapon here
|
//if there is a weapon here
|
||||||
if( Item[ Menptr[ ubMercCount ].inv[ ubPocketCount ].usItem ].usItemClass == IC_GUN )
|
if( Item[ pSoldier->inv[ ubPocketCount ].usItem ].usItemClass == IC_GUN )
|
||||||
{
|
{
|
||||||
//if the weapon uses the same kind of ammo as the one passed in, return true
|
//if the weapon uses the same kind of ammo as the one passed in, return true
|
||||||
if( Weapon[ Menptr[ ubMercCount ].inv[ ubPocketCount ].usItem ].ubCalibre == Magazine[ Item[ sItemID ].ubClassIndex ].ubCalibre )
|
if( Weapon[ pSoldier->inv[ ubPocketCount ].usItem ].ubCalibre == Magazine[ Item[ sItemID ].ubClassIndex ].ubCalibre )
|
||||||
{
|
{
|
||||||
++ubItemCount;
|
++ubItemCount;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4102,7 +4102,6 @@ void recieveMISS (RPCParameters *rpcParameters)
|
|||||||
BOOLEAN check_status (void)// any 'enemies' and clients left to fight ??
|
BOOLEAN check_status (void)// any 'enemies' and clients left to fight ??
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
int cnt;
|
|
||||||
int soldiers= 0 ;
|
int soldiers= 0 ;
|
||||||
int numActiveSides = 0;
|
int numActiveSides = 0;
|
||||||
|
|
||||||
@@ -4112,9 +4111,9 @@ BOOLEAN check_status (void)// any 'enemies' and clients left to fight ??
|
|||||||
{
|
{
|
||||||
soldiers=0;
|
soldiers=0;
|
||||||
|
|
||||||
for(cnt = gTacticalStatus.Team[ x ].bFirstID;cnt <= gTacticalStatus.Team[ x ].bLastID; cnt++)
|
for( SoldierID cnt = gTacticalStatus.Team[ x ].bFirstID;cnt <= gTacticalStatus.Team[ x ].bLastID; ++cnt)
|
||||||
{
|
{
|
||||||
pSoldier = MercPtrs[ cnt ];
|
pSoldier = cnt;
|
||||||
if(pSoldier->stats.bLife >= OKLIFE && pSoldier->bActive && pSoldier->bInSector)
|
if(pSoldier->stats.bLife >= OKLIFE && pSoldier->bActive && pSoldier->bInSector)
|
||||||
{
|
{
|
||||||
soldiers++;
|
soldiers++;
|
||||||
@@ -4331,14 +4330,14 @@ void null_team (RPCParameters *rpcParameters)
|
|||||||
{
|
{
|
||||||
kickR* kick = (kickR*)rpcParameters->input;
|
kickR* kick = (kickR*)rpcParameters->input;
|
||||||
ScreenMsg( FONT_LTGREEN, MSG_INTERFACE, MPClientMessage[29],(kick->ubResult-5),client_names[kick->ubResult-6] );
|
ScreenMsg( FONT_LTGREEN, MSG_INTERFACE, MPClientMessage[29],(kick->ubResult-5),client_names[kick->ubResult-6] );
|
||||||
int fID = gTacticalStatus.Team[ kick->ubResult ].bFirstID;
|
SoldierID fID = gTacticalStatus.Team[ kick->ubResult ].bFirstID;
|
||||||
int lID = gTacticalStatus.Team[ kick->ubResult ].bLastID;
|
SoldierID lID = gTacticalStatus.Team[ kick->ubResult ].bLastID;
|
||||||
|
|
||||||
if(kick->ubResult==netbTeam)
|
if(kick->ubResult==netbTeam)
|
||||||
fID=0,lID=19;
|
fID=0,lID=19;
|
||||||
|
|
||||||
int cnt;
|
SoldierID cnt;
|
||||||
for ( cnt=fID ; cnt <= lID; cnt++ )
|
for ( cnt=fID ; cnt <= lID; ++cnt )
|
||||||
{
|
{
|
||||||
TacticalRemoveSoldier( cnt );
|
TacticalRemoveSoldier( cnt );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1713,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 ( SoldierID i = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; i <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++i )
|
for ( SoldierID id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; id <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++id )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pSoldier = i;
|
SOLDIERTYPE *pSoldier = id;
|
||||||
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 )
|
||||||
|
|||||||
@@ -185,7 +185,7 @@ void StrategicHandlePlayerTeamMercDeath( SOLDIERTYPE *pSoldier )
|
|||||||
void MercDailyUpdate()
|
void MercDailyUpdate()
|
||||||
{
|
{
|
||||||
SoldierID id;
|
SoldierID id;
|
||||||
SoldierID bLastTeamID;
|
SoldierID lastid;
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
//SOLDIERTYPE *pQuitList[ 21 ];
|
//SOLDIERTYPE *pQuitList[ 21 ];
|
||||||
MERCPROFILESTRUCT *pProfile;
|
MERCPROFILESTRUCT *pProfile;
|
||||||
@@ -218,10 +218,10 @@ void MercDailyUpdate()
|
|||||||
AddSameDayStrategicEvent( EVENT_BEGIN_CONTRACT_RENEWAL_SEQUENCE, MERC_ARRIVE_TIME_SLOT_3, 0 );
|
AddSameDayStrategicEvent( EVENT_BEGIN_CONTRACT_RENEWAL_SEQUENCE, MERC_ARRIVE_TIME_SLOT_3, 0 );
|
||||||
|
|
||||||
id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||||
bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
|
lastid = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
|
||||||
|
|
||||||
//loop though all the mercs
|
//loop though all the mercs
|
||||||
for ( ; id <= bLastTeamID; ++id)
|
for ( ; id <= lastid; ++id)
|
||||||
{
|
{
|
||||||
pSoldier = id;
|
pSoldier = id;
|
||||||
//if the merc is active
|
//if the merc is active
|
||||||
@@ -376,7 +376,7 @@ void MercDailyUpdate()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//reset the counter
|
//reset the counter
|
||||||
for ( id = 0; id <= bLastTeamID; ++id )
|
for ( id = 0; id <= lastid; ++id )
|
||||||
{
|
{
|
||||||
pSoldier = id;
|
pSoldier = id;
|
||||||
//if the merc is active
|
//if the merc is active
|
||||||
|
|||||||
+41
-29
@@ -728,7 +728,7 @@ void HandleMoraleEventForSoldier( SOLDIERTYPE * pSoldier, INT8 bMoraleEvent )
|
|||||||
|
|
||||||
void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, INT16 sMapY, INT8 bMapZ )
|
void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, INT16 sMapY, INT8 bMapZ )
|
||||||
{
|
{
|
||||||
UINT16 ubLoop;
|
SoldierID id;
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
MERCPROFILESTRUCT *pProfile;
|
MERCPROFILESTRUCT *pProfile;
|
||||||
|
|
||||||
@@ -778,9 +778,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I
|
|||||||
|
|
||||||
case MORALE_BATTLE_WON:
|
case MORALE_BATTLE_WON:
|
||||||
// affects everyone to varying degrees
|
// affects everyone to varying degrees
|
||||||
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||||
for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ )
|
for ( ; id <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++id )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = id;
|
||||||
if ( pTeamSoldier->bActive )
|
if ( pTeamSoldier->bActive )
|
||||||
{
|
{
|
||||||
if ( SOLDIER_IN_SECTOR( pTeamSoldier, sMapX, sMapY, bMapZ ) )
|
if ( SOLDIER_IN_SECTOR( pTeamSoldier, sMapX, sMapY, bMapZ ) )
|
||||||
@@ -797,9 +798,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I
|
|||||||
break;
|
break;
|
||||||
case MORALE_RAN_AWAY:
|
case MORALE_RAN_AWAY:
|
||||||
// affects everyone to varying degrees
|
// affects everyone to varying degrees
|
||||||
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||||
for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ )
|
for ( ; id <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++id )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = id;
|
||||||
if ( pTeamSoldier->bActive )
|
if ( pTeamSoldier->bActive )
|
||||||
{
|
{
|
||||||
// CJC: adding to SOLDIER_IN_SECTOR check special stuff because the old sector values might
|
// CJC: adding to SOLDIER_IN_SECTOR check special stuff because the old sector values might
|
||||||
@@ -869,9 +871,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I
|
|||||||
case MORALE_MONSTER_QUEEN_KILLED:
|
case MORALE_MONSTER_QUEEN_KILLED:
|
||||||
case MORALE_DEIDRANNA_KILLED:
|
case MORALE_DEIDRANNA_KILLED:
|
||||||
// affects everyone, everywhere
|
// affects everyone, everywhere
|
||||||
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
id = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||||
for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ )
|
for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = id;
|
||||||
if ( pTeamSoldier->bActive )
|
if ( pTeamSoldier->bActive )
|
||||||
{
|
{
|
||||||
if ( gGameOptions.fNewTraitSystem && bMoraleEvent != MORALE_DEIDRANNA_KILLED)
|
if ( gGameOptions.fNewTraitSystem && bMoraleEvent != MORALE_DEIDRANNA_KILLED)
|
||||||
@@ -898,9 +901,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I
|
|||||||
case MORALE_GREAT_MORALE:
|
case MORALE_GREAT_MORALE:
|
||||||
case MORALE_AIRSTRIKE:
|
case MORALE_AIRSTRIKE:
|
||||||
// affects every in sector
|
// affects every in sector
|
||||||
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
id = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||||
for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ )
|
for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = id;
|
||||||
if ( pTeamSoldier->bActive && SOLDIER_IN_SECTOR( pTeamSoldier, sMapX, sMapY, bMapZ ) )
|
if ( pTeamSoldier->bActive && SOLDIER_IN_SECTOR( pTeamSoldier, sMapX, sMapY, bMapZ ) )
|
||||||
{
|
{
|
||||||
HandleMoraleEventForSoldier( pTeamSoldier, bMoraleEvent );
|
HandleMoraleEventForSoldier( pTeamSoldier, bMoraleEvent );
|
||||||
@@ -913,9 +917,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I
|
|||||||
Assert( pSoldier );
|
Assert( pSoldier );
|
||||||
|
|
||||||
// affects everyone
|
// affects everyone
|
||||||
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
id = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||||
for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ )
|
for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = id;
|
||||||
if ( pTeamSoldier->bActive )
|
if ( pTeamSoldier->bActive )
|
||||||
{
|
{
|
||||||
HandleMoraleEventForSoldier( pTeamSoldier, bMoraleEvent );
|
HandleMoraleEventForSoldier( pTeamSoldier, bMoraleEvent );
|
||||||
@@ -927,9 +932,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I
|
|||||||
Assert( pSoldier );
|
Assert( pSoldier );
|
||||||
|
|
||||||
// affects everyone, in sector differently than not, extra bonuses if it's a buddy or hated merc
|
// affects everyone, in sector differently than not, extra bonuses if it's a buddy or hated merc
|
||||||
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
id = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||||
for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ )
|
for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = id;
|
||||||
if ( pTeamSoldier->bActive && pTeamSoldier->ubProfile != NO_PROFILE)
|
if ( pTeamSoldier->bActive && pTeamSoldier->ubProfile != NO_PROFILE)
|
||||||
{
|
{
|
||||||
pProfile = &(gMercProfiles[ pTeamSoldier->ubProfile ]);
|
pProfile = &(gMercProfiles[ pTeamSoldier->ubProfile ]);
|
||||||
@@ -982,9 +988,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I
|
|||||||
// female mercs get unhappy based on how sexist they are (=hate men)
|
// female mercs get unhappy based on how sexist they are (=hate men)
|
||||||
// gentlemen males get unhappy too
|
// gentlemen males get unhappy too
|
||||||
|
|
||||||
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
id = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||||
for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ )
|
for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = id;
|
||||||
if ( pTeamSoldier->bActive && pTeamSoldier->ubProfile != NO_PROFILE )
|
if ( pTeamSoldier->bActive && pTeamSoldier->ubProfile != NO_PROFILE )
|
||||||
{
|
{
|
||||||
if ( WhichHated( pTeamSoldier->ubProfile, pSoldier->ubProfile ) != -1 )
|
if ( WhichHated( pTeamSoldier->ubProfile, pSoldier->ubProfile ) != -1 )
|
||||||
@@ -1044,9 +1051,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I
|
|||||||
|
|
||||||
case MORALE_ENEMYGROUP_COWARD:
|
case MORALE_ENEMYGROUP_COWARD:
|
||||||
// affects coward in sector
|
// affects coward in sector
|
||||||
ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
id = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||||
for ( pTeamSoldier = MercPtrs[ubLoop]; ubLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ubLoop++, pTeamSoldier++ )
|
for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = id;
|
||||||
if ( pTeamSoldier->bActive && (pTeamSoldier->sSectorX == sMapX) && (pTeamSoldier->sSectorY == sMapY) && (pTeamSoldier->bSectorZ == bMapZ) )
|
if ( pTeamSoldier->bActive && (pTeamSoldier->sSectorX == sMapX) && (pTeamSoldier->sSectorY == sMapY) && (pTeamSoldier->bSectorZ == bMapZ) )
|
||||||
{
|
{
|
||||||
if ( DoesMercHavePersonality( pTeamSoldier, CHAR_TRAIT_COWARD ) )
|
if ( DoesMercHavePersonality( pTeamSoldier, CHAR_TRAIT_COWARD ) )
|
||||||
@@ -1142,7 +1150,7 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I
|
|||||||
|
|
||||||
void HourlyMoraleUpdate( void )
|
void HourlyMoraleUpdate( void )
|
||||||
{
|
{
|
||||||
UINT16 bMercID, bOtherID, bLastTeamID;
|
SoldierID bMercID, bOtherID, bLastTeamID;
|
||||||
INT8 bActualTeamOpinion;
|
INT8 bActualTeamOpinion;
|
||||||
INT8 bTeamMoraleModChange, bTeamMoraleModDiff;
|
INT8 bTeamMoraleModChange, bTeamMoraleModDiff;
|
||||||
INT8 bOpinion=-1;
|
INT8 bOpinion=-1;
|
||||||
@@ -1161,8 +1169,9 @@ void HourlyMoraleUpdate( void )
|
|||||||
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, in Arulco, and conscious, not POW
|
//if the merc is active, in Arulco, and conscious, not POW
|
||||||
if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE &&
|
if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE &&
|
||||||
!(pSoldier->bAssignment == IN_TRANSIT ||
|
!(pSoldier->bAssignment == IN_TRANSIT ||
|
||||||
@@ -1194,8 +1203,9 @@ void HourlyMoraleUpdate( void )
|
|||||||
|
|
||||||
// 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 ||
|
||||||
@@ -1345,9 +1355,8 @@ void HourlyMoraleUpdate( void )
|
|||||||
|
|
||||||
void HandleSnitchCheck( void )
|
void HandleSnitchCheck( void )
|
||||||
{
|
{
|
||||||
UINT16 bMercID, bOtherID;
|
SoldierID bMercID, bOtherID, bLastTeamID;
|
||||||
INT8 bOpinion = -1;
|
INT8 bOpinion = -1;
|
||||||
UINT16 bLastTeamID;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
SOLDIERTYPE *pOtherSoldier;
|
SOLDIERTYPE *pOtherSoldier;
|
||||||
MERCPROFILESTRUCT *pProfile;
|
MERCPROFILESTRUCT *pProfile;
|
||||||
@@ -1359,8 +1368,9 @@ void HandleSnitchCheck( void )
|
|||||||
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, in Arulco, not POW, not a vehicle
|
//if the merc is active, in Arulco, not POW, not a vehicle
|
||||||
if ( pSoldier && pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE &&
|
if ( pSoldier && pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE &&
|
||||||
!(pSoldier->bAssignment == IN_TRANSIT ||
|
!(pSoldier->bAssignment == IN_TRANSIT ||
|
||||||
@@ -1383,8 +1393,9 @@ void HandleSnitchCheck( void )
|
|||||||
}
|
}
|
||||||
// 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 && pOtherSoldier->bActive && pOtherSoldier->ubProfile != NO_PROFILE &&
|
if ( bOtherID != bMercID && pOtherSoldier && pOtherSoldier->bActive && pOtherSoldier->ubProfile != NO_PROFILE &&
|
||||||
!(pOtherSoldier->bAssignment == IN_TRANSIT ||
|
!(pOtherSoldier->bAssignment == IN_TRANSIT ||
|
||||||
@@ -1558,7 +1569,7 @@ void HandleSnitchesReports( std::vector<SnitchEvent>& aVec )
|
|||||||
|
|
||||||
void RememberSnitchableEvent( UINT8 ubTargetProfile, UINT8 ubSecondaryTargetProfile, BOOLEAN fSameGroupOnly, UINT8 ubEventType, std::vector<SnitchEvent>& aVec )
|
void RememberSnitchableEvent( UINT8 ubTargetProfile, UINT8 ubSecondaryTargetProfile, BOOLEAN fSameGroupOnly, UINT8 ubEventType, std::vector<SnitchEvent>& aVec )
|
||||||
{
|
{
|
||||||
UINT16 bSnitchID;
|
SoldierID bSnitchID;
|
||||||
INT16 sSnitchingChance = 0;
|
INT16 sSnitchingChance = 0;
|
||||||
UINT8 ubSnitchProfile;
|
UINT8 ubSnitchProfile;
|
||||||
SOLDIERTYPE * pSnitch;
|
SOLDIERTYPE * pSnitch;
|
||||||
@@ -1570,8 +1581,9 @@ void RememberSnitchableEvent( UINT8 ubTargetProfile, UINT8 ubSecondaryTargetProf
|
|||||||
|
|
||||||
// loop through all other mercs
|
// loop through all other mercs
|
||||||
bSnitchID = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
bSnitchID = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||||
for ( pSnitch = MercPtrs[bSnitchID]; bSnitchID <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bSnitchID, pSnitch++ )
|
for ( ; bSnitchID <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bSnitchID )
|
||||||
{
|
{
|
||||||
|
pSnitch = bSnitchID;
|
||||||
ubSnitchProfile = pSnitch->ubProfile;
|
ubSnitchProfile = pSnitch->ubProfile;
|
||||||
// skip past ourselves and all inactive mercs
|
// skip past ourselves and all inactive mercs
|
||||||
if ( ProfileHasSkillTrait( ubSnitchProfile, SNITCH_NT ) &&
|
if ( ProfileHasSkillTrait( ubSnitchProfile, SNITCH_NT ) &&
|
||||||
@@ -1703,7 +1715,7 @@ void DailyMoraleUpdate(SOLDIERTYPE *pSoldier)
|
|||||||
// Added by SANDRO
|
// Added by SANDRO
|
||||||
BOOLEAN IsShowOffNearBy( SOLDIERTYPE * pSoldier )
|
BOOLEAN IsShowOffNearBy( SOLDIERTYPE * pSoldier )
|
||||||
{
|
{
|
||||||
UINT32 uiLoop;
|
SoldierID uiLoop;
|
||||||
SOLDIERTYPE *pTeammate;
|
SOLDIERTYPE *pTeammate;
|
||||||
BOOLEAN fOneException = FALSE;
|
BOOLEAN fOneException = FALSE;
|
||||||
BOOLEAN fYesHeIs = FALSE;
|
BOOLEAN fYesHeIs = FALSE;
|
||||||
@@ -1717,9 +1729,9 @@ BOOLEAN IsShowOffNearBy( SOLDIERTYPE * pSoldier )
|
|||||||
return( FALSE );
|
return( FALSE );
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( uiLoop = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; uiLoop <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; uiLoop++)
|
for ( uiLoop = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; uiLoop <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; ++uiLoop )
|
||||||
{
|
{
|
||||||
pTeammate = MercPtrs[ uiLoop ];
|
pTeammate = uiLoop;
|
||||||
if ( pTeammate == NULL )
|
if ( pTeammate == NULL )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
+171
-172
@@ -2276,14 +2276,13 @@ BOOLEAN HandleGotoNewGridNo( SOLDIERTYPE *pSoldier, BOOLEAN *pfKeepMoving, BOOLE
|
|||||||
// IF not in combat, stop them all
|
// IF not in combat, stop them all
|
||||||
if ( !( gTacticalStatus.uiFlags & INCOMBAT ) )
|
if ( !( gTacticalStatus.uiFlags & INCOMBAT ) )
|
||||||
{
|
{
|
||||||
INT32 cnt2;
|
|
||||||
SOLDIERTYPE *pSoldier2;
|
SOLDIERTYPE *pSoldier2;
|
||||||
|
SoldierID id = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
|
||||||
cnt2 = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
|
|
||||||
|
|
||||||
// look for all mercs on the same team,
|
// look for all mercs on the same team,
|
||||||
for ( pSoldier2 = MercPtrs[ cnt2 ]; cnt2 >= gTacticalStatus.Team[ gbPlayerNum ].bFirstID; cnt2-- ,pSoldier2-- )
|
for ( ; id >= gTacticalStatus.Team[ gbPlayerNum ].bFirstID; --id )
|
||||||
{
|
{
|
||||||
|
pSoldier2 = id;
|
||||||
if ( pSoldier2->bActive )
|
if ( pSoldier2->bActive )
|
||||||
{
|
{
|
||||||
pSoldier2->EVENT_StopMerc( pSoldier2->sGridNo, pSoldier2->ubDirection );
|
pSoldier2->EVENT_StopMerc( pSoldier2->sGridNo, pSoldier2->ubDirection );
|
||||||
@@ -2983,14 +2982,13 @@ BOOLEAN HandleAtNewGridNo( SOLDIERTYPE *pSoldier, BOOLEAN *pfKeepMoving )
|
|||||||
// IF not in combat, stop them all
|
// IF not in combat, stop them all
|
||||||
if ( !( gTacticalStatus.uiFlags & INCOMBAT ) )
|
if ( !( gTacticalStatus.uiFlags & INCOMBAT ) )
|
||||||
{
|
{
|
||||||
INT32 cnt2;
|
|
||||||
SOLDIERTYPE *pSoldier2;
|
SOLDIERTYPE *pSoldier2;
|
||||||
|
SoldierID cnt2 = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
|
||||||
cnt2 = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
|
|
||||||
|
|
||||||
// look for all mercs on the same team,
|
// look for all mercs on the same team,
|
||||||
for ( pSoldier2 = MercPtrs[ cnt2 ]; cnt2 >= gTacticalStatus.Team[ gbPlayerNum ].bFirstID; cnt2-- ,pSoldier2-- )
|
for ( ; cnt2 >= gTacticalStatus.Team[ gbPlayerNum ].bFirstID; --cnt2 )
|
||||||
{
|
{
|
||||||
|
pSoldier2 = cnt2;
|
||||||
if ( pSoldier2->bActive )
|
if ( pSoldier2->bActive )
|
||||||
{
|
{
|
||||||
pSoldier2->EVENT_StopMerc( pSoldier2->sGridNo, pSoldier2->ubDirection );
|
pSoldier2->EVENT_StopMerc( pSoldier2->sGridNo, pSoldier2->ubDirection );
|
||||||
@@ -3230,17 +3228,17 @@ BOOLEAN HandleAtNewGridNo( SOLDIERTYPE *pSoldier, BOOLEAN *pfKeepMoving )
|
|||||||
|
|
||||||
void SelectNextAvailSoldier( SOLDIERTYPE *pSoldier )
|
void SelectNextAvailSoldier( SOLDIERTYPE *pSoldier )
|
||||||
{
|
{
|
||||||
INT32 cnt;
|
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
BOOLEAN fSoldierFound = FALSE;
|
BOOLEAN fSoldierFound = FALSE;
|
||||||
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("SelectNextAvailSoldier"));
|
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("SelectNextAvailSoldier"));
|
||||||
|
|
||||||
// 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 id = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID;
|
||||||
|
|
||||||
// look for all mercs on the same team,
|
// look for all mercs on the same team,
|
||||||
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; cnt++,pTeamSoldier++)
|
for ( ; id <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; ++id )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = id;
|
||||||
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) )
|
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) )
|
||||||
{
|
{
|
||||||
fSoldierFound = TRUE;
|
fSoldierFound = TRUE;
|
||||||
@@ -3251,7 +3249,7 @@ void SelectNextAvailSoldier( SOLDIERTYPE *pSoldier )
|
|||||||
if ( fSoldierFound )
|
if ( fSoldierFound )
|
||||||
{
|
{
|
||||||
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("SelectNextAvailSoldier: selectsoldier"));
|
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("SelectNextAvailSoldier: selectsoldier"));
|
||||||
SelectSoldier( cnt, FALSE, FALSE );
|
SelectSoldier( id, FALSE, FALSE );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -3604,7 +3602,7 @@ void RebuildAllSoldierShadeTables( )
|
|||||||
|
|
||||||
void HandlePlayerTeamMemberDeath( SOLDIERTYPE *pSoldier )
|
void HandlePlayerTeamMemberDeath( SOLDIERTYPE *pSoldier )
|
||||||
{
|
{
|
||||||
INT32 cnt;
|
SoldierID cnt;
|
||||||
SoldierID iNewSelectedSoldier;
|
SoldierID iNewSelectedSoldier;
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
BOOLEAN fMissionFailed = TRUE;
|
BOOLEAN fMissionFailed = TRUE;
|
||||||
@@ -3619,8 +3617,9 @@ void HandlePlayerTeamMemberDeath( SOLDIERTYPE *pSoldier )
|
|||||||
cnt = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID;
|
cnt = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID;
|
||||||
|
|
||||||
// look for all mercs on the same team,
|
// look for all mercs on the same team,
|
||||||
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 && pTeamSoldier->bInSector )
|
if ( pTeamSoldier->stats.bLife >= OKLIFE && pTeamSoldier->bActive && pTeamSoldier->bInSector )
|
||||||
{
|
{
|
||||||
iNewSelectedSoldier = cnt;
|
iNewSelectedSoldier = cnt;
|
||||||
@@ -3643,8 +3642,9 @@ void HandlePlayerTeamMemberDeath( SOLDIERTYPE *pSoldier )
|
|||||||
|
|
||||||
// see if this was the friend of a living merc
|
// see if this was the friend of a living merc
|
||||||
cnt = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID;
|
cnt = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID;
|
||||||
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; cnt++,pTeamSoldier++)
|
for ( ; cnt <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->stats.bLife >= OKLIFE )
|
if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->stats.bLife >= OKLIFE )
|
||||||
{
|
{
|
||||||
bBuddyIndex = WhichBuddy( pTeamSoldier->ubProfile, pSoldier->ubProfile );
|
bBuddyIndex = WhichBuddy( pTeamSoldier->ubProfile, pSoldier->ubProfile );
|
||||||
@@ -4245,19 +4245,18 @@ void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldierOld )
|
|||||||
CheckForEndOfBattle( FALSE );
|
CheckForEndOfBattle( FALSE );
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT16 LastActiveTeamMember( UINT16 ubTeam )
|
SoldierID LastActiveTeamMember( UINT16 ubTeam )
|
||||||
{
|
{
|
||||||
INT32 cnt;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
|
SoldierID cnt = gTacticalStatus.Team[ ubTeam ].bLastID;
|
||||||
cnt = gTacticalStatus.Team[ ubTeam ].bLastID;
|
|
||||||
|
|
||||||
// look for all mercs on the same team,
|
// look for all mercs on the same team,
|
||||||
for ( pSoldier = MercPtrs[ cnt ]; cnt >= gTacticalStatus.Team[ ubTeam ].bFirstID; cnt-- ,pSoldier--)
|
for ( ; cnt >= gTacticalStatus.Team[ ubTeam ].bFirstID; --cnt)
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if ( pSoldier->bActive )
|
if ( pSoldier->bActive )
|
||||||
{
|
{
|
||||||
return( (UINT16)cnt );
|
return( cnt );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4479,9 +4478,10 @@ void MakeCivHostile(SOLDIERTYPE *pSoldier)
|
|||||||
|
|
||||||
// rehandle sight for everybody
|
// rehandle sight for everybody
|
||||||
SOLDIERTYPE* pTeamSoldier;
|
SOLDIERTYPE* pTeamSoldier;
|
||||||
UINT16 iLoop = gTacticalStatus.Team[OUR_TEAM].bFirstID;
|
SoldierID iLoop = gTacticalStatus.Team[OUR_TEAM].bFirstID;
|
||||||
for ( pTeamSoldier = MercPtrs[iLoop]; iLoop <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++iLoop, ++pTeamSoldier )
|
for ( ; iLoop <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++iLoop )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = iLoop;
|
||||||
if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->stats.bLife > 0 )
|
if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->stats.bLife > 0 )
|
||||||
{
|
{
|
||||||
RecalculateOppCntsDueToNoLongerNeutral( pTeamSoldier );
|
RecalculateOppCntsDueToNoLongerNeutral( pTeamSoldier );
|
||||||
@@ -4522,16 +4522,16 @@ UINT8 CivilianGroupMembersChangeSidesWithinProximity( SOLDIERTYPE * pAttacked )
|
|||||||
{
|
{
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
UINT8 ubFirstProfile = NO_PROFILE;
|
UINT8 ubFirstProfile = NO_PROFILE;
|
||||||
UINT16 cnt;
|
|
||||||
|
|
||||||
if ( pAttacked->ubCivilianGroup == NON_CIV_GROUP )
|
if ( pAttacked->ubCivilianGroup == NON_CIV_GROUP )
|
||||||
{
|
{
|
||||||
return( pAttacked->ubProfile );
|
return( pAttacked->ubProfile );
|
||||||
}
|
}
|
||||||
|
|
||||||
cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID;
|
||||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; cnt++ ,pSoldier++ )
|
for ( ; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife && pSoldier->aiData.bNeutral )
|
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife && pSoldier->aiData.bNeutral )
|
||||||
{
|
{
|
||||||
if ( pSoldier->ubCivilianGroup == pAttacked->ubCivilianGroup && pSoldier->ubBodyType != COW )
|
if ( pSoldier->ubCivilianGroup == pAttacked->ubCivilianGroup && pSoldier->ubBodyType != COW )
|
||||||
@@ -4565,7 +4565,6 @@ SOLDIERTYPE * CivilianGroupMemberChangesSides( SOLDIERTYPE * pAttacked )
|
|||||||
SOLDIERTYPE * pNew;
|
SOLDIERTYPE * pNew;
|
||||||
SOLDIERTYPE * pNewAttacked = pAttacked;
|
SOLDIERTYPE * pNewAttacked = pAttacked;
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
UINT16 cnt;
|
|
||||||
UINT8 ubFirstProfile = NO_PROFILE;
|
UINT8 ubFirstProfile = NO_PROFILE;
|
||||||
|
|
||||||
if ( pAttacked->ubCivilianGroup == NON_CIV_GROUP )
|
if ( pAttacked->ubCivilianGroup == NON_CIV_GROUP )
|
||||||
@@ -4575,9 +4574,10 @@ SOLDIERTYPE * CivilianGroupMemberChangesSides( SOLDIERTYPE * pAttacked )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// remove anyone (rebels) on our team and put them back in the civ team
|
// remove anyone (rebels) on our team and put them back in the civ team
|
||||||
cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID;
|
||||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; cnt++ ,pSoldier++)
|
for ( ; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife)
|
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife)
|
||||||
{
|
{
|
||||||
if (pSoldier->ubCivilianGroup == pAttacked->ubCivilianGroup)
|
if (pSoldier->ubCivilianGroup == pAttacked->ubCivilianGroup)
|
||||||
@@ -4658,15 +4658,15 @@ SOLDIERTYPE * CivilianGroupMemberChangesSides( SOLDIERTYPE * pAttacked )
|
|||||||
void CivilianGroupChangesSides( UINT8 ubCivilianGroup )
|
void CivilianGroupChangesSides( UINT8 ubCivilianGroup )
|
||||||
{
|
{
|
||||||
// change civ group side due to external event (wall blowing up)
|
// change civ group side due to external event (wall blowing up)
|
||||||
INT32 cnt;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
|
|
||||||
gTacticalStatus.fCivGroupHostile[ ubCivilianGroup ] = CIV_GROUP_HOSTILE;
|
gTacticalStatus.fCivGroupHostile[ ubCivilianGroup ] = CIV_GROUP_HOSTILE;
|
||||||
|
|
||||||
// now change sides for anyone on the civ team
|
// now change sides for anyone on the civ team
|
||||||
cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID;
|
||||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; cnt++ ,pSoldier++)
|
for ( ; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife && pSoldier->aiData.bNeutral)
|
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife && pSoldier->aiData.bNeutral)
|
||||||
{
|
{
|
||||||
if ( pSoldier->ubCivilianGroup == ubCivilianGroup && pSoldier->ubBodyType != COW )
|
if ( pSoldier->ubCivilianGroup == ubCivilianGroup && pSoldier->ubBodyType != COW )
|
||||||
@@ -4696,13 +4696,13 @@ void CivilianGroupChangesSides( UINT8 ubCivilianGroup )
|
|||||||
|
|
||||||
void HickCowAttacked( SOLDIERTYPE * pNastyGuy, SOLDIERTYPE * pTarget )
|
void HickCowAttacked( SOLDIERTYPE * pNastyGuy, SOLDIERTYPE * pTarget )
|
||||||
{
|
{
|
||||||
INT32 cnt;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
|
|
||||||
// now change sides for anyone on the civ team
|
// now change sides for anyone on the civ team
|
||||||
cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID;
|
||||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; cnt++ ,pSoldier++)
|
for ( ; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife && pSoldier->aiData.bNeutral && pSoldier->ubCivilianGroup == HICKS_CIV_GROUP )
|
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife && pSoldier->aiData.bNeutral && pSoldier->ubCivilianGroup == HICKS_CIV_GROUP )
|
||||||
{
|
{
|
||||||
if ( SoldierToSoldierLineOfSightTest( pSoldier, pNastyGuy, TRUE ) )
|
if ( SoldierToSoldierLineOfSightTest( pSoldier, pNastyGuy, TRUE ) )
|
||||||
@@ -4717,7 +4717,6 @@ void HickCowAttacked( SOLDIERTYPE * pNastyGuy, SOLDIERTYPE * pTarget )
|
|||||||
void MilitiaChangesSides( )
|
void MilitiaChangesSides( )
|
||||||
{
|
{
|
||||||
// make all the militia change sides
|
// make all the militia change sides
|
||||||
INT32 cnt;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
|
|
||||||
if ( gTacticalStatus.Team[ MILITIA_TEAM ].bMenInSector == 0 )
|
if ( gTacticalStatus.Team[ MILITIA_TEAM ].bMenInSector == 0 )
|
||||||
@@ -4726,9 +4725,10 @@ void MilitiaChangesSides( )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// remove anyone (rebels) on our team and put them back in the civ team
|
// remove anyone (rebels) on our team and put them back in the civ team
|
||||||
cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID;
|
||||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++ ,pSoldier++)
|
for ( ; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife)
|
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife)
|
||||||
{
|
{
|
||||||
if ( (gWorldSectorX == 0 && gWorldSectorY == 0) || !NumNonPlayerTeamMembersInSector( gWorldSectorX, gWorldSectorY, ENEMY_TEAM ) )
|
if ( (gWorldSectorX == 0 && gWorldSectorY == 0) || !NumNonPlayerTeamMembersInSector( gWorldSectorX, gWorldSectorY, ENEMY_TEAM ) )
|
||||||
@@ -4757,15 +4757,14 @@ gTacticalStatus.fCivGroupHostile[ ubLoop ] = CIV_GROUP_HOSTILE;
|
|||||||
|
|
||||||
UINT16 NumActiveAndConsciousTeamMembers( UINT8 ubTeam )
|
UINT16 NumActiveAndConsciousTeamMembers( UINT8 ubTeam )
|
||||||
{
|
{
|
||||||
INT32 cnt;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
UINT16 ubCount = 0;
|
UINT16 ubCount = 0;
|
||||||
|
SoldierID cnt = gTacticalStatus.Team[ ubTeam ].bFirstID;
|
||||||
cnt = gTacticalStatus.Team[ ubTeam ].bFirstID;
|
|
||||||
|
|
||||||
// look for all mercs on the same team,
|
// look for all mercs on the same team,
|
||||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ ubTeam ].bLastID; cnt++,pSoldier++)
|
for ( ; cnt <= gTacticalStatus.Team[ ubTeam ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if ( OK_CONTROLLABLE_MERC( pSoldier) )
|
if ( OK_CONTROLLABLE_MERC( pSoldier) )
|
||||||
{
|
{
|
||||||
ubCount++;
|
ubCount++;
|
||||||
@@ -4778,16 +4777,14 @@ UINT16 NumActiveAndConsciousTeamMembers( UINT8 ubTeam )
|
|||||||
|
|
||||||
SoldierID FindNextActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs )
|
SoldierID FindNextActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs )
|
||||||
{
|
{
|
||||||
UINT16 bLastTeamID;
|
|
||||||
UINT16 cnt;
|
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
|
SoldierID cnt = pSoldier->ubID + 1;
|
||||||
cnt = pSoldier->ubID + 1;
|
SoldierID bLastTeamID = gTacticalStatus.Team[ pSoldier->bTeam ].bLastID;
|
||||||
bLastTeamID = gTacticalStatus.Team[ pSoldier->bTeam ].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 ( ; cnt <= bLastTeamID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
if ( fOnlyRegularMercs )
|
if ( fOnlyRegularMercs )
|
||||||
{
|
{
|
||||||
if ( pTeamSoldier->bActive && ( AM_AN_EPC( pTeamSoldier ) || AM_A_ROBOT( pTeamSoldier ) ) )
|
if ( pTeamSoldier->bActive && ( AM_AN_EPC( pTeamSoldier ) || AM_A_ROBOT( pTeamSoldier ) ) )
|
||||||
@@ -4817,8 +4814,9 @@ SoldierID FindNextActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLes
|
|||||||
cnt = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID;
|
cnt = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID;
|
||||||
bLastTeamID = pSoldier->ubID;
|
bLastTeamID = pSoldier->ubID;
|
||||||
|
|
||||||
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= bLastTeamID; cnt++,pTeamSoldier++)
|
for ( ; cnt <= bLastTeamID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
if ( fOnlyRegularMercs )
|
if ( fOnlyRegularMercs )
|
||||||
{
|
{
|
||||||
if ( pTeamSoldier->bActive && ( AM_AN_EPC( pTeamSoldier ) || AM_A_ROBOT( pTeamSoldier ) ) )
|
if ( pTeamSoldier->bActive && ( AM_AN_EPC( pTeamSoldier ) || AM_A_ROBOT( pTeamSoldier ) ) )
|
||||||
@@ -4892,17 +4890,16 @@ SOLDIERTYPE *FindNextActiveSquad( SOLDIERTYPE *pSoldier )
|
|||||||
|
|
||||||
SoldierID FindPrevActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs )
|
SoldierID FindPrevActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs )
|
||||||
{
|
{
|
||||||
UINT16 bLastTeamID;
|
|
||||||
INT32 cnt;
|
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
|
|
||||||
|
|
||||||
// loop back
|
// loop back
|
||||||
bLastTeamID = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID;
|
SoldierID bLastTeamID = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID;
|
||||||
cnt = pSoldier->ubID - 1;
|
SoldierID cnt = pSoldier->ubID - 1;
|
||||||
|
|
||||||
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt >= bLastTeamID; cnt--,pTeamSoldier-- )
|
for ( ; cnt >= bLastTeamID; --cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
if ( fOnlyRegularMercs )
|
if ( fOnlyRegularMercs )
|
||||||
{
|
{
|
||||||
if ( AM_AN_EPC( pTeamSoldier ) || AM_A_ROBOT( pTeamSoldier ) )
|
if ( AM_AN_EPC( pTeamSoldier ) || AM_A_ROBOT( pTeamSoldier ) )
|
||||||
@@ -4932,8 +4929,9 @@ SoldierID FindPrevActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLes
|
|||||||
cnt = gTacticalStatus.Team[ pSoldier->bTeam ].bLastID;
|
cnt = gTacticalStatus.Team[ pSoldier->bTeam ].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 ( ; cnt >= bLastTeamID; --cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
if ( fOnlyRegularMercs )
|
if ( fOnlyRegularMercs )
|
||||||
{
|
{
|
||||||
if ( AM_AN_EPC( pTeamSoldier ) || AM_A_ROBOT( pTeamSoldier ) )
|
if ( AM_AN_EPC( pTeamSoldier ) || AM_A_ROBOT( pTeamSoldier ) )
|
||||||
@@ -4966,16 +4964,16 @@ SoldierID FindPrevActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLes
|
|||||||
|
|
||||||
BOOLEAN CheckForPlayerTeamInMissionExit( )
|
BOOLEAN CheckForPlayerTeamInMissionExit( )
|
||||||
{
|
{
|
||||||
INT32 cnt;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
UINT16 bGuysIn = 0;
|
UINT16 bGuysIn = 0;
|
||||||
|
|
||||||
// End the turn of player charactors
|
// End the turn of player charactors
|
||||||
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 ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE )
|
if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE )
|
||||||
{
|
{
|
||||||
if ( pSoldier->flags.fInMissionExitNode )
|
if ( pSoldier->flags.fInMissionExitNode )
|
||||||
@@ -5422,11 +5420,11 @@ BOOLEAN IsLocationSittableExcludingPeople( INT32 iMapIndex, BOOLEAN fOnRoof )
|
|||||||
|
|
||||||
BOOLEAN TeamMemberNear( INT8 bTeam, INT32 sGridNo, INT32 iRange )
|
BOOLEAN TeamMemberNear( INT8 bTeam, INT32 sGridNo, INT32 iRange )
|
||||||
{
|
{
|
||||||
UINT16 bLoop;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
|
|
||||||
for (bLoop=gTacticalStatus.Team[bTeam].bFirstID, pSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[bTeam].bLastID; ++bLoop, pSoldier++)
|
for ( SoldierID bLoop = gTacticalStatus.Team[bTeam].bFirstID; bLoop <= gTacticalStatus.Team[bTeam].bLastID; ++bLoop )
|
||||||
{
|
{
|
||||||
|
pSoldier = bLoop;
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector && (pSoldier->stats.bLife >= OKLIFE) && !(pSoldier->flags.uiStatusFlags & SOLDIER_GASSED) )
|
if ( pSoldier->bActive && pSoldier->bInSector && (pSoldier->stats.bLife >= OKLIFE) && !(pSoldier->flags.uiStatusFlags & SOLDIER_GASSED) )
|
||||||
{
|
{
|
||||||
if ( PythSpacesAway( pSoldier->sGridNo, sGridNo ) <= iRange )
|
if ( PythSpacesAway( pSoldier->sGridNo, sGridNo ) <= iRange )
|
||||||
@@ -6198,7 +6196,6 @@ BOOLEAN UIOKMoveDestination( SOLDIERTYPE *pSoldier, INT32 usMapPos )
|
|||||||
|
|
||||||
void HandleTeamServices( UINT8 ubTeamNum )
|
void HandleTeamServices( UINT8 ubTeamNum )
|
||||||
{
|
{
|
||||||
INT32 cnt;
|
|
||||||
SOLDIERTYPE *pTeamSoldier, *pTargetSoldier;
|
SOLDIERTYPE *pTeamSoldier, *pTargetSoldier;
|
||||||
UINT32 uiPointsUsed;
|
UINT32 uiPointsUsed;
|
||||||
SoldierID usSoldierIndex;
|
SoldierID usSoldierIndex;
|
||||||
@@ -6207,11 +6204,12 @@ void HandleTeamServices( UINT8 ubTeamNum )
|
|||||||
BOOLEAN fDone;
|
BOOLEAN fDone;
|
||||||
|
|
||||||
// IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED!
|
// IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED!
|
||||||
cnt = gTacticalStatus.Team[ ubTeamNum ].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[ ubTeamNum ].bFirstID;
|
||||||
|
|
||||||
// look for all mercs on the same team,
|
// look for all mercs on the same team,
|
||||||
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ ubTeamNum ].bLastID; ++cnt, pTeamSoldier++)
|
for ( ; cnt <= gTacticalStatus.Team[ ubTeamNum ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
if ( pTeamSoldier->stats.bLife >= OKLIFE && pTeamSoldier->bActive && pTeamSoldier->bInSector )
|
if ( pTeamSoldier->stats.bLife >= OKLIFE && pTeamSoldier->bActive && pTeamSoldier->bInSector )
|
||||||
{
|
{
|
||||||
fDone = FALSE;
|
fDone = FALSE;
|
||||||
@@ -6502,7 +6500,6 @@ void CommonEnterCombatModeCode( )
|
|||||||
|
|
||||||
void EnterCombatMode( UINT8 ubStartingTeam )
|
void EnterCombatMode( UINT8 ubStartingTeam )
|
||||||
{
|
{
|
||||||
UINT32 cnt;
|
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"EnterCombatMode");
|
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"EnterCombatMode");
|
||||||
|
|
||||||
@@ -6547,8 +6544,9 @@ void EnterCombatMode( UINT8 ubStartingTeam )
|
|||||||
{
|
{
|
||||||
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"EnterCombatMode continuing... nobody selected");
|
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"EnterCombatMode continuing... nobody selected");
|
||||||
// OK, look through and find one....
|
// OK, look through and find one....
|
||||||
for ( cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID, pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt, pTeamSoldier++ )
|
for ( SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->aiData.bOppCnt > 0 )
|
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->aiData.bOppCnt > 0 )
|
||||||
{
|
{
|
||||||
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"EnterCombatMode continuing... select soldier");
|
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"EnterCombatMode continuing... select soldier");
|
||||||
@@ -6755,7 +6753,6 @@ extern SoldierID gfLastMercTalkedAboutKillingID;
|
|||||||
|
|
||||||
BOOLEAN SoldierHasSeenEnemiesLastFewTurns( SOLDIERTYPE *pTeamSoldier )
|
BOOLEAN SoldierHasSeenEnemiesLastFewTurns( SOLDIERTYPE *pTeamSoldier )
|
||||||
{
|
{
|
||||||
INT32 cnt2;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
INT32 cnt;
|
INT32 cnt;
|
||||||
|
|
||||||
@@ -6766,9 +6763,10 @@ BOOLEAN SoldierHasSeenEnemiesLastFewTurns( SOLDIERTYPE *pTeamSoldier )
|
|||||||
{
|
{
|
||||||
|
|
||||||
// check this team for possible enemies
|
// check this team for possible enemies
|
||||||
cnt2 = gTacticalStatus.Team[ cnt ].bFirstID;
|
SoldierID cnt2 = gTacticalStatus.Team[ cnt ].bFirstID;
|
||||||
for ( pSoldier = MercPtrs[ cnt2 ]; cnt2 <= gTacticalStatus.Team[ cnt ].bLastID; cnt2++, pSoldier++ )
|
for ( ; cnt2 <= gTacticalStatus.Team[ cnt ].bLastID; ++cnt2 )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt2;
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector && ( pSoldier->bTeam == gbPlayerNum || pSoldier->stats.bLife >= OKLIFE ) )
|
if ( pSoldier->bActive && pSoldier->bInSector && ( pSoldier->bTeam == gbPlayerNum || pSoldier->stats.bLife >= OKLIFE ) )
|
||||||
{
|
{
|
||||||
if ( !CONSIDERED_NEUTRAL( pTeamSoldier, pSoldier ) && ( pTeamSoldier->bSide != pSoldier->bSide ) )
|
if ( !CONSIDERED_NEUTRAL( pTeamSoldier, pSoldier ) && ( pTeamSoldier->bSide != pSoldier->bSide ) )
|
||||||
@@ -6867,16 +6865,16 @@ void SayBattleSoundFromAnyBodyInSector( INT32 iBattleSnd )
|
|||||||
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 ) && !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 )
|
||||||
{
|
{
|
||||||
@@ -6888,11 +6886,10 @@ void SayBattleSoundFromAnyBodyInSector( INT32 iBattleSnd )
|
|||||||
// If we are > 0
|
// If we are > 0
|
||||||
if ( ubNumMercs > 0 )
|
if ( ubNumMercs > 0 )
|
||||||
{
|
{
|
||||||
ubChosenMerc = (UINT16)Random( ubNumMercs );
|
ubChosenMerc = ubMercsInSector[ (UINT16)Random( ubNumMercs ) ];
|
||||||
|
|
||||||
MercPtrs[ ubChosenMerc ]->DoMercBattleSound( (UINT8)iBattleSnd );
|
MercPtrs[ ubChosenMerc ]->DoMercBattleSound( (UINT8)iBattleSnd );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -7514,12 +7511,13 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated )
|
|||||||
if (fBattleLost)
|
if (fBattleLost)
|
||||||
{
|
{
|
||||||
// sevenfm: count alive/dead/not covert mercs in sector/retreating from sector
|
// sevenfm: count alive/dead/not covert mercs in sector/retreating from sector
|
||||||
UINT16 ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
SoldierID ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||||
BOOLEAN fFoundNotCovertMerc = FALSE;
|
BOOLEAN fFoundNotCovertMerc = FALSE;
|
||||||
BOOLEAN fFoundAliveMerc = FALSE;
|
BOOLEAN fFoundAliveMerc = FALSE;
|
||||||
BOOLEAN fFoundDeadMerc = FALSE;
|
BOOLEAN fFoundDeadMerc = FALSE;
|
||||||
for (pTeamSoldier = MercPtrs[ubLoop]; ubLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ubLoop++, pTeamSoldier++)
|
for (; ubLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++ubLoop )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = ubLoop;
|
||||||
if (pTeamSoldier->bActive)
|
if (pTeamSoldier->bActive)
|
||||||
{
|
{
|
||||||
if (pTeamSoldier->bInSector ||
|
if (pTeamSoldier->bInSector ||
|
||||||
@@ -7833,9 +7831,10 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated )
|
|||||||
|
|
||||||
|
|
||||||
// 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;
|
||||||
@@ -7865,8 +7864,9 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated )
|
|||||||
|
|
||||||
// Loop through all civs and restore them to peaceful status
|
// Loop through all civs and restore them to peaceful status
|
||||||
cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID;
|
cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID;
|
||||||
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;
|
||||||
@@ -8172,12 +8172,12 @@ void CycleVisibleEnemiesBackward( SOLDIERTYPE *pSrcSoldier )
|
|||||||
|
|
||||||
UINT32 CountNonVehiclesOnPlayerTeam( )
|
UINT32 CountNonVehiclesOnPlayerTeam( )
|
||||||
{
|
{
|
||||||
UINT32 cnt;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
UINT32 bNumber = 0;
|
UINT32 bNumber = 0;
|
||||||
|
|
||||||
for ( cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID, pSoldier = MercPtrs[ cnt ]; cnt <= (UINT32)( gTacticalStatus.Team[ gbPlayerNum ].bLastID ); cnt++, pSoldier++ )
|
for ( SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if ( pSoldier->bActive && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) )
|
if ( pSoldier->bActive && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) )
|
||||||
{
|
{
|
||||||
bNumber++;
|
bNumber++;
|
||||||
@@ -8185,7 +8185,6 @@ UINT32 CountNonVehiclesOnPlayerTeam( )
|
|||||||
}
|
}
|
||||||
|
|
||||||
return( bNumber );
|
return( bNumber );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -8415,7 +8414,6 @@ UINT16 NumCapableEnemyInSector( )
|
|||||||
BOOLEAN CheckForLosingEndOfBattle( )
|
BOOLEAN CheckForLosingEndOfBattle( )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
INT32 cnt = 0;
|
|
||||||
UINT16 bNumDead = 0, bNumNotOK = 0, bNumInBattle = 0, bNumNotOKRealMercs = 0;
|
UINT16 bNumDead = 0, bNumNotOK = 0, bNumInBattle = 0, bNumNotOKRealMercs = 0;
|
||||||
BOOLEAN fMadeCorpse;
|
BOOLEAN fMadeCorpse;
|
||||||
BOOLEAN fDoCapture = FALSE;
|
BOOLEAN fDoCapture = FALSE;
|
||||||
@@ -8424,9 +8422,10 @@ BOOLEAN CheckForLosingEndOfBattle( )
|
|||||||
|
|
||||||
|
|
||||||
// ATE: Check for MILITIA - we won't lose if we have some.....
|
// ATE: Check for MILITIA - we won't lose if we have some.....
|
||||||
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 && pTeamSoldier->bSide == gbPlayerNum )
|
if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bSide == gbPlayerNum )
|
||||||
{
|
{
|
||||||
if ( pTeamSoldier->stats.bLife >= OKLIFE )
|
if ( pTeamSoldier->stats.bLife >= OKLIFE )
|
||||||
@@ -8443,8 +8442,9 @@ BOOLEAN CheckForLosingEndOfBattle( )
|
|||||||
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 ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++)
|
for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
// Are we active and in sector.....
|
// Are we active and in sector.....
|
||||||
if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) )
|
if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) )
|
||||||
{
|
{
|
||||||
@@ -8529,8 +8529,9 @@ BOOLEAN CheckForLosingEndOfBattle( )
|
|||||||
// IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED!
|
// IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED!
|
||||||
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||||
|
|
||||||
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++)
|
for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
// Are we active and in sector.....
|
// Are we active and in sector.....
|
||||||
if ( pTeamSoldier->bActive && pTeamSoldier->bInSector )
|
if ( pTeamSoldier->bActive && pTeamSoldier->bInSector )
|
||||||
{
|
{
|
||||||
@@ -9555,7 +9556,6 @@ SOLDIERTYPE *InternalReduceAttackBusyCount( )
|
|||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
SOLDIERTYPE *pTarget;
|
SOLDIERTYPE *pTarget;
|
||||||
BOOLEAN fEnterCombat = FALSE;
|
BOOLEAN fEnterCombat = FALSE;
|
||||||
UINT32 cnt;
|
|
||||||
SoldierID ubID;
|
SoldierID ubID;
|
||||||
|
|
||||||
|
|
||||||
@@ -9604,14 +9604,13 @@ SOLDIERTYPE *InternalReduceAttackBusyCount( )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (cnt = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID;
|
for ( SoldierID id = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID;
|
||||||
cnt <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID;
|
id <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID;
|
||||||
cnt++)
|
++id)
|
||||||
{
|
{
|
||||||
if (MercPtrs[ cnt ] &&
|
if (id != NOBODY && id->flags.uiStatusFlags & SOLDIER_UNDERAICONTROL)
|
||||||
MercPtrs[ cnt ]->flags.uiStatusFlags & SOLDIER_UNDERAICONTROL)
|
|
||||||
{
|
{
|
||||||
pSoldier = MercPtrs[ cnt ];
|
pSoldier = id;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9712,14 +9711,12 @@ SOLDIERTYPE *InternalReduceAttackBusyCount( )
|
|||||||
{
|
{
|
||||||
// Loop through our team, make guys who can see this fly away....
|
// Loop through our team, make guys who can see this fly away....
|
||||||
{
|
{
|
||||||
UINT32 cnt;
|
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
UINT8 ubTeam;
|
UINT8 ubTeam = pTarget->bTeam;
|
||||||
|
|
||||||
ubTeam = pTarget->bTeam;
|
for ( SoldierID cnt = gTacticalStatus.Team[ ubTeam ].bFirstID; cnt <= gTacticalStatus.Team[ ubTeam ].bLastID; ++cnt )
|
||||||
|
|
||||||
for ( cnt = gTacticalStatus.Team[ ubTeam ].bFirstID, pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ ubTeam ].bLastID; cnt++, pTeamSoldier++ )
|
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
if ( pTeamSoldier->bActive && pTeamSoldier->bInSector )
|
if ( pTeamSoldier->bActive && pTeamSoldier->bInSector )
|
||||||
{
|
{
|
||||||
if ( pTeamSoldier->ubBodyType == CROW )
|
if ( pTeamSoldier->ubBodyType == CROW )
|
||||||
@@ -9859,15 +9856,16 @@ SOLDIERTYPE *InternalReduceAttackBusyCount( )
|
|||||||
|
|
||||||
if ( gTacticalStatus.uiFlags & CHECK_SIGHT_AT_END_OF_ATTACK )
|
if ( gTacticalStatus.uiFlags & CHECK_SIGHT_AT_END_OF_ATTACK )
|
||||||
{
|
{
|
||||||
UINT16 ubLoop;
|
SoldierID ubLoop;
|
||||||
SOLDIERTYPE * pSightSoldier;
|
SOLDIERTYPE * pSightSoldier;
|
||||||
|
|
||||||
AllTeamsLookForAll( FALSE );
|
AllTeamsLookForAll( FALSE );
|
||||||
|
|
||||||
// call fov code
|
// call fov code
|
||||||
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||||
for ( pSightSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pSightSoldier++ )
|
for ( ; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubLoop )
|
||||||
{
|
{
|
||||||
|
pSightSoldier = ubLoop;
|
||||||
if ( pSightSoldier->bActive && pSightSoldier->bInSector )
|
if ( pSightSoldier->bActive && pSightSoldier->bInSector )
|
||||||
{
|
{
|
||||||
RevealRoofsAndItems( pSightSoldier, TRUE, FALSE, pSightSoldier->pathing.bLevel, FALSE );
|
RevealRoofsAndItems( pSightSoldier, TRUE, FALSE, pSightSoldier->pathing.bLevel, FALSE );
|
||||||
@@ -9936,7 +9934,7 @@ SOLDIERTYPE *InternalReduceAttackBusyCount( )
|
|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// Reset various flags and values that should be 0 once the action is overwith
|
// Reset various flags and values that should be 0 once the action is overwith
|
||||||
for (cnt = 0; cnt < guiNumMercSlots; cnt++)
|
for (UINT32 cnt = 0; cnt < guiNumMercSlots; cnt++)
|
||||||
{
|
{
|
||||||
pSoldier = MercSlots[ cnt ];
|
pSoldier = MercSlots[ cnt ];
|
||||||
if ( pSoldier )
|
if ( pSoldier )
|
||||||
@@ -10242,7 +10240,7 @@ void EndBattleWithUnconsciousGuysCallback( UINT8 bExitValue )
|
|||||||
void InitializeTacticalStatusAtBattleStart( )
|
void InitializeTacticalStatusAtBattleStart( )
|
||||||
{
|
{
|
||||||
INT8 bLoop;
|
INT8 bLoop;
|
||||||
INT32 cnt;
|
SoldierID cnt;
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
|
|
||||||
gTacticalStatus.ubArmyGuysKilled = 0;
|
gTacticalStatus.ubArmyGuysKilled = 0;
|
||||||
@@ -10257,10 +10255,10 @@ void InitializeTacticalStatusAtBattleStart( )
|
|||||||
gTacticalStatus.ubPanicTolerance[ bLoop ] = 0;
|
gTacticalStatus.ubPanicTolerance[ bLoop ] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for( cnt = 0; cnt < MAXTEAMS; cnt++ )
|
for( bLoop = 0; bLoop < MAXTEAMS; bLoop++ )
|
||||||
{
|
{
|
||||||
gTacticalStatus.Team[ cnt ].ubLastMercToRadio = NOBODY;
|
gTacticalStatus.Team[ bLoop ].ubLastMercToRadio = NOBODY;
|
||||||
gTacticalStatus.Team[ cnt ].bAwareOfOpposition = FALSE;
|
gTacticalStatus.Team[ bLoop ].bAwareOfOpposition = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
gTacticalStatus.ubTheChosenOne = NOBODY;
|
gTacticalStatus.ubTheChosenOne = NOBODY;
|
||||||
@@ -10268,19 +10266,18 @@ void InitializeTacticalStatusAtBattleStart( )
|
|||||||
ClearIntList();
|
ClearIntList();
|
||||||
|
|
||||||
// make sure none of our guys have leftover shock values etc
|
// make sure none of our guys have leftover shock values etc
|
||||||
for ( cnt = gTacticalStatus.Team[ 0 ].bFirstID; cnt <= gTacticalStatus.Team[ 0 ].bLastID; cnt++ )
|
for ( cnt = gTacticalStatus.Team[ 0 ].bFirstID; cnt <= gTacticalStatus.Team[ 0 ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
pSoldier = MercPtrs[ cnt ];
|
pSoldier = cnt;
|
||||||
pSoldier->aiData.bShock = 0;
|
pSoldier->aiData.bShock = 0;
|
||||||
pSoldier->bTilesMoved = 0;
|
pSoldier->bTilesMoved = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// loop through everyone; clear misc flags
|
// loop through everyone; clear misc flags
|
||||||
for ( cnt = 0; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; cnt++ )
|
for ( cnt = 0; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
MercPtrs[ cnt ]->ubMiscSoldierFlags = 0;
|
cnt->ubMiscSoldierFlags = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -10329,16 +10326,15 @@ void CaptureTimerCallback( )
|
|||||||
|
|
||||||
void DoPOWPathChecks( )
|
void DoPOWPathChecks( )
|
||||||
{
|
{
|
||||||
INT32 iLoop;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
|
|
||||||
BOOLEAN is_this_tixa = (gWorldSectorX == gModSettings.ubTixaPrisonSectorX && gWorldSectorY == gModSettings.ubTixaPrisonSectorY);
|
BOOLEAN is_this_tixa = (gWorldSectorX == gModSettings.ubTixaPrisonSectorX && gWorldSectorY == gModSettings.ubTixaPrisonSectorY);
|
||||||
|
|
||||||
// loop through all mercs on our team and if they are POWs in sector, do POW path check and
|
// loop through all mercs on our team and if they are POWs in sector, do POW path check and
|
||||||
// put on a squad if available
|
// put on a squad if available
|
||||||
for ( iLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; iLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; iLoop++ )
|
for ( SoldierID iLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; iLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++iLoop )
|
||||||
{
|
{
|
||||||
pSoldier = MercPtrs[ iLoop ];
|
pSoldier = iLoop;
|
||||||
|
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->bAssignment == ASSIGNMENT_POW )
|
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->bAssignment == ASSIGNMENT_POW )
|
||||||
{
|
{
|
||||||
@@ -10378,7 +10374,6 @@ void DoPOWPathChecks( )
|
|||||||
|
|
||||||
BOOLEAN HostileCiviliansPresent( )
|
BOOLEAN HostileCiviliansPresent( )
|
||||||
{
|
{
|
||||||
INT32 iLoop;
|
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
|
|
||||||
if ( gTacticalStatus.Team[ CIV_TEAM ].bTeamActive == FALSE )
|
if ( gTacticalStatus.Team[ CIV_TEAM ].bTeamActive == FALSE )
|
||||||
@@ -10386,9 +10381,9 @@ BOOLEAN HostileCiviliansPresent( )
|
|||||||
return( FALSE );
|
return( FALSE );
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( iLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; iLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; iLoop++ )
|
for ( SoldierID iLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; iLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++iLoop )
|
||||||
{
|
{
|
||||||
pSoldier = MercPtrs[ iLoop ];
|
pSoldier = iLoop;
|
||||||
|
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 && !pSoldier->aiData.bNeutral )
|
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 && !pSoldier->aiData.bNeutral )
|
||||||
{
|
{
|
||||||
@@ -10401,7 +10396,6 @@ BOOLEAN HostileCiviliansPresent( )
|
|||||||
|
|
||||||
BOOLEAN HostileCiviliansWithGunsPresent( )
|
BOOLEAN HostileCiviliansWithGunsPresent( )
|
||||||
{
|
{
|
||||||
INT32 iLoop;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
|
|
||||||
if ( gTacticalStatus.Team[ CIV_TEAM ].bTeamActive == FALSE )
|
if ( gTacticalStatus.Team[ CIV_TEAM ].bTeamActive == FALSE )
|
||||||
@@ -10409,9 +10403,9 @@ BOOLEAN HostileCiviliansWithGunsPresent( )
|
|||||||
return( FALSE );
|
return( FALSE );
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( iLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; iLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; iLoop++ )
|
for ( SoldierID iLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; iLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++iLoop )
|
||||||
{
|
{
|
||||||
pSoldier = MercPtrs[ iLoop ];
|
pSoldier = iLoop;
|
||||||
|
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 && !pSoldier->aiData.bNeutral )
|
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 && !pSoldier->aiData.bNeutral )
|
||||||
{
|
{
|
||||||
@@ -10428,7 +10422,6 @@ BOOLEAN HostileCiviliansWithGunsPresent( )
|
|||||||
|
|
||||||
BOOLEAN HostileBloodcatsPresent( )
|
BOOLEAN HostileBloodcatsPresent( )
|
||||||
{
|
{
|
||||||
INT32 iLoop;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
|
|
||||||
if ( gTacticalStatus.Team[ CREATURE_TEAM ].bTeamActive == FALSE )
|
if ( gTacticalStatus.Team[ CREATURE_TEAM ].bTeamActive == FALSE )
|
||||||
@@ -10436,9 +10429,9 @@ BOOLEAN HostileBloodcatsPresent( )
|
|||||||
return( FALSE );
|
return( FALSE );
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( iLoop = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; iLoop <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; iLoop++ )
|
for ( SoldierID iLoop = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; iLoop <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++iLoop )
|
||||||
{
|
{
|
||||||
pSoldier = MercPtrs[ iLoop ];
|
pSoldier = iLoop;
|
||||||
|
|
||||||
//KM : Aug 11, 1999 -- Patch fix: Removed the check for bNeutral. Bloodcats automatically become hostile
|
//KM : Aug 11, 1999 -- Patch fix: Removed the check for bNeutral. Bloodcats automatically become hostile
|
||||||
// on site. Because the check used to be there, it was possible to get into a 2nd battle elsewhere
|
// on site. Because the check used to be there, it was possible to get into a 2nd battle elsewhere
|
||||||
@@ -10454,7 +10447,6 @@ BOOLEAN HostileBloodcatsPresent( )
|
|||||||
|
|
||||||
BOOLEAN HostileZombiesPresent( )
|
BOOLEAN HostileZombiesPresent( )
|
||||||
{
|
{
|
||||||
INT32 iLoop;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
|
|
||||||
if ( gTacticalStatus.Team[ CREATURE_TEAM ].bTeamActive == FALSE )
|
if ( gTacticalStatus.Team[ CREATURE_TEAM ].bTeamActive == FALSE )
|
||||||
@@ -10462,9 +10454,9 @@ BOOLEAN HostileZombiesPresent( )
|
|||||||
return( FALSE );
|
return( FALSE );
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( iLoop = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; iLoop <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++iLoop )
|
for ( SoldierID iLoop = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; iLoop <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++iLoop )
|
||||||
{
|
{
|
||||||
pSoldier = MercPtrs[ iLoop ];
|
pSoldier = iLoop;
|
||||||
|
|
||||||
if ( pSoldier && pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 && pSoldier->IsZombie( ) )
|
if ( pSoldier && pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 && pSoldier->IsZombie( ) )
|
||||||
{
|
{
|
||||||
@@ -10484,9 +10476,9 @@ BOOLEAN HostileCreaturesPresent()
|
|||||||
return( FALSE );
|
return( FALSE );
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( INT32 iLoop = gTacticalStatus.Team[CREATURE_TEAM].bFirstID; iLoop <= gTacticalStatus.Team[CREATURE_TEAM].bLastID; ++iLoop )
|
for ( SoldierID iLoop = gTacticalStatus.Team[CREATURE_TEAM].bFirstID; iLoop <= gTacticalStatus.Team[CREATURE_TEAM].bLastID; ++iLoop )
|
||||||
{
|
{
|
||||||
pSoldier = MercPtrs[iLoop];
|
pSoldier = iLoop;
|
||||||
|
|
||||||
if ( pSoldier && pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 )
|
if ( pSoldier && pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 )
|
||||||
{
|
{
|
||||||
@@ -10505,7 +10497,6 @@ void HandleCreatureTenseQuote( )
|
|||||||
UINT16 ubNumMercs = 0;
|
UINT16 ubNumMercs = 0;
|
||||||
UINT16 ubChosenMerc;
|
UINT16 ubChosenMerc;
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
INT32 cnt;
|
|
||||||
INT32 uiTime;
|
INT32 uiTime;
|
||||||
|
|
||||||
|
|
||||||
@@ -10523,11 +10514,12 @@ void HandleCreatureTenseQuote( )
|
|||||||
gTacticalStatus.uiCreatureTenseQuoteLastUpdate = uiTime;
|
gTacticalStatus.uiCreatureTenseQuoteLastUpdate = uiTime;
|
||||||
|
|
||||||
// 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 ) && !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 )
|
||||||
{
|
{
|
||||||
@@ -10652,9 +10644,9 @@ INT8 CheckStatusNearbyFriendlies( SOLDIERTYPE *pSoldier )
|
|||||||
INT8 bLevelDifference = 0;
|
INT8 bLevelDifference = 0;
|
||||||
|
|
||||||
// Run through each friendly.
|
// Run through each friendly.
|
||||||
for ( UINT16 iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; iCounter ++ )
|
for ( SoldierID iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; ++iCounter )
|
||||||
{
|
{
|
||||||
pLeader = MercPtrs[ iCounter ];
|
pLeader = iCounter;
|
||||||
// Make sure that character is alive, not too shocked, and conscious, and of higher experience level
|
// Make sure that character is alive, not too shocked, and conscious, and of higher experience level
|
||||||
// than the character being suppressed.
|
// than the character being suppressed.
|
||||||
if (pLeader != pSoldier && pLeader->bActive && pLeader->aiData.bShock < pLeader->stats.bLeadership/5 &&
|
if (pLeader != pSoldier && pLeader->bActive && pLeader->aiData.bShock < pLeader->stats.bLeadership/5 &&
|
||||||
@@ -10744,9 +10736,9 @@ INT8 CheckStatusNearbyFriendliesSimple(SOLDIERTYPE *pSoldier)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Run through each friendly.
|
// Run through each friendly.
|
||||||
for (UINT16 ubFriend = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; ubFriend <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; ubFriend ++)
|
for ( SoldierID ubFriend = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; ubFriend <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; ++ubFriend)
|
||||||
{
|
{
|
||||||
pFriend = MercPtrs[ ubFriend ];
|
pFriend = ubFriend;
|
||||||
|
|
||||||
// Make sure that character is alive and active
|
// Make sure that character is alive and active
|
||||||
if (pFriend &&
|
if (pFriend &&
|
||||||
@@ -11065,10 +11057,11 @@ void AttemptToCapturePlayerSoldiers()
|
|||||||
BeginCaptureSquence();
|
BeginCaptureSquence();
|
||||||
const UINT8 currentPOWs = gStrategicStatus.ubNumCapturedForRescue;
|
const UINT8 currentPOWs = gStrategicStatus.ubNumCapturedForRescue;
|
||||||
// Do capture
|
// Do capture
|
||||||
UINT32 i = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
SoldierID i = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||||
UINT32 const lastID = gTacticalStatus.Team[gbPlayerNum].bLastID;
|
SoldierID const lastID = gTacticalStatus.Team[gbPlayerNum].bLastID;
|
||||||
for (SOLDIERTYPE* pSoldier = MercPtrs[i]; i <= lastID; ++i, ++pSoldier)
|
for ( ; i <= lastID; ++i )
|
||||||
{
|
{
|
||||||
|
SOLDIERTYPE *pSoldier = i;
|
||||||
// Are we active and in sector
|
// Are we active and in sector
|
||||||
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->bAssignment != ASSIGNMENT_POW)
|
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->bAssignment != ASSIGNMENT_POW)
|
||||||
{
|
{
|
||||||
@@ -11100,10 +11093,11 @@ void AttemptToCapturePlayerSoldiers()
|
|||||||
// If we have any remaining active mercs in sector after capture, give them a chance to escape from the clutches of Deidranna's soldiers!
|
// If we have any remaining active mercs in sector after capture, give them a chance to escape from the clutches of Deidranna's soldiers!
|
||||||
bool activeMercs = false;
|
bool activeMercs = false;
|
||||||
|
|
||||||
UINT32 i = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
SoldierID i = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||||
UINT32 lastId = gTacticalStatus.Team[gbPlayerNum].bLastID;
|
SoldierID lastId = gTacticalStatus.Team[gbPlayerNum].bLastID;
|
||||||
for (SOLDIERTYPE* pSoldier = MercPtrs[i]; i <= lastId; ++i, ++pSoldier)
|
for ( ; i <= lastId; ++i )
|
||||||
{
|
{
|
||||||
|
SOLDIERTYPE *pSoldier = i;
|
||||||
// Are we active and in sector
|
// Are we active and in sector
|
||||||
const bool inSector = (pSoldier->sSectorX == gWorldSectorX && pSoldier->sSectorY == gWorldSectorY && pSoldier->bSectorZ == gbWorldSectorZ);
|
const bool inSector = (pSoldier->sSectorX == gWorldSectorX && pSoldier->sSectorY == gWorldSectorY && pSoldier->bSectorZ == gbWorldSectorZ);
|
||||||
if (pSoldier->bActive && inSector && pSoldier->stats.bLife >= OKLIFE && pSoldier->bAssignment != ASSIGNMENT_POW)
|
if (pSoldier->bActive && inSector && pSoldier->stats.bLife >= OKLIFE && pSoldier->bAssignment != ASSIGNMENT_POW)
|
||||||
@@ -11126,7 +11120,6 @@ void AttemptToCapturePlayerSoldiers()
|
|||||||
void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue )
|
void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pSoldier = NULL;
|
SOLDIERTYPE *pSoldier = NULL;
|
||||||
UINT32 uiCnt=0;
|
|
||||||
BOOLEAN success = FALSE;
|
BOOLEAN success = FALSE;
|
||||||
|
|
||||||
if ( ubExitValue == 1 )
|
if ( ubExitValue == 1 )
|
||||||
@@ -11148,10 +11141,11 @@ void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue )
|
|||||||
UINT32 enemysidestrength = 0;
|
UINT32 enemysidestrength = 0;
|
||||||
|
|
||||||
// player team
|
// player team
|
||||||
UINT32 firstid = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
SoldierID id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||||
UINT32 lastid = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
|
SoldierID lastid = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
|
||||||
for ( uiCnt = firstid, pSoldier = MercPtrs[ uiCnt ]; uiCnt <= lastid; ++uiCnt, ++pSoldier)
|
for ( ; id <= lastid; ++id )
|
||||||
{
|
{
|
||||||
|
pSoldier = id;
|
||||||
if( pSoldier->bActive && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) )
|
if( pSoldier->bActive && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) )
|
||||||
{
|
{
|
||||||
// if we are disguised as a civilian, the enemy does not take us into the equation - he does not consider us
|
// if we are disguised as a civilian, the enemy does not take us into the equation - he does not consider us
|
||||||
@@ -11167,10 +11161,11 @@ void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// militia team
|
// militia team
|
||||||
firstid = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID;
|
id = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID;
|
||||||
lastid = gTacticalStatus.Team[ MILITIA_TEAM ].bLastID;
|
lastid = gTacticalStatus.Team[ MILITIA_TEAM ].bLastID;
|
||||||
for ( uiCnt = firstid, pSoldier = MercPtrs[ uiCnt ]; uiCnt <= lastid; ++uiCnt, ++pSoldier)
|
for ( ; id <= lastid; ++id )
|
||||||
{
|
{
|
||||||
|
pSoldier = id;
|
||||||
if( pSoldier->bActive && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) )
|
if( pSoldier->bActive && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) )
|
||||||
{
|
{
|
||||||
playersidestrength += pSoldier->GetSurrenderStrength();
|
playersidestrength += pSoldier->GetSurrenderStrength();
|
||||||
@@ -11190,10 +11185,12 @@ void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue )
|
|||||||
BOOLEAN fNoSurrender = FALSE;
|
BOOLEAN fNoSurrender = FALSE;
|
||||||
|
|
||||||
// shadooow: rewritten to only check soldiers from the same team
|
// shadooow: rewritten to only check soldiers from the same team
|
||||||
firstid = gTacticalStatus.Team[pSoldierToSurrender->bTeam].bFirstID;
|
SoldierID firstid = gTacticalStatus.Team[pSoldierToSurrender->bTeam].bFirstID;
|
||||||
lastid = gTacticalStatus.Team[pSoldierToSurrender->bTeam].bLastID;
|
lastid = gTacticalStatus.Team[pSoldierToSurrender->bTeam].bLastID;
|
||||||
for (uiCnt = firstid, pSoldier = MercPtrs[uiCnt]; uiCnt <= lastid; ++uiCnt, ++pSoldier)
|
|
||||||
|
for (SoldierID id = firstid; id <= lastid; ++id )
|
||||||
{
|
{
|
||||||
|
pSoldier = id;
|
||||||
if (pSoldier->bActive && (pSoldier->sSectorX == gWorldSectorX) && (pSoldier->sSectorY == gWorldSectorY) && (pSoldier->bSectorZ == gbWorldSectorZ))
|
if (pSoldier->bActive && (pSoldier->sSectorX == gWorldSectorX) && (pSoldier->sSectorY == gWorldSectorY) && (pSoldier->bSectorZ == gbWorldSectorZ))
|
||||||
{
|
{
|
||||||
if (pSoldierToSurrender->bTeam == CIV_TEAM)
|
if (pSoldierToSurrender->bTeam == CIV_TEAM)
|
||||||
@@ -11233,8 +11230,9 @@ void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue )
|
|||||||
if ( !fNoSurrender && playersidestrength >= gGameExternalOptions.fSurrenderMultiplier * enemysidestrength )
|
if ( !fNoSurrender && playersidestrength >= gGameExternalOptions.fSurrenderMultiplier * enemysidestrength )
|
||||||
{
|
{
|
||||||
// it is enough to simply set all soldiers to captured
|
// it is enough to simply set all soldiers to captured
|
||||||
for ( uiCnt = firstid, pSoldier = MercPtrs[ uiCnt ]; uiCnt <= lastid; ++uiCnt, ++pSoldier)
|
for ( SoldierID id = firstid; id <= lastid; ++id )
|
||||||
{
|
{
|
||||||
|
pSoldier = id;
|
||||||
if( pSoldier->bActive && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) )
|
if( pSoldier->bActive && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) )
|
||||||
{
|
{
|
||||||
// can this guy be captured?
|
// can this guy be captured?
|
||||||
@@ -11355,9 +11353,9 @@ void CheckChatPartners()
|
|||||||
|
|
||||||
SOLDIERTYPE* pSoldier = NULL;
|
SOLDIERTYPE* pSoldier = NULL;
|
||||||
|
|
||||||
for ( int 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 && pSoldier->bVisible && pSoldier->usChatPartnerID != NOBODY && pSoldier->usChatPartnerID->bVisible )
|
if ( pSoldier && pSoldier->bVisible && pSoldier->usChatPartnerID != NOBODY && pSoldier->usChatPartnerID->bVisible )
|
||||||
{
|
{
|
||||||
@@ -11448,11 +11446,11 @@ void TeamDropAll(UINT8 bTeam, BOOLEAN fForce)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
UINT32 uiCnt = 0;
|
SoldierID id = gTacticalStatus.Team[ bTeam ].bFirstID;
|
||||||
UINT32 firstid = gTacticalStatus.Team[ bTeam ].bFirstID;
|
SoldierID lastid = gTacticalStatus.Team[ bTeam ].bLastID;
|
||||||
UINT32 lastid = gTacticalStatus.Team[ bTeam ].bLastID;
|
for ( ; id <= lastid; ++id )
|
||||||
for ( uiCnt = firstid, pSoldier = MercPtrs[ uiCnt ]; uiCnt <= lastid; ++uiCnt, ++pSoldier)
|
|
||||||
{
|
{
|
||||||
|
pSoldier = id;
|
||||||
// if soldier is in the current sector, drop all equipment (that has the TAKEN_BY_MILITIA-flag set)
|
// if soldier is in the current sector, drop all equipment (that has the TAKEN_BY_MILITIA-flag set)
|
||||||
if( pSoldier->bActive && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) )
|
if( pSoldier->bActive && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) )
|
||||||
{
|
{
|
||||||
@@ -11479,11 +11477,11 @@ void TeamRestock(UINT8 bTeam)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
UINT32 uiCnt = 0;
|
SoldierID id = gTacticalStatus.Team[ bTeam ].bFirstID;
|
||||||
UINT32 firstid = gTacticalStatus.Team[ bTeam ].bFirstID;
|
SoldierID lastid = gTacticalStatus.Team[ bTeam ].bLastID;
|
||||||
UINT32 lastid = gTacticalStatus.Team[ bTeam ].bLastID;
|
for ( ; id <= lastid; ++id )
|
||||||
for ( uiCnt = firstid, pSoldier = MercPtrs[ uiCnt ]; uiCnt <= lastid; ++uiCnt, ++pSoldier)
|
|
||||||
{
|
{
|
||||||
|
pSoldier = id;
|
||||||
if( pSoldier->bActive && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) )
|
if( pSoldier->bActive && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) )
|
||||||
{
|
{
|
||||||
// the function fills a createstruct, so create one
|
// the function fills a createstruct, so create one
|
||||||
@@ -11539,9 +11537,9 @@ BOOLEAN IsProfileInUse(UINT8 usTeam, INT8 aType, UINT16 aNr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
SOLDIERTYPE* pSoldier = NULL;
|
SOLDIERTYPE* pSoldier = NULL;
|
||||||
for( INT32 i = gTacticalStatus.Team[ usTeam ].bFirstID; i <= gTacticalStatus.Team[ usTeam ].bLastID; ++i )
|
for( SoldierID i = gTacticalStatus.Team[ usTeam ].bFirstID; i <= gTacticalStatus.Team[ usTeam ].bLastID; ++i )
|
||||||
{
|
{
|
||||||
pSoldier = MercPtrs[ i ];
|
pSoldier = i;
|
||||||
|
|
||||||
if ( pSoldier && pSoldier->ubSoldierClass == searchedclass && pSoldier->usSoldierProfile == aNr )
|
if ( pSoldier && pSoldier->ubSoldierClass == searchedclass && pSoldier->usSoldierProfile == aNr )
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -11666,12 +11664,12 @@ INT8 CalcEffectiveShockLevel( SOLDIERTYPE * pSoldier )
|
|||||||
UINT16 HighestEnemyOfficersInSector( UINT8& aType )
|
UINT16 HighestEnemyOfficersInSector( UINT8& aType )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
INT32 cnt = 0;
|
|
||||||
UINT16 num = 0;
|
UINT16 num = 0;
|
||||||
UINT8 type = OFFICER_NONE;
|
UINT8 type = OFFICER_NONE;
|
||||||
|
|
||||||
for ( cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID, pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; pSoldier++, ++cnt )
|
for ( SoldierID cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 )
|
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 )
|
||||||
{
|
{
|
||||||
// count officers, but do not count those that we have already captured
|
// count officers, but do not count those that we have already captured
|
||||||
@@ -11692,11 +11690,11 @@ UINT16 HighestEnemyOfficersInSector( UINT8& aType )
|
|||||||
UINT16 NumSoldiersWithFlagInSector( UINT8 aTeam, UINT32 aFlag )
|
UINT16 NumSoldiersWithFlagInSector( UINT8 aTeam, UINT32 aFlag )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
INT32 cnt = 0;
|
|
||||||
UINT16 num = 0;
|
UINT16 num = 0;
|
||||||
|
|
||||||
for ( cnt = gTacticalStatus.Team[aTeam].bFirstID, pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[aTeam].bLastID; pSoldier++, ++cnt )
|
for ( SoldierID cnt = gTacticalStatus.Team[aTeam].bFirstID; cnt <= gTacticalStatus.Team[aTeam].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 )
|
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 )
|
||||||
{
|
{
|
||||||
if ( pSoldier->usSoldierFlagMask & aFlag )
|
if ( pSoldier->usSoldierFlagMask & aFlag )
|
||||||
@@ -11712,11 +11710,11 @@ UINT16 NumSoldiersWithFlagInSector( UINT8 aTeam, UINT32 aFlag )
|
|||||||
UINT16 NumSoldiersofClassWithFlag2InSector( UINT8 aTeam, UINT8 aSoldierClass, UINT32 aFlag )
|
UINT16 NumSoldiersofClassWithFlag2InSector( UINT8 aTeam, UINT8 aSoldierClass, UINT32 aFlag )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
INT32 cnt = 0;
|
|
||||||
UINT16 num = 0;
|
UINT16 num = 0;
|
||||||
|
|
||||||
for ( cnt = gTacticalStatus.Team[aTeam].bFirstID, pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[aTeam].bLastID; pSoldier++, ++cnt )
|
for ( SoldierID cnt = gTacticalStatus.Team[aTeam].bFirstID; cnt <= gTacticalStatus.Team[aTeam].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 )
|
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 )
|
||||||
{
|
{
|
||||||
if ( (pSoldier->usSoldierFlagMask2 & aFlag)
|
if ( (pSoldier->usSoldierFlagMask2 & aFlag)
|
||||||
@@ -12002,11 +12000,12 @@ BOOLEAN IsCivFactionMemberAliveInSector( UINT8 usCivilianGroup )
|
|||||||
SOLDIERTYPE *pSoldier = NULL;
|
SOLDIERTYPE *pSoldier = NULL;
|
||||||
|
|
||||||
// IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED!
|
// IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED!
|
||||||
UINT16 cnt = gTacticalStatus.Team[CIV_TEAM].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[CIV_TEAM].bFirstID;
|
||||||
|
|
||||||
// look for all mercs on the same team,
|
// look for all mercs on the same team,
|
||||||
for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++cnt, ++pSoldier )
|
for ( ; cnt <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if ( pSoldier->bActive && (pSoldier->sSectorX == gWorldSectorX) && (pSoldier->sSectorY == gWorldSectorY) && (pSoldier->bSectorZ == gbWorldSectorZ) )
|
if ( pSoldier->bActive && (pSoldier->sSectorX == gWorldSectorX) && (pSoldier->sSectorY == gWorldSectorY) && (pSoldier->bSectorZ == gbWorldSectorZ) )
|
||||||
{
|
{
|
||||||
if ( pSoldier->ubCivilianGroup == usCivilianGroup && pSoldier->stats.bLife > 0 )
|
if ( pSoldier->ubCivilianGroup == usCivilianGroup && pSoldier->stats.bLife > 0 )
|
||||||
@@ -12020,12 +12019,12 @@ BOOLEAN IsCivFactionMemberAliveInSector( UINT8 usCivilianGroup )
|
|||||||
BOOLEAN IsFreeSlotAvailable( int aTeam )
|
BOOLEAN IsFreeSlotAvailable( int aTeam )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
INT32 cnt = gTacticalStatus.Team[aTeam].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[aTeam].bFirstID;
|
||||||
|
|
||||||
// run through list
|
// run through list
|
||||||
for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[aTeam].bLastID; ++cnt, ++pSoldier )
|
for ( ; cnt <= gTacticalStatus.Team[aTeam].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
if ( !pSoldier->bActive )
|
if ( !cnt->bActive )
|
||||||
{
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -238,7 +238,7 @@ void SlideToLocation( INT32 sDestGridNo );
|
|||||||
|
|
||||||
void RebuildAllSoldierShadeTables( );
|
void RebuildAllSoldierShadeTables( );
|
||||||
void HandlePlayerTeamMemberDeath( SOLDIERTYPE *pSoldier );
|
void HandlePlayerTeamMemberDeath( SOLDIERTYPE *pSoldier );
|
||||||
UINT16 LastActiveTeamMember( UINT16 ubTeam );
|
SoldierID LastActiveTeamMember( UINT16 ubTeam );
|
||||||
BOOLEAN SoldierOnVisibleWorldTile( SOLDIERTYPE *pSoldier );
|
BOOLEAN SoldierOnVisibleWorldTile( SOLDIERTYPE *pSoldier );
|
||||||
|
|
||||||
SoldierID FindNextActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs );
|
SoldierID FindNextActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs );
|
||||||
|
|||||||
@@ -2150,12 +2150,13 @@ void HandleMouseRTX2Button( UINT32 *puiNewEvent )
|
|||||||
// For each guy on squad...
|
// For each guy on squad...
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
INT16 bLoop;
|
SoldierID bLoop;
|
||||||
BOOLEAN fStealthOn = FALSE;
|
BOOLEAN fStealthOn = FALSE;
|
||||||
|
|
||||||
// Check if at least one guy is on stealth....
|
// Check if at least one guy is on stealth....
|
||||||
for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++)
|
for ( bLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = bLoop;
|
||||||
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad() )
|
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad() )
|
||||||
{
|
{
|
||||||
if ( pTeamSoldier->bStealthMode )
|
if ( pTeamSoldier->bStealthMode )
|
||||||
@@ -2167,8 +2168,9 @@ void HandleMouseRTX2Button( UINT32 *puiNewEvent )
|
|||||||
|
|
||||||
fStealthOn = !fStealthOn;
|
fStealthOn = !fStealthOn;
|
||||||
|
|
||||||
for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++)
|
for ( bLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = bLoop;
|
||||||
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad() && !AM_A_ROBOT( pTeamSoldier ) )
|
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad() && !AM_A_ROBOT( pTeamSoldier ) )
|
||||||
{
|
{
|
||||||
if ( gpSMCurrentMerc != NULL && bLoop == gpSMCurrentMerc->ubID )
|
if ( gpSMCurrentMerc != NULL && bLoop == gpSMCurrentMerc->ubID )
|
||||||
|
|||||||
@@ -1272,11 +1272,11 @@ void HandleRottingCorpses( )
|
|||||||
// ATE: Check for multiple crows.....
|
// ATE: Check for multiple crows.....
|
||||||
// Couint how many we have now...
|
// Couint how many we have now...
|
||||||
{
|
{
|
||||||
UINT16 bLoop;
|
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
|
|
||||||
for ( bLoop=gTacticalStatus.Team[ CIV_TEAM ].bFirstID, pSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; bLoop++, pSoldier++)
|
for ( SoldierID bLoop=gTacticalStatus.Team[ CIV_TEAM ].bFirstID; bLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++bLoop )
|
||||||
{
|
{
|
||||||
|
pSoldier = bLoop;
|
||||||
if (pSoldier->bActive && pSoldier->bInSector && (pSoldier->stats.bLife >= OKLIFE) && !( pSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) )
|
if (pSoldier->bActive && pSoldier->bInSector && (pSoldier->stats.bLife >= OKLIFE) && !( pSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) )
|
||||||
{
|
{
|
||||||
if ( pSoldier->ubBodyType == CROW )
|
if ( pSoldier->ubBodyType == CROW )
|
||||||
@@ -1344,7 +1344,6 @@ void MakeCorpseVisible( SOLDIERTYPE *pSoldier, ROTTING_CORPSE *pCorpse )
|
|||||||
|
|
||||||
void AllMercsOnTeamLookForCorpse( ROTTING_CORPSE *pCorpse, INT8 bTeam )
|
void AllMercsOnTeamLookForCorpse( ROTTING_CORPSE *pCorpse, INT8 bTeam )
|
||||||
{
|
{
|
||||||
INT32 cnt;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
INT32 sGridNo;
|
INT32 sGridNo;
|
||||||
|
|
||||||
@@ -1360,13 +1359,14 @@ void AllMercsOnTeamLookForCorpse( ROTTING_CORPSE *pCorpse, INT8 bTeam )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED!
|
// IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED!
|
||||||
cnt = gTacticalStatus.Team[ bTeam ].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[ bTeam ].bFirstID;
|
||||||
|
|
||||||
sGridNo = pCorpse->def.sGridNo;
|
sGridNo = pCorpse->def.sGridNo;
|
||||||
|
|
||||||
// look for all mercs on the same team,
|
// look for all mercs on the same team,
|
||||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ bTeam ].bLastID; cnt++,pSoldier++ )
|
for ( ; cnt <= gTacticalStatus.Team[ bTeam ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
// ATE: Ok, lets check for some basic things here!
|
// ATE: Ok, lets check for some basic things here!
|
||||||
if ( pSoldier->stats.bLife >= OKLIFE && !TileIsOutOfBounds(pSoldier->sGridNo) && pSoldier->bActive && pSoldier->bInSector )
|
if ( pSoldier->stats.bLife >= OKLIFE && !TileIsOutOfBounds(pSoldier->sGridNo) && pSoldier->bActive && pSoldier->bInSector )
|
||||||
{
|
{
|
||||||
@@ -2526,7 +2526,6 @@ void LookForAndMayCommentOnSeeingCorpse( SOLDIERTYPE *pSoldier, INT32 sGridNo, U
|
|||||||
{
|
{
|
||||||
ROTTING_CORPSE *pCorpse;
|
ROTTING_CORPSE *pCorpse;
|
||||||
INT8 bToleranceThreshold = 0;
|
INT8 bToleranceThreshold = 0;
|
||||||
INT32 cnt;
|
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
|
|
||||||
if ( QuoteExp[ pSoldier->ubProfile ].QuoteExpHeadShotOnly == 1 )
|
if ( QuoteExp[ pSoldier->ubProfile ].QuoteExpHeadShotOnly == 1 )
|
||||||
@@ -2567,11 +2566,12 @@ void LookForAndMayCommentOnSeeingCorpse( SOLDIERTYPE *pSoldier, INT32 sGridNo, U
|
|||||||
if ( Random( 2 ) == 1 )
|
if ( Random( 2 ) == 1 )
|
||||||
{
|
{
|
||||||
// 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;
|
||||||
|
|
||||||
// look for all mercs on the same team,
|
// look for all mercs on the same team,
|
||||||
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++ )
|
for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
// ATE: Ok, lets check for some basic things here!
|
// ATE: Ok, lets check for some basic things here!
|
||||||
if ( pTeamSoldier->stats.bLife >= OKLIFE && !TileIsOutOfBounds(pTeamSoldier->sGridNo) && pTeamSoldier->bActive && pTeamSoldier->bInSector )
|
if ( pTeamSoldier->stats.bLife >= OKLIFE && !TileIsOutOfBounds(pTeamSoldier->sGridNo) && pTeamSoldier->bActive && pTeamSoldier->bInSector )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -759,7 +759,6 @@ UINT32 ShopKeeperScreenShutdown()
|
|||||||
BOOLEAN EnterShopKeeperInterface()
|
BOOLEAN EnterShopKeeperInterface()
|
||||||
{
|
{
|
||||||
VOBJECT_DESC VObjectDesc;
|
VOBJECT_DESC VObjectDesc;
|
||||||
UINT16 ubCnt;
|
|
||||||
CHAR8 zTemp[32];
|
CHAR8 zTemp[32];
|
||||||
VSURFACE_DESC vs_desc;
|
VSURFACE_DESC vs_desc;
|
||||||
|
|
||||||
@@ -886,9 +885,9 @@ BOOLEAN EnterShopKeeperInterface()
|
|||||||
//Create an array of all mercs (anywhere!) currently in the player's employ, and load their small faces
|
//Create an array of all mercs (anywhere!) currently in the player's employ, and load their small faces
|
||||||
// This is to support showing of repair item owner's faces even when they're not in the sector, as long as they still work for player
|
// This is to support showing of repair item owner's faces even when they're not in the sector, as long as they still work for player
|
||||||
gubNumberMercsInArray = 0;
|
gubNumberMercsInArray = 0;
|
||||||
for( ubCnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; ubCnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++ubCnt )
|
for( SoldierID ubCnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; ubCnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++ubCnt )
|
||||||
{
|
{
|
||||||
pSoldier = MercPtrs[ ubCnt ];
|
pSoldier = ubCnt;
|
||||||
|
|
||||||
if( pSoldier->bActive && ( pSoldier->ubProfile != NO_PROFILE ) &&
|
if( pSoldier->bActive && ( pSoldier->ubProfile != NO_PROFILE ) &&
|
||||||
!(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && !AM_A_ROBOT( pSoldier ) )
|
!(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && !AM_A_ROBOT( pSoldier ) )
|
||||||
|
|||||||
@@ -339,7 +339,6 @@ INT32 SkillCheck( SOLDIERTYPE * pSoldier, INT8 bReason, INT8 bChanceMod )
|
|||||||
INT32 iSkill;
|
INT32 iSkill;
|
||||||
INT32 iChance, iReportChance;
|
INT32 iChance, iReportChance;
|
||||||
INT32 iRoll, iMadeItBy;
|
INT32 iRoll, iMadeItBy;
|
||||||
INT32 iLoop;
|
|
||||||
SOLDIERTYPE * pTeamSoldier;
|
SOLDIERTYPE * pTeamSoldier;
|
||||||
INT8 bBuddyIndex;
|
INT8 bBuddyIndex;
|
||||||
BOOLEAN fForceDamnSound = FALSE;
|
BOOLEAN fForceDamnSound = FALSE;
|
||||||
@@ -946,9 +945,10 @@ INT32 SkillCheck( SOLDIERTYPE * pSoldier, INT8 bReason, INT8 bChanceMod )
|
|||||||
if (iRoll < iChance)
|
if (iRoll < iChance)
|
||||||
{
|
{
|
||||||
// If a buddy of this merc is standing around nearby, they'll make a positive comment.
|
// If a buddy of this merc is standing around nearby, they'll make a positive comment.
|
||||||
iLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
SoldierID iLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||||
for ( pTeamSoldier = MercPtrs[ iLoop ]; iLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; iLoop++,pTeamSoldier++ )
|
for ( ; iLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++iLoop )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = iLoop;
|
||||||
if ( OK_INSECTOR_MERC( pTeamSoldier ) )
|
if ( OK_INSECTOR_MERC( pTeamSoldier ) )
|
||||||
{
|
{
|
||||||
if ( SpacesAway( pSoldier->sGridNo, pTeamSoldier->sGridNo ) < 15 )
|
if ( SpacesAway( pSoldier->sGridNo, pTeamSoldier->sGridNo ) < 15 )
|
||||||
|
|||||||
@@ -784,17 +784,17 @@ SoldierSelection::Setup( UINT32 aVal )
|
|||||||
|
|
||||||
// pretty simple: we find every soldier in a radius around the target position and add him to the list
|
// pretty simple: we find every soldier in a radius around the target position and add him to the list
|
||||||
// loop through all soldiers around
|
// loop through all soldiers around
|
||||||
for ( UINT32 cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID ; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID ; ++cnt )
|
for ( SoldierID id = gTacticalStatus.Team[ OUR_TEAM ].bFirstID ; id <= gTacticalStatus.Team[ CIV_TEAM ].bLastID ; ++id )
|
||||||
{
|
{
|
||||||
INT32 iRange = GetRangeInCellCoordsFromGridNoDiff( sTraitsMenuTargetGridNo, MercPtrs[ cnt ]->sGridNo );
|
INT32 iRange = GetRangeInCellCoordsFromGridNoDiff( sTraitsMenuTargetGridNo, id->sGridNo );
|
||||||
|
|
||||||
if ( iRange < 100 )
|
if ( iRange < 100 )
|
||||||
{
|
{
|
||||||
if ( cnt != pSoldier->ubID )
|
if ( id != pSoldier->ubID )
|
||||||
{
|
{
|
||||||
swprintf( pStr, L"%s", MercPtrs[ cnt ]->GetName() );
|
swprintf( pStr, L"%s", id->GetName() );
|
||||||
|
|
||||||
pOption = new POPUP_OPTION(&std::wstring( pStr ), new popupCallbackFunction<void, UINT8>( &Wrapper_Function_SoldierSelection, cnt ) );
|
pOption = new POPUP_OPTION(&std::wstring( pStr ), new popupCallbackFunction<void, UINT16>( &Wrapper_Function_SoldierSelection, id ) );
|
||||||
|
|
||||||
// grey out if no artillery can be called from this sector
|
// grey out if no artillery can be called from this sector
|
||||||
if ( 0 )
|
if ( 0 )
|
||||||
@@ -865,11 +865,11 @@ DragSelection::Setup( UINT32 aVal )
|
|||||||
|
|
||||||
// pretty simple: we find every soldier in a radius around the target position and add him to the list
|
// pretty simple: we find every soldier in a radius around the target position and add him to the list
|
||||||
// loop through all soldiers around
|
// loop through all soldiers around
|
||||||
for ( UINT32 cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++cnt )
|
for ( SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
if ( cnt != pSoldier->ubID && pSoldier->CanDragPerson(cnt) )
|
if ( cnt != pSoldier->ubID && pSoldier->CanDragPerson(cnt) )
|
||||||
{
|
{
|
||||||
swprintf( pStr, L"%s", MercPtrs[cnt]->GetName( ) );
|
swprintf( pStr, L"%s", cnt->GetName( ) );
|
||||||
|
|
||||||
pOption = new POPUP_OPTION( &std::wstring( pStr ), new popupCallbackFunction<void, UINT32>( &Wrapper_Function_DragSelection, cnt ) );
|
pOption = new POPUP_OPTION( &std::wstring( pStr ), new popupCallbackFunction<void, UINT32>( &Wrapper_Function_DragSelection, cnt ) );
|
||||||
|
|
||||||
|
|||||||
@@ -1761,16 +1761,14 @@ void AddSoldierToSectorGridNo( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDir
|
|||||||
// IsMercOnTeam() checks to see if the passed in Merc Profile ID is currently on the player's team
|
// IsMercOnTeam() checks to see if the passed in Merc Profile ID is currently on the player's team
|
||||||
BOOLEAN IsMercOnTeam(UINT8 ubMercID, BOOLEAN aAlreadyInCountry, BOOLEAN aAlive)
|
BOOLEAN IsMercOnTeam(UINT8 ubMercID, BOOLEAN aAlreadyInCountry, BOOLEAN aAlive)
|
||||||
{
|
{
|
||||||
UINT16 cnt;
|
|
||||||
UINT16 ubLastTeamID;
|
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
|
SoldierID cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID;
|
||||||
cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID;
|
SoldierID ubLastTeamID = gTacticalStatus.Team[ OUR_TEAM ].bLastID;
|
||||||
ubLastTeamID = gTacticalStatus.Team[ OUR_TEAM ].bLastID;
|
|
||||||
|
|
||||||
// look for all mercs on the same team,
|
// look for all mercs on the same team,
|
||||||
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= ubLastTeamID; ++cnt, pTeamSoldier++)
|
for ( ; cnt <= ubLastTeamID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
if ( pTeamSoldier->ubProfile == ubMercID && pTeamSoldier->bActive )
|
if ( pTeamSoldier->ubProfile == ubMercID && pTeamSoldier->bActive )
|
||||||
{
|
{
|
||||||
if ( aAlreadyInCountry && pTeamSoldier->bAssignment == IN_TRANSIT )
|
if ( aAlreadyInCountry && pTeamSoldier->bAssignment == IN_TRANSIT )
|
||||||
@@ -1791,12 +1789,12 @@ BOOLEAN IsMercOnTeam(UINT8 ubMercID, BOOLEAN aAlreadyInCountry, BOOLEAN aAlive)
|
|||||||
SoldierID GetSoldierIDFromMercID(UINT8 ubMercID)
|
SoldierID GetSoldierIDFromMercID(UINT8 ubMercID)
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pTeamSoldier = NULL;
|
SOLDIERTYPE *pTeamSoldier = NULL;
|
||||||
|
SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID;
|
||||||
UINT16 cnt = gTacticalStatus.Team[OUR_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[OUR_TEAM].bLastID; ++cnt, ++pTeamSoldier )
|
for ( ; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
if ( pTeamSoldier->ubProfile == ubMercID )
|
if ( pTeamSoldier->ubProfile == ubMercID )
|
||||||
{
|
{
|
||||||
if( pTeamSoldier->bActive )
|
if( pTeamSoldier->bActive )
|
||||||
|
|||||||
@@ -3559,7 +3559,6 @@ void SayBuddyWitnessedQuoteFromKill( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo,
|
|||||||
UINT16 ubNumMercs = 0;
|
UINT16 ubNumMercs = 0;
|
||||||
UINT16 ubChosenMerc;
|
UINT16 ubChosenMerc;
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
INT32 cnt;
|
|
||||||
UINT16 usQuoteNum;
|
UINT16 usQuoteNum;
|
||||||
BOOLEAN buddyquoteused = FALSE;
|
BOOLEAN buddyquoteused = FALSE;
|
||||||
|
|
||||||
@@ -3570,11 +3569,12 @@ void SayBuddyWitnessedQuoteFromKill( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// 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 ) && !AM_AN_EPC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !(AM_A_ROBOT( pTeamSoldier ))
|
if ( OK_INSECTOR_MERC( pTeamSoldier ) && !AM_AN_EPC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !(AM_A_ROBOT( pTeamSoldier ))
|
||||||
&& !pTeamSoldier->flags.fMercAsleep && !TileIsOutOfBounds(pTeamSoldier->sGridNo) && pTeamSoldier->ubProfile != pKillerSoldier->ubProfile )
|
&& !pTeamSoldier->flags.fMercAsleep && !TileIsOutOfBounds(pTeamSoldier->sGridNo) && pTeamSoldier->ubProfile != pKillerSoldier->ubProfile )
|
||||||
@@ -3709,8 +3709,9 @@ void SayBuddyWitnessedQuoteFromKill( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo,
|
|||||||
{
|
{
|
||||||
cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||||
|
|
||||||
for ( pTeamSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt, ++pTeamSoldier )
|
for ( ; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
// we do not exclude the buddies from above. If we get to this point, it might have been a buddy that already said his line. In that case additional dialogue might play other ones
|
// we do not exclude the buddies from above. If we get to this point, it might have been a buddy that already said his line. In that case additional dialogue might play other ones
|
||||||
|
|
||||||
// Add guy if he's a candidate...
|
// Add guy if he's a candidate...
|
||||||
@@ -3742,7 +3743,6 @@ void SayBuddyWitnessedQuoteFromKill( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo,
|
|||||||
void HandleKilledQuote( SOLDIERTYPE *pKilledSoldier, SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT8 bLevel )
|
void HandleKilledQuote( SOLDIERTYPE *pKilledSoldier, SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT8 bLevel )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
INT32 cnt;
|
|
||||||
// WDS - make number of mercenaries, etc. be configurable
|
// WDS - make number of mercenaries, etc. be configurable
|
||||||
std::vector<UINT16> ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0);
|
std::vector<UINT16> ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0);
|
||||||
UINT16 ubNumMercs = 0;
|
UINT16 ubNumMercs = 0;
|
||||||
@@ -3802,11 +3802,12 @@ void HandleKilledQuote( SOLDIERTYPE *pKilledSoldier, SOLDIERTYPE *pKillerSoldier
|
|||||||
if ( fDoSomeoneElse )
|
if ( fDoSomeoneElse )
|
||||||
{
|
{
|
||||||
// Check if a person is here that has this quote....
|
// Check if a person is here that has this quote....
|
||||||
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 ( cnt != pKillerSoldier->ubID )
|
if ( cnt != pKillerSoldier->ubID )
|
||||||
{
|
{
|
||||||
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 ) )
|
||||||
|
|||||||
@@ -2836,7 +2836,6 @@ BOOLEAN SOLDIERTYPE::ChangeSoldierState( UINT16 usNewState, UINT16 usStartingAni
|
|||||||
// This function reevaluates the stance if the guy sees us!
|
// This function reevaluates the stance if the guy sees us!
|
||||||
BOOLEAN ReevaluateEnemyStance( SOLDIERTYPE *pSoldier, UINT16 usAnimState )
|
BOOLEAN ReevaluateEnemyStance( SOLDIERTYPE *pSoldier, UINT16 usAnimState )
|
||||||
{
|
{
|
||||||
INT32 cnt;
|
|
||||||
SoldierID iClosestEnemy = NOBODY;
|
SoldierID iClosestEnemy = NOBODY;
|
||||||
INT16 sTargetXPos, sTargetYPos;
|
INT16 sTargetXPos, sTargetYPos;
|
||||||
BOOLEAN fReturnVal = FALSE;
|
BOOLEAN fReturnVal = FALSE;
|
||||||
@@ -2871,7 +2870,7 @@ BOOLEAN ReevaluateEnemyStance( SOLDIERTYPE *pSoldier, UINT16 usAnimState )
|
|||||||
if ( pSoldier->aiData.bOppCnt > 0 )
|
if ( pSoldier->aiData.bOppCnt > 0 )
|
||||||
{
|
{
|
||||||
// Pick a guy this buddy sees and turn towards them!
|
// Pick a guy this buddy sees and turn towards them!
|
||||||
for ( 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 )
|
||||||
{
|
{
|
||||||
if ( pSoldier->aiData.bOppList[cnt] == SEEN_CURRENTLY )
|
if ( pSoldier->aiData.bOppList[cnt] == SEEN_CURRENTLY )
|
||||||
{
|
{
|
||||||
@@ -12260,16 +12259,13 @@ BOOLEAN SOLDIERTYPE::MercInHighWater( void )
|
|||||||
|
|
||||||
void RevivePlayerTeam( )
|
void RevivePlayerTeam( )
|
||||||
{
|
{
|
||||||
INT32 cnt;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
|
||||||
|
|
||||||
// End the turn of player charactors
|
// End the turn of player charactors
|
||||||
cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
SoldierID id = 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 ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id )
|
||||||
{
|
{
|
||||||
pSoldier->ReviveSoldier( );
|
id->ReviveSoldier( );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -15221,10 +15217,11 @@ BOOLEAN SOLDIERTYPE::IsFeedingExternal( SoldierID * pubId1, UINT16* pGunSlot1,
|
|||||||
INT32 nextGridNoinSight = NewGridNo( this->sGridNo, DirectionInc( this->ubDirection ) );
|
INT32 nextGridNoinSight = NewGridNo( this->sGridNo, DirectionInc( this->ubDirection ) );
|
||||||
|
|
||||||
SOLDIERTYPE* pTeamSoldier = NULL;
|
SOLDIERTYPE* pTeamSoldier = NULL;
|
||||||
INT32 cnt = gTacticalStatus.Team[this->bTeam].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[this->bTeam].bFirstID;
|
||||||
INT32 lastid = gTacticalStatus.Team[this->bTeam].bLastID;
|
SoldierID lastid = gTacticalStatus.Team[this->bTeam].bLastID;
|
||||||
for ( pTeamSoldier = MercPtrs[cnt]; cnt < lastid; ++cnt, ++pTeamSoldier )
|
for ( ; cnt < lastid; ++cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
// check if teamsoldier exists in this sector
|
// check if teamsoldier exists in this sector
|
||||||
if ( !pTeamSoldier || !pTeamSoldier->bActive || !pTeamSoldier->bInSector || pTeamSoldier->sSectorX != this->sSectorX || pTeamSoldier->sSectorY != this->sSectorY || pTeamSoldier->bSectorZ != this->bSectorZ )
|
if ( !pTeamSoldier || !pTeamSoldier->bActive || !pTeamSoldier->bInSector || pTeamSoldier->sSectorX != this->sSectorX || pTeamSoldier->sSectorY != this->sSectorY || pTeamSoldier->bSectorZ != this->bSectorZ )
|
||||||
continue;
|
continue;
|
||||||
@@ -16234,9 +16231,10 @@ void SOLDIERTYPE::LooseDisguise( void )
|
|||||||
|
|
||||||
// rehandle sight for everybody
|
// rehandle sight for everybody
|
||||||
SOLDIERTYPE* pSoldier;
|
SOLDIERTYPE* pSoldier;
|
||||||
UINT16 iLoop = gTacticalStatus.Team[OUR_TEAM].bFirstID;
|
SoldierID iLoop = gTacticalStatus.Team[OUR_TEAM].bFirstID;
|
||||||
for ( pSoldier = MercPtrs[iLoop]; iLoop <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++iLoop, ++pSoldier )
|
for ( ; iLoop <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++iLoop )
|
||||||
{
|
{
|
||||||
|
pSoldier = iLoop;
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 )
|
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 )
|
||||||
{
|
{
|
||||||
RecalculateOppCntsDueToNoLongerNeutral( pSoldier );
|
RecalculateOppCntsDueToNoLongerNeutral( pSoldier );
|
||||||
@@ -18880,10 +18878,11 @@ BOOLEAN SOLDIERTYPE::OrderArtilleryStrike( UINT32 usSectorNr, INT32 sTargetGridN
|
|||||||
UINT16 mortararray[maxFiringMortarsAmount] = { 0 };
|
UINT16 mortararray[maxFiringMortarsAmount] = { 0 };
|
||||||
|
|
||||||
SOLDIERTYPE* pSoldier = NULL;
|
SOLDIERTYPE* pSoldier = NULL;
|
||||||
INT32 cnt = gTacticalStatus.Team[bTeam].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[bTeam].bFirstID;
|
||||||
INT32 lastid = gTacticalStatus.Team[bTeam].bLastID;
|
SoldierID lastid = gTacticalStatus.Team[bTeam].bLastID;
|
||||||
for ( pSoldier = MercPtrs[cnt]; (cnt < lastid) && (mortaritemcnt < maxFiringMortarsAmount); ++cnt, ++pSoldier )
|
for ( ; (cnt < lastid) && (mortaritemcnt < maxFiringMortarsAmount); ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
// check if soldier exists in this sector
|
// check if soldier exists in this sector
|
||||||
if ( !pSoldier || !pSoldier->bActive || pSoldier->sSectorX != sSectorX || pSoldier->sSectorY != sSectorY || pSoldier->bSectorZ != bSectorZ || pSoldier->bAssignment > ON_DUTY )
|
if ( !pSoldier || !pSoldier->bActive || pSoldier->sSectorX != sSectorX || pSoldier->sSectorY != sSectorY || pSoldier->bSectorZ != bSectorZ || pSoldier->bAssignment > ON_DUTY )
|
||||||
continue;
|
continue;
|
||||||
@@ -18924,8 +18923,9 @@ BOOLEAN SOLDIERTYPE::OrderArtilleryStrike( UINT32 usSectorNr, INT32 sTargetGridN
|
|||||||
|
|
||||||
// second loop: check for all mortar shells and 'fire' them
|
// second loop: check for all mortar shells and 'fire' them
|
||||||
cnt = gTacticalStatus.Team[bTeam].bFirstID;
|
cnt = gTacticalStatus.Team[bTeam].bFirstID;
|
||||||
for ( pSoldier = MercPtrs[cnt]; cnt < lastid; ++cnt, ++pSoldier )
|
for ( ; cnt < lastid; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
// check if soldier exists in this sector
|
// check if soldier exists in this sector
|
||||||
if ( !pSoldier || !pSoldier->bActive || pSoldier->sSectorX != sSectorX || pSoldier->sSectorY != sSectorY || pSoldier->bSectorZ != bSectorZ || pSoldier->bAssignment > ON_DUTY )
|
if ( !pSoldier || !pSoldier->bActive || pSoldier->sSectorX != sSectorX || pSoldier->sSectorY != sSectorY || pSoldier->bSectorZ != bSectorZ || pSoldier->bAssignment > ON_DUTY )
|
||||||
continue;
|
continue;
|
||||||
@@ -21602,15 +21602,16 @@ BOOLEAN SOLDIERTYPE::OrderTurnCoatToSwitchSides( SoldierID usID )
|
|||||||
void SOLDIERTYPE::OrderAllTurnCoatToSwitchSides()
|
void SOLDIERTYPE::OrderAllTurnCoatToSwitchSides()
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
INT32 cnt = gTacticalStatus.Team[ENEMY_TEAM].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[ENEMY_TEAM].bFirstID;
|
||||||
|
|
||||||
// rftr: force the player to enter turn-based combat. this function already includes a check to see if we're already in combat, so no harm calling this.
|
// rftr: force the player to enter turn-based combat. this function already includes a check to see if we're already in combat, so no harm calling this.
|
||||||
// this also prevents a hang when activating a sector with 100% turncoats
|
// this also prevents a hang when activating a sector with 100% turncoats
|
||||||
EnterCombatMode(OUR_TEAM);
|
EnterCombatMode(OUR_TEAM);
|
||||||
|
|
||||||
// run through list
|
// run through list
|
||||||
for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[ENEMY_TEAM].bLastID; ++cnt, ++pSoldier )
|
for ( ; cnt <= gTacticalStatus.Team[ENEMY_TEAM].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector )
|
if ( pSoldier->bActive && pSoldier->bInSector )
|
||||||
{
|
{
|
||||||
if ( pSoldier->usSoldierFlagMask2 & SOLDIER_TURNCOAT )
|
if ( pSoldier->usSoldierFlagMask2 & SOLDIER_TURNCOAT )
|
||||||
@@ -23687,16 +23688,15 @@ void SOLDIERTYPE::UpdateRobotControllerGivenRobot( void )
|
|||||||
//the original function passed in pRobot, not pSoldier
|
//the original function passed in pRobot, not pSoldier
|
||||||
SOLDIERTYPE *pRobot = this;
|
SOLDIERTYPE *pRobot = this;
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
INT32 cnt = 0;
|
|
||||||
|
|
||||||
// Loop through guys and look for a controller!
|
|
||||||
|
|
||||||
// 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
|
// Loop through guys and look for a controller!
|
||||||
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 )
|
||||||
{
|
{
|
||||||
if ( pTeamSoldier->ControllingRobot( ) )
|
if ( pTeamSoldier->ControllingRobot( ) )
|
||||||
@@ -23714,7 +23714,6 @@ void SOLDIERTYPE::UpdateRobotControllerGivenRobot( void )
|
|||||||
void SOLDIERTYPE::UpdateRobotControllerGivenController( void )
|
void SOLDIERTYPE::UpdateRobotControllerGivenController( void )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
INT32 cnt = 0;
|
|
||||||
|
|
||||||
// First see if are still controlling the robot
|
// First see if are still controlling the robot
|
||||||
if ( !this->ControllingRobot( ) )
|
if ( !this->ControllingRobot( ) )
|
||||||
@@ -23723,11 +23722,12 @@ void SOLDIERTYPE::UpdateRobotControllerGivenController( void )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 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;
|
||||||
|
|
||||||
// Loop through guys to find the robot....
|
// Loop through guys to find the robot....
|
||||||
for ( pTeamSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; cnt++, pTeamSoldier++ )
|
for ( ; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
if ( pTeamSoldier->bActive && (pTeamSoldier->flags.uiStatusFlags & SOLDIER_ROBOT) )
|
if ( pTeamSoldier->bActive && (pTeamSoldier->flags.uiStatusFlags & SOLDIER_ROBOT) )
|
||||||
{
|
{
|
||||||
pTeamSoldier->ubRobotRemoteHolderID = this->ubID;
|
pTeamSoldier->ubRobotRemoteHolderID = this->ubID;
|
||||||
@@ -23923,11 +23923,11 @@ void PlayStealthySoldierFootstepSound( SOLDIERTYPE *pSoldier )
|
|||||||
|
|
||||||
void CrowsFlyAway( UINT8 ubTeam )
|
void CrowsFlyAway( UINT8 ubTeam )
|
||||||
{
|
{
|
||||||
UINT32 cnt;
|
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
|
|
||||||
for ( cnt = gTacticalStatus.Team[ubTeam].bFirstID, pTeamSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[ubTeam].bLastID; cnt++, pTeamSoldier++ )
|
for ( SoldierID cnt = gTacticalStatus.Team[ubTeam].bFirstID; cnt <= gTacticalStatus.Team[ubTeam].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
if ( pTeamSoldier->bActive && pTeamSoldier->bInSector )
|
if ( pTeamSoldier->bActive && pTeamSoldier->bInSector )
|
||||||
{
|
{
|
||||||
if ( pTeamSoldier->ubBodyType == CROW && pTeamSoldier->usAnimState != CROW_FLY )
|
if ( pTeamSoldier->ubBodyType == CROW && pTeamSoldier->usAnimState != CROW_FLY )
|
||||||
@@ -23943,7 +23943,6 @@ void CrowsFlyAway( UINT8 ubTeam )
|
|||||||
#ifdef JA2BETAVERSION
|
#ifdef JA2BETAVERSION
|
||||||
void DebugValidateSoldierData( )
|
void DebugValidateSoldierData( )
|
||||||
{
|
{
|
||||||
UINT32 cnt;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
CHAR16 sString[1024];
|
CHAR16 sString[1024];
|
||||||
BOOLEAN fProblemDetected = FALSE;
|
BOOLEAN fProblemDetected = FALSE;
|
||||||
@@ -23960,9 +23959,10 @@ void DebugValidateSoldierData( )
|
|||||||
uiFrameCount = 0;
|
uiFrameCount = 0;
|
||||||
|
|
||||||
// Loop through our team...
|
// Loop through our team...
|
||||||
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 )
|
if ( pSoldier->bActive )
|
||||||
{
|
{
|
||||||
// OK, first check for alive people
|
// OK, first check for alive people
|
||||||
@@ -24048,7 +24048,6 @@ void SOLDIERTYPE::BeginTyingToFall( void )
|
|||||||
void SOLDIERTYPE::SetSoldierAsUnderAiControl( void )
|
void SOLDIERTYPE::SetSoldierAsUnderAiControl( void )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pSoldier = NULL;
|
SOLDIERTYPE *pSoldier = NULL;
|
||||||
INT32 cnt;
|
|
||||||
|
|
||||||
//this is silly, but left over from when pSoldierToSet was passed in as a parameter
|
//this is silly, but left over from when pSoldierToSet was passed in as a parameter
|
||||||
if ( this == NULL )
|
if ( this == NULL )
|
||||||
@@ -24057,9 +24056,10 @@ void SOLDIERTYPE::SetSoldierAsUnderAiControl( void )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Loop through ALL teams...
|
// Loop through ALL teams...
|
||||||
cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID;
|
||||||
for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[LAST_TEAM].bLastID; cnt++, pSoldier++ )
|
for ( ; cnt <= gTacticalStatus.Team[LAST_TEAM].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if ( pSoldier->bActive )
|
if ( pSoldier->bActive )
|
||||||
{
|
{
|
||||||
pSoldier->flags.uiStatusFlags &= ~SOLDIER_UNDERAICONTROL;
|
pSoldier->flags.uiStatusFlags &= ~SOLDIER_UNDERAICONTROL;
|
||||||
@@ -24096,12 +24096,12 @@ void HandlePlayerTogglingLightEffects( BOOLEAN fToggleValue )
|
|||||||
void EnableDisableSoldierLightEffects( BOOLEAN fEnableLights )
|
void EnableDisableSoldierLightEffects( BOOLEAN fEnableLights )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pSoldier = NULL;
|
SOLDIERTYPE *pSoldier = NULL;
|
||||||
INT32 cnt;
|
|
||||||
|
|
||||||
// Loop through player teams...
|
// Loop through player teams...
|
||||||
cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID;
|
||||||
for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; cnt++, pSoldier++ )
|
for ( ; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
//if the soldier is in the sector
|
//if the soldier is in the sector
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE )
|
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE )
|
||||||
{
|
{
|
||||||
@@ -24248,11 +24248,11 @@ BOOLEAN SOLDIERTYPE::CanStartDrag(void)
|
|||||||
if (!TileIsOutOfBounds(sNewGridNo) && sNewGridNo != this->sGridNo)
|
if (!TileIsOutOfBounds(sNewGridNo) && sNewGridNo != this->sGridNo)
|
||||||
{
|
{
|
||||||
// soldiers
|
// soldiers
|
||||||
for (UINT32 cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++cnt)
|
for ( SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++cnt)
|
||||||
{
|
{
|
||||||
if (cnt != this->ubID &&
|
if (cnt != this->ubID &&
|
||||||
cnt != NOBODY &&
|
cnt != NOBODY &&
|
||||||
MercPtrs[cnt]->sGridNo == sNewGridNo &&
|
cnt->sGridNo == sNewGridNo &&
|
||||||
this->CanDragPerson(cnt))
|
this->CanDragPerson(cnt))
|
||||||
{
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -24312,11 +24312,11 @@ void SOLDIERTYPE::StartDrag(void)
|
|||||||
if (!TileIsOutOfBounds(sNewGridNo) && sNewGridNo != this->sGridNo)
|
if (!TileIsOutOfBounds(sNewGridNo) && sNewGridNo != this->sGridNo)
|
||||||
{
|
{
|
||||||
// soldiers
|
// soldiers
|
||||||
for (UINT32 cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++cnt)
|
for ( SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++cnt)
|
||||||
{
|
{
|
||||||
if (cnt != this->ubID &&
|
if (cnt != this->ubID &&
|
||||||
MercPtrs[cnt] &&
|
cnt != NOBODY &&
|
||||||
MercPtrs[cnt]->sGridNo == sNewGridNo &&
|
cnt->sGridNo == sNewGridNo &&
|
||||||
this->CanDragPerson(cnt))
|
this->CanDragPerson(cnt))
|
||||||
{
|
{
|
||||||
SetDragOrderPerson(cnt);
|
SetDragOrderPerson(cnt);
|
||||||
@@ -24488,13 +24488,12 @@ INT8 NUM_SKILL_TRAITS( SOLDIERTYPE * pSoldier, UINT8 uiSkillTraitNumber )
|
|||||||
|
|
||||||
UINT8 GetSquadleadersCountInVicinity( SOLDIERTYPE * pSoldier, BOOLEAN fWithHigherLevel, BOOLEAN fDontCheckDistance )
|
UINT8 GetSquadleadersCountInVicinity( SOLDIERTYPE * pSoldier, BOOLEAN fWithHigherLevel, BOOLEAN fDontCheckDistance )
|
||||||
{
|
{
|
||||||
UINT16 cnt = 0;
|
|
||||||
UINT8 ubNumberSL = 0;
|
UINT8 ubNumberSL = 0;
|
||||||
|
|
||||||
// loop through all soldiers around
|
// loop through all soldiers around
|
||||||
for ( cnt = gTacticalStatus.Team[pSoldier->bTeam].bFirstID; cnt <= gTacticalStatus.Team[pSoldier->bTeam].bLastID; cnt++ )
|
for ( SoldierID cnt = gTacticalStatus.Team[pSoldier->bTeam].bFirstID; cnt <= gTacticalStatus.Team[pSoldier->bTeam].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pSquadLeader = MercPtrs[cnt];
|
SOLDIERTYPE *pSquadLeader = cnt;
|
||||||
// Get active conscious soldier
|
// Get active conscious soldier
|
||||||
if ( pSquadLeader != pSoldier && pSquadLeader->bActive && //MercPtrs[ cnt ]->aiData.bShock < 20 &&
|
if ( pSquadLeader != pSoldier && pSquadLeader->bActive && //MercPtrs[ cnt ]->aiData.bShock < 20 &&
|
||||||
pSquadLeader->stats.bLife >= OKLIFE && HAS_SKILL_TRAIT( pSquadLeader, SQUADLEADER_NT ) )
|
pSquadLeader->stats.bLife >= OKLIFE && HAS_SKILL_TRAIT( pSquadLeader, SQUADLEADER_NT ) )
|
||||||
@@ -24531,9 +24530,9 @@ UINT8 GetSquadleadersCountInVicinity( SOLDIERTYPE * pSoldier, BOOLEAN fWithHighe
|
|||||||
// special loop for militia - they can get a bonus from our mercs
|
// special loop for militia - they can get a bonus from our mercs
|
||||||
if ( pSoldier->bTeam == MILITIA_TEAM && ubNumberSL < gSkillTraitValues.ubSLMaxBonuses )
|
if ( pSoldier->bTeam == MILITIA_TEAM && ubNumberSL < gSkillTraitValues.ubSLMaxBonuses )
|
||||||
{
|
{
|
||||||
for ( 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 *pSquadLeader = MercPtrs[cnt];
|
SOLDIERTYPE *pSquadLeader = cnt;
|
||||||
// Get active conscious soldier
|
// Get active conscious soldier
|
||||||
if ( pSquadLeader != pSoldier && pSquadLeader->bActive && //MercPtrs[ cnt ]->aiData.bShock < 20 &&
|
if ( pSquadLeader != pSoldier && pSquadLeader->bActive && //MercPtrs[ cnt ]->aiData.bShock < 20 &&
|
||||||
pSquadLeader->stats.bLife >= OKLIFE && HAS_SKILL_TRAIT( pSquadLeader, SQUADLEADER_NT ) )
|
pSquadLeader->stats.bLife >= OKLIFE && HAS_SKILL_TRAIT( pSquadLeader, SQUADLEADER_NT ) )
|
||||||
@@ -24981,7 +24980,7 @@ BOOLEAN ResolvePendingInterrupt( SOLDIERTYPE * pSoldier, UINT8 ubInterruptType )
|
|||||||
if ( gGameExternalOptions.fAllowCollectiveInterrupts )
|
if ( gGameExternalOptions.fAllowCollectiveInterrupts )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pTeammate;
|
SOLDIERTYPE *pTeammate;
|
||||||
UINT16 uCnt2 = 0, usColIntChance = 0;
|
UINT16 usColIntChance = 0;
|
||||||
UINT8 ubOriginalInterruptersCount = ubInterruptersFound, uCnt3 = 0;
|
UINT8 ubOriginalInterruptersCount = ubInterruptersFound, uCnt3 = 0;
|
||||||
BOOLEAN fAlreadyIn;
|
BOOLEAN fAlreadyIn;
|
||||||
|
|
||||||
@@ -24989,9 +24988,10 @@ BOOLEAN ResolvePendingInterrupt( SOLDIERTYPE * pSoldier, UINT8 ubInterruptType )
|
|||||||
{
|
{
|
||||||
pInterrupter = MercPtrs[ubaInterruptersList[uCnt]];
|
pInterrupter = MercPtrs[ubaInterruptersList[uCnt]];
|
||||||
|
|
||||||
uCnt2 = gTacticalStatus.Team[pInterrupter->bTeam].bFirstID;
|
SoldierID uCnt2 = gTacticalStatus.Team[pInterrupter->bTeam].bFirstID;
|
||||||
for ( pTeammate = MercPtrs[uCnt2]; uCnt2 <= gTacticalStatus.Team[pInterrupter->bTeam].bLastID; uCnt2++, pTeammate++ )
|
for ( ; uCnt2 <= gTacticalStatus.Team[pInterrupter->bTeam].bLastID; ++uCnt2 )
|
||||||
{
|
{
|
||||||
|
pTeammate = uCnt2;
|
||||||
if ( pTeammate == NULL )
|
if ( pTeammate == NULL )
|
||||||
continue; // not valid
|
continue; // not valid
|
||||||
if ( pTeammate->bTeam != pInterrupter->bTeam )
|
if ( pTeammate->bTeam != pInterrupter->bTeam )
|
||||||
@@ -25236,10 +25236,11 @@ BOOLEAN GetRadioOperatorSignal( SoldierID usOwner, INT32* psTargetGridNo )
|
|||||||
bTeam = ENEMY_TEAM;
|
bTeam = ENEMY_TEAM;
|
||||||
|
|
||||||
SOLDIERTYPE* pSoldier = NULL;
|
SOLDIERTYPE* pSoldier = NULL;
|
||||||
INT32 cnt = gTacticalStatus.Team[bTeam].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[bTeam].bFirstID;
|
||||||
INT32 lastid = gTacticalStatus.Team[bTeam].bLastID;
|
SoldierID lastid = gTacticalStatus.Team[bTeam].bLastID;
|
||||||
for ( pSoldier = MercPtrs[cnt]; cnt < lastid; ++cnt, ++pSoldier )
|
for ( ; cnt < lastid; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if ( pSoldier && pSoldier->CanUseRadio( FALSE ) && pSoldier->bActive && pSoldier->bInSector && (pSoldier->sSectorX == gWorldSectorX) && (pSoldier->sSectorY == gWorldSectorY) && (pSoldier->bSectorZ == gbWorldSectorZ) )
|
if ( pSoldier && pSoldier->CanUseRadio( FALSE ) && pSoldier->bActive && pSoldier->bInSector && (pSoldier->sSectorX == gWorldSectorX) && (pSoldier->sSectorY == gWorldSectorY) && (pSoldier->bSectorZ == gbWorldSectorZ) )
|
||||||
{
|
{
|
||||||
*psTargetGridNo = pSoldier->sGridNo;
|
*psTargetGridNo = pSoldier->sGridNo;
|
||||||
@@ -25306,10 +25307,11 @@ BOOLEAN IsValidArtilleryOrderSector( INT16 sSectorX, INT16 sSectorY, INT8 bSecto
|
|||||||
BOOLEAN activeradio = FALSE;
|
BOOLEAN activeradio = FALSE;
|
||||||
BOOLEAN mortarfound = FALSE;
|
BOOLEAN mortarfound = FALSE;
|
||||||
SOLDIERTYPE* pSoldier = NULL;
|
SOLDIERTYPE* pSoldier = NULL;
|
||||||
INT32 cnt = gTacticalStatus.Team[bTeam].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[bTeam].bFirstID;
|
||||||
INT32 lastid = gTacticalStatus.Team[bTeam].bLastID;
|
SoldierID lastid = gTacticalStatus.Team[bTeam].bLastID;
|
||||||
for ( pSoldier = MercPtrs[cnt]; cnt < lastid; ++cnt, ++pSoldier )
|
for ( ; cnt < lastid; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
// check if soldier exists in this sector, and is on duty
|
// check if soldier exists in this sector, and is on duty
|
||||||
if ( !pSoldier || !pSoldier->bActive || pSoldier->sSectorX != sSectorX || pSoldier->sSectorY != sSectorY || pSoldier->bSectorZ != bSectorZ || pSoldier->bAssignment > ON_DUTY )
|
if ( !pSoldier || !pSoldier->bActive || pSoldier->sSectorX != sSectorX || pSoldier->sSectorY != sSectorY || pSoldier->bSectorZ != bSectorZ || pSoldier->bAssignment > ON_DUTY )
|
||||||
continue;
|
continue;
|
||||||
@@ -25332,10 +25334,11 @@ BOOLEAN SectorJammed( )
|
|||||||
{
|
{
|
||||||
// check every soldier: are we jamming frequencies?
|
// check every soldier: are we jamming frequencies?
|
||||||
SOLDIERTYPE* pSoldier = NULL;
|
SOLDIERTYPE* pSoldier = NULL;
|
||||||
INT32 cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID;
|
||||||
INT32 lastid = MAX_NUM_SOLDIERS;
|
SoldierID lastid = MAX_NUM_SOLDIERS;
|
||||||
for ( pSoldier = MercPtrs[cnt]; cnt < lastid; ++cnt, ++pSoldier )
|
for ( ; cnt < lastid; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if ( pSoldier->sSectorX == gWorldSectorX && pSoldier->sSectorY == gWorldSectorY && pSoldier->bSectorZ == gbWorldSectorZ && pSoldier->stats.bLife > 0 && pSoldier->IsJamming( ) )
|
if ( pSoldier->sSectorX == gWorldSectorX && pSoldier->sSectorY == gWorldSectorY && pSoldier->bSectorZ == gbWorldSectorZ && pSoldier->stats.bLife > 0 && pSoldier->IsJamming( ) )
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@@ -25347,10 +25350,11 @@ BOOLEAN PlayerTeamIsScanning( )
|
|||||||
{
|
{
|
||||||
// check every soldier: are we jamming frequencies?
|
// check every soldier: are we jamming frequencies?
|
||||||
SOLDIERTYPE* pSoldier = NULL;
|
SOLDIERTYPE* pSoldier = NULL;
|
||||||
INT32 cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID;
|
||||||
INT32 lastid = gTacticalStatus.Team[OUR_TEAM].bLastID;
|
SoldierID lastid = gTacticalStatus.Team[OUR_TEAM].bLastID;
|
||||||
for ( pSoldier = MercPtrs[cnt]; cnt < lastid; ++cnt, ++pSoldier )
|
for ( ; cnt < lastid; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if ( pSoldier->sSectorX == gWorldSectorX && pSoldier->sSectorY == gWorldSectorY && pSoldier->bSectorZ == gbWorldSectorZ && pSoldier->stats.bLife > 0 && pSoldier->IsScanning( ) )
|
if ( pSoldier->sSectorX == gWorldSectorX && pSoldier->sSectorY == gWorldSectorY && pSoldier->bSectorZ == gbWorldSectorZ && pSoldier->stats.bLife > 0 && pSoldier->IsScanning( ) )
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@@ -25364,10 +25368,11 @@ UINT16 GridNoSpotterCTHBonus( SOLDIERTYPE* pSniper, INT32 sGridNo, INT8 bTeam )
|
|||||||
UINT16 bestvalue = 0;
|
UINT16 bestvalue = 0;
|
||||||
|
|
||||||
SOLDIERTYPE* pSoldier = NULL;
|
SOLDIERTYPE* pSoldier = NULL;
|
||||||
INT32 cnt = gTacticalStatus.Team[bTeam].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[bTeam].bFirstID;
|
||||||
INT32 lastid = gTacticalStatus.Team[bTeam].bLastID;
|
SoldierID lastid = gTacticalStatus.Team[bTeam].bLastID;
|
||||||
for ( pSoldier = MercPtrs[cnt]; cnt < lastid; ++cnt, ++pSoldier )
|
for ( ; cnt < lastid; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if ( pSoldier != pSniper && pSoldier->sSectorX == gWorldSectorX && pSoldier->sSectorY == gWorldSectorY && pSoldier->bSectorZ == gbWorldSectorZ
|
if ( pSoldier != pSniper && pSoldier->sSectorX == gWorldSectorX && pSoldier->sSectorY == gWorldSectorY && pSoldier->bSectorZ == gbWorldSectorZ
|
||||||
&& pSoldier->IsSpotting( )
|
&& pSoldier->IsSpotting( )
|
||||||
&& PythSpacesAway( pSoldier->sGridNo, pSniper->sGridNo ) <= gGameExternalOptions.usSpotterRange
|
&& PythSpacesAway( pSoldier->sGridNo, pSniper->sGridNo ) <= gGameExternalOptions.usSpotterRange
|
||||||
|
|||||||
+13
-13
@@ -574,7 +574,6 @@ INT16 gsStrategicDiseaseOriginSector = -1;
|
|||||||
SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, SoldierID *pubID )
|
SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, SoldierID *pubID )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE Soldier;
|
SOLDIERTYPE Soldier;
|
||||||
INT32 cnt;
|
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
BOOLEAN fGuyAvail = FALSE;
|
BOOLEAN fGuyAvail = FALSE;
|
||||||
UINT16 bLastTeamID;
|
UINT16 bLastTeamID;
|
||||||
@@ -761,7 +760,7 @@ SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, Soldier
|
|||||||
|
|
||||||
if( guiCurrentScreen != AUTORESOLVE_SCREEN )
|
if( guiCurrentScreen != AUTORESOLVE_SCREEN )
|
||||||
{
|
{
|
||||||
cnt = gTacticalStatus.Team[ Soldier.bTeam ].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[ Soldier.bTeam ].bFirstID;
|
||||||
|
|
||||||
// ATE: If we are a vehicle, and a player, start at a different slot ( 2 - max )
|
// ATE: If we are a vehicle, and a player, start at a different slot ( 2 - max )
|
||||||
if( Soldier.ubBodyType == HUMVEE ||
|
if( Soldier.ubBodyType == HUMVEE ||
|
||||||
@@ -778,8 +777,9 @@ SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, Soldier
|
|||||||
bLastTeamID = gTacticalStatus.Team[ Soldier.bTeam ].bLastID;
|
bLastTeamID = gTacticalStatus.Team[ Soldier.bTeam ].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 ( ; cnt <= bLastTeamID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
if ( !pTeamSoldier->bActive )
|
if ( !pTeamSoldier->bActive )
|
||||||
{
|
{
|
||||||
fGuyAvail = TRUE;
|
fGuyAvail = TRUE;
|
||||||
@@ -794,7 +794,7 @@ SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, Soldier
|
|||||||
}
|
}
|
||||||
|
|
||||||
// OK, set ID
|
// OK, set ID
|
||||||
Soldier.ubID = (UINT16)cnt;
|
Soldier.ubID = cnt;
|
||||||
*pubID = Soldier.ubID;
|
*pubID = Soldier.ubID;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3031,7 +3031,7 @@ void ForceSoldierProfileID( SOLDIERTYPE *pSoldier, UINT8 ubProfileID )
|
|||||||
|
|
||||||
SOLDIERTYPE* ReserveTacticalSoldierForAutoresolve( UINT8 ubSoldierClass )
|
SOLDIERTYPE* ReserveTacticalSoldierForAutoresolve( UINT8 ubSoldierClass )
|
||||||
{
|
{
|
||||||
INT32 i, iStart, iEnd;
|
SoldierID i, iStart, iEnd;
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
//This code looks for a soldier of specified type that currently exists in tactical and
|
//This code looks for a soldier of specified type that currently exists in tactical and
|
||||||
//returns the pointer to that soldier. This is used when copying the exact status of
|
//returns the pointer to that soldier. This is used when copying the exact status of
|
||||||
@@ -3050,12 +3050,12 @@ SOLDIERTYPE* ReserveTacticalSoldierForAutoresolve( UINT8 ubSoldierClass )
|
|||||||
}
|
}
|
||||||
for( i = iStart; i <= iEnd; ++i )
|
for( i = iStart; i <= iEnd; ++i )
|
||||||
{
|
{
|
||||||
if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->bInSector && MercPtrs[ i ]->stats.bLife && !TileIsOutOfBounds(MercPtrs[ i ]->sGridNo))
|
if( i->bActive && i->bInSector && i->stats.bLife && !TileIsOutOfBounds(i->sGridNo))
|
||||||
{
|
{
|
||||||
if( MercPtrs[ i ]->ubSoldierClass == ubSoldierClass )
|
if( i->ubSoldierClass == ubSoldierClass )
|
||||||
{
|
{
|
||||||
//reserve this soldier
|
//reserve this soldier
|
||||||
MercPtrs[ i ]->sGridNo = NOWHERE;
|
i->sGridNo = NOWHERE;
|
||||||
|
|
||||||
//Allocate and copy the soldier
|
//Allocate and copy the soldier
|
||||||
pSoldier = new SOLDIERTYPE(*MercPtrs[i]); //(SOLDIERTYPE*)MemAlloc( SIZEOF_SOLDIERTYPE );
|
pSoldier = new SOLDIERTYPE(*MercPtrs[i]); //(SOLDIERTYPE*)MemAlloc( SIZEOF_SOLDIERTYPE );
|
||||||
@@ -3348,7 +3348,7 @@ SOLDIERTYPE* TacticalCreateZombie()
|
|||||||
|
|
||||||
SOLDIERTYPE* ReserveTacticalMilitiaSoldierForAutoresolve( UINT8 ubSoldierClass )
|
SOLDIERTYPE* ReserveTacticalMilitiaSoldierForAutoresolve( UINT8 ubSoldierClass )
|
||||||
{
|
{
|
||||||
INT32 i, iStart, iEnd;
|
SoldierID i, iStart, iEnd;
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
|
|
||||||
// For description look original ReserveTacticalSoldierForAutoresolve()
|
// For description look original ReserveTacticalSoldierForAutoresolve()
|
||||||
@@ -3356,14 +3356,14 @@ SOLDIERTYPE* ReserveTacticalMilitiaSoldierForAutoresolve( UINT8 ubSoldierClass )
|
|||||||
iStart = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID;
|
iStart = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID;
|
||||||
iEnd = gTacticalStatus.Team[ MILITIA_TEAM ].bLastID;
|
iEnd = gTacticalStatus.Team[ MILITIA_TEAM ].bLastID;
|
||||||
|
|
||||||
for( i = iStart; i <= iEnd; i++ )
|
for( i = iStart; i <= iEnd; ++i )
|
||||||
{
|
{
|
||||||
if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->bInSector && MercPtrs[ i ]->stats.bLife && !TileIsOutOfBounds(MercPtrs[ i ]->sGridNo))
|
if( i->bActive && i->bInSector && i->stats.bLife && !TileIsOutOfBounds(i->sGridNo))
|
||||||
{
|
{
|
||||||
if( MercPtrs[ i ]->ubSoldierClass == ubSoldierClass )
|
if( i->ubSoldierClass == ubSoldierClass )
|
||||||
{
|
{
|
||||||
//reserve this soldier
|
//reserve this soldier
|
||||||
MercPtrs[ i ]->sGridNo = NOWHERE;
|
i->sGridNo = NOWHERE;
|
||||||
|
|
||||||
//Allocate and copy the soldier
|
//Allocate and copy the soldier
|
||||||
pSoldier = new SOLDIERTYPE(*MercPtrs[i]); //(SOLDIERTYPE*)MemAlloc( SIZEOF_SOLDIERTYPE );
|
pSoldier = new SOLDIERTYPE(*MercPtrs[i]); //(SOLDIERTYPE*)MemAlloc( SIZEOF_SOLDIERTYPE );
|
||||||
|
|||||||
@@ -1891,9 +1891,9 @@ void AddSoldierInitListMilitia( UINT16 ubNumGreen, UINT16 ubNumRegs, UINT16 ubNu
|
|||||||
{
|
{
|
||||||
// determine how many militia have already been created in this sector (this can also have happened in another function), so count all active ones
|
// determine how many militia have already been created in this sector (this can also have happened in another function), so count all active ones
|
||||||
UINT16 tacticalmilitia = 0;
|
UINT16 tacticalmilitia = 0;
|
||||||
for ( UINT16 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 )
|
||||||
{
|
{
|
||||||
if ( MercPtrs[i]->bInSector && MercPtrs[i]->bActive )
|
if ( i->bInSector && i->bActive )
|
||||||
++tacticalmilitia;
|
++tacticalmilitia;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3205,10 +3205,11 @@ void SectorAddAssassins( INT16 sMapX, INT16 sMapY, INT16 sMapZ )
|
|||||||
// count current number of civilians
|
// count current number of civilians
|
||||||
UINT16 numberofcivs = 0;
|
UINT16 numberofcivs = 0;
|
||||||
SOLDIERTYPE* pTeamSoldier = NULL;
|
SOLDIERTYPE* pTeamSoldier = NULL;
|
||||||
INT32 cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID;
|
||||||
INT32 lastid = gTacticalStatus.Team[ CIV_TEAM ].bLastID;
|
SoldierID lastid = gTacticalStatus.Team[ CIV_TEAM ].bLastID;
|
||||||
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt < lastid; ++cnt, ++pTeamSoldier)
|
for ( ; cnt < lastid; ++cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
// check if teamsoldier exists in this sector
|
// check if teamsoldier exists in this sector
|
||||||
if ( pTeamSoldier && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->sSectorX == sMapX && pTeamSoldier->sSectorY == sMapY && pTeamSoldier->bSectorZ == sMapZ )
|
if ( pTeamSoldier && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->sSectorX == sMapX && pTeamSoldier->sSectorY == sMapY && pTeamSoldier->bSectorZ == sMapZ )
|
||||||
++numberofcivs;
|
++numberofcivs;
|
||||||
@@ -3276,10 +3277,11 @@ void SectorAddPrisonersofWar( INT16 sMapX, INT16 sMapY, INT16 sMapZ )
|
|||||||
UINT16 numberofcivs = 0;
|
UINT16 numberofcivs = 0;
|
||||||
UINT16 numberofpows = 0;
|
UINT16 numberofpows = 0;
|
||||||
SOLDIERTYPE* pTeamSoldier = NULL;
|
SOLDIERTYPE* pTeamSoldier = NULL;
|
||||||
INT32 cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID;
|
||||||
INT32 lastid = gTacticalStatus.Team[ CIV_TEAM ].bLastID;
|
SoldierID lastid = gTacticalStatus.Team[ CIV_TEAM ].bLastID;
|
||||||
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt < lastid; ++cnt, ++pTeamSoldier)
|
for ( ; cnt < lastid; ++cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
// check if teamsoldier exists in this sector
|
// check if teamsoldier exists in this sector
|
||||||
if ( pTeamSoldier && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->sSectorX == sMapX && pTeamSoldier->sSectorY == sMapY && pTeamSoldier->bSectorZ == sMapZ )
|
if ( pTeamSoldier && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->sSectorX == sMapX && pTeamSoldier->sSectorY == sMapY && pTeamSoldier->bSectorZ == sMapZ )
|
||||||
++numberofcivs;
|
++numberofcivs;
|
||||||
|
|||||||
@@ -2718,7 +2718,6 @@ void OverwriteMercOpinionsWithXMLData( UINT32 uiLoop )
|
|||||||
INT8 CheckMercsNearForCharTraits( UINT8 ubProfileID, INT8 bCharTraitID )
|
INT8 CheckMercsNearForCharTraits( UINT8 ubProfileID, INT8 bCharTraitID )
|
||||||
{
|
{
|
||||||
INT8 bNumber = 0;
|
INT8 bNumber = 0;
|
||||||
UINT32 uiLoop;
|
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
SOLDIERTYPE *pTeammate;
|
SOLDIERTYPE *pTeammate;
|
||||||
BOOLEAN fOnlyOneException = FALSE;
|
BOOLEAN fOnlyOneException = FALSE;
|
||||||
@@ -2729,9 +2728,9 @@ INT8 CheckMercsNearForCharTraits( UINT8 ubProfileID, INT8 bCharTraitID )
|
|||||||
return( -1 );
|
return( -1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( uiLoop = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; uiLoop <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; uiLoop++)
|
for ( SoldierID uiLoop = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; uiLoop <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; ++uiLoop )
|
||||||
{
|
{
|
||||||
pTeammate = MercPtrs[ uiLoop ];
|
pTeammate = uiLoop;
|
||||||
if ( pTeammate == NULL )
|
if ( pTeammate == NULL )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -397,17 +397,17 @@ void DoneFadeInWarp( void )
|
|||||||
|
|
||||||
void DoneFadeOutWarpCallback( void )
|
void DoneFadeOutWarpCallback( void )
|
||||||
{
|
{
|
||||||
INT32 cnt;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
|
|
||||||
// Warp!
|
// Warp!
|
||||||
|
|
||||||
// Set insertion data...
|
// Set insertion data...
|
||||||
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;
|
||||||
// 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 )
|
if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && pSoldier->bInSector )
|
||||||
{
|
{
|
||||||
|
|||||||
+12
-16
@@ -119,7 +119,7 @@ void SaveNPCInformationToProfileStruct( );
|
|||||||
BOOLEAN DoesTempFileExistsForMap( UINT32 uiType, INT16 sMapX, INT16 sMapY, INT8 bMapZ );
|
BOOLEAN DoesTempFileExistsForMap( UINT32 uiType, INT16 sMapX, INT16 sMapY, INT8 bMapZ );
|
||||||
|
|
||||||
|
|
||||||
INT16 GetSoldierIDFromAnyMercID(UINT8 ubMercID);
|
SoldierID GetSoldierIDFromAnyMercID(UINT8 ubMercID);
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN SetUnderGroundSectorFlag( INT16 sSectorX, INT16 sSectorY, UINT8 ubSectorZ, UINT32 uiFlagToSet );
|
BOOLEAN SetUnderGroundSectorFlag( INT16 sSectorX, INT16 sSectorY, UINT8 ubSectorZ, UINT32 uiFlagToSet );
|
||||||
@@ -1131,7 +1131,6 @@ BOOLEAN SaveCurrentSectorsInformationToTempItemFile( )
|
|||||||
void HandleAllReachAbleItemsInTheSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ )
|
void HandleAllReachAbleItemsInTheSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ )
|
||||||
{
|
{
|
||||||
// find out which items in the list are reachable
|
// find out which items in the list are reachable
|
||||||
UINT32 uiCounter = 0;
|
|
||||||
UINT8 ubDir, ubMovementCost;
|
UINT8 ubDir, ubMovementCost;
|
||||||
BOOLEAN fReachable = FALSE;
|
BOOLEAN fReachable = FALSE;
|
||||||
INT32 sGridNo = NOWHERE, sGridNo2 = NOWHERE;
|
INT32 sGridNo = NOWHERE, sGridNo2 = NOWHERE;
|
||||||
@@ -1179,9 +1178,9 @@ void HandleAllReachAbleItemsInTheSector( INT16 sSectorX, INT16 sSectorY, INT8 bS
|
|||||||
{
|
{
|
||||||
sGridNo2 = gMapInformation.sIsolatedGridNo;
|
sGridNo2 = gMapInformation.sIsolatedGridNo;
|
||||||
|
|
||||||
for( uiCounter = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; uiCounter <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++uiCounter )
|
for( SoldierID uiCounter = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; uiCounter <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++uiCounter )
|
||||||
{
|
{
|
||||||
pSoldier = MercPtrs[ uiCounter ];
|
pSoldier = uiCounter;
|
||||||
if ( pSoldier && pSoldier->bActive && pSoldier->stats.bLife > 0 && pSoldier->sSectorX == sSectorX && pSoldier->sSectorY == sSectorY && pSoldier->bSectorZ == bSectorZ )
|
if ( pSoldier && pSoldier->bActive && pSoldier->stats.bLife > 0 && pSoldier->sSectorX == sSectorX && pSoldier->sSectorY == sSectorY && pSoldier->bSectorZ == bSectorZ )
|
||||||
{
|
{
|
||||||
if ( FindBestPath( pSoldier, sGridNo2, pSoldier->pathing.bLevel, WALKING, NO_COPYROUTE, 0 ) )
|
if ( FindBestPath( pSoldier, sGridNo2, pSoldier->pathing.bLevel, WALKING, NO_COPYROUTE, 0 ) )
|
||||||
@@ -1200,7 +1199,7 @@ void HandleAllReachAbleItemsInTheSector( INT16 sSectorX, INT16 sSectorY, INT8 bS
|
|||||||
|
|
||||||
GlobalItemsReachableTest( sGridNo, sGridNo2 );
|
GlobalItemsReachableTest( sGridNo, sGridNo2 );
|
||||||
|
|
||||||
for( uiCounter = 0; uiCounter < guiNumWorldItems; ++uiCounter )
|
for( UINT32 uiCounter = 0; uiCounter < guiNumWorldItems; ++uiCounter )
|
||||||
{
|
{
|
||||||
// reset reachablity
|
// reset reachablity
|
||||||
fReachable = FALSE;
|
fReachable = FALSE;
|
||||||
@@ -2130,19 +2129,16 @@ BOOLEAN DoesTempFileExistsForMap( UINT32 uiType, INT16 sMapX, INT16 sMapY, INT8
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
INT16 GetSoldierIDFromAnyMercID(UINT8 ubMercID)
|
SoldierID GetSoldierIDFromAnyMercID(UINT8 ubMercID)
|
||||||
{
|
{
|
||||||
UINT16 cnt;
|
|
||||||
UINT16 ubLastTeamID;
|
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
|
SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID;
|
||||||
cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID;
|
SoldierID ubLastTeamID = TOTAL_SOLDIERS;
|
||||||
|
|
||||||
ubLastTeamID = TOTAL_SOLDIERS;
|
|
||||||
|
|
||||||
// look for all mercs on the same team,
|
// look for all mercs on the same team,
|
||||||
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= ubLastTeamID; cnt++,pTeamSoldier++)
|
for ( ; cnt <= ubLastTeamID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
if ( pTeamSoldier->bActive )
|
if ( pTeamSoldier->bActive )
|
||||||
{
|
{
|
||||||
if ( pTeamSoldier->ubProfile == ubMercID )
|
if ( pTeamSoldier->ubProfile == ubMercID )
|
||||||
@@ -2152,7 +2148,7 @@ INT16 GetSoldierIDFromAnyMercID(UINT8 ubMercID)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return( -1 );
|
return(NOBODY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2554,9 +2550,9 @@ BOOLEAN SetSectorFlag( INT16 sMapX, INT16 sMapY, UINT8 bMapZ, UINT32 uiFlagToSet
|
|||||||
UpdateLastDayOfPlayerActivity( (UINT16) GetWorldDay() );
|
UpdateLastDayOfPlayerActivity( (UINT16) GetWorldDay() );
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( UINT16 i = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; i <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; i++ )
|
for ( SoldierID id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; id <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++id )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pSoldier = MercPtrs[i];
|
SOLDIERTYPE *pSoldier = id;
|
||||||
|
|
||||||
if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && pSoldier->ubProfile != NO_PROFILE &&
|
if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && pSoldier->ubProfile != NO_PROFILE &&
|
||||||
pSoldier->sSectorX == sMapX && pSoldier->sSectorY == sMapY && pSoldier->bSectorZ == bMapZ && !pSoldier->flags.fBetweenSectors &&
|
pSoldier->sSectorX == sMapX && pSoldier->sSectorY == sMapY && pSoldier->bSectorZ == bMapZ && !pSoldier->flags.fBetweenSectors &&
|
||||||
|
|||||||
@@ -46,7 +46,6 @@ void HandleRPCDescription( )
|
|||||||
UINT16 ubNumMercs = 0;
|
UINT16 ubNumMercs = 0;
|
||||||
UINT16 ubChosenMerc = 0;
|
UINT16 ubChosenMerc = 0;
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
INT32 cnt2;
|
|
||||||
BOOLEAN fSAMSite = FALSE;
|
BOOLEAN fSAMSite = FALSE;
|
||||||
|
|
||||||
|
|
||||||
@@ -97,12 +96,13 @@ void HandleRPCDescription( )
|
|||||||
|
|
||||||
// OK, count how many rpc guys we have....
|
// OK, count how many rpc guys we have....
|
||||||
// set up soldier ptr as first element in mercptrs list
|
// set up soldier ptr as first element in mercptrs list
|
||||||
cnt2 = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
SoldierID cnt2 = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||||
if (gTacticalStatus.ubGuideDescriptionToUse != 100)
|
if (gTacticalStatus.ubGuideDescriptionToUse != 100)
|
||||||
{
|
{
|
||||||
// run through list
|
// run through list
|
||||||
for ( pTeamSoldier = MercPtrs[cnt2]; cnt2 <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt2, pTeamSoldier++ )
|
for ( ; cnt2 <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt2 )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt2;
|
||||||
// Add guy if he's a candidate...
|
// Add guy if he's a candidate...
|
||||||
if ( RPC_RECRUITED( pTeamSoldier ) )
|
if ( RPC_RECRUITED( pTeamSoldier ) )
|
||||||
{
|
{
|
||||||
@@ -137,8 +137,9 @@ void HandleRPCDescription( )
|
|||||||
{
|
{
|
||||||
// run through list
|
// run through list
|
||||||
cnt2 = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
cnt2 = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||||
for ( pTeamSoldier = MercPtrs[cnt2]; cnt2 <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt2, pTeamSoldier++ )
|
for ( ; cnt2 <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt2 )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt2;
|
||||||
if ( pTeamSoldier->stats.bLife >= OKLIFE && pTeamSoldier->bActive &&
|
if ( pTeamSoldier->stats.bLife >= OKLIFE && pTeamSoldier->bActive &&
|
||||||
pTeamSoldier->sSectorX == gTacticalStatus.bGuideDescriptionSectorX && pTeamSoldier->sSectorY == gTacticalStatus.bGuideDescriptionSectorY &&
|
pTeamSoldier->sSectorX == gTacticalStatus.bGuideDescriptionSectorX && pTeamSoldier->sSectorY == gTacticalStatus.bGuideDescriptionSectorY &&
|
||||||
pTeamSoldier->bSectorZ == gbWorldSectorZ &&
|
pTeamSoldier->bSectorZ == gbWorldSectorZ &&
|
||||||
@@ -154,7 +155,6 @@ void HandleRPCDescription( )
|
|||||||
|
|
||||||
void HandleTacticalEndTurn( )
|
void HandleTacticalEndTurn( )
|
||||||
{
|
{
|
||||||
UINT32 cnt;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
UINT32 uiTime;
|
UINT32 uiTime;
|
||||||
static UINT32 uiTimeSinceLastStrategicUpdate = 0;
|
static UINT32 uiTimeSinceLastStrategicUpdate = 0;
|
||||||
@@ -239,9 +239,10 @@ void HandleTacticalEndTurn( )
|
|||||||
|
|
||||||
BeginLoggingForBleedMeToos( TRUE );
|
BeginLoggingForBleedMeToos( TRUE );
|
||||||
|
|
||||||
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->stats.bLife > 0 && !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) )
|
if ( pSoldier->bActive && pSoldier->stats.bLife > 0 && !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) )
|
||||||
{
|
{
|
||||||
// Handle everything from getting breath back, to bleeding, etc
|
// Handle everything from getting breath back, to bleeding, etc
|
||||||
@@ -275,7 +276,7 @@ void HandleTacticalEndTurn( )
|
|||||||
// OK, loop through the mercs to perform 'end turn' events on each...
|
// OK, loop through the mercs to perform 'end turn' events on each...
|
||||||
// We're looping through only mercs in tactical engine, ignoring our mercs
|
// We're looping through only mercs in tactical engine, ignoring our mercs
|
||||||
// because they were done earilier...
|
// because they were done earilier...
|
||||||
for ( cnt = 0; cnt < guiNumMercSlots; cnt++ )
|
for ( UINT32 cnt = 0; cnt < guiNumMercSlots; cnt++ )
|
||||||
{
|
{
|
||||||
pSoldier = MercSlots[ cnt ];
|
pSoldier = MercSlots[ cnt ];
|
||||||
|
|
||||||
|
|||||||
+57
-60
@@ -136,7 +136,6 @@ void ClearIntList( void )
|
|||||||
|
|
||||||
BOOLEAN BloodcatsPresent( void )
|
BOOLEAN BloodcatsPresent( void )
|
||||||
{
|
{
|
||||||
INT32 iLoop;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
|
|
||||||
DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"BloodcatsPresent");
|
DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"BloodcatsPresent");
|
||||||
@@ -145,9 +144,9 @@ BOOLEAN BloodcatsPresent( void )
|
|||||||
return( FALSE );
|
return( FALSE );
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( iLoop = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; iLoop <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; iLoop++ )
|
for ( SoldierID iLoop = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; iLoop <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++iLoop )
|
||||||
{
|
{
|
||||||
pSoldier = MercPtrs[ iLoop ];
|
pSoldier = iLoop;
|
||||||
|
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 && pSoldier->ubBodyType == BLOODCAT )
|
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 && pSoldier->ubBodyType == BLOODCAT )
|
||||||
{
|
{
|
||||||
@@ -160,7 +159,6 @@ BOOLEAN BloodcatsPresent( void )
|
|||||||
|
|
||||||
void StartPlayerTeamTurn( BOOLEAN fDoBattleSnd, BOOLEAN fEnteringCombatMode )
|
void StartPlayerTeamTurn( BOOLEAN fDoBattleSnd, BOOLEAN fEnteringCombatMode )
|
||||||
{
|
{
|
||||||
INT32 cnt;
|
|
||||||
DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"StartPlayerTeamTurn");
|
DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"StartPlayerTeamTurn");
|
||||||
// SOLDIERTYPE *pSoldier;
|
// SOLDIERTYPE *pSoldier;
|
||||||
// EV_S_BEGINTURN SBeginTurn;
|
// EV_S_BEGINTURN SBeginTurn;
|
||||||
@@ -178,8 +176,6 @@ void StartPlayerTeamTurn( BOOLEAN fDoBattleSnd, BOOLEAN fEnteringCombatMode )
|
|||||||
// make sure set properly in gTacticalStatus:
|
// make sure set properly in gTacticalStatus:
|
||||||
gTacticalStatus.ubCurrentTeam = OUR_TEAM;
|
gTacticalStatus.ubCurrentTeam = OUR_TEAM;
|
||||||
|
|
||||||
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
|
||||||
|
|
||||||
InitPlayerUIBar( FALSE );
|
InitPlayerUIBar( FALSE );
|
||||||
|
|
||||||
if ( gTacticalStatus.uiFlags & TURNBASED )
|
if ( gTacticalStatus.uiFlags & TURNBASED )
|
||||||
@@ -197,6 +193,7 @@ void StartPlayerTeamTurn( BOOLEAN fDoBattleSnd, BOOLEAN fEnteringCombatMode )
|
|||||||
|
|
||||||
// ATE: Commented out - looks like this message is called earlier for our team
|
// ATE: Commented out - looks like this message is called earlier for our team
|
||||||
// look for all mercs on the same team,
|
// look for all mercs on the same team,
|
||||||
|
//SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||||
//for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++)
|
//for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++)
|
||||||
//{
|
//{
|
||||||
// if ( pSoldier->bActive && pSoldier->stats.bLife > 0 )
|
// if ( pSoldier->bActive && pSoldier->stats.bLife > 0 )
|
||||||
@@ -302,7 +299,6 @@ void EndTurn( UINT8 ubNextTeam )
|
|||||||
{
|
{
|
||||||
DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"EndTurn");
|
DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"EndTurn");
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
INT32 cnt;
|
|
||||||
|
|
||||||
//Check for enemy pooling (add enemies if there happens to be more than the max in the
|
//Check for enemy pooling (add enemies if there happens to be more than the max in the
|
||||||
//current battle. If one or more slots have freed up, we can add them now.
|
//current battle. If one or more slots have freed up, we can add them now.
|
||||||
@@ -344,9 +340,10 @@ void EndTurn( UINT8 ubNextTeam )
|
|||||||
FreezeInterfaceForEnemyTurn();
|
FreezeInterfaceForEnemyTurn();
|
||||||
|
|
||||||
// Loop through all mercs and set to moved
|
// Loop through all mercs and set to moved
|
||||||
cnt = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID;
|
||||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; cnt++,pSoldier++)
|
for ( ; cnt <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if ( pSoldier->bActive )
|
if ( pSoldier->bActive )
|
||||||
{
|
{
|
||||||
pSoldier->aiData.bMoved = TRUE;
|
pSoldier->aiData.bMoved = TRUE;
|
||||||
@@ -380,7 +377,6 @@ void EndAITurn( void )
|
|||||||
{
|
{
|
||||||
DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"EndAITurn");
|
DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"EndAITurn");
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
INT32 cnt;
|
|
||||||
|
|
||||||
// Remove any deadlock message
|
// Remove any deadlock message
|
||||||
EndDeadlockMsg( );
|
EndDeadlockMsg( );
|
||||||
@@ -395,9 +391,10 @@ void EndAITurn( void )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cnt = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID;
|
||||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; cnt++,pSoldier++)
|
for ( ; cnt <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if ( pSoldier->bActive )
|
if ( pSoldier->bActive )
|
||||||
{
|
{
|
||||||
pSoldier->aiData.bMoved = TRUE;
|
pSoldier->aiData.bMoved = TRUE;
|
||||||
@@ -417,7 +414,6 @@ void EndAllAITurns( void )
|
|||||||
DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"EndAllAITurns");
|
DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"EndAllAITurns");
|
||||||
// warp turn to the player's turn
|
// warp turn to the player's turn
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
INT32 cnt;
|
|
||||||
|
|
||||||
// Remove any deadlock message
|
// Remove any deadlock message
|
||||||
EndDeadlockMsg( );
|
EndDeadlockMsg( );
|
||||||
@@ -428,9 +424,10 @@ void EndAllAITurns( void )
|
|||||||
|
|
||||||
if ( gTacticalStatus.ubCurrentTeam != gbPlayerNum )
|
if ( gTacticalStatus.ubCurrentTeam != gbPlayerNum )
|
||||||
{
|
{
|
||||||
cnt = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID;
|
SoldierID id = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID;
|
||||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; cnt++,pSoldier++)
|
for ( ; id <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; ++id )
|
||||||
{
|
{
|
||||||
|
pSoldier = id;
|
||||||
if ( pSoldier->bActive )
|
if ( pSoldier->bActive )
|
||||||
{
|
{
|
||||||
pSoldier->aiData.bMoved = TRUE;
|
pSoldier->aiData.bMoved = TRUE;
|
||||||
@@ -463,9 +460,10 @@ void EndTurnEvents( void )
|
|||||||
DecaySmokeEffects( GetWorldTotalSeconds( ) );
|
DecaySmokeEffects( GetWorldTotalSeconds( ) );
|
||||||
|
|
||||||
SOLDIERTYPE* pSoldier = NULL;
|
SOLDIERTYPE* pSoldier = NULL;
|
||||||
UINT32 cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
SoldierID id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt, ++pSoldier)
|
for ( ; id <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++id )
|
||||||
{
|
{
|
||||||
|
pSoldier = id;
|
||||||
if ( pSoldier->bActive && pSoldier->stats.bLife > 0 )//&& !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && !( AM_A_ROBOT( pSoldier ) ) )
|
if ( pSoldier->bActive && pSoldier->stats.bLife > 0 )//&& !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && !( AM_A_ROBOT( pSoldier ) ) )
|
||||||
{
|
{
|
||||||
// Flugente: update multi-turn actions
|
// Flugente: update multi-turn actions
|
||||||
@@ -505,8 +503,6 @@ BOOLEAN LightningEndOfTurn( UINT8 ubTeam );
|
|||||||
void BeginTeamTurn( UINT8 ubTeam )
|
void BeginTeamTurn( UINT8 ubTeam )
|
||||||
{
|
{
|
||||||
DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"BeginTeamTurn");
|
DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"BeginTeamTurn");
|
||||||
INT32 cnt;
|
|
||||||
SoldierID ubID;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
|
|
||||||
//rain
|
//rain
|
||||||
@@ -573,9 +569,10 @@ void BeginTeamTurn( UINT8 ubTeam )
|
|||||||
// decay team's public opplist
|
// decay team's public opplist
|
||||||
DecayPublicOpplist( ubTeam );
|
DecayPublicOpplist( ubTeam );
|
||||||
|
|
||||||
cnt = gTacticalStatus.Team[ ubTeam ].bFirstID;
|
SoldierID id = gTacticalStatus.Team[ ubTeam ].bFirstID;
|
||||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ ubTeam ].bLastID; cnt++,pSoldier++)
|
for ( ; id <= gTacticalStatus.Team[ ubTeam ].bLastID; ++id )
|
||||||
{
|
{
|
||||||
|
pSoldier = id;
|
||||||
if ( pSoldier->bActive && pSoldier->stats.bLife > 0)
|
if ( pSoldier->bActive && pSoldier->stats.bLife > 0)
|
||||||
{
|
{
|
||||||
// decay personal opplist, and refresh APs and BPs
|
// decay personal opplist, and refresh APs and BPs
|
||||||
@@ -644,7 +641,7 @@ void BeginTeamTurn( UINT8 ubTeam )
|
|||||||
if ( BuildAIListForTeam( ubTeam ) )
|
if ( BuildAIListForTeam( ubTeam ) )
|
||||||
{
|
{
|
||||||
|
|
||||||
ubID = RemoveFirstAIListEntry();
|
SoldierID ubID = RemoveFirstAIListEntry();
|
||||||
if (ubID != NOBODY)
|
if (ubID != NOBODY)
|
||||||
{
|
{
|
||||||
// Dirty panel interface!
|
// Dirty panel interface!
|
||||||
@@ -810,11 +807,11 @@ BOOLEAN EveryoneInInterruptListOnSameTeam( void )
|
|||||||
|
|
||||||
void StartInterrupt( void )
|
void StartInterrupt( void )
|
||||||
{
|
{
|
||||||
UINT16 ubFirstInterrupter;
|
|
||||||
INT8 bTeam;
|
INT8 bTeam;
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
SOLDIERTYPE *pTempSoldier;
|
SOLDIERTYPE *pTempSoldier;
|
||||||
UINT16 ubInterrupter;
|
SoldierID ubFirstInterrupter;
|
||||||
|
SoldierID ubInterrupter;
|
||||||
INT32 cnt;
|
INT32 cnt;
|
||||||
|
|
||||||
DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"StartInterrupt");
|
DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"StartInterrupt");
|
||||||
@@ -837,9 +834,9 @@ void StartInterrupt( void )
|
|||||||
|
|
||||||
gTacticalStatus.fInterruptOccurred = TRUE;
|
gTacticalStatus.fInterruptOccurred = TRUE;
|
||||||
|
|
||||||
cnt = 0;
|
for ( SoldierID id = 0; id < MAX_NUM_SOLDIERS; ++id )
|
||||||
for ( pTempSoldier = MercPtrs[ cnt ]; cnt < MAX_NUM_SOLDIERS; cnt++,pTempSoldier++)
|
|
||||||
{
|
{
|
||||||
|
pTempSoldier = id;
|
||||||
if ( pTempSoldier->bActive )
|
if ( pTempSoldier->bActive )
|
||||||
{
|
{
|
||||||
pTempSoldier->bMovedPriorToInterrupt = pTempSoldier->aiData.bMoved;
|
pTempSoldier->bMovedPriorToInterrupt = pTempSoldier->aiData.bMoved;
|
||||||
@@ -862,7 +859,7 @@ void StartInterrupt( void )
|
|||||||
//while( 1 )
|
//while( 1 )
|
||||||
for( iCounter = 0; iCounter < MAX_NUM_SOLDIERS; iCounter++ )
|
for( iCounter = 0; iCounter < MAX_NUM_SOLDIERS; iCounter++ )
|
||||||
{
|
{
|
||||||
MercPtrs[ubInterrupter]->aiData.bMoved = FALSE;
|
ubInterrupter->aiData.bMoved = FALSE;
|
||||||
DebugMsg( TOPIC_JA2INTERRUPT, DBG_LEVEL_3, String("INTERRUPT: popping %d off of the interrupt queue", ubInterrupter ) );
|
DebugMsg( TOPIC_JA2INTERRUPT, DBG_LEVEL_3, String("INTERRUPT: popping %d off of the interrupt queue", ubInterrupter ) );
|
||||||
|
|
||||||
REMOVE_LATEST_INTERRUPT_GUY();
|
REMOVE_LATEST_INTERRUPT_GUY();
|
||||||
@@ -873,7 +870,7 @@ void StartInterrupt( void )
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if (MercPtrs[ubInterrupter]->bTeam != bTeam)
|
else if (ubInterrupter->bTeam != bTeam)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -891,7 +888,7 @@ void StartInterrupt( void )
|
|||||||
handleInterrupt = FALSE;
|
handleInterrupt = FALSE;
|
||||||
|
|
||||||
// build string in separate loop here, want to linearly process squads...
|
// build string in separate loop here, want to linearly process squads...
|
||||||
SOLDIERTYPE *pInterruptedSoldier = MercPtrs[ubInterrupter];
|
SOLDIERTYPE *pInterruptedSoldier = ubInterrupter;
|
||||||
for ( iSquad = 0; iSquad < NUMBER_OF_SQUADS; iSquad++ )
|
for ( iSquad = 0; iSquad < NUMBER_OF_SQUADS; iSquad++ )
|
||||||
{
|
{
|
||||||
for ( iCounter = 0; iCounter < NUMBER_OF_SOLDIERS_PER_SQUAD; iCounter++ )
|
for ( iCounter = 0; iCounter < NUMBER_OF_SOLDIERS_PER_SQUAD; iCounter++ )
|
||||||
@@ -981,9 +978,9 @@ void StartInterrupt( void )
|
|||||||
PlayJA2Sample( ENDTURN_1, RATE_11025, MIDVOLUME, 1, MIDDLEPAN );
|
PlayJA2Sample( ENDTURN_1, RATE_11025, MIDVOLUME, 1, MIDDLEPAN );
|
||||||
|
|
||||||
// report any close call quotes for us here
|
// report any close call quotes for us here
|
||||||
for ( iCounter = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; iCounter <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; iCounter++ )
|
for ( SoldierID id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; id <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++id )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pSoldier = MercPtrs[iCounter];
|
SOLDIERTYPE *pSoldier = id;
|
||||||
|
|
||||||
if ( OK_INSECTOR_MERC( pSoldier ) )
|
if ( OK_INSECTOR_MERC( pSoldier ) )
|
||||||
{
|
{
|
||||||
@@ -1022,7 +1019,7 @@ void StartInterrupt( void )
|
|||||||
UINT16 usCounter;
|
UINT16 usCounter;
|
||||||
for( usCounter = 0; usCounter < MAX_NUM_SOLDIERS; usCounter++ )
|
for( usCounter = 0; usCounter < MAX_NUM_SOLDIERS; usCounter++ )
|
||||||
{
|
{
|
||||||
MercPtrs[ubInterrupter]->aiData.bMoved = FALSE;
|
ubInterrupter->aiData.bMoved = FALSE;
|
||||||
|
|
||||||
DebugMsg( TOPIC_JA2INTERRUPT, DBG_LEVEL_3, String("INTERRUPT: popping %d off of the interrupt queue", ubInterrupter ) );
|
DebugMsg( TOPIC_JA2INTERRUPT, DBG_LEVEL_3, String("INTERRUPT: popping %d off of the interrupt queue", ubInterrupter ) );
|
||||||
|
|
||||||
@@ -1033,7 +1030,7 @@ void StartInterrupt( void )
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if (MercPtrs[ubInterrupter]->bTeam != bTeam)
|
else if (ubInterrupter->bTeam != bTeam)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1047,12 +1044,12 @@ void StartInterrupt( void )
|
|||||||
BuildAIListForTeam( bTeam );
|
BuildAIListForTeam( bTeam );
|
||||||
|
|
||||||
// set to the new first interrupter
|
// set to the new first interrupter
|
||||||
cnt = RemoveFirstAIListEntry();
|
SoldierID id = RemoveFirstAIListEntry();
|
||||||
|
|
||||||
// sevenfm: RemoveFirstAIListEntry() can return NOBODY
|
// sevenfm: RemoveFirstAIListEntry() can return NOBODY
|
||||||
if( cnt != NOBODY )
|
if( id != NOBODY )
|
||||||
{
|
{
|
||||||
pTempSoldier = MercPtrs[ cnt ];
|
pTempSoldier = id;
|
||||||
|
|
||||||
// sevenfm: don't do anything if pTempSoldier is NULL
|
// sevenfm: don't do anything if pTempSoldier is NULL
|
||||||
if( pTempSoldier != NULL )
|
if( pTempSoldier != NULL )
|
||||||
@@ -1117,16 +1114,15 @@ void StartInterrupt( void )
|
|||||||
|
|
||||||
void EndInterrupt( BOOLEAN fMarkInterruptOccurred )
|
void EndInterrupt( BOOLEAN fMarkInterruptOccurred )
|
||||||
{
|
{
|
||||||
UINT16 ubInterruptedSoldier;
|
SoldierID ubInterruptedSoldier;
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
SOLDIERTYPE *pTempSoldier;
|
SOLDIERTYPE *pTempSoldier;
|
||||||
INT32 cnt;
|
|
||||||
BOOLEAN fFound;
|
BOOLEAN fFound;
|
||||||
INT16 ubMinAPsToAttack;
|
INT16 ubMinAPsToAttack;
|
||||||
|
|
||||||
DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"EndInterrupt");
|
DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"EndInterrupt");
|
||||||
|
|
||||||
for ( cnt = gubOutOfTurnPersons; cnt > 0; cnt-- )
|
for ( UINT16 cnt = gubOutOfTurnPersons; cnt > 0; cnt-- )
|
||||||
{
|
{
|
||||||
DebugMsg( TOPIC_JA2INTERRUPT, DBG_LEVEL_3, String("ENDINT: Q position %d: %d", cnt, gubOutOfTurnOrder[ cnt ] ) );
|
DebugMsg( TOPIC_JA2INTERRUPT, DBG_LEVEL_3, String("ENDINT: Q position %d: %d", cnt, gubOutOfTurnOrder[ cnt ] ) );
|
||||||
}
|
}
|
||||||
@@ -1144,9 +1140,10 @@ void EndInterrupt( BOOLEAN fMarkInterruptOccurred )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Loop through all mercs and see if any passed on this interrupt
|
// Loop through all mercs and see if any passed on this interrupt
|
||||||
cnt = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID;
|
SoldierID id = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID;
|
||||||
for ( pTempSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; cnt++,pTempSoldier++)
|
for ( ; id <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; ++id )
|
||||||
{
|
{
|
||||||
|
pTempSoldier = id;
|
||||||
if ( pTempSoldier->bActive && pTempSoldier->bInSector && !pTempSoldier->aiData.bMoved && (pTempSoldier->bActionPoints == pTempSoldier->aiData.bIntStartAPs))
|
if ( pTempSoldier->bActive && pTempSoldier->bInSector && !pTempSoldier->aiData.bMoved && (pTempSoldier->bActionPoints == pTempSoldier->aiData.bIntStartAPs))
|
||||||
{
|
{
|
||||||
ubMinAPsToAttack = MinAPsToAttack( pTempSoldier, pTempSoldier->sLastTarget, FALSE, 0 );
|
ubMinAPsToAttack = MinAPsToAttack( pTempSoldier, pTempSoldier->sLastTarget, FALSE, 0 );
|
||||||
@@ -1169,12 +1166,12 @@ void EndInterrupt( BOOLEAN fMarkInterruptOccurred )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UINT16 nubFirstInterrupter;
|
SoldierID nubFirstInterrupter;
|
||||||
INT8 nbTeam;
|
INT8 nbTeam;
|
||||||
SOLDIERTYPE *npSoldier;
|
SOLDIERTYPE *npSoldier;
|
||||||
|
|
||||||
nubFirstInterrupter = LATEST_INTERRUPT_GUY;
|
nubFirstInterrupter = LATEST_INTERRUPT_GUY;
|
||||||
npSoldier = MercPtrs[nubFirstInterrupter];
|
npSoldier = nubFirstInterrupter;
|
||||||
nbTeam = npSoldier->bTeam;
|
nbTeam = npSoldier->bTeam;
|
||||||
|
|
||||||
//pSoldier is interrupted //but its not available //needs calculating
|
//pSoldier is interrupted //but its not available //needs calculating
|
||||||
@@ -1228,11 +1225,11 @@ void EndInterrupt( BOOLEAN fMarkInterruptOccurred )
|
|||||||
|
|
||||||
DebugMsg( TOPIC_JA2INTERRUPT, DBG_LEVEL_3, String("INTERRUPT: interrupt over, %d's team regains control", ubInterruptedSoldier ) );
|
DebugMsg( TOPIC_JA2INTERRUPT, DBG_LEVEL_3, String("INTERRUPT: interrupt over, %d's team regains control", ubInterruptedSoldier ) );
|
||||||
|
|
||||||
pSoldier = MercPtrs[ubInterruptedSoldier];
|
pSoldier = ubInterruptedSoldier;
|
||||||
|
|
||||||
cnt = 0;
|
for ( SoldierID id = 0; id < MAX_NUM_SOLDIERS; ++id)
|
||||||
for ( pTempSoldier = MercPtrs[ cnt ]; cnt < MAX_NUM_SOLDIERS; cnt++,pTempSoldier++)
|
|
||||||
{
|
{
|
||||||
|
pTempSoldier = id;
|
||||||
if ( pTempSoldier->bActive )
|
if ( pTempSoldier->bActive )
|
||||||
{
|
{
|
||||||
// AI guys only here...
|
// AI guys only here...
|
||||||
@@ -1371,9 +1368,10 @@ void EndInterrupt( BOOLEAN fMarkInterruptOccurred )
|
|||||||
fFound = FALSE;
|
fFound = FALSE;
|
||||||
|
|
||||||
// rebuild list for this team if anyone on the team is still available
|
// rebuild list for this team if anyone on the team is still available
|
||||||
cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID;
|
SoldierID id = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID;
|
||||||
for ( pTempSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; cnt++,pTempSoldier++)
|
for ( ; id <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; ++id )
|
||||||
{
|
{
|
||||||
|
pTempSoldier = id;
|
||||||
if ( pTempSoldier->bActive && pTempSoldier->bInSector && pTempSoldier->stats.bLife >= OKLIFE )
|
if ( pTempSoldier->bActive && pTempSoldier->bInSector && pTempSoldier->stats.bLife >= OKLIFE )
|
||||||
{
|
{
|
||||||
fFound = TRUE;
|
fFound = TRUE;
|
||||||
@@ -1390,16 +1388,16 @@ void EndInterrupt( BOOLEAN fMarkInterruptOccurred )
|
|||||||
{
|
{
|
||||||
// now bubble up everyone left in the interrupt queue, starting
|
// now bubble up everyone left in the interrupt queue, starting
|
||||||
// at the front of the array
|
// at the front of the array
|
||||||
for (cnt = 1; cnt <= gubOutOfTurnPersons; cnt++)
|
for (UINT16 cnt = 1; cnt <= gubOutOfTurnPersons; cnt++)
|
||||||
{
|
{
|
||||||
MoveToFrontOfAIList( gubOutOfTurnOrder[ cnt ] );
|
MoveToFrontOfAIList( gubOutOfTurnOrder[ cnt ] );
|
||||||
}
|
}
|
||||||
|
|
||||||
cnt = RemoveFirstAIListEntry();
|
SoldierID id = RemoveFirstAIListEntry();
|
||||||
if (cnt != NOBODY)
|
if (id != NOBODY)
|
||||||
{
|
{
|
||||||
fFound = TRUE;
|
fFound = TRUE;
|
||||||
StartNPCAI( MercPtrs[ cnt ] );
|
StartNPCAI( id );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2382,7 +2380,7 @@ void ResolveInterruptsVs( SOLDIERTYPE * pSoldier, UINT8 ubInterruptType)
|
|||||||
{
|
{
|
||||||
DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,String("ResolveInterruptsVs: Soldier ID = %d, APs = %d (interrupt type = %d)",pSoldier->ubID,pSoldier->bActionPoints, ubInterruptType));
|
DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,String("ResolveInterruptsVs: Soldier ID = %d, APs = %d (interrupt type = %d)",pSoldier->ubID,pSoldier->bActionPoints, ubInterruptType));
|
||||||
UINT8 ubTeam;
|
UINT8 ubTeam;
|
||||||
UINT16 ubOpp;
|
SoldierID ubOpp;
|
||||||
UINT16 ubIntCnt;
|
UINT16 ubIntCnt;
|
||||||
UINT16 ubIntList[MAXMERCS];
|
UINT16 ubIntList[MAXMERCS];
|
||||||
UINT8 ubIntDiff[MAXMERCS];
|
UINT8 ubIntDiff[MAXMERCS];
|
||||||
@@ -2404,9 +2402,9 @@ void ResolveInterruptsVs( SOLDIERTYPE * pSoldier, UINT8 ubInterruptType)
|
|||||||
// WDS fix broken interrupts (I hope...)
|
// WDS fix broken interrupts (I hope...)
|
||||||
if (/*gTacticalStatus.Team[ubTeam].bTeamActive &&*/ (gTacticalStatus.Team[ubTeam].bSide != pSoldier->bSide) && ubTeam != CIV_TEAM)
|
if (/*gTacticalStatus.Team[ubTeam].bTeamActive &&*/ (gTacticalStatus.Team[ubTeam].bSide != pSoldier->bSide) && ubTeam != CIV_TEAM)
|
||||||
{
|
{
|
||||||
for ( ubOpp = gTacticalStatus.Team[ ubTeam ].bFirstID; ubOpp <= gTacticalStatus.Team[ ubTeam ].bLastID; ubOpp++)
|
for ( ubOpp = gTacticalStatus.Team[ ubTeam ].bFirstID; ubOpp <= gTacticalStatus.Team[ ubTeam ].bLastID; ++ubOpp)
|
||||||
{
|
{
|
||||||
pOpponent = MercPtrs[ubOpp];
|
pOpponent = ubOpp;
|
||||||
AssertNotNIL(pOpponent);
|
AssertNotNIL(pOpponent);
|
||||||
if ( pOpponent->bActive && pOpponent->bInSector && (pOpponent->stats.bLife >= OKLIFE) && (pOpponent->bBreath >= OKBREATH) && !(pOpponent->bCollapsed) )
|
if ( pOpponent->bActive && pOpponent->bInSector && (pOpponent->stats.bLife >= OKLIFE) && (pOpponent->bBreath >= OKBREATH) && !(pOpponent->bCollapsed) )
|
||||||
{
|
{
|
||||||
@@ -2519,17 +2517,16 @@ void ResolveInterruptsVs( SOLDIERTYPE * pSoldier, UINT8 ubInterruptType)
|
|||||||
{
|
{
|
||||||
// if anyone on this team is under AI control, remove
|
// if anyone on this team is under AI control, remove
|
||||||
// their AI control flag and put them on the queue instead of this guy
|
// their AI control flag and put them on the queue instead of this guy
|
||||||
for ( ubLoop = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID; ubLoop <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; ubLoop++ )
|
for ( SoldierID id = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID; id <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; ++id)
|
||||||
{
|
{
|
||||||
if ( (MercPtrs[ ubLoop ]->flags.uiStatusFlags & SOLDIER_UNDERAICONTROL) )
|
if ( id->flags.uiStatusFlags & SOLDIER_UNDERAICONTROL)
|
||||||
{
|
{
|
||||||
// this guy lost control
|
// this guy lost control
|
||||||
MercPtrs[ ubLoop ]->flags.uiStatusFlags &= (~SOLDIER_UNDERAICONTROL);
|
id->flags.uiStatusFlags &= (~SOLDIER_UNDERAICONTROL);
|
||||||
AddToIntList( ubLoop, FALSE, TRUE);
|
AddToIntList( id, FALSE, TRUE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2209,9 +2209,10 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
|
|||||||
// sevenfm: unready weapon for all selected
|
// sevenfm: unready weapon for all selected
|
||||||
if (!fFound)
|
if (!fFound)
|
||||||
{
|
{
|
||||||
UINT16 cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||||
for (SOLDIERTYPE *pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; cnt++, pSoldier++)
|
for (; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
SOLDIERTYPE *pSoldier = cnt;
|
||||||
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED && WeaponReady(pSoldier))
|
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED && WeaponReady(pSoldier))
|
||||||
{
|
{
|
||||||
pSoldier->InternalSoldierReadyWeapon(pSoldier->ubDirection, TRUE, FALSE);
|
pSoldier->InternalSoldierReadyWeapon(pSoldier->ubDirection, TRUE, FALSE);
|
||||||
@@ -4125,14 +4126,16 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
|
|||||||
|
|
||||||
// swap sungoggles and nightgoggles / put on gas masks
|
// swap sungoggles and nightgoggles / put on gas masks
|
||||||
case 'N':
|
case 'N':
|
||||||
|
{
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
UINT16 bLoop;
|
SoldierID id;
|
||||||
|
|
||||||
// emergency command: everybody in this sector puts on gasmasks
|
// emergency command: everybody in this sector puts on gasmasks
|
||||||
if ( fAlt )
|
if ( fAlt )
|
||||||
{
|
{
|
||||||
for ( bLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier = MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++ )
|
for ( id = gTacticalStatus.Team[gbPlayerNum].bFirstID; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = id;
|
||||||
if ( !AM_A_ROBOT( pTeamSoldier ) && pTeamSoldier->stats.bLife >= OKLIFE && (pTeamSoldier->sSectorX == gWorldSectorX) && (pTeamSoldier->sSectorY == gWorldSectorY) && (pTeamSoldier->bSectorZ == gbWorldSectorZ) )
|
if ( !AM_A_ROBOT( pTeamSoldier ) && pTeamSoldier->stats.bLife >= OKLIFE && (pTeamSoldier->sSectorX == gWorldSectorX) && (pTeamSoldier->sSectorY == gWorldSectorY) && (pTeamSoldier->bSectorZ == gbWorldSectorZ) )
|
||||||
{
|
{
|
||||||
WearGasMaskIfAvailable( pTeamSoldier );
|
WearGasMaskIfAvailable( pTeamSoldier );
|
||||||
@@ -4149,8 +4152,9 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
|
|||||||
{
|
{
|
||||||
BOOLEAN fToNightVision;
|
BOOLEAN fToNightVision;
|
||||||
|
|
||||||
for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++)
|
for ( id = gTacticalStatus.Team[gbPlayerNum].bFirstID; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = id;
|
||||||
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad() && !AM_A_ROBOT( pTeamSoldier ) )
|
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad() && !AM_A_ROBOT( pTeamSoldier ) )
|
||||||
{
|
{
|
||||||
if ( pTeamSoldier->inv[HEAD1POS].exists() || pTeamSoldier->inv[HEAD2POS].exists() )
|
if ( pTeamSoldier->inv[HEAD1POS].exists() || pTeamSoldier->inv[HEAD2POS].exists() )
|
||||||
@@ -4158,15 +4162,16 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
|
|||||||
fToNightVision = (Item[pTeamSoldier->inv[HEAD1POS].usItem].brightlightvisionrangebonus > 0 || Item[pTeamSoldier->inv[HEAD2POS].usItem].brightlightvisionrangebonus > 0);
|
fToNightVision = (Item[pTeamSoldier->inv[HEAD1POS].usItem].brightlightvisionrangebonus > 0 || Item[pTeamSoldier->inv[HEAD2POS].usItem].brightlightvisionrangebonus > 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ( bLoop == gTacticalStatus.Team[gbPlayerNum].bLastID )
|
if ( id == gTacticalStatus.Team[gbPlayerNum].bLastID )
|
||||||
{
|
{
|
||||||
// Default to night or day based on game hour
|
// Default to night or day based on game hour
|
||||||
fToNightVision = NightTime();
|
fToNightVision = NightTime();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++)
|
for ( id = gTacticalStatus.Team[gbPlayerNum].bFirstID; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = id;
|
||||||
// HEADROCK HAM 3.5: When this INI setting is enabled, ALL mercs in the current sector will do a goggle swap.
|
// HEADROCK HAM 3.5: When this INI setting is enabled, ALL mercs in the current sector will do a goggle swap.
|
||||||
if ( gGameExternalOptions.fGoggleSwapAffectsAllMercsInSector )
|
if ( gGameExternalOptions.fGoggleSwapAffectsAllMercsInSector )
|
||||||
{
|
{
|
||||||
@@ -4189,7 +4194,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
|
|||||||
HandleTBSwapGoogles();
|
HandleTBSwapGoogles();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case 'n':
|
case 'n':
|
||||||
if ( !AreInMeanwhile() )
|
if ( !AreInMeanwhile() )
|
||||||
{
|
{
|
||||||
@@ -6271,7 +6276,6 @@ void HandleSelectMercSlot( UINT8 ubPanelSlot, INT8 bCode )
|
|||||||
void TestMeanWhile( INT32 iID )
|
void TestMeanWhile( INT32 iID )
|
||||||
{
|
{
|
||||||
MEANWHILE_DEFINITION MeanwhileDef;
|
MEANWHILE_DEFINITION MeanwhileDef;
|
||||||
INT32 cnt;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
|
|
||||||
MeanwhileDef.sSectorX = gModSettings.ubMeanwhilePalaceSectorX; //3
|
MeanwhileDef.sSectorX = gModSettings.ubMeanwhilePalaceSectorX; //3
|
||||||
@@ -6288,10 +6292,11 @@ void TestMeanWhile( INT32 iID )
|
|||||||
|
|
||||||
// Loop through our mercs and set gridnos once some found.....
|
// Loop through our mercs and set gridnos once some found.....
|
||||||
// look for all mercs on the same team,
|
// look for all mercs on the same team,
|
||||||
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;
|
||||||
// Are we a POW in this sector?
|
// Are we a POW in this sector?
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector )
|
if ( pSoldier->bActive && pSoldier->bInSector )
|
||||||
{
|
{
|
||||||
@@ -6363,16 +6368,16 @@ void HandleStanceChangeFromUIKeys( UINT8 ubAnimHeight )
|
|||||||
{
|
{
|
||||||
// If we have multiple guys selected, make all change stance!
|
// If we have multiple guys selected, make all change stance!
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
INT32 cnt;
|
|
||||||
|
|
||||||
if ( gTacticalStatus.fAtLeastOneGuyOnMultiSelect && !( gTacticalStatus.uiFlags & INCOMBAT ) )
|
if ( gTacticalStatus.fAtLeastOneGuyOnMultiSelect && !( gTacticalStatus.uiFlags & INCOMBAT ) )
|
||||||
{
|
{
|
||||||
// OK, loop through all guys who are 'multi-selected' and
|
// OK, loop through all guys who are 'multi-selected' and
|
||||||
// check if our currently selected guy is amoung the
|
// check if our currently selected guy is amoung the
|
||||||
// lucky few.. if not, change to a guy who is...
|
// lucky few.. if not, change to a guy who is...
|
||||||
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 )
|
||||||
@@ -6485,16 +6490,16 @@ void HandleStealthChangeFromUIKeys( )
|
|||||||
{
|
{
|
||||||
// If we have multiple guys selected, make all change stance!
|
// If we have multiple guys selected, make all change stance!
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
INT32 cnt;
|
|
||||||
|
|
||||||
if ( gTacticalStatus.fAtLeastOneGuyOnMultiSelect && !( gTacticalStatus.uiFlags & INCOMBAT ) )
|
if ( gTacticalStatus.fAtLeastOneGuyOnMultiSelect && !( gTacticalStatus.uiFlags & INCOMBAT ) )
|
||||||
{
|
{
|
||||||
// OK, loop through all guys who are 'multi-selected' and
|
// OK, loop through all guys who are 'multi-selected' and
|
||||||
// check if our currently selected guy is amoung the
|
// check if our currently selected guy is amoung the
|
||||||
// lucky few.. if not, change to a guy who is...
|
// lucky few.. if not, change to a guy who is...
|
||||||
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 && !AM_A_ROBOT( pSoldier ) && pSoldier->bInSector )
|
if ( pSoldier->bActive && !AM_A_ROBOT( pSoldier ) && pSoldier->bInSector )
|
||||||
{
|
{
|
||||||
if ( pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED )
|
if ( pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED )
|
||||||
@@ -7682,12 +7687,13 @@ void HandleTBToggleStealthAll( void )
|
|||||||
// Toggle squad's stealth mode.....
|
// Toggle squad's stealth mode.....
|
||||||
// For each guy on squad...
|
// For each guy on squad...
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
UINT16 bLoop;
|
SoldierID bLoop;
|
||||||
BOOLEAN fStealthOn = FALSE;
|
BOOLEAN fStealthOn = FALSE;
|
||||||
|
|
||||||
// Check if at least one guy is on stealth....
|
// Check if at least one guy is on stealth....
|
||||||
for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++)
|
for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = bLoop;
|
||||||
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) )
|
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) )
|
||||||
{
|
{
|
||||||
if ( pTeamSoldier->bStealthMode )
|
if ( pTeamSoldier->bStealthMode )
|
||||||
@@ -7697,8 +7703,9 @@ void HandleTBToggleStealthAll( void )
|
|||||||
|
|
||||||
fStealthOn = !fStealthOn;
|
fStealthOn = !fStealthOn;
|
||||||
|
|
||||||
for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++)
|
for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = bLoop;
|
||||||
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) && !AM_A_ROBOT( pTeamSoldier ) )
|
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) && !AM_A_ROBOT( pTeamSoldier ) )
|
||||||
{
|
{
|
||||||
if ( gpSMCurrentMerc != NULL && bLoop == gpSMCurrentMerc->ubID )
|
if ( gpSMCurrentMerc != NULL && bLoop == gpSMCurrentMerc->ubID )
|
||||||
@@ -7715,6 +7722,7 @@ void HandleTBToggleStealthAll( void )
|
|||||||
else
|
else
|
||||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_SQUAD_OFF_STEALTHMODE ] );
|
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_SQUAD_OFF_STEALTHMODE ] );
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleTBToggleFireMode( void )
|
void HandleTBToggleFireMode( void )
|
||||||
{
|
{
|
||||||
// toggle fire mode
|
// toggle fire mode
|
||||||
@@ -7722,15 +7730,14 @@ void HandleTBToggleFireMode( void )
|
|||||||
( ( gsCurInterfacePanel != SM_PANEL ) || ( ButtonList[ iSMPanelButtons[ BURSTMODE_BUTTON ] ]->uiFlags & BUTTON_ENABLED ) ) )
|
( ( gsCurInterfacePanel != SM_PANEL ) || ( ButtonList[ iSMPanelButtons[ BURSTMODE_BUTTON ] ]->uiFlags & BUTTON_ENABLED ) ) )
|
||||||
SetBurstMode();
|
SetBurstMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleTBSelectAllMercs( void )
|
void HandleTBSelectAllMercs( void )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
INT32 cnt;
|
SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||||
|
for ( ; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt )
|
||||||
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
|
||||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++, pSoldier++ )
|
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
// Check if this guy is OK to control....
|
// Check if this guy is OK to control....
|
||||||
if ( OK_CONTROLLABLE_MERC( pSoldier ) && !(pSoldier->flags.uiStatusFlags & (SOLDIER_VEHICLE | SOLDIER_PASSENGER | SOLDIER_DRIVER)) )
|
if ( OK_CONTROLLABLE_MERC( pSoldier ) && !(pSoldier->flags.uiStatusFlags & (SOLDIER_VEHICLE | SOLDIER_PASSENGER | SOLDIER_DRIVER)) )
|
||||||
{
|
{
|
||||||
@@ -7739,6 +7746,7 @@ void HandleTBSelectAllMercs( void )
|
|||||||
}
|
}
|
||||||
EndMultiSoldierSelection( TRUE );
|
EndMultiSoldierSelection( TRUE );
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleTBCycleThroughKnownEnemies( void )
|
void HandleTBCycleThroughKnownEnemies( void )
|
||||||
{
|
{
|
||||||
if ( gTacticalStatus.uiFlags & TURNBASED && (gTacticalStatus.uiFlags & INCOMBAT) )
|
if ( gTacticalStatus.uiFlags & TURNBASED && (gTacticalStatus.uiFlags & INCOMBAT) )
|
||||||
@@ -7747,6 +7755,7 @@ void HandleTBCycleThroughKnownEnemies( void )
|
|||||||
CycleThroughKnownEnemies( );
|
CycleThroughKnownEnemies( );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleTBCycleThroughKnownEnemiesBackward( void )
|
void HandleTBCycleThroughKnownEnemiesBackward( void )
|
||||||
{
|
{
|
||||||
if ( gTacticalStatus.uiFlags & TURNBASED && (gTacticalStatus.uiFlags & INCOMBAT) )
|
if ( gTacticalStatus.uiFlags & TURNBASED && (gTacticalStatus.uiFlags & INCOMBAT) )
|
||||||
@@ -7755,6 +7764,7 @@ void HandleTBCycleThroughKnownEnemiesBackward( void )
|
|||||||
CycleThroughKnownEnemies( TRUE );
|
CycleThroughKnownEnemies( TRUE );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleTBCycleThroughVisibleEnemies( void )
|
void HandleTBCycleThroughVisibleEnemies( void )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
@@ -7848,10 +7858,10 @@ void HandleTBSwapSidearm( void )
|
|||||||
void HandleTBSwapGoogles( void )
|
void HandleTBSwapGoogles( void )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
UINT16 bLoop;
|
|
||||||
|
|
||||||
for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++)
|
for ( SoldierID bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = bLoop;
|
||||||
// HEADROCK HAM 3.5: When this INI setting is enabled, ALL mercs in the current sector will do a goggle swap.
|
// HEADROCK HAM 3.5: When this INI setting is enabled, ALL mercs in the current sector will do a goggle swap.
|
||||||
if (gGameExternalOptions.fGoggleSwapAffectsAllMercsInSector)
|
if (gGameExternalOptions.fGoggleSwapAffectsAllMercsInSector)
|
||||||
{
|
{
|
||||||
@@ -7948,13 +7958,14 @@ void HandleTBReloadAll( void )
|
|||||||
if ( !(gTacticalStatus.fEnemyInSector) )
|
if ( !(gTacticalStatus.fEnemyInSector) )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
UINT16 bLoop;
|
SoldierID bLoop;
|
||||||
UINT16 bullets;
|
UINT16 bullets;
|
||||||
OBJECTTYPE *pGun, *pAmmo, *pAmmoMags;
|
OBJECTTYPE *pGun, *pAmmo, *pAmmoMags;
|
||||||
|
|
||||||
// Search for soldier
|
// Search for soldier
|
||||||
for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++)
|
for ( bLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = bLoop;
|
||||||
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad() && !AM_A_ROBOT( pTeamSoldier ) )
|
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad() && !AM_A_ROBOT( pTeamSoldier ) )
|
||||||
{
|
{
|
||||||
// Search for gun in soldier inventory
|
// Search for gun in soldier inventory
|
||||||
@@ -8011,8 +8022,9 @@ void HandleTBReloadAll( void )
|
|||||||
}
|
}
|
||||||
|
|
||||||
//MM: loop thru the soldiers again (lazy copy/paste :p). could do it all at once, but then there may not be enough ammo from the world items to fill everyone's guns first
|
//MM: loop thru the soldiers again (lazy copy/paste :p). could do it all at once, but then there may not be enough ammo from the world items to fill everyone's guns first
|
||||||
for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++)
|
for ( bLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = bLoop;
|
||||||
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad() && !AM_A_ROBOT( pTeamSoldier ) )
|
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad() && !AM_A_ROBOT( pTeamSoldier ) )
|
||||||
{
|
{
|
||||||
// Search for ammo in soldier inventory
|
// Search for ammo in soldier inventory
|
||||||
@@ -8151,11 +8163,12 @@ void HandleTBReloadAll( void )
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
UINT16 bLoop;
|
SoldierID bLoop;
|
||||||
OBJECTTYPE *pGun, *pAmmo;
|
OBJECTTYPE *pGun, *pAmmo;
|
||||||
|
|
||||||
for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop, pTeamSoldier++)
|
for ( bLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = bLoop;
|
||||||
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad() && !AM_A_ROBOT( pTeamSoldier ) )
|
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad() && !AM_A_ROBOT( pTeamSoldier ) )
|
||||||
{
|
{
|
||||||
if ( (Item[pTeamSoldier->inv[HANDPOS].usItem].usItemClass & (IC_GUN | IC_LAUNCHER)) )
|
if ( (Item[pTeamSoldier->inv[HANDPOS].usItem].usItemClass & (IC_GUN | IC_LAUNCHER)) )
|
||||||
@@ -8311,9 +8324,9 @@ void HandleTBBackpacks(void)
|
|||||||
bool backpackDropped = false;
|
bool backpackDropped = false;
|
||||||
SOLDIERTYPE* pTeamSoldier;
|
SOLDIERTYPE* pTeamSoldier;
|
||||||
|
|
||||||
for (UINT16 ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; ubLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ubLoop++)
|
for ( SoldierID ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; ubLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++ubLoop )
|
||||||
{
|
{
|
||||||
pTeamSoldier = MercPtrs[ubLoop];
|
pTeamSoldier = ubLoop;
|
||||||
|
|
||||||
if (OK_CONTROLLABLE_MERC(pTeamSoldier) && pTeamSoldier->flags.DropPackFlag)
|
if (OK_CONTROLLABLE_MERC(pTeamSoldier) && pTeamSoldier->flags.DropPackFlag)
|
||||||
{
|
{
|
||||||
@@ -8340,14 +8353,13 @@ void HandleTBDropBackpacks( void )
|
|||||||
{
|
{
|
||||||
//SOLDIERTYPE *pSoldier = gusSelectedSoldier;
|
//SOLDIERTYPE *pSoldier = gusSelectedSoldier;
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
UINT16 ubLoop;
|
|
||||||
|
|
||||||
INT16 sAPCost = APBPConstants[AP_BACK_PACK];
|
INT16 sAPCost = APBPConstants[AP_BACK_PACK];
|
||||||
INT32 iBPCost = APBPConstants[BP_BACK_PACK];
|
INT32 iBPCost = APBPConstants[BP_BACK_PACK];
|
||||||
|
|
||||||
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 )
|
||||||
{
|
{
|
||||||
pTeamSoldier=MercPtrs[ ubLoop ];
|
pTeamSoldier = ubLoop;
|
||||||
|
|
||||||
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) &&
|
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) &&
|
||||||
OK_INTERRUPT_MERC( pTeamSoldier ) &&
|
OK_INTERRUPT_MERC( pTeamSoldier ) &&
|
||||||
@@ -8378,14 +8390,13 @@ void HandleTBPickUpBackpacks( void )
|
|||||||
{
|
{
|
||||||
//SOLDIERTYPE *pSoldier = gusSelectedSoldier;
|
//SOLDIERTYPE *pSoldier = gusSelectedSoldier;
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
UINT16 ubLoop;
|
|
||||||
|
|
||||||
INT16 sAPCost = APBPConstants[AP_BACK_PACK];
|
INT16 sAPCost = APBPConstants[AP_BACK_PACK];
|
||||||
INT32 iBPCost = APBPConstants[BP_BACK_PACK];
|
INT32 iBPCost = APBPConstants[BP_BACK_PACK];
|
||||||
|
|
||||||
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 )
|
||||||
{
|
{
|
||||||
pTeamSoldier=MercPtrs[ubLoop];
|
pTeamSoldier = ubLoop;
|
||||||
|
|
||||||
if( OK_CONTROLLABLE_MERC( pTeamSoldier ) &&
|
if( OK_CONTROLLABLE_MERC( pTeamSoldier ) &&
|
||||||
OK_INTERRUPT_MERC( pTeamSoldier ) &&
|
OK_INTERRUPT_MERC( pTeamSoldier ) &&
|
||||||
@@ -9602,7 +9613,6 @@ void HandleTBPickUpBackpacks(BOOLEAN fAll)
|
|||||||
{
|
{
|
||||||
SOLDIERTYPE* pSoldier = NULL;
|
SOLDIERTYPE* pSoldier = NULL;
|
||||||
SOLDIERTYPE* pTeamSoldier;
|
SOLDIERTYPE* pTeamSoldier;
|
||||||
UINT16 ubLoop;
|
|
||||||
|
|
||||||
if (gusSelectedSoldier != NOBODY)
|
if (gusSelectedSoldier != NOBODY)
|
||||||
{
|
{
|
||||||
@@ -9612,9 +9622,9 @@ void HandleTBPickUpBackpacks(BOOLEAN fAll)
|
|||||||
INT16 sAPCost = APBPConstants[AP_BACK_PACK];
|
INT16 sAPCost = APBPConstants[AP_BACK_PACK];
|
||||||
INT32 iBPCost = APBPConstants[BP_BACK_PACK];
|
INT32 iBPCost = APBPConstants[BP_BACK_PACK];
|
||||||
|
|
||||||
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 )
|
||||||
{
|
{
|
||||||
pTeamSoldier = MercPtrs[ubLoop];
|
pTeamSoldier = ubLoop;
|
||||||
|
|
||||||
if (pTeamSoldier &&
|
if (pTeamSoldier &&
|
||||||
OK_CONTROLLABLE_MERC(pTeamSoldier) &&
|
OK_CONTROLLABLE_MERC(pTeamSoldier) &&
|
||||||
|
|||||||
@@ -1718,15 +1718,15 @@ BOOLEAN EnterVehicle( SOLDIERTYPE *pVehicle, SOLDIERTYPE *pSoldier, UINT8 ubSeat
|
|||||||
|
|
||||||
SOLDIERTYPE *GetVehicleSoldierPointerFromPassenger( SOLDIERTYPE *pSrcSoldier )
|
SOLDIERTYPE *GetVehicleSoldierPointerFromPassenger( SOLDIERTYPE *pSrcSoldier )
|
||||||
{
|
{
|
||||||
UINT32 cnt;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
|
|
||||||
// End the turn of player charactors
|
// End the turn of player charactors
|
||||||
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 ( pSoldier->bActive && pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE )
|
if ( pSoldier->bActive && pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE )
|
||||||
{
|
{
|
||||||
// Check ubID....
|
// Check ubID....
|
||||||
@@ -2906,14 +2906,12 @@ BOOLEAN SoldierMustDriveVehicle( SOLDIERTYPE *pSoldier, INT32 iVehicleId, BOOLEA
|
|||||||
|
|
||||||
BOOLEAN OnlythisCanDriveVehicle( SOLDIERTYPE *pthis, INT32 iVehicleId )
|
BOOLEAN OnlythisCanDriveVehicle( SOLDIERTYPE *pthis, INT32 iVehicleId )
|
||||||
{
|
{
|
||||||
INT32 iCounter = 0;
|
|
||||||
SOLDIERTYPE *pSoldier = NULL;
|
SOLDIERTYPE *pSoldier = NULL;
|
||||||
|
|
||||||
|
for( SoldierID id = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; id <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++id )
|
||||||
for( iCounter = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; iCounter <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; iCounter++ )
|
|
||||||
{
|
{
|
||||||
// get the current soldier
|
// get the current soldier
|
||||||
pSoldier = &Menptr[ iCounter ];
|
pSoldier = id;
|
||||||
|
|
||||||
// skip checking THIS soldier, we wanna know about everyone else
|
// skip checking THIS soldier, we wanna know about everyone else
|
||||||
if ( pSoldier == pthis )
|
if ( pSoldier == pthis )
|
||||||
|
|||||||
+34
-39
@@ -989,7 +989,6 @@ void HandleSight(SOLDIERTYPE *pSoldier, UINT8 ubSightFlags)
|
|||||||
|
|
||||||
void OurTeamRadiosRandomlyAbout(UINT16 ubAbout)
|
void OurTeamRadiosRandomlyAbout(UINT16 ubAbout)
|
||||||
{
|
{
|
||||||
INT32 iLoop;
|
|
||||||
// WDS - make number of mercenaries, etc. be configurable
|
// WDS - make number of mercenaries, etc. be configurable
|
||||||
INT16 radioCnt = 0,radioMan[CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS];
|
INT16 radioCnt = 0,radioMan[CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS];
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
@@ -1012,15 +1011,16 @@ INT16 radioCnt = 0,radioMan[CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS];
|
|||||||
|
|
||||||
|
|
||||||
// All mercs on our local team check if they should radio about him
|
// All mercs on our local team check if they should radio about him
|
||||||
iLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||||
|
|
||||||
// make a list of all of our team's mercs
|
// make a list of all of our team's mercs
|
||||||
for (pSoldier = MercPtrs[iLoop]; iLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; iLoop++,pSoldier++)
|
for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id )
|
||||||
{
|
{
|
||||||
|
pSoldier = id;
|
||||||
// if this merc is active, in this sector, and well enough to look
|
// if this merc is active, in this sector, and well enough to look
|
||||||
if (pSoldier->bActive && pSoldier->bInSector && (pSoldier->stats.bLife >= OKLIFE))
|
if (pSoldier->bActive && pSoldier->bInSector && (pSoldier->stats.bLife >= OKLIFE))
|
||||||
// put him on our list, and increment the counter
|
// put him on our list, and increment the counter
|
||||||
radioMan[radioCnt++] = (INT16)iLoop;
|
radioMan[radioCnt++] = (INT16)id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1032,7 +1032,7 @@ INT16 radioCnt = 0,radioMan[CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS];
|
|||||||
while (radioCnt)
|
while (radioCnt)
|
||||||
{
|
{
|
||||||
// pick a merc from one of the remaining slots at random
|
// pick a merc from one of the remaining slots at random
|
||||||
iLoop = Random(radioCnt);
|
INT16 iLoop = Random(radioCnt);
|
||||||
|
|
||||||
// handle radioing for that merc
|
// handle radioing for that merc
|
||||||
RadioSightings( MercPtrs[radioMan[iLoop]], ubAbout, MercPtrs[radioMan[iLoop]]->bTeam );
|
RadioSightings( MercPtrs[radioMan[iLoop]], ubAbout, MercPtrs[radioMan[iLoop]]->bTeam );
|
||||||
@@ -1058,15 +1058,13 @@ INT16 radioCnt = 0,radioMan[CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS];
|
|||||||
|
|
||||||
INT16 TeamNoLongerSeesMan( UINT8 ubTeam, SOLDIERTYPE *pOpponent, UINT16 ubExcludeID, INT8 bIteration )
|
INT16 TeamNoLongerSeesMan( UINT8 ubTeam, SOLDIERTYPE *pOpponent, UINT16 ubExcludeID, INT8 bIteration )
|
||||||
{
|
{
|
||||||
UINT16 bLoop;
|
|
||||||
SOLDIERTYPE *pMate;
|
SOLDIERTYPE *pMate;
|
||||||
|
SoldierID bLoop = gTacticalStatus.Team[ubTeam].bFirstID;
|
||||||
|
|
||||||
bLoop = gTacticalStatus.Team[ubTeam].bFirstID;
|
|
||||||
|
|
||||||
// look for all mercs on the same team, check opplists for this soldier
|
// look for all mercs on the same team, check opplists for this soldier
|
||||||
for (pMate = MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[ubTeam].bLastID; ++bLoop,pMate++)
|
for ( ; bLoop <= gTacticalStatus.Team[ubTeam].bLastID; ++bLoop )
|
||||||
{
|
{
|
||||||
|
pMate = bLoop;
|
||||||
// if this "teammate" is me, myself, or I (whom we want to exclude)
|
// if this "teammate" is me, myself, or I (whom we want to exclude)
|
||||||
if ( bLoop == ubExcludeID )
|
if ( bLoop == ubExcludeID )
|
||||||
continue; // skip to next teammate, I KNOW I don't see him...
|
continue; // skip to next teammate, I KNOW I don't see him...
|
||||||
@@ -1524,12 +1522,11 @@ void TurnOffEveryonesMuzzleFlashes( void )
|
|||||||
|
|
||||||
void TurnOffTeamsMuzzleFlashes( UINT8 ubTeam )
|
void TurnOffTeamsMuzzleFlashes( UINT8 ubTeam )
|
||||||
{
|
{
|
||||||
UINT16 ubLoop;
|
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
|
|
||||||
for (ubLoop = gTacticalStatus.Team[ ubTeam ].bFirstID; ubLoop <= gTacticalStatus.Team[ ubTeam ].bLastID; ubLoop++)
|
for ( SoldierID ubLoop = gTacticalStatus.Team[ ubTeam ].bFirstID; ubLoop <= gTacticalStatus.Team[ ubTeam ].bLastID; ++ubLoop )
|
||||||
{
|
{
|
||||||
pSoldier = MercPtrs[ ubLoop ];
|
pSoldier = ubLoop;
|
||||||
|
|
||||||
if ( pSoldier->flags.fMuzzleFlash )
|
if ( pSoldier->flags.fMuzzleFlash )
|
||||||
{
|
{
|
||||||
@@ -1638,7 +1635,6 @@ void InitOpplistForDoorOpening( void )
|
|||||||
|
|
||||||
void AllTeamsLookForAll(UINT8 ubAllowInterrupts)
|
void AllTeamsLookForAll(UINT8 ubAllowInterrupts)
|
||||||
{
|
{
|
||||||
UINT32 uiLoop;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
|
|
||||||
if ( (gTacticalStatus.uiFlags & LOADING_SAVED_GAME) )
|
if ( (gTacticalStatus.uiFlags & LOADING_SAVED_GAME) )
|
||||||
@@ -1661,7 +1657,7 @@ void AllTeamsLookForAll(UINT8 ubAllowInterrupts)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (uiLoop = 0; uiLoop < guiNumMercSlots; uiLoop++)
|
for ( UINT16 uiLoop = 0; uiLoop < guiNumMercSlots; ++uiLoop )
|
||||||
{
|
{
|
||||||
pSoldier = MercSlots[uiLoop];
|
pSoldier = MercSlots[uiLoop];
|
||||||
|
|
||||||
@@ -1672,9 +1668,9 @@ void AllTeamsLookForAll(UINT8 ubAllowInterrupts)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// the player team now radios about all sightings
|
// the player team now radios about all sightings
|
||||||
for ( uiLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; uiLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; uiLoop++ )
|
for ( SoldierID uiLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; uiLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++uiLoop )
|
||||||
{
|
{
|
||||||
HandleSight( MercPtrs[ uiLoop ], SIGHT_RADIO ); // looking was done above
|
HandleSight( uiLoop, SIGHT_RADIO ); // looking was done above
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !(gTacticalStatus.uiFlags & INCOMBAT) )
|
if ( !(gTacticalStatus.uiFlags & INCOMBAT) )
|
||||||
@@ -3115,7 +3111,7 @@ void RemoveManAsTarget(SOLDIERTYPE *pSoldier)
|
|||||||
|
|
||||||
void UpdatePublic(UINT8 ubTeam, SoldierID ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel)
|
void UpdatePublic(UINT8 ubTeam, SoldierID ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel)
|
||||||
{
|
{
|
||||||
INT32 cnt;
|
SoldierID cnt;
|
||||||
UINT8 ubTeamMustLookAgain = FALSE, ubMadeDifference = FALSE;
|
UINT8 ubTeamMustLookAgain = FALSE, ubMadeDifference = FALSE;
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
INT8* pbPublOL = &(gbPublicOpplist[ubTeam][ubID]);
|
INT8* pbPublOL = &(gbPublicOpplist[ubTeam][ubID]);
|
||||||
@@ -3143,8 +3139,9 @@ void UpdatePublic(UINT8 ubTeam, SoldierID ubID, INT8 bNewOpplist, INT32 sGridNo,
|
|||||||
// then everyone on team who's not aware of guynum must look for him
|
// then everyone on team who's not aware of guynum must look for him
|
||||||
cnt = gTacticalStatus.Team[ubTeam].bFirstID;
|
cnt = gTacticalStatus.Team[ubTeam].bFirstID;
|
||||||
|
|
||||||
for (pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[ubTeam].bLastID; ++cnt, pSoldier++)
|
for ( ; cnt <= gTacticalStatus.Team[ubTeam].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
// if this soldier is active, in this sector, and well enough to look
|
// if this soldier is active, in this sector, and well enough to look
|
||||||
if (pSoldier->bActive && pSoldier->bInSector && (pSoldier->stats.bLife >= OKLIFE) && !( pSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) )
|
if (pSoldier->bActive && pSoldier->bInSector && (pSoldier->stats.bLife >= OKLIFE) && !( pSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) )
|
||||||
{
|
{
|
||||||
@@ -5719,7 +5716,6 @@ void TheirNoise( SoldierID ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTer
|
|||||||
void ProcessNoise( SoldierID ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubBaseVolume, UINT8 ubNoiseType, STR16 zNoiseMessage )
|
void ProcessNoise( SoldierID ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubBaseVolume, UINT8 ubNoiseType, STR16 zNoiseMessage )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
UINT16 bLoop;
|
|
||||||
UINT8 bTeam;
|
UINT8 bTeam;
|
||||||
UINT8 ubLoudestEffVolume, ubEffVolume;
|
UINT8 ubLoudestEffVolume, ubEffVolume;
|
||||||
// UINT8 ubPlayVolume;
|
// UINT8 ubPlayVolume;
|
||||||
@@ -5923,8 +5919,9 @@ void ProcessNoise( SoldierID ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubT
|
|||||||
ubHeardLoudestBy = NOBODY;
|
ubHeardLoudestBy = NOBODY;
|
||||||
|
|
||||||
// All mercs on this team check if they are eligible to hear this noise
|
// All mercs on this team check if they are eligible to hear this noise
|
||||||
for (bLoop = gTacticalStatus.Team[bTeam].bFirstID,pSoldier = Menptr + bLoop; bLoop <= gTacticalStatus.Team[bTeam].bLastID; bLoop++,pSoldier++)
|
for ( SoldierID bLoop = gTacticalStatus.Team[bTeam].bFirstID; bLoop <= gTacticalStatus.Team[bTeam].bLastID; ++bLoop )
|
||||||
{
|
{
|
||||||
|
pSoldier = bLoop;
|
||||||
// if this "listener" is inactive, or in no condition to care
|
// if this "listener" is inactive, or in no condition to care
|
||||||
if (!pSoldier->bActive || !pSoldier->bInSector || pSoldier->flags.uiStatusFlags & SOLDIER_DEAD || (pSoldier->stats.bLife < OKLIFE) || pSoldier->ubBodyType == LARVAE_MONSTER)
|
if (!pSoldier->bActive || !pSoldier->bInSector || pSoldier->flags.uiStatusFlags & SOLDIER_DEAD || (pSoldier->stats.bLife < OKLIFE) || pSoldier->ubBodyType == LARVAE_MONSTER)
|
||||||
{
|
{
|
||||||
@@ -7439,15 +7436,15 @@ void NoticeUnseenAttacker( SOLDIERTYPE * pAttacker, SOLDIERTYPE * pDefender, INT
|
|||||||
|
|
||||||
void CheckForAlertWhenEnemyDies( SOLDIERTYPE * pDyingSoldier )
|
void CheckForAlertWhenEnemyDies( SOLDIERTYPE * pDyingSoldier )
|
||||||
{
|
{
|
||||||
UINT16 ubID;
|
SoldierID ubID;
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
INT8 bDir;
|
INT8 bDir;
|
||||||
INT16 sDistAway, sDistVisible;
|
INT16 sDistAway, sDistVisible;
|
||||||
|
|
||||||
for ( ubID = gTacticalStatus.Team[ pDyingSoldier->bTeam ].bFirstID; ubID <= gTacticalStatus.Team[ pDyingSoldier->bTeam ].bLastID; ubID++ )
|
for ( ubID = gTacticalStatus.Team[ pDyingSoldier->bTeam ].bFirstID; ubID <= gTacticalStatus.Team[ pDyingSoldier->bTeam ].bLastID; ++ubID )
|
||||||
{
|
{
|
||||||
|
|
||||||
pSoldier = MercPtrs[ ubID ];
|
pSoldier = ubID;
|
||||||
|
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector && (pSoldier != pDyingSoldier) && (pSoldier->stats.bLife >= OKLIFE) && (pSoldier->aiData.bAlertStatus < STATUS_RED ) )
|
if ( pSoldier->bActive && pSoldier->bInSector && (pSoldier != pDyingSoldier) && (pSoldier->stats.bLife >= OKLIFE) && (pSoldier->aiData.bAlertStatus < STATUS_RED ) )
|
||||||
{
|
{
|
||||||
@@ -7470,22 +7467,20 @@ void CheckForAlertWhenEnemyDies( SOLDIERTYPE * pDyingSoldier )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN ArmyKnowsOfPlayersPresence( void )
|
BOOLEAN ArmyKnowsOfPlayersPresence( void )
|
||||||
{
|
{
|
||||||
UINT16 ubID;
|
SoldierID ubID;
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
|
|
||||||
// if anyone is still left...
|
// if anyone is still left...
|
||||||
if (gTacticalStatus.Team[ ENEMY_TEAM ].bTeamActive && gTacticalStatus.Team[ ENEMY_TEAM ].bMenInSector > 0 )
|
if (gTacticalStatus.Team[ ENEMY_TEAM ].bTeamActive && gTacticalStatus.Team[ ENEMY_TEAM ].bMenInSector > 0 )
|
||||||
{
|
{
|
||||||
for ( ubID = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; ubID <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; ubID++ )
|
for ( ubID = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; ubID <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; ++ubID )
|
||||||
{
|
{
|
||||||
pSoldier = MercPtrs[ ubID ];
|
pSoldier = ubID;
|
||||||
|
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector && (pSoldier->stats.bLife >= OKLIFE) && (pSoldier->aiData.bAlertStatus >= STATUS_RED ) )
|
if ( pSoldier->bActive && pSoldier->bInSector && (pSoldier->stats.bLife >= OKLIFE) && (pSoldier->aiData.bAlertStatus >= STATUS_RED ) )
|
||||||
{
|
{
|
||||||
@@ -7498,13 +7493,13 @@ BOOLEAN ArmyKnowsOfPlayersPresence( void )
|
|||||||
|
|
||||||
BOOLEAN MercSeesCreature( SOLDIERTYPE * pSoldier )
|
BOOLEAN MercSeesCreature( SOLDIERTYPE * pSoldier )
|
||||||
{
|
{
|
||||||
UINT16 ubID;
|
SoldierID ubID;
|
||||||
|
|
||||||
if ( pSoldier->aiData.bOppCnt > 0 )
|
if ( pSoldier->aiData.bOppCnt > 0 )
|
||||||
{
|
{
|
||||||
for ( ubID = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; ubID <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ubID++ )
|
for ( ubID = gTacticalStatus.Team[CREATURE_TEAM].bFirstID; ubID <= gTacticalStatus.Team[CREATURE_TEAM].bLastID; ++ubID )
|
||||||
{
|
{
|
||||||
if ( (pSoldier->aiData.bOppList[ ubID ] == SEEN_CURRENTLY) && (MercPtrs[ ubID ]->flags.uiStatusFlags & SOLDIER_MONSTER) )
|
if ( (pSoldier->aiData.bOppList[ubID] == SEEN_CURRENTLY) && (ubID->flags.uiStatusFlags & SOLDIER_MONSTER) )
|
||||||
{
|
{
|
||||||
return(TRUE);
|
return(TRUE);
|
||||||
}
|
}
|
||||||
@@ -7626,14 +7621,14 @@ INT8 GetHighestWatchedLocPoints( UINT16 ubID )
|
|||||||
|
|
||||||
void CommunicateWatchedLoc( SoldierID ubID, INT32 sGridNo, INT8 bLevel, UINT8 ubPoints )
|
void CommunicateWatchedLoc( SoldierID ubID, INT32 sGridNo, INT8 bLevel, UINT8 ubPoints )
|
||||||
{
|
{
|
||||||
UINT16 ubLoop;
|
SoldierID ubLoop;
|
||||||
INT8 bTeam, bLoopPoint, bPoint;
|
INT8 bTeam, bLoopPoint, bPoint;
|
||||||
|
|
||||||
bTeam = ubID->bTeam;
|
bTeam = ubID->bTeam;
|
||||||
|
|
||||||
for ( ubLoop = gTacticalStatus.Team[ bTeam ].bFirstID; ubLoop <= gTacticalStatus.Team[ bTeam ].bLastID; ubLoop++ )
|
for ( ubLoop = gTacticalStatus.Team[ bTeam ].bFirstID; ubLoop <= gTacticalStatus.Team[ bTeam ].bLastID; ++ubLoop )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pSoldier = MercPtrs[ubLoop];
|
SOLDIERTYPE *pSoldier = ubLoop;
|
||||||
if ( ubLoop == ubID || pSoldier->bActive == FALSE || pSoldier->bInSector == FALSE || pSoldier->stats.bLife < OKLIFE )
|
if ( ubLoop == ubID || pSoldier->bActive == FALSE || pSoldier->bInSector == FALSE || pSoldier->stats.bLife < OKLIFE )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
@@ -7784,13 +7779,13 @@ void DecayWatchedLocs( INT8 bTeam )
|
|||||||
|
|
||||||
void MakeBloodcatsHostile( void )
|
void MakeBloodcatsHostile( void )
|
||||||
{
|
{
|
||||||
INT32 iLoop;
|
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
|
SoldierID id = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID;
|
||||||
|
|
||||||
iLoop = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID;
|
for ( ; id <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++id )
|
||||||
|
|
||||||
for (pSoldier = MercPtrs[iLoop]; iLoop <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++iLoop, ++pSoldier )
|
|
||||||
{
|
{
|
||||||
|
pSoldier = id;
|
||||||
|
|
||||||
if ( pSoldier->ubBodyType == BLOODCAT && pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 )
|
if ( pSoldier->ubBodyType == BLOODCAT && pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 )
|
||||||
{
|
{
|
||||||
SetSoldierNonNeutral( pSoldier );
|
SetSoldierNonNeutral( pSoldier );
|
||||||
|
|||||||
+7
-10
@@ -874,8 +874,6 @@ void HandleSoldierAI( SOLDIERTYPE *pSoldier ) // FIXME - this function is named
|
|||||||
|
|
||||||
void EndAIGuysTurn( SOLDIERTYPE *pSoldier )
|
void EndAIGuysTurn( SOLDIERTYPE *pSoldier )
|
||||||
{
|
{
|
||||||
UINT16 ubID;
|
|
||||||
|
|
||||||
if (gfTurnBasedAI)
|
if (gfTurnBasedAI)
|
||||||
{
|
{
|
||||||
if (gTacticalStatus.uiFlags & PLAYER_TEAM_DEAD)
|
if (gTacticalStatus.uiFlags & PLAYER_TEAM_DEAD)
|
||||||
@@ -885,9 +883,9 @@ void EndAIGuysTurn( SOLDIERTYPE *pSoldier )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// search for any player merc to say close call quote
|
// search for any player merc to say close call quote
|
||||||
for ( ubID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; ubID <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubID )
|
for ( SoldierID ubID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; ubID <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubID )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pMerc = MercPtrs[ubID];
|
SOLDIERTYPE *pMerc = ubID;
|
||||||
|
|
||||||
if ( OK_INSECTOR_MERC( pMerc ) )
|
if ( OK_INSECTOR_MERC( pMerc ) )
|
||||||
{
|
{
|
||||||
@@ -941,10 +939,10 @@ void EndAIGuysTurn( SOLDIERTYPE *pSoldier )
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// find the next AI guy
|
// find the next AI guy
|
||||||
ubID = RemoveFirstAIListEntry();
|
SoldierID ubID = RemoveFirstAIListEntry();
|
||||||
if (ubID != NOBODY)
|
if (ubID != NOBODY)
|
||||||
{
|
{
|
||||||
StartNPCAI( MercPtrs[ ubID ] );
|
StartNPCAI( ubID );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1119,14 +1117,13 @@ void StartNPCAI(SOLDIERTYPE *pSoldier)
|
|||||||
|
|
||||||
BOOLEAN DestNotSpokenFor(SOLDIERTYPE *pSoldier, INT32 sGridNo)
|
BOOLEAN DestNotSpokenFor(SOLDIERTYPE *pSoldier, INT32 sGridNo)
|
||||||
{
|
{
|
||||||
INT32 cnt;
|
|
||||||
SOLDIERTYPE *pOurTeam;
|
SOLDIERTYPE *pOurTeam;
|
||||||
|
SoldierID cnt = gTacticalStatus.Team[pSoldier->bTeam].bFirstID;
|
||||||
cnt = gTacticalStatus.Team[pSoldier->bTeam].bFirstID;
|
|
||||||
|
|
||||||
// make a list of all of our team's mercs
|
// make a list of all of our team's mercs
|
||||||
for (pOurTeam = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[pSoldier->bTeam].bLastID; cnt++,pOurTeam++)
|
for ( ; cnt <= gTacticalStatus.Team[pSoldier->bTeam].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pOurTeam = cnt;
|
||||||
if ( pOurTeam->bActive )
|
if ( pOurTeam->bActive )
|
||||||
{
|
{
|
||||||
if (pOurTeam->sGridNo == sGridNo || pOurTeam->aiData.usActionData == sGridNo)
|
if (pOurTeam->sGridNo == sGridNo || pOurTeam->aiData.usActionData == sGridNo)
|
||||||
|
|||||||
+43
-52
@@ -1703,18 +1703,17 @@ INT32 ClosestPC( SOLDIERTYPE *pSoldier, INT32 * psDistance )
|
|||||||
|
|
||||||
// NOTE: skips EPCs!
|
// NOTE: skips EPCs!
|
||||||
|
|
||||||
UINT16 ubLoop;
|
|
||||||
SOLDIERTYPE *pTargetSoldier;
|
SOLDIERTYPE *pTargetSoldier;
|
||||||
INT32 sMinDist = WORLD_MAX;
|
INT32 sMinDist = WORLD_MAX;
|
||||||
INT32 sDist;
|
INT32 sDist;
|
||||||
INT32 sGridNo = NOWHERE;
|
INT32 sGridNo = NOWHERE;
|
||||||
|
|
||||||
// Loop through all mercs on player team
|
// Loop through all mercs on player team
|
||||||
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
SoldierID ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||||
|
|
||||||
for ( ; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++)
|
for ( ; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubLoop)
|
||||||
{
|
{
|
||||||
pTargetSoldier = Menptr + ubLoop;
|
pTargetSoldier = ubLoop;
|
||||||
|
|
||||||
if (!pTargetSoldier->bActive || !pTargetSoldier->bInSector)
|
if (!pTargetSoldier->bActive || !pTargetSoldier->bInSector)
|
||||||
{
|
{
|
||||||
@@ -1762,17 +1761,16 @@ INT32 ClosestUnDisguisedPC( SOLDIERTYPE *pSoldier, INT32 * psDistance )
|
|||||||
// used by NPCs... find the closest PC
|
// used by NPCs... find the closest PC
|
||||||
// NOTE: skips EPCs!
|
// NOTE: skips EPCs!
|
||||||
|
|
||||||
UINT16 ubLoop;
|
|
||||||
SOLDIERTYPE *pTargetSoldier;
|
SOLDIERTYPE *pTargetSoldier;
|
||||||
INT32 sMinDist = WORLD_MAX;
|
INT32 sMinDist = WORLD_MAX;
|
||||||
INT32 sDist;
|
INT32 sDist;
|
||||||
INT32 sGridNo = NOWHERE;
|
INT32 sGridNo = NOWHERE;
|
||||||
|
|
||||||
// Loop through all mercs on player team
|
// Loop through all mercs on player team
|
||||||
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
SoldierID ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||||
for ( ; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++)
|
for ( ; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubLoop )
|
||||||
{
|
{
|
||||||
pTargetSoldier = Menptr + ubLoop;
|
pTargetSoldier = ubLoop;
|
||||||
|
|
||||||
if (!pTargetSoldier->bActive || !pTargetSoldier->bInSector)
|
if (!pTargetSoldier->bActive || !pTargetSoldier->bInSector)
|
||||||
continue;
|
continue;
|
||||||
@@ -2021,7 +2019,6 @@ INT16 EstimatePathCostToLocation( SOLDIERTYPE * pSoldier, INT32 sDestGridNo, INT
|
|||||||
BOOLEAN GuySawEnemy( SOLDIERTYPE * pSoldier, UINT8 ubMax )
|
BOOLEAN GuySawEnemy( SOLDIERTYPE * pSoldier, UINT8 ubMax )
|
||||||
{
|
{
|
||||||
UINT8 ubTeamLoop;
|
UINT8 ubTeamLoop;
|
||||||
UINT16 ubIDLoop;
|
|
||||||
SOLDIERTYPE *pOpponent;
|
SOLDIERTYPE *pOpponent;
|
||||||
|
|
||||||
for ( ubTeamLoop = 0; ubTeamLoop < MAXTEAMS; ++ubTeamLoop )
|
for ( ubTeamLoop = 0; ubTeamLoop < MAXTEAMS; ++ubTeamLoop )
|
||||||
@@ -2032,9 +2029,9 @@ BOOLEAN GuySawEnemy( SOLDIERTYPE * pSoldier, UINT8 ubMax )
|
|||||||
if ( gTacticalStatus.Team[ ubTeamLoop ].bSide != pSoldier->bSide )
|
if ( gTacticalStatus.Team[ ubTeamLoop ].bSide != pSoldier->bSide )
|
||||||
{
|
{
|
||||||
// consider guys in this team, which isn't on our side
|
// consider guys in this team, which isn't on our side
|
||||||
for ( ubIDLoop = gTacticalStatus.Team[ ubTeamLoop ].bFirstID; ubIDLoop <= gTacticalStatus.Team[ ubTeamLoop ].bLastID; ++ubIDLoop )
|
for ( SoldierID ubIDLoop = gTacticalStatus.Team[ ubTeamLoop ].bFirstID; ubIDLoop <= gTacticalStatus.Team[ ubTeamLoop ].bLastID; ++ubIDLoop )
|
||||||
{
|
{
|
||||||
pOpponent = MercPtrs[ubIDLoop];
|
pOpponent = ubIDLoop;
|
||||||
|
|
||||||
// if this merc is inactive, at base, on assignment, or dead
|
// if this merc is inactive, at base, on assignment, or dead
|
||||||
if (!pOpponent)
|
if (!pOpponent)
|
||||||
@@ -2174,15 +2171,14 @@ INT32 ClosestReachableFriendInTrouble(SOLDIERTYPE *pSoldier, BOOLEAN * pfClimbin
|
|||||||
INT16 DistanceToClosestFriend( SOLDIERTYPE * pSoldier )
|
INT16 DistanceToClosestFriend( SOLDIERTYPE * pSoldier )
|
||||||
{
|
{
|
||||||
// find the distance to the closest person on the same team
|
// find the distance to the closest person on the same team
|
||||||
UINT16 ubLoop;
|
|
||||||
SOLDIERTYPE *pTargetSoldier;
|
SOLDIERTYPE *pTargetSoldier;
|
||||||
INT16 sMinDist = 1000;
|
INT16 sMinDist = 1000;
|
||||||
INT16 sDist;
|
INT16 sDist;
|
||||||
|
|
||||||
// Loop through all mercs on player team
|
// Loop through all mercs on player team
|
||||||
ubLoop = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID;
|
SoldierID ubLoop = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID;
|
||||||
|
|
||||||
for ( ; ubLoop <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; ubLoop++ )
|
for ( ; ubLoop <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; ++ubLoop )
|
||||||
{
|
{
|
||||||
if (ubLoop == pSoldier->ubID)
|
if (ubLoop == pSoldier->ubID)
|
||||||
{
|
{
|
||||||
@@ -2190,7 +2186,7 @@ INT16 DistanceToClosestFriend( SOLDIERTYPE * pSoldier )
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
pTargetSoldier = Menptr + ubLoop;
|
pTargetSoldier = ubLoop;
|
||||||
|
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector )
|
if ( pSoldier->bActive && pSoldier->bInSector )
|
||||||
{
|
{
|
||||||
@@ -3167,12 +3163,11 @@ INT32 RangeChangeDesire( SOLDIERTYPE * pSoldier )
|
|||||||
|
|
||||||
BOOLEAN ArmySeesOpponents( void )
|
BOOLEAN ArmySeesOpponents( void )
|
||||||
{
|
{
|
||||||
INT32 cnt;
|
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
|
|
||||||
for ( 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 )
|
||||||
{
|
{
|
||||||
pSoldier = MercPtrs[ cnt ];
|
pSoldier = cnt;
|
||||||
|
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE && pSoldier->aiData.bOppCnt > 0 )
|
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE && pSoldier->aiData.bOppCnt > 0 )
|
||||||
{
|
{
|
||||||
@@ -3306,7 +3301,7 @@ INT16 AssessTacticalSituation( INT8 bTeam )
|
|||||||
BOOLEAN TeamSeesOpponent( INT8 bTeam, SOLDIERTYPE * pOpponent )
|
BOOLEAN TeamSeesOpponent( INT8 bTeam, SOLDIERTYPE * pOpponent )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
UINT16 cnt;
|
SoldierID cnt;
|
||||||
|
|
||||||
// This assertion can be safely removed, assuming the program does what it should. It simply checks
|
// This assertion can be safely removed, assuming the program does what it should. It simply checks
|
||||||
// whether the "opponent" is on the same team being checked. That should be avoided when calling this
|
// whether the "opponent" is on the same team being checked. That should be avoided when calling this
|
||||||
@@ -3316,9 +3311,9 @@ BOOLEAN TeamSeesOpponent( INT8 bTeam, SOLDIERTYPE * pOpponent )
|
|||||||
// We're checking Merc/Militia visibility
|
// We're checking Merc/Militia visibility
|
||||||
if (bTeam == OUR_TEAM || bTeam == MILITIA_TEAM )
|
if (bTeam == OUR_TEAM || bTeam == MILITIA_TEAM )
|
||||||
{
|
{
|
||||||
for ( cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++ )
|
for ( cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
pSoldier = MercPtrs[ cnt ];
|
pSoldier = cnt;
|
||||||
|
|
||||||
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE)
|
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE)
|
||||||
{
|
{
|
||||||
@@ -3328,9 +3323,9 @@ BOOLEAN TeamSeesOpponent( INT8 bTeam, SOLDIERTYPE * pOpponent )
|
|||||||
return ( TRUE );
|
return ( TRUE );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for ( cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; cnt++ )
|
for ( cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
pSoldier = MercPtrs[ cnt ];
|
pSoldier = cnt;
|
||||||
|
|
||||||
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE)
|
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE)
|
||||||
{
|
{
|
||||||
@@ -3349,9 +3344,9 @@ BOOLEAN TeamSeesOpponent( INT8 bTeam, SOLDIERTYPE * pOpponent )
|
|||||||
// Check enemy visibility
|
// Check enemy visibility
|
||||||
else if (bTeam == ENEMY_TEAM)
|
else if (bTeam == ENEMY_TEAM)
|
||||||
{
|
{
|
||||||
for ( cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; cnt++ )
|
for ( cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
pSoldier = MercPtrs[ cnt ];
|
pSoldier = cnt;
|
||||||
|
|
||||||
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE)
|
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE)
|
||||||
{
|
{
|
||||||
@@ -3448,14 +3443,13 @@ INT32 CalcStraightThreatValue( SOLDIERTYPE *pEnemy )
|
|||||||
SoldierID GetClosestFlaggedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam, UINT32 aFlag, BOOLEAN fCheckSight )
|
SoldierID GetClosestFlaggedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam, UINT32 aFlag, BOOLEAN fCheckSight )
|
||||||
{
|
{
|
||||||
SoldierID id = NOBODY;
|
SoldierID id = NOBODY;
|
||||||
UINT32 uiLoop;
|
|
||||||
SOLDIERTYPE * pFriend;
|
SOLDIERTYPE * pFriend;
|
||||||
INT16 range = aRange;
|
INT16 range = aRange;
|
||||||
|
|
||||||
// go through each soldier, looking for "friends" (soldiers on same team)
|
// go through each soldier, looking for "friends" (soldiers on same team)
|
||||||
for (uiLoop = gTacticalStatus.Team[ auTeam ].bFirstID; uiLoop <= gTacticalStatus.Team[ auTeam ].bLastID; ++uiLoop)
|
for ( SoldierID uiLoop = gTacticalStatus.Team[ auTeam ].bFirstID; uiLoop <= gTacticalStatus.Team[ auTeam ].bLastID; ++uiLoop)
|
||||||
{
|
{
|
||||||
pFriend = MercPtrs[ uiLoop ];
|
pFriend = uiLoop;
|
||||||
|
|
||||||
// if this merc is inactive, not in sector, or dead
|
// if this merc is inactive, not in sector, or dead
|
||||||
if (!pFriend)
|
if (!pFriend)
|
||||||
@@ -3501,14 +3495,13 @@ SoldierID GetClosestFlaggedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT
|
|||||||
SoldierID GetClosestWoundedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam )
|
SoldierID GetClosestWoundedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam )
|
||||||
{
|
{
|
||||||
SoldierID id = NOBODY;
|
SoldierID id = NOBODY;
|
||||||
UINT32 uiLoop;
|
|
||||||
SOLDIERTYPE * pFriend;
|
SOLDIERTYPE * pFriend;
|
||||||
INT16 range = aRange;
|
INT16 range = aRange;
|
||||||
|
|
||||||
// go through each soldier, looking for "friends" (soldiers on same team)
|
// go through each soldier, looking for "friends" (soldiers on same team)
|
||||||
for (uiLoop = gTacticalStatus.Team[ auTeam ].bFirstID; uiLoop <= gTacticalStatus.Team[ auTeam ].bLastID; ++uiLoop)
|
for ( SoldierID uiLoop = gTacticalStatus.Team[ auTeam ].bFirstID; uiLoop <= gTacticalStatus.Team[ auTeam ].bLastID; ++uiLoop)
|
||||||
{
|
{
|
||||||
pFriend = MercPtrs[ uiLoop ];
|
pFriend = uiLoop;
|
||||||
|
|
||||||
// if this merc is inactive, not in sector, or dead
|
// if this merc is inactive, not in sector, or dead
|
||||||
if (!pFriend)
|
if (!pFriend)
|
||||||
@@ -3550,14 +3543,13 @@ SoldierID GetClosestWoundedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT
|
|||||||
SoldierID GetClosestMedicSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam )
|
SoldierID GetClosestMedicSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam )
|
||||||
{
|
{
|
||||||
SoldierID id = NOBODY;
|
SoldierID id = NOBODY;
|
||||||
UINT32 uiLoop;
|
|
||||||
SOLDIERTYPE * pFriend;
|
SOLDIERTYPE * pFriend;
|
||||||
INT16 range = aRange;
|
INT16 range = aRange;
|
||||||
|
|
||||||
// go through each soldier, looking for "friends" (soldiers on same team)
|
// go through each soldier, looking for "friends" (soldiers on same team)
|
||||||
for (uiLoop = gTacticalStatus.Team[ auTeam ].bFirstID; uiLoop <= gTacticalStatus.Team[ auTeam ].bLastID; ++uiLoop)
|
for ( SoldierID uiLoop = gTacticalStatus.Team[ auTeam ].bFirstID; uiLoop <= gTacticalStatus.Team[ auTeam ].bLastID; ++uiLoop)
|
||||||
{
|
{
|
||||||
pFriend = MercPtrs[ uiLoop ];
|
pFriend = uiLoop;
|
||||||
|
|
||||||
// if this merc is inactive, not in sector, or dead
|
// if this merc is inactive, not in sector, or dead
|
||||||
if (!pFriend)
|
if (!pFriend)
|
||||||
@@ -3622,9 +3614,9 @@ UINT16 CountFriendsInDirection( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo )
|
|||||||
ubMyDir = GetDirectionFromCenterCellXYGridNo(sTargetGridNo, pSoldier->sGridNo);
|
ubMyDir = GetDirectionFromCenterCellXYGridNo(sTargetGridNo, pSoldier->sGridNo);
|
||||||
|
|
||||||
// Run through each friendly.
|
// Run through each friendly.
|
||||||
for ( UINT16 iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; iCounter ++ )
|
for ( SoldierID iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; ++iCounter )
|
||||||
{
|
{
|
||||||
pFriend = MercPtrs[ iCounter ];
|
pFriend = iCounter;
|
||||||
ubFriendDir = GetDirectionFromCenterCellXYGridNo(sTargetGridNo, pFriend->sGridNo);
|
ubFriendDir = GetDirectionFromCenterCellXYGridNo(sTargetGridNo, pFriend->sGridNo);
|
||||||
|
|
||||||
if (pFriend != pSoldier &&
|
if (pFriend != pSoldier &&
|
||||||
@@ -3654,9 +3646,9 @@ UINT16 CountNearbyFriends( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDistanc
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
// Run through each friendly.
|
// Run through each friendly.
|
||||||
for ( UINT16 iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; iCounter ++ )
|
for ( SoldierID iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; ++iCounter )
|
||||||
{
|
{
|
||||||
pFriend = MercPtrs[ iCounter ];
|
pFriend = iCounter;
|
||||||
// Make sure that character is alive, not too shocked, and conscious, and of higher experience level
|
// Make sure that character is alive, not too shocked, and conscious, and of higher experience level
|
||||||
// than the character being suppressed.
|
// than the character being suppressed.
|
||||||
if (pFriend != pSoldier && pFriend->bActive && pFriend->stats.bLife >= OKLIFE &&
|
if (pFriend != pSoldier && pFriend->bActive && pFriend->stats.bLife >= OKLIFE &&
|
||||||
@@ -3963,9 +3955,9 @@ BOOLEAN WeAttack(INT8 bTeam)
|
|||||||
SOLDIERTYPE * pFriend;
|
SOLDIERTYPE * pFriend;
|
||||||
|
|
||||||
// Run through each friendly.
|
// Run through each friendly.
|
||||||
for (UINT16 iCounter = gTacticalStatus.Team[bTeam].bFirstID; iCounter <= gTacticalStatus.Team[bTeam].bLastID; iCounter++)
|
for ( SoldierID iCounter = gTacticalStatus.Team[bTeam].bFirstID; iCounter <= gTacticalStatus.Team[bTeam].bLastID; ++iCounter )
|
||||||
{
|
{
|
||||||
pFriend = MercPtrs[iCounter];
|
pFriend = iCounter;
|
||||||
|
|
||||||
if (pFriend &&
|
if (pFriend &&
|
||||||
pFriend->bActive &&
|
pFriend->bActive &&
|
||||||
@@ -3987,9 +3979,9 @@ UINT8 CountNearbyFriendsLastAttackHit( SOLDIERTYPE *pSoldier, INT32 sGridNo, UIN
|
|||||||
UINT8 ubFriendCount = 0;
|
UINT8 ubFriendCount = 0;
|
||||||
|
|
||||||
// Run through each friendly.
|
// Run through each friendly.
|
||||||
for ( UINT16 iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; iCounter ++ )
|
for ( SoldierID iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; ++iCounter )
|
||||||
{
|
{
|
||||||
pFriend = MercPtrs[ iCounter ];
|
pFriend = iCounter;
|
||||||
|
|
||||||
if (pFriend != pSoldier &&
|
if (pFriend != pSoldier &&
|
||||||
pFriend->bActive &&
|
pFriend->bActive &&
|
||||||
@@ -4027,9 +4019,9 @@ UINT8 CountFriendsFlankSameSpot(SOLDIERTYPE *pSoldier, INT32 sSpot)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Run through each friendly.
|
// Run through each friendly.
|
||||||
for (UINT16 iCounter = gTacticalStatus.Team[pSoldier->bTeam].bFirstID; iCounter <= gTacticalStatus.Team[pSoldier->bTeam].bLastID; iCounter++)
|
for ( SoldierID iCounter = gTacticalStatus.Team[pSoldier->bTeam].bFirstID; iCounter <= gTacticalStatus.Team[pSoldier->bTeam].bLastID; ++iCounter )
|
||||||
{
|
{
|
||||||
pFriend = MercPtrs[iCounter];
|
pFriend = iCounter;
|
||||||
|
|
||||||
if (pFriend &&
|
if (pFriend &&
|
||||||
pFriend != pSoldier &&
|
pFriend != pSoldier &&
|
||||||
@@ -4109,9 +4101,9 @@ UINT8 CountFriendsBlack( SOLDIERTYPE *pSoldier, INT32 sClosestOpponent )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Run through each friendly.
|
// Run through each friendly.
|
||||||
for ( UINT16 iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; iCounter ++ )
|
for ( SoldierID iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; ++iCounter )
|
||||||
{
|
{
|
||||||
pFriend = MercPtrs[ iCounter ];
|
pFriend = iCounter;
|
||||||
|
|
||||||
// Make sure that character is alive, not too shocked, and conscious
|
// Make sure that character is alive, not too shocked, and conscious
|
||||||
if (pFriend != pSoldier &&
|
if (pFriend != pSoldier &&
|
||||||
@@ -4148,9 +4140,9 @@ UINT16 CountTeamUnderAttack(INT8 bTeam, INT32 sGridNo, INT16 sDistance)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
// Run through each friendly.
|
// Run through each friendly.
|
||||||
for (UINT16 iCounter = gTacticalStatus.Team[bTeam].bFirstID; iCounter <= gTacticalStatus.Team[bTeam].bLastID; iCounter++)
|
for ( SoldierID iCounter = gTacticalStatus.Team[bTeam].bFirstID; iCounter <= gTacticalStatus.Team[bTeam].bLastID; ++iCounter )
|
||||||
{
|
{
|
||||||
pFriend = MercPtrs[iCounter];
|
pFriend = iCounter;
|
||||||
|
|
||||||
if (pFriend &&
|
if (pFriend &&
|
||||||
pFriend->bActive &&
|
pFriend->bActive &&
|
||||||
@@ -4400,9 +4392,9 @@ UINT16 CountTeamSeeSoldier( INT8 bTeam, SOLDIERTYPE *pSoldier )
|
|||||||
if ( bTeam >= MAXTEAMS )
|
if ( bTeam >= MAXTEAMS )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
for ( UINT16 cnt = gTacticalStatus.Team[bTeam].bFirstID; cnt <= gTacticalStatus.Team[bTeam].bLastID; ++cnt )
|
for ( SoldierID cnt = gTacticalStatus.Team[bTeam].bFirstID; cnt <= gTacticalStatus.Team[bTeam].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
pFriend = MercPtrs[cnt];
|
pFriend = cnt;
|
||||||
|
|
||||||
if ( pFriend->bActive &&
|
if ( pFriend->bActive &&
|
||||||
pFriend->bInSector &&
|
pFriend->bInSector &&
|
||||||
@@ -4844,7 +4836,6 @@ UINT16 CountSeenEnemiesLastTurn( SOLDIERTYPE* pSoldier )
|
|||||||
CHECKF(pSoldier);
|
CHECKF(pSoldier);
|
||||||
|
|
||||||
UINT8 ubTeamLoop;
|
UINT8 ubTeamLoop;
|
||||||
UINT16 ubIDLoop;
|
|
||||||
UINT16 cnt = 0;
|
UINT16 cnt = 0;
|
||||||
|
|
||||||
for( ubTeamLoop = 0; ubTeamLoop < MAXTEAMS; ubTeamLoop++ )
|
for( ubTeamLoop = 0; ubTeamLoop < MAXTEAMS; ubTeamLoop++ )
|
||||||
@@ -4855,7 +4846,7 @@ UINT16 CountSeenEnemiesLastTurn( SOLDIERTYPE* pSoldier )
|
|||||||
if( gTacticalStatus.Team[ ubTeamLoop ].bSide != pSoldier->bSide )
|
if( gTacticalStatus.Team[ ubTeamLoop ].bSide != pSoldier->bSide )
|
||||||
{
|
{
|
||||||
// consider guys in this team, which isn't on our side
|
// consider guys in this team, which isn't on our side
|
||||||
for( ubIDLoop = gTacticalStatus.Team[ ubTeamLoop ].bFirstID; ubIDLoop <= gTacticalStatus.Team[ ubTeamLoop ].bLastID; ubIDLoop++ )
|
for( SoldierID ubIDLoop = gTacticalStatus.Team[ ubTeamLoop ].bFirstID; ubIDLoop <= gTacticalStatus.Team[ ubTeamLoop ].bLastID; ++ubIDLoop )
|
||||||
{
|
{
|
||||||
// if this guy SAW an enemy recently...
|
// if this guy SAW an enemy recently...
|
||||||
if( pSoldier->aiData.bOppList[ ubIDLoop ] >= SEEN_CURRENTLY &&
|
if( pSoldier->aiData.bOppList[ ubIDLoop ] >= SEEN_CURRENTLY &&
|
||||||
|
|||||||
@@ -3903,9 +3903,9 @@ void CheckTossFriendSmoke(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow)
|
|||||||
UINT8 ubDirection;
|
UINT8 ubDirection;
|
||||||
|
|
||||||
// Run through each friendly.
|
// Run through each friendly.
|
||||||
for (UINT16 iCounter = gTacticalStatus.Team[pSoldier->bTeam].bFirstID; iCounter <= gTacticalStatus.Team[pSoldier->bTeam].bLastID; iCounter++)
|
for ( SoldierID iCounter = gTacticalStatus.Team[pSoldier->bTeam].bFirstID; iCounter <= gTacticalStatus.Team[pSoldier->bTeam].bLastID; ++iCounter)
|
||||||
{
|
{
|
||||||
pFriend = MercPtrs[iCounter];
|
pFriend = iCounter;
|
||||||
|
|
||||||
// check that friend is alive and needs cover
|
// check that friend is alive and needs cover
|
||||||
if (pFriend &&
|
if (pFriend &&
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ INT8 gbHuntCallPriority[NUM_CREATURE_CALLS] =
|
|||||||
void CreatureCall( SOLDIERTYPE * pCaller )
|
void CreatureCall( SOLDIERTYPE * pCaller )
|
||||||
{
|
{
|
||||||
UINT8 ubCallerType=0;
|
UINT8 ubCallerType=0;
|
||||||
UINT16 ubReceiver;
|
SoldierID ubReceiver;
|
||||||
INT8 bFullPriority;
|
INT8 bFullPriority;
|
||||||
INT8 bPriority;
|
INT8 bPriority;
|
||||||
SOLDIERTYPE *pReceiver;
|
SOLDIERTYPE *pReceiver;
|
||||||
@@ -121,9 +121,9 @@ void CreatureCall( SOLDIERTYPE * pCaller )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for (ubReceiver = gTacticalStatus.Team[ pCaller->bTeam ].bFirstID; ubReceiver <= gTacticalStatus.Team[ pCaller->bTeam ].bLastID; ubReceiver++)
|
for (ubReceiver = gTacticalStatus.Team[ pCaller->bTeam ].bFirstID; ubReceiver <= gTacticalStatus.Team[ pCaller->bTeam ].bLastID; ++ubReceiver )
|
||||||
{
|
{
|
||||||
pReceiver = MercPtrs[ubReceiver];
|
pReceiver = ubReceiver;
|
||||||
if (pReceiver->bActive && pReceiver->bInSector && (pReceiver->stats.bLife >= OKLIFE) && (pReceiver != pCaller) && (pReceiver->aiData.bAlertStatus < STATUS_BLACK))
|
if (pReceiver->bActive && pReceiver->bInSector && (pReceiver->stats.bLife >= OKLIFE) && (pReceiver != pCaller) && (pReceiver->aiData.bAlertStatus < STATUS_BLACK))
|
||||||
{
|
{
|
||||||
if (pReceiver->ubBodyType != LARVAE_MONSTER && pReceiver->ubBodyType != INFANT_MONSTER && pReceiver->ubBodyType != QUEENMONSTER)
|
if (pReceiver->ubBodyType != LARVAE_MONSTER && pReceiver->ubBodyType != INFANT_MONSTER && pReceiver->ubBodyType != QUEENMONSTER)
|
||||||
|
|||||||
@@ -754,9 +754,9 @@ INT8 DecideActionGreen(SOLDIERTYPE *pSoldier)
|
|||||||
{
|
{
|
||||||
// WANNE: This should fix the bug if any merc are still under PC control. This could happen after boxing in SAN MONA.
|
// WANNE: This should fix the bug if any merc are still under PC control. This could happen after boxing in SAN MONA.
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
for (UINT16 bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++)
|
for ( SoldierID bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop )
|
||||||
{
|
{
|
||||||
pTeamSoldier=MercPtrs[bLoop];
|
pTeamSoldier = bLoop;
|
||||||
|
|
||||||
if (pTeamSoldier->flags.uiStatusFlags & SOLDIER_PCUNDERAICONTROL)
|
if (pTeamSoldier->flags.uiStatusFlags & SOLDIER_PCUNDERAICONTROL)
|
||||||
pTeamSoldier->flags.uiStatusFlags &= (~SOLDIER_PCUNDERAICONTROL);
|
pTeamSoldier->flags.uiStatusFlags &= (~SOLDIER_PCUNDERAICONTROL);
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ void CallAvailableEnemiesTo( INT32 sGridNo )
|
|||||||
|
|
||||||
void CallAvailableTeamEnemiesTo( INT32 sGridNo, INT8 bTeam )
|
void CallAvailableTeamEnemiesTo( INT32 sGridNo, INT8 bTeam )
|
||||||
{
|
{
|
||||||
INT32 iLoop2;
|
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
|
|
||||||
// All enemy teams become aware of a very important "noise" coming from here!
|
// All enemy teams become aware of a very important "noise" coming from here!
|
||||||
@@ -36,9 +35,10 @@ void CallAvailableTeamEnemiesTo( INT32 sGridNo, INT8 bTeam )
|
|||||||
gubPublicNoiseVolume[bTeam] = MAX_MISC_NOISE_DURATION;
|
gubPublicNoiseVolume[bTeam] = MAX_MISC_NOISE_DURATION;
|
||||||
|
|
||||||
// new situation for everyone;
|
// new situation for everyone;
|
||||||
iLoop2 = gTacticalStatus.Team[ bTeam ].bFirstID;
|
SoldierID iLoop2 = gTacticalStatus.Team[ bTeam ].bFirstID;
|
||||||
for ( pSoldier = MercPtrs[iLoop2]; iLoop2 <= gTacticalStatus.Team[ bTeam ].bLastID; iLoop2++, pSoldier++ )
|
for ( ; iLoop2 <= gTacticalStatus.Team[ bTeam ].bLastID; ++iLoop2 )
|
||||||
{
|
{
|
||||||
|
pSoldier = iLoop2;
|
||||||
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE)
|
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE)
|
||||||
{
|
{
|
||||||
SetNewSituation( pSoldier );
|
SetNewSituation( pSoldier );
|
||||||
@@ -54,7 +54,6 @@ void CallAvailableKingpinMenTo( INT32 sGridNo )
|
|||||||
// like call all enemies, but only affects civgroup KINGPIN guys with
|
// like call all enemies, but only affects civgroup KINGPIN guys with
|
||||||
// NO PROFILE
|
// NO PROFILE
|
||||||
|
|
||||||
INT32 iLoop2;
|
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
|
|
||||||
// All enemy teams become aware of a very important "noise" coming from here!
|
// All enemy teams become aware of a very important "noise" coming from here!
|
||||||
@@ -67,9 +66,10 @@ void CallAvailableKingpinMenTo( INT32 sGridNo )
|
|||||||
|
|
||||||
// new situation for everyone...
|
// new situation for everyone...
|
||||||
|
|
||||||
iLoop2 = gTacticalStatus.Team[ CIV_TEAM ].bFirstID;
|
SoldierID iLoop2 = gTacticalStatus.Team[ CIV_TEAM ].bFirstID;
|
||||||
for ( pSoldier = MercPtrs[iLoop2]; iLoop2 <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; iLoop2++, pSoldier++ )
|
for ( ; iLoop2 <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++iLoop2 )
|
||||||
{
|
{
|
||||||
|
pSoldier = iLoop2;
|
||||||
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE && pSoldier->ubCivilianGroup == KINGPIN_CIV_GROUP && pSoldier->ubProfile == NO_PROFILE)
|
if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE && pSoldier->ubCivilianGroup == KINGPIN_CIV_GROUP && pSoldier->ubProfile == NO_PROFILE)
|
||||||
{
|
{
|
||||||
SetNewSituation( pSoldier );
|
SetNewSituation( pSoldier );
|
||||||
|
|||||||
+14
-14
@@ -72,7 +72,6 @@ BOOLEAN FindAutobandageClimbPoint( INT32 sDesiredGridNo, BOOLEAN fClimbUp )
|
|||||||
|
|
||||||
BOOLEAN FullPatientCheck( SOLDIERTYPE * pPatient )
|
BOOLEAN FullPatientCheck( SOLDIERTYPE * pPatient )
|
||||||
{
|
{
|
||||||
UINT16 cnt;
|
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
|
|
||||||
if ( CanCharacterAutoBandageTeammate( pPatient ) )
|
if ( CanCharacterAutoBandageTeammate( pPatient ) )
|
||||||
@@ -90,9 +89,10 @@ BOOLEAN FullPatientCheck( SOLDIERTYPE * pPatient )
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// run though the list of chars on team
|
// run though the list of chars on team
|
||||||
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;
|
||||||
// can this character help out?
|
// can this character help out?
|
||||||
if ( CanCharacterAutoBandageTeammate( pSoldier ) == TRUE )
|
if ( CanCharacterAutoBandageTeammate( pSoldier ) == TRUE )
|
||||||
{
|
{
|
||||||
@@ -119,17 +119,16 @@ BOOLEAN FullPatientCheck( SOLDIERTYPE * pPatient )
|
|||||||
BOOLEAN CanAutoBandage( BOOLEAN fDoFullCheck )
|
BOOLEAN CanAutoBandage( BOOLEAN fDoFullCheck )
|
||||||
{
|
{
|
||||||
// returns false if we should stop being in auto-bandage mode
|
// returns false if we should stop being in auto-bandage mode
|
||||||
UINT16 cnt;
|
|
||||||
UINT16 ubMedics = 0, ubPatients = 0;
|
UINT16 ubMedics = 0, ubPatients = 0;
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
static SoldierID ubIDForFullCheck = NOBODY;
|
static SoldierID ubIDForFullCheck = NOBODY;
|
||||||
|
|
||||||
// run though the list of chars on team
|
// run though the list of chars on team
|
||||||
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)
|
||||||
{
|
{
|
||||||
// can this character help out?
|
// can this character help out?
|
||||||
if( CanCharacterAutoBandageTeammate( pSoldier ) == TRUE )
|
if( CanCharacterAutoBandageTeammate( cnt ) == TRUE )
|
||||||
{
|
{
|
||||||
// yep, up the number of medics in sector
|
// yep, up the number of medics in sector
|
||||||
ubMedics++;
|
ubMedics++;
|
||||||
@@ -143,8 +142,9 @@ BOOLEAN CanAutoBandage( BOOLEAN fDoFullCheck )
|
|||||||
}
|
}
|
||||||
|
|
||||||
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
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;
|
||||||
// can this character be helped out by a teammate?
|
// can this character be helped out by a teammate?
|
||||||
if ( CanCharacterBeAutoBandagedByTeammate( pSoldier ) == TRUE )
|
if ( CanCharacterBeAutoBandagedByTeammate( pSoldier ) == TRUE )
|
||||||
{
|
{
|
||||||
@@ -227,7 +227,6 @@ BOOLEAN CanCharacterBeAutoBandagedByTeammate( SOLDIERTYPE *pSoldier )
|
|||||||
|
|
||||||
INT8 FindBestPatient( SOLDIERTYPE * pSoldier, BOOLEAN * pfDoClimb )
|
INT8 FindBestPatient( SOLDIERTYPE * pSoldier, BOOLEAN * pfDoClimb )
|
||||||
{
|
{
|
||||||
UINT16 cnt;
|
|
||||||
UINT8 cnt2;
|
UINT8 cnt2;
|
||||||
INT32 bBestPriority = 0, sBestAdjGridNo = NOWHERE;
|
INT32 bBestPriority = 0, sBestAdjGridNo = NOWHERE;
|
||||||
INT32 sPatientGridNo = NOWHERE, sBestPatientGridNo = NOWHERE;
|
INT32 sPatientGridNo = NOWHERE, sBestPatientGridNo = NOWHERE;
|
||||||
@@ -244,9 +243,10 @@ INT8 FindBestPatient( SOLDIERTYPE * pSoldier, BOOLEAN * pfDoClimb )
|
|||||||
gubGlobalPathFlags = PATH_THROUGH_PEOPLE;
|
gubGlobalPathFlags = PATH_THROUGH_PEOPLE;
|
||||||
|
|
||||||
// search for someone who needs aid
|
// search for someone who needs aid
|
||||||
cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID;
|
||||||
for ( pPatient = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; cnt++,pPatient++)
|
for ( ; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pPatient = cnt;
|
||||||
if ( !(pPatient->bActive) || !(pPatient->bInSector) )
|
if ( !(pPatient->bActive) || !(pPatient->bInSector) )
|
||||||
{
|
{
|
||||||
continue; // NEXT!!!
|
continue; // NEXT!!!
|
||||||
@@ -475,13 +475,13 @@ INT8 DecideAutoBandage( SOLDIERTYPE * pSoldier )
|
|||||||
BOOLEAN DoctorIsPresent( SOLDIERTYPE * pPatient, BOOLEAN fOnDoctorAssignmentCheck )
|
BOOLEAN DoctorIsPresent( SOLDIERTYPE * pPatient, BOOLEAN fOnDoctorAssignmentCheck )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE * pMedic = NULL;
|
SOLDIERTYPE * pMedic = NULL;
|
||||||
UINT16 cnt;
|
|
||||||
INT8 bSlot;
|
INT8 bSlot;
|
||||||
BOOLEAN fDoctorHasBeenFound = FALSE;
|
BOOLEAN fDoctorHasBeenFound = FALSE;
|
||||||
|
|
||||||
cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID;
|
||||||
for ( pMedic = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; cnt++,pMedic++)
|
for ( ; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pMedic = cnt;
|
||||||
if ( !(pMedic->bActive) || !(pMedic->bInSector) || ( pMedic->flags.uiStatusFlags & SOLDIER_VEHICLE ) || (pMedic->bAssignment == VEHICLE ) )
|
if ( !(pMedic->bActive) || !(pMedic->bInSector) || ( pMedic->flags.uiStatusFlags & SOLDIER_VEHICLE ) || (pMedic->bAssignment == VEHICLE ) )
|
||||||
{
|
{
|
||||||
// is nowhere around!
|
// is nowhere around!
|
||||||
|
|||||||
+6
-6
@@ -2913,7 +2913,6 @@ void TriggerClosestMercWhoCanSeeNPC( UINT8 ubNPC, NPCQuoteInfo *pQuotePtr )
|
|||||||
UINT16 ubNumMercs = 0;
|
UINT16 ubNumMercs = 0;
|
||||||
UINT16 ubChosenMerc;
|
UINT16 ubChosenMerc;
|
||||||
SOLDIERTYPE *pTeamSoldier, *pSoldier;
|
SOLDIERTYPE *pTeamSoldier, *pSoldier;
|
||||||
INT32 cnt;
|
|
||||||
|
|
||||||
// First get pointer to NPC
|
// First get pointer to NPC
|
||||||
pSoldier = FindSoldierByProfileID( ubNPC, FALSE );
|
pSoldier = FindSoldierByProfileID( ubNPC, FALSE );
|
||||||
@@ -2921,11 +2920,12 @@ void TriggerClosestMercWhoCanSeeNPC( UINT8 ubNPC, NPCQuoteInfo *pQuotePtr )
|
|||||||
// 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 ) && pTeamSoldier->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY )
|
if ( OK_INSECTOR_MERC( pTeamSoldier ) && pTeamSoldier->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY )
|
||||||
{
|
{
|
||||||
@@ -3649,7 +3649,6 @@ void TriggerFriendWithHostileQuote( UINT8 ubNPC )
|
|||||||
UINT16 ubNumMercsAvailable = 0, ubChosenMerc;
|
UINT16 ubNumMercsAvailable = 0, ubChosenMerc;
|
||||||
SOLDIERTYPE * pTeamSoldier;
|
SOLDIERTYPE * pTeamSoldier;
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
INT32 cnt;
|
|
||||||
INT8 bTeam;
|
INT8 bTeam;
|
||||||
|
|
||||||
// First get pointer to NPC
|
// First get pointer to NPC
|
||||||
@@ -3663,11 +3662,12 @@ void TriggerFriendWithHostileQuote( UINT8 ubNPC )
|
|||||||
// Loop through all our guys and find one to yell
|
// Loop through all our guys and find one to yell
|
||||||
|
|
||||||
// set up soldier ptr as first element in mercptrs list
|
// set up soldier ptr as first element in mercptrs list
|
||||||
cnt = gTacticalStatus.Team[ bTeam ].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[ bTeam ].bFirstID;
|
||||||
|
|
||||||
// run through list
|
// run through list
|
||||||
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ bTeam ].bLastID; cnt++,pTeamSoldier++ )
|
for ( ; cnt <= gTacticalStatus.Team[ bTeam ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
// Add guy if he's a candidate...
|
// Add guy if he's a candidate...
|
||||||
if ( pTeamSoldier->bActive && pSoldier->bInSector && pTeamSoldier->stats.bLife >= OKLIFE && pTeamSoldier->bBreath >= OKBREATH && pTeamSoldier->aiData.bOppCnt > 0 && pTeamSoldier->ubProfile != NO_PROFILE )
|
if ( pTeamSoldier->bActive && pSoldier->bInSector && pTeamSoldier->stats.bLife >= OKLIFE && pTeamSoldier->bBreath >= OKBREATH && pTeamSoldier->aiData.bOppCnt > 0 && pTeamSoldier->ubProfile != NO_PROFILE )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3283,13 +3283,12 @@ void BillyBlocksDoorCallback( void )
|
|||||||
BOOLEAN HookerInRoom( UINT16 usRoom )
|
BOOLEAN HookerInRoom( UINT16 usRoom )
|
||||||
{
|
{
|
||||||
//DBrot: More Rooms
|
//DBrot: More Rooms
|
||||||
UINT16 ubLoop;//, ubTempRoom;
|
|
||||||
UINT16 usTempRoom;
|
UINT16 usTempRoom;
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
|
|
||||||
for ( 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 )
|
||||||
{
|
{
|
||||||
pSoldier = MercPtrs[ ubLoop ];
|
pSoldier = ubLoop;
|
||||||
|
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE && pSoldier->aiData.bNeutral && pSoldier->ubBodyType == MINICIV )
|
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE && pSoldier->aiData.bNeutral && pSoldier->ubBodyType == MINICIV )
|
||||||
{
|
{
|
||||||
@@ -4292,7 +4291,7 @@ void HandleExplosionQueue( void )
|
|||||||
|
|
||||||
if (gfExplosionQueueMayHaveChangedSight)
|
if (gfExplosionQueueMayHaveChangedSight)
|
||||||
{
|
{
|
||||||
UINT16 ubLoop;
|
SoldierID ubLoop;
|
||||||
SOLDIERTYPE * pTeamSoldier;
|
SOLDIERTYPE * pTeamSoldier;
|
||||||
|
|
||||||
// set variable so we may at least have someone to resolve interrupts vs
|
// set variable so we may at least have someone to resolve interrupts vs
|
||||||
@@ -4301,8 +4300,9 @@ void HandleExplosionQueue( void )
|
|||||||
|
|
||||||
// call fov code
|
// call fov code
|
||||||
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||||
for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ )
|
for ( ; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubLoop )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = ubLoop;
|
||||||
if ( pTeamSoldier->bActive && pTeamSoldier->bInSector )
|
if ( pTeamSoldier->bActive && pTeamSoldier->bInSector )
|
||||||
{
|
{
|
||||||
RevealRoofsAndItems( pTeamSoldier, TRUE, FALSE, pTeamSoldier->pathing.bLevel, FALSE );
|
RevealRoofsAndItems( pTeamSoldier, TRUE, FALSE, pTeamSoldier->pathing.bLevel, FALSE );
|
||||||
@@ -4442,17 +4442,17 @@ void HandleExplosionWarningAnimations( )
|
|||||||
// soldiers
|
// soldiers
|
||||||
if (!fShow)
|
if (!fShow)
|
||||||
{
|
{
|
||||||
for (UINT32 ubID = gTacticalStatus.Team[OUR_TEAM].bFirstID; ubID <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++ubID)
|
for ( SoldierID ubID = gTacticalStatus.Team[OUR_TEAM].bFirstID; ubID <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++ubID)
|
||||||
{
|
{
|
||||||
if (ubID != pSoldier->ubID &&
|
if (ubID != pSoldier->ubID &&
|
||||||
MercPtrs[ubID] &&
|
ubID != NOBODY &&
|
||||||
MercPtrs[ubID]->sGridNo == sSpot &&
|
ubID->sGridNo == sSpot &&
|
||||||
MercPtrs[ubID]->bVisible == TRUE &&
|
ubID->bVisible == TRUE &&
|
||||||
MercPtrs[ubID]->pathing.bLevel == bLevel &&
|
ubID->pathing.bLevel == bLevel &&
|
||||||
gAnimControl[MercPtrs[ubID]->usAnimState].ubEndHeight == ANIM_PRONE &&
|
gAnimControl[ubID->usAnimState].ubEndHeight == ANIM_PRONE &&
|
||||||
!Water(MercPtrs[ubID]->sGridNo, MercPtrs[ubID]->pathing.bLevel) &&
|
!Water(ubID->sGridNo, ubID->pathing.bLevel) &&
|
||||||
pSoldier->ubBodyType <= REGFEMALE &&
|
pSoldier->ubBodyType <= REGFEMALE &&
|
||||||
(MercPtrs[ubID]->bTeam == pSoldier->bTeam || MercPtrs[ubID]->IsUnconscious() || MercPtrs[ubID]->stats.bLife < OKLIFE))
|
(ubID->bTeam == pSoldier->bTeam || ubID->IsUnconscious() || ubID->stats.bLife < OKLIFE))
|
||||||
{
|
{
|
||||||
fShow = TRUE;
|
fShow = TRUE;
|
||||||
}
|
}
|
||||||
@@ -5308,7 +5308,6 @@ void UpdateSAMDoneRepair( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ )
|
|||||||
void HandleBuldingDestruction( INT32 sGridNo, SoldierID ubOwner )
|
void HandleBuldingDestruction( INT32 sGridNo, SoldierID ubOwner )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE * pSoldier;
|
SOLDIERTYPE * pSoldier;
|
||||||
UINT16 cnt;
|
|
||||||
|
|
||||||
if ( ubOwner == NOBODY )
|
if ( ubOwner == NOBODY )
|
||||||
{
|
{
|
||||||
@@ -5324,9 +5323,10 @@ void HandleBuldingDestruction( INT32 sGridNo, SoldierID ubOwner )
|
|||||||
if ( sGridNo == NOWHERE || !InARoom( sGridNo, NULL ) )
|
if ( sGridNo == NOWHERE || !InARoom( sGridNo, NULL ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID;
|
||||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; cnt++ ,pSoldier++ )
|
for ( ; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++cnt )
|
||||||
{
|
{
|
||||||
|
pSoldier = cnt;
|
||||||
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife && pSoldier->aiData.bNeutral )
|
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife && pSoldier->aiData.bNeutral )
|
||||||
{
|
{
|
||||||
if ( pSoldier->ubProfile != NO_PROFILE )
|
if ( pSoldier->ubProfile != NO_PROFILE )
|
||||||
|
|||||||
@@ -1336,10 +1336,11 @@ INT32 RandomGridNo()
|
|||||||
BOOLEAN GridNoNearPlayerMercs( INT32 sGridNo, INT16 sRadius )
|
BOOLEAN GridNoNearPlayerMercs( INT32 sGridNo, INT16 sRadius )
|
||||||
{
|
{
|
||||||
SOLDIERTYPE* pTeamSoldier = NULL;
|
SOLDIERTYPE* pTeamSoldier = NULL;
|
||||||
INT32 cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID;
|
SoldierID cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID;
|
||||||
INT32 lastid = gTacticalStatus.Team[ OUR_TEAM ].bLastID;
|
SoldierID lastid = gTacticalStatus.Team[ OUR_TEAM ].bLastID;
|
||||||
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt < lastid; ++cnt, ++pTeamSoldier)
|
for ( ; cnt < lastid; ++cnt )
|
||||||
{
|
{
|
||||||
|
pTeamSoldier = cnt;
|
||||||
if ( pTeamSoldier && pTeamSoldier->bActive && pTeamSoldier->bInSector )
|
if ( pTeamSoldier && pTeamSoldier->bActive && pTeamSoldier->bInSector )
|
||||||
{
|
{
|
||||||
if ( PythSpacesAway(sGridNo, pTeamSoldier->sGridNo) < sRadius )
|
if ( PythSpacesAway(sGridNo, pTeamSoldier->sGridNo) < sRadius )
|
||||||
|
|||||||
@@ -227,7 +227,7 @@ void InitTacticalPlacementGUI()
|
|||||||
{
|
{
|
||||||
islocked=0;//hayden
|
islocked=0;//hayden
|
||||||
VOBJECT_DESC VObjectDesc;
|
VOBJECT_DESC VObjectDesc;
|
||||||
INT32 i, xp, yp;
|
INT32 xp, yp;
|
||||||
UINT8 ubFaceIndex;
|
UINT8 ubFaceIndex;
|
||||||
gfTacticalPlacementGUIActive = TRUE;
|
gfTacticalPlacementGUIActive = TRUE;
|
||||||
gfTacticalPlacementGUIDirty = TRUE;
|
gfTacticalPlacementGUIDirty = TRUE;
|
||||||
@@ -325,9 +325,9 @@ void InitTacticalPlacementGUI()
|
|||||||
//First pass: Count the number of mercs that are going to be placed by the player.
|
//First pass: Count the number of mercs that are going to be placed by the player.
|
||||||
// This determines the size of the array we will allocate.
|
// This determines the size of the array we will allocate.
|
||||||
giPlacements = 0;
|
giPlacements = 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->flags.fBetweenSectors &&
|
if( pSoldier->bActive && !pSoldier->flags.fBetweenSectors &&
|
||||||
CurrentBattleSectorIs( pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ ) &&
|
CurrentBattleSectorIs( pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ ) &&
|
||||||
!( pSoldier->flags.uiStatusFlags & ( SOLDIER_VEHICLE ) ) && // ATE Ignore vehicles
|
!( pSoldier->flags.uiStatusFlags & ( SOLDIER_VEHICLE ) ) && // ATE Ignore vehicles
|
||||||
@@ -345,9 +345,9 @@ void InitTacticalPlacementGUI()
|
|||||||
Assert( gMercPlacement );
|
Assert( gMercPlacement );
|
||||||
//Second pass: Assign the mercs to their respective slots.
|
//Second pass: Assign the mercs to their respective slots.
|
||||||
giPlacements = 0;
|
giPlacements = 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.fBetweenSectors &&
|
if( pSoldier->bActive && pSoldier->stats.bLife && !pSoldier->flags.fBetweenSectors &&
|
||||||
CurrentBattleSectorIs( pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ ) &&
|
CurrentBattleSectorIs( pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ ) &&
|
||||||
pSoldier->bAssignment != ASSIGNMENT_POW &&
|
pSoldier->bAssignment != ASSIGNMENT_POW &&
|
||||||
@@ -426,7 +426,7 @@ void InitTacticalPlacementGUI()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//add all the faces now
|
//add all the faces now
|
||||||
for( i = 0; i < giPlacements; ++i )
|
for( INT32 i = 0; i < giPlacements; ++i )
|
||||||
{
|
{
|
||||||
VObjectDesc.fCreateFlags = VOBJECT_CREATE_FROMFILE;
|
VObjectDesc.fCreateFlags = VOBJECT_CREATE_FROMFILE;
|
||||||
|
|
||||||
@@ -483,7 +483,7 @@ void InitTacticalPlacementGUI()
|
|||||||
{
|
{
|
||||||
ButtonList[ iTPButtons[ GROUP_BUTTON ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
ButtonList[ iTPButtons[ GROUP_BUTTON ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
||||||
|
|
||||||
for( i = 0; i < giPlacements; ++i )
|
for( INT32 i = 0; i < giPlacements; ++i )
|
||||||
{ //go from the currently selected soldier to the end
|
{ //go from the currently selected soldier to the end
|
||||||
if( !gMercPlacement[ i ].fPlaced )
|
if( !gMercPlacement[ i ].fPlaced )
|
||||||
{ //Found an unplaced merc. Select him.
|
{ //Found an unplaced merc. Select him.
|
||||||
|
|||||||
Reference in New Issue
Block a user