public override float CanSpawn(NPCSpawnInfo spawnInfo) { return Main.bloodMoon && spawnInfo.spawnTileY < Main.rockLayer && !Main.dayTime ? 0.1f : 0f; }
public override float CanSpawn(NPCSpawnInfo spawnInfo) { //Needs to be adjusted later return 0f; }
public override float CanSpawn(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; int tile = (int)Main.tile[x, y].type; return (ExampleMod.NormalSpawn(spawnInfo) && (tile == 53 || tile == 112 || tile == 116 || tile == 234) && ExampleMod.NoZoneAllowWater(spawnInfo) && spawnInfo.water) && y < Main.rockLayer && (x < 250 || x > Main.maxTilesX - 250) && !spawnInfo.playerSafe && NPC.downedGolemBoss ? 0.5f : 0f; }
public override float CanSpawn(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; int tile = (int)Main.tile[x, y].type; return (tile == 2) && spawnInfo.spawnTileY < Main.rockLayer && !Main.dayTime ? 0.01f : 0f; }
public override float CanSpawn(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; int tile = (int)Main.tile[x, y].type; return spawnInfo.player.ZoneJungle && spawnInfo.spawnTileY < Main.rockLayer && (tile == 60) && !Main.dayTime ? 0.1f : 0f; }
public override float CanSpawn(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; int tile = (int)Main.tile[x, y].type; return (tile == 147) && !Main.bloodMoon && spawnInfo.player.ZoneSnow && spawnInfo.spawnTileY < Main.rockLayer && !Main.dayTime ? 0.1f : 0f; }
public override float CanSpawn(NPCSpawnInfo spawnInfo) { if (NPC.AnyNPCs(mod.NPCType("WispQueen")) && Gyrolite.NoBiome(spawnInfo)) return 10; if (Gyrolite.NoInvasion(spawnInfo) && Gyrolite.NoBiome(spawnInfo)) return 0.5F; return 0; }
public override float CanSpawn(NPCSpawnInfo spawnInfo) { if (NPC.AnyNPCs(mod.NPCType("WispQueen")) && spawnInfo.player.ZoneDesert) return 10; if (Gyrolite.NoInvasion(spawnInfo) && spawnInfo.player.ZoneDesert) return 0.5F; return 0; }
public override float CanSpawn(NPCSpawnInfo spawnInfo) { Tile tile = Main.tile[spawnInfo.spawnTileX, spawnInfo.spawnTileY]; return ExampleMod.NoZoneNormalSpawn(spawnInfo) && (tile.type == 53 || tile.type == 112 || tile.type == 116 || tile.type == 234 || spawnInfo.desertCave) && !spawnInfo.playerSafe && NPC.downedGolemBoss ? 0.5f : 0f; }
public override float CanSpawn(NPCSpawnInfo spawnInfo) { return 0; }
public virtual void EditSpawnPool(IDictionary<int, float> pool, NPCSpawnInfo spawnInfo) { }
public static bool NoBiome(NPCSpawnInfo spawnInfo) { Player player = spawnInfo.player; return !player.ZoneJungle && !player.ZoneDungeon && !player.ZoneCorrupt && !player.ZoneCrimson && !player.ZoneHoly && !player.ZoneSnow && !player.ZoneUndergroundDesert; }
public static bool NoZoneNormalSpawn(NPCSpawnInfo spawnInfo) { return NormalSpawn(spawnInfo) && NoZone(spawnInfo); }
public static bool NoZoneAllowWater(NPCSpawnInfo spawnInfo) { return !spawnInfo.sky && !spawnInfo.player.ZoneMeteor && !spawnInfo.spiderCave; }
public static bool NoZone(NPCSpawnInfo spawnInfo) { return NoZoneAllowWater(spawnInfo) && !spawnInfo.water; }
public static bool NormalSpawn(NPCSpawnInfo spawnInfo) { return !spawnInfo.playerInTown && NoInvasion(spawnInfo); }
public virtual float CanSpawn(NPCSpawnInfo spawnInfo) { return 0f; }
public static bool NoZoneNormalSpawnAllowWater(NPCSpawnInfo spawnInfo) { return NormalSpawn(spawnInfo) && NoZoneAllowWater(spawnInfo); }
public static bool NoInvasion(NPCSpawnInfo spawnInfo) { return !spawnInfo.invasion && ((!Main.pumpkinMoon && !Main.snowMoon) || spawnInfo.spawnTileY > Main.worldSurface || Main.dayTime) && (!Main.eclipse || spawnInfo.spawnTileY > Main.worldSurface || !Main.dayTime); }
//in Terraria.NPC.SpawnNPC after initializing variables and before actual spawning add // int? spawnChoice = NPCLoader.ChooseSpawn(spawnInfo); if(!spawnChoice.HasValue) { return; } // int spawn = spawnChoice.Value; if(spawn != 0) { goto endVanillaSpawn; } internal static int? ChooseSpawn(NPCSpawnInfo spawnInfo) { IDictionary<int, float> pool = new Dictionary<int, float>(); pool[0] = 1f; foreach (ModNPC npc in npcs.Values) { float weight = npc.CanSpawn(spawnInfo); if (weight > 0f) { pool[npc.npc.type] = weight; } } foreach (GlobalNPC globalNPC in globalNPCs) { globalNPC.EditSpawnPool(pool, spawnInfo); } float totalWeight = 0f; foreach (int type in pool.Keys) { totalWeight += pool[type]; } float choice = (float)Main.rand.NextDouble() * totalWeight; foreach (int type in pool.Keys) { float weight = pool[type]; if (choice < weight) { return type; } choice -= weight; } return null; }
public override float CanSpawn(NPCSpawnInfo spawnInfo) { return spawnInfo.spawnTileY < Main.rockLayer ? 0.5f : 0f; }
public override float CanSpawn(NPCSpawnInfo spawnInfo) { int x = spawnInfo.spawnTileX; int y = spawnInfo.spawnTileY; return !Main.bloodMoon && (x < 600 || x > Main.maxTilesX - 600) && spawnInfo.spawnTileY < Main.rockLayer && !Main.dayTime ? 0.1f : 0f; }