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); } } }
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); } }
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; } }
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); }
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; }
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; } }