void DoneFadeOutKilledQueen( void ) { INT32 cnt; SOLDIERTYPE *pSoldier, *pTeamSoldier; // For one, loop through our current squad and move them over cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // look for all mercs on the same team, for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++) { // Are we in this sector, On the current squad? if ( pSoldier->bActive && pSoldier->bLife >= OKLIFE && pSoldier->bInSector && pSoldier->bAssignment == CurrentSquad( ) ) { gfTacticalTraversal = TRUE; SetGroupSectorValue( 3, MAP_ROW_P, 0, pSoldier->ubGroupID ); // Set next sectore pSoldier->sSectorX = 3; pSoldier->sSectorY = MAP_ROW_P; pSoldier->bSectorZ = 0; // Set gridno pSoldier->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; pSoldier->usStrategicInsertionData = 5687; // Set direction to face.... pSoldier->ubInsertionDirection = 100 + NORTHWEST; } } // Kill all enemies in world..... cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; // look for all mercs on the same team, for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; cnt++,pTeamSoldier++) { // Are we active and in sector..... if ( pTeamSoldier->bActive ) { // For sure for flag thet they are dead is not set // Check for any more badguys // ON THE STRAGETY LAYER KILL BAD GUYS! if ( !pTeamSoldier->bNeutral && (pTeamSoldier->bSide != gbPlayerNum ) ) { ProcessQueenCmdImplicationsOfDeath( pSoldier ); } } } // 'End' battle ExitCombatMode(); gTacticalStatus.fLastBattleWon = TRUE; // Set enemy presence to false gTacticalStatus.fEnemyInSector = FALSE; SetMusicMode( MUSIC_TACTICAL_VICTORY ); HandleMoraleEvent( NULL, MORALE_QUEEN_BATTLE_WON, 3, MAP_ROW_P, 0 ); HandleGlobalLoyaltyEvent( GLOBAL_LOYALTY_QUEEN_BATTLE_WON, 3, MAP_ROW_P, 0 ); SetMusicMode( MUSIC_TACTICAL_VICTORY ); SetThisSectorAsPlayerControlled( gWorldSectorX, gWorldSectorY, gbWorldSectorZ, TRUE ); // ATE: Force change of level set z to 1 gbWorldSectorZ = 1; // Clear out dudes....... SectorInfo[ SEC_P3 ].ubNumAdmins = 0; SectorInfo[ SEC_P3 ].ubNumTroops = 0; SectorInfo[ SEC_P3 ].ubNumElites = 0; SectorInfo[ SEC_P3 ].ubAdminsInBattle = 0; SectorInfo[ SEC_P3 ].ubTroopsInBattle = 0; SectorInfo[ SEC_P3 ].ubElitesInBattle = 0; // ATE: GEt rid of elliot in P3... gMercProfiles[ ELLIOT ].sSectorX = 1; ChangeNpcToDifferentSector( DEREK, 3, MAP_ROW_P, 0 ); ChangeNpcToDifferentSector( OLIVER, 3, MAP_ROW_P, 0 ); // OK, insertion data found, enter sector! SetCurrentWorldSector( 3, MAP_ROW_P, 0 ); // OK, once down here, adjust the above map with crate info.... gfTacticalTraversal = FALSE; gpTacticalTraversalGroup = NULL; gpTacticalTraversalChosenSoldier = NULL; gFadeInDoneCallback = DoneFadeInKilledQueen; FadeInGameScreen( ); }
BOOLEAN InitNewGame( BOOLEAN fReset ) { INT32 iStartingCash; // static fScreenCount = 0; if( fReset ) { gubScreenCount = 0; return( TRUE ); } // reset meanwhile flags uiMeanWhileFlags = 0; // Reset the selected soldier gusSelectedSoldier = NOBODY; if( gubScreenCount == 0 ) { if( !LoadMercProfiles() ) return(FALSE); } //Initialize the Arms Dealers and Bobby Rays inventory if( gubScreenCount == 0 ) { //Init all the arms dealers inventory InitAllArmsDealers(); InitBobbyRayInventory(); } // clear tactical ClearTacticalMessageQueue( ); // clear mapscreen messages FreeGlobalMessageList(); #ifdef JA2DEMO // IF our first time, go into laptop! InitStrategicLayer(); // Hire demo mercs.... #if defined ( JA2TESTVERSION ) || defined ( JA2DEMO ) DemoHiringOfMercs( ); #endif // Setup initial money AddTransactionToPlayersBook( ANONYMOUS_DEPOSIT, 0, GetWorldTotalMin(), 20500 ); #ifdef GERMAN //The different mercs are slightly more expensive. This adds that difference. AddTransactionToPlayersBook( ANONYMOUS_DEPOSIT, 0, GetWorldTotalMin(), 1075 ); #endif if ( !SetCurrentWorldSector( 1, 16, 0 ) ) { } SetLaptopExitScreen( MAP_SCREEN ); FadeInGameScreen( ); EnterTacticalScreen( ); #else // IF our first time, go into laptop! if ( gubScreenCount == 0 ) { //Init the laptop here InitLaptopAndLaptopScreens(); InitStrategicLayer(); // Set new game flag SetLaptopNewGameFlag( ); // this is for the "mercs climbing down from a rope" animation, NOT Skyrider!! ResetHeliSeats( ); // Setup two new messages! AddPreReadEmail(OLD_ENRICO_1,OLD_ENRICO_1_LENGTH,MAIL_ENRICO, GetWorldTotalMin() ); AddPreReadEmail(OLD_ENRICO_2,OLD_ENRICO_2_LENGTH,MAIL_ENRICO, GetWorldTotalMin() ); AddPreReadEmail(RIS_REPORT,RIS_REPORT_LENGTH,RIS_EMAIL, GetWorldTotalMin() ); AddPreReadEmail(OLD_ENRICO_3,OLD_ENRICO_3_LENGTH,MAIL_ENRICO, GetWorldTotalMin() ); AddEmail(IMP_EMAIL_INTRO,IMP_EMAIL_INTRO_LENGTH,CHAR_PROFILE_SITE, GetWorldTotalMin() ); //AddEmail(ENRICO_CONGRATS,ENRICO_CONGRATS_LENGTH,MAIL_ENRICO, GetWorldTotalMin() ); // ATE: Set starting cash.... switch( gGameOptions.ubDifficultyLevel ) { case DIF_LEVEL_EASY: iStartingCash = 45000; break; case DIF_LEVEL_MEDIUM: iStartingCash = 35000; break; case DIF_LEVEL_HARD: iStartingCash = 30000; break; default: Assert(0); return( FALSE ); } // Setup initial money AddTransactionToPlayersBook( ANONYMOUS_DEPOSIT, 0, GetWorldTotalMin(), iStartingCash ); { UINT32 uiDaysTimeMercSiteAvailable = Random( 2 ) + 1; // schedule email for message from spec at 7am 3 days in the future AddFutureDayStrategicEvent( EVENT_DAY3_ADD_EMAIL_FROM_SPECK, 60*7, 0, uiDaysTimeMercSiteAvailable ); } #ifdef CRIPPLED_VERSION { UINT32 cnt; //loop through the first 20 AIM mercs and set them to be away for( cnt = 0; cnt < 20; cnt++) { gMercProfiles[ cnt ].bMercStatus = MERC_WORKING_ELSEWHERE; gMercProfiles[ cnt ].uiDayBecomesAvailable = 14; // 14 days should be ok considering crippled version only goes to day 7 } } //Add an event to check for the end of the crippled version AddEveryDayStrategicEvent( EVENT_CRIPPLED_VERSION_END_GAME_CHECK, 0, 0 ); #endif SetLaptopExitScreen( INIT_SCREEN ); SetPendingNewScreen(LAPTOP_SCREEN); gubScreenCount = 1; //Set the fact the game is in progress gTacticalStatus.fHasAGameBeenStarted = TRUE; return( TRUE ); } /* if( ( guiExitScreen == MAP_SCREEN ) && ( LaptopSaveInfo.gfNewGameLaptop ) ) { SetLaptopExitScreen( GAME_SCREEN ); return( TRUE ); } */ if ( gubScreenCount == 1 ) { // OK , FADE HERE //BeginFade( INIT_SCREEN, 35, FADE_OUT_REALFADE, 5 ); //BeginFade( INIT_SCREEN, 35, FADE_OUT_VERSION_FASTER, 25 ); //BeginFade( INIT_SCREEN, 35, FADE_OUT_VERSION_SIDE, 0 ); gubScreenCount = 2; return( TRUE ); } /* if ( gubScreenCount == 2 ) { if ( !SetCurrentWorldSector( 9, 1, 0 ) ) { } SetLaptopExitScreen( MAP_SCREEN ); FadeInGameScreen( ); EnterTacticalScreen( ); if( gfAtLeastOneMercWasHired == TRUE ) { gubScreenCount = 3; } else { } return( TRUE ); } */ #endif return( TRUE ); }