public override float CanSpawn(NPCSpawnInfo spawnInfo)
 {
     return Main.bloodMoon && spawnInfo.spawnTileY < Main.rockLayer && !Main.dayTime ? 0.1f : 0f;
 }
Beispiel #2
2
 public override float CanSpawn(NPCSpawnInfo spawnInfo)
 {
     //Needs to be adjusted later
     return 0f;
 }
Beispiel #3
0
 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;
 }
Beispiel #4
0
 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;
 }
Beispiel #5
0
 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;
 }
Beispiel #6
0
 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;
 }
Beispiel #7
0
        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;
        }
Beispiel #8
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;
 }
Beispiel #10
0
 public override float CanSpawn(NPCSpawnInfo spawnInfo)
 {
     return 0;
 }
Beispiel #11
0
		public virtual void EditSpawnPool(IDictionary<int, float> pool, NPCSpawnInfo spawnInfo)
		{
		}
Beispiel #12
0
 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;
 }
Beispiel #13
0
 public static bool NoZoneNormalSpawn(NPCSpawnInfo spawnInfo)
 {
     return NormalSpawn(spawnInfo) && NoZone(spawnInfo);
 }
Beispiel #14
0
 public static bool NoZoneAllowWater(NPCSpawnInfo spawnInfo)
 {
     return !spawnInfo.sky && !spawnInfo.player.ZoneMeteor && !spawnInfo.spiderCave;
 }
Beispiel #15
0
 public static bool NoZone(NPCSpawnInfo spawnInfo)
 {
     return NoZoneAllowWater(spawnInfo) && !spawnInfo.water;
 }
Beispiel #16
0
 public static bool NormalSpawn(NPCSpawnInfo spawnInfo)
 {
     return !spawnInfo.playerInTown && NoInvasion(spawnInfo);
 }
Beispiel #17
0
 public virtual float CanSpawn(NPCSpawnInfo spawnInfo)
 {
     return 0f;
 }
Beispiel #18
0
 public static bool NoZoneNormalSpawnAllowWater(NPCSpawnInfo spawnInfo)
 {
     return NormalSpawn(spawnInfo) && NoZoneAllowWater(spawnInfo);
 }
Beispiel #19
0
 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);
 }
Beispiel #20
0
 //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;
 }
Beispiel #21
0
 public override float CanSpawn(NPCSpawnInfo spawnInfo)
 {
     return spawnInfo.spawnTileY < Main.rockLayer ? 0.5f : 0f;
 }
Beispiel #22
0
 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;
 }