예제 #1
0
        internal static List <TagCompound> SaveModBuffs(Player player)
        {
            var list = new List <TagCompound>();

            for (int k = 0; k < Player.MaxBuffs; k++)
            {
                int buff = player.buffType[k];
                if (buff == 0 || Main.buffNoSave[buff])
                {
                    continue;
                }

                if (BuffLoader.IsModBuff(buff))
                {
                    var modBuff = BuffLoader.GetBuff(buff);
                    list.Add(new TagCompound {
                        ["mod"]  = modBuff.Mod.Name,
                        ["name"] = modBuff.Name,
                        ["time"] = player.buffTime[k]
                    });
                }
                else
                {
                    list.Add(new TagCompound {
                        ["mod"]  = "Terraria",
                        ["id"]   = buff,
                        ["time"] = player.buffTime[k]
                    });
                }
            }
            return(list);
        }
예제 #2
0
        public override void Update(Player player, ref int buffIndex)
        {
            AlchemistNPCLitePlayer modPlayer = player.GetModPlayer <AlchemistNPCLitePlayer>();

            modPlayer.Defense8     = true;
            modPlayer.DR10         = true;
            modPlayer.Regeneration = true;
            modPlayer.Lifeforce    = true;
            modPlayer.MS           = true;
            player.longInvince     = true;
            if (NPC.downedMechBoss2)
            {
                player.buffImmune[39] = true;
                player.buffImmune[69] = true;
            }
            player.buffImmune[24]  = true;
            player.buffImmune[44]  = true;
            player.buffImmune[46]  = true;
            player.buffImmune[47]  = true;
            player.lavaImmune      = true;
            player.fireWalk        = true;
            player.buffImmune[1]   = true;
            player.buffImmune[2]   = true;
            player.buffImmune[5]   = true;
            player.buffImmune[14]  = true;
            player.buffImmune[113] = true;
            player.buffImmune[114] = true;
            player.buffImmune[ModContent.BuffType <Buffs.LongInvincible>()] = true;
            player.buffImmune[ModContent.BuffType <Buffs.TitanSkin>()]      = true;
            if (player.thorns < 1.0)
            {
                player.thorns = 0.3333333f;
            }
            BuffLoader.Update(BuffID.ObsidianSkin, player, ref buffIndex);
        }
예제 #3
0
 public override void Update(Player player, ref int buffIndex)
 {
     player.findTreasure = true;
     Lighting.AddLight((int)((double)player.position.X + (double)(player.width / 2)) / 16, (int)((double)player.position.Y + (double)(player.height / 2)) / 16, 3f, 3f, 3f);
     player.nightVision    = true;
     player.detectCreature = true;
     player.pickSpeed     -= 0.50f;
     player.dangerSense    = true;
     player.gills          = true;
     player.waterWalk      = true;
     player.ignoreWater    = true;
     player.accFlipper     = true;
     player.buffImmune[mod.BuffType("ExplorerComb")] = true;
     player.buffImmune[4]   = true;
     player.buffImmune[15]  = true;
     player.buffImmune[109] = true;
     player.buffImmune[9]   = true;
     player.buffImmune[11]  = true;
     player.buffImmune[12]  = true;
     player.buffImmune[17]  = true;
     player.buffImmune[104] = true;
     player.buffImmune[111] = true;
     BuffLoader.Update(BuffID.Gills, player, ref buffIndex);
     BuffLoader.Update(BuffID.Flipper, player, ref buffIndex);
     BuffLoader.Update(BuffID.Shine, player, ref buffIndex);
 }
예제 #4
0
        public override void ProcessTriggers(TriggersSet triggersSet)
        {
            if (DBTMod.Instance.energyChargeKey.Current)
            {
                bool canCharge = true;

                for (int i = 0; i < player.buffType.Length; i++)
                {
                    ModBuff modBuff = BuffLoader.GetBuff(player.buffType[i]);
                    if (modBuff == null)
                    {
                        continue;
                    }

                    ICanStopCharging icsc = modBuff as ICanStopCharging;
                    if (icsc == null)
                    {
                        continue;
                    }

                    if (icsc.DoesStopCharging(this))
                    {
                        canCharge = false;
                        break;
                    }
                }

                IsCharging = canCharge;
            }
            else
            {
                IsCharging = false;
            }

            MouseLeftHeld  = triggersSet.MouseLeft;
            MouseRightHeld = triggersSet.MouseRight;

            UpHeld    = triggersSet.Up;
            DownHeld  = triggersSet.Down;
            LeftHeld  = triggersSet.Left;
            RightHeld = triggersSet.Right;

            if (player.whoAmI == Main.myPlayer)
            {
                if (DBTMod.Instance.transformUpKey.JustPressed && SelectedTransformations != null)
                {
                    TryTransforming(SelectedTransformations);
                }

                if (DBTMod.Instance.transformDownKey.JustPressed)
                {
                    ClearTransformations();
                }

                if (DBTMod.Instance.characterMenuKey.JustPressed)
                {
                    DBTMod.Instance.dbtMenu.Visible = !DBTMod.Instance.dbtMenu.Visible;
                }
            }
        }
예제 #5
0
        internal static List <TagCompound> SaveModBuffs(Player player)
        {
            var  list         = new List <TagCompound>();
            byte vanillaIndex = 0;

            for (int k = 0; k < Player.maxBuffs; k++)
            {
                int buff = player.buffType[k];
                if (buff == 0 || Main.buffNoSave[buff])
                {
                    continue;
                }

                if (BuffLoader.IsModBuff(buff))
                {
                    var modBuff = BuffLoader.GetBuff(buff);
                    list.Add(new TagCompound {
                        ["index"] = vanillaIndex,                         //position of the loaded buff if there were no modBuffs before it
                        ["mod"]   = modBuff.mod.Name,
                        ["name"]  = modBuff.Name,
                        ["time"]  = player.buffTime[k]
                    });
                }
                else
                {
                    vanillaIndex++;
                }
            }
            return(list);
        }
예제 #6
0
        public override void Load()
        {
            base.Load();

            var buff = BuffLoader.GetBuff(BuffID.Slimed);

            buff.Update
        }
예제 #7
0
 public override void OnHitPlayer(Player target, int damage, bool crit)
 {
     for (int k = 0; k < Player.maxBuffs; k++)
     {
         if (target.buffType[k] > 0 && target.buffTime[k] > 0 && BuffLoader.CanBeCleared(target.buffType[k]) && Main.rand.NextBool())
         {
             target.DelBuff(k);
             k--;
         }
     }
 }
        ////////////////

        /// <summary>
        /// Alias for `Lang.GetBuffName(int)`.
        ///
        /// Credit: Jofairden @ Even More Modifiers
        /// </summary>
        /// <param name="buffType"></param>
        /// <returns></returns>
        public static string GetBuffDisplayName(int buffType)
        {
            if (buffType >= BuffID.Count)
            {
                return(BuffLoader.GetBuff(buffType)?
                       .DisplayName
                       .GetTranslation(LanguageManager.Instance.ActiveCulture)
                       ?? "null");
            }

            return(Lang.GetBuffName(buffType));
        }
