using Decimation.Content.Tiles.ShrineoftheMoltenOne; using Microsoft.Xna.Framework; using Terraria; using Terraria.ID; using Terraria.ModLoader; namespace Decimation.Content.NPCs { // Check line 43861 of NPC.cs internal class CoreSpiderWall : ModNPC { private int frame; private readonly int shootFrame = 120; public override void SetStaticDefaults() { DisplayName.SetDefault("Core Spider"); Main.npcFrameCount[npc.type] = 4; } public override void SetDefaults() { npc.CloneDefaults(NPCID.BlackRecluseWall); npc.width = 60; npc.height = 62; npc.lifeMax = 750; animationType = NPCID.BlackRecluseWall; npc.lavaImmune = true; npc.buffImmune[BuffID.OnFire] = true; npc.buffImmune[BuffID.Burning] = true; } public override void AI() { 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; if (Main.expertMode) { if (frame >= shootFrame) { if (Main.rand.Next(3) == 0) { Vector2 mouthPos = npc.Center + new Vector2(npc.width / 2f, 0).RotatedBy(npc.rotation); Vector2 projSpeed = new Vector2(5, 0).RotatedBy(npc.rotation); Projectile.NewProjectile(mouthPos, projSpeed, ProjectileID.Fireball, 130, 30); } frame = 0; } else { frame++; } } 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 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++; return validBlockCount >= 15 && Main.hardMode; } } }