Skip to content

Commit 22c4e57

Browse files
authored
Merge pull request #1555 from X2CommunityCore/revert-1554-1526-MissionMapThing
Revert "Refactor #1527"
2 parents a235fcf + 8d8c69c commit 22c4e57

3 files changed

Lines changed: 65 additions & 134 deletions

File tree

X2WOTCCommunityHighlander/Localization/XComGame.int

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,6 @@ m_strChangeFace="Use a different face to edit this option"
2626
[CHHelpers]
2727
; Issue #817
2828
m_strFramerateSmoothingDisabledReason = "Framerate Smoothing is disabled by Highlander to allow other mods to work properly. If you previously enabled it, delete this file: \"..\\Documents\\my games\\XCOM2 War of the Chosen\\XComGame\\Config\\XComEngine.ini\" once and restart the game."
29-
; Issue #1526
30-
m_strValidateMissionDialogTitle = "Warning"
31-
m_strValidateMissionDialogTextSuccess = "Mission was invalidated due to errors that can lead to unplayable bugs, and was rebuilt by Highlander to a playable state. Please see the log file for details."
32-
m_strValidateMissionDialogTextFail = "Mission was invalidated due to errors that can lead to unplayable bugs, but failed to be rebuilt by Highlander. This mission is likely to be in an unplayable state. Please see the log file for details."
3329

3430
[VanishingWind_Scamper X2AbilityTemplate]
3531
; Issue #1255 - Add missing localization for Assassin Revealed

X2WOTCCommunityHighlander/Src/XComGame/Classes/CHHelpers.uc

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -287,12 +287,6 @@ var config bool bDisableAutomaticBondPhoto;
287287
var config bool bManualPhotoTakenOnLastMission;
288288
// End Issue #1453
289289