예제 #9
0
        protected override void Draw(SpriteBatch spriteBatch)
        {
            int num  = -1;
            int num2 = 11;

            for (int i = 0; i < 22; i++)
            {
                if (Player.buffType[i] > 0)
                {
                    int b    = Player.buffType[i];
                    int x    = 320 + i * 38;
                    int num3 = 8;
                    if (i >= num2)
                    {
                        x     = 32 + (i - num2) * 38;
                        num3 += 50;
                    }
                    num = (int)DrawBuffIcon.Invoke(null, new object[] { num, i, b, x, num3 }); // Main.DrawBuffIcon(num, i, b, x, num3);
                }
                else
                {
                    Main.buffAlpha[i] = 0.4f;
                }
            }
            if (num >= 0)
            {
                int num4 = Player.buffType[num];
                if (num4 > 0)
                {
                    Main.buffString = Lang.GetBuffDescription(num4);
                    int itemRarity = 0;
                    if (num4 == 26 && Main.expertMode)
                    {
                        Main.buffString = Language.GetTextValue("BuffDescription.WellFed_Expert");
                    }
                    if (num4 == 147)
                    {
                        Main.bannerMouseOver = true;
                    }
                    if (num4 == 94)
                    {
                        int num5 = (int)(Player.manaSickReduction * 100f) + 1;
                        Main.buffString = Main.buffString + num5 + "%";
                    }
                    if (Main.meleeBuff[num4])
                    {
                        itemRarity = -10;
                    }
                    BuffLoader.ModifyBuffTip(num4, ref Main.buffString, ref itemRarity);
                    Main.instance.MouseTextHackZoom(Lang.GetBuffName(num4), itemRarity, 0);
                }
            }
        }
예제 #10
0
        public TransformationDefinition GetCurrentTransformation()
        {
            for (int i = 0; i < player.buffType.Length; i++)
            {
                ModBuff            buff      = BuffLoader.GetBuff(player.buffType[i]);
                TransformationBuff transBuff = buff as TransformationBuff;

                if (transBuff != null)
                {
                    return(transBuff.TransformationDefinition);
                }
            }

            return(null);
        }
예제 #11
0
        public override bool CheckDead(NPC npc)
        {
            // Spread Wither to nearby NPCs
            if (witherStack > 0)
            {
                int dustT = DustType <VoidParticle>();
                for (int i = 0; i < 30; i++)
                {
                    float rot = i / 30f * MathHelper.TwoPi;
                    Dust.NewDustPerfect(npc.Center, dustT, rot.ToRotationVector2() * Main.rand.NextFloat(8, 11), newColor: Color.Black, Scale: 1.6f).noGravity = true;
                }

                int closestNPC = npc.FindClosestNPC(1000);
                if (closestNPC == -1)
                {
                    return(true);
                }

                NPC other = Main.npc[closestNPC];

                int wither = BuffType <Items.ErilipahBiome.Wither>();
                int bIndex = npc.FindBuffIndex(wither);
                int myTime = npc.buffTime[bIndex];

                if (!other.HasBuff(wither))
                {
                    other.AddBuff(wither, myTime + 30);
                }
                else
                {
                    BuffLoader.ReApply(wither, other, myTime + 30, bIndex);
                }

                for (int i = 0; i < 30; i++)
                {
                    float   rot = i / 30f * MathHelper.TwoPi;
                    Vector2 vel = rot.ToRotationVector2() * Main.rand.NextFloat(7.5f, 10);
                    Dust.NewDustPerfect(other.Center + vel * 10, dustT, -vel, newColor: Color.Black, Scale: 1.6f).noGravity = true;
                }

                for (int i = 0; i < 30; i++)
                {
                    Vector2 pos = Vector2.Lerp(npc.Center, other.Center, i / 30f);
                    Dust.NewDustPerfect(pos + Main.rand.NextVector2Circular(6, 6), dustT, Vector2.Zero, newColor: Color.Black, Scale: 1.5f).noGravity = true;
                }
            }
            return(true);
        }
예제 #12
0
파일: Test.cs 프로젝트: XiaoRr/LocalizerMod
 public static void TestAddBuffTranslation()
 {
     try
     {
         var type = ModLoader.GetMod("Bluemagic").BuffType("Sunlight");
         if (type > 0)
         {
             TranslateTool.AddBuffNameTranslation(BuffLoader.GetBuff(type), "测试buff名字", GameCulture.Chinese);
             TranslateTool.AddBuffTipTranslation(BuffLoader.GetBuff(type), "测试buff说明", GameCulture.Chinese);
         }
     }
     catch (Exception ex)
     {
         ErrorLogger.Log(ex.ToString());
     }
 }
예제 #13
0
        internal void SetInfo(int buffid, string name, string effect, Texture2D texture)
        {
            costPanel.children.Clear();
            this.buffName.SetText(name);
            this.buffIcon.SetImage(texture);


            var buffdesc = Lang.GetBuffDescription(buffid);

            int itemRarity = 0;

            if (Main.meleeBuff[buffid])
            {
                itemRarity = -10;
            }

            BuffLoader.ModifyBuffTip(buffid, ref buffdesc, ref itemRarity);
            this.buffEffect.SetText(buffdesc);
            lv.Recalculate();
        }
예제 #14
0
        public override void OnPlay(TLoZPlayer tlozPlayer, SongVariant variant)
        {
            for (int i = 0; i < Main.player.Length; i++)
            {
                Player player = Main.player[i];

                if (!player.active || player.dead)
                {
                    return;
                }

                for (int j = 0; j < player.CountBuffs(); j++)
                {
                    int buffType = player.buffType[j];

                    if (Main.debuff[buffType] && BuffLoader.CanBeCleared(buffType))
                    {
                        player.ClearBuff(buffType);
                    }
                }
            }
        }
예제 #15
0
        internal static bool WriteModBuffs(Player player, BinaryWriter writer)
        {
            byte[] data;
            byte   num = 0;

            using (MemoryStream buffer = new MemoryStream())
            {
                using (BinaryWriter customWriter = new BinaryWriter(buffer))
                {
                    byte index = 0;
                    for (int k = 0; k < Player.maxBuffs; k++)
                    {
                        int buff = player.buffType[k];
                        if (!Main.buffNoSave[buff])
                        {
                            if (BuffLoader.IsModBuff(buff))
                            {
                                customWriter.Write(index);
                                ModBuff modBuff = BuffLoader.GetBuff(buff);
                                customWriter.Write(modBuff.mod.Name);
                                customWriter.Write(modBuff.Name);
                                customWriter.Write(player.buffTime[k]);
                                num++;
                            }
                            index++;
                        }
                    }
                    customWriter.Flush();
                    data = buffer.ToArray();
                }
            }
            if (num > 0)
            {
                writer.Write(num);
                writer.Write(data);
                return(true);
            }
            return(false);
        }
