@@ -1448,216 +1448,13 @@ function DestinationReached()
14481448 `HQPRES .UISkyrangerArrives ();
14491449}
14501450
1451- // Start Issue #1526
1452- // Checks if the definitions are stale and if plot exists and is valid for mission
1453- function bool IsMissionValid ()
1454- {
1455- local MissionDefinition MissionDef ;
1456- local PlotDefinition PlotDef ;
1457- local bool bMissionStale , bPlotStale , bPlotInvalid , bPlotMissing ;
1458-
1459- `TACTICALMISSIONMGR .GetMissionDefinitionForType (GeneratedMission .Mission .sType , MissionDef );
1460-
1461- if (GeneratedMission .Mission != MissionDef )
1462- {
1463- bMissionStale = true ;
1464- }
1465-
1466- if (!`MAPS .DoesMapPackageExist (GeneratedMission .Plot .MapName ))
1467- {
1468- bPlotMissing = true ;
1469- }
1470-
1471- PlotDef = `PARCELMGR .GetPlotDefinition (GeneratedMission .Plot .MapName , GeneratedMission .Biome .strType );
1472- if (GeneratedMission .Plot != PlotDef )
1473- {
1474- bPlotStale = true ;
1475- }
1476-
1477- if (!bMissionStale && !bPlotStale && !bPlotMissing )
1478- {
1479- bPlotInvalid = `PARCELMGR .IsPlotValidForMission (GeneratedMission .Plot , GeneratedMission .Mission );
1480- }
1481-
1482- if (bMissionStale || bPlotMissing || bPlotStale || bPlotInvalid )
1483- {
1484- CHReleaseLog ("ERROR: Mission determined to not be valid, this can happen due to adding/removing mods or mod updates" , 'X2WOTCCommunityHighlander' );
1485- PrintMissionInvalidationText (self );
1486- PrintMissionInformation (self );
1487- return false ;
1488- }
1489- else
1490- {
1491- return true ;
1492- }
1493- }
1494- // End Issue #1526
1495-
1496- // Start Issue #1526
1497- private function bool RebuildMission ()
1498- {
1499- local XComGameStateHistory History ;
1500- local XComGameState NewGameState ;
1501- local XComGameState_Reward MissionReward ;
1502- local XComGameState_MissionSite MissionState ;
1503- local XComGameState_HeadquartersXCom XComHQ ;
1504- local string BattleOpName ;
1505- local int HQMissionDataIndex ;
1506-
1507- History = `XCOMHISTORY ;
1508-
1509- NewGameState = class 'XComGameStateContext_ChangeContainer' .static .CreateChangeState ("CHL: Rebuilding Mission" );
1510- MissionState = XComGameState_MissionSite (NewGameState .ModifyStateObject (class 'XComGameState_MissionSite' , ObjectID ));
1511-
1512- MissionReward = XComGameState_Reward (History .GetGameStateForObjectID (Rewards [0 ].ObjectID ));
1513- BattleOpName = GeneratedMission .BattleOpName ;
1514-
1515- // Rebuilds mission here
1516- MissionState .SetMissionData (MissionReward .GetMyTemplate (), true , GeneratedMission .LevelSeed );
1517- MissionState .GeneratedMission .BattleOpName = BattleOpName ;
1518-
1519- // Reset schedules
1520- MissionState .SelectedMissionData .SelectedMissionScheduleName = '';
1521- MissionState .CacheSelectedMissionData (MissionState .SelectedMissionData .ForceLevel , MissionState .SelectedMissionData .AlertLevel );
1522-
1523- CHReleaseLog ("WARNING: Rebuilt mission, printing new mission data" , 'X2WOTCCommunityHighlander' );
1524- PrintMissionInformation (MissionState );
1525-
1526- if ( MissionState .GetMissionSource () == None || MissionState .GeneratedMission .Mission .sType == "" ||
1527- !`MAPS .DoesMapPackageExist (MissionState .GeneratedMission .Plot .MapName ) ||
1528- !`PARCELMGR .IsPlotValidForMission (MissionState .GeneratedMission .Plot , MissionState .GeneratedMission .Mission ) )
1529- {
1530- CHReleaseLog ("ERROR: Rebuilt mission still determined to be invalid, tactical mission will launch with original mission data" , 'X2WOTCCommunityHighlander' );
1531- PrintMissionInvalidationText (MissionState );
1532-
1533- History .CleanupPendingGameState (NewGameState );
1534- return false ;
1535- }
1536-
1537- GeneratedMission = MissionState .GeneratedMission ;
1538- SelectedMissionData = MissionState .SelectedMissionData ;
1539-
1540- // Replace stale mission data in HQ
1541- XComHQ = XComGameState_HeadquartersXCom (History .GetSingleGameStateObjectForClass (class 'XComGameState_HeadquartersXCom' ));
1542- XComHQ = XComGameState_HeadquartersXCom (NewGameState .ModifyStateObject (class 'XComGameState_HeadquartersXCom' , XComHQ .ObjectID ));
1543-
1544- HQMissionDataIndex = XComHQ .arrGeneratedMissionData .Find ('MissionID' , ObjectID );
1545- if (HQMissionDataIndex != INDEX_NONE )
1546- {
1547- XComHQ .arrGeneratedMissionData [HQMissionDataIndex ] = GeneratedMission ;
1548- }
1549-
1550- CHReleaseLog ("WARNING: Rebuilt mission determined valid, tactical mission will launch with rebuilt mission data" , 'X2WOTCCommunityHighlander' );
1551- `XCOMGAME .GameRuleset .SubmitGameState (NewGameState );
1552- return true ;
1553- }
1554- // End Issue #1526
1555-
1556- // Start Issue #1526
1557- private function PrintMissionInformation (XComGameState_MissionSite MissionSite )
1558- {
1559- local int i ;
1560- CHReleaseLog ("" , 'X2WOTCCommunityHighlander' );
1561- CHReleaseLog ("-- MISSION DATA --" , 'X2WOTCCommunityHighlander' );
1562- CHReleaseLog ("Mission ObjectID:" @ MissionSite .ObjectID , 'X2WOTCCommunityHighlander' );
1563- CHReleaseLog ("Mission Region ObjectID:" @ MissionSite .Region .ObjectID , 'X2WOTCCommunityHighlander' );
1564- CHReleaseLog ("Mission Source:" @ MissionSite .Source , 'X2WOTCCommunityHighlander' );
1565- CHReleaseLog ("Mission Name:" @ MissionSite .GeneratedMission .Mission .MissionName , 'X2WOTCCommunityHighlander' );
1566- CHReleaseLog ("Mission Type:" @ MissionSite .GeneratedMission .Mission .sType , 'X2WOTCCommunityHighlander' );
1567- CHReleaseLog ("Mission Family:" @ MissionSite .GeneratedMission .Mission .MissionFamily , 'X2WOTCCommunityHighlander' );
1568- CHReleaseLog ("Mission Biome:" @ MissionSite .GeneratedMission .Biome .strType , 'X2WOTCCommunityHighlander' );
1569-
1570- for (i = 0 ; i < MissionSite .GeneratedMission .Mission .RequiredPlotObjectiveTags .Length ; i ++)
1571- {
1572- CHReleaseLog ("Mission Required Plot Objective Tags:" @ MissionSite .GeneratedMission .Mission .RequiredPlotObjectiveTags [i ], 'X2WOTCCommunityHighlander' );
1573- }
1574- for (i = 0 ; i < MissionSite .GeneratedMission .Mission .ExcludedPlotObjectiveTags .Length ; i ++)
1575- {
1576- CHReleaseLog ("Mission Excluded Plot Objective Tags:" @ MissionSite .GeneratedMission .Mission .ExcludedPlotObjectiveTags [i ], 'X2WOTCCommunityHighlander' );
1577- }
1578- for (i = 0 ; i < MissionSite .GeneratedMission .SitReps .Length ; i ++)
1579- {
1580- CHReleaseLog ("Mission SitReps:" @ MissionSite .GeneratedMission .SitReps [i ], 'X2WOTCCommunityHighlander' );
1581- }
1582- CHReleaseLog ("Plot Mapname:" @ MissionSite .GeneratedMission .Plot .MapName , 'X2WOTCCommunityHighlander' );
1583- CHReleaseLog ("Plot Type:" @ MissionSite .GeneratedMission .Plot .strType , 'X2WOTCCommunityHighlander' );
1584- for (i = 0 ; i < MissionSite .GeneratedMission .Plot .ValidBiomes .Length ; i ++)
1585- {
1586- CHReleaseLog ("Plot Biomes:" @ MissionSite .GeneratedMission .Plot .ValidBiomes [i ], 'X2WOTCCommunityHighlander' );
1587- }
1588- for (i = 0 ; i < MissionSite .GeneratedMission .Plot .ObjectiveTags .Length ; i ++)
1589- {
1590- CHReleaseLog ("Plot Objective Tags:" @ MissionSite .GeneratedMission .Plot .ObjectiveTags [i ], 'X2WOTCCommunityHighlander' );
1591- }
1592- CHReleaseLog ("Mission Forcelevel:" @ MissionSite .SelectedMissionData .ForceLevel , 'X2WOTCCommunityHighlander' );
1593- CHReleaseLog ("Mission Alertlevel:" @ MissionSite .SelectedMissionData .AlertLevel , 'X2WOTCCommunityHighlander' );
1594- CHReleaseLog ("Mission Schedule:" @ MissionSite .SelectedMissionData .SelectedMissionScheduleName , 'X2WOTCCommunityHighlander' );
1595- for (i = 0 ; i < MissionSite .SelectedMissionData .SelectedEncounters .Length ; i ++)
1596- {
1597- CHReleaseLog ("Mission EncounterIDs:" @ MissionSite .SelectedMissionData .SelectedEncounters [i ].SelectedEncounterName , 'X2WOTCCommunityHighlander' );
1598- }
1599-
1600- CHReleaseLog ("-- END MISSION DATA --" , 'X2WOTCCommunityHighlander' );
1601- CHReleaseLog ("" , 'X2WOTCCommunityHighlander' );
1602- }
1603- // End Issue #1526
1604-
1605- // Start Issue #1526
1606- private function PrintMissionInvalidationText (XComGameState_MissionSite MissionSite )
1607- {
1608- local MissionDefinition MissionDef ;
1609- local PlotDefinition PlotDef ;
1610-
1611- `TACTICALMISSIONMGR .GetMissionDefinitionForType (MissionSite .GeneratedMission .Mission .sType , MissionDef );
1612- PlotDef = `PARCELMGR .GetPlotDefinition (MissionSite .GeneratedMission .Plot .MapName , MissionSite .GeneratedMission .Biome .strType );
1613-
1614- CHReleaseLog ("" , 'X2WOTCCommunityHighlander' );
1615- CHReleaseLog ("-- REASON FOR MISSION INVALIDATION --" , 'X2WOTCCommunityHighlander' );
1616- if (MissionSite .GetMissionSource () == None )
1617- {
1618- CHReleaseLog ("Mission source doesn't exist" , 'X2WOTCCommunityHighlander' );
1619- }
1620- if (MissionSite .GeneratedMission .Mission .sType == "" )
1621- {
1622- CHReleaseLog ("Mission definition doesn't exist" , 'X2WOTCCommunityHighlander' );
1623- }
1624- if (MissionSite .GeneratedMission .Mission != MissionDef )
1625- {
1626- CHReleaseLog ("Mission definition is outdated" , 'X2WOTCCommunityHighlander' );
1627- }
1628- if (!`MAPS .DoesMapPackageExist (MissionSite .GeneratedMission .Plot .MapName ))
1629- {
1630- CHReleaseLog ("Plot map doesn't exist" , 'X2WOTCCommunityHighlander' );
1631- }
1632- if (!`PARCELMGR .IsPlotValidForMission (MissionSite .GeneratedMission .Plot , MissionSite .GeneratedMission .Mission ))
1633- {
1634- CHReleaseLog ("Plot is not valid for mission" , 'X2WOTCCommunityHighlander' );
1635- }
1636- if (MissionSite .GeneratedMission .Plot != PlotDef )
1637- {
1638- CHReleaseLog ("Plot definition is outdated" , 'X2WOTCCommunityHighlander' );
1639- }
1640- CHReleaseLog ("-- END MISSION INVALIDATION --" , 'X2WOTCCommunityHighlander' );
1641- CHReleaseLog ("" , 'X2WOTCCommunityHighlander' );
1642- }
1643- // End Issue #1526
1644-
16451451function ConfirmMission ()
16461452{
16471453 local XComGameStateHistory History ;
16481454 local XComGameState_HeadquartersXCom XComHQ ;
16491455 local XGStrategy StrategyGame ;
16501456 local XComGameState NewGameState ;
16511457
1652- /// HL-Docs: ref:Bugfixes; issue:1526
1653- /// Validates the mission before launching a tactical battle, and attempts rebuilding of mission if determined invalid
1654- // Start Issue #1526
1655- if (!IsMissionValid ())
1656- {
1657- RebuildMission ();
1658- }
1659- // End Issue #1526
1660-
16611458 NewGameState = class 'XComGameStateContext_ChangeContainer' .static .CreateChangeState ("Launch Mission Selected" );
16621459 `XEVENTMGR .TriggerEvent ('LaunchMissionSelected' , , , NewGameState );
16631460 if (GetMissionSource ().DataName == 'MissionSource_Final' )
0 commit comments