コード例 #1
0
        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();
                                }
                            }
                        }
                    }
                }
            }
        }
コード例 #2
0
        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);
            }
        }