290-
// Start Issue #1526 - localized text for mission validation dialog box
291-
var localized string m_strValidateMissionDialogTitle;
292-
var localized string m_strValidateMissionDialogTextSuccess;
293-
var localized string m_strValidateMissionDialogTextFail;
294-
// End Issue #1526
295-
296290
// Start Issue #885
297291
enum EHLDelegateReturn
298292
{

X2WOTCCommunityHighlander/Src/XComGame/Classes/XComGameState_MissionSite.uc

Lines changed: 65 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -1450,37 +1450,40 @@ function DestinationReached()
14501450

14511451
// Start Issue #1526
14521452
// Checks if the definitions are stale and if plot exists and is valid for mission
1453-
private function bool IsMissionValid(GeneratedMissionData MissionData)
1453+
function bool IsMissionValid()
14541454
{
14551455
local MissionDefinition MissionDef;
14561456
local PlotDefinition PlotDef;
14571457
local bool bMissionStale, bPlotStale, bPlotInvalid, bPlotMissing;
14581458

1459-
`TACTICALMISSIONMGR.GetMissionDefinitionForType(MissionData.Mission.sType, MissionDef);
1459+
`TACTICALMISSIONMGR.GetMissionDefinitionForType(GeneratedMission.Mission.sType, MissionDef);
14601460

1461-
if(MissionData.Mission != MissionDef)
1461+
if(GeneratedMission.Mission != MissionDef)
14621462
{
14631463
bMissionStale = true;
14641464
}
14651465

1466-
if(!`MAPS.DoesMapPackageExist(MissionData.Plot.MapName))
1466+
if(!`MAPS.DoesMapPackageExist(GeneratedMission.Plot.MapName))
14671467
{
14681468
bPlotMissing = true;
14691469
}
14701470

1471-
PlotDef = `PARCELMGR.GetPlotDefinition(MissionData.Plot.MapName, MissionData.Biome.strType);
1472-
if(MissionData.Plot != PlotDef)
1471+
PlotDef = `PARCELMGR.GetPlotDefinition(GeneratedMission.Plot.MapName, GeneratedMission.Biome.strType);
1472+
if(GeneratedMission.Plot != PlotDef)
14731473
{
14741474
bPlotStale = true;
14751475
}
14761476

14771477
if(!bMissionStale && !bPlotStale && !bPlotMissing)
14781478
{
1479-
bPlotInvalid = !`PARCELMGR.IsPlotValidForMission(MissionData.Plot, MissionData.Mission);
1479+
bPlotInvalid = `PARCELMGR.IsPlotValidForMission(GeneratedMission.Plot, GeneratedMission.Mission);
14801480
}
14811481

14821482
if(bMissionStale || bPlotMissing || bPlotStale || bPlotInvalid)
14831483
{
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);
14841487
return false;
14851488
}
14861489
else
@@ -1498,23 +1501,35 @@ private function bool RebuildMission()
14981501
local XComGameState_Reward MissionReward;
14991502
local XComGameState_MissionSite MissionState;
15001503
local XComGameState_HeadquartersXCom XComHQ;
1501-
local int MissionIndex;
1504+
local string BattleOpName;
1505+
local int HQMissionDataIndex;
15021506

15031507
History = `XCOMHISTORY;
1508+
15041509
NewGameState = class'XComGameStateContext_ChangeContainer'.static.CreateChangeState("CHL: Rebuilding Mission");
15051510
MissionState = XComGameState_MissionSite(NewGameState.ModifyStateObject(class'XComGameState_MissionSite', ObjectID));
15061511

15071512
MissionReward = XComGameState_Reward(History.GetGameStateForObjectID(Rewards[0].ObjectID));
1513+
BattleOpName = GeneratedMission.BattleOpName;
15081514

15091515
// Rebuilds mission here
15101516
MissionState.SetMissionData(MissionReward.GetMyTemplate(), true, GeneratedMission.LevelSeed);
1517+
MissionState.GeneratedMission.BattleOpName = BattleOpName;
15111518

15121519
// Reset schedules
15131520
MissionState.SelectedMissionData.SelectedMissionScheduleName = '';
15141521
MissionState.CacheSelectedMissionData(MissionState.SelectedMissionData.ForceLevel, MissionState.SelectedMissionData.AlertLevel);
15151522

1516-
if(!IsMissionValid(MissionState.GeneratedMission))
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) )
15171529
{
1530+
CHReleaseLog("ERROR: Rebuilt mission still determined to be invalid, tactical mission will launch with original mission data", 'X2WOTCCommunityHighlander');
1531+
PrintMissionInvalidationText(MissionState);
1532+
15181533
History.CleanupPendingGameState(NewGameState);
15191534
return false;
15201535
}
@@ -1526,58 +1541,60 @@ private function bool RebuildMission()
15261541
XComHQ = XComGameState_HeadquartersXCom(History.GetSingleGameStateObjectForClass(class'XComGameState_HeadquartersXCom'));
15271542
XComHQ = XComGameState_HeadquartersXCom(NewGameState.ModifyStateObject(class'XComGameState_HeadquartersXCom', XComHQ.ObjectID));
15281543

1529-
MissionIndex = XComHQ.arrGeneratedMissionData.Find('MissionID', ObjectID);
1530-
if(MissionIndex != INDEX_NONE)
1544+
HQMissionDataIndex = XComHQ.arrGeneratedMissionData.Find('MissionID', ObjectID);
1545+
if(HQMissionDataIndex != INDEX_NONE)
15311546
{
1532-
XComHQ.arrGeneratedMissionData[MissionIndex] = MissionState.GeneratedMission;
1547+
XComHQ.arrGeneratedMissionData[HQMissionDataIndex] = GeneratedMission;
15331548
}
15341549

1550+
CHReleaseLog("WARNING: Rebuilt mission determined valid, tactical mission will launch with rebuilt mission data", 'X2WOTCCommunityHighlander');
15351551
`XCOMGAME.GameRuleset.SubmitGameState(NewGameState);
15361552
return true;
15371553
}
1554+
// End Issue #1526
15381555

