mirror of
https://github.com/1dot13/source.git
synced 2026-08-05 14:00:23 +02:00
Original Source for 1.13 Mod High Resolution version from 12/06/05
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@21 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
#ifdef PRECOMPILEDHEADERS
|
||||
#include "Tactical All.h"
|
||||
#include "PreBattle Interface.h"
|
||||
#else
|
||||
#include "Soldier Control.h"
|
||||
#include "Militia Control.h"
|
||||
#include "Town Militia.h"
|
||||
#include "Soldier Init List.h"
|
||||
#include "Campaign Types.h"
|
||||
#include "Overhead.h"
|
||||
#include "strategicmap.h"
|
||||
#include "PreBattle Interface.h"
|
||||
#endif
|
||||
|
||||
BOOLEAN gfStrategicMilitiaChangesMade = FALSE;
|
||||
|
||||
void ResetMilitia()
|
||||
{
|
||||
if( gfStrategicMilitiaChangesMade || gTacticalStatus.uiFlags & LOADING_SAVED_GAME )
|
||||
{
|
||||
gfStrategicMilitiaChangesMade = FALSE;
|
||||
RemoveMilitiaFromTactical();
|
||||
PrepareMilitiaForTactical();
|
||||
}
|
||||
}
|
||||
|
||||
void RemoveMilitiaFromTactical()
|
||||
{
|
||||
SOLDIERINITNODE *curr;
|
||||
INT32 i;
|
||||
for( i = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; i <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; i++ )
|
||||
{
|
||||
if( MercPtrs[ i ]->bActive )
|
||||
{
|
||||
TacticalRemoveSoldier( MercPtrs[ i ]->ubID );
|
||||
}
|
||||
}
|
||||
curr = gSoldierInitHead;
|
||||
while( curr )
|
||||
{
|
||||
if( curr->pBasicPlacement->bTeam == MILITIA_TEAM )
|
||||
{
|
||||
curr->pSoldier = NULL;
|
||||
}
|
||||
curr = curr->next;
|
||||
}
|
||||
}
|
||||
|
||||
void PrepareMilitiaForTactical()
|
||||
{
|
||||
SECTORINFO *pSector;
|
||||
// INT32 i;
|
||||
UINT8 ubGreen, ubRegs, ubElites;
|
||||
if( gbWorldSectorZ > 0 )
|
||||
return;
|
||||
|
||||
// Do we have a loaded sector?
|
||||
if ( gWorldSectorX ==0 && gWorldSectorY == 0 )
|
||||
return;
|
||||
|
||||
pSector = &SectorInfo[ SECTOR( gWorldSectorX, gWorldSectorY ) ];
|
||||
ubGreen = pSector->ubNumberOfCivsAtLevel[ GREEN_MILITIA ];
|
||||
ubRegs = pSector->ubNumberOfCivsAtLevel[ REGULAR_MILITIA ];
|
||||
ubElites = pSector->ubNumberOfCivsAtLevel[ ELITE_MILITIA ];
|
||||
AddSoldierInitListMilitia( ubGreen, ubRegs, ubElites );
|
||||
/*
|
||||
for( i = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; i <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; i++ )
|
||||
{
|
||||
if( MercPtrs[ i ]->bInSector )
|
||||
{
|
||||
MercPtrs[ i ]->bAttitude = AGGRESSIVE;
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
void HandleMilitiaPromotions( void )
|
||||
{
|
||||
UINT8 cnt;
|
||||
UINT8 ubMilitiaRank;
|
||||
SOLDIERTYPE * pTeamSoldier;
|
||||
UINT8 ubPromotions;
|
||||
|
||||
gbGreenToElitePromotions = 0;
|
||||
gbGreenToRegPromotions = 0;
|
||||
gbRegToElitePromotions = 0;
|
||||
gbMilitiaPromotions = 0;
|
||||
|
||||
cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID;
|
||||
|
||||
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++, pTeamSoldier++)
|
||||
{
|
||||
if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bLife > 0 )
|
||||
{
|
||||
if ( pTeamSoldier->ubMilitiaKills > 0 )
|
||||
{
|
||||
ubMilitiaRank = SoldierClassToMilitiaRank( pTeamSoldier->ubSoldierClass );
|
||||
ubPromotions = CheckOneMilitiaForPromotion( gWorldSectorX, gWorldSectorY, ubMilitiaRank, pTeamSoldier->ubMilitiaKills );
|
||||
if( ubPromotions )
|
||||
{
|
||||
if( ubPromotions == 2 )
|
||||
{
|
||||
gbGreenToElitePromotions++;
|
||||
gbMilitiaPromotions++;
|
||||
}
|
||||
else if( pTeamSoldier->ubSoldierClass == SOLDIER_CLASS_GREEN_MILITIA )
|
||||
{
|
||||
gbGreenToRegPromotions++;
|
||||
gbMilitiaPromotions++;
|
||||
}
|
||||
else if( pTeamSoldier->ubSoldierClass == SOLDIER_CLASS_REG_MILITIA )
|
||||
{
|
||||
gbRegToElitePromotions++;
|
||||
gbMilitiaPromotions++;
|
||||
}
|
||||
}
|
||||
|
||||
pTeamSoldier->ubMilitiaKills = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if( gbMilitiaPromotions )
|
||||
{
|
||||
// ATE: Problems here with bringing up message box...
|
||||
|
||||
// UINT16 str[ 512 ];
|
||||
// BuildMilitiaPromotionsString( str );
|
||||
// DoScreenIndependantMessageBox( str, MSG_BOX_FLAG_OK, NULL );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user