Exemple #1
0
        public override void Update(Terraria.Player player, SkillData rawdata)
        {
            InvokeBatsSkillData data = (InvokeBatsSkillData)rawdata;
            const float         ShotDirectionVariation = 0.2f;

            if (data.Time == 0)
            {
                data.SetFloat(ShotDirectionVar, -ShotDirectionVariation * 2);
            }
            if (data.Time >= 21 && player.itemAnimation > 0 && player.HeldItem.damage > 0)
            {
                data.ChangeStep();
                float   ShotDirectionY = data.GetFloat(ShotDirectionVar);
                int     Damage         = data.GetSummonDamage(0, 0.6f + 0.02f * data.Level, player);
                Vector2 ShotDirection  = new Vector2(player.direction * -2f, ShotDirectionY);
                int     ProjPos        = Projectile.NewProjectile(player.Center, ShotDirection, 316, Damage, 0f, player.whoAmI);
                if (!data.BatPositions.Contains(ProjPos))
                {
                    data.BatPositions.Add(ProjPos);
                }
                ShotDirectionY += ShotDirectionVariation;
                if (ShotDirectionY >= ShotDirectionVariation * 2)
                {
                    ShotDirectionY *= -1;
                }
                data.SetFloat(ShotDirectionVar, ShotDirectionY);
            }
        }