15391556
// Start Issue #1526
1540-
private function PrintMissionInformation()
1557+
private function PrintMissionInformation(XComGameState_MissionSite MissionSite)
15411558
{
15421559
local int i;
15431560
CHReleaseLog("", 'X2WOTCCommunityHighlander');
15441561
CHReleaseLog("-- MISSION DATA --", 'X2WOTCCommunityHighlander');
1545-
CHReleaseLog("Mission ObjectID:" @ ObjectID, 'X2WOTCCommunityHighlander');
1546-
CHReleaseLog("Mission Region ObjectID:" @ Region.ObjectID, 'X2WOTCCommunityHighlander');
1547-
CHReleaseLog("Mission Source:" @ Source, 'X2WOTCCommunityHighlander');
1548-
CHReleaseLog("Mission Name:" @ GeneratedMission.Mission.MissionName, 'X2WOTCCommunityHighlander');
1549-
CHReleaseLog("Mission Type:" @ GeneratedMission.Mission.sType, 'X2WOTCCommunityHighlander');
1550-
CHReleaseLog("Mission Family:" @ GeneratedMission.Mission.MissionFamily, 'X2WOTCCommunityHighlander');
1551-
CHReleaseLog("Mission Biome:" @ GeneratedMission.Biome.strType, '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');
15521569

1553-
for(i = 0; i < GeneratedMission.Mission.RequiredPlotObjectiveTags.Length; i++)
1570+
for(i = 0; i < MissionSite.GeneratedMission.Mission.RequiredPlotObjectiveTags.Length; i++)
15541571
{
1555-
CHReleaseLog("Mission Required Plot Objective Tags:" @ GeneratedMission.Mission.RequiredPlotObjectiveTags[i], 'X2WOTCCommunityHighlander');
1572+
CHReleaseLog("Mission Required Plot Objective Tags:" @ MissionSite.GeneratedMission.Mission.RequiredPlotObjectiveTags[i], 'X2WOTCCommunityHighlander');
15561573
}
1557-
for(i = 0; i < GeneratedMission.Mission.ExcludedPlotObjectiveTags.Length; i++)
1574+
for(i = 0; i < MissionSite.GeneratedMission.Mission.ExcludedPlotObjectiveTags.Length; i++)
15581575
{
1559-
CHReleaseLog("Mission Excluded Plot Objective Tags:" @ GeneratedMission.Mission.ExcludedPlotObjectiveTags[i], 'X2WOTCCommunityHighlander');
1576+
CHReleaseLog("Mission Excluded Plot Objective Tags:" @ MissionSite.GeneratedMission.Mission.ExcludedPlotObjectiveTags[i], 'X2WOTCCommunityHighlander');
15601577
}
1561-
for(i = 0; i < GeneratedMission.SitReps.Length; i++)
1578+
for(i = 0; i < MissionSite.GeneratedMission.SitReps.Length; i++)
15621579
{
1563-
CHReleaseLog("Mission SitReps:" @ GeneratedMission.SitReps[i], 'X2WOTCCommunityHighlander');
1580+
CHReleaseLog("Mission SitReps:" @ MissionSite.GeneratedMission.SitReps[i], 'X2WOTCCommunityHighlander');
15641581
}
1565-
CHReleaseLog("Plot Mapname:" @ GeneratedMission.Plot.MapName, 'X2WOTCCommunityHighlander');
1566-
CHReleaseLog("Plot Type:" @ GeneratedMission.Plot.strType, 'X2WOTCCommunityHighlander');
1567-
for(i = 0; i < GeneratedMission.Plot.ValidBiomes.Length; i++)
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++)
15681585
{
1569-
CHReleaseLog("Plot Biomes:" @ GeneratedMission.Plot.ValidBiomes[i], 'X2WOTCCommunityHighlander');
1586+
CHReleaseLog("Plot Biomes:" @ MissionSite.GeneratedMission.Plot.ValidBiomes[i], 'X2WOTCCommunityHighlander');
15701587
}
1571-
for(i = 0; i < GeneratedMission.Plot.ObjectiveTags.Length; i++)
1588+
for(i = 0; i < MissionSite.GeneratedMission.Plot.ObjectiveTags.Length; i++)
15721589
{
1573-
CHReleaseLog("Plot Objective Tags:" @ GeneratedMission.Plot.ObjectiveTags[i], 'X2WOTCCommunityHighlander');
1590+
CHReleaseLog("Plot Objective Tags:" @ MissionSite.GeneratedMission.Plot.ObjectiveTags[i], 'X2WOTCCommunityHighlander');
15741591
}
1575-
CHReleaseLog("Mission Forcelevel:" @ SelectedMissionData.ForceLevel, 'X2WOTCCommunityHighlander');
1576-
CHReleaseLog("Mission Alertlevel:" @ SelectedMissionData.AlertLevel, 'X2WOTCCommunityHighlander');
1577-
CHReleaseLog("Mission Schedule:" @ SelectedMissionData.SelectedMissionScheduleName, 'X2WOTCCommunityHighlander');
1578-
for(i = 0; i < SelectedMissionData.SelectedEncounters.Length; i++)
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++)
15791596
{
1580-
CHReleaseLog("Mission EncounterIDs:" @ SelectedMissionData.SelectedEncounters[i].SelectedEncounterName, 'X2WOTCCommunityHighlander');
1597+
CHReleaseLog("Mission EncounterIDs:" @ MissionSite.SelectedMissionData.SelectedEncounters[i].SelectedEncounterName, 'X2WOTCCommunityHighlander');
15811598
}
15821599

