public override void AI()
        {
            Player    player    = Main.player[projectile.owner];
            FanPlayer modPlayer = player.GetModPlayer <FanPlayer>();

            if (modPlayer.RoseColoredSunActive)
            {
                projectile.timeLeft = 2;
            }

            projectile.position.Y = player.position.Y - 240f;
            projectile.position.X = player.position.X + 5f;
            Lighting.AddLight(projectile.position, 255f, 84f, 161f);
            projectile.rotation += (float)projectile.direction * 0.01f;

            for (int n = 0; n < Main.maxNPCs; n++)
            {
                NPC npc = Main.npc[n];
                if (npc.active && projectile.Distance(npc.position) <= 30f * 16f)
                {
                    npc.AddBuff(BuffID.Confused, 300);
                    npc.AddBuff(BuffID.OnFire, 300);
                }
            }
        }
示例#2
0
        public override bool ManualStandSpawning(Player player)
        {
            FanPlayer fPlayer = player.GetModPlayer <FanPlayer>();

            fPlayer.BrianEnoAct1 = true;
            player.AddBuff(BuffType <BrianEnoActiveBuff>(), 2);
            return(true);
        }
        public override void Update(Player player, ref int buffIndex)
        {
            FanPlayer fPlayer = player.GetModPlayer <FanPlayer>();

            if (fPlayer.anyBrianEno)
            {
                player.AddBuff(BuffType <BrianEnoActiveBuff>(), 2);
            }
        }
示例#4
0
        public override void Update(Player player, ref int buffIndex)
        {
            FanPlayer fPlayer = player.GetModPlayer <FanPlayer>();

            if (player.GetModPlayer <MyPlayer>().StandOut)
            {
                player.statDefense        -= fPlayer.banksDefenseReduction;
                player.buffTime[buffIndex] = 2;
            }
        }
示例#5
0
        public override bool PreAI(NPC npc)
        {
            FanPlayer FPlayer = Main.LocalPlayer.GetModPlayer <FanPlayer>();

            /*if (FPlayer.avalanche)
             * {
             *  affectedByAvalance = true;
             * }*/
            if (welded)
            {
                npc.velocity = Vector2.Zero;
                weldTimer++;
                if (weldTimer >= weldMaxTimer)
                {
                    weldTimer    = 0;
                    weldMaxTimer = 0;
                    welded       = false;
                }
                return(false);
            }

            /*if (affectedByAvalance)
             * {
             *  icicleTimer++;
             *  npc.velocity = Vector2.Zero;
             *  npc.color = Color.LightBlue;
             *  if (icicleTimer == 170)
             *  {
             *      Projectile.NewProjectile(npc.position.X, npc.position.Y - Main.screenHeight, 0f, 5f, mod.ProjectileType("Icicle"), 23, 1f, Main.myPlayer);
             *  }
             *  if (icicleTimer == 175)
             *  {
             *      Projectile.NewProjectile(npc.position.X, npc.position.Y - Main.screenHeight, 0f, 5f, mod.ProjectileType("Icicle"), 23, 1f, Main.myPlayer);
             *  }
             *  if (icicleTimer == 180)
             *  {
             *      Projectile.NewProjectile(npc.position.X, npc.position.Y - Main.screenHeight, 0f, 5f, mod.ProjectileType("Icicle"), 23, 1f, Main.myPlayer);
             *      FPlayer.avalanche = false;
             *  }
             *  if (icicleTimer >= 200)
             *  {
             *      affectedByAvalance = false;
             *  }
             *  return false;
             * }*/
            return(true);
        }
