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());
            }
        }
Beispiel #2
0
 public abstract List <ObjectId> GetNpcPool(GeneratedHint hint, HashSet <ObjectId> usedIds);