示例#1
0
        public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack)
        {
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            if (player.altFunctionUse == 2)
            {
                modPlayer.WindGauntletCD = 60;
            }
            else
            {
                player.immuneTime += 1;
            }
            if (player.itemAnimation == 1)
            {
                player.immuneTime += 45;
            }
            player.velocity.X += speedX / 10;
            player.velocity.Y += speedY / 10;
            player.immuneTime += 1;
            player.immune      = true;
            if (player.altFunctionUse != 2)
            {
                int dust3 = Dust.NewDust((player.itemLocation - player.position).RotatedBy(player.itemRotation) + player.position, 0, 0, 87, 0f, 0f, 25, Color.Goldenrod, 1.5f);
                Main.dust[dust3].noGravity = true;
                Main.dust[dust3].velocity  = new Vector2(0, 0);
            }
            return(false);
        }
示例#2
0
        public override bool CanUseItem(Player player)
        {
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            if (player.altFunctionUse == 2)     //2 is right click
            {
                player.MinionNPCTargetAim();
                item.useTime      = 28;
                item.useAnimation = 28;
                item.damage       = 400;
                item.mana         = 0;
                if (Main.npc.IndexInRange(player.MinionAttackTargetNPC))
                {
                    item.mana = 45;
                    Main.PlaySound(2, player.Center, 20);
                    player.Teleport(Main.npc[player.MinionAttackTargetNPC].position + new Vector2(Main.npc[player.MinionAttackTargetNPC].direction * (Main.npc[player.MinionAttackTargetNPC].width), 0), 1);
                }
                //item.summon = true;
                //item.shoot = 327;
            }
            else
            {
                item.useTime      = 7;
                item.useAnimation = 7;
                item.damage       = 100;
                item.mana         = 0;
                //item.summon = false;
                //item.shoot = ProjectileType("FireWhip");
            }
            return(base.CanUseItem(player));
        }
示例#3
0
        public override void AI()
        {
            Player          player    = Main.player[projectile.owner];
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            int hooksOut = 0;

            for (int l = 0; l < 1000; l++)
            {
                if (Main.projectile[l].active && Main.projectile[l].owner == Main.myPlayer && Main.projectile[l].type == projectile.type)
                {
                    if (hooksOut > 0)
                    {
                        Vector2 trgtvel = player.position - projectile.position;
                        trgtvel.Normalize();
                        Main.npc[(int)projectile.ai[1]].velocity += 30 * trgtvel;
                        Main.projectile[l].Kill();
                        projectile.Kill();
                    }
                    hooksOut++;
                }
            }

            if (projectile.damage == 0 && projectile.ai[1] != 0)
            {
                projectile.position = Main.npc[(int)projectile.ai[0]].Center;
            }
            if (projectile.damage == 0 && projectile.ai[1] != 0 && !Main.npc[(int)projectile.ai[0]].active)
            {
                projectile.Kill();
            }
        }
示例#4
0
        public override void AI()           //this make that the projectile will face the corect way
        {                                   // |
            Player          player    = Main.player[projectile.owner];
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            modPlayer.IceShield = true;
            Vector2 mousePos = Main.MouseWorld;
            Vector2 unit     = (player.Center - mousePos);

            unit.Normalize();
            unit *= -10;
            projectile.position = player.position /*- (new Vector2(35,0))*/ + new Vector2(50).RotatedBy((float)Math.Atan2((player.Center - mousePos).Y, (player.Center - mousePos).X) + 1.557f);
            projectile.rotation = (float)Math.Atan2((player.Center - mousePos).Y, (player.Center - mousePos).X) + 1.8157f;
            for (int i = 0; i < Main.projectile.Length; i++)
            {
                if (projectile.Hitbox.Intersects(Main.projectile[i].Hitbox) && Main.projectile[i].type != ProjectileType <IceShield>())
                {
                    projectile.damage += (int)(Main.projectile[i].damage * 0.1f);
                    //Main.projectile[i].velocity.;
                }
            }
            if (modPlayer.channelsword > 0)
            {
                projectile.timeLeft = 3600;
            }
            if (modPlayer.channelsword == 0)
            {
                //projectile.timeLeft = Math.Min(3,projectile.timeLeft);
                projectile.Kill();
            }
        }
示例#5
0
        public override void HoldItem(Player player)
        {
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            item.autoReuse          = false;
            modPlayer.reloadablegun = 2;
            reloading = Math.Max(reloading, 0);
            if (modPlayer.reloadgun && reloading <= 10 /* && reloading > 0*/)
            {
                altfire = -3;
            }
            if (modPlayer.reloadgun || RoundsLeft <= 0)
            {
                if (/*RoundsLeft != RoundsMax && */ reloading == 0)
                {
                    reloading = 1;
                }
                modPlayer.reloadgun = false;
            }
            if (player.altFunctionUse == 2)     //2 is right click
            {
                item.useTime      = 5;
                item.useAnimation = (5 * RoundsMax /*RoundsLeft*/) + 4;
                item.damage       = 40;
            }
            else
            {
                item.useTime      = 10;
                item.useAnimation = 10;
                item.damage       = 75;
            }
        }
示例#6
0
 public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack)
 {
     if (player.altFunctionUse != 2)
     {
         int numberProjectiles = 3 + Main.rand.Next(2); //This defines how many projectiles to shot. 4 + Main.rand.Next(2)= 4 or 5 shots
         for (int i = 0; i < numberProjectiles; i++)
         {
             Vector2 perturbedSpeed = new Vector2(speedX, speedY).RotatedByRandom(MathHelper.ToRadians(30));     // This defines the projectiles random spread . 30 degree spread.
             int     a = Projectile.NewProjectile(position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockBack, player.whoAmI);
             Main.projectile[a].magic     = true;
             Main.projectile[a].friendly  = true;
             Main.projectile[a].hostile   = false;
             Main.projectile[a].timeLeft  = 60;
             Main.projectile[a].penetrate = -1;
         }
         return(false);
     }
     else
     {
         ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();
         if (!modPlayer.IceShield && modPlayer.channelice == 0)
         {
             Projectile.NewProjectile(position.X, position.Y, speedX, speedY, type, damage, knockBack, player.whoAmI);
         }
         modPlayer.channelice = 3;
         return(false);
     }
 }
示例#7
0
        public override bool CanUseItem(Player player)
        {
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            //item.shoot = bullets[0].id;
            item.shootSpeed = 12.5f + (bullets[0].speed * (item.shootSpeed / 12));
            if (RoundsLeft == 0)
            {
                player.itemAnimation = 0;
                return(false);
            }
            if (player.altFunctionUse == 2)     //2 is right click
            {
                item.useTime      = 5;
                item.useAnimation = (5 * RoundsMax /*RoundsLeft*/) + 4;
                item.damage       = 40;
                altfire           = 1;
            }
            else
            {
                item.useTime      = 7;
                item.useAnimation = 7;
                item.damage       = 85;
                altfire           = -1;
            }
            if (reloading > 0 && RoundsLeft > 5)
            {
                reloading = 0;
            }
            item.autoReuse = false;
            return(base.CanUseItem(player));
        }
示例#8
0
        public override void AI()           //this make that the projectile will face the corect way
        {                                   // |
            Player          player    = Main.player[projectile.owner];
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            modPlayer.FlameShield = true;
            Vector2 mousePos = Main.MouseWorld;
            Vector2 unit     = (player.Center - mousePos);

            unit.Normalize();
            unit *= -2;
            if (projectile.penetrate < maxCharge && player.channel && projectile.timeLeft == 15)
            {
                projectile.penetrate++;
                projectile.timeLeft = 60;
            }
            projectile.light = projectile.penetrate * (1 / 3);
            if (player.channel && projectile.timeLeft >= 14)
            {
                projectile.position = player.Center + unit;
                projectile.rotation = (float)Math.Atan2((player.Center - mousePos).Y, (player.Center - mousePos).X) + 101.57f;
            }
            if (!player.channel && projectile.timeLeft == 12)
            {
                projectile.timeLeft = Math.Min(projectile.timeLeft, 15);
                projectile.velocity = unit * 3;
                projectile.damage  *= 3;
            }
        }
示例#9
0
        public override void AI()           //this make that the projectile will face the corect way
        {                                   // |
            Player          player    = Main.player[projectile.owner];
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();
            Vector2         mousePos  = Main.MouseWorld;

            projectile.rotation = (float)Math.Atan2((double)projectile.velocity.Y, (double)projectile.velocity.X) + 1.57f;
            Vector2 unit = (mousePos - player.Center);

            unit.Normalize();
            if (_charge < maxCharge && modPlayer.channellightning >= 1 && modPlayer.channellightningid == projectile.whoAmI)
            {
                _charge++;
                projectile.damage++;
            }
            if (!(modPlayer.channellightning >= 1 && modPlayer.channellightningid == projectile.whoAmI))
            {
                if (projectile.hide)
                {
                    Main.PlaySound(42, projectile.position, 186);
                }
                projectile.hide        = false;
                projectile.tileCollide = true;
            }
        }
示例#10
0
        public override bool PreKill(int timeLeft)
        {
            Player          player    = Main.player[projectile.owner];
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            return(!(modPlayer.channellightning >= 1 && modPlayer.channellightningid == projectile.whoAmI));
        }
示例#11
0
        public override void ModifyTooltips(List <TooltipLine> tooltips)
        {
            Player          player    = Main.player[item.owner];
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            for (int i = 0; i < tooltips.Count; i++)
            {
                if (tooltips[i].text.Contains("DisplayConsumed"))
                {
                    TooltipLine tip;
                    tip = new TooltipLine(mod, "DisplayConsumed", "Minion slot boost:" + 90 * modPlayer.consumedgravityglobes);
                    tip.overrideColor = new Color(255, 32, 174, 200);
                    tooltips.RemoveAt(i);
                    tooltips.Insert(i, tip);
                }
                if (tooltips[i].text == "Chaos")
                {
                    TooltipLine tip;
                    tip = new TooltipLine(mod, "Chaos", "Chaos");
                    tip.overrideColor = new Color(255, 32, 174, 200);
                    tooltips.RemoveAt(i);
                    tooltips.Insert(i, tip);
                }
            }
        }
示例#12
0
        public override bool CanUseItem(Player player)
        {
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            if (player.altFunctionUse == 2)     //2 is right click
            {
                item.useTime      = 7;
                item.useAnimation = 7 * RoundsMax;
            }
            else
            {
                item.useTime      = 10;
                item.useAnimation = 10;
            }
            if (reloading > 0 && RoundsLeft != 0)
            {
                reloading = 0;
            }
            if (RoundsLeft <= 0)
            {
                return(false);
            }
            item.autoReuse = false;
            return(base.CanUseItem(player));
        }
示例#13
0
        public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack)
        {
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            modPlayer.pullhook = 3;
            return(true);
        }
示例#14
0
        public override void Update(Player player, ref int buffIndex)
        {
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            player.noKnockback = false;
            player.autoJump    = false;
            player.dashDelay   = 10;
        }
示例#15
0
        public override void HoldItem(Player player)
        {
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();
            int             dust3     = Dust.NewDust(player.Center - new Vector2(((2 - player.direction) * 2) + (player.direction == 1?0:0.85f), 13), 0, 0, 182, 0f, 0f, 25, Color.Orange, (modPlayer.FireWings || charge >= 30)?0.65f:0.55f);

            Main.dust[dust3].noGravity = true;
            Main.dust[dust3].velocity *= (modPlayer.FireWings || charge >= 30)?0.23f:0.07f;
        }
示例#16
0
        public override void RightClick(Player player)
        {
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            //item.toolTip = modPlayer.pullhook + "";
            modPlayer.pullhook = 5;
            base.RightClick(player);
        }
示例#17
0
        public override bool CanUseItem(Player player)
        {
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            //item.toolTip = modPlayer.pullhook + "";
            modPlayer.pullhook = 5;
            Main.NewText("!");
            return(base.CanUseItem(player));
        }
示例#18
0
        public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack)
        {
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            //item.toolTip = modPlayer.pullhook + "";
            modPlayer.pullhook = 5;
            Main.NewText(".");
            return(false);
        }
示例#19
0
        public int projectileid(Player player, int id = -1)
        {
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            if (id != -1)
            {
                modPlayer.channellightningid = id;
            }
            return(modPlayer.channellightningid);
        }
示例#20
0
        public override bool UseItem(Player player)
        {
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            modPlayer.consumedgravityglobes++;
            if (modPlayer.consumedgravityglobes > 1)
            {
                Main.NewText("Stop it, get some help");
            }
            return(true);
        }
示例#21
0
        /*public override void AddRecipes()  //How to craft this item
         * {
         *  ModRecipe recipe = new ModRecipe(mod);
         *  recipe.AddIngredient(null, "ChaosMaterial", 20);   //you need 20 Wind
         *  recipe.AddTile(TileID.SkyMill);   //at work bench
         *  recipe.SetResult(this);
         *  recipe.AddRecipe();
         * }*/
        public override void UpdateAccessory(Player player, bool hideVisual)
        {
            //player.HeldItem.crit = Math.Min(player.HeldItem.crit*2, 500000);
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            modPlayer.multiplyCrit += 1.0f;
            if (item.prefix == 68)
            {
                modPlayer.multiplyCrit += 0.5f;
            }
        }
示例#22
0
        public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack)
        {
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();
            Vector2         offset    = new Vector2(speedX, speedY);

            offset.Normalize();
            Dust.NewDust(position + offset, 1, 1, 134, 0, 0, 0, Color.White, 0.3f);
            if (player.altFunctionUse == 2)
            {
                int numberProjectiles = 5;                 //This defines how many projectiles to shot. 4 + Main.rand.Next(2)= 4 or 5 shots
                for (int i = 0; i < numberProjectiles; i++)
                {
                    Vector2 perturbedSpeed = new Vector2(speedX, speedY).RotatedByRandom(MathHelper.ToRadians(1));                     // This defines the projectiles random spread . 30 degree spread.
                    int     a = Projectile.NewProjectile(position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, ProjectileType <CrystalShot>(), damage, knockBack, player.whoAmI);
                    Main.projectile[a].ai[0] = 0.25f;
                    if (item.prefix == 57)
                    {
                        Main.projectile[a].ai[0] = 0.4f;
                    }
                    if (item.prefix == 57 && Main.expertMode)
                    {
                        Main.projectile[a].ai[0] = 0.8f;
                    }
                }
                modPlayer.chaoschaingunspool = Math.Min(modPlayer.chaoschaingunspool + 0.85f, 9);
                //Main.PlaySound(42, (int)player.position.X, (int)player.position.Y, 165);
                Main.PlaySound(2, (int)player.position.X, (int)player.position.Y, 91);
                player.HealEffect((int)modPlayer.chaoschaingunspool);
                return(false);
            }
            else
            {
                Vector2 perturbedSpeed = new Vector2(speedX, speedY).RotatedByRandom(MathHelper.ToRadians(((int)modPlayer.chaoschaingunspool * 1.5f)));               // This defines the projectiles random spread . 30 degree spread.
                player.itemRotation = (float)Math.Atan2(-perturbedSpeed.X, perturbedSpeed.Y);
                player.itemRotation = (player.itemRotation + (float)Math.Atan2(perturbedSpeed.X, -perturbedSpeed.Y)) / 2;
                if (modPlayer.chaoschaingunspool == 0.0f)
                {
                    damage *= 10;
                }
                int a = Projectile.NewProjectile(position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, 89, damage, knockBack, player.whoAmI);
                int b = Projectile.NewProjectile(position.X, position.Y, perturbedSpeed.X * 3, perturbedSpeed.Y * 3, 94, damage, knockBack, player.whoAmI);
                if (modPlayer.chaoschaingunspool == 0.0f)
                {
                    Main.projectile[a].extraUpdates = 5;
                    Main.projectile[b].extraUpdates = 3;
                }
                modPlayer.chaoschaingunspool = Math.Min(modPlayer.chaoschaingunspool + 2.0f, 9);
                player.HealEffect((int)modPlayer.chaoschaingunspool);
                return(false);
            }
        }
示例#23
0
        /*public override void AddRecipes()  //How to craft this item
         * {
         *  ModRecipe recipe = new ModRecipe(mod);
         *  recipe.AddIngredient(null, "ChaosMaterial", 20);   //you need 20 Wind
         *  recipe.AddTile(TileID.SkyMill);   //at work bench
         *  recipe.SetResult(this);
         *  recipe.AddRecipe();
         * }*/
        public override void UpdateAccessory(Player player, bool hideVisual)
        {
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            player.maxMinions += 9 + (90 * modPlayer.consumedgravityglobes);

            if (player.HeldItem.summon)
            {
                player.HeldItem.autoReuse    = true;
                player.HeldItem.useTime      = 6;
                player.HeldItem.useAnimation = 6;
                player.HeldItem.mana         = 1;
            }
        }
示例#24
0
        public override void UpdateAccessory(Player player, bool hideVisual)
        {
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            player.canRocket     = true;
            player.rocketBoots   = 2;
            player.rocketTimeMax = 5;
            player.maxRunSpeed  += 10;
            player.accRunSpeed  += 4f;
            if (player.controlJump && catches > 0 && player.velocity.Y != 0)
            {
                if (/*player.statMana >= manacost*/ player.CheckMana((int)((manacost * player.manaCost) * ((player.rocketTime < player.rocketTimeMax && catchtime <= 0)?1:0.1f)), true) && player.rocketTime < player.rocketTimeMax)
                {
                    player.rocketTime++;
                    //player.statMana -= (int)(manacost*player.manaCost);
                    //player.manaRegenDelay = 30;
                    if (player.statMana < (manacost * player.manaCost) && catchtime <= 0)
                    {
                        catches--;
                        player.ManaEffect(catches);
                        catchtime = 5;
                        if (catches == 0)
                        {
                            player.rocketTime = 0;
                        }
                    }
                    if (player.statMana >= (manacost * player.manaCost) && catchtime > 0)
                    {
                        catchtime = 0;
                    }
                    if (catchtime > 0)
                    {
                        catchtime--;
                    }
                }
            }
            if (player.velocity.Y == 0 && catches != maxcatches)
            {
                catches = maxcatches;
                player.ManaEffect(catches);
            }
            if (player.velocity.Y > 50)
            {
                player.armorEffectDrawOutlinesForbidden = true;
            }
            if (!player.noFallDmg && Main.rand.Next(fallchance) >= 10 - (int)(player.velocity.Y / 5))
            {
                player.noFallDmg = true;
            }
        }
示例#25
0
        public override void AI()           //this make that the projectile will face the corect way
        {                                   // |
            Player          player    = Main.player[projectile.owner];
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            modPlayer.IceShield = true;
            Vector2 mousePos = Main.MouseWorld;
            Vector2 unit     = (player.Center - mousePos);

            unit.Normalize();
            unit *= -10;
            projectile.Center   = player.Center /*- (new Vector2(35,0))*/ + new Vector2(20).RotatedBy((float)Math.Atan2((player.Center - mousePos).Y, (player.Center - mousePos).X) + 2.557f);
            projectile.rotation = (float)Math.Atan2((player.Center - mousePos).Y, (player.Center - mousePos).X) + 3.1157f;
            for (int i = 0; i < Main.projectile.Length; i++)
            {
                if (projectile.Hitbox.Intersects(Main.projectile[i].Hitbox) && Main.projectile[i].type != projectile.type && Main.projectile[i].damage > 0)
                {
                    projectile.ai[0] += Main.projectile[i].damage * 0.75f;
                    Main.projectile[i].Kill();
                }
            }
            if (modPlayer.channelice > 0)
            {
                projectile.timeLeft = 3600;
            }
            if (modPlayer.channelice == 0)
            {
                Vector2 tempzerovector = new Vector2(0, 0);
                Projectile.NewProjectile(projectile.position, tempzerovector, 624, (int)((projectile.damage + projectile.ai[0]) / 3), projectile.knockBack * 3, projectile.owner);
                int numberProjectiles = 3 + Main.rand.Next(2); //This defines how many projectiles to shot. 4 + Main.rand.Next(2)= 4 or 5 shots
                for (int i = 0; i < numberProjectiles; i++)
                {
                    Vector2 perturbedSpeed = new Vector2((player.Center - mousePos).X, (player.Center - mousePos).Y);
                    perturbedSpeed.Normalize();
                    perturbedSpeed *= -3;
                    perturbedSpeed  = perturbedSpeed.RotatedByRandom(MathHelper.ToRadians(30)); // This defines the projectiles random spread . 30 degree spread.
                    int a = Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, perturbedSpeed.X, perturbedSpeed.Y, 177, projectile.damage + (int)projectile.ai[0], projectile.knockBack + (int)projectile.ai[0], player.whoAmI);
                    Main.projectile[a].magic     = true;
                    Main.projectile[a].friendly  = true;
                    Main.projectile[a].hostile   = false;
                    Main.projectile[a].timeLeft  = 30 + (int)(projectile.ai[0] / 3);
                    Main.projectile[a].penetrate = -1;
                }
                //projectile.timeLeft = Math.Min(3,projectile.timeLeft);
                projectile.Kill();
            }
        }
示例#26
0
        public override void ModifyHitNPC(NPC target, ref int damage, ref float knockback, ref bool crit, ref int hitDirection)
        {
            Player          player    = Main.player[projectile.owner];
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            damage = (int)(damage * mult);
            if (modPlayer.channellightning >= 1 && modPlayer.channellightningid == projectile.whoAmI)
            {
                target.position = projectile.position + projectile.velocity;
                target.velocity = lerp(projectile.velocity / 2, target.velocity, 1 - constrain(target.knockBackResist * 1.25f, 0.1f, 1f));
                damage          = (int)(damage / 10);
                knockback       = 0;
                if (mult < 10)
                {
                    mult += 0.165f;
                }
            }
        }
示例#27
0
        public override void HoldStyle(Player player)
        {
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            if ((!(player.velocity.Y > 0)) || player.sliding)
            {
                int dust3 = Dust.NewDust((player.direction == 1?player.Left:player.Right) - new Vector2(4, -4), 0, 0, 92, 0f, 0f, 25, Color.Goldenrod, 1.5f);
                Main.dust[dust3].noGravity = true;
                Main.dust[dust3].velocity  = new Vector2(0, 0);
            }
            else
            {
                int dust3 = Dust.NewDust((player.direction == 1?player.TopLeft:player.TopRight) - new Vector2(4, -4), 0, 0, 92, 0f, 0f, 25, Color.Goldenrod, 1.5f);
                Main.dust[dust3].noGravity = true;
                Main.dust[dust3].velocity  = new Vector2(0, 0);
            }
            //item.toolTip = modPlayer.stone + "";
        }
示例#28
0
        public override bool CanUseItem(Player player)
        {
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            if (player.altFunctionUse == 2)     //2 is right click
            {
                item.useTime      = 2;
                item.useAnimation = 14;
                item.shoot        = ProjectileType <FireBall>();
            }
            else
            {
                item.useTime      = 1;
                item.useAnimation = 5;
                item.shoot        = ProjectileType <FireWhip>();
            }
            return(base.CanUseItem(player) && !modPlayer.FlameShield);
        }
示例#29
0
 public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack)
 {
     if (player.altFunctionUse == 2)
     {
         Vector2 mousePos = Main.MouseWorld;
         Vector2 unit     = (player.Center - mousePos);
         Vector2 speed    = new Vector2(speedX, speedY);
         double  angle    =
             (
                 (
                     (
                         player.itemAnimation - 7f
                     )
                     / 14)
                 * (
                     1 / (
                         unit.Length() / 400
                         )
                     )
             );
         speed = speed.RotatedBy(angle);
         int a = Projectile.NewProjectile(position.X, position.Y, speed.X, speed.Y, type, damage, knockBack, player.whoAmI, (float)angle, 30);
         Main.projectile[a].magic                = true;
         Main.projectile[a].friendly             = true;
         Main.projectile[a].hostile              = false;
         Main.projectile[a].penetrate            = -1;
         Main.projectile[a].usesLocalNPCImmunity = true;
         unit.Normalize();
         //unit *= 0.66f;
         player.velocity = player.velocity.Length() >= 12?new Vector2(player.velocity.Length(), 0).RotatedBy(MathHelper.Lerp(player.velocity.ToRotation(), unit.ToRotation(), 0.75f)):player.velocity + unit;
         return(false);
     }
     else
     {
         ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();
         damage = (int)(damage * 2.5f);
         if (player.controlUseItem)
         {
             player.itemAnimation   = item.useAnimation - 1;
             modPlayer.channelsword = 5;
         }
         return(!modPlayer.FireWhip);
     }
 }
示例#30
0
        public override void UpdateAccessory(Player player, bool hideVisual)
        {
            ElementalPlayer modPlayer = player.GetModPlayer <ElementalPlayer>();

            modPlayer.reflect      = true;
            player.thrownVelocity += 5f;
            player.thrownVelocity *= 20.1f;
            player.suffocateDelay  = 10;
            player.meleeSpeed     += 20f;
            player.meleeSpeed     *= 2f;
            if (player.HeldItem.thrown)
            {
                player.HeldItem.shootSpeed = 25f;

                /*if (!player.HeldItem.name.Contains(" of wind")) {
                 *  player.HeldItem.name = player.HeldItem.name + " of wind";
                 * }*/
            }
        }