示例#6
0
        public override void AI()
        {
            SelectAnimation();
            UpdateStandInfo();
            Player    player  = Main.player[projectile.owner];
            MyPlayer  mPlayer = player.GetModPlayer <MyPlayer>();
            FanPlayer fPlayer = player.GetModPlayer <FanPlayer>();

            //Lighting.AddLight((int)(projectile.Center.X / 16f), (int)(projectile.Center.Y / 16f), 0.6f, 0.9f, 0.3f);
            //Dust.NewDust(projectile.position + projectile.velocity, projectile.width, projectile.height, 35, projectile.velocity.X * -0.5f, projectile.velocity.Y * -0.5f);

            if (shootCount > 0)
            {
                shootCount--;
            }
            if (specialPressTimer > 0)
            {
                specialPressTimer--;
            }
            if (mPlayer.StandOut)
            {
                projectile.timeLeft = 2;
            }


            if (Main.mouseLeft && player.whoAmI == projectile.owner)
            {
                if (target == null)
                {
                    target = FindNearestTarget(TargetDetectionRange);
                }
                else
                {
                    attackFrames         = true;
                    projectile.position  = target.Center + new Vector2(((target.width / 2f) + projectile.width) * -target.direction, 0f);
                    projectile.direction = target.direction;
                    if (projectile.Distance(target.Center) >= TargetDetectionRange)
                    {
                        target = null;
                    }

                    if (shootCount <= 0 && projectile.frame == 2)
                    {
                        shootCount += shootTime;
                        target.StrikeNPC(newProjectileDamage, 0.2f, projectile.direction);
                        Main.PlaySound(2, (int)projectile.Center.X, (int)projectile.Center.Y, 41, 1f, 3f);
                    }
                    target.GetGlobalNPC <FanGlobalNPC>().banksCoinMultiplier = coinMultiplier;
                }
            }
            if (Main.mouseRight && player.whoAmI == projectile.owner && !attackFrames)
            {
                if (target == null)
                {
                    shotgunChargeTimer = 0;
                    target             = FindNearestTarget(TargetDetectionRange);
                }
                else
                {
                    secondaryAbilityFrames = true;
                    projectile.Center      = target.Center + new Vector2(((target.width / 2f) + projectile.width) * -target.direction, 0f);
                    projectile.direction   = target.direction;
                    if (projectile.Distance(target.Center) >= TargetDetectionRange)
                    {
                        target = null;
                    }

                    shotgunChargeTimer++;
                    if (shotgunChargeTimer >= 60)
                    {
                        shootCount += newShootTime;
                        Vector2 shootVel = target.Center - projectile.Center;
                        shootVel.Normalize();
                        shootVel *= shootSpeed;

                        float numberProjectiles = 6;
                        float rotation          = MathHelper.ToRadians(30f);
                        float random            = Main.rand.NextFloat(-6f, 6f + 1f);
                        for (int i = 0; i < numberProjectiles; i++)
                        {
                            Vector2 perturbedSpeed = new Vector2(shootVel.X + random, shootVel.Y).RotatedBy(MathHelper.Lerp(-rotation, rotation, i / (numberProjectiles - 1))) * .2f;
                            int     proj           = Projectile.NewProjectile(projectile.Center, perturbedSpeed, ProjectileID.Bullet, newProjectileDamage * 2, 1f, player.whoAmI);
                            Main.projectile[proj].netUpdate = true;
                        }
                        shotgunChargeTimer = 0;
                        Main.PlaySound(2, projectile.position, 36);
                    }
                    target.GetGlobalNPC <FanGlobalNPC>().banksCoinMultiplier = coinMultiplier;
                }
            }
            if (!Main.mouseLeft && !Main.mouseRight)
            {
                normalFrames           = true;
                attackFrames           = false;
                secondaryAbilityFrames = false;
                target = null;
            }
            riskyRewardsActive = player.HasBuff(BuffType <RiskyRewards>());
            if (SpecialKeyPressedNoCooldown() && specialPressTimer <= 0)
            {
                if (riskyRewardsActive)
                {
                    fPlayer.banksDefenseReduction = 0;
                    coinMultiplier = 1f;
                    player.ClearBuff(BuffType <RiskyRewards>());
                }
                else
                {
                    fPlayer.banksDefenseReduction = 12;
                    coinMultiplier = 2f;
                    player.AddBuff(BuffType <RiskyRewards>(), 2);
                }
                specialPressTimer += 30;
            }

            if (!attackFrames && !secondaryAbilityFrames)
            {
                StayBehind();
            }
            projectile.spriteDirection = projectile.direction;
        }
示例#7
0
        public override void AI()
        {
            SelectFrame();
            shootCount--;
            Player    player  = Main.player[projectile.owner];
            MyPlayer  mPlayer = player.GetModPlayer <MyPlayer>();
            FanPlayer FPlayer = player.GetModPlayer <FanPlayer>();

            projectile.frameCounter++;
            if (mPlayer.StandOut)
            {
                projectile.timeLeft = 2;
            }
            if (projectile.spriteDirection == 1)
            {
                drawOffsetX = -10;
            }
            if (projectile.spriteDirection == -1)
            {
                drawOffsetX = -60;
            }
            drawOriginOffsetY = -80;
            if (Main.mouseLeft)
            {
                attackFrames    = true;
                normalFrames    = false;
                Main.mouseRight = false;        //so that the player can't just stop time while punching
                float rotaY = Main.MouseWorld.Y - projectile.Center.Y;
                projectile.rotation = MathHelper.ToRadians((rotaY * projectile.spriteDirection) / 6f);
                if (Main.MouseWorld.X > projectile.position.X)
                {
                    projectile.spriteDirection = 1;
                    projectile.direction       = 1;
                }
                if (Main.MouseWorld.X < projectile.position.X)
                {
                    projectile.spriteDirection = -1;
                    projectile.direction       = -1;
                }
                if (projectile.position.X < Main.MouseWorld.X - 5f)
                {
                    velocityAddition.X = 5f;
                }
                if (projectile.position.X > Main.MouseWorld.X + 5f)
                {
                    velocityAddition.X = -5f;
                }
                if (projectile.position.X > Main.MouseWorld.X - 5f && projectile.position.X < Main.MouseWorld.X + 5f)
                {
                    velocityAddition.X = 0f;
                }
                if (projectile.position.Y > Main.MouseWorld.Y + 5f)
                {
                    velocityAddition.Y = -5f;
                }
                if (projectile.position.Y < Main.MouseWorld.Y - 5f)
                {
                    velocityAddition.Y = 5f;
                }
                if (projectile.position.Y < Main.MouseWorld.Y + 5f && projectile.position.Y > Main.MouseWorld.Y - 5f)
                {
                    velocityAddition.Y = 0f;
                }
                mouseDistance = Vector2.Distance(Main.MouseWorld, projectile.Center);
                if (mouseDistance > 20f)
                {
                    projectile.velocity = player.velocity + velocityAddition;
                }
                if (mouseDistance <= 20f)
                {
                    projectile.velocity = Vector2.Zero;
                }
                if (shootCount <= 0)
                {
                    shootCount += 12;
                    Vector2 shootVel = Main.MouseWorld - projectile.Center;
                    if (shootVel == Vector2.Zero)
                    {
                        shootVel = new Vector2(0f, 1f);
                    }
                    shootVel.Normalize();
                    shootVel *= shootSpeed;
                    int proj = Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y - 20f, shootVel.X, shootVel.Y, mod.ProjectileType("Fists"), 7, 2f, Main.myPlayer, 0f, 0f);
                    Main.projectile[proj].netUpdate = true;
                    projectile.netUpdate            = true;
                }
                if (shootCount <= 0)
                {
                    shootCount = 0;
                }
            }
            else
            {
                Vector2 vector131 = player.Center;
                vector131.X         -= (float)((12 + player.width / 2) * player.direction);
                vector131.Y         -= -15f;
                projectile.Center    = Vector2.Lerp(projectile.Center, vector131, 0.2f);
                projectile.velocity *= 0.8f;
                projectile.direction = (projectile.spriteDirection = player.direction);
                projectile.rotation  = 0;
                normalFrames         = true;
                attackFrames         = false;
            }
            if (Main.mouseRight && !player.HasBuff(mod.BuffType("SoreEye")))
            {
                Main.mouseLeft = false;
                player.AddBuff(mod.BuffType("Forewarned"), 180);
            }
            Vector2 direction  = player.Center - projectile.Center;
            float   distanceTo = direction.Length();

            if (distanceTo > 98f)
            {
                if (projectile.position.X <= player.position.X - 15f)
                {
                    projectile.position = new Vector2(projectile.position.X + 0.2f, projectile.position.Y);
                    projectile.velocity = Vector2.Zero;
                }
                if (projectile.position.X >= player.position.X + 15f)
                {
                    projectile.position = new Vector2(projectile.position.X - 0.2f, projectile.position.Y);
                    projectile.velocity = Vector2.Zero;
                }
                if (projectile.position.Y >= player.position.Y + 15f)
                {
                    projectile.position = new Vector2(projectile.position.X, projectile.position.Y - 0.2f);
                    projectile.velocity = Vector2.Zero;
                }
                if (projectile.position.Y <= player.position.Y - 15f)
                {
                    projectile.position = new Vector2(projectile.position.X, projectile.position.Y + 0.2f);
                    projectile.velocity = Vector2.Zero;
                }
            }
            if (distanceTo >= 120)
            {
                Main.mouseLeft    = false;
                Main.mouseRight   = false;
                projectile.Center = player.Center;
            }
        }