public override void UpdateAccessory(Player player, bool hideVisual)
        {
            player.rangedDamage += 0.1f;
            AeroPlayer modPlayer = (AeroPlayer)player.GetModPlayer(mod, "AeroPlayer");

            modPlayer.EmeraldEmpoweredGem = true;
        }
示例#2
0
        public override void UpdateAccessory(Player player, bool hideVisual)
        {
            player.jumpSpeedBoost += 2f;
            AeroPlayer modPlayer = (AeroPlayer)player.GetModPlayer(mod, "AeroPlayer");

            modPlayer.MidasCrown = true;
            player.AddBuff(75, 900, false);
        }
示例#3
0
        public override void UpdateAccessory(Player player, bool hideVisual)
        {
            player.allDamage += 0.10f;
            player.starCloak  = true;
            player.panic      = true;
            player.bee        = true;
            AeroPlayer modPlayer = (AeroPlayer)player.GetModPlayer(mod, "AeroPlayer");

            modPlayer.QueensStinger = true;
        }
示例#4
0
        public override void UpdateArmorSet(Player player)
        {
            player.allDamage      += 0.15f;
            player.wingTimeMax    *= 2;
            player.jumpSpeedBoost += 1.5f;
            player.setBonus        = "+15% increase to all damage\nIncreased flight time\nIncreased jump speed\n10% increased movement speed\nYou leave a trail of deadly spirits";
            AeroPlayer modPlayer = (AeroPlayer)player.GetModPlayer(mod, "AeroPlayer");

            modPlayer.SpiritCultistBonus = true;
        }
示例#5
0
        public override void AI()
        {
            Lighting.AddLight(projectile.Center, (255 - projectile.alpha) * 0.9f / 255f, (255 - projectile.alpha) * 0.1f / 255f, (255 - projectile.alpha) * 0.3f / 255f);

            #region vectors floats and ints
            Player     player                 = Main.player[projectile.owner];
            AeroPlayer modPlayer              = player.GetModPlayer <AeroPlayer>();
            Vector2    idlePosition           = player.Center;
            Vector2    vectorToIdlePosition   = idlePosition - projectile.Center;
            float      distanceToIdlePosition = vectorToIdlePosition.Length();

            #endregion

            if (player.dead)
            {
                modPlayer.FishPartner = false;
            }
            if (modPlayer.FishPartner)
            {
                projectile.timeLeft = 2;
            }

            #region tp to player with dusty

            if (distanceToIdlePosition > 600f)
            {
                projectile.position.X = projectile.position.X + (projectile.width / 2.0f);
                projectile.position.Y = projectile.position.Y + (projectile.height / 2.0f);
                projectile.width      = 30;
                projectile.height     = 30;
                projectile.position.X = projectile.position.X - (projectile.width / 2.0f);
                projectile.position.Y = projectile.position.Y - (projectile.height / 2.0f);
                for (int num621 = 0; num621 < 10; num621++)
                {
                    int num622 = Dust.NewDust(new Vector2(projectile.position.X, projectile.position.Y), projectile.width, projectile.height, 226, 0f, 0f, 100, new Color(112, 244, 250), 2f);
                    Main.dust[num622].velocity *= 1f;
                    if (Main.rand.Next(2) == 0)
                    {
                        Main.dust[num622].scale  = 0.3f;
                        Main.dust[num622].fadeIn = 1f + (float)Main.rand.Next(10) * 0.1f;
                    }
                }
                projectile.Center = player.velocity * .25f;
                NetMessage.SendData(MessageID.PlayerControls, number: player.whoAmI);
                player.fallStart = (int)(player.position.Y / 16f);
                for (int i = 0; i < 4; i++)
                {
                    Vector2 projectilePosition = projectile.position;
                    projectilePosition -= projectile.velocity * (i * 0.25f);
                    projectile.alpha    = 255;
                    int dust = Dust.NewDust(projectilePosition, 1, 1, ModContent.DustType <Sparkle>(), 0f, 0f, 0, default, 1f);
示例#6
0
        public override bool PreAI()
        {
            Player     p  = Main.player[projectile.owner];
            AeroPlayer ap = p.GetModPlayer <AeroPlayer>();

            // Check to see if the projectile needs to be alive.
            if (!p.HasBuff(ModContent.BuffType <Buffs.BurnshockShield>()))
            {
                projectile.Kill();
                return(false);
            }
            projectile.timeLeft = 10;

            // Positioning of projectile (client/owner side).
            if (Main.myPlayer == projectile.owner)
            {
                Vector2 playerCenter    = p.position + new Vector2(0, p.gfxOffY + p.height / 4);
                Vector2 targetDirection = Vector2.Normalize(Main.MouseWorld - playerCenter);

                projectile.position = playerCenter + targetDirection * centerOffset;

                projectile.rotation = targetDirection.ToRotation();
            }

            // Projectile intersection loop.
            for (int i = 0; i < Main.maxProjectiles; ++i)
            {
                if (i == projectile.whoAmI || !Main.projectile[i].active || Main.projectile[i].friendly)
                {
                    continue;
                }

                if (Main.projectile[i].Hitbox.Intersects(projectile.Hitbox))
                {
                    projectile.ai[0]++;
                    projectile.netUpdate = true;

                    Main.projectile[i].Kill();
                    Main.projectile[i].netUpdate = true;
                }
            }

            if (projectile.ai[0] >= 5)
            {
                p.AddBuff(ModContent.BuffType <Buffs.BurnshockDefense>(), 420);
                ap.burnshockSetBonusCooldown = ap.defaultBurnshockSetBonusCooldown;
                projectile.Kill();
            }

            return(false);
        }
示例#7
0
        public override void CheckActive()
        {
            Player     player    = Main.player[projectile.owner];
            AeroPlayer modPlayer = player.GetModPlayer <AeroPlayer>();

            if (player.dead)
            {
                modPlayer.ShiverMinion = false;
            }
            if (modPlayer.ShiverMinion)
            {
                projectile.timeLeft = 2;
            }
        }
        public override void Update(Player player, ref int buffIndex)
        {
            AeroPlayer modPlayer = player.GetModPlayer <AeroPlayer>();

            if (player.ownedProjectileCounts[ModContent.ProjectileType <BurningNeutronStar>()] > 0)
            {
                modPlayer.NeutronMinion = true;
            }

            if (!modPlayer.NeutronMinion)
            {
                player.DelBuff(buffIndex);
                buffIndex--;
                return;
            }

            player.buffTime[buffIndex] = 18000;
        }
示例#9
0
        public override void Update(Player player, ref int buffIndex)
        {
            AeroPlayer modPlayer = player.GetModPlayer <AeroPlayer>();

            if (player.ownedProjectileCounts[ModContent.ProjectileType <ShockburnDrone>()] > 0)
            {
                modPlayer.StarDrone = true;
            }
            if (!modPlayer.StarDrone)
            {
                player.DelBuff(buffIndex);
                buffIndex--;
            }
            else
            {
                player.buffTime[buffIndex] = 18000;
            }
        }
示例#10
0
        public override void Update(Player player, ref int buffIndex)
        {
            AeroPlayer ap = player.GetModPlayer <AeroPlayer>();

            if (player.ownedProjectileCounts[ModContent.ProjectileType <Content.Projectiles.Weapons.Summoning.Huntress>()] > 0)
            {
                ap.huntressSummon = true;
            }

            if (!ap.huntressSummon)
            {
                player.DelBuff(buffIndex--);
            }
            else
            {
                player.buffTime[buffIndex] = 18000;
            }
        }
示例#11
0
        public override void UpdateArmorSet(Player player)
        {
            player.setBonus     = "11% increased melee damage\nTaking damage will release damaging shards of crystal\nCommand a projectile blocking shield";
            player.meleeDamage += 0.11f;

            AeroPlayer ap = player.GetModPlayer <AeroPlayer>();


            ap.BurnshockArmorBonus = true;

            if (ap.burnshockSetBonusCooldown > 0)
            {
                ap.burnshockSetBonusCooldown--;
            }
            else
            {
                if (player.ownedProjectileCounts[ModContent.ProjectileType <BurnshockArmorProjectile>()] < 1)
                {
                    Projectile.NewProjectile(player.Center, default, ModContent.ProjectileType <BurnshockArmorProjectile>(), 0, 0, player.whoAmI);
示例#12
0
        public override void Update(Player player, ref int buffIndex)
        {
            AeroPlayer ap = player.GetModPlayer <AeroPlayer>();

            int projectileAmount =
                player.ownedProjectileCounts[ModContent.ProjectileType <Content.Projectiles.Weapons.Summoning.CharmingBushRedFlower>()] +
                player.ownedProjectileCounts[ModContent.ProjectileType <Content.Projectiles.Weapons.Summoning.CharmingBushGreenFlower>()] +
                player.ownedProjectileCounts[ModContent.ProjectileType <Content.Projectiles.Weapons.Summoning.CharmingBushYellowFlower>()];

            if (projectileAmount > 0)
            {
                ap.charmingBush = true;
            }

            if (!ap.charmingBush)
            {
                player.DelBuff(buffIndex--);
            }
            else
            {
                player.buffTime[buffIndex] = 18000;
            }
        }
示例#13
0
        public override void AI()
        {
            bool       flag64    = projectile.type == mod.ProjectileType("Minicry");
            Player     player    = Main.player[projectile.owner];
            AeroPlayer modPlayer = player.GetModPlayer <AeroPlayer>();

            if (flag64)
            {
                if (player.dead)
                {
                    modPlayer.Minicry = false;
                }

                if (modPlayer.Minicry)
                {
                    projectile.timeLeft = 2;
                }
            }
            i++;
            projectile.rotation = projectile.velocity.ToRotation();
            projectile.frameCounter++;
            if (projectile.frameCounter % 10 == 0)
            {
                projectile.frame++;
                projectile.frameCounter = 0;
                if (projectile.frame >= 6)
                {
                    projectile.frame = 0;
                }
            }

            if (i % 2 == 0)
            {
                int dust = Dust.NewDust(projectile.position, projectile.width / 2, projectile.height / 2, 132);
            }
        }
示例#14
0
        public override bool PreAI()
        {
            Player     owner = Main.player[projectile.owner];
            AeroPlayer ap    = owner.GetModPlayer <AeroPlayer>();

            if (JustSpawned)
            {
                for (int i = 0; i < 20; ++i)
                {
                    Dust dust = Dust.NewDustDirect(projectile.position, projectile.width, projectile.height, ModContent.DustType <Dusts.Leaves>(), 0, 0, 100);
                    dust.velocity *= 1.5f;
                }

                projectile.localAI[0] = 1;
            }

            if (!owner.active)
            {
                projectile.active = false;
                return(false);
            }

            if (owner.dead)
            {
                ap.charmingBush = false;
            }
            if (ap.charmingBush)
            {
                projectile.timeLeft = 2;
            }

            FollowOwner(owner);

            if ((int)(++projectile.localAI[1]) % ShootCooldown == 0)
            {
                int   target   = -1;
                float distance = ShootRange;

                for (int i = 0; i < Main.maxNPCs; i++)
                {
                    if (Main.npc[i].CanBeChasedBy(projectile))
                    {
                        float currentDistance = projectile.Distance(Main.npc[i].Center);

                        if (currentDistance < distance)
                        {
                            target   = i;
                            distance = currentDistance;
                        }
                    }
                }

                if (target != -1)
                {
                    if (Main.myPlayer == projectile.owner)
                    {
                        ShootAt(Main.npc[target]);
                    }
                }
            }

            return(false);
        }
示例#15
0
        public override void AI()
        {
            bool       minion = projectile.type == ModContent.ProjectileType <BurningNeutronStar>();
            AeroPlayer mp     = Main.player[projectile.owner].GetModPlayer <AeroPlayer>();
            Player     player = Main.player[projectile.owner];

            if (Main.player[projectile.owner].ownedProjectileCounts[ModContent.ProjectileType <BurningNeutronStar>()] > 1)
            {
                projectile.Kill();
            }
            {
                projectile.position.X = Main.player[projectile.owner].Center.X - (float)(projectile.width / 2);
                projectile.position.Y = Main.player[projectile.owner].Center.Y - (float)(projectile.height / 2) + Main.player[projectile.owner].gfxOffY - 60f;
                if (Main.player[projectile.owner].gravDir == -1f)
                {
                    projectile.position.Y += 120f;
                    projectile.rotation    = 3.14f;
                }
                else
                {
                    projectile.rotation = 0f;
                }
                projectile.position.X = (int)projectile.position.X;
                projectile.position.Y = (int)projectile.position.Y;
                float num406 = (float)(int)Main.mouseTextColor / 200f - 0.35f;
                num406          *= 0.2f;
                projectile.scale = num406 + 0.95f;
                if (projectile.owner != Main.myPlayer)
                {
                    return;
                }
                if (projectile.ai[0] == 0f)
                {
                    float num407 = projectile.position.X;
                    float num408 = projectile.position.Y;
                    float num409 = 700f;
                    bool  flag11 = false;
                    for (int num410 = 0; num410 < 200; num410++)
                    {
                        if (Main.npc[num410].CanBeChasedBy(this, ignoreDontTakeDamage: true))
                        {
                            float num411 = Main.npc[num410].position.X + (float)(Main.npc[num410].width / 2);
                            float num412 = Main.npc[num410].position.Y + (float)(Main.npc[num410].height / 2);
                            float num413 = Math.Abs(projectile.position.X + (float)(projectile.width / 2) - num411) + Math.Abs(projectile.position.Y + (float)(projectile.height / 2) - num412);
                            if (num413 < num409 && Collision.CanHit(projectile.position, projectile.width, projectile.height, Main.npc[num410].position, Main.npc[num410].width, Main.npc[num410].height))
                            {
                                num409 = num413;
                                num407 = num411;
                                num408 = num412;
                                flag11 = true;
                            }
                        }
                    }
                    if (flag11)
                    {
                        float   num414   = 12f;
                        Vector2 vector30 = new Vector2(projectile.position.X + (float)projectile.width * 0.5f, projectile.position.Y + (float)projectile.height * 0.5f);
                        float   num415   = num407 - vector30.X;
                        float   num416   = num408 - vector30.Y;
                        float   num417   = (float)Math.Sqrt(num415 * num415 + num416 * num416);
                        float   num418   = num417;
                        num417  = num414 / num417;
                        num415 *= num417;
                        num416 *= num417;
                        Projectile.NewProjectile(projectile.Center.X - 4f, projectile.Center.Y, num415, num416, ModContent.ProjectileType <SkylightProjectile>(), Player.crystalLeafDamage, Player.crystalLeafKB, projectile.owner);
                        projectile.ai[0] = 50f;
                    }
                }
                else
                {
                    projectile.ai[0] -= 1f;
                }
            }
        }