public static void MetaSetupHook(Action <MetaShopController> orig, MetaShopController meta) { orig(meta); List <ShopItemController> shopItems = (List <ShopItemController>)ItemControllersInfo.GetValue(meta); if (shopItems != null) { foreach (ShopItemController shopItem in shopItems) { if (shopItem != null && shopItem.item != null && shopItem.item.encounterTrackable != null && shopItem.item.encounterTrackable.journalData != null) { PickupObject po = GetBlueprintUnlockedItem(shopItem.item.encounterTrackable); if (po != null && po.encounterTrackable != null && po.encounterTrackable.prerequisites != null) { CustomDungeonFlags saveFlagToSetOnAcquisition = GetCustomFlagFromTargetItem(po.PickupObjectId); if (saveFlagToSetOnAcquisition != CustomDungeonFlags.NONE) { shopItem.item.gameObject.AddComponent <SpecialPickupObject>().CustomSaveFlagToSetOnAcquisition = saveFlagToSetOnAcquisition; if (AdvancedGameStatsManager.Instance.GetFlag(saveFlagToSetOnAcquisition)) { shopItem.ForceOutOfStock(); } } } } } } }
public static MetaShopTier MetaShopProximateTierHook(Func <MetaShopController, MetaShopTier> orig, MetaShopController self) { MetaShopTier advancedResult = null; for (int i = 0; i < self.metaShopTiers.Count - 1; i++) { if (!GetMetaItemUnlockedAdvanced(self.metaShopTiers[i].itemId1) || !GetMetaItemUnlockedAdvanced(self.metaShopTiers[i].itemId2) || !GetMetaItemUnlockedAdvanced(self.metaShopTiers[i].itemId3)) { advancedResult = self.metaShopTiers[i + 1]; break; } } List <MetaShopTier> origTiers = self.metaShopTiers; List <MetaShopTier> tempTiers = new List <MetaShopTier>(); for (int i = 0; i < origTiers.Count; i++) { if (origTiers[i] != null) { if (!ItemConditionsFulfilled(origTiers[i].itemId1) || !ItemConditionsFulfilled(origTiers[i].itemId2) || !ItemConditionsFulfilled(origTiers[i].itemId3)) { tempTiers.Add(origTiers[i]); } } } self.metaShopTiers = tempTiers; MetaShopTier result = orig(self); self.metaShopTiers = origTiers; if (advancedResult == null) { return(result); } else if (result == null) { return(advancedResult); } else { return(self.metaShopTiers.IndexOf(advancedResult) < self.metaShopTiers.IndexOf(result) ? advancedResult : result); } }