15831600
CHReleaseLog("-- END MISSION DATA --", 'X2WOTCCommunityHighlander');
@@ -1586,37 +1603,37 @@ private function PrintMissionInformation()
15861603
// End Issue #1526
15871604

15881605
// Start Issue #1526
1589-
private function PrintMissionInvalidationText()
1606+
private function PrintMissionInvalidationText(XComGameState_MissionSite MissionSite)
15901607
{
15911608
local MissionDefinition MissionDef;
15921609
local PlotDefinition PlotDef;
15931610

1594-
`TACTICALMISSIONMGR.GetMissionDefinitionForType(GeneratedMission.Mission.sType, MissionDef);
1595-
PlotDef = `PARCELMGR.GetPlotDefinition(GeneratedMission.Plot.MapName, GeneratedMission.Biome.strType);
1611+
`TACTICALMISSIONMGR.GetMissionDefinitionForType(MissionSite.GeneratedMission.Mission.sType, MissionDef);
1612+
PlotDef = `PARCELMGR.GetPlotDefinition(MissionSite.GeneratedMission.Plot.MapName, MissionSite.GeneratedMission.Biome.strType);
15961613

15971614
CHReleaseLog("", 'X2WOTCCommunityHighlander');
15981615
CHReleaseLog("-- REASON FOR MISSION INVALIDATION --", 'X2WOTCCommunityHighlander');
1599-
if(GetMissionSource() == None)
1616+
if(MissionSite.GetMissionSource() == None)
16001617
{
16011618
CHReleaseLog("Mission source doesn't exist", 'X2WOTCCommunityHighlander');
16021619
}
1603-
if(GeneratedMission.Mission.sType == "")
1620+
if(MissionSite.GeneratedMission.Mission.sType == "")
16041621
{
16051622
CHReleaseLog("Mission definition doesn't exist", 'X2WOTCCommunityHighlander');
16061623
}
1607-
if(GeneratedMission.Mission != MissionDef)
1624+
if(MissionSite.GeneratedMission.Mission != MissionDef)
16081625
{
16091626
CHReleaseLog("Mission definition is outdated", 'X2WOTCCommunityHighlander');
16101627
}
1611-
if(!`MAPS.DoesMapPackageExist(GeneratedMission.Plot.MapName))
1628+
if(!`MAPS.DoesMapPackageExist(MissionSite.GeneratedMission.Plot.MapName))
16121629
{
16131630
CHReleaseLog("Plot map doesn't exist", 'X2WOTCCommunityHighlander');
16141631
}
1615-
if(!`PARCELMGR.IsPlotValidForMission(GeneratedMission.Plot, GeneratedMission.Mission))
1632+
if(!`PARCELMGR.IsPlotValidForMission(MissionSite.GeneratedMission.Plot, MissionSite.GeneratedMission.Mission))
16161633
{
16171634
CHReleaseLog("Plot is not valid for mission", 'X2WOTCCommunityHighlander');
16181635
}
1619-
if(GeneratedMission.Plot != PlotDef)
1636+
if(MissionSite.GeneratedMission.Plot != PlotDef)
16201637
{
16211638
CHReleaseLog("Plot definition is outdated", 'X2WOTCCommunityHighlander');
16221639
}
@@ -1625,82 +1642,6 @@ private function PrintMissionInvalidationText()
16251642
}
16261643
// End Issue #1526
16271644

1628-
// Start Issue #1526
1629-
private function bool ValidateMission()
1630-
{
1631-
local TDialogueBoxData kDialogData;
1632-
local bool bRebuildSuccess;
1633-
1634-
if(!IsMissionValid(GeneratedMission))
1635-
{
1636-
CHReleaseLog("ERROR: Mission determined to not be valid, this can happen due to adding/removing mods or mod updates", 'X2WOTCCommunityHighlander');
1637-
PrintMissionInvalidationText();
1638-
PrintMissionInformation();
1639-
1640-
bRebuildSuccess = RebuildMission();
1641-
if(bRebuildSuccess)
1642-
{
1643-
CHReleaseLog("WARNING: Successfully rebuilt mission, tactical mission will launch with rebuilt mission data", 'X2WOTCCommunityHighlander');
1644-
PrintMissionInformation();
1645-
}
1646-
else
1647-
{
1648-
CHReleaseLog("ERROR: Failed to rebuild mission, tactical mission will launch with original mission data", 'X2WOTCCommunityHighlander');
1649-
}
1650-
1651-
kDialogData.eType = eDialog_Warning;
1652-
kDialogData.strTitle = class'CHHelpers'.default.m_strValidateMissionDialogTitle;
1653-
kDialogData.strText = bRebuildSuccess ? class'CHHelpers'.default.m_strValidateMissionDialogTextSuccess : class'CHHelpers'.default.m_strValidateMissionDialogTextFail;
1654-
kDialogData.strAccept = class'UIDialogueBox'.default.m_strDefaultAcceptLabel;
1655-
kDialogData.fnCallback = ValidateMissionDialogCallback;
1656-
1657-
`HQPRES.UIRaiseDialog(kDialogData);
1658-
1659-
return false;
1660-
}
1661-
1662-
return true;
1663-
}
1664-
// End Issue #1526
1665-
1666-
// Start Issue #1526
1667-
simulated function ValidateMissionDialogCallback(Name eAction)
1668-
{
1669-
local XComGameStateHistory History;
1670-
local XComGameState_HeadquartersXCom XComHQ;
1671-
local XGStrategy StrategyGame;
1672-
local XComGameState NewGameState;
1673-
1674-
NewGameState = class'XComGameStateContext_ChangeContainer'.static.CreateChangeState("Launch Mission Selected");
1675-
`XEVENTMGR.TriggerEvent('LaunchMissionSelected', , , NewGameState);
1676-
if (GetMissionSource().DataName == 'MissionSource_Final')
1677-
{
1678-
`XEVENTMGR.TriggerEvent('FinalMissionSquadSelected', , , NewGameState);
1679-
}
1680-
`XCOMGAME.GameRuleset.SubmitGameState(NewGameState);
1681-
1682-
// return the Skyranger to the Avenger upon returning from the mission
1683-
History = `XCOMHISTORY;
1684-
XComHQ = XComGameState_HeadquartersXCom(History.GetSingleGameStateObjectForClass(class'XComGameState_HeadquartersXCom'));
1685-
XComHQ.SetPendingPointOfTravel(XComHQ);
1686-
1687-
StrategyGame = `GAME;
1688-
1689-
if(StrategyGame.SimCombatNextMission)
1690-
{
1691-
StrategyGame.SimCombatNextMission = false;
1692-
`HQPRES.m_bExitFromSimCombat = true;
1693-
`HQPRES.ExitStrategyMap();
1694-
class'X2StrategyGame_SimCombat'.static.SimCombat();
1695-
}
1696-
else
1697-
{
1698-
// Launch this Mission!
1699-
StrategyGame.LaunchTacticalBattle(ObjectID);
1700-
}
1701-
}
1702-
// End Issue #1526
1703-
17041645
function ConfirmMission()
17051646
{
17061647
local XComGameStateHistory History;
@@ -1711,9 +1652,9 @@ function ConfirmMission()
17111652
/// HL-Docs: ref:Bugfixes; issue:1526
17121653
/// Validates the mission before launching a tactical battle, and attempts rebuilding of mission if determined invalid
17131654
// Start Issue #1526
1714-
if(!ValidateMission())
1655+
if(!IsMissionValid())
17151656
{
1716-
return;
1657+
RebuildMission();
17171658
}
17181659
// End Issue #1526
17191660

0 commit comments

Comments
 (0)