예제 #16
0
        public override void Update(Player player, ref int buffIndex)
        {
            AlchemistNPCLitePlayer modPlayer = player.GetModPlayer <AlchemistNPCLitePlayer>();

            modPlayer.Defense8     = true;
            modPlayer.DR10         = true;
            modPlayer.Regeneration = true;
            modPlayer.Lifeforce    = true;
            modPlayer.MS           = true;
            player.lavaImmune      = true;
            player.fireWalk        = true;
            player.buffImmune[1]   = true;
            player.buffImmune[2]   = true;
            player.buffImmune[5]   = true;
            player.buffImmune[14]  = true;
            player.buffImmune[113] = true;
            player.buffImmune[114] = true;
            if (player.thorns < 1.0)
            {
                player.thorns = 0.3333333f;
            }
            BuffLoader.Update(BuffID.ObsidianSkin, player, ref buffIndex);
        }
        // Decompiled code
        public static void DrawInterface_Resources_Buffs()
        {
            Main.recBigList = false;
            int num  = -1;
            int num2 = 11;

            int offsetCount = 0;

            for (int i = 0; i < Player.MaxBuffs; i++)
            {
                var buffType = Main.player[Main.myPlayer].buffType[i];


                if (buffType > 0)
                {
                    if (!BuffIsToggable(buffType))
                    {
                        int b    = buffType;
                        int x    = 32 + offsetCount * 38;
                        int num3 = 76;
                        if (offsetCount >= num2)
                        {
                            x     = 32 + Math.Abs(offsetCount % 11) * 38;
                            num3 += 50 * (offsetCount / 11);
                        }

                        num = DrawBuffIcon(num, i, b, x, num3);

                        offsetCount++;
                    }
                }
                else
                {
                    Main.buffAlpha[i] = 0.4f;
                }
            }

            if (num < 0)
            {
                return;
            }

            int num4 = Main.player[Main.myPlayer].buffType[num];

            if (num4 > 0)
            {
                Main.buffString = Lang.GetBuffDescription(num4);
                if (num4 == 26 && Main.expertMode)
                {
                    Main.buffString = Language.GetTextValue("BuffDescription.WellFed_Expert");
                }

                if (num4 == 147)
                {
                    Main.bannerMouseOver = true;
                }

                if (num4 == 94)
                {
                    int num5 = (int)(Main.player[Main.myPlayer].manaSickReduction * 100f) + 1;
                    Main.buffString = Main.buffString + num5 + "%";
                }

                int rare = Main.meleeBuff[num4] ? -10 : 0;
                BuffLoader.ModifyBuffTip(num4, ref Main.buffString, ref rare);
                Main.instance.MouseTextHackZoom(Lang.GetBuffName(num4), rare);
            }
        }
예제 #18
0
        public override void Update(Player player, ref int buffIndex)
        {
            AlchemistNPCLitePlayer modPlayer = player.GetModPlayer <AlchemistNPCLitePlayer>();

            modPlayer.AllDamage10  = true;
            modPlayer.AllCrit10    = true;
            modPlayer.Defense8     = true;
            modPlayer.DR10         = true;
            modPlayer.Regeneration = true;
            modPlayer.Lifeforce    = true;
            modPlayer.MS           = true;
            player.GetDamage(DamageClass.Magic)     += 0.25f;
            player.GetCritChance(DamageClass.Magic) += 2;
            player.statManaMax2   += 20;
            player.manaCost       -= 0.02f;
            player.manaRegenBuff   = true;
            player.archery         = true;
            player.ammoPotion      = true;
            player.lavaImmune      = true;
            player.fireWalk        = true;
            player.buffImmune[24]  = true;
            player.buffImmune[29]  = true;
            player.buffImmune[39]  = true;
            player.buffImmune[44]  = true;
            player.buffImmune[46]  = true;
            player.buffImmune[47]  = true;
            player.buffImmune[69]  = true;
            player.buffImmune[110] = true;
            player.buffImmune[112] = true;
            player.buffImmune[113] = true;
            player.buffImmune[114] = true;
            player.buffImmune[115] = true;
            player.buffImmune[117] = true;
            player.buffImmune[150] = true;
            player.buffImmune[ModContent.BuffType <Buffs.BattleComb>()]   = true;
            player.buffImmune[ModContent.BuffType <Buffs.TankComb>()]     = true;
            player.buffImmune[ModContent.BuffType <Buffs.VanTankComb>()]  = true;
            player.buffImmune[ModContent.BuffType <Buffs.RangerComb>()]   = true;
            player.buffImmune[ModContent.BuffType <Buffs.MageComb>()]     = true;
            player.buffImmune[ModContent.BuffType <Buffs.SummonerComb>()] = true;
            player.buffImmune[1]  = true;
            player.buffImmune[2]  = true;
            player.buffImmune[5]  = true;
            player.buffImmune[6]  = true;
            player.buffImmune[7]  = true;
            player.buffImmune[14] = true;
            ++player.maxMinions;
            ++player.maxMinions;
            // IMPLEMENT WHEN WEAKREFERENCES FIXED

            /*
             * if (ModLoader.GetMod("MorePotions") != null)
             * {
             *      if (player.HasBuff(ModContent.BuffType<Buffs.MorePotionsComb>()) || player.HasBuff(ModLoader.GetMod("MorePotions").BuffType("SoulbindingElixerPotionBuff")))
             *      {
             *              --player.maxMinions;
             *      }
             *      if (player.HasBuff(ModContent.BuffType<Buffs.MorePotionsComb>()) || player.HasBuff(ModLoader.GetMod("MorePotions").BuffType("DiamondSkinPotionBuff")))
             *      {
             *              player.statDefense -= 8;
             *      }
             * }
             */
            if (player.thorns < 1.0)
            {
                player.thorns = 0.3333333f;
            }
            BuffLoader.Update(BuffID.ObsidianSkin, player, ref buffIndex);
        }
예제 #19
0
        public override void ProcessTriggers(TriggersSet triggersSet)
        {
            if (DBTMod.Instance.energyChargeKey.Current)
            {
                bool canCharge = true;

                for (int i = 0; i < player.buffType.Length; i++)
                {
                    ModBuff modBuff = BuffLoader.GetBuff(player.buffType[i]);
                    if (modBuff == null)
                    {
                        continue;
                    }

                    ICanStopCharging icsc = modBuff as ICanStopCharging;
                    if (icsc == null)
                    {
                        continue;
                    }

                    if (icsc.DoesStopCharging(this))
                    {
                        canCharge = false;
                        break;
                    }
                }

                Charging = canCharge;
            }
            else
            {
                Charging = false;
            }

            //Test code
            //UpdateSynchronizedControls(triggersSet);

            //SyncTriggerSet();

            //_mProgressionSystem.Update(player);

            MouseLeftHeld  = triggersSet.MouseLeft;
            MouseRightHeld = triggersSet.MouseRight;

            UpHeld    = triggersSet.Up;
            DownHeld  = triggersSet.Down;
            LeftHeld  = triggersSet.Left;
            RightHeld = triggersSet.Right;

            if (player.whoAmI == Main.myPlayer)
            {
                if (DBTMod.Instance.transformUpKey.JustPressed && SelectedTransformations != null)
                {
                    TryTransforming(SelectedTransformations);
                }

                if (DBTMod.Instance.transformDownKey.JustPressed)
                {
                    ClearTransformations();
                }

                if (DBTMod.Instance.characterMenuKey.JustPressed)
                {
                    DBTMod.Instance.characterTransformationsMenu.Visible = !DBTMod.Instance.characterTransformationsMenu.Visible;
                }
                if (DBTMod.Instance.techniqueMenuKey.JustPressed)
                {
                    DBTMod.Instance.techniqueMenu.Visible = !DBTMod.Instance.techniqueMenu.Visible;
                }
                if (DBTMod.Instance.flightToggleKey.JustPressed)
                {
                    Flying = !Flying;
                }
            }
        }
