From 3a9de1cc988071523230bb0d39aeb98dbe1a0871 Mon Sep 17 00:00:00 2001 From: FyloZ Date: Sun, 5 Jul 2020 11:13:51 -0400 Subject: [PATCH] Fixed the core spider didn't shoot in the right direction. --- Content/NPCs/CoreSpider.cs | 37 ++++++++---------- Content/NPCs/CoreSpiderWall.cs | 69 +++++++++++++--------------------- 2 files changed, 43 insertions(+), 63 deletions(-) diff --git a/Content/NPCs/CoreSpider.cs b/Content/NPCs/CoreSpider.cs index e583f6c..537470f 100644 --- a/Content/NPCs/CoreSpider.cs +++ b/Content/NPCs/CoreSpider.cs @@ -10,32 +10,32 @@ namespace Decimation.Content.NPCs // Check line 43861 of NPC.cs internal class CoreSpider : ModNPC { - private int _frame; private readonly int shootFrame = 120; + private int _frame; public override void SetStaticDefaults() { - this.DisplayName.SetDefault("Core Spider"); - Main.npcFrameCount[this.npc.type] = 8; + DisplayName.SetDefault("Core Spider"); + Main.npcFrameCount[npc.type] = 8; } public override void SetDefaults() { - this.npc.CloneDefaults(NPCID.BlackRecluse); - this.npc.width = 84; - this.npc.height = 24; - this.npc.lifeMax = 750; + npc.CloneDefaults(NPCID.BlackRecluse); + npc.width = 84; + npc.height = 24; + npc.lifeMax = 750; animationType = NPCID.BlackRecluse; - this.npc.lavaImmune = true; - this.npc.buffImmune[BuffID.OnFire] = true; - this.npc.buffImmune[BuffID.Burning] = true; + npc.lavaImmune = true; + npc.buffImmune[BuffID.OnFire] = true; + npc.buffImmune[BuffID.Burning] = true; } public override void AI() { - int x = (int) this.npc.Center.X / 16; - int y = (int) this.npc.Center.Y / 16; + int x = (int) npc.Center.X / 16; + int y = (int) npc.Center.Y / 16; bool onWall = false; for (int i = x - 1; i <= x + 1; i++) for (int j = y - 1; j <= y + 1; j++) @@ -48,15 +48,10 @@ namespace Decimation.Content.NPCs { if (Main.rand.Next(4) == 0) { - float mouthX = (float) (this.npc.height / 2f * Math.Cos(this.npc.rotation - Math.PI * 0.5f)) + - this.npc.Center.X; - float mouthY = (float) (this.npc.height / 2f * Math.Sin(this.npc.rotation - Math.PI * 0.5f)) + - this.npc.Center.Y; - float speedX = (float) (3 * Math.Cos(this.npc.rotation - Math.PI)) * 2; - float speedY = (float) (3 * Math.Sin(this.npc.rotation - Math.PI)) * 2; + Vector2 mouthPos = npc.Center + new Vector2(npc.width / 2f, 0).RotatedBy(npc.rotation); + Vector2 projSpeed = new Vector2(5, 0).RotatedBy(npc.rotation); - Projectile.NewProjectile(new Vector2(mouthX, mouthY), new Vector2(speedX, speedY), - ProjectileID.Fireball, 130, 30); + Projectile.NewProjectile(mouthPos, projSpeed, ProjectileID.Fireball, 130, 30); } _frame = 0; @@ -68,7 +63,7 @@ namespace Decimation.Content.NPCs } if (onWall) - this.npc.Transform(ModContent.NPCType()); + npc.Transform(ModContent.NPCType()); else base.AI(); } diff --git a/Content/NPCs/CoreSpiderWall.cs b/Content/NPCs/CoreSpiderWall.cs index 2afc8e1..11f0ac1 100644 --- a/Content/NPCs/CoreSpiderWall.cs +++ b/Content/NPCs/CoreSpiderWall.cs @@ -1,15 +1,17 @@ -using Terraria; +using Decimation.Content.Tiles.ShrineoftheMoltenOne; +using Microsoft.Xna.Framework; +using Terraria; using Terraria.ID; using Terraria.ModLoader; -using System; -using Decimation.Content.Tiles.ShrineoftheMoltenOne; -using Microsoft.Xna.Framework; namespace Decimation.Content.NPCs { // Check line 43861 of NPC.cs - class CoreSpiderWall : ModNPC + internal class CoreSpiderWall : ModNPC { + private int frame; + private readonly int shootFrame = 120; + public override void SetStaticDefaults() { DisplayName.SetDefault("Core Spider"); @@ -29,24 +31,15 @@ namespace Decimation.Content.NPCs npc.buffImmune[BuffID.Burning] = true; } - int frame = 0; - int shootFrame = 120; - public override void AI() { - int x = (int)npc.Center.X / 16; - int y = (int)npc.Center.Y / 16; + int x = (int) npc.Center.X / 16; + int y = (int) npc.Center.Y / 16; bool onWall = true; for (int i = x - 1; i <= x + 1; i++) - { - for (int j = y - 1; j <= y + 1; j++) - { - if (Main.tile[i, j].wall <= 0) - { - onWall = false; - } - } - } + for (int j = y - 1; j <= y + 1; j++) + if (Main.tile[i, j].wall <= 0) + onWall = false; if (Main.expertMode) { @@ -54,12 +47,10 @@ namespace Decimation.Content.NPCs { if (Main.rand.Next(3) == 0) { - float mouthX = (float)(((npc.height) / 2) * Math.Cos(npc.rotation - Math.PI * 0.5f)) + npc.Center.X; - float mouthY = (float)(((npc.height) / 2) * Math.Sin(npc.rotation - Math.PI * 0.5f)) + npc.Center.Y; - float speedX = (float)(3 * Math.Cos(npc.rotation - Math.PI)) * 2; - float speedY = (float)(3 * Math.Sin(npc.rotation - Math.PI)) * 2; + Vector2 mouthPos = npc.Center + new Vector2(npc.width / 2f, 0).RotatedBy(npc.rotation); + Vector2 projSpeed = new Vector2(5, 0).RotatedBy(npc.rotation); - Projectile.NewProjectile(new Vector2(mouthX, mouthY), new Vector2(speedX, speedY), ProjectileID.Fireball, 130, 30); + Projectile.NewProjectile(mouthPos, projSpeed, ProjectileID.Fireball, 130, 30); } frame = 0; @@ -71,34 +62,28 @@ namespace Decimation.Content.NPCs } if (!onWall) - { npc.Transform(ModContent.NPCType()); - } else - { base.AI(); - } } public override bool CheckConditions(int left, int right, int top, int bottom) { - int x = (int)Main.LocalPlayer.position.X / 16; - int y = (int)Main.LocalPlayer.position.Y / 16; + int x = (int) Main.LocalPlayer.position.X / 16; + int y = (int) Main.LocalPlayer.position.Y / 16; int validBlockCount = 0; - for (int i = (int)(-50 + x / 16f); i <= (int)(50 + x / 16f); i++) - { - for (int j = (int)(-50 + y / 16f); j <= (int)(50 + y / 16f); j++) - { - if (i >= 0 && i <= Main.maxTilesX && j >= 0 && j <= Main.maxTilesY) - { - if (Main.tile[i, j].type == ModContent.TileType() || (Main.tile[i, j].type == ModContent.TileType() || Main.tile[i, j].type == ModContent.TileType() || Main.tile[i, j].type == ModContent.TileType()) || Main.tile[i, j].type == ModContent.TileType()) - validBlockCount++; - } - } - } + for (int i = (int) (-50 + x / 16f); i <= (int) (50 + x / 16f); i++) + for (int j = (int) (-50 + y / 16f); j <= (int) (50 + y / 16f); j++) + if (i >= 0 && i <= Main.maxTilesX && j >= 0 && j <= Main.maxTilesY) + if (Main.tile[i, j].type == ModContent.TileType() || + Main.tile[i, j].type == ModContent.TileType() || + Main.tile[i, j].type == ModContent.TileType() || + Main.tile[i, j].type == ModContent.TileType() || + Main.tile[i, j].type == ModContent.TileType()) + validBlockCount++; return validBlockCount >= 15 && Main.hardMode; } } -} +} \ No newline at end of file