Esempio n. 1
0
        public override void Update(Player player, SkillData rawdata)
        {
            VowSkillData data = (VowSkillData)rawdata;

            if (data.Time == 0)
            {
                float        Range           = GetEffectRange(data);
                Translator[] Targets         = data.GetPossibleTargets(true, false, data.CastPosition, Range);
                Translator   NearestTarget   = null;
                float        NearestDistance = Range;
                foreach (Translator Target in Targets)
                {
                    float Distance = (Target.Center - data.CastPosition).Length();
                    if (Distance < NearestDistance)
                    {
                        NearestTarget   = Target;
                        NearestDistance = Distance;
                    }
                }
                if (NearestTarget == null)
                {
                    CombatText.NewText(player.getRect(), Microsoft.Xna.Framework.Color.Red, "There's no one to vow to.");
                    data.EndUse(true);
                    return;
                }
                else
                {
                    Main.NewText("You vowed to protect " + NearestTarget.Name + ".");
                }
                data.Target = NearestTarget;
            }
            if (data.Target.IsDead())
            {
                data.EndUse(false);
                if (player.whoAmI == Main.myPlayer)
                {
                    Main.NewText("You failed to protect the one you vowed for.", Microsoft.Xna.Framework.Color.Red);
                }
                player.AddBuff(Terraria.ID.BuffID.Weak, 30 * 3600);
                player.AddBuff(Terraria.ID.BuffID.BrokenArmor, 30 * 3600);
                player.AddBuff(Terraria.ID.BuffID.Slow, 30 * 3600);
                return;
            }
            if (!data.Target.IsActive())
            {
                if (player.whoAmI == Main.myPlayer)
                {
                    Main.NewText("The one you vowed for left.", Microsoft.Xna.Framework.Color.Red);
                }
                data.EndUse(false);
            }
        }
Esempio n. 2
0
        public override void Draw(Player player, SkillData rawdata, PlayerDrawInfo pdi)
        {
            VowSkillData data = (VowSkillData)rawdata;

            if (data.Target == null)
            {
                return;
            }
            Vector2 DrawPosition = data.Target.Center - Main.screenPosition;

            DrawPosition.Y -= data.Target.Height * 0.5f + 20f;
            Terraria.DataStructures.DrawData dd = new Terraria.DataStructures.DrawData(Main.heartTexture, DrawPosition, null,
                                                                                       Color.White, 0f, new Vector2(Main.heartTexture.Width, Main.heartTexture.Height) * 0.5f, 0.5f, Microsoft.Xna.Framework.Graphics.SpriteEffects.None, 0);
            Main.playerDrawData.Insert(0, dd);
        }
Esempio n. 3
0
        public override void UpdateStatus(Player player, SkillData rawdata)
        {
            VowSkillData data = (VowSkillData)rawdata;

            if (data.Target == null)
            {
                return;
            }
            if (data.Target.Health < data.Target.MaxHealth * 0.9f)
            {
                player.meleeDamage += 0.15f + 0.02f * data.Level;
            }
            player.statLifeMax2 += (int)(player.statLifeMax2 * 0.015f * data.Level);
            if ((player.Center - data.Target.Center).Length() < 250f)
            {
                player.lifeRegen += 2;
            }
        }