public override List <ObjectId> GetNpcPool(GeneratedHint hint, HashSet <ObjectId> usedIds) { var strategy = hint.PlacementStrategy; if (strategy == HintPlacementStrategy.Tiered) { var location = ItemLocations.MapLocationToStandardOverworldLocations[hint.MapLocation]; switch (location) { case OverworldTeleportIndex.Coneria: case OverworldTeleportIndex.ConeriaCastle1: case OverworldTeleportIndex.TempleOfFiends1: case OverworldTeleportIndex.Pravoka: case OverworldTeleportIndex.Elfland: case OverworldTeleportIndex.ElflandCastle: case OverworldTeleportIndex.NorthwestCastle: case OverworldTeleportIndex.MarshCave1: case OverworldTeleportIndex.MatoyasCave: case OverworldTeleportIndex.DwarfCave: strategy = HintPlacementStrategy.InnerSea; break; case OverworldTeleportIndex.Melmond: case OverworldTeleportIndex.EarthCave1: case OverworldTeleportIndex.TitansTunnelEast: case OverworldTeleportIndex.TitansTunnelWest: case OverworldTeleportIndex.SardasCave: case OverworldTeleportIndex.CrescentLake: case OverworldTeleportIndex.GurguVolcano1: strategy = HintPlacementStrategy.ElflandToCrescent; break; case OverworldTeleportIndex.IceCave1: case OverworldTeleportIndex.Onrac: case OverworldTeleportIndex.Waterfall: case OverworldTeleportIndex.CastleOrdeals1: case OverworldTeleportIndex.MirageTower1: strategy = HintPlacementStrategy.MelmondOnrac; break; case OverworldTeleportIndex.Gaia: case OverworldTeleportIndex.Lefein: case OverworldTeleportIndex.Cardia1: case OverworldTeleportIndex.BahamutCave1: case OverworldTeleportIndex.Cardia2: case OverworldTeleportIndex.Cardia4: case OverworldTeleportIndex.Cardia5: case OverworldTeleportIndex.Cardia6: case OverworldTeleportIndex.Unused1: case OverworldTeleportIndex.Unused2: strategy = HintPlacementStrategy.MelmondMermaids; break; case (OverworldTeleportIndex)35: strategy = HintPlacementStrategy.MelmondOnrac; break; case (OverworldTeleportIndex)36: strategy = HintPlacementStrategy.MelmondOnrac; break; case (OverworldTeleportIndex)37: strategy = HintPlacementStrategy.MelmondMermaids; break; default: strategy = HintPlacementStrategy.Everywhere; break; } return(PlacementPools[strategy].Where(x => !usedIds.Contains(x)).ToList()); } else { return(PlacementPools[strategy].Where(x => !usedIds.Contains(x)).ToList()); } }
public abstract List <ObjectId> GetNpcPool(GeneratedHint hint, HashSet <ObjectId> usedIds);