public static void Invoke(pWardenObjectiveState oldState, pWardenObjectiveState newState) { bool mainComplete = oldState.main_status != newState.main_status && newState.main_status == eWardenObjectiveStatus.WardenObjectiveItemSolved; bool secondComplete = oldState.second_status != newState.second_status && newState.second_status == eWardenObjectiveStatus.WardenObjectiveItemSolved; bool thirdComplete = oldState.third_status != newState.third_status && newState.third_status == eWardenObjectiveStatus.WardenObjectiveItemSolved; var blocks = EventListenerDataBlock.GetAllBlocks(); var exp = RundownManager.GetActiveExpeditionData(); foreach (var block in blocks) { if (block.Type == EventListenerType.ObjectiveComplete) { foreach (var expedition in block.ForExpeditions) { if (expedition.ExpeditionIndex == exp.expeditionIndex && expedition.Tier == exp.tier) { if ((!block.CompleteObjective_Layers.Contains(LG_LayerType.MainLayer) || mainComplete) && (!block.CompleteObjective_Layers.Contains(LG_LayerType.SecondaryLayer) || secondComplete) && (!block.CompleteObjective_Layers.Contains(LG_LayerType.ThirdLayer) || thirdComplete)) { EventSequenceManager.StartSequence(block.EventSequenceOnActivate); } break; } } } } }
public static void Invoke(ES_HibernateWakeUp __instance) { var blocks = EventListenerDataBlock.GetAllBlocks(); var exp = RundownManager.GetActiveExpeditionData(); foreach (var block in blocks) { if (block.Type == EventListenerType.EnemyWakeUp) { foreach (var expedition in block.ForExpeditions) { if (expedition.ExpeditionIndex == exp.expeditionIndex && expedition.Tier == exp.tier) { var enemy = __instance.m_enemyAgent; if (block.EnemyWakeup_EnemyID == enemy.EnemyDataID) { var lg_area = enemy.CourseNode.m_area; var area = lg_area.m_navInfo.Suffix.ToLower(); var lg_zone = lg_area.m_zone; var zone = lg_zone.LocalIndex; var lg_layer = lg_zone.Layer; var layer = lg_layer.m_type; bool valid = block.EnemyWakeUp_ForLayers.Count == 0; foreach (var validLayer in block.EnemyWakeUp_ForLayers) { if (validLayer.Layer == layer) { valid = validLayer.Whitelist; foreach (var validZone in validLayer.Zones) { if (validZone.ZoneIndex == zone) { valid = validZone.Whitelist; foreach (var validArea in validZone.Areas) { if (validArea.AreaName.ToLower() == area) { valid = validArea.Whitelist; } } } } } } if (valid) { EventSequenceManager.StartSequence(block.EventSequenceOnActivate); } } break; } } } } }
public static bool Invoke(CM_ExpeditionWindow __instance, bool visible, bool inMenuBar) { __instance.gameObject.SetActive(visible); __instance.m_joinWindow.SetVisible(!inMenuBar && !SNetwork.SNet.IsInLobby); __instance.m_hostButton.SetVisible(!inMenuBar && !SNetwork.SNet.IsInLobby && (__instance.m_status != eExpeditionIconStatus.TierLocked && __instance.m_status != eExpeditionIconStatus.LockedAndScrambled) && __instance.m_status != eExpeditionIconStatus.TierLockedFinishedAnyway); __instance.m_changeExpeditionButton.SetVisible(SNetwork.SNet.IsMaster && !__instance.m_hostButton.IsVisible && (!inMenuBar && SNetwork.SNet.IsInLobby) && (RundownManager.ActiveExpedition != null && __instance.m_status != eExpeditionIconStatus.TierLocked && __instance.m_status != eExpeditionIconStatus.LockedAndScrambled) && __instance.m_status != eExpeditionIconStatus.TierLockedFinishedAnyway); __instance.m_matchButton.SetVisible(!inMenuBar && !SNetwork.SNet.IsInLobby && (__instance.m_status != eExpeditionIconStatus.TierLocked && __instance.m_status != eExpeditionIconStatus.LockedAndScrambled) && __instance.m_status != eExpeditionIconStatus.TierLockedFinishedAnyway); __instance.m_bottomStripes.SetActive(!__instance.m_hostButton.IsVisible && !__instance.m_changeExpeditionButton.IsVisible); if (visible) { var allCompletionData = CompletionData.LoadFromCache(); var completionData = allCompletionData.GetData(__instance.m_tier, __instance.m_expIndex); __instance.m_title.gameObject.SetActive(false); __instance.m_wardenObjective.gameObject.SetActive(false); __instance.m_wardenIntel.gameObject.SetActive(false); __instance.m_depth.gameObject.SetActive(false); CoroutineManager.BlinkIn(__instance.m_title.gameObject, 0.3f); CoroutineManager.BlinkIn(__instance.m_wardenObjective.gameObject, 1.1f); CoroutineManager.BlinkIn(__instance.m_wardenIntel.gameObject, 2.5f); CoroutineManager.BlinkIn(__instance.m_depth.gameObject, 3f); float delay1 = 1.8f; float num1 = 0.4f; __instance.UpdateProgression(); SetupIcon(__instance.m_sectorIconMain, completionData.highCompletes > 0, LG_LayerType.MainLayer); __instance.m_sectorIconMain.SetVisible(false); __instance.m_sectorIconSecond.SetVisible(false); __instance.m_sectorIconThird.SetVisible(false); __instance.m_sectorIconAllCompleted.SetVisible(false); __instance.m_sectorIconMain.StopBlink(); __instance.m_sectorIconSecond.StopBlink(); __instance.m_sectorIconThird.StopBlink(); __instance.m_sectorIconAllCompleted.StopBlink(); __instance.m_sectorIconMain.BlinkIn(delay1); float delay2 = delay1 + num1; if (RundownManager.HasSecondaryLayer(__instance.m_data)) { SetupIcon(__instance.m_sectorIconSecond, completionData.extremeCompletes > 0, LG_LayerType.SecondaryLayer); __instance.m_sectorIconSecond.BlinkIn(delay2); delay2 += num1; } if (RundownManager.HasThirdLayer(__instance.m_data)) { SetupIcon(__instance.m_sectorIconThird, completionData.overloadCompletes > 0, LG_LayerType.ThirdLayer); __instance.m_sectorIconThird.BlinkIn(delay2); delay2 += num1; } if (completionData.highCompletes > 0 && RundownManager.HasSecondaryLayer(__instance.m_data) && completionData.extremeCompletes > 0 && RundownManager.HasThirdLayer(__instance.m_data) && completionData.overloadCompletes > 0 && completionData.peCompletes > 0) { __instance.m_sectorIconAllCompleted.BlinkIn(delay2); float num2 = delay2 + num1; } } __instance.IsVisible = visible; return(false); }
private void Update() { _discord.RunCallbacks(); if (_currentTime <= DateTime.Now && SNet.IsInLobby) { expPackage = RundownManager.GetActiveExpeditionData(); SetActivity(GetActivity()); // Recheck status every 10 seconds. _currentTime = DateTime.Now.AddSeconds(10); } }
public static void Invoke(LG_SecurityDoor __instance, pDoorState state) { bool valid; EventListenerType validListenerType; switch (state.status) { case eDoorStatus.Open: valid = true; validListenerType = EventListenerType.SecurityDoorOpen; break; case eDoorStatus.Unlocked: valid = true; validListenerType = EventListenerType.SecurityDoorUnlock; break; case eDoorStatus.ChainedPuzzleActivated: valid = true; validListenerType = EventListenerType.SecurityDoorActivateChainedPuzzle; break; default: valid = false; validListenerType = (EventListenerType)0; break; } if (valid) { var blocks = EventListenerDataBlock.GetAllBlocks(); var exp = RundownManager.GetActiveExpeditionData(); foreach (var block in blocks) { if (block.Type == validListenerType) { foreach (var expedition in block.ForExpeditions) { if (expedition.ExpeditionIndex == exp.expeditionIndex && expedition.Tier == exp.tier) { var data = __instance.LinkedToZoneData; if (__instance.LinksToLayerType == block.SecurityDoor_Layer && data.LocalIndex == block.SecurityDoor_ZoneIndex && data.BuildFromLocalIndex == block.SecurityDoor_BuildFromIndex) { EventSequenceManager.StartSequence(block.EventSequenceOnActivate); } break; } } } } } }
public static void Invoke(LG_ComputerTerminal __instance) { if (__instance.m_chainPuzzleForWardenObjective != null) { __instance.m_chainPuzzleForWardenObjective.add_OnPuzzleSolved(new Action(() => { __instance.ObjectiveItemSolved = true; Invoke(__instance); })); return; } var blocks = EventListenerDataBlock.GetAllBlocks(); var exp = RundownManager.GetActiveExpeditionData(); foreach (var block in blocks) { if (block.Type == EventListenerType.ObjectiveItemSolved) { foreach (var expedition in block.ForExpeditions) { if (expedition.ExpeditionIndex == exp.expeditionIndex && expedition.Tier == exp.tier) { if (__instance.SpawnNode.LayerType == block.ObjectiveItemSolved_Layer) { var items = WardenObjectiveManager.Current.m_objectiveItemCollection[__instance.SpawnNode.LayerType]; int count = 0; foreach (var item in items) { if (item != null && item.ObjectiveItemSolved) { count++; } } if (block.ObjectiveItemSolved_RequiredCount == count) { EventSequenceManager.StartSequence(block.EventSequenceOnActivate); } } break; } } } } }
public static void Invoke(LG_PickupItem_Sync __instance, pPickupItemState oldState, pPickupItemState newState) { if (oldState.status != newState.status && newState.status == ePickupItemStatus.PickedUp) { AIG_CourseNode spawnNode = __instance.item.TryCast <CarryItemPickup_Core>()?.SpawnNode ?? __instance.item.TryCast <GenericSmallPickupItem_Core>()?.SpawnNode; if (spawnNode == null) { return; } var blocks = EventListenerDataBlock.GetAllBlocks(); var exp = RundownManager.GetActiveExpeditionData(); foreach (var block in blocks) { if (block.Type == EventListenerType.ObjectiveItemSolved) { foreach (var expedition in block.ForExpeditions) { if (expedition.ExpeditionIndex == exp.expeditionIndex && expedition.Tier == exp.tier) { if (spawnNode.LayerType == block.ObjectiveItemSolved_Layer) { var items = WardenObjectiveManager.Current.m_objectiveItemCollection[spawnNode.LayerType]; int count = 0; foreach (var item in items) { if (item != null && item.ObjectiveItemSolved) { count++; } } if (block.ObjectiveItemSolved_RequiredCount == count) { EventSequenceManager.StartSequence(block.EventSequenceOnActivate); } } break; } } } } } }
public static void Invoke(CM_ExpeditionIcon_New __instance, ref eExpeditionIconStatus status, ref string mainFinishCount, ref string secondFinishCount, ref string thirdFinishCount, ref string allFinishedCount) { if (status == eExpeditionIconStatus.NotPlayed) { var allCompletionData = CompletionData.LoadFromCache(); var completionData = allCompletionData.GetData(__instance.Tier, __instance.ExpIndex); var expDataBlock = __instance.DataBlock; if (completionData.highCompletes > 0 || completionData.extremeCompletes > 0 || completionData.overloadCompletes > 0 || completionData.peCompletes > 0) { status = eExpeditionIconStatus.PlayedAndFinished; } mainFinishCount = completionData.highCompletes.ToString(); secondFinishCount = RundownManager.HasSecondaryLayer(expDataBlock) ? completionData.extremeCompletes.ToString() : "-"; thirdFinishCount = RundownManager.HasThirdLayer(expDataBlock) ? completionData.overloadCompletes.ToString() : "-"; allFinishedCount = RundownManager.HasAllCompletetionPossibility(expDataBlock) ? completionData.peCompletes.ToString() : "-"; } }
public static void Invoke(LG_PowerGenerator_Core __instance, pPowerGeneratorState oldState, pPowerGeneratorState newState) { if (oldState.status != newState.status && newState.status == ePowerGeneratorStatus.Powered && __instance.ObjectiveItemSolved) { var blocks = EventListenerDataBlock.GetAllBlocks(); var exp = RundownManager.GetActiveExpeditionData(); foreach (var block in blocks) { if (block.Type == EventListenerType.ObjectiveItemSolved) { foreach (var expedition in block.ForExpeditions) { if (expedition.ExpeditionIndex == exp.expeditionIndex && expedition.Tier == exp.tier) { if (__instance.SpawnNode.LayerType == block.ObjectiveItemSolved_Layer) { var items = WardenObjectiveManager.Current.m_objectiveItemCollection[__instance.SpawnNode.LayerType]; int count = 0; foreach (var item in items) { if (item != null && item.ObjectiveItemSolved) { count++; } } if (block.ObjectiveItemSolved_RequiredCount == count) { EventSequenceManager.StartSequence(block.EventSequenceOnActivate); } } break; } } } } } }
public static void Invoke() { GameInfo.State = GameState.InLevel; foreach (var light in UnityEngine.Object.FindObjectsOfType <LevelGeneration.LG_Light>()) { if (light.AvailableInLevel) { if (light.gameObject.GetComponent <Lights.LightController>() == null) { light.gameObject.AddComponent <Lights.LightController>(); } } } var blocks = EventListenerDataBlock.GetAllBlocks(); var exp = RundownManager.GetActiveExpeditionData(); foreach (var block in blocks) { if (block.Type == EventListenerType.LevelLoad) { foreach (var expedition in block.ForExpeditions) { if (expedition.ExpeditionIndex == exp.expeditionIndex && expedition.Tier == exp.tier) { Log.Message($"Start Level Load Event Sequence for listener id {block.persistentID} ({block.name})!"); if (block.LevelLoad_IncludeInitialDrop) { Log.Message("Peforming event sequence..."); EventSequenceManager.StartSequence(block.EventSequenceOnActivate); } break; } } } } }
internal void Setup(LG_Layer layer, WardenObjectiveDataBlock objectiveData, bool isGlobalHandler) { Layer = layer; LayerType = layer.m_type; ObjectiveData = objectiveData; IsDefaultObjective = Enum.IsDefined(typeof(eWardenObjectiveType), ObjectiveData.Type); IsGlobalHandler = isGlobalHandler; var activeExpedition = RundownManager.ActiveExpedition; switch (LayerType) { case LG_LayerType.MainLayer: LayerData = activeExpedition.MainLayerData; break; case LG_LayerType.SecondaryLayer: LayerData = activeExpedition.SecondaryLayerData; break; case LG_LayerType.ThirdLayer: LayerData = activeExpedition.ThirdLayerData; break; } var data = RundownManager.GetActiveExpeditionData(); CurrentExpeditionTier = data.tier; CurrentExpeditionIndex = data.expeditionIndex; Builder = new BuilderProxy(this); WinConditions = new WinConditionProxy(this); ObjectiveStatus = new ObjectiveStatusProxy(this); var buildDone = new Action(BuildDone); var elevatorArrive = new Action(ElevatorArrive); var levelSuccess = new Action(OnExpeditionSuccess); var levelFail = new Action(OnExpeditionFail); GlobalMessage.OnBuildDoneLate += buildDone; GlobalMessage.OnElevatorArrive += elevatorArrive; GlobalMessage.OnLevelSuccess += levelSuccess; GlobalMessage.OnLevelFail += levelFail; OnUnloadEvent += () => { GlobalMessage.OnBuildDoneLate -= buildDone; GlobalMessage.OnElevatorArrive -= elevatorArrive; GlobalMessage.OnLevelSuccess -= levelSuccess; GlobalMessage.OnLevelFail -= levelFail; }; OnSetupEvent?.Invoke(); OnSetup(); //Check WinCondition has been set after Setup if (!IsGlobalHandler && (!IsDefaultObjective && !ObjectiveStatus.Is)) { Logger.Error("Every Custom Type Handler should set their ObjectiveStatus Update Behaviour Inside OnSetup()! Handler has been Unloaded!\n - typeID: {0}\n - handler {1}", (byte)ObjectiveData.Type, GetType().Name); UnloadSelf(); return; } }
public static bool Invoke(ElevatorCargoCage __instance) { var blocks = ExpeditionSettingsDataBlock.GetAllBlocks(); var exp = RundownManager.GetActiveExpeditionData(); foreach (var block in blocks) { if (block.Expedition.ExpeditionIndex == exp.expeditionIndex && block.Expedition.Tier == exp.tier) { List <uint> bigPickupToSpawn = new List <uint>(); for (int index = 0; index < block.CargoCage.BigPickup.Count; index++) { var bigPickup = block.CargoCage.BigPickup[index]; if (GameInfo.MeetsProgressionRequirements(bigPickup.RequiredProgression)) { bigPickupToSpawn.Add(bigPickup.ItemID); } } List <ConsumableCargoInfo> consumablesToSpawn = new List <ConsumableCargoInfo>(); for (int index = 0; index < block.CargoCage.Consumables.Count; index++) { var consumable = block.CargoCage.Consumables[index]; if (GameInfo.MeetsProgressionRequirements(consumable.RequiredProgression)) { consumablesToSpawn.Add(consumable); } } int length = bigPickupToSpawn.Count + consumablesToSpawn.Count; __instance.m_itemsToMoveToCargo = new Transform[length]; if (length < 1) { return(false); } int itemIndex = 0; foreach (var bigPickup in bigPickupToSpawn) { LG_PickupItem lgPickupItem = LG_PickupItem.SpawnGenericPickupItem(ElevatorShaftLanding.CargoAlign); lgPickupItem.SpawnNode = Builder.GetElevatorArea().m_courseNode; lgPickupItem.SetupAsBigPickupItem(Random.Range(0, int.MaxValue), bigPickup, false); __instance.m_itemsToMoveToCargo[itemIndex] = lgPickupItem.transform; itemIndex++; } foreach (var consumable in consumablesToSpawn) { LG_PickupItem lgPickupItem = LG_PickupItem.SpawnGenericPickupItem(ElevatorShaftLanding.CargoAlign); lgPickupItem.SpawnNode = Builder.GetElevatorArea().m_courseNode; lgPickupItem.SetupAsConsumable(Random.Range(0, int.MaxValue), consumable.ItemID); __instance.m_itemsToMoveToCargo[itemIndex] = lgPickupItem.transform; itemIndex++; //Item item = ItemSpawnManager.SpawnItem(consumable.ItemID, ItemMode.Pickup, ElevatorShaftLanding.CargoAlign.position, ElevatorShaftLanding.CargoAlign.rotation, true, new Player.pItemData() //{ // custom = new Player.pItemData_Custom() // { // ammo = consumable.UsageRel // } //}, ElevatorShaftLanding.CargoAlign); //foreach (var comp in item.gameObject.GetComponentsInChildren<iLG_SpawnedInNodeHandler>(true)) //{ // comp.SpawnNode = Builder.GetElevatorArea().m_courseNode; //} //__instance.m_itemsToMoveToCargo[itemIndex] = item.transform; } ElevatorRide.Current.m_cargoCageInUse = true; return(false); } } return(true); }
public static void Invoke() { var state = WardenObjectiveManager.CurrentState; var exp = RundownManager.GetActiveExpeditionData(); var completionData = CompletionData.LoadFromCache(); var data = completionData.GetData(exp.tier, exp.expeditionIndex); bool pe = true; if (state.main_status == eWardenObjectiveStatus.WardenObjectiveItemSolved) { data.highCompletes++; } else { pe = false; } if (state.second_status == eWardenObjectiveStatus.WardenObjectiveItemSolved) { data.extremeCompletes++; } else { pe = false; } if (state.third_status == eWardenObjectiveStatus.WardenObjectiveItemSolved) { data.overloadCompletes++; } else { pe = false; } if (pe) { data.peCompletes++; } completionData.Save(); bool highSolved = WardenObjectiveManager.CurrentState.main_status == eWardenObjectiveStatus.WardenObjectiveItemSolved; bool extremeSolved = RundownManager.HasSecondaryLayer(RundownManager.ActiveExpedition) && WardenObjectiveManager.CurrentState.second_status == eWardenObjectiveStatus.WardenObjectiveItemSolved; bool overloadSolved = RundownManager.HasThirdLayer(RundownManager.ActiveExpedition) && WardenObjectiveManager.CurrentState.third_status == eWardenObjectiveStatus.WardenObjectiveItemSolved; var progressionData = ExtendedPlayerAgent.LocalPlayer.ProgressionData; var expeditionSettingsBlocks = ExpeditionSettingsDataBlock.GetAllBlocks(); foreach (var expeditionSettingsBlock in expeditionSettingsBlocks) { if (expeditionSettingsBlock.Expedition.ExpeditionIndex == exp.expeditionIndex && expeditionSettingsBlock.Expedition.Tier == exp.tier) { var completionSettings = expeditionSettingsBlock.CompletionSettings; foreach (var progressionUpdate in completionSettings.ProgressionUpdates) { if (GameInfo.MeetsProgressionRequirements(progressionUpdate.ProgressionRequirements)) { if (progressionUpdate.HighCompleted == highSolved && progressionUpdate.ExtremeCompleted == extremeSolved && progressionUpdate.OverloadCompleted == overloadSolved) { progressionData.SetProgressionValue(exp.tier, exp.expeditionIndex, progressionUpdate.Value); } } } } } progressionData.Save(); }
public static bool Invoke(CM_PageRundown_New __instance) { var completionData = CompletionData.LoadFromCache(); Utilities.Log.Message("Load completion data"); Debug.Log("CM_PageRundown_New.UpdateRundownExpeditionProgression, RundownManager.RundownProgressionReady: " + RundownManager.RundownProgressionReady.ToString()); int totalMain = 0; int totalSecond = 0; int totalThird = 0; int totalPE = 0; int totalCompletesMain = 0; int totalCompletesSecond = 0; int totalCompletesThird = 0; int totalCompletesPE = 0; if (__instance.m_expIconsAll != null) { for (int index = 0; index < __instance.m_expIconsAll.Count; index++) { var icon = __instance.m_expIconsAll[index]; string expeditionKey = RundownManager.GetRundownProgressionExpeditionKey(icon.Tier, icon.ExpIndex); var completes = completionData.GetData(icon.Tier, icon.ExpIndex); if (completes.highCompletes > 0) { totalCompletesMain++; } if (completes.extremeCompletes > 0) { totalCompletesSecond++; } if (completes.overloadCompletes > 0) { totalCompletesThird++; } if (completes.peCompletes > 0) { totalCompletesPE++; } totalMain++; if (RundownManager.HasSecondaryLayer(icon.DataBlock)) { totalSecond++; } if (RundownManager.HasThirdLayer(icon.DataBlock)) { totalThird++; } if (RundownManager.HasAllCompletetionPossibility(icon.DataBlock)) { totalPE++; } } } if (__instance.m_tierMarkerSectorSummary != null) { __instance.m_tierMarkerSectorSummary.SetSectorIconTextForMain(totalCompletesMain.ToString() + "<size=50%><color=#FFFFFF33><size=55%>/" + totalMain + "</color></size>"); __instance.m_tierMarkerSectorSummary.SetSectorIconTextForSecondary(totalCompletesSecond.ToString() + "<size=50%><color=#FFFFFF33><size=55%>/" + totalSecond + "</color></size>"); __instance.m_tierMarkerSectorSummary.SetSectorIconTextForThird(totalCompletesThird.ToString() + "<size=50%><color=#FFFFFF33><size=55%>/" + totalThird + "</color></size>"); __instance.m_tierMarkerSectorSummary.SetSectorIconTextForAllCleared(totalCompletesPE.ToString() + "<size=50%><color=#FFFFFF33><size=55%>/" + totalPE + "</color></size>"); } if (__instance.m_tierMarker1 == null) { return(false); } var tierBReq = __instance.m_currentRundownData.ReqToReachTierB; var tierCReq = __instance.m_currentRundownData.ReqToReachTierC; var tierDReq = __instance.m_currentRundownData.ReqToReachTierD; var tierEReq = __instance.m_currentRundownData.ReqToReachTierE; var progressionData = new RundownManager.RundownProgData() { totalMain = totalMain, totalSecondary = totalSecond, totalThird = totalThird, totalAllClear = totalPE, clearedMain = totalCompletesMain, clearedSecondary = totalCompletesSecond, clearedThird = totalCompletesThird, clearedAllClear = totalCompletesPE, tierBUnlocked = totalCompletesMain >= tierBReq.MainSectors && totalCompletesSecond >= tierBReq.SecondarySectors && totalCompletesThird >= tierBReq.ThirdSectors && totalCompletesPE >= tierBReq.AllClearedSectors, tierCUnlocked = totalCompletesMain >= tierCReq.MainSectors && totalCompletesSecond >= tierCReq.SecondarySectors && totalCompletesThird >= tierCReq.ThirdSectors && totalCompletesPE >= tierCReq.AllClearedSectors, tierDUnlocked = totalCompletesMain >= tierDReq.MainSectors && totalCompletesSecond >= tierDReq.SecondarySectors && totalCompletesThird >= tierDReq.ThirdSectors && totalCompletesPE >= tierDReq.AllClearedSectors, tierEUnlocked = totalCompletesMain >= tierEReq.MainSectors && totalCompletesSecond >= tierEReq.SecondarySectors && totalCompletesThird >= tierEReq.ThirdSectors && totalCompletesPE >= tierEReq.AllClearedSectors }; __instance.m_tierMarker1.SetProgression(progressionData, new RundownTierProgressionData()); __instance.UpdateTierIconsWithProgression(null, __instance.m_expIconsTier1, __instance.m_tierMarker1, true); __instance.m_tierMarker2.SetProgression(progressionData, tierBReq); __instance.UpdateTierIconsWithProgression(null, __instance.m_expIconsTier2, __instance.m_tierMarker2, progressionData.tierBUnlocked); __instance.m_tierMarker3.SetProgression(progressionData, tierCReq); __instance.UpdateTierIconsWithProgression(null, __instance.m_expIconsTier3, __instance.m_tierMarker3, progressionData.tierCUnlocked); __instance.m_tierMarker4.SetProgression(progressionData, tierDReq); __instance.UpdateTierIconsWithProgression(null, __instance.m_expIconsTier4, __instance.m_tierMarker4, progressionData.tierDUnlocked); __instance.m_tierMarker5.SetProgression(progressionData, tierEReq); __instance.UpdateTierIconsWithProgression(null, __instance.m_expIconsTier5, __instance.m_tierMarker5, progressionData.tierEUnlocked); return(false); }