예제 #20
0
        public void UpdateDebuffsByID(NPC npc, ref int id, int time, int buffSlot = -1)
        {
            if (npc.buffImmune[id])
            {
                return;
            }
            ModBuff bf = BuffLoader.GetBuff(id);

            if (bf != null)
            {
                if (buffSlot == -1)
                {
                    for (buffSlot = 0; buffSlot < 5; buffSlot++)
                    {
                        if (npc.buffType[buffSlot] <= 0)
                        {
                            npc.buffTime[buffSlot] = time;
                            break;
                        }
                    }
                    if (buffSlot >= 5)
                    {
                        return;
                    }
                }
                bf.Update(npc, ref buffSlot);
                //npc.buffTime[buffSlot] = 0;
                return;
            }

            if (id == 20)
            {
                npc.poisoned = true;
            }
            if (id == 70)
            {
                npc.venom = true;
            }
            if (id == 24)
            {
                npc.onFire = true;
            }
            if (id == 72)
            {
                npc.midas = true;
            }
            if (id == 69)
            {
                npc.ichor = true;
            }
            if (id == 31)
            {
                npc.confused = true;
            }
            if (id == 39)
            {
                npc.onFire2 = true;
            }
            if (id == 44)
            {
                npc.onFrostBurn = true;
            }
            if (id == 103)
            {
                npc.dripping = true;
            }
            if (id == 137)
            {
                npc.drippingSlime = true;
            }
            if (id == 119)
            {
                npc.loveStruck = true;
            }
            if (id == 120)
            {
                npc.stinky = true;
            }
            if (id == 151)
            {
                npc.soulDrain = true;
            }
            if (id == 153)
            {
                npc.shadowFlame = true;
            }
            if (id == 165)
            {
                npc.dryadWard = true;
            }
            if (id == 169)
            {
                npc.javelined = true;
            }
            if (id == 183)
            {
                npc.celled = true;
            }
            if (id == 186)
            {
                npc.dryadBane = true;
            }
            if (id == 189)
            {
                npc.daybreak = true;
            }
            if (id == 203)
            {
                npc.betsysCurse = true;
            }
            if (id == 204)
            {
                npc.oiled = true;
            }
        }
예제 #21
0
        public static void Heal()
        {
            int num27  = CalculatePriceForHeal();
            int health = Main.player[Main.myPlayer].statLifeMax2 - Main.player[Main.myPlayer].statLife;

            if (health == 0)
            {
                return;
            }

            if (Main.player[Main.myPlayer].BuyItem(num27, -1))
            {
                AchievementsHelper.HandleNurseService(num27);
                Main.PlaySound(SoundID.Item4, -1, -1);
                Main.player[Main.myPlayer].HealEffect(health, true);

                Main.player[Main.myPlayer].statLife += health;
                if (true)
                {
                    for (int i = 0; i < Player.MaxBuffs; i++)
                    {
                        int num9 = Main.player[Main.myPlayer].buffType[i];
                        if (Main.debuff[num9] && Main.player[Main.myPlayer].buffTime[i] > 0 && BuffLoader.CanBeCleared(num9))
                        {
                            Main.player[Main.myPlayer].DelBuff(i);
                            i = -1;
                        }
                    }
                }
                PlayerHooks.PostNurseHeal(Main.player[Main.myPlayer], Main.npc[Main.player[Main.myPlayer].talkNPC], health, true, num27);
            }
        }
예제 #22
0
        public static int CalculatePriceForHeal()
        {
            int health = Main.player[Main.myPlayer].statLifeMax2 - Main.player[Main.myPlayer].statLife;
            int num27  = Main.player[Main.myPlayer].statLifeMax2 - Main.player[Main.myPlayer].statLife;

            for (int k = 0; k < Player.MaxBuffs; k++)
            {
                int num6 = Main.player[Main.myPlayer].buffType[k];
                if (Main.debuff[num6] && Main.player[Main.myPlayer].buffTime[k] > 5 && BuffLoader.CanBeCleared(num6))
                {
                    num27 += 1000;
                }
            }
            int num23 = num27;

            PlayerHooks.ModifyNursePrice(Main.player[Main.myPlayer], Main.npc[Main.player[Main.myPlayer].talkNPC], health, true, ref num23);
            if (num23 > 0)
            {
                num23 = (int)((double)num23 * 0.75);
                if (num23 < 1)
                {
                    num23 = 1;
                }
            }
            return(num23);
        }
예제 #23
0
        public override void Update(Player player, ref int buffIndex)
        {
            AlchemistNPCPlayer modPlayer = player.GetModPlayer <AlchemistNPCPlayer>();

            modPlayer.AllDamage10  = true;
            modPlayer.AllCrit10    = true;
            modPlayer.Defense8     = true;
            modPlayer.DR10         = true;
            modPlayer.Regeneration = true;
            modPlayer.Lifeforce    = true;
            modPlayer.MS           = true;
            player.magicDamage    += 0.25f;
            player.magicCrit      += 2;
            player.statManaMax2   += 20;
            player.manaCost       -= 0.02f;
            player.manaRegenBuff   = true;
            player.archery         = true;
            player.ammoPotion      = true;
            player.lavaImmune      = true;
            player.fireWalk        = true;
            player.buffImmune[24]  = true;
            player.buffImmune[29]  = true;
            player.buffImmune[39]  = true;
            player.buffImmune[44]  = true;
            player.buffImmune[46]  = true;
            player.buffImmune[47]  = true;
            player.buffImmune[69]  = true;
            player.buffImmune[110] = true;
            player.buffImmune[112] = true;
            player.buffImmune[113] = true;
            player.buffImmune[114] = true;
            player.buffImmune[115] = true;
            player.buffImmune[117] = true;
            player.buffImmune[150] = true;
            player.buffImmune[mod.BuffType("BattleComb")]   = true;
            player.buffImmune[mod.BuffType("TankComb")]     = true;
            player.buffImmune[mod.BuffType("VanTankComb")]  = true;
            player.buffImmune[mod.BuffType("RangerComb")]   = true;
            player.buffImmune[mod.BuffType("MageComb")]     = true;
            player.buffImmune[mod.BuffType("SummonerComb")] = true;
            player.buffImmune[1]  = true;
            player.buffImmune[2]  = true;
            player.buffImmune[3]  = true;
            player.buffImmune[5]  = true;
            player.buffImmune[6]  = true;
            player.buffImmune[7]  = true;
            player.buffImmune[14] = true;
            ++player.maxMinions;
            ++player.maxMinions;
            if (ModLoader.GetMod("MorePotions") != null)
            {
                if (player.HasBuff(mod.BuffType("MorePotionsComb")) || player.HasBuff(ModLoader.GetMod("MorePotions").BuffType("SoulbindingElixerPotionBuff")))
                {
                    --player.maxMinions;
                }
                if (player.HasBuff(mod.BuffType("MorePotionsComb")) || player.HasBuff(ModLoader.GetMod("MorePotions").BuffType("DiamondSkinPotionBuff")))
                {
                    player.statDefense -= 8;
                }
            }
            if (player.thorns < 1.0)
            {
                player.thorns = 0.3333333f;
            }
            BuffLoader.Update(BuffID.ObsidianSkin, player, ref buffIndex);
        }
예제 #24
0
        private void DrawInterface_Resources_Buffs()
        {
            int BuffID = -1;
            int num2   = 11;

            for (int i = 0; i < 22; i++)
            {
                if (Main.player[Main.myPlayer].buffType[i] > 0)
                {
                    int b    = Main.player[Main.myPlayer].buffType[i];
                    int x    = 32 + i * 38;
                    int num3 = 76;
                    if (i >= num2)
                    {
                        x     = 32 + (i - num2) * 38;
                        num3 += 50;
                    }
                    BuffID = DrawBuffIcon(BuffID, i, b, x, num3);
                }
                else
                {
                    Main.buffAlpha[i] = 0.4f;
                }
            }
            if (BuffID >= 0)
            {
                int num4 = Main.player[Main.myPlayer].buffType[BuffID];
                if (num4 > 0)
                {
                    Main.buffString = Lang.GetBuffDescription(num4);
                    int itemRarity = 0;
                    if (num4 == 26 && Main.expertMode)
                    {
                        Main.buffString = Language.GetTextValue("BuffDescription.WellFed_Expert");
                    }
                    if (num4 == 147)
                    {
                        Main.bannerMouseOver = true;
                    }
                    if (num4 == 94)
                    {
                        int num5 = (int)(Main.player[Main.myPlayer].manaSickReduction * 100f) + 1;
                        Main.buffString = Main.buffString + num5 + "%";
                    }
                    if (Main.meleeBuff[num4])
                    {
                        itemRarity = -10;
                    }
                    BuffLoader.ModifyBuffTip(num4, ref Main.buffString, ref itemRarity);
                }
            }



            int DrawBuffIcon(int drawBuffText, int i, int b, int x, int y)
            {
                //IL_011b: Unknown result type (might be due to invalid IL or missing references)
                if (b == 0)
                {
                    return(drawBuffText);
                }
                Microsoft.Xna.Framework.Color color = new Microsoft.Xna.Framework.Color(Main.buffAlpha[i], Main.buffAlpha[i], Main.buffAlpha[i], Main.buffAlpha[i]);
                Main.spriteBatch.Draw(Main.buffTexture[b], new Vector2((float)x, (float)y), new Microsoft.Xna.Framework.Rectangle(0, 0, Main.buffTexture[b].Width, Main.buffTexture[b].Height), color, 0f, default(Vector2), 1f, SpriteEffects.None, 0f);
                if (!Main.vanityPet[b] && !Main.lightPet[b] && !Main.buffNoTimeDisplay[b] && (!Main.player[Main.myPlayer].honeyWet || b != 48) && (!Main.player[Main.myPlayer].wet || !Main.expertMode || b != 46) && Main.player[Main.myPlayer].buffTime[i] > 2)
                {
                    string text = Lang.LocalizedDuration(new TimeSpan(0, 0, Main.player[Main.myPlayer].buffTime[i] / 60), true, false);
                    DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, Main.fontItemStack, text, new Vector2((float)x, (float)(y + Main.buffTexture[b].Height)), color, 0f, default(Vector2), 0.8f, SpriteEffects.None, 0f);
                }
                if (Main.mouseX < x + Main.buffTexture[b].Width && Main.mouseY <y + Main.buffTexture[b].Height && Main.mouseX> x && Main.mouseY > y)
                {
                    drawBuffText       = i;
                    Main.buffAlpha[i] += 0.1f;
                    bool flag = Main.mouseRight && Main.mouseRightRelease;
                    if (PlayerInput.UsingGamepad)
                    {
                        flag = (Main.mouseLeft && Main.mouseLeftRelease && Main.playerInventory);
                        if (Main.playerInventory)
                        {
                            Main.player[Main.myPlayer].mouseInterface = true;
                        }
                    }
                    else
                    {
                        Main.player[Main.myPlayer].mouseInterface = true;
                    }
                    if (flag)
                    {
                        TryRemovingBuff(i, b);
                    }
                }
                else
                {
                    Main.buffAlpha[i] -= 0.05f;
                }
                if (Main.buffAlpha[i] > 1f)
                {
                    Main.buffAlpha[i] = 1f;
                }
                else if ((double)Main.buffAlpha[i] < 0.4)
                {
                    Main.buffAlpha[i] = 0.4f;
                }
                if (PlayerInput.UsingGamepad && !Main.playerInventory)
                {
                    drawBuffText = -1;
                }
                return(drawBuffText);
            }

            void TryRemovingBuff(int i, int b)
            {
                bool flag = false;

                if (!Main.debuff[b] && b != 60 && b != 151)
                {
                    if (Main.player[Main.myPlayer].mount.Active && Main.player[Main.myPlayer].mount.CheckBuff(b))
                    {
                        Main.player[Main.myPlayer].mount.Dismount(Main.player[Main.myPlayer]);
                        flag = true;
                    }
                    if (Main.player[Main.myPlayer].miscEquips[0].buffType == b && !Main.player[Main.myPlayer].hideMisc[0])
                    {
                        Main.player[Main.myPlayer].hideMisc[0] = true;
                    }
                    if (Main.player[Main.myPlayer].miscEquips[1].buffType == b && !Main.player[Main.myPlayer].hideMisc[1])
                    {
                        Main.player[Main.myPlayer].hideMisc[1] = true;
                    }
                    Main.PlaySound(SoundID.MenuTick, -1, -1, 1, 1f, 0f);
                    if (!flag)
                    {
                        Main.player[Main.myPlayer].DelBuff(i);
                    }
                }
            }
        }
예제 #25
0
        public override void PostSetupContent()
        {
            base.PostSetupContent();


            {
                //ONLY NEEDED BECAUSE IM LAZY AND OLD SAVES WILL BE DESTROYED OTHERWISE
                var modBuffs = new Dictionary <string, List <BuffValue> >();

                for (int i = 0; i < ItemLoader.ItemCount; i++)
                {
                    var mitem = ItemLoader.GetItem(i);


                    if (mitem != null)
                    {
                        if (mitem.item.buffType >= 1)
                        {
                            var buff = BuffLoader.GetBuff(mitem.item.buffType);
                            if (buff != null && !Main.lightPet[mitem.item.buffType] && !Main.vanityPet[mitem.item.buffType] && !Main.debuff[mitem.item.buffType] && !mitem.item.summon)
                            {
                                if (!modBuffs.ContainsKey(mitem.mod.Name))
                                {
                                    modBuffs.Add(mitem.mod.Name, new List <BuffValue>());
                                }

                                var bvalue = new BuffValue(false, mitem.item.buffType, buff.DisplayName.GetDefault(), buff.Description.GetDefault(), mitem.mod.Name, new CostValue[] { new ItemCostValue(mitem.item.type, 30, mitem.DisplayName.GetDefault()) }, null, true);

                                modBuffs[mitem.mod.Name].Add(bvalue);
                            }
                        }
                    }
                }

                foreach (var v in modBuffs)
                {
                    oldSaveModBuffValues.Add(new ModBuffValues(v.Key, v.Value.ToArray()));
                }
            }

            {
                var modBuffs = new Dictionary <string, List <BuffValue> >();

                for (int i = 0; i < ItemLoader.ItemCount; i++)
                {
                    var mitem = ItemLoader.GetItem(i);


                    if (mitem != null)
                    {
                        if (mitem.item.buffType >= 1)
                        {
                            var buff = BuffLoader.GetBuff(mitem.item.buffType);
                            if (buff != null && !Main.lightPet[mitem.item.buffType] && !Main.vanityPet[mitem.item.buffType] && !mitem.item.summon)
                            {
                                if (GetInstance <Config>().AllowDebuff || !Main.debuff[mitem.item.buffType])
                                {
                                    if (!modBuffs.ContainsKey(mitem.mod.Name))
                                    {
                                        modBuffs.Add(mitem.mod.Name, new List <BuffValue>());
                                    }

                                    var bvalue = new BuffValue(false, mitem.item.buffType, buff.DisplayName.GetDefault(), buff.Description.GetDefault(), mitem.mod.Name, new CostValue[] { new ItemCostValue(mitem.item.type, 30, mitem.DisplayName.GetDefault()) }, null, true);

                                    modBuffs[mitem.mod.Name].Add(bvalue);
                                }
                            }
                        }
                    }
                }

                foreach (var v in modBuffs)
                {
                    modBuffValues.Add(new ModBuffValues(v.Key, v.Value.ToArray()));
                }
            }
        }
예제 #26
0
파일: StatusBar.cs 프로젝트: TNTftw21/kRPG
        public static void DrawBuffs()
        {
            const int leftOffset = 320;
            const int iconWidth  = 38;
            const int maxSlots   = 21;

            int       buffTypeId = -1;
            const int secondRowOfBuffsStartIndex = 11;

            for (int buffSlot = 0; buffSlot <= maxSlots; buffSlot++)
            {
                if (Main.player[Main.myPlayer].buffType[buffSlot] > 0)
                {
                    int buff      = Main.player[Main.myPlayer].buffType[buffSlot];
                    int xPosition = leftOffset + buffSlot * iconWidth;

                    int yPosition = 8; //The y offset for the first row...

                    if (buffSlot >= secondRowOfBuffsStartIndex)
                    {
                        xPosition  = 32 + (buffSlot - secondRowOfBuffsStartIndex) * iconWidth;
                        yPosition += 50; //put icon on second row.
                    }

                    buffTypeId = (int)DrawBuffIcon.Invoke(null,
                                                          new object[] { buffTypeId, buffSlot, buff, xPosition, yPosition }); // Main.DrawBuffIcon(num, i, b, x, num3);
                }
                else
                {
                    Main.buffAlpha[buffSlot] = 0.4f;
                }
            }

            if (buffTypeId < 0)
            {
                return;
            }

            int buffId = Main.player[Main.myPlayer].buffType[buffTypeId];

            if (buffId <= 0)
            {
                return;
            }

            Main.buffString = Lang.GetBuffDescription(buffId);

            int itemRarity = 0;

            switch ((VanillaBuffId)buffId)
            {
            case VanillaBuffId.WellFed when Main.expertMode:
                Main.buffString = Language.GetTextValue("BuffDescription.WellFed_Expert");
                break;

            case VanillaBuffId.MonsterBanner:
                Main.bannerMouseOver = true;
                break;

            case VanillaBuffId.ManaSickness:
            {
                int percent = (int)(Main.player[Main.myPlayer].manaSickReduction * 100f) + 1;
                Main.buffString = Main.buffString + percent + "%";
                break;
            }
            }

            if (Main.meleeBuff[buffId])
            {
                itemRarity = -10;
            }

            BuffLoader.ModifyBuffTip(buffId, ref Main.buffString, ref itemRarity);

            Main.instance.MouseTextHackZoom(Lang.GetBuffName(buffId), itemRarity);
        }
        public void QueryModOrigin()
        {
            Point mouseTile = Main.MouseWorld.ToTileCoordinates();

            int   closestNPCIndex    = -1;
            float closestNPCDistance = float.MaxValue;

            for (int l = 0; l < 200; l++)
            {
                if (Main.npc[l].active)
                {
                    float distance = Utils.Distance(Main.npc[l].getRect(), Main.MouseWorld);
                    if (distance < closestNPCDistance)
                    {
                        closestNPCDistance = distance;
                        closestNPCIndex    = l;
                    }
                }
            }

            int   closestItemIndex    = -1;
            float closestItemDistance = float.MaxValue;

            for (int i = 0; i < 400; i++)
            {
                if (Main.item[i].active)
                {
                    float distance = Utils.Distance(Main.item[i].getRect(), Main.MouseWorld);
                    if (distance < closestItemDistance)
                    {
                        closestItemDistance = distance;
                        closestItemIndex    = i;
                    }
                }
            }


            int hoverBuffIndex = -1;
            int hoverBuffID    = -1;

            for (int k = 0; k < 22; k++)
            {
                if (Main.player[Main.myPlayer].buffType[k] > 0)
                {
                    int buffID = Main.player[Main.myPlayer].buffType[k];
                    int buffX  = 32 + k * 38;
                    int buffY  = 76;
                    if (k >= 11)
                    {
                        buffX  = 32 + (k - 11) * 38;
                        buffY += 50;
                    }

                    if (Main.mouseX < buffX + Main.buffTexture[buffID].Width && Main.mouseY <buffY + Main.buffTexture[buffID].Height && Main.mouseX> buffX && Main.mouseY > buffY)
                    {
                        hoverBuffIndex = k;
                        hoverBuffID    = buffID;
                    }
                }
            }

            //Top to Bottom:

            // Hover Buff
            if (hoverBuffIndex > -1 && !Main.playerInventory)
            {
                if (hoverBuffID >= BuffID.Count)
                {
                    ModBuff hoverBuff = BuffLoader.GetBuff(hoverBuffID);
                    Main.NewText("This buff is from: " + hoverBuff.mod.DisplayName);
                    if (HelpfulHotkeysClientConfig.Instance.ShowDeveloperInfoQueryModOrigin)
                    {
                        Main.NewText($"Developer Info: ModName: {hoverBuff.mod.Name}, InternalName: {hoverBuff.Name}, FullName: {hoverBuff.GetType().FullName}");
                    }
                }
                else
                {
                    Main.NewText("This is a vanilla buff.");
                }
            }

            // Item in inventory
            else if (Main.HoverItem.type > 0 && Main.HoverItem != null)
            {
                if (Main.HoverItem.modItem != null)
                {
                    Main.NewText("This item is from: " + Main.HoverItem.modItem.mod.DisplayName);
                    if (HelpfulHotkeysClientConfig.Instance.ShowDeveloperInfoQueryModOrigin)
                    {
                        Main.NewText($"Developer Info: ModName: {Main.HoverItem.modItem.mod.Name}, InternalName: {Main.HoverItem.modItem.Name}, FullName: {Main.HoverItem.modItem.GetType().FullName}");
                    }
                }
                else
                {
                    Main.NewText("This is a vanilla item.");
                    if (HelpfulHotkeysClientConfig.Instance.ShowDeveloperInfoQueryModOrigin)
                    {
                        Main.NewText($"Developer Info: ItemID: {ItemID.Search.GetName(Main.HoverItem.type)}, ItemID#: {Main.HoverItem.type}");
                    }
                }
            }

            // NPC
            else if (closestNPCDistance < 30)
            {
                NPC closestNPC = Main.npc[closestNPCIndex];
                if (closestNPC.modNPC != null)
                {
                    Main.NewText("This npc is from: " + closestNPC.modNPC.mod.DisplayName);
                    if (HelpfulHotkeysClientConfig.Instance.ShowDeveloperInfoQueryModOrigin)
                    {
                        Main.NewText($"Developer Info: ModName: {closestNPC.modNPC.mod.Name}, InternalName: {closestNPC.modNPC.Name}, FullName: {closestNPC.modNPC.GetType().FullName}");
                    }
                }
                else
                {
                    Main.NewText("This is a vanilla npc.");
                    if (HelpfulHotkeysClientConfig.Instance.ShowDeveloperInfoQueryModOrigin)
                    {
                        Main.NewText($"Developer Info: NPCID: {NPCID.Search.GetName(closestNPC.type)}, NPCID#: {closestNPC.type}");
                    }
                }
            }

            // Tile
            else if (Main.tile[mouseTile.X, mouseTile.Y].type >= TileID.Count)
            {
                ModTile modTile = TileLoader.GetTile(Main.tile[mouseTile.X, mouseTile.Y].type);
                Main.NewText("This tile is from: " + modTile.mod.DisplayName);
                if (HelpfulHotkeysClientConfig.Instance.ShowDeveloperInfoQueryModOrigin)
                {
                    Main.NewText($"Developer Info: ModName: {modTile.mod.Name}, InternalName: {modTile.Name}, FullName: {modTile.GetType().FullName}");
                }
                //Main.NewText("This tile is active: " + Main.tile[mouseTile.X, mouseTile.Y].active());
                //Main.NewText("This tile is inactive: " + Main.tile[mouseTile.X, mouseTile.Y].inActive());
                //Main.NewText("This tile is nactive: " + Main.tile[mouseTile.X, mouseTile.Y].nactive());
            }

            // Wall
            else if (Main.tile[mouseTile.X, mouseTile.Y].wall >= WallID.Count)
            {
                ModWall modWall = WallLoader.GetWall(Main.tile[mouseTile.X, mouseTile.Y].wall);
                Main.NewText("This wall is from: " + modWall.mod.DisplayName);
                if (HelpfulHotkeysClientConfig.Instance.ShowDeveloperInfoQueryModOrigin)
                {
                    Main.NewText($"Developer Info: ModName: {modWall.mod.Name}, InternalName: {modWall.Name}, FullName: {modWall.GetType().FullName}");
                }
            }

            // Item on ground
            else if (closestItemDistance < 5)
            {
                if (Main.item[closestItemIndex].modItem != null)
                {
                    ModItem modItem = Main.item[closestItemIndex].modItem;
                    Main.NewText("This item is from: " + modItem.mod.DisplayName);
                    if (HelpfulHotkeysClientConfig.Instance.ShowDeveloperInfoQueryModOrigin)
                    {
                        Main.NewText($"Developer Info: ModName: {modItem.mod.Name}, InternalName: {modItem.Name}, FullName: {modItem.GetType().FullName}");
                    }
                }
                else
                {
                    Main.NewText("This is a vanilla item.");
                    if (HelpfulHotkeysClientConfig.Instance.ShowDeveloperInfoQueryModOrigin)
                    {
                        Main.NewText($"Developer Info: ItemID: {ItemID.Search.GetName(Main.item[closestItemIndex].type)}, ItemID#: {Main.item[closestItemIndex].type}");
                    }
                }
            }

            // How to Use
            else if (true)
            {
                Main.NewText("Hover over an item, npc, tile, or wall to identify which mod it is from.");
            }
        }
예제 #28
0
        internal void SetInfo(CostValue[] cost, int buffid, string name, string effect, Texture2D texture)
        {
            costPanel.children.Clear();
            var costtopLabel = new UIText("Cost");

            costtopLabel.TextColor = new Color(232, 181, 16);
            costPanel.children.Add(new LayoutElementWrapperUIElement(costtopLabel));

            foreach (var v in cost)
            {
                if (v.GetType() == typeof(ItemCostValue))
                {
                    var ll       = new Layout(0, 0, 0, 0, 10, new LayoutHorizontal());
                    var costIcon = new UIImage(Main.itemTexture[((ItemCostValue)v).itemid]);
                    costIcon.Height.Set(20, 0);
                    ll.children.Add(new LayoutElementWrapperUIElement(costIcon));

                    var costcountLabel = new UIText("x" + ((ItemCostValue)v).count);
                    costcountLabel.TextColor = new Color(232, 181, 16);
                    ll.children.Add(new LayoutElementWrapperUIElement(costcountLabel));

                    var costnamelabel = new UIText(((ItemCostValue)v).itemname);
                    costnamelabel.TextColor = new Color(232, 181, 16);
                    ll.children.Add(new LayoutElementWrapperUIElement(costnamelabel));

                    costPanel.children.Add(ll);
                }
                else if (v.GetType() == typeof(MoneyCostValue))
                {
                    var ll    = new Layout(0, 0, 0, 0, 10, new LayoutHorizontal());
                    var money = ((MoneyCostValue)v).cost;
                    for (int i = 4; i >= 1; i--)
                    {
                        int mcount = (int)(money / Math.Pow(100, i - 1));
                        money = (money % ((int)Math.Pow(100, i - 1)));
                        if (mcount > 0)
                        {
                            var costIcon = new UIImage(Main.itemTexture[70 + i]);
                            costIcon.Height.Set(20, 0);
                            ll.children.Add(new LayoutElementWrapperUIElement(costIcon));

                            var costcountLabel = new UIText("x" + mcount);
                            costcountLabel.TextColor = new Color(232, 181, 16);
                            ll.children.Add(new LayoutElementWrapperUIElement(costcountLabel));
                        }
                    }
                    costPanel.children.Add(ll);
                }
            }



            this.buffName.SetText(name);
            this.buffIcon.SetImage(texture);
            var buffdesc = Lang.GetBuffDescription(buffid);

            int itemRarity = 0;

            if (Main.meleeBuff[buffid])
            {
                itemRarity = -10;
            }

            BuffLoader.ModifyBuffTip(buffid, ref buffdesc, ref itemRarity);
            this.buffEffect.SetText(buffdesc);
            lv.Recalculate();
        }
예제 #29
0
        private void MouseText_DrawBuffString(ref int X, ref int Y, int buffNameHeight)
        {
            Microsoft.Xna.Framework.Point p = new Microsoft.Xna.Framework.Point(X, Y);
            int            num    = 220;
            int            num2   = -1;
            float          num3   = 1f / Main.UIScale;
            List <Vector2> list   = new List <Vector2>();
            Vector2        vector = Main.fontMouseText.MeasureString(Main.buffString);

            list.Add(vector);
            int num4 = (int)((float)(Main.screenHeight - 250) * num3) / 20;

            if (num4 < 1)
            {
                num4 = 1;
            }
            if (Main.bannerMouseOver)
            {
                int num5 = 0;
                for (int i = 0; i < NPCLoader.NPCCount; i++)
                {
                    if (Item.BannerToNPC(i) != 0 && Main.player[Main.myPlayer].NPCBannerBuff[i])
                    {
                        num5++;
                        string  npcnameValue = Lang.GetNPCNameValue(Item.BannerToNPC(i));
                        Vector2 vector2      = Main.fontMouseText.MeasureString(npcnameValue);
                        int     num6         = X;
                        int     num7         = Y + (int)vector2.Y + num5 * 20 + 10;
                        int     num8         = 0;
                        int     num9         = (num5 - 1) / num4;
                        for (int j = 0; j < num9; j++)
                        {
                            num8++;
                            num6 += num;
                            num7 -= num4 * 20;
                        }
                        if ((float)num6 + vector2.X > (float)Main.screenWidth * num3 && num2 == -1)
                        {
                            num2 = num5;
                        }
                        list.Add(new Vector2((float)(num6 - num * num8), (float)num7) + vector2 - p.ToVector2());
                    }
                }
            }
            BuffLoader.CustomBuffTipSize(Main.buffString, list);
            Vector2 zero = Vector2.Zero;

            foreach (Vector2 vector3 in list)
            {
                if (zero.X < vector3.X)
                {
                    zero.X = vector3.X;
                }
                if (zero.Y < vector3.Y)
                {
                    zero.Y = vector3.Y;
                }
            }
            if ((float)X + zero.X + 24f > (float)Main.screenWidth * num3)
            {
                X = (int)((float)Main.screenWidth * num3 - zero.X - 24f);
            }
            if ((float)Y + zero.Y + 4f > (float)Main.screenHeight * num3)
            {
                Y = (int)((float)Main.screenHeight * num3 - zero.Y - 4f);
            }
            if (num2 != -1)
            {
                num2--;
            }
            for (int k = 0; k < 5; k++)
            {
                int num10 = X;
                int num11 = Y + buffNameHeight;
                Microsoft.Xna.Framework.Color black = Microsoft.Xna.Framework.Color.Black;
                if (k == 0)
                {
                    num10 -= 2;
                }
                else if (k == 1)
                {
                    num10 += 2;
                }
                else if (k == 2)
                {
                    num11 -= 2;
                }
                else if (k == 3)
                {
                    num11 += 2;
                }
                else
                {
                    black = new Microsoft.Xna.Framework.Color((int)Main.mouseTextColor, (int)Main.mouseTextColor, (int)Main.mouseTextColor, (int)Main.mouseTextColor);
                }
                DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, Main.fontMouseText, Main.buffString, new Vector2((float)num10, (float)num11), black, 0f, default(Vector2), 1f, SpriteEffects.None, 0f);
            }
            if (Main.bannerMouseOver)
            {
                int num12 = 0;
                for (int l = 0; l < NPCLoader.NPCCount; l++)
                {
                    if (Item.BannerToNPC(l) != 0 && Main.player[Main.myPlayer].NPCBannerBuff[l])
                    {
                        num12++;
                        bool flag = false;
                        for (int m = 0; m < 5; m++)
                        {
                            int num13 = X;
                            int num14 = Y + (int)vector.Y + num12 * 20 + 10;
                            int num15 = (num12 - 1) / num4;
                            num13 += num * num15;
                            num14 -= num4 * 20 * num15;
                            string text = Lang.GetNPCNameValue(Item.BannerToNPC(l));
                            if (num2 == num12)
                            {
                                text = Language.GetTextValue("UI.Ellipsis");
                                flag = true;
                            }
                            Microsoft.Xna.Framework.Color black2 = Microsoft.Xna.Framework.Color.Black;
                            if (m == 0)
                            {
                                num13 -= 2;
                            }
                            else if (m == 1)
                            {
                                num13 += 2;
                            }
                            else if (m == 2)
                            {
                                num14 -= 2;
                            }
                            else if (m == 3)
                            {
                                num14 += 2;
                            }
                            else
                            {
                                float num16 = (float)Main.mouseTextColor / 255f;
                                black2 = new Microsoft.Xna.Framework.Color((int)((byte)(80f * num16)), (int)((byte)(255f * num16)), (int)((byte)(120f * num16)), (int)Main.mouseTextColor);
                            }
                            DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, Main.fontMouseText, text, new Vector2((float)num13, (float)num14), black2, 0f, default(Vector2), 1f, SpriteEffects.None, 0f);
                        }
                        if (flag)
                        {
                            return;
                        }
                    }
                }
            }
            BuffLoader.DrawCustomBuffTip(Main.buffString, Main.spriteBatch, X, Y + (int)Main.fontMouseText.MeasureString(Main.buffString).Y);
        }
예제 #30
0
        public override bool NewRightClick(int i, int j)
        {
            int x = i; int y = j;

            while (Main.tile[x, y].frameY % 70 != 0)
            {
                y--;
            }
            while (Main.tile[x, y].frameX % 54 != 0)
            {
                x--;
            }


            int vmID = VendingMachineWorld.GetVendingMachineFromCoordinates(x, y);

            if (vmID < 0)
            {
                Main.NewText("No vending Machine Found...");
                return(false);
            }

            VendingMachineData vm = VendingMachineWorld.vm[vmID];

            if (vm.isItem)
            {
                Main.player[Main.myPlayer].chest = -1;
                Main.npcChatText = "";

                int  type = SoulOfNPC.getTypeFromItemTag(vm.id);
                Item itm  = new Item();
                itm.SetDefaults(type);

                VendingMachineItem vendor = itm.modItem as VendingMachineItem;
                if (vendor != null)
                {
                    if (vendor.replaceRightClick)
                    {
                        vendor.machineRightClick(vm, i, j);
                    }
                    else
                    {
                        Main.npcShop = Main.MaxShopIDs - 1;
                        chooseTalkingNPC(vm);
                        Main.recBigList       = false;
                        Main.playerInventory  = true;
                        Main.InGuideCraftMenu = false;
                        Main.InReforgeMenu    = false;
                        for (int k = 0; k < InvisibleAllShopNPC.shopChest.item.Length; k++)
                        {
                            InvisibleAllShopNPC.shopChest.item[k] = new Item();
                        }
                        vendor.SetupShop(InvisibleAllShopNPC.shopChest);
                        Main.instance.shop[Main.npcShop].SetupShop(ModContent.NPCType <InvisibleAllShopNPC>());
                    }
                }
            }
            else
            {
                int type = SoulOfNPC.getTypeFromNPCTag(vm.id);

                Main.npcShop = NPCToShop(type);

                if (type == NPCID.TravellingMerchant)
                {
                    Main.player[Main.myPlayer].chest = -1;
                    Main.npcChatText = "";
                    for (int k = 0; k < 40; k++)
                    {
                        if (Main.instance.shop[Main.npcShop].item[k] == null)
                        {
                            Main.instance.shop[Main.npcShop].item[k] = new Item();
                        }
                        Main.instance.shop[Main.npcShop].item[k].SetDefaults(Main.travelShop[k]);
                    }
                    Main.InGuideCraftMenu = false;
                    Main.InReforgeMenu    = false;
                    Main.recBigList       = false;
                    Main.playerInventory  = true;
                    chooseTalkingNPC(vm);
                }

                /*Nurse code overrides the normal vending machine shop for the behaviour of the nurse heal option.*/

                else if (type == NPCID.Nurse)
                {
                    int num5 = Main.player[Main.myPlayer].statLifeMax2 - Main.player[Main.myPlayer].statLife;
                    for (int k = 0; k < 22; k++)
                    {
                        int num6 = Main.player[Main.myPlayer].buffType[k];
                        if (Main.debuff[num6] && Main.player[Main.myPlayer].buffTime[k] > 5 && BuffLoader.CanBeCleared(num6))
                        {
                            num5 += 1000;
                        }
                    }

                    if (Main.player[Main.myPlayer].BuyItem(num5))
                    {
                        AchievementsHelper.HandleNurseService(num5);
                        Main.PlaySound(SoundID.Item4, -1, -1);
                        Main.player[Main.myPlayer].HealEffect(Main.player[Main.myPlayer].statLifeMax2 - Main.player[Main.myPlayer].statLife, true);
                        Main.player[Main.myPlayer].statLife = Main.player[Main.myPlayer].statLifeMax2;
                        for (int k = 0; k < 22; k++)
                        {
                            int num23 = Main.player[Main.myPlayer].buffType[k];
                            if (Main.debuff[num23] && Main.player[Main.myPlayer].buffTime[k] > 0 && BuffLoader.CanBeCleared(num23))
                            {
                                Main.player[Main.myPlayer].DelBuff(k);
                                k = -1;
                            }
                        }
                        return(true);
                    }
                }
                else
                {
                    Main.player[Main.myPlayer].chest = -1;
                    Main.npcChatText = "";
                    chooseTalkingNPC(vm);
                    Main.recBigList       = false;
                    Main.playerInventory  = true;
                    Main.InGuideCraftMenu = false;
                    Main.InReforgeMenu    = false;
                    Main.instance.shop[Main.npcShop].SetupShop(Main.npcShop < Main.MaxShopIDs - 1 ? Main.npcShop : type);
                }
            }
            return(true);
        }