public override float SpawnChance(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; int tile = (int)Main.tile[x, y].type; return((Tremor.NoZoneAllowWater(spawnInfo)) && NPC.downedMoonlord && spawnInfo.spawnTileY > Main.maxTilesY - 200 ? 0.002f : 0f); }
public override float SpawnChance(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; int tile = (int)Main.tile[x, y].type; return((Tremor.NormalSpawn(spawnInfo) && (tile == 70)) && y < Main.rockLayer ? 0.03f : 0f); }
public override float SpawnChance(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; int tile = (int)Main.tile[x, y].type; return(Tremor.NormalSpawn(spawnInfo) && spawnInfo.spawnTileY < Main.rockLayer && NPC.downedMoonlord && Main.eclipse ? 0.01f : 0f); }
public override float SpawnChance(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; int tile = (int)Main.tile[x, y].type; return((Tremor.NormalSpawn(spawnInfo) && Tremor.NoZoneAllowWater(spawnInfo)) && NPC.downedMoonlord && Main.hardMode && !Main.dayTime && y < Main.worldSurface ? 0.02f : 0f); }
public override float SpawnChance(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; int tile = (int)Main.tile[x, y].type; return((Tremor.NoZoneAllowWater(spawnInfo)) && NPC.downedBoss3 && y > Main.rockLayer ? 0.02f : 0f); }
public override float SpawnChance(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; Tile tile = Main.tile[spawnInfo.spawnTileX, spawnInfo.spawnTileY]; return((Tremor.NoZoneAllowWater(spawnInfo)) && (tile.type == 368) && y > Main.rockLayer ? 0.01f : 0f); }
public override float SpawnChance(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; int tile = (int)Main.tile[x, y].type; return((Tremor.NormalSpawn(spawnInfo) && Tremor.NoZoneAllowWater(spawnInfo)) && !Main.dayTime && NPC.downedBoss2 && spawnInfo.player.ZoneCrimson && y < Main.worldSurface ? 0.02f : 0); }
public override float SpawnChance(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; int tile = (int)Main.tile[x, y].type; return((Tremor.NormalSpawn(spawnInfo) && (tile == 53 || tile == 112 || tile == 116 || tile == 234) && Tremor.NoZoneAllowWater(spawnInfo) && spawnInfo.water) && y < Main.rockLayer && (x < 250 || x > Main.maxTilesX - 250) && !spawnInfo.playerSafe ? 0.01f : 0f); }
public override float SpawnChance(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; int tile = (int)Main.tile[x, y].type; return(Tremor.NoZoneAllowWater(spawnInfo) && spawnInfo.sky ? 0.02f : 0); }
public override float SpawnChance(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; int tile = (int)Main.tile[x, y].type; return((Tremor.NormalSpawn(spawnInfo) && Tremor.NoZoneAllowWater(spawnInfo)) && Main.hardMode && Main.expertMode && Main.bloodMoon && y < Main.worldSurface ? 0.002f : 0f); }
public override float SpawnChance(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; int tile = (int)Main.tile[x, y].type; return((Tremor.NormalSpawn(spawnInfo) && Tremor.NoZoneAllowWater(spawnInfo)) && NPC.downedBoss1 && y < Main.worldSurface ? 0.1f : 0f); }
public override float SpawnChance(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; int tile = (int)Main.tile[x, y].type; return((Tremor.NoZoneAllowWater(spawnInfo)) && NPC.downedPlantBoss && !Main.dayTime && y < Main.worldSurface ? 0.01f : 0f); }
public override float SpawnChance(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; int tile = (int)Main.tile[x, y].type; return((Tremor.NoZoneAllowWater(spawnInfo)) && spawnInfo.player.ZoneJungle && y > Main.rockLayer ? 0.01f : 0f); }
public override float SpawnChance(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; int tile = (int)Main.tile[x, y].type; return((Tremor.NormalSpawn(spawnInfo) && Tremor.NoZoneAllowWater(spawnInfo)) && Main.hardMode && spawnInfo.spawnTileY > Main.maxTilesY - 200 ? 0.02f : 0); }
public override float SpawnChance(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; int tile = (int)Main.tile[x, y].type; return((Tremor.NormalSpawn(spawnInfo) && !Main.dayTime && Tremor.NoZoneAllowWater(spawnInfo)) && spawnInfo.player.ZoneDesert ? 0.01f : 0f); }
public override float SpawnChance(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; int tile = (int)Main.tile[x, y].type; return((Tremor.NoZoneAllowWater(spawnInfo)) && spawnInfo.player.ZoneDungeon && NPC.downedMoonlord && Main.hardMode && y > Main.rockLayer ? 0.01f : 0f); }
public override float SpawnChance(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; int tile = (int)Main.tile[x, y].type; return((Tremor.NoZoneAllowWater(spawnInfo)) && Main.cloudAlpha > 0f && y < Main.worldSurface && spawnInfo.player.ZoneSnow ? 0.03f : 0f); }
public override void PostUpdate() { if (NPC.LunarApocalypseIsUp && !LunarApocalypseLastTick) { Tremor.Log("Moving pillars..."); var towers = new int[5]; foreach (var npc in Main.npc) { if (npc == null) { continue; } if (npc.type == NPCID.LunarTowerNebula) { towers[0] = npc.whoAmI; } if (npc.type == NPCID.LunarTowerSolar) { towers[1] = npc.whoAmI; } if (npc.type == NPCID.LunarTowerStardust) { towers[2] = npc.whoAmI; } if (npc.type == NPCID.LunarTowerVortex) { towers[3] = npc.whoAmI; } } towers[4] = -1; towers = towers.OrderBy(x => Main.rand.Next()).ToArray(); for (int i = 0; i < 5; i++) { MovePillar(i, towers[i]); } } else if (!NPC.LunarApocalypseIsUp && LunarApocalypseLastTick && TowerActive) { for (int i = Main.chatLine.Length - 1; i >= 0; i--) { if (Main.chatLine[i].text.StartsWith("Impending doom")) { Main.chatLine[i].parsedText = new[] { new TextSnippet("Your hands are shaking...", new Color(175, 75, 255)) }; break; } } NPC.MoonLordCountdown = 0; } LunarApocalypseLastTick = NPC.LunarApocalypseIsUp; }
void MovePillar(int position, int whoAmI) { if (whoAmI == -1) { Tremor.Log("Spawning Nova Pillar"); } //else //{ //Tremor.Log("Moving " + Main.npc[whoAmI].displayName); // } int x = Main.maxTilesX / 6 * (1 + position); var spawnPos = new Vector2(x * 16, (float)(Main.worldSurface - 40) * 16); bool success = false; for (int attempts = 0; attempts < 30; attempts++) { int offsetX = Main.rand.Next(-100, 101); for (int y = (int)Main.worldSurface; y > 100; y--) { if (!Collision.SolidTiles(x + offsetX - 10, x + offsetX + 10, y - 20, y + 15) && !WorldGen.PlayerLOS(x + offsetX - 10, y) && !WorldGen.PlayerLOS(x + offsetX + 10, y) && !WorldGen.PlayerLOS(x + offsetX - 10, y - 20) && !WorldGen.PlayerLOS(x + offsetX + 10, y - 20)) { spawnPos = new Vector2((x + offsetX) * 16, y * 16); success = true; break; } } if (success) { break; } } if (whoAmI == -1) { whoAmI = NPC.NewNPC((int)spawnPos.X, (int)spawnPos.Y, mod.NPCType("NovaPillar")); TowerX = (int)spawnPos.X; TowerY = (int)spawnPos.Y; } else { Main.npc[whoAmI].Center = spawnPos; ShieldStrength = NPC.ShieldStrengthTowerMax; TowerActive = true; } if (Main.netMode == 2 && whoAmI < 200) { NetMessage.SendData(MessageID.SyncNPC, number: whoAmI); } }
public override float SpawnChance(NPCSpawnInfo spawnInfo) { return(spawnInfo.spawnTileY < Main.rockLayer && Main.hardMode && Tremor.NoInvasion(spawnInfo) && NPC.downedMoonlord && Main.dayTime ? 0.005f : 0f); }