Esempio n. 1
0
        public override void ModifyTooltips(Item item, List <TooltipLine> tooltips)
        {
            var         config = LockedAbilitiesConfig.Instance;
            TooltipLine tip;

            if (item.wingSlot != -1)
            {
                if (config.Get <bool>(nameof(config.WingsRequirePixieDust)))
                {
                    tip = new TooltipLine(this.mod, "LockedAbiltiesWingFuel", "Wings require pixie dust to use.");
                    tip.overrideColor = Color.Yellow;
                    tooltips.Add(tip);
                }
            }
            else
            {
                switch (item.type)
                {
                case ItemID.RocketBoots:
                case ItemID.SpectreBoots:
                case ItemID.LightningBoots:
                case ItemID.FrostsparkBoots:
                    if (config.Get <bool>(nameof(config.RocketBootsRequireGels)))
                    {
                        tip = new TooltipLine(this.mod, "LockedAbiltiesRocketFuel", "Rocket boots require gels to use.");
                        tip.overrideColor = Color.Yellow;
                        tooltips.Add(tip);
                    }
                    break;

                case ItemID.CloudinaBottle:
                case ItemID.CloudinaBalloon:
                case ItemID.BlizzardinaBottle:
                case ItemID.BlizzardinaBalloon:
                case ItemID.SandstorminaBottle:
                case ItemID.SandstorminaBalloon:
                case ItemID.FartInABalloon:
                case ItemID.FartinaJar:
                case ItemID.BalloonHorseshoeFart:
                case ItemID.TsunamiInABottle:
                    int chainAmt = config.Get <int>(nameof(config.GrappleRequiresChainAmount));

                    if (chainAmt > 0 && ItemAttributeLibraries.IsGrapple(item))
                    {
                        tip = new TooltipLine(this.mod, "LockedAbilitiesGrappleChainAmmo",
                                              "Consumes " + chainAmt + " chain(s) per use");
                        ItemInformationAttributeLibraries.ApplyTooltipAt(tooltips, tip);
                    }
                    if (config.Get <bool>(nameof(config.DoubleJumpsRequireGels)))
                    {
                        tip = new TooltipLine(this.mod, "LockedAbiltiesJumpFuel",
                                              "Double jump items require gels to use.");
                        tip.overrideColor = Color.Yellow;
                        tooltips.Add(tip);
                    }
                    break;
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Loosely assesses player's relative level of power. Factors include appraisals of inventory items, player's defense,
        /// and player's life.
        /// </summary>
        /// <param name="player"></param>
        /// <returns></returns>
        public static float LooselyAssessPower(Player player)
        {
            float armorCount = 0, miscCount = 0;
            float hotbarTech = 0, armorTech = 0, miscTech = 0;

            for (int i = 0; i < PlayerLibraries.InventoryHotbarSize; i++)
            {
                Item item = player.inventory[i];
                if (item == null || item.IsAir || !ItemAttributeLibraries.IsGameplayRelevant(item))
                {
                    continue;
                }

                float tech = ItemAttributeLibraries.LooselyAppraise(item);
                hotbarTech = hotbarTech > tech ? hotbarTech : tech;
            }

            int maxArmorSlot = 8 + player.extraAccessorySlots;

            for (int i = 0; i < maxArmorSlot; i++)
            {
                Item item = player.inventory[i];
                if (item == null || item.IsAir || !ItemAttributeLibraries.IsGameplayRelevant(item))
                {
                    continue;
                }

                armorTech  += ItemAttributeLibraries.LooselyAppraise(item);
                armorCount += 1;
            }

            for (int i = 0; i < player.miscEquips.Length; i++)
            {
                Item item = player.miscEquips[i];
                if (item == null || item.IsAir || !ItemAttributeLibraries.IsGameplayRelevant(item))
                {
                    continue;
                }

                miscTech  += ItemAttributeLibraries.LooselyAppraise(item);
                miscCount += 1;
            }

            float techFactor = armorTech / (armorCount * ItemRarityAttributeLibraries.HighestVanillaRarity);

            techFactor += miscTech / (miscCount * ItemRarityAttributeLibraries.HighestVanillaRarity);
            techFactor += hotbarTech + hotbarTech;
            techFactor /= 4;

            float defenseFactor  = 1f + ((float)player.statDefense * 0.01f);
            float addedVitality  = (float)player.statLifeMax / 20f;
            float vitalityFactor = addedVitality * defenseFactor;

            return((techFactor + techFactor + vitalityFactor) / 3f);
        }
Esempio n. 3
0
 public override bool OnPickup(Item item, Player player)
 {
     if (ItemAttributeLibraries.IsGrapple(item))
     {
         InboxAPIMirrorsLibraries.SetMessage(
             "GrappletechGrappleChanges",
             "Grappletech: Grappling hooks must now be used on only wood objects.",
             false
             );
     }
     return(base.OnPickup(item, player));
 }
        public bool EnablesMiscItem(Player player, int slot, Item item)
        {
            if (!LockedAbilitiesConfig.Instance.Get <bool>(nameof(LockedAbilitiesConfig.GrappleHarnessEnabled)))
            {
                return(false);
            }

            if (ItemAttributeLibraries.IsGrapple(item))
            {
                return(true);
            }
            return(false);
        }
Esempio n. 5
0
        ////////////////

        /// <summary>
        /// Gets the player's grappling item.
        /// </summary>
        /// <param name="player"></param>
        /// <returns></returns>
        public static Item GetGrappleItem(Player player)
        {
            if (ItemAttributeLibraries.IsGrapple(player.miscEquips[4]))
            {
                return(player.miscEquips[4]);
            }
            for (int i = 0; i < PlayerItemLibraries.VanillaInventorySize; i++)
            {
                if (Main.projHook[player.inventory[i].shoot])
                {
                    return(player.inventory[i]);
                }
            }
            return(null);
        }
Esempio n. 6
0
        public override void ModifyTooltips(Item item, List <TooltipLine> tooltips)
        {
            if (!ItemAttributeLibraries.IsGrapple(item))
            {
                return;
            }

            var config = GrappletechConfig.Instance;

            if (!config.Get <bool>(nameof(config.GrappleableWoodAndPlatforms)))
            {
                return;
            }

            string modName = "[c/FFFF88:" + GrappletechMod.Instance.DisplayName + "] - ";
            string text    = "Only works on wood and platforms";

            TooltipLine tip = new TooltipLine(this.mod, "Grappletech", modName + text);

            ItemInformationAttributeLibraries.ApplyTooltipAt(tooltips, tip);
        }
Esempio n. 7
0
        public override bool PreOpenVanillaBag(string context, Player player, int arg)
        {
            var mymod   = (NihilismMod)this.mod;
            var myworld = ModContent.GetInstance <NihilismWorld>();

            if (myworld.Logic == null)
            {
                LogLibraries.WarnOnce("Logic not loaded.");
                return(base.PreOpenVanillaBag(context, player, arg));
            }

            if (!myworld.Logic.AreItemFiltersEnabled())
            {
                return(base.PreOpenVanillaBag(context, player, arg));
            }

            IList <Item> containerInvIndexes = player.inventory
                                               .SafeWhere((item) => {
                if (item == null || item.IsAir)
                {
                    return(false);
                }
                if (ItemAttributeLibraries.GetVanillaContainerContext(item) != context)
                {
                    return(false);
                }
                if (arg != 0)
                {
                    return(item.type == arg);
                }
                return(true);
            })
                                               .ToList();

            if (containerInvIndexes.Count == 0)
            {
                LogLibraries.Alert("Unknown bag of context " + context + ", " + arg);
                return(base.PreOpenVanillaBag(context, player, arg));                   // Shouldn't happen?
            }

            Item containerItem = containerInvIndexes.FirstOrDefault();
            bool isAir         = containerItem?.IsAir ?? true;

            if (isAir)
            {
                int containerType = arg != 0
                                        ? arg
                                        : ItemCommonGroupsLibraries.GetVanillaContainerItemTypes(context)[0];
                containerItem = new Item();
                containerItem.SetDefaults(containerType, true);
            }

            bool _;
            bool canOpen = myworld.Logic.DataAccess.IsItemEnabled(containerItem, out _, out _);

            if (!canOpen)
            {
                if (containerInvIndexes.Count > 1 || isAir)
                {
                    Main.NewText("Due to a tModLoader bug, opening blacklisted bags and boxes will sometimes consume the item. Sorry. :(", Color.Red);
                }
                return(false);
            }

            return(base.PreOpenVanillaBag(context, player, arg));
        }