mirror of
https://github.com/1dot13/source.git
synced 2026-07-29 13:52:17 +02:00
Use SoldierID
This commit is contained in:
+64
-52
@@ -728,9 +728,9 @@ void HandleMoraleEventForSoldier( SOLDIERTYPE * pSoldier, INT8 bMoraleEvent )
|
||||
|
||||
void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, INT16 sMapY, INT8 bMapZ )
|
||||
{
|
||||
UINT16 ubLoop;
|
||||
SOLDIERTYPE * pTeamSoldier;
|
||||
MERCPROFILESTRUCT * pProfile;
|
||||
SoldierID id;
|
||||
SOLDIERTYPE *pTeamSoldier;
|
||||
MERCPROFILESTRUCT *pProfile;
|
||||
|
||||
gfSomeoneSaidMoraleQuote = FALSE;
|
||||
|
||||
@@ -778,9 +778,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I
|
||||
|
||||
case MORALE_BATTLE_WON:
|
||||
// affects everyone to varying degrees
|
||||
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ )
|
||||
id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
for ( ; id <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++id )
|
||||
{
|
||||
pTeamSoldier = id;
|
||||
if ( pTeamSoldier->bActive )
|
||||
{
|
||||
if ( SOLDIER_IN_SECTOR( pTeamSoldier, sMapX, sMapY, bMapZ ) )
|
||||
@@ -797,9 +798,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I
|
||||
break;
|
||||
case MORALE_RAN_AWAY:
|
||||
// affects everyone to varying degrees
|
||||
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ )
|
||||
id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
for ( ; id <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++id )
|
||||
{
|
||||
pTeamSoldier = id;
|
||||
if ( pTeamSoldier->bActive )
|
||||
{
|
||||
// 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_DEIDRANNA_KILLED:
|
||||
// affects everyone, everywhere
|
||||
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ )
|
||||
id = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||
for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id )
|
||||
{
|
||||
pTeamSoldier = id;
|
||||
if ( pTeamSoldier->bActive )
|
||||
{
|
||||
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_AIRSTRIKE:
|
||||
// affects every in sector
|
||||
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ )
|
||||
id = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||
for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id )
|
||||
{
|
||||
pTeamSoldier = id;
|
||||
if ( pTeamSoldier->bActive && SOLDIER_IN_SECTOR( pTeamSoldier, sMapX, sMapY, bMapZ ) )
|
||||
{
|
||||
HandleMoraleEventForSoldier( pTeamSoldier, bMoraleEvent );
|
||||
@@ -913,9 +917,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I
|
||||
Assert( pSoldier );
|
||||
|
||||
// affects everyone
|
||||
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ )
|
||||
id = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||
for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id )
|
||||
{
|
||||
pTeamSoldier = id;
|
||||
if ( pTeamSoldier->bActive )
|
||||
{
|
||||
HandleMoraleEventForSoldier( pTeamSoldier, bMoraleEvent );
|
||||
@@ -927,9 +932,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I
|
||||
Assert( pSoldier );
|
||||
|
||||
// affects everyone, in sector differently than not, extra bonuses if it's a buddy or hated merc
|
||||
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ )
|
||||
id = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||
for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id )
|
||||
{
|
||||
pTeamSoldier = id;
|
||||
if ( pTeamSoldier->bActive && pTeamSoldier->ubProfile != NO_PROFILE)
|
||||
{
|
||||
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)
|
||||
// gentlemen males get unhappy too
|
||||
|
||||
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ )
|
||||
id = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||
for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id )
|
||||
{
|
||||
pTeamSoldier = id;
|
||||
if ( pTeamSoldier->bActive && pTeamSoldier->ubProfile != NO_PROFILE )
|
||||
{
|
||||
if ( WhichHated( pTeamSoldier->ubProfile, pSoldier->ubProfile ) != -1 )
|
||||
@@ -1044,9 +1051,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I
|
||||
|
||||
case MORALE_ENEMYGROUP_COWARD:
|
||||
// affects coward in sector
|
||||
ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||
for ( pTeamSoldier = MercPtrs[ubLoop]; ubLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ubLoop++, pTeamSoldier++ )
|
||||
id = gTacticalStatus.Team[gbPlayerNum].bFirstID;
|
||||
for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id )
|
||||
{
|
||||
pTeamSoldier = id;
|
||||
if ( pTeamSoldier->bActive && (pTeamSoldier->sSectorX == sMapX) && (pTeamSoldier->sSectorY == sMapY) && (pTeamSoldier->bSectorZ == bMapZ) )
|
||||
{
|
||||
if ( DoesMercHavePersonality( pTeamSoldier, CHAR_TRAIT_COWARD ) )
|
||||
@@ -1142,27 +1150,28 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I
|
||||
|
||||
void HourlyMoraleUpdate( void )
|
||||
{
|
||||
UINT16 bMercID, bOtherID, bLastTeamID;
|
||||
INT8 bActualTeamOpinion;
|
||||
INT8 bTeamMoraleModChange, bTeamMoraleModDiff;
|
||||
INT8 bOpinion=-1;
|
||||
INT32 iTotalOpinions;
|
||||
INT8 bNumTeamMembers;
|
||||
INT8 bHighestTeamLeadership = 0;
|
||||
SOLDIERTYPE * pSoldier;
|
||||
SOLDIERTYPE * pOtherSoldier;
|
||||
MERCPROFILESTRUCT * pProfile;
|
||||
BOOLEAN fSameGroupOnly;
|
||||
static INT8 bStrategicMoraleUpdateCounter = 0;
|
||||
BOOLEAN fFoundHated = FALSE;
|
||||
INT8 bHated;
|
||||
SoldierID bMercID, bOtherID, bLastTeamID;
|
||||
INT8 bActualTeamOpinion;
|
||||
INT8 bTeamMoraleModChange, bTeamMoraleModDiff;
|
||||
INT8 bOpinion=-1;
|
||||
INT32 iTotalOpinions;
|
||||
INT8 bNumTeamMembers;
|
||||
INT8 bHighestTeamLeadership = 0;
|
||||
SOLDIERTYPE *pSoldier;
|
||||
SOLDIERTYPE *pOtherSoldier;
|
||||
MERCPROFILESTRUCT *pProfile;
|
||||
BOOLEAN fSameGroupOnly;
|
||||
static INT8 bStrategicMoraleUpdateCounter = 0;
|
||||
BOOLEAN fFoundHated = FALSE;
|
||||
INT8 bHated;
|
||||
|
||||
bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID;
|
||||
|
||||
// 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 ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE &&
|
||||
!(pSoldier->bAssignment == IN_TRANSIT ||
|
||||
@@ -1194,8 +1203,9 @@ void HourlyMoraleUpdate( void )
|
||||
|
||||
// loop through all other mercs
|
||||
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
|
||||
if (bOtherID != bMercID && pOtherSoldier->bActive && pOtherSoldier->ubProfile != NO_PROFILE &&
|
||||
!(pOtherSoldier->bAssignment == IN_TRANSIT ||
|
||||
@@ -1345,13 +1355,12 @@ void HourlyMoraleUpdate( void )
|
||||
|
||||
void HandleSnitchCheck( void )
|
||||
{
|
||||
UINT16 bMercID, bOtherID;
|
||||
INT8 bOpinion = -1;
|
||||
UINT16 bLastTeamID;
|
||||
SOLDIERTYPE* pSoldier;
|
||||
SOLDIERTYPE* pOtherSoldier;
|
||||
MERCPROFILESTRUCT* pProfile;
|
||||
BOOLEAN fSameGroupOnly;
|
||||
SoldierID bMercID, bOtherID, bLastTeamID;
|
||||
INT8 bOpinion = -1;
|
||||
SOLDIERTYPE *pSoldier;
|
||||
SOLDIERTYPE *pOtherSoldier;
|
||||
MERCPROFILESTRUCT *pProfile;
|
||||
BOOLEAN fSameGroupOnly;
|
||||
// anv: save merc id and his negative morale event for snitches
|
||||
std::vector<SnitchEvent> snitcheventvector;
|
||||
|
||||
@@ -1359,8 +1368,9 @@ void HandleSnitchCheck( void )
|
||||
bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID;
|
||||
|
||||
// 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 ( pSoldier && pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE &&
|
||||
!(pSoldier->bAssignment == IN_TRANSIT ||
|
||||
@@ -1383,8 +1393,9 @@ void HandleSnitchCheck( void )
|
||||
}
|
||||
// loop through all other mercs
|
||||
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
|
||||
if ( bOtherID != bMercID && pOtherSoldier && pOtherSoldier->bActive && pOtherSoldier->ubProfile != NO_PROFILE &&
|
||||
!(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 )
|
||||
{
|
||||
UINT16 bSnitchID;
|
||||
SoldierID bSnitchID;
|
||||
INT16 sSnitchingChance = 0;
|
||||
UINT8 ubSnitchProfile;
|
||||
SOLDIERTYPE * pSnitch;
|
||||
@@ -1570,8 +1581,9 @@ void RememberSnitchableEvent( UINT8 ubTargetProfile, UINT8 ubSecondaryTargetProf
|
||||
|
||||
// loop through all other mercs
|
||||
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;
|
||||
// skip past ourselves and all inactive mercs
|
||||
if ( ProfileHasSkillTrait( ubSnitchProfile, SNITCH_NT ) &&
|
||||
@@ -1703,10 +1715,10 @@ void DailyMoraleUpdate(SOLDIERTYPE *pSoldier)
|
||||
// Added by SANDRO
|
||||
BOOLEAN IsShowOffNearBy( SOLDIERTYPE * pSoldier )
|
||||
{
|
||||
UINT32 uiLoop;
|
||||
SOLDIERTYPE * pTeammate;
|
||||
BOOLEAN fOneException = FALSE;
|
||||
BOOLEAN fYesHeIs = FALSE;
|
||||
SoldierID uiLoop;
|
||||
SOLDIERTYPE *pTeammate;
|
||||
BOOLEAN fOneException = FALSE;
|
||||
BOOLEAN fYesHeIs = FALSE;
|
||||
|
||||
if (!pSoldier)
|
||||
{
|
||||
@@ -1717,9 +1729,9 @@ BOOLEAN IsShowOffNearBy( SOLDIERTYPE * pSoldier )
|
||||
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 )
|
||||
{
|
||||
continue;
|
||||
|
||||
Reference in New Issue
Block a user