Updates Data to JSON (#159)
This commit is contained in:
parent
d2f7e08de4
commit
1246a135f7
61 changed files with 18005 additions and 9152 deletions
413
Distribution/Data/Locations/felucca.json
Normal file
413
Distribution/Data/Locations/felucca.json
Normal file
|
|
@ -0,0 +1,413 @@
|
||||||
|
{
|
||||||
|
"name": "Felucca",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Factions",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Towns",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Britain", "location": [1592, 1680, 10] },
|
||||||
|
{ "name": "Magincia", "location": [3714, 2235, 20] },
|
||||||
|
{ "name": "Minoc", "location": [2471, 439, 15] },
|
||||||
|
{ "name": "Moonglow", "location": [4436, 1083, 0] },
|
||||||
|
{ "name": "Skara Brae", "location": [576, 2200, 0] },
|
||||||
|
{ "name": "Trinsic", "location": [1914, 2717, 20] },
|
||||||
|
{ "name": "Vesper", "location": [2982, 818, 0] },
|
||||||
|
{ "name": "Yew", "location": [548, 979, 0] }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Council of Mages", "location": [3750, 2241, 20] },
|
||||||
|
{ "name": "Minax", "location": [1172, 2593, 0] },
|
||||||
|
{ "name": "Shadowlords", "location": [969, 768, 0] },
|
||||||
|
{ "name": "True Britannians", "location": [1419, 1622, 20] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dungeons",
|
||||||
|
"categories": [
|
||||||
|
{ "name": "Blighted Grove", "locations": [{ "name": "Entrance", "location": [586, 1643, -5] }] },
|
||||||
|
{
|
||||||
|
"name": "Covetous",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [2499, 919, 0] },
|
||||||
|
{ "name": "Level 1", "location": [5456, 1863, 0] },
|
||||||
|
{ "name": "Level 2", "location": [5614, 1997, 0] },
|
||||||
|
{ "name": "Level 3", "location": [5579, 1924, 0] },
|
||||||
|
{ "name": "Lake Cave", "location": [5467, 1805, 7] },
|
||||||
|
{ "name": "Torture Chambers", "location": [5552, 1807, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Deceit",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [4111, 432, 5] },
|
||||||
|
{ "name": "Level 1", "location": [5188, 638, 0] },
|
||||||
|
{ "name": "Level 2", "location": [5305, 533, 2] },
|
||||||
|
{ "name": "Level 3", "location": [5137, 650, 5] },
|
||||||
|
{ "name": "Level 4", "location": [5306, 652, 2] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Despise",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [1298, 1080, 0] },
|
||||||
|
{ "name": "Entryway", "location": [5587, 631, 30] },
|
||||||
|
{ "name": "Level 1", "location": [5501, 570, 59] },
|
||||||
|
{ "name": "Level 2", "location": [5519, 673, 20] },
|
||||||
|
{ "name": "Level 3", "location": [5407, 859, 45] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Destard",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [1176, 2637, 0] },
|
||||||
|
{ "name": "Level 1", "location": [5243, 1006, 0] },
|
||||||
|
{ "name": "Level 2", "location": [5143, 801, 4] },
|
||||||
|
{ "name": "Level 3", "location": [5137, 986, 5] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Hythloth",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [4721, 3822, 0] },
|
||||||
|
{ "name": "Level 1", "location": [5905, 20, 46] },
|
||||||
|
{ "name": "Level 2", "location": [5976, 169, 0] },
|
||||||
|
{ "name": "Level 3", "location": [6083, 145, -20] },
|
||||||
|
{ "name": "Level 4", "location": [6059, 89, 24] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Shame",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [514, 1561, 0] },
|
||||||
|
{ "name": "Level 1", "location": [5395, 126, 0] },
|
||||||
|
{ "name": "Level 2", "location": [5515, 11, 5] },
|
||||||
|
{ "name": "Level 3", "location": [5514, 148, 25] },
|
||||||
|
{ "name": "Level 4", "location": [5875, 20, -5] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Wrong",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [2043, 238, 10] },
|
||||||
|
{ "name": "Level 1", "location": [5825, 630, 0] },
|
||||||
|
{ "name": "Level 2", "location": [5690, 569, 25] },
|
||||||
|
{ "name": "Level 3", "location": [5703, 639, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Miscellaneous",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Hyloth Fire Pit", "location": [4596, 3630, 30] },
|
||||||
|
{ "name": "Yew-Britain Brigand Camp", "location": [885, 1682, 0] },
|
||||||
|
{ "name": "Yew Fort of the Damned", "location": [972, 768, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Terathan Keep",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [5451, 3143, -60] },
|
||||||
|
{ "name": "Level 1", "location": [5342, 1601, 0] },
|
||||||
|
{ "name": "Champion Room", "location": [5205, 1585, 0] },
|
||||||
|
{ "name": "Starroom", "location": [5139, 1767, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Fire",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [5760, 2908, 15] },
|
||||||
|
{ "name": "Brit Entrance", "location": [2923, 3407, 8] },
|
||||||
|
{ "name": "Level 1", "location": [5790, 1416, 40] },
|
||||||
|
{ "name": "Level 2", "location": [5702, 1316, 1] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Ice",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [5210, 2322, 30] },
|
||||||
|
{ "name": "Brit Entrance", "location": [1999, 81, 4] },
|
||||||
|
{ "name": "Level 1", "location": [5875, 150, 15] },
|
||||||
|
{ "name": "Ratman Room", "location": [5834, 327, 18] },
|
||||||
|
{ "name": "Ice Demon Lair", "location": [5700, 305, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Orc Cave",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [1019, 1431, 0] },
|
||||||
|
{ "name": "Level 1", "location": [5137, 2014, 0] },
|
||||||
|
{ "name": "Level 2", "location": [5332, 1376, 0] },
|
||||||
|
{ "name": "Level 3", "location": [5272, 2036, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "name": "Painted Caves", "locations": [{ "name": "Entrance", "location": [1716, 2993, 0] }] },
|
||||||
|
{
|
||||||
|
"name": "Palace of Paroxysmus",
|
||||||
|
"locations": [{ "name": "Entrance", "location": [5576, 3018, 25] }]
|
||||||
|
},
|
||||||
|
{ "name": "Prism of Light", "locations": [{ "name": "Entrance", "location": [3784, 1097, 14] }] },
|
||||||
|
{ "name": "Sanctuary", "locations": [{ "name": "Entrance", "location": [764, 1646, 0] }] },
|
||||||
|
{
|
||||||
|
"name": "Solen Hives",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Area A",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [729, 1451, 0] },
|
||||||
|
{ "name": "Level 1", "location": [5658, 1795, 3] },
|
||||||
|
{ "name": "Level 2", "location": [5726, 1891, 1] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Area B",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [2607, 763, 0] },
|
||||||
|
{ "name": "Level 1", "location": [5921, 1797, 1] },
|
||||||
|
{ "name": "Level 2", "location": [5875, 1866, 2] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Area C",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [1689, 2789, 0] },
|
||||||
|
{ "name": "Level 1", "location": [5659, 2022, 0] },
|
||||||
|
{ "name": "Level 2", "location": [5708, 1955, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Area D",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [1723, 814, 0] },
|
||||||
|
{ "name": "Level 1", "location": [5916, 2019, 3] },
|
||||||
|
{ "name": "Level 2", "location": [5813, 2012, -1] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "name": "Area E", "locations": [{ "name": "Entrance", "location": [5732, 1858, 0] }] }
|
||||||
|
],
|
||||||
|
"locations": [{ "name": "Central Area", "location": [5774, 1896, 20] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Khaldun",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance 1", "location": [6009, 3775, 19] },
|
||||||
|
{ "name": "Entrance 2", "location": [5882, 3819, -1] },
|
||||||
|
{ "name": "Level 1", "location": [5571, 1302, 0] }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Internal",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Jail Cells",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Cell 1", "location": [5276, 1164, 0] },
|
||||||
|
{ "name": "Cell 2", "location": [5286, 1164, 0] },
|
||||||
|
{ "name": "Cell 3", "location": [5296, 1164, 0] },
|
||||||
|
{ "name": "Cell 4", "location": [5306, 1164, 0] },
|
||||||
|
{ "name": "Cell 5", "location": [5276, 1174, 0] },
|
||||||
|
{ "name": "Cell 6", "location": [5286, 1174, 0] },
|
||||||
|
{ "name": "Cell 7", "location": [5286, 1174, 0] },
|
||||||
|
{ "name": "Cell 8", "location": [5306, 1174, 0] },
|
||||||
|
{ "name": "Cell 9", "location": [5283, 1184, 0] },
|
||||||
|
{ "name": "Cell 10", "location": [5304, 1184, 0] }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"locations": [{ "name": "Green Acres", "location": [5445, 1153, 0] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Shrines",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Chaos", "location": [1456, 854, 0] },
|
||||||
|
{ "name": "Compassion", "location": [1856, 872, -1] },
|
||||||
|
{ "name": "Honesty", "location": [4217, 564, 36] },
|
||||||
|
{ "name": "Honor", "location": [1730, 3528, 3] },
|
||||||
|
{ "name": "Humility", "location": [4276, 3699, 0] },
|
||||||
|
{ "name": "Justice", "location": [1301, 639, 16] },
|
||||||
|
{ "name": "Sacrifice", "location": [3355, 299, 9] },
|
||||||
|
{ "name": "Spirituality", "location": [1589, 2485, 5] },
|
||||||
|
{ "name": "Valor", "location": [2496, 3932, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Towns",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Britain",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Blackthorn Castle", "location": [1533, 1415, 56] },
|
||||||
|
{ "name": "Blackthorn Entrance", "location": [1523, 1456, 15] },
|
||||||
|
{ "name": "British Castle", "location": [1323, 1624, 55] },
|
||||||
|
{ "name": "British Entrance", "location": [1401, 1625, 28] },
|
||||||
|
{ "name": "Cemetery", "location": [1384, 1497, 10] },
|
||||||
|
{ "name": "Center", "location": [1475, 1645, 20] },
|
||||||
|
{ "name": "Farmlands", "location": [1228, 1705, 0] },
|
||||||
|
{ "name": "Park", "location": [1614, 1641, 35] },
|
||||||
|
{ "name": "Suburbs", "location": [1662, 1572, 5] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Buccaneers Den",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Bathhouse", "location": [2667, 2084, 5] },
|
||||||
|
{ "name": "Docks", "location": [2736, 2166, 0] },
|
||||||
|
{ "name": "Tunnels", "location": [2667, 2069, -20] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Cove",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Cemetery", "location": [2443, 1123, 5] },
|
||||||
|
{ "name": "Gates", "location": [2285, 1209, 0] },
|
||||||
|
{ "name": "Guard Post", "location": [2218, 1116, 19] },
|
||||||
|
{ "name": "Orc Fort", "location": [2171, 1332, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jhelom",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Cemetery", "location": [1296, 3719, 0] },
|
||||||
|
{ "name": "East Docks", "location": [1492, 3696, -3] },
|
||||||
|
{ "name": "Fighting Pit", "location": [1398, 3742, -21] },
|
||||||
|
{ "name": "Main Island", "location": [1414, 3816, 0] },
|
||||||
|
{ "name": "Medium Island", "location": [1124, 3623, 5] },
|
||||||
|
{ "name": "Small Island", "location": [1466, 4015, 5] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Magincia",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Bank", "location": [3730, 2161, 20] },
|
||||||
|
{ "name": "Docks", "location": [3675, 2259, 20] },
|
||||||
|
{ "name": "Park", "location": [3719, 2063, 25] },
|
||||||
|
{ "name": "Parliament", "location": [3792, 2248, 20] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Minoc",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Bridge", "location": [2539, 501, 30] },
|
||||||
|
{ "name": "Gypsy Camp", "location": [2540, 651, 0] },
|
||||||
|
{ "name": "Mining Camp", "location": [2583, 528, 15] },
|
||||||
|
{ "name": "North", "location": [2475, 417, 15] },
|
||||||
|
{ "name": "South", "location": [2526, 583, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Moonglow",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Cemetery", "location": [4546, 1338, 8] },
|
||||||
|
{ "name": "Center", "location": [4442, 1122, 5] },
|
||||||
|
{ "name": "Docks", "location": [4406, 1045, -2] },
|
||||||
|
{ "name": "Telescope", "location": [4707, 1124, 0] },
|
||||||
|
{ "name": "Zoo", "location": [4549, 1378, 8] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Nujel'm",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Cemetery", "location": [3536, 1156, 20] },
|
||||||
|
{ "name": "Chess Board", "location": [3728, 1360, 5] },
|
||||||
|
{ "name": "Docks", "location": [3803, 1279, 5] },
|
||||||
|
{ "name": "East", "location": [3755, 1227, 0] },
|
||||||
|
{ "name": "North", "location": [3668, 1116, 0] },
|
||||||
|
{ "name": "Palace", "location": [3698, 1279, 20] },
|
||||||
|
{ "name": "West", "location": [3572, 1211, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Ocllo",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Docks", "location": [3650, 2653, 0] },
|
||||||
|
{ "name": "Farmlands", "location": [3722, 2647, 20] },
|
||||||
|
{ "name": "North", "location": [3650, 2516, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Serpents Hold",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "North", "location": [3023, 3417, 15] },
|
||||||
|
{ "name": "South", "location": [2906, 3505, 10] },
|
||||||
|
{ "name": "Guard Post", "location": [3011, 3526, 15] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Skara Brae",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "East", "location": [811, 2243, 0] },
|
||||||
|
{ "name": "East Docks", "location": [716, 2233, -3] },
|
||||||
|
{ "name": "North", "location": [746, 2165, 0] },
|
||||||
|
{ "name": "South", "location": [899, 2381, 0] },
|
||||||
|
{ "name": "West", "location": [601, 2171, 0] },
|
||||||
|
{ "name": "West Docks", "location": [639, 2236, -3] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Trinsic",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Center", "location": [1927, 2779, 0] },
|
||||||
|
{ "name": "East Docks", "location": [2071, 2855, -3] },
|
||||||
|
{ "name": "Island Park", "location": [2108, 2793, 2] },
|
||||||
|
{ "name": "North", "location": [1894, 2666, 0] },
|
||||||
|
{ "name": "South", "location": [1891, 2850, 20] },
|
||||||
|
{ "name": "South Gate", "location": [2000, 2930, 0] },
|
||||||
|
{ "name": "West Gate", "location": [1832, 2779, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Vesper",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Cemetery", "location": [2786, 867, 0] },
|
||||||
|
{ "name": "Center", "location": [2882, 788, 0] },
|
||||||
|
{ "name": "Docks", "location": [3013, 828, -3] },
|
||||||
|
{ "name": "East", "location": [2760, 981, 0] },
|
||||||
|
{ "name": "North", "location": [2907, 603, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Wind",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Caves", "location": [5166, 244, 15] },
|
||||||
|
{ "name": "East", "location": [5336, 88, 15] },
|
||||||
|
{ "name": "Entrance", "location": [1362, 896, 0] },
|
||||||
|
{ "name": "Park", "location": [5211, 22, 15] },
|
||||||
|
{ "name": "South", "location": [5223, 189, 5] },
|
||||||
|
{ "name": "West", "location": [5180, 90, 25] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Yew",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Cemetery", "location": [724, 1138, 0] },
|
||||||
|
{ "name": "Center", "location": [535, 992, 0] },
|
||||||
|
{ "name": "Courts and Prisons", "location": [354, 836, 20] },
|
||||||
|
{ "name": "Empath Abbey", "location": [635, 860, 0] },
|
||||||
|
{ "name": "Hidden Cave", "location": [313, 787, -24] },
|
||||||
|
{ "name": "Orc Fort", "location": [633, 1499, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Delucia",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Watch Tower", "location": [5276, 3945, 37] },
|
||||||
|
{ "name": "Center", "location": [5228, 3978, 37] },
|
||||||
|
{ "name": "Orc Fort", "location": [5210, 3636, 3] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Papua",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "The Just Inn", "location": [5769, 3176, 0] },
|
||||||
|
{ "name": "Center", "location": [5730, 3208, -4] },
|
||||||
|
{ "name": "Docks", "location": [5825, 3256, 2] }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -1,279 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<places>
|
|
||||||
<parent name="Felucca">
|
|
||||||
<parent name="Factions">
|
|
||||||
<parent name="Towns">
|
|
||||||
<child name="Britain" x="1592" y="1680" z="10" />
|
|
||||||
<child name="Magincia" x="3714" y="2235" z="20" />
|
|
||||||
<child name="Minoc" x="2471" y="439" z="15" />
|
|
||||||
<child name="Moonglow" x="4436" y="1083" z="0" />
|
|
||||||
<child name="Skara Brae" x="576" y="2200" z="0" />
|
|
||||||
<child name="Trinsic" x="1914" y=" 2717" z="20" />
|
|
||||||
<child name="Vesper" x="2982" y=" 818" z="0" />
|
|
||||||
<child name="Yew" x="548" y=" 979" z="0" />
|
|
||||||
</parent>
|
|
||||||
<child name="Council of Mages" x="3750" y="2241" z="20" />
|
|
||||||
<child name="Minax" x="1172" y="2593" z="0" />
|
|
||||||
<child name="Shadowlords" x="969" y="768" z="0" />
|
|
||||||
<child name="True Britannians" x="1419" y="1622" z="20" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Dungeons">
|
|
||||||
<parent name="Covetous">
|
|
||||||
<child name="Entrance" x="2499" y="919" z="0" />
|
|
||||||
<child name="Level 1" x="5456" y="1863" z="0" />
|
|
||||||
<child name="Level 2" x="5614" y="1997" z="0" />
|
|
||||||
<child name="Level 3" x="5579" y="1924" z="0" />
|
|
||||||
<child name="Lake Cave" x="5467" y="1805" z="7" />
|
|
||||||
<child name="Torture Chambers" x="5552" y="1807" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Deceit">
|
|
||||||
<child name="Entrance" x="4111" y="432" z="5" />
|
|
||||||
<child name="Level 1" x="5188" y="638" z="0" />
|
|
||||||
<child name="Level 2" x="5305" y="533" z="2" />
|
|
||||||
<child name="Level 3" x="5137" y="650" z="5" />
|
|
||||||
<child name="Level 4" x="5306" y="652" z="2" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Despise">
|
|
||||||
<child name="Entrance" x="1298" y="1080" z="0" />
|
|
||||||
<child name="Entryway" x="5587" y="631" z="30" />
|
|
||||||
<child name="Level 1" x="5501" y="570" z="59" />
|
|
||||||
<child name="Level 2" x="5519" y="673" z="20" />
|
|
||||||
<child name="Level 3" x="5407" y="859" z="45" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Destard">
|
|
||||||
<child name="Entrance" x="1176" y="2637" z="0" />
|
|
||||||
<child name="Level 1" x="5243" y="1006" z="0" />
|
|
||||||
<child name="Level 2" x="5143" y="801" z="4" />
|
|
||||||
<child name="Level 3" x="5137" y="986" z="5" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Hythloth">
|
|
||||||
<child name="Entrance" x="4721" y="3822" z="0" />
|
|
||||||
<child name="Level 1" x="5905" y="20" z="46" />
|
|
||||||
<child name="Level 2" x="5976" y="169" z="0" />
|
|
||||||
<child name="Level 3" x="6083" y="145" z="-20" />
|
|
||||||
<child name="Level 4" x="6059" y="89" z="24" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Shame">
|
|
||||||
<child name="Entrance" x="514" y="1561" z="0" />
|
|
||||||
<child name="Level 1" x="5395" y="126" z="0" />
|
|
||||||
<child name="Level 2" x="5515" y="11" z="5" />
|
|
||||||
<child name="Level 3" x="5514" y="148" z="25" />
|
|
||||||
<child name="Level 4" x="5875" y="20" z="-5" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Wrong">
|
|
||||||
<child name="Entrance" x="2043" y="238" z="10" />
|
|
||||||
<child name="Level 1" x="5825" y="630" z="0" />
|
|
||||||
<child name="Level 2" x="5690" y="569" z="25" />
|
|
||||||
<child name="Level 3" x="5703" y="639" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Miscellaneous">
|
|
||||||
<child name="Hyloth Fire Pit" x="4596" y="3630" z="30" />
|
|
||||||
<child name="Yew-Britain Brigand Camp" x="885" y="1682" z="0" />
|
|
||||||
<child name="Yew Fort of the Damned" x="972" y="768" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Terathan Keep">
|
|
||||||
<child name="Entrance" x="5451" y="3143" z="-60" />
|
|
||||||
<child name="Level 1" x="5342" y="1601" z="0" />
|
|
||||||
<child name="Champion Room" x="5205" y="1585" z="0" />
|
|
||||||
<child name="Starroom" x="5139" y="1767" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Fire">
|
|
||||||
<child name="Entrance" x="5760" y="2908" z="15" />
|
|
||||||
<child name="Brit Entrance" x="2923" y="3407" z="8" />
|
|
||||||
<child name="Level 1" x="5790" y="1416" z="40" />
|
|
||||||
<child name="Level 2" x="5702" y="1316" z="1" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Ice">
|
|
||||||
<child name="Entrance" x="5210" y="2322" z="30" />
|
|
||||||
<child name="Brit Entrance" x="1999" y="81" z="4" />
|
|
||||||
<child name="Level 1" x="5875" y="150" z="15" />
|
|
||||||
<child name="Ratman Room" x="5834" y="327" z="18" />
|
|
||||||
<child name="Ice Demon Lair" x="5700" y="305" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Orc Cave">
|
|
||||||
<child name="Entrance" x="1019" y="1431" z="0" />
|
|
||||||
<child name="Level 1" x="5137" y="2014" z="0" />
|
|
||||||
<child name="Level 2" x="5332" y="1376" z="0" />
|
|
||||||
<child name="Level 3" x="5272" y="2036" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Solen Hives">
|
|
||||||
<child name="Central Area" x="5774" y="1896" z="20" />
|
|
||||||
<parent name="Area A">
|
|
||||||
<child name="Entrance" x="729" y="1451" z="0" />
|
|
||||||
<child name="Level 1" x="5658" y="1795" z="3" />
|
|
||||||
<child name="Level 2" x="5726" y="1891" z="1" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Area B">
|
|
||||||
<child name="Entrance" x="2607" y="763" z="0" />
|
|
||||||
<child name="Level 1" x="5921" y="1797" z="1" />
|
|
||||||
<child name="Level 2" x="5875" y="1866" z="2" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Area C">
|
|
||||||
<child name="Entrance" x="1689" y="2789" z="0" />
|
|
||||||
<child name="Level 1" x="5659" y="2022" z="0" />
|
|
||||||
<child name="Level 2" x="5708" y="1955" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Area D">
|
|
||||||
<child name="Entrance" x="1723" y="814" z="0" />
|
|
||||||
<child name="Level 1" x="5916" y="2019" z="3" />
|
|
||||||
<child name="Level 2" x="5813" y="2012" z="-1" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Area E">
|
|
||||||
<child name="Entrance" x="5732" y="1858" z="0" />
|
|
||||||
</parent>
|
|
||||||
</parent>
|
|
||||||
<parent name="Khaldun">
|
|
||||||
<child name="Entrance 1" x="6009" y="3775" z="19" />
|
|
||||||
<child name="Entrance 2" x="5882" y="3819" z="-1" />
|
|
||||||
<child name="Level 1" x="5571" y="1302" z="0" />
|
|
||||||
</parent>
|
|
||||||
</parent>
|
|
||||||
<parent name="Internal">
|
|
||||||
<parent name="Jail Cells">
|
|
||||||
<child name="Cell 1" x="5276" y="1164" z="0" />
|
|
||||||
<child name="Cell 2" x="5286" y="1164" z="0" />
|
|
||||||
<child name="Cell 3" x="5296" y="1164" z="0" />
|
|
||||||
<child name="Cell 4" x="5306" y="1164" z="0" />
|
|
||||||
<child name="Cell 5" x="5276" y="1174" z="0" />
|
|
||||||
<child name="Cell 6" x="5286" y="1174" z="0" />
|
|
||||||
<child name="Cell 7" x="5286" y="1174" z="0" />
|
|
||||||
<child name="Cell 8" x="5306" y="1174" z="0" />
|
|
||||||
<child name="Cell 9" x="5283" y="1184" z="0" />
|
|
||||||
<child name="Cell 10" x="5304" y="1184" z="0" />
|
|
||||||
</parent>
|
|
||||||
<child name="Green Acres" x="5445" y="1153" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Shrines">
|
|
||||||
<child name="Chaos" x="1456" y="854" z="0" />
|
|
||||||
<child name="Compassion" x="1856" y="872" z="-1" />
|
|
||||||
<child name="Honesty" x="4217" y="564" z="36" />
|
|
||||||
<child name="Honor" x="1730" y="3528" z="3" />
|
|
||||||
<child name="Humility" x="4276" y="3699" z="0" />
|
|
||||||
<child name="Justice" x="1301" y="639" z="16" />
|
|
||||||
<child name="Sacrifice" x="3355" y="299" z="9" />
|
|
||||||
<child name="Spirituality" x="1589" y="2485" z="5" />
|
|
||||||
<child name="Valor" x="2496" y="3932" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Towns">
|
|
||||||
<parent name="Britain">
|
|
||||||
<child name="Blackthorn Castle" x="1533" y="1415" z="56" />
|
|
||||||
<child name="Blackthorn Entrance" x="1523" y="1456" z="15" />
|
|
||||||
<child name="British Castle" x="1323" y="1624" z="55" />
|
|
||||||
<child name="British Entrance" x="1401" y="1625" z="28" />
|
|
||||||
<child name="Cemetery" x="1384" y="1497" z="10" />
|
|
||||||
<child name="Center" x="1475" y="1645" z="20" />
|
|
||||||
<child name="Farmlands" x="1228" y="1705" z="0" />
|
|
||||||
<child name="Park" x="1614" y="1641" z="35" />
|
|
||||||
<child name="Suburbs" x="1662" y="1572" z="5" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Buccaneers Den">
|
|
||||||
<child name="Bathhouse" x="2667" y="2084" z="5" />
|
|
||||||
<child name="Docks" x="2736" y="2166" z="0" />
|
|
||||||
<child name="Tunnels" x="2667" y="2069" z="-20" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Cove">
|
|
||||||
<child name="Cemetery" x="2443" y="1123" z="5" />
|
|
||||||
<child name="Gates" x="2285" y="1209" z="0" />
|
|
||||||
<child name="Guard Post" x="2218" y="1116" z="19" />
|
|
||||||
<child name="Orc Fort" x="2171" y="1332" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Jhelom">
|
|
||||||
<child name="Cemetery" x="1296" y="3719" z="0" />
|
|
||||||
<child name="East Docks" x="1492" y="3696" z="-3" />
|
|
||||||
<child name="Fighting Pit" x="1398" y="3742" z="-21" />
|
|
||||||
<child name="Main Island" x="1414" y="3816" z="0" />
|
|
||||||
<child name="Medium Island" x="1124" y="3623" z="5" />
|
|
||||||
<child name="Small Island" x="1466" y="4015" z="5" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Magincia">
|
|
||||||
<child name="Bank" x="3730" y="2161" z="20" />
|
|
||||||
<child name="Docks" x="3675" y="2259" z="20" />
|
|
||||||
<child name="Park" x="3719" y="2063" z="25" />
|
|
||||||
<child name="Parliament" x="3792" y="2248" z="20" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Minoc">
|
|
||||||
<child name="Bridge" x="2539" y="501" z="30" />
|
|
||||||
<child name="Gypsy Camp" x="2540" y="651" z="0" />
|
|
||||||
<child name="Mining Camp" x="2583" y="528" z="15" />
|
|
||||||
<child name="North" x="2475" y="417" z="15" />
|
|
||||||
<child name="South" x="2526" y="583" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Moonglow">
|
|
||||||
<child name="Cemetery" x="4546" y="1338" z="8" />
|
|
||||||
<child name="Center" x="4442" y="1122" z="5" />
|
|
||||||
<child name="Docks" x="4406" y="1045" z="-2" />
|
|
||||||
<child name="Telescope" x="4707" y="1124" z="0" />
|
|
||||||
<child name="Zoo" x="4549" y="1378" z="8" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Nujel'm">
|
|
||||||
<child name="Cemetery" x="3536" y="1156" z="20" />
|
|
||||||
<child name="Chess Board" x="3728" y="1360" z="5" />
|
|
||||||
<child name="Docks" x="3803" y="1279" z="5" />
|
|
||||||
<child name="East" x="3755" y="1227" z="0" />
|
|
||||||
<child name="North" x="3668" y="1116" z="0" />
|
|
||||||
<child name="Palace" x="3698" y="1279" z="20" />
|
|
||||||
<child name="West" x="3572" y="1211" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Ocllo">
|
|
||||||
<child name="Docks" x="3650" y="2653" z="0" />
|
|
||||||
<child name="Farmlands" x="3722" y="2647" z="20" />
|
|
||||||
<child name="North" x="3650" y="2516" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Serpents Hold">
|
|
||||||
<child name="North" x="3023" y="3417" z="15" />
|
|
||||||
<child name="South" x="2906" y="3505" z="10" />
|
|
||||||
<child name="Guard Post" x="3011" y="3526" z="15" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Skara Brae">
|
|
||||||
<child name="East" x="811" y="2243" z="0" />
|
|
||||||
<child name="East Docks" x="716" y="2233" z="-3" />
|
|
||||||
<child name="North" x="746" y="2165" z="0" />
|
|
||||||
<child name="South" x="899" y="2381" z="0" />
|
|
||||||
<child name="West" x="601" y="2171" z="0" />
|
|
||||||
<child name="West Docks" x="639" y="2236" z="-3" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Trinsic">
|
|
||||||
<child name="Center" x="1927" y="2779" z="0" />
|
|
||||||
<child name="East Docks" x="2071" y="2855" z="-3" />
|
|
||||||
<child name="Island Park" x="2108" y="2793" z="2" />
|
|
||||||
<child name="North" x="1894" y="2666" z="0" />
|
|
||||||
<child name="South" x="1891" y="2850" z="20" />
|
|
||||||
<child name="South Gate" x="2000" y="2930" z="0" />
|
|
||||||
<child name="West Gate" x="1832" y="2779" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Vesper">
|
|
||||||
<child name="Cemetery" x="2786" y="867" z="0" />
|
|
||||||
<child name="Center" x="2882" y="788" z="0" />
|
|
||||||
<child name="Docks" x="3013" y="828" z="-3" />
|
|
||||||
<child name="East" x="2760" y="981" z="0" />
|
|
||||||
<child name="North" x="2907" y="603" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Wind">
|
|
||||||
<child name="Caves" x="5166" y="244" z="15" />
|
|
||||||
<child name="East" x="5336" y="88" z="15" />
|
|
||||||
<child name="Entrance" x="1362" y="896" z="0" />
|
|
||||||
<child name="Park" x="5211" y="22" z="15" />
|
|
||||||
<child name="South" x="5223" y="189" z="5" />
|
|
||||||
<child name="West" x="5180" y="90" z="25" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Yew">
|
|
||||||
<child name="Cemetery" x="724" y="1138" z="0" />
|
|
||||||
<child name="Center" x="535" y="992" z="0" />
|
|
||||||
<child name="Courts and Prisons" x="354" y="836" z="20" />
|
|
||||||
<child name="Empath Abbey" x="635" y="860" z="0" />
|
|
||||||
<child name="Hidden Cave" x="313" y="787" z="-24" />
|
|
||||||
<child name="Orc Fort" x="633" y="1499" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Delucia">
|
|
||||||
<child name="Watch Tower" x="5276" y="3945" z="37" />
|
|
||||||
<child name="Center" x="5228" y="3978" z="37" />
|
|
||||||
<child name="Orc Fort" x="5210" y="3636" z="3" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Papua">
|
|
||||||
<child name="The Just Inn" x="5769" y="3176" z="0" />
|
|
||||||
<child name="Center" x="5730" y="3208" z="-4" />
|
|
||||||
<child name="Docks" x="5825" y="3256" z="2" />
|
|
||||||
</parent>
|
|
||||||
</parent>
|
|
||||||
</parent>
|
|
||||||
</places>
|
|
||||||
143
Distribution/Data/Locations/ilshenar.json
Normal file
143
Distribution/Data/Locations/ilshenar.json
Normal file
|
|
@ -0,0 +1,143 @@
|
||||||
|
{
|
||||||
|
"name": "Ilshenar",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Cities",
|
||||||
|
"categories": [
|
||||||
|
{ "name": "Ancient Citadel", "locations": [{ "name": "Entrance", "location": [1518, 568, -14] }] },
|
||||||
|
{
|
||||||
|
"name": "Gargoyle City",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Bank", "location": [852, 602, -40] },
|
||||||
|
{ "name": "Central Area", "location": [836, 641, -20] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "name": "Lakeshire", "locations": [{ "name": "Central Area", "location": [1203, 1124, -25] }] },
|
||||||
|
{ "name": "Mistas", "locations": [{ "name": "Central Area", "location": [820, 1073, -30] }] },
|
||||||
|
{ "name": "Montor", "locations": [{ "name": "Central Area", "location": [1643, 310, 48] }] },
|
||||||
|
{ "name": "Req Volon", "locations": [{ "name": "Central Area", "location": [1362, 1073, -13] }] },
|
||||||
|
{ "name": "Savage Camp", "locations": [{ "name": "Central Area", "location": [1251, 743, -80] }] },
|
||||||
|
{ "name": "Terort Skitas", "locations": [{ "name": "Entrance", "location": [567, 437, 21] }] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dungeons",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Ankh",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [576, 1150, -100] },
|
||||||
|
{ "name": "Level 1", "location": [155, 1482, -28] },
|
||||||
|
{ "name": "Kirin passage", "location": [11, 874, -28] },
|
||||||
|
{ "name": "Serpentine Passage", "location": [396, 1578, -28] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Blood",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [1747, 1228, -1] },
|
||||||
|
{ "name": "Level 1", "location": [2114, 834, -28] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Exodus",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [835, 777, -80] },
|
||||||
|
{ "name": "Level 1", "location": [1974, 115, -28] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Rock",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [1788, 573, 70] },
|
||||||
|
{ "name": "Level 1", "location": [2188, 318, -7] },
|
||||||
|
{ "name": "Level 2", "location": [2188, 28, -27] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Sorcerers",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [548, 462, -53] },
|
||||||
|
{ "name": "Level 1", "location": [428, 109, -28] },
|
||||||
|
{ "name": "Level 2", "location": [240, 23, -18] },
|
||||||
|
{ "name": "Level 3", "location": [272, 136, -28] },
|
||||||
|
{ "name": "Level 4", "location": [132, 124, -28] },
|
||||||
|
{ "name": "Level 5", "location": [236, 121, -28] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Spectre",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [1363, 1033, -8] },
|
||||||
|
{ "name": "Level 1", "location": [1982, 1103, -28] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Wisp",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [651, 1302, -58] },
|
||||||
|
{ "name": "Level 1", "location": [627, 1525, -28] },
|
||||||
|
{ "name": "Level 2", "location": [718, 1492, -28] },
|
||||||
|
{ "name": "Level 3", "location": [832, 1551, -28] },
|
||||||
|
{ "name": "Level 4", "location": [960, 1428, -28] },
|
||||||
|
{ "name": "Level 5", "location": [942, 1465, -33] },
|
||||||
|
{ "name": "Level 6", "location": [866, 1434, -28] },
|
||||||
|
{ "name": "Level 7", "location": [807, 1548, -28] },
|
||||||
|
{ "name": "Level 8", "location": [754, 1479, -28] }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Caves",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Ancient Lair",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [940, 504, -30] },
|
||||||
|
{ "name": "Level 1", "location": [85, 746, -28] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Lizard Passage",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [314, 1334, -36] },
|
||||||
|
{ "name": "Level 1", "location": [329, 1589, -18] },
|
||||||
|
{ "name": "Level 2", "location": [227, 1337, -18] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "name": "Mushroom Cave", "locations": [{ "name": "Entrance", "location": [1459, 1329, -24] }] },
|
||||||
|
{
|
||||||
|
"name": "Rat Cave",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [1034, 1153, -23] },
|
||||||
|
{ "name": "Level 1", "location": [1348, 1510, -3] },
|
||||||
|
{ "name": "Level 2", "location": [1247, 1511, -28] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Spider Cave",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [1421, 913, -19] },
|
||||||
|
{ "name": "Level 1", "location": [1786, 991, -28] },
|
||||||
|
{ "name": "Level 2", "location": [1517, 877, 10] },
|
||||||
|
{ "name": "Ethereal Keep", "location": [1365, 1102, -26] }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Shrines",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Compassion", "location": [1217, 469, -13] },
|
||||||
|
{ "name": "Honesty", "location": [720, 1356, -60] },
|
||||||
|
{ "name": "Honor", "location": [748, 728, -29] },
|
||||||
|
{ "name": "Humility", "location": [287, 1016, 0] },
|
||||||
|
{ "name": "Justice", "location": [987, 1007, -35] },
|
||||||
|
{ "name": "Sacrifice", "location": [1175, 1287, -30] },
|
||||||
|
{ "name": "Spirituality", "location": [1532, 1341, -3] },
|
||||||
|
{ "name": "Valor", "location": [527, 218, -44] }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -1,111 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<places>
|
|
||||||
<parent name="Ilshenar">
|
|
||||||
<parent name="Cities">
|
|
||||||
<parent name="Ancient Citadel">
|
|
||||||
<child name="Entrance" x="1518" y="568" z="-14" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Gargoyle City">
|
|
||||||
<child name="Bank" x="852" y="602" z="-40" />
|
|
||||||
<child name="Central Area" x="836" y="641" z="-20" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Lakeshire">
|
|
||||||
<child name="Central Area" x="1203" y="1124" z="-25" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Mistas">
|
|
||||||
<child name="Central Area" x="820" y="1073" z="-30" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Montor">
|
|
||||||
<child name="Central Area" x="1643" y="310" z="48" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Req Volon">
|
|
||||||
<child name="Central Area" x="1362" y="1073" z="-13" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Savage Camp">
|
|
||||||
<child name="Central Area" x="1251" y="743" z="-80" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Terort Skitas">
|
|
||||||
<child name="Entrance" x="567" y="437" z="21" />
|
|
||||||
</parent>
|
|
||||||
</parent>
|
|
||||||
<parent name="Dungeons">
|
|
||||||
<parent name="Ankh">
|
|
||||||
<child name="Entrance" x="576" y="1150" z="-100" />
|
|
||||||
<child name="Level 1" x="155" y="1482" z="-28" />
|
|
||||||
<child name="Kirin passage" x="11" y="874" z="-28" />
|
|
||||||
<child name="Serpentine Passage" x="396" y="1578" z="-28" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Blood">
|
|
||||||
<child name="Entrance" x="1747" y="1228" z="-1" />
|
|
||||||
<child name="Level 1" x="2114" y="834" z="-28" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Exodus">
|
|
||||||
<child name="Entrance" x="835" y="777" z="-80" />
|
|
||||||
<child name="Level 1" x="1974" y="115" z="-28" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Rock">
|
|
||||||
<child name="Entrance" x="1788" y="573" z="70" />
|
|
||||||
<child name="Level 1" x="2188" y="318" z="-7" />
|
|
||||||
<child name="Level 2" x="2188" y="28" z="-27" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Sorcerers">
|
|
||||||
<child name="Entrance" x="548" y="462" z="-53" />
|
|
||||||
<child name="Level 1" x="428" y="109" z="-28" />
|
|
||||||
<child name="Level 2" x="240" y="23" z="-18" />
|
|
||||||
<child name="Level 3" x="272" y="136" z="-28" />
|
|
||||||
<child name="Level 4" x="132" y="124" z="-28" />
|
|
||||||
<child name="Level 5" x="236" y="121" z="-28" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Spectre">
|
|
||||||
<child name="Entrance" x="1363" y="1033" z="-8" />
|
|
||||||
<child name="Level 1" x="1982" y="1103" z="-28" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Wisp">
|
|
||||||
<child name="Entrance" x="651" y="1302" z="-58" />
|
|
||||||
<child name="Level 1" x="627" y="1525" z="-28" />
|
|
||||||
<child name="Level 2" x="718" y="1492" z="-28" />
|
|
||||||
<child name="Level 3" x="832" y="1551" z="-28" />
|
|
||||||
<child name="Level 4" x="960" y="1428" z="-28" />
|
|
||||||
<child name="Level 5" x="942" y="1465" z="-33" />
|
|
||||||
<child name="Level 6" x="866" y="1434" z="-28" />
|
|
||||||
<child name="Level 7" x="807" y="1548" z="-28" />
|
|
||||||
<child name="Level 8" x="754" y="1479" z="-28" />
|
|
||||||
</parent>
|
|
||||||
</parent>
|
|
||||||
<parent name="Caves">
|
|
||||||
<parent name="Ancient Lair">
|
|
||||||
<child name="Entrance" x="940" y="504" z="-30" />
|
|
||||||
<child name="Level 1" x="85" y="746" z="-28" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Lizard Passage">
|
|
||||||
<child name="Entrance" x="314" y="1334" z="-36" />
|
|
||||||
<child name="Level 1" x="329" y="1589" z="-18" />
|
|
||||||
<child name="Level 2" x="227" y="1337" z="-18" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Mushroom Cave">
|
|
||||||
<child name="Entrance" x="1459" y="1329" z="-24" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Rat Cave">
|
|
||||||
<child name="Entrance" x="1034" y="1153" z="-23" />
|
|
||||||
<child name="Level 1" x="1348" y="1510" z="-3" />
|
|
||||||
<child name="Level 2" x="1247" y="1511" z="-28" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Spider Cave">
|
|
||||||
<child name="Entrance" x="1421" y="913" z="-19" />
|
|
||||||
<child name="Level 1" x="1786" y="991" z="-28" />
|
|
||||||
<child name="Level 2" x="1517" y="877" z="10" />
|
|
||||||
<child name="Ethereal Keep" x="1365" y="1102" z="-26" />
|
|
||||||
</parent>
|
|
||||||
</parent>
|
|
||||||
<parent name="Shrines">
|
|
||||||
<child name="Compassion" x="1217" y="469" z="-13" />
|
|
||||||
<child name="Honesty" x="720" y="1356" z="-60" />
|
|
||||||
<child name="Honor" x="748" y="728" z="-29" />
|
|
||||||
<child name="Humility" x="287" y="1016" z="0" />
|
|
||||||
<child name="Justice" x="987" y="1007" z="-35" />
|
|
||||||
<child name="Sacrifice" x="1175" y="1287" z="-30" />
|
|
||||||
<child name="Spirituality" x="1532" y="1341" z="-3" />
|
|
||||||
<child name="Valor" x="527" y="218" z="-44" />
|
|
||||||
</parent>
|
|
||||||
</parent>
|
|
||||||
</places>
|
|
||||||
108
Distribution/Data/Locations/malas.json
Normal file
108
Distribution/Data/Locations/malas.json
Normal file
|
|
@ -0,0 +1,108 @@
|
||||||
|
{
|
||||||
|
"name": "Malas",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Towns",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Luna",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Luna Moongate", "location": [1015, 527, -65] },
|
||||||
|
{ "name": "Luna Bank", "location": [991, 519, -50] },
|
||||||
|
{ "name": "Clothier's Colors", "location": [976, 527, -50] },
|
||||||
|
{ "name": "Grand Arena", "location": [961, 638, -90] },
|
||||||
|
{ "name": "Hardwoods and More", "location": [1002, 512, -50] },
|
||||||
|
{ "name": "Paladin's Stopover", "location": [1005, 519, -30] },
|
||||||
|
{ "name": "Proud Bridle", "location": [1023, 503, -70] },
|
||||||
|
{ "name": "Open Market", "location": [992, 512, -50] },
|
||||||
|
{ "name": "Sage's Refuge", "location": [1002, 527, -50] },
|
||||||
|
{ "name": "Shining Blades", "location": [976, 512, -50] },
|
||||||
|
{ "name": "Shrine of Wisdom", "location": [976, 510, -30] },
|
||||||
|
{ "name": "Vault of Secrets", "location": [1072, 457, -90] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Umbra",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Umbra Moongate", "location": [1998, 1387, -85] },
|
||||||
|
{ "name": "Umbra Bridge", "location": [1941, 1321, -88] },
|
||||||
|
{ "name": "Armoury of Souls", "location": [1984, 1367, -80] },
|
||||||
|
{ "name": "Bloodletter's Guild", "location": [2084, 1372, -75] },
|
||||||
|
{ "name": "Critter Pens", "location": [1992, 1326, -90] },
|
||||||
|
{ "name": "Darkweave", "location": [2079, 1338, -81] },
|
||||||
|
{ "name": "Ghast Refectory", "location": [2017, 1354, -90] },
|
||||||
|
{ "name": "Gravedigger's Apparatus", "location": [2016, 1328, -80] },
|
||||||
|
{ "name": "Lich's Hoard", "location": [2051, 1398, -90] },
|
||||||
|
{ "name": "Necromancer Ampitheater", "location": [2024, 1383, -80] },
|
||||||
|
{ "name": "Skeleton Swill", "location": [2030, 1350, -90] },
|
||||||
|
{ "name": "Wailing Banshee Inn", "location": [2039, 1317, -84] },
|
||||||
|
{ "name": "Warped Woodworks", "location": [2066, 1288, -80] }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dungeons",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Doom",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [2367, 1268, -85] },
|
||||||
|
{ "name": "Tunnel", "location": [2352, 1267, -110] },
|
||||||
|
{ "name": "Inside", "location": [381, 133, 33] },
|
||||||
|
{ "name": "Gauntlet", "location": [433, 331, -2] },
|
||||||
|
{ "name": "Guardian's Room", "location": [365, 15, -1] },
|
||||||
|
{ "name": "Lamp Room", "location": [470, 95, -1] }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Sites",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Points of Interest",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Broken Mountains", "location": [1111, 1461, -90] },
|
||||||
|
{ "name": "Corrupted Forest", "location": [2172, 1144, -87] },
|
||||||
|
{ "name": "Crumbling Continent", "location": [736, 1180, -95] },
|
||||||
|
{ "name": "Crystal Fens", "location": [1388, 616, -85] },
|
||||||
|
{ "name": "Divide of the Abyss", "location": [1545, 877, -85] },
|
||||||
|
{ "name": "Dry Highlands", "location": [2128, 1668, -90] },
|
||||||
|
{ "name": "Forgotten Pyramid", "location": [1825, 1799, -50] },
|
||||||
|
{ "name": "Gravewater Lake", "location": [1596, 1656, -115] },
|
||||||
|
{ "name": "Grimswind Ruins", "location": [2192, 330, -90] },
|
||||||
|
{ "name": "Northern Crags", "location": [1580, 384, -50] },
|
||||||
|
{ "name": "Orc Fortress", "location": [1340, 1226, -90] },
|
||||||
|
{ "name": "Hanse's Hostel", "location": [1065, 1435, -90] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Caves and Mines",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Mine 1", "location": [2082, 574, -90] },
|
||||||
|
{ "name": "Mine 2", "location": [2157, 456, -90] },
|
||||||
|
{ "name": "Mine 3", "location": [1811, 359, -90] },
|
||||||
|
{ "name": "Mine 4", "location": [1790, 475, -90] },
|
||||||
|
{ "name": "Mine 5", "location": [1628, 432, -86] },
|
||||||
|
{ "name": "Mine 6", "location": [1658, 304, -90] },
|
||||||
|
{ "name": "Mine 7", "location": [1071, 247, -90] },
|
||||||
|
{ "name": "Mine 8", "location": [1095, 197, -90] },
|
||||||
|
{ "name": "Mine 9", "location": [1195, 511, -90] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Orc Forts",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Fort 1", "location": [912, 193, -79] },
|
||||||
|
{ "name": "Fort 2", "location": [1666, 362, -50] },
|
||||||
|
{ "name": "Fort 3", "location": [1364, 599, -86] },
|
||||||
|
{ "name": "Fort 4", "location": [1205, 705, -88] },
|
||||||
|
{ "name": "Fort 5", "location": [1257, 1331, -90] },
|
||||||
|
{ "name": "Fort 6", "location": [1598, 1825, -110] }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -1,81 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<places>
|
|
||||||
<parent name="Malas">
|
|
||||||
<parent name="Towns">
|
|
||||||
<parent name="Luna">
|
|
||||||
<child name="Luna Moongate" x="1015" y="527" z="-65" />
|
|
||||||
<child name="Luna Bank" x="991" y="519" z="-50" />
|
|
||||||
<child name="Clothier's Colors" x="976" y="527" z="-50" />
|
|
||||||
<child name="Grand Arena" x="961" y="638" z="-90" />
|
|
||||||
<child name="Hardwoods and More" x="1002" y="512" z="-50" />
|
|
||||||
<child name="Paladin's Stopover" x="1005" y="519" z="-30" />
|
|
||||||
<child name="Proud Bridle" x="1023" y="503" z="-70" />
|
|
||||||
<child name="Open Market" x="992" y="512" z="-50" />
|
|
||||||
<child name="Sage's Refuge" x="1002" y="527" z="-50" />
|
|
||||||
<child name="Shining Blades" x="976" y="512" z="-50" />
|
|
||||||
<child name="Shrine of Wisdom" x="976" y="510" z="-30" />
|
|
||||||
<child name="Vault of Secrets" x="1072" y="457" z="-90" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Umbra">
|
|
||||||
<child name="Umbra Moongate" x="1998" y="1387" z="-85" />
|
|
||||||
<child name="Umbra Bridge" x="1941" y="1321" z="-88" />
|
|
||||||
<child name="Armoury of Souls" x="1984" y="1367" z="-80" />
|
|
||||||
<child name="Bloodletter's Guild" x="2084" y="1372" z="-75" />
|
|
||||||
<child name="Critter Pens" x="1992" y="1326" z="-90" />
|
|
||||||
<child name="Darkweave" x="2079" y="1338" z="-81" />
|
|
||||||
<child name="Ghast Refectory" x="2017" y="1354" z="-90" />
|
|
||||||
<child name="Gravedigger's Apparatus" x="2016" y="1328" z="-80" />
|
|
||||||
<child name="Lich's Hoard" x="2051" y="1398" z="-90" />
|
|
||||||
<child name="Necromancer Ampitheater" x="2024" y="1383" z="-80" />
|
|
||||||
<child name="Skeleton Swill" x="2030" y="1350" z="-90" />
|
|
||||||
<child name="Wailing Banshee Inn" x="2039" y="1317" z="-84" />
|
|
||||||
<child name="Warped Woodworks" x="2066" y="1288" z="-80" />
|
|
||||||
</parent>
|
|
||||||
</parent>
|
|
||||||
<parent name="Dungeons">
|
|
||||||
<parent name="Doom">
|
|
||||||
<child name="Entrance" x="2367" y="1268" z="-85" />
|
|
||||||
<child name="Tunnel" x="2352" y="1267" z="-110" />
|
|
||||||
<child name="Inside" x="381" y="133" z="33" />
|
|
||||||
<child name="Gauntlet" x="433" y="331" z="-2" />
|
|
||||||
<child name="Guardian's Room" x="365" y="15" z="-1"/>
|
|
||||||
<child name="Lamp Room" x="470" y="95" z="-1"/>
|
|
||||||
</parent>
|
|
||||||
</parent>
|
|
||||||
<parent name="Sites">
|
|
||||||
<parent name="Points of Interest">
|
|
||||||
<child name="Broken Mountains" x="1111" y="1461" z="-90" />
|
|
||||||
<child name="Corrupted Forest" x="2172" y="1144" z="-87" />
|
|
||||||
<child name="Crumbling Continent" x="736" y="1180" z="-95" />
|
|
||||||
<child name="Crystal Fens" x="1388" y="616" z="-85" />
|
|
||||||
<child name="Divide of the Abyss" x="1545" y="877" z="-85" />
|
|
||||||
<child name="Dry Highlands" x="2128" y="1668" z="-90" />
|
|
||||||
<child name="Forgotten Pyramid" x="1825" y="1799" z="-50" />
|
|
||||||
<child name="Gravewater Lake" x="1596" y="1656" z="-115" />
|
|
||||||
<child name="Grimswind Ruins" x="2192" y="330" z="-90" />
|
|
||||||
<child name="Northern Crags" x="1580" y="384" z="-50" />
|
|
||||||
<child name="Orc Fortress" x="1340" y="1226" z="-90" />
|
|
||||||
<child name="Hanse's Hostel" x="1065" y="1435" z="-90" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Caves and Mines">
|
|
||||||
<child name="Mine 1" x="2082" y="574" z="-90" />
|
|
||||||
<child name="Mine 2" x="2157" y="456" z="-90" />
|
|
||||||
<child name="Mine 3" x="1811" y="359" z="-90" />
|
|
||||||
<child name="Mine 4" x="1790" y="475" z="-90" />
|
|
||||||
<child name="Mine 5" x="1628" y="432" z="-86" />
|
|
||||||
<child name="Mine 6" x="1658" y="304" z="-90" />
|
|
||||||
<child name="Mine 7" x="1071" y="247" z="-90" />
|
|
||||||
<child name="Mine 8" x="1095" y="197" z="-90" />
|
|
||||||
<child name="Mine 9" x="1195" y="511" z="-90" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Orc Forts">
|
|
||||||
<child name="Fort 1" x="912" y="193" z="-79" />
|
|
||||||
<child name="Fort 2" x="1666" y="362" z="-50" />
|
|
||||||
<child name="Fort 3" x="1364" y="599" z="-86" />
|
|
||||||
<child name="Fort 4" x="1205" y="705" z="-88" />
|
|
||||||
<child name="Fort 5" x="1257" y="1331" z="-90" />
|
|
||||||
<child name="Fort 6" x="1598" y="1825" z="-110" />
|
|
||||||
</parent>
|
|
||||||
</parent>
|
|
||||||
</parent>
|
|
||||||
</places>
|
|
||||||
90
Distribution/Data/Locations/termur.json
Normal file
90
Distribution/Data/Locations/termur.json
Normal file
|
|
@ -0,0 +1,90 @@
|
||||||
|
{
|
||||||
|
"name": "TerMur",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Towns",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Royal City",
|
||||||
|
"locations": [{ "name": "Royal City Moongate", "location": [855, 3526, -43] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Holy City",
|
||||||
|
"locations": [{ "name": "Holy City Moongate", "location": [928, 3989, -40] }]
|
||||||
|
},
|
||||||
|
{ "name": "Dugan", "locations": [{ "name": "Dugan", "location": [1107, 1131, -52] }] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dungeons",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Tomb of Kings",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [997, 3843, -41] },
|
||||||
|
{ "name": "Gate to Stygian Abyss", "location": [38, 29, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Stygian Abyss",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Exit to Tomb of Kings", "location": [946, 71, 72] },
|
||||||
|
{ "name": "Exit to Underworld", "location": [521, 921, 36] },
|
||||||
|
{ "name": "Abyssal Lair Entrance", "location": [985, 366, -11] },
|
||||||
|
{ "name": "Cavern of the Discarded", "location": [912, 501, -12] },
|
||||||
|
{ "name": "Clan Scratch", "location": [959, 548, -14] },
|
||||||
|
{ "name": "Crimson Veins", "location": [974, 164, -11] },
|
||||||
|
{ "name": "Enslaved Goblins", "location": [581, 815, -45] },
|
||||||
|
{ "name": "Fairy Dragon Lair", "location": [888, 277, 3] },
|
||||||
|
{ "name": "Fire Temple Ruins", "location": [519, 765, -92] },
|
||||||
|
{ "name": "Hydra", "location": [793, 753, 53] },
|
||||||
|
{ "name": "Lands of the Lich", "location": [538, 656, 8] },
|
||||||
|
{ "name": "Lava Caldera", "location": [587, 895, -73] },
|
||||||
|
{ "name": "Medusa's Lair", "location": [818, 755, 50] },
|
||||||
|
{ "name": "Passage of Tears", "location": [685, 579, -15] },
|
||||||
|
{ "name": "Secret Garden", "location": [462, 719, 22] },
|
||||||
|
{ "name": "Serpent Lair", "location": [711, 720, -11] },
|
||||||
|
{ "name": "Silver Sapling", "location": [341, 619, 26] },
|
||||||
|
{ "name": "Stygian Dragon Lair Entrance", "location": [851, 279, -12] },
|
||||||
|
{ "name": "Sutek the Mage", "location": [924, 595, -14] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "name": "Underworld", "locations": [{ "name": "Entrance", "location": [1128, 1211, -2] }] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Sites",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Regions",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Atoll Bend", "location": [1118, 3408, -42] },
|
||||||
|
{ "name": "Chicken Chase", "location": [560, 3412, 37] },
|
||||||
|
{ "name": "City Residential", "location": [952, 3531, -43] },
|
||||||
|
{ "name": "Coral Desert", "location": [1047, 2980, 62] },
|
||||||
|
{ "name": "Fishermans Reach", "location": [631, 3035, 36] },
|
||||||
|
{ "name": "Gated Isle", "location": [703, 3934, -31] },
|
||||||
|
{ "name": "High Plain", "location": [863, 2931, 38] },
|
||||||
|
{ "name": "Holy City Island", "location": [996, 3905, -42] },
|
||||||
|
{ "name": "Kepetch Waste", "location": [447, 3188, 20] },
|
||||||
|
{ "name": "Lava Lake", "location": [407, 3010, -24] },
|
||||||
|
{ "name": "Lavapit Pyramid", "location": [740, 3691, -43] },
|
||||||
|
{ "name": "Lost Settlement", "location": [526, 3822, -44] },
|
||||||
|
{ "name": "Northern Steppes", "location": [822, 3063, 61] },
|
||||||
|
{ "name": "Raptor Island", "location": [816, 3778, -42] },
|
||||||
|
{ "name": "Royal Park", "location": [711, 3255, 38] },
|
||||||
|
{ "name": "Shrine of Singularity", "location": [995, 3814, -23] },
|
||||||
|
{ "name": "Slith Valley", "location": [1078, 3331, -42] },
|
||||||
|
{ "name": "Spider Island", "location": [1115, 3730, -42] },
|
||||||
|
{ "name": "Spiders Guarde", "location": [1109, 3606, -45] },
|
||||||
|
{ "name": "Talon Point", "location": [676, 3831, -39] },
|
||||||
|
{ "name": "Treefellow Course", "location": [570, 2936, 39] },
|
||||||
|
{ "name": "Void Isle", "location": [440, 3577, 38] },
|
||||||
|
{ "name": "Walled Circus", "location": [370, 3273, 0] },
|
||||||
|
{ "name": "Waterfall Point", "location": [661, 2894, 39] }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
64
Distribution/Data/Locations/tokuno.json
Normal file
64
Distribution/Data/Locations/tokuno.json
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
{
|
||||||
|
"name": "Tokuno",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Tokuno Islands",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Towns",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Zento",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Zento Moongate", "x": 802, "y": 1204, "z": 25 },
|
||||||
|
{ "name": "Zento Bank", "x": 735, "y": 1255, "z": 30 }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dungeons",
|
||||||
|
"categories": [
|
||||||
|
{ "name": "Fan Dancer's Dojo", "locations": [{ "name": "Entrance", "x": 977, "y": 218, "z": 23 }] },
|
||||||
|
{ "name": "Yomotsu Mines", "locations": [{ "name": "Entrance", "x": 259, "y": 785, "z": 64 }] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Sites",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Makoto-Jima",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Moongate", "x": 802, "y": 1204, "z": 25 },
|
||||||
|
{ "name": "Shrine", "x": 718, "y": 1161, "z": 25 },
|
||||||
|
{ "name": "The Waste", "x": 724, "y": 943, "z": 42 }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Isamu-Jima",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Moongate", "x": 1169, "y": 998, "z": 41 },
|
||||||
|
{ "name": "Shrine", "x": 1047, "y": 512, "z": 15 },
|
||||||
|
{ "name": "Lotus Lakes", "x": 1066, "y": 817, "z": 20 },
|
||||||
|
{ "name": "Mount Sho", "x": 1159, "y": 696, "z": 70 },
|
||||||
|
{ "name": "Dragon Valley", "x": 948, "y": 432, "z": 8 },
|
||||||
|
{ "name": "Winter Spur", "x": 926, "y": 162, "z": 34 }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Homare-Jima",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Moongate", "x": 270, "y": 628, "z": 15 },
|
||||||
|
{ "name": "Shrine", "x": 295, "y": 712, "z": 55 },
|
||||||
|
{ "name": "Field of Echoes", "x": 160, "y": 654, "z": 36 },
|
||||||
|
{ "name": "Crane Marsh", "x": 232, "y": 1107, "z": 10 },
|
||||||
|
{ "name": "Bushido Dojo", "x": 334, "y": 407, "z": 32 },
|
||||||
|
{ "name": "Kitsune Woods", "x": 523, "y": 520, "z": 32 }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<places>
|
|
||||||
<parent name="Tokuno Islands">
|
|
||||||
<parent name="Towns">
|
|
||||||
<parent name="Zento">
|
|
||||||
<child name="Zento Moongate" x="802" y="1204" z="25" />
|
|
||||||
<child name="Zento Bank" x="735" y="1255" z="30" />
|
|
||||||
</parent>
|
|
||||||
</parent>
|
|
||||||
<parent name="Dungeons">
|
|
||||||
<parent name="Fan Dancer's Dojo">
|
|
||||||
<child name="Entrance" x="977" y="218" z="23" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Yomotsu Mines">
|
|
||||||
<child name="Entrance" x="259" y="785" z="64" />
|
|
||||||
</parent>
|
|
||||||
</parent>
|
|
||||||
<parent name="Sites">
|
|
||||||
<parent name="Makoto-Jima">
|
|
||||||
<child name="Moongate" x="802" y="1204" z="25" />
|
|
||||||
<child name="Shrine" x="718" y="1161" z="25" />
|
|
||||||
<child name="The Waste" x="724" y="943" z="42" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Isamu-Jima">
|
|
||||||
<child name="Moongate" x="1169" y="998" z="41" />
|
|
||||||
<child name="Shrine" x="1047" y="512" z="15" />
|
|
||||||
<child name="Lotus Lakes" x="1066" y="817" z="20" />
|
|
||||||
<child name="Mount Sho" x="1159" y="696" z="70" />
|
|
||||||
<child name="Dragon Valley" x="948" y="432" z="8" />
|
|
||||||
<child name="Winter Spur" x="926" y="162" z="34" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Homare-Jima">
|
|
||||||
<child name="Moongate" x="270" y="628" z="15" />
|
|
||||||
<child name="Shrine" x="295" y="712" z="55" />
|
|
||||||
<child name="Field of Echoes" x="160" y="654" z="36" />
|
|
||||||
<child name="Crane Marsh" x="232" y="1107" z="10" />
|
|
||||||
<child name="Bushido Dojo" x="334" y="407" z="32" />
|
|
||||||
<child name="Kitsune Woods" x="523" y="520" z="32" />
|
|
||||||
</parent>
|
|
||||||
</parent>
|
|
||||||
</parent>
|
|
||||||
</places>
|
|
||||||
384
Distribution/Data/Locations/trammel.json
Normal file
384
Distribution/Data/Locations/trammel.json
Normal file
|
|
@ -0,0 +1,384 @@
|
||||||
|
{
|
||||||
|
"name": "Trammel",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Dungeons",
|
||||||
|
"categories": [
|
||||||
|
{ "name": "Blighted Grove", "locations": [{ "name": "Entrance", "location": [586, 1643, -5] }] },
|
||||||
|
{
|
||||||
|
"name": "Covetous",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [2499, 919, 0] },
|
||||||
|
{ "name": "Level 1", "location": [5456, 1863, 0] },
|
||||||
|
{ "name": "Level 2", "location": [5614, 1997, 0] },
|
||||||
|
{ "name": "Level 3", "location": [5579, 1924, 0] },
|
||||||
|
{ "name": "Lake Cave", "location": [5467, 1805, 7] },
|
||||||
|
{ "name": "Torture Chambers", "location": [5552, 1807, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Deceit",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [4111, 432, 5] },
|
||||||
|
{ "name": "Level 1", "location": [5188, 638, 0] },
|
||||||
|
{ "name": "Level 2", "location": [5305, 533, 2] },
|
||||||
|
{ "name": "Level 3", "location": [5137, 650, 5] },
|
||||||
|
{ "name": "Level 4", "location": [5306, 652, 2] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Despise",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [1298, 1080, 0] },
|
||||||
|
{ "name": "Entryway", "location": [5587, 631, 30] },
|
||||||
|
{ "name": "Level 1", "location": [5501, 570, 59] },
|
||||||
|
{ "name": "Level 2", "location": [5519, 673, 20] },
|
||||||
|
{ "name": "Level 3", "location": [5407, 859, 45] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Destard",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [1176, 2637, 0] },
|
||||||
|
{ "name": "Level 1", "location": [5243, 1006, 0] },
|
||||||
|
{ "name": "Level 2", "location": [5143, 801, 4] },
|
||||||
|
{ "name": "Level 3", "location": [5137, 986, 5] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Hythloth",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [4721, 3822, 0] },
|
||||||
|
{ "name": "Level 1", "location": [5905, 20, 46] },
|
||||||
|
{ "name": "Level 2", "location": [5976, 169, 0] },
|
||||||
|
{ "name": "Level 3", "location": [6083, 145, -20] },
|
||||||
|
{ "name": "Level 4", "location": [6059, 89, 24] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Shame",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [514, 1561, 0] },
|
||||||
|
{ "name": "Level 1", "location": [5395, 126, 0] },
|
||||||
|
{ "name": "Level 2", "location": [5515, 11, 5] },
|
||||||
|
{ "name": "Level 3", "location": [5514, 148, 25] },
|
||||||
|
{ "name": "Level 4", "location": [5875, 20, -5] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Wrong",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [2043, 238, 10] },
|
||||||
|
{ "name": "Level 1", "location": [5825, 630, 0] },
|
||||||
|
{ "name": "Level 2", "location": [5690, 569, 25] },
|
||||||
|
{ "name": "Level 3", "location": [5703, 639, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Miscellaneous",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Hyloth Fire Pit", "location": [4596, 3630, 30] },
|
||||||
|
{ "name": "Yew-Britain Brigand Camp", "location": [885, 1682, 0] },
|
||||||
|
{ "name": "Yew Fort of the Damned", "location": [972, 768, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Terathan Keep",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [5451, 3143, -60] },
|
||||||
|
{ "name": "Level 1", "location": [5342, 1601, 0] },
|
||||||
|
{ "name": "Champion Room", "location": [5205, 1585, 0] },
|
||||||
|
{ "name": "Starroom", "location": [5139, 1767, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Fire",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [5760, 2908, 15] },
|
||||||
|
{ "name": "Brit Entrance", "location": [2923, 3407, 8] },
|
||||||
|
{ "name": "Level 1", "location": [5790, 1416, 40] },
|
||||||
|
{ "name": "Level 2", "location": [5702, 1316, 1] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Ice",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [5210, 2322, 30] },
|
||||||
|
{ "name": "Brit Entrance", "location": [1999, 81, 4] },
|
||||||
|
{ "name": "Level 1", "location": [5875, 150, 15] },
|
||||||
|
{ "name": "Ratman Room", "location": [5834, 327, 18] },
|
||||||
|
{ "name": "Ice Demon Lair", "location": [5700, 305, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Orc Cave",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [1019, 1431, 0] },
|
||||||
|
{ "name": "Level 1", "location": [5137, 2014, 0] },
|
||||||
|
{ "name": "Level 2", "location": [5332, 1376, 0] },
|
||||||
|
{ "name": "Level 3", "location": [5272, 2036, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "name": "Painted Caves", "locations": [{ "name": "Entrance", "location": [1716, 2993, 0] }] },
|
||||||
|
{
|
||||||
|
"name": "Palace of Paroxysmus",
|
||||||
|
"locations": [{ "name": "Entrance", "location": [5576, 3018, 25] }]
|
||||||
|
},
|
||||||
|
{ "name": "Prism of Light", "locations": [{ "name": "Entrance", "location": [3784, 1097, 14] }] },
|
||||||
|
{ "name": "Sanctuary", "locations": [{ "name": "Entrance", "location": [764, 1646, 0] }] },
|
||||||
|
{
|
||||||
|
"name": "Solen Hives",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Area A",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [729, 1451, 0] },
|
||||||
|
{ "name": "Level 1", "location": [5658, 1795, 3] },
|
||||||
|
{ "name": "Level 2", "location": [5726, 1891, 1] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Area B",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [2607, 763, 0] },
|
||||||
|
{ "name": "Level 1", "location": [5921, 1797, 1] },
|
||||||
|
{ "name": "Level 2", "location": [5875, 1866, 2] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Area C",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [1689, 2789, 0] },
|
||||||
|
{ "name": "Level 1", "location": [5659, 2022, 0] },
|
||||||
|
{ "name": "Level 2", "location": [5708, 1955, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Area D",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Entrance", "location": [1723, 814, 0] },
|
||||||
|
{ "name": "Level 1", "location": [5916, 2019, 3] },
|
||||||
|
{ "name": "Level 2", "location": [5813, 2012, -1] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "name": "Area E", "locations": [{ "name": "Entrance", "location": [5732, 1858, 0] }] }
|
||||||
|
],
|
||||||
|
"locations": [{ "name": "Central Area", "location": [5774, 1896, 20] }]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Internal",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Jail Cells",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Cell 1", "location": [5276, 1164, 0] },
|
||||||
|
{ "name": "Cell 2", "location": [5286, 1164, 0] },
|
||||||
|
{ "name": "Cell 3", "location": [5296, 1164, 0] },
|
||||||
|
{ "name": "Cell 4", "location": [5306, 1164, 0] },
|
||||||
|
{ "name": "Cell 5", "location": [5276, 1174, 0] },
|
||||||
|
{ "name": "Cell 6", "location": [5286, 1174, 0] },
|
||||||
|
{ "name": "Cell 7", "location": [5286, 1174, 0] },
|
||||||
|
{ "name": "Cell 8", "location": [5306, 1174, 0] },
|
||||||
|
{ "name": "Cell 9", "location": [5283, 1184, 0] },
|
||||||
|
{ "name": "Cell 10", "location": [5304, 1184, 0] }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"locations": [{ "name": "Green Acres", "location": [5445, 1153, 0] }]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Shrines",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Chaos", "location": [1456, 854, 0] },
|
||||||
|
{ "name": "Compassion", "location": [1856, 872, -1] },
|
||||||
|
{ "name": "Honesty", "location": [4217, 564, 36] },
|
||||||
|
{ "name": "Honor", "location": [1730, 3528, 3] },
|
||||||
|
{ "name": "Humility", "location": [4276, 3699, 0] },
|
||||||
|
{ "name": "Justice", "location": [1301, 639, 16] },
|
||||||
|
{ "name": "Sacrifice", "location": [3355, 299, 9] },
|
||||||
|
{ "name": "Spirituality", "location": [1589, 2485, 5] },
|
||||||
|
{ "name": "Valor", "location": [2496, 3932, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Towns",
|
||||||
|
"categories": [
|
||||||
|
{
|
||||||
|
"name": "Britain",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Blackthorn Castle", "location": [1533, 1415, 56] },
|
||||||
|
{ "name": "Blackthorn Entrance", "location": [1523, 1456, 15] },
|
||||||
|
{ "name": "British Castle", "location": [1323, 1624, 55] },
|
||||||
|
{ "name": "British Entrance", "location": [1401, 1625, 28] },
|
||||||
|
{ "name": "Cemetery", "location": [1384, 1497, 10] },
|
||||||
|
{ "name": "Center", "location": [1475, 1645, 20] },
|
||||||
|
{ "name": "Farmlands", "location": [1228, 1705, 0] },
|
||||||
|
{ "name": "Park", "location": [1614, 1641, 35] },
|
||||||
|
{ "name": "Suburbs", "location": [1662, 1572, 5] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Buccaneers Den",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Bathhouse", "location": [2667, 2084, 5] },
|
||||||
|
{ "name": "Docks", "location": [2736, 2166, 0] },
|
||||||
|
{ "name": "Tunnels", "location": [2667, 2069, -20] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Cove",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Cemetery", "location": [2443, 1123, 5] },
|
||||||
|
{ "name": "Gates", "location": [2285, 1209, 0] },
|
||||||
|
{ "name": "Guard Post", "location": [2218, 1116, 19] },
|
||||||
|
{ "name": "Orc Fort", "location": [2171, 1332, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "name": "Heartwood", "locations": [{ "name": "Entrance", "location": [6986, 340, 0] }] },
|
||||||
|
{
|
||||||
|
"name": "Jhelom",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Cemetery", "location": [1296, 3719, 0] },
|
||||||
|
{ "name": "East Docks", "location": [1492, 3696, -3] },
|
||||||
|
{ "name": "Fighting Pit", "location": [1398, 3742, -21] },
|
||||||
|
{ "name": "Main Island", "location": [1414, 3816, 0] },
|
||||||
|
{ "name": "Medium Island", "location": [1124, 3623, 5] },
|
||||||
|
{ "name": "Small Island", "location": [1466, 4015, 5] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Magincia",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Bank", "location": [3730, 2161, 20] },
|
||||||
|
{ "name": "Docks", "location": [3675, 2259, 20] },
|
||||||
|
{ "name": "Park", "location": [3719, 2063, 25] },
|
||||||
|
{ "name": "Parliament", "location": [3792, 2248, 20] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Minoc",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Bridge", "location": [2539, 501, 30] },
|
||||||
|
{ "name": "Gypsy Camp", "location": [2540, 651, 0] },
|
||||||
|
{ "name": "Mining Camp", "location": [2583, 528, 15] },
|
||||||
|
{ "name": "North", "location": [2475, 417, 15] },
|
||||||
|
{ "name": "South", "location": [2526, 583, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Moonglow",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Cemetery", "location": [4546, 1338, 8] },
|
||||||
|
{ "name": "Center", "location": [4442, 1122, 5] },
|
||||||
|
{ "name": "Docks", "location": [4406, 1045, -2] },
|
||||||
|
{ "name": "Telescope", "location": [4707, 1124, 0] },
|
||||||
|
{ "name": "Zoo", "location": [4549, 1378, 8] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Nujel'm",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Cemetery", "location": [3536, 1156, 20] },
|
||||||
|
{ "name": "Chess Board", "location": [3728, 1360, 5] },
|
||||||
|
{ "name": "Docks", "location": [3803, 1279, 5] },
|
||||||
|
{ "name": "East", "location": [3755, 1227, 0] },
|
||||||
|
{ "name": "North", "location": [3668, 1116, 0] },
|
||||||
|
{ "name": "Palace", "location": [3698, 1279, 20] },
|
||||||
|
{ "name": "West", "location": [3572, 1211, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Haven",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Old Haven", "location": [3650, 2592, 0] },
|
||||||
|
{ "name": "Old Haven North", "location": [3650, 2516, 0] },
|
||||||
|
{ "name": "New Haven", "location": [3506, 2570, 14] },
|
||||||
|
{ "name": "New Haven North", "location": [3502, 2475, 34] },
|
||||||
|
{ "name": "Farmlands", "location": [3722, 2647, 20] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Serpents Hold",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "North", "location": [3023, 3417, 15] },
|
||||||
|
{ "name": "South", "location": [2906, 3505, 10] },
|
||||||
|
{ "name": "Guard Post", "location": [3011, 3526, 15] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Skara Brae",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "East", "location": [811, 2243, 0] },
|
||||||
|
{ "name": "East Docks", "location": [716, 2233, -3] },
|
||||||
|
{ "name": "North", "location": [746, 2165, 0] },
|
||||||
|
{ "name": "South", "location": [899, 2381, 0] },
|
||||||
|
{ "name": "West", "location": [601, 2171, 0] },
|
||||||
|
{ "name": "West Docks", "location": [639, 2236, -3] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Trinsic",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Center", "location": [1927, 2779, 0] },
|
||||||
|
{ "name": "East Docks", "location": [2071, 2855, -3] },
|
||||||
|
{ "name": "Island Park", "location": [2108, 2793, 2] },
|
||||||
|
{ "name": "North", "location": [1894, 2666, 0] },
|
||||||
|
{ "name": "South", "location": [1891, 2850, 20] },
|
||||||
|
{ "name": "South Gate", "location": [2000, 2930, 0] },
|
||||||
|
{ "name": "West Gate", "location": [1832, 2779, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Vesper",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Cemetery", "location": [2786, 867, 0] },
|
||||||
|
{ "name": "Center", "location": [2882, 788, 0] },
|
||||||
|
{ "name": "Docks", "location": [3013, 828, -3] },
|
||||||
|
{ "name": "East", "location": [2760, 981, 0] },
|
||||||
|
{ "name": "North", "location": [2907, 603, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Wind",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Caves", "location": [5166, 244, 15] },
|
||||||
|
{ "name": "East", "location": [5336, 88, 15] },
|
||||||
|
{ "name": "Entrance", "location": [1362, 896, 0] },
|
||||||
|
{ "name": "Park", "location": [5211, 22, 15] },
|
||||||
|
{ "name": "South", "location": [5223, 189, 5] },
|
||||||
|
{ "name": "West", "location": [5180, 90, 25] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Yew",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Cemetery", "location": [724, 1138, 0] },
|
||||||
|
{ "name": "Center", "location": [535, 992, 0] },
|
||||||
|
{ "name": "Courts and Prisons", "location": [354, 836, 20] },
|
||||||
|
{ "name": "Empath Abbey", "location": [635, 860, 0] },
|
||||||
|
{ "name": "Hidden Cave", "location": [313, 787, -24] },
|
||||||
|
{ "name": "Orc Fort", "location": [633, 1499, 0] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Delucia",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "Watch Tower", "location": [5276, 3945, 37] },
|
||||||
|
{ "name": "Center", "location": [5228, 3978, 37] },
|
||||||
|
{ "name": "Orc Fort", "location": [5210, 3636, 3] }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Papua",
|
||||||
|
"locations": [
|
||||||
|
{ "name": "The Just Inn", "location": [5769, 3176, 0] },
|
||||||
|
{ "name": "Center", "location": [5730, 3208, -4] },
|
||||||
|
{ "name": "Docks", "location": [5825, 3256, 2] }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -1,258 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<places>
|
|
||||||
<parent name="Trammel">
|
|
||||||
<parent name="Dungeons">
|
|
||||||
<parent name="Covetous">
|
|
||||||
<child name="Entrance" x="2499" y="919" z="0" />
|
|
||||||
<child name="Level 1" x="5456" y="1863" z="0" />
|
|
||||||
<child name="Level 2" x="5614" y="1997" z="0" />
|
|
||||||
<child name="Level 3" x="5579" y="1924" z="0" />
|
|
||||||
<child name="Lake Cave" x="5467" y="1805" z="7" />
|
|
||||||
<child name="Torture Chambers" x="5552" y="1807" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Deceit">
|
|
||||||
<child name="Entrance" x="4111" y="432" z="5" />
|
|
||||||
<child name="Level 1" x="5188" y="638" z="0" />
|
|
||||||
<child name="Level 2" x="5305" y="533" z="2" />
|
|
||||||
<child name="Level 3" x="5137" y="650" z="5" />
|
|
||||||
<child name="Level 4" x="5306" y="652" z="2" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Despise">
|
|
||||||
<child name="Entrance" x="1298" y="1080" z="0" />
|
|
||||||
<child name="Entryway" x="5587" y="631" z="30" />
|
|
||||||
<child name="Level 1" x="5501" y="570" z="59" />
|
|
||||||
<child name="Level 2" x="5519" y="673" z="20" />
|
|
||||||
<child name="Level 3" x="5407" y="859" z="45" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Destard">
|
|
||||||
<child name="Entrance" x="1176" y="2637" z="0" />
|
|
||||||
<child name="Level 1" x="5243" y="1006" z="0" />
|
|
||||||
<child name="Level 2" x="5143" y="801" z="4" />
|
|
||||||
<child name="Level 3" x="5137" y="986" z="5" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Hythloth">
|
|
||||||
<child name="Entrance" x="4721" y="3822" z="0" />
|
|
||||||
<child name="Level 1" x="5905" y="20" z="46" />
|
|
||||||
<child name="Level 2" x="5976" y="169" z="0" />
|
|
||||||
<child name="Level 3" x="6083" y="145" z="-20" />
|
|
||||||
<child name="Level 4" x="6059" y="89" z="24" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Shame">
|
|
||||||
<child name="Entrance" x="514" y="1561" z="0" />
|
|
||||||
<child name="Level 1" x="5395" y="126" z="0" />
|
|
||||||
<child name="Level 2" x="5515" y="11" z="5" />
|
|
||||||
<child name="Level 3" x="5514" y="148" z="25" />
|
|
||||||
<child name="Level 4" x="5875" y="20" z="-5" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Wrong">
|
|
||||||
<child name="Entrance" x="2043" y="238" z="10" />
|
|
||||||
<child name="Level 1" x="5825" y="630" z="0" />
|
|
||||||
<child name="Level 2" x="5690" y="569" z="25" />
|
|
||||||
<child name="Level 3" x="5703" y="639" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Miscellaneous">
|
|
||||||
<child name="Hyloth Fire Pit" x="4596" y="3630" z="30" />
|
|
||||||
<child name="Yew-Britain Brigand Camp" x="885" y="1682" z="0" />
|
|
||||||
<child name="Yew Fort of the Damned" x="972" y="768" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Terathan Keep">
|
|
||||||
<child name="Entrance" x="5451" y="3143" z="-60" />
|
|
||||||
<child name="Level 1" x="5342" y="1601" z="0" />
|
|
||||||
<child name="Champion Room" x="5205" y="1585" z="0" />
|
|
||||||
<child name="Starroom" x="5139" y="1767" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Fire">
|
|
||||||
<child name="Entrance" x="5760" y="2908" z="15" />
|
|
||||||
<child name="Brit Entrance" x="2923" y="3407" z="8" />
|
|
||||||
<child name="Level 1" x="5790" y="1416" z="40" />
|
|
||||||
<child name="Level 2" x="5702" y="1316" z="1" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Ice">
|
|
||||||
<child name="Entrance" x="5210" y="2322" z="30" />
|
|
||||||
<child name="Brit Entrance" x="1999" y="81" z="4" />
|
|
||||||
<child name="Level 1" x="5875" y="150" z="15" />
|
|
||||||
<child name="Ratman Room" x="5834" y="327" z="18" />
|
|
||||||
<child name="Ice Demon Lair" x="5700" y="305" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Orc Cave">
|
|
||||||
<child name="Entrance" x="1019" y="1431" z="0" />
|
|
||||||
<child name="Level 1" x="5137" y="2014" z="0" />
|
|
||||||
<child name="Level 2" x="5332" y="1376" z="0" />
|
|
||||||
<child name="Level 3" x="5272" y="2036" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Solen Hives">
|
|
||||||
<child name="Central Area" x="5774" y="1896" z="20" />
|
|
||||||
<parent name="Area A">
|
|
||||||
<child name="Entrance" x="729" y="1451" z="0" />
|
|
||||||
<child name="Level 1" x="5658" y="1795" z="3" />
|
|
||||||
<child name="Level 2" x="5726" y="1891" z="1" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Area B">
|
|
||||||
<child name="Entrance" x="2607" y="763" z="0" />
|
|
||||||
<child name="Level 1" x="5921" y="1797" z="1" />
|
|
||||||
<child name="Level 2" x="5875" y="1866" z="2" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Area C">
|
|
||||||
<child name="Entrance" x="1689" y="2789" z="0" />
|
|
||||||
<child name="Level 1" x="5659" y="2022" z="0" />
|
|
||||||
<child name="Level 2" x="5708" y="1955" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Area D">
|
|
||||||
<child name="Entrance" x="1723" y="814" z="0" />
|
|
||||||
<child name="Level 1" x="5916" y="2019" z="3" />
|
|
||||||
<child name="Level 2" x="5813" y="2012" z="-1" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Area E">
|
|
||||||
<child name="Entrance" x="5732" y="1858" z="0" />
|
|
||||||
</parent>
|
|
||||||
</parent>
|
|
||||||
</parent>
|
|
||||||
<parent name="Internal">
|
|
||||||
<parent name="Jail Cells">
|
|
||||||
<child name="Cell 1" x="5276" y="1164" z="0" />
|
|
||||||
<child name="Cell 2" x="5286" y="1164" z="0" />
|
|
||||||
<child name="Cell 3" x="5296" y="1164" z="0" />
|
|
||||||
<child name="Cell 4" x="5306" y="1164" z="0" />
|
|
||||||
<child name="Cell 5" x="5276" y="1174" z="0" />
|
|
||||||
<child name="Cell 6" x="5286" y="1174" z="0" />
|
|
||||||
<child name="Cell 7" x="5286" y="1174" z="0" />
|
|
||||||
<child name="Cell 8" x="5306" y="1174" z="0" />
|
|
||||||
<child name="Cell 9" x="5283" y="1184" z="0" />
|
|
||||||
<child name="Cell 10" x="5304" y="1184" z="0" />
|
|
||||||
</parent>
|
|
||||||
<child name="Green Acres" x="5445" y="1153" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Shrines">
|
|
||||||
<child name="Chaos" x="1456" y="854" z="0" />
|
|
||||||
<child name="Compassion" x="1856" y="872" z="-1" />
|
|
||||||
<child name="Honesty" x="4217" y="564" z="36" />
|
|
||||||
<child name="Honor" x="1730" y="3528" z="3" />
|
|
||||||
<child name="Humility" x="4276" y="3699" z="0" />
|
|
||||||
<child name="Justice" x="1301" y="639" z="16" />
|
|
||||||
<child name="Sacrifice" x="3355" y="299" z="9" />
|
|
||||||
<child name="Spirituality" x="1589" y="2485" z="5" />
|
|
||||||
<child name="Valor" x="2496" y="3932" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Towns">
|
|
||||||
<parent name="Britain">
|
|
||||||
<child name="Blackthorn Castle" x="1533" y="1415" z="56" />
|
|
||||||
<child name="Blackthorn Entrance" x="1523" y="1456" z="15" />
|
|
||||||
<child name="British Castle" x="1323" y="1624" z="55" />
|
|
||||||
<child name="British Entrance" x="1401" y="1625" z="28" />
|
|
||||||
<child name="Cemetery" x="1384" y="1497" z="10" />
|
|
||||||
<child name="Center" x="1475" y="1645" z="20" />
|
|
||||||
<child name="Farmlands" x="1228" y="1705" z="0" />
|
|
||||||
<child name="Park" x="1614" y="1641" z="35" />
|
|
||||||
<child name="Suburbs" x="1662" y="1572" z="5" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Buccaneers Den">
|
|
||||||
<child name="Bathhouse" x="2667" y="2084" z="5" />
|
|
||||||
<child name="Docks" x="2736" y="2166" z="0" />
|
|
||||||
<child name="Tunnels" x="2667" y="2069" z="-20" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Cove">
|
|
||||||
<child name="Cemetery" x="2443" y="1123" z="5" />
|
|
||||||
<child name="Gates" x="2285" y="1209" z="0" />
|
|
||||||
<child name="Guard Post" x="2218" y="1116" z="19" />
|
|
||||||
<child name="Orc Fort" x="2171" y="1332" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Jhelom">
|
|
||||||
<child name="Cemetery" x="1296" y="3719" z="0" />
|
|
||||||
<child name="East Docks" x="1492" y="3696" z="-3" />
|
|
||||||
<child name="Fighting Pit" x="1398" y="3742" z="-21" />
|
|
||||||
<child name="Main Island" x="1414" y="3816" z="0" />
|
|
||||||
<child name="Medium Island" x="1124" y="3623" z="5" />
|
|
||||||
<child name="Small Island" x="1466" y="4015" z="5" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Magincia">
|
|
||||||
<child name="Bank" x="3730" y="2161" z="20" />
|
|
||||||
<child name="Docks" x="3675" y="2259" z="20" />
|
|
||||||
<child name="Park" x="3719" y="2063" z="25" />
|
|
||||||
<child name="Parliament" x="3792" y="2248" z="20" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Minoc">
|
|
||||||
<child name="Bridge" x="2539" y="501" z="30" />
|
|
||||||
<child name="Gypsy Camp" x="2540" y="651" z="0" />
|
|
||||||
<child name="Mining Camp" x="2583" y="528" z="15" />
|
|
||||||
<child name="North" x="2475" y="417" z="15" />
|
|
||||||
<child name="South" x="2526" y="583" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Moonglow">
|
|
||||||
<child name="Cemetery" x="4546" y="1338" z="8" />
|
|
||||||
<child name="Center" x="4442" y="1122" z="5" />
|
|
||||||
<child name="Docks" x="4406" y="1045" z="-2" />
|
|
||||||
<child name="Telescope" x="4707" y="1124" z="0" />
|
|
||||||
<child name="Zoo" x="4549" y="1378" z="8" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Nujel'm">
|
|
||||||
<child name="Cemetery" x="3536" y="1156" z="20" />
|
|
||||||
<child name="Chess Board" x="3728" y="1360" z="5" />
|
|
||||||
<child name="Docks" x="3803" y="1279" z="5" />
|
|
||||||
<child name="East" x="3755" y="1227" z="0" />
|
|
||||||
<child name="North" x="3668" y="1116" z="0" />
|
|
||||||
<child name="Palace" x="3698" y="1279" z="20" />
|
|
||||||
<child name="West" x="3572" y="1211" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Haven"> <!-- TODO: Update -->
|
|
||||||
<child name="Docks" x="3650" y="2653" z="0" />
|
|
||||||
<child name="Farmlands" x="3722" y="2647" z="20" />
|
|
||||||
<child name="North" x="3650" y="2516" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Serpents Hold">
|
|
||||||
<child name="North" x="3023" y="3417" z="15" />
|
|
||||||
<child name="South" x="2906" y="3505" z="10" />
|
|
||||||
<child name="Guard Post" x="3011" y="3526" z="15" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Skara Brae">
|
|
||||||
<child name="East" x="811" y="2243" z="0" />
|
|
||||||
<child name="East Docks" x="716" y="2233" z="-3" />
|
|
||||||
<child name="North" x="746" y="2165" z="0" />
|
|
||||||
<child name="South" x="899" y="2381" z="0" />
|
|
||||||
<child name="West" x="601" y="2171" z="0" />
|
|
||||||
<child name="West Docks" x="639" y="2236" z="-3" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Trinsic">
|
|
||||||
<child name="Center" x="1927" y="2779" z="0" />
|
|
||||||
<child name="East Docks" x="2071" y="2855" z="-3" />
|
|
||||||
<child name="Island Park" x="2108" y="2793" z="2" />
|
|
||||||
<child name="North" x="1894" y="2666" z="0" />
|
|
||||||
<child name="South" x="1891" y="2850" z="20" />
|
|
||||||
<child name="South Gate" x="2000" y="2930" z="0" />
|
|
||||||
<child name="West Gate" x="1832" y="2779" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Vesper">
|
|
||||||
<child name="Cemetery" x="2786" y="867" z="0" />
|
|
||||||
<child name="Center" x="2882" y="788" z="0" />
|
|
||||||
<child name="Docks" x="3013" y="828" z="-3" />
|
|
||||||
<child name="East" x="2760" y="981" z="0" />
|
|
||||||
<child name="North" x="2907" y="603" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Wind">
|
|
||||||
<child name="Caves" x="5166" y="244" z="15" />
|
|
||||||
<child name="East" x="5336" y="88" z="15" />
|
|
||||||
<child name="Entrance" x="1362" y="896" z="0" />
|
|
||||||
<child name="Park" x="5211" y="22" z="15" />
|
|
||||||
<child name="South" x="5223" y="189" z="5" />
|
|
||||||
<child name="West" x="5180" y="90" z="25" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Yew">
|
|
||||||
<child name="Cemetery" x="724" y="1138" z="0" />
|
|
||||||
<child name="Center" x="535" y="992" z="0" />
|
|
||||||
<child name="Courts and Prisons" x="354" y="836" z="20" />
|
|
||||||
<child name="Empath Abbey" x="635" y="860" z="0" />
|
|
||||||
<child name="Hidden Cave" x="313" y="787" z="-24" />
|
|
||||||
<child name="Orc Fort" x="633" y="1499" z="0" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Delucia">
|
|
||||||
<child name="Watch Tower" x="5276" y="3945" z="37" />
|
|
||||||
<child name="Center" x="5228" y="3978" z="37" />
|
|
||||||
<child name="Orc Fort" x="5210" y="3636" z="3" />
|
|
||||||
</parent>
|
|
||||||
<parent name="Papua">
|
|
||||||
<child name="The Just Inn" x="5769" y="3176" z="0" />
|
|
||||||
<child name="Center" x="5730" y="3208" z="-4" />
|
|
||||||
<child name="Docks" x="5825" y="3256" z="2" />
|
|
||||||
</parent>
|
|
||||||
</parent>
|
|
||||||
</parent>
|
|
||||||
</places>
|
|
||||||
|
|
@ -1,143 +0,0 @@
|
||||||
Items (Item)
|
|
||||||
+ Bods & Rewards (SmallBOD; LargeBOD; BulkOrderBook; SturdyPickaxe; SturdyShovel; BaseGlovesOfMining; GargoylesPickaxe; ProspectorsTool; PowderOfTemperament; ColoredAnvil; RunicHammer; AncientSmithyHammer; SmallStretchedHideEastDeed; SmallStretchedHideEastAddon; SmallStretchedHideSouthDeed; SmallStretchedHideSouthAddon; MediumStretchedHideEastDeed; MediumStretchedHideEastAddon; MediumStretchedHideSouthDeed; MediumStretchedHideSouthAddon; LightFlowerTapestryEastDeed; LightFlowerTapestryEastAddon; LightFlowerTapestrySouthDeed; LightFlowerTapestrySouthAddon; DarkFlowerTapestryEastDeed; DarkFlowerTapestryEastAddon; DarkFlowerTapestrySouthDeed; DarkFlowerTapestrySouthAddon; BrownBearRugEastDeed; BrownBearRugEastAddon; BrownBearRugSouthDeed; BrownBearRugSouthAddon; PolarBearRugEastDeed; PolarBearRugEastAddon; PolarBearRugSouthDeed; PolarBearRugSouthAddon; ClothingBlessDeed; RunicSewingKit)
|
|
||||||
+ Smithing (SmallSmithBOD; LargeSmithBOD; SturdyPickaxe; SturdyShovel; BaseGlovesOfMining; GargoylesPickaxe; ProspectorsTool; PowderOfTemperament; ColoredAnvil; RunicHammer; AncientSmithyHammer)
|
|
||||||
+ Tailoring (SmallTailorBOD; LargeTailorBOD; SmallStretchedHideEastDeed; SmallStretchedHideEastAddon; SmallStretchedHideSouthDeed; SmallStretchedHideSouthAddon; MediumStretchedHideEastDeed; MediumStretchedHideEastAddon; MediumStretchedHideSouthDeed; MediumStretchedHideSouthAddon; LightFlowerTapestryEastDeed; LightFlowerTapestryEastAddon; LightFlowerTapestrySouthDeed; LightFlowerTapestrySouthAddon; DarkFlowerTapestryEastDeed; DarkFlowerTapestryEastAddon; DarkFlowerTapestrySouthDeed; DarkFlowerTapestrySouthAddon; BrownBearRugEastDeed; BrownBearRugEastAddon; BrownBearRugSouthDeed; BrownBearRugSouthAddon; PolarBearRugEastDeed; PolarBearRugEastAddon; PolarBearRugSouthDeed; PolarBearRugSouthAddon; ClothingBlessDeed; RunicSewingKit)
|
|
||||||
+ Addons (BaseAddon; BaseAddonDeed)
|
|
||||||
+ Constructed (BaseAddon)
|
|
||||||
+ Deeds (BaseAddonDeed)
|
|
||||||
+ Wearables (BaseArmor; BaseClothing; BaseSuit; BaseJewel; BaseWeapon)
|
|
||||||
+ Armor (BaseArmor)
|
|
||||||
+ Artifacts (ArmorOfFortune; GauntletsOfNobility; HelmOfInsight; HolyKnightsBreastplate; InquisitorsResolution; JackalsCollar; LeggingsOfBane; MidnightBracers; OrnateCrownOfTheHarrower; ShadowDancerLeggings; TunicOfFire; VoiceOfTheFallenKing)
|
|
||||||
+ Bone (BoneArms; BoneChest; BoneGloves; BoneLegs; BoneHelm)
|
|
||||||
+ Chain (ChainChest; ChainLegs; ChainCoif)
|
|
||||||
+ Daemon Bone (DaemonArms; DaemonChest; DaemonGloves; DaemonLegs; DaemonHelm)
|
|
||||||
+ Dragon (DragonArms; DragonChest; DragonGloves; DragonLegs; DragonHelm)
|
|
||||||
+ Helmets (Bascinet; CloseHelm; Helmet; NorseHelm; OrcHelm)
|
|
||||||
+ Leather (FemaleLeatherChest; LeatherArms; LeatherBustierArms; LeatherChest; LeatherGloves; LeatherGorget; LeatherLegs; LeatherShorts; LeatherSkirt; LeatherCap)
|
|
||||||
+ Plate (FemalePlateChest; PlateArms; PlateChest; PlateGloves; PlateGorget; PlateLegs; PlateHelm)
|
|
||||||
+ Ranger (RangerArms; RangerChest; RangerGloves; RangerGorget; RangerLegs)
|
|
||||||
+ Ring (RingmailArms; RingmailChest; RingmailGloves; RingmailLegs)
|
|
||||||
+ Studded Leather (FemaleStuddedChest; StuddedArms; StuddedBustierArms; StuddedChest; StuddedGloves; StuddedGorget; StuddedLegs)
|
|
||||||
+ Shields (BaseShield)
|
|
||||||
+ Artifacts (Aegis; ArcaneShield)
|
|
||||||
+ Weapons (BaseWeapon)
|
|
||||||
+ Artifacts (AxeOfTheHeavens; BladeOfInsanity; BladeOfTheRighteous; BoneCrusher; BreathOfTheDead; Frostbringer; LegacyOfTheDreadLord; SerpentsFang; StaffOfTheMagi; TheBeserkersMaul; TheDragonSlayer; TheTaskmaster; TitansHammer; ZyronicClaw)
|
|
||||||
+ Wands (BaseWand)
|
|
||||||
+ Axes (BaseAxe)
|
|
||||||
+ Knives (BaseKnife)
|
|
||||||
+ Bashing (BaseBashing)
|
|
||||||
+ Pole Arms (BasePoleArm)
|
|
||||||
+ Ranged (BaseRanged)
|
|
||||||
+ Spears (BaseSpear)
|
|
||||||
+ Staves (BaseStaff)
|
|
||||||
+ Swords (BaseSword)
|
|
||||||
+ Clothing (BaseClothing)
|
|
||||||
+ Cloaks (BaseCloak)
|
|
||||||
+ Hats (BaseHat)
|
|
||||||
+ Robes (BaseOuterTorso)
|
|
||||||
+ Shirts (BaseShirt)
|
|
||||||
+ Pants (BasePants; BaseOuterLegs)
|
|
||||||
+ Shoes (BaseShoes)
|
|
||||||
+ Misc (BaseWaist; BaseMiddleTorso)
|
|
||||||
+ Jewelry (BaseJewel)
|
|
||||||
+ Artifacts (BraceletOfHealth; OrnamentOfTheMagician; RingOfTheElements; RingOfTheVile)
|
|
||||||
+ Suits (BaseSuit)
|
|
||||||
+ Addons (BaseAddonDeed; BaseAddon)
|
|
||||||
+ Constructed (BaseAddon)
|
|
||||||
+ Smithing (LargeForgeEastAddon; LargeForgeSouthAddon; SmallForgeAddon; AnvilEastAddon; AnvilSouthAddon)
|
|
||||||
+ Tailoring (LoomEastAddon; LoomSouthAddon; SpinningWheelEastAddon; SpinningWheelSouthAddon)
|
|
||||||
+ Cooking (FlourMillEastAddon; FlourMillSouthAddon; StoneOvenEastAddon; StoneOvenSouthAddon)
|
|
||||||
+ Bedding (LargeBedEastAddon; LargeBedSouthAddon; SmallBedSouthAddon; SmallBedEastAddon)
|
|
||||||
+ Training (TrainingDummyEastAddon; TrainingDummySouthAddon; PickpocketDipEastAddon; PickpocketDipSouthAddon; ArcheryButteAddon)
|
|
||||||
+ Spiritual (PentagramAddon; BloodPentagram; AbbatoirAddon)
|
|
||||||
+ Furniture (LargeStoneTableEastAddon; LargeStoneTableSouthAddon; MediumStoneTableEastAddon; MediumStoneTableSouthAddon)
|
|
||||||
+ Misc (BaseAddon)
|
|
||||||
+ Deeds (BaseAddonDeed)
|
|
||||||
+ Smithing (LargeForgeEastDeed; LargeForgeSouthDeed; SmallForgeDeed; AnvilEastDeed; AnvilSouthDeed)
|
|
||||||
+ Tailoring (LoomEastDeed; LoomSouthDeed; SpinningWheelEastDeed; SpinningWheelSouthDeed)
|
|
||||||
+ Cooking (FlourMillEastDeed; FlourMillSouthDeed; StoneOvenEastDeed; StoneOvenSouthDeed)
|
|
||||||
+ Bedding (LargeBedEastDeed; LargeBedSouthDeed; SmallBedEastDeed; SmallBedSouthDeed)
|
|
||||||
+ Training (TrainingDummyEastDeed; TrainingDummySouthDeed; PickpocketDipEastDeed; PickpocketDipSouthDeed; ArcheryButteDeed)
|
|
||||||
+ Spiritual (PentagramDeed; AbbatoirDeed)
|
|
||||||
+ Furniture (LargeStoneTableEastDeed; LargeStoneTableSouthDeed; MediumStoneTableEastDeed; MediumStoneTableSouthDeed)
|
|
||||||
+ Misc (BaseAddonDeed)
|
|
||||||
+ Books (BaseBook)
|
|
||||||
+ Resources (BaseIngot; BaseOre; BaseGranite; BaseScales; BaseReagent; BaseHides; BaseLeather; Log; Board; BaseClothMaterial; Bone; UncutCloth; BoltOfCloth; Cloth; Wool; Flax; Cotton; BagOfAllReagents; BagOfNecroReagents; BagOfReagents; AlchemyBag; BagOfIngots; ScribeBag; SmithBag; TailorBag; Fish; BigFish; BaseMagicFish; Arrow; Bolt; Feather; Shaft; AlchemyStone; IngotStone; RegStone; ScribeStone; SmithStone; TailorStone; Sand)
|
|
||||||
+ Ingots (BaseIngot)
|
|
||||||
+ Ore (BaseOre)
|
|
||||||
+ Granite (BaseGranite)
|
|
||||||
+ Scales (BaseScales)
|
|
||||||
+ Reagents (BaseReagent)
|
|
||||||
+ Standard (BlackPearl; Bloodmoss; Garlic; Ginseng; MandrakeRoot; Nightshade; SpidersSilk; SulfurousAsh)
|
|
||||||
+ Necromancy (BatWing; DaemonBlood; GraveDust; NoxCrystal; PigIron)
|
|
||||||
+ Wood (Log; Board)
|
|
||||||
+ Fish (Fish; BigFish; BaseMagicFish)
|
|
||||||
+ Tailoring (BaseHides; BaseLeather; BaseClothMaterial; Bone; BoltOfCloth; Cloth; UncutCloth; Wool; Flax; Cotton)
|
|
||||||
+ Hides (BaseHides)
|
|
||||||
+ Leather (BaseLeather)
|
|
||||||
+ Cloth (BoltOfCloth; Cloth; UncutCloth)
|
|
||||||
+ Materials (BaseClothMaterial; Wool; Flax; Cotton)
|
|
||||||
+ Fletching (Arrow; Bolt; Feather; Shaft)
|
|
||||||
+ Bags (BagOfAllReagents; BagOfNecroReagents; BagOfReagents; AlchemyBag; BagOfIngots; ScribeBag; SmithBag; TailorBag)
|
|
||||||
+ Stones (AlchemyStone; IngotStone; RegStone; ScribeStone; SmithStone; TailorStone)
|
|
||||||
+ Entertainment (BaseInstrument; BaseBoard; Dices)
|
|
||||||
+ Instruments (BaseInstrument)
|
|
||||||
+ Games (BaseBoard; Dices)
|
|
||||||
+ Construction (BaseDoor; BaseFloor; Container; DecorativeShield1; DecorativeShield2; DecorativeShield3; DecorativeShield4; DecorativeShield5; DecorativeShield6; DecorativeShield7; DecorativeShield8; DecorativeShield9; DecorativeShield10; DecorativeShield11; DecorativeShieldSword1North; DecorativeShieldSword1West; DecorativeShieldSword2North; DecorativeShieldSword2West; DecorativeBowWest; DecorativeBowNorth; DecorativeAxeNorth; DecorativeAxeWest; DecorativeSwordNorth; DecorativeSwordWest; DecorativeDAxeNorth; DecorativeDAxeWest; LargePainting; WomanPortrait1; WomanPortrait2; ManPortrait1; ManPortrait2; LadyPortrait1; LadyPortrait2; Tapestry1N; Tapestry2N; Tapestry2W; Tapestry3N; Tapestry3W; Tapestry4N; Tapestry4W; Tapestry5N; Tapestry5W; Tapestry6N; Tapestry6W; RuinedFallenChairA; RuinedArmoire; RuinedBookcase; RuinedBooks; CoveredChair; RuinedFallenChairB; RuinedChair; RuinedClock; RuinedDrawers; RuinedPainting; WoodDebris; Rope; IronWire; SilverWire; GoldWire; CopperWire; Whip; PaintsAndBrush; WoodenBench; FancyWoodenChairCushion; WoodenChairCushion; WoodenChair; BambooChair; Stool; FootStool; Throne; WoodenThrone; LargeTable; Nightstand; YewWoodTable; WritingTable; Easel; TallMusicStand; ShortMusicStand)
|
|
||||||
+ Decoration (DecorativeShield1; DecorativeShield2; DecorativeShield3; DecorativeShield4; DecorativeShield5; DecorativeShield6; DecorativeShield7; DecorativeShield8; DecorativeShield9; DecorativeShield10; DecorativeShield11; DecorativeShieldSword1North; DecorativeShieldSword1West; DecorativeShieldSword2North; DecorativeShieldSword2West; DecorativeBowWest; DecorativeBowNorth; DecorativeAxeNorth; DecorativeAxeWest; DecorativeSwordNorth; DecorativeSwordWest; DecorativeDAxeNorth; DecorativeDAxeWest; LargePainting; WomanPortrait1; WomanPortrait2; ManPortrait1; ManPortrait2; LadyPortrait1; LadyPortrait2; Tapestry1N; Tapestry2N; Tapestry2W; Tapestry3N; Tapestry3W; Tapestry4N; Tapestry4W; Tapestry5N; Tapestry5W; Tapestry6N; Tapestry6W)
|
|
||||||
+ Shields (DecorativeShield1; DecorativeShield2; DecorativeShield3; DecorativeShield4; DecorativeShield5; DecorativeShield6; DecorativeShield7; DecorativeShield8; DecorativeShield9; DecorativeShield10; DecorativeShield11; DecorativeShieldSword1North; DecorativeShieldSword1West; DecorativeShieldSword2North; DecorativeShieldSword2West)
|
|
||||||
+ Weapons (DecorativeBowWest; DecorativeBowNorth; DecorativeAxeNorth; DecorativeAxeWest; DecorativeSwordNorth; DecorativeSwordWest; DecorativeDAxeNorth; DecorativeDAxeWest)
|
|
||||||
+ Paintings & Portraits (LargePainting; WomanPortrait1; WomanPortrait2; ManPortrait1; ManPortrait2; LadyPortrait1; LadyPortrait2)
|
|
||||||
+ Tapestries (Tapestry1N; Tapestry2N; Tapestry2W; Tapestry3N; Tapestry3W; Tapestry4N; Tapestry4W; Tapestry5N; Tapestry5W; Tapestry6N; Tapestry6W)
|
|
||||||
+ Broken (RuinedFallenChairA; RuinedArmoire; RuinedBookcase; RuinedBooks; CoveredChair; RuinedFallenChairB; RuinedChair; RuinedClock; RuinedDrawers; RuinedPainting; WoodDebris)
|
|
||||||
+ Rares (Rope; IronWire; SilverWire; GoldWire; CopperWire; Whip; PaintsAndBrush)
|
|
||||||
+ Doors (BaseDoor)
|
|
||||||
+ Floors (BaseFloor)
|
|
||||||
+ Containers (Container)
|
|
||||||
+ Furniture (WoodenBench; FancyWoodenChairCushion; WoodenChairCushion; WoodenChair; BambooChair; Stool; FootStool; Throne; WoodenThrone; LargeTable; Nightstand; YewWoodTable; WritingTable; Easel; TallMusicStand; ShortMusicStand)
|
|
||||||
+ Chairs (WoodenBench; FancyWoodenChairCushion; WoodenChairCushion; WoodenChair; BambooChair; Stool; FootStool; Throne; WoodenThrone)
|
|
||||||
+ Tables (LargeTable; Nightstand; YewWoodTable; WritingTable)
|
|
||||||
+ Other (Easel; TallMusicStand; ShortMusicStand)
|
|
||||||
+ Lights (BaseLight)
|
|
||||||
+ Food & Drink (Food; CookableFood; BaseBeverage; Glass)
|
|
||||||
+ Ready to eat (Food)
|
|
||||||
+ Needs cooking (CookableFood)
|
|
||||||
+ Beverages (BaseBeverage; Glass)
|
|
||||||
+ Cartography (MapItem)
|
|
||||||
+ Hair (Hair; Beard)
|
|
||||||
+ Stonecraft (Vase; LargeVase; StatueSouth; StatueNorth; StatueEast; StatuePegasus; StoneChair)
|
|
||||||
+ Glassblowing (SmallFlask; MediumFlask; LargeFlask; CurvedFlask; LongFlask; SpinningHourglass; GreenBottle; RedBottle; SmallBrownBottle; SmallVioletBottle; TinyYellowBottle; SmallBlueFlask; SmallYellowFlask; SmallRedFlask; SmallEmptyFlask; YellowBeaker; RedBeaker; BlueBeaker; GreenBeaker; EmptyCurvedFlaskW; RedCurvedFlask; LtBlueCurvedFlask; EmptyCurvedFlaskE; BlueCurvedFlask; GreenCurvedFlask; RedRibbedFlask; VioletRibbedFlask; EmptyRibbedFlask; LargeYellowFlask; LargeVioletFlask; LargeEmptyFlask; AniRedRibbedFlask; AniLargeVioletFlask; AniSmallBlueFlask; SmallBlueBottle; SmallGreenBottle; EmptyVIalsWRack; FullVialsWRack; EmptyJar; FullJar; HalfEmptyJar; VioletStemmedBottle; EmptyJars3; EmptyJars4; FullJars3; FullJars4; EmptyJars2; FullJars2; HalfEmptyJars2; EmptyVial; HourglassAni; Hourglass; TinyRedBottle; SmallGreenBottle2; Glass)
|
|
||||||
+ Pots & Plants (SmallEmptyPot; LargeEmptyPot; PottedCactus; PottedCactus1; PottedCactus2; PottedCactus3; PottedCactus4; PottedCactus5; PottedPlant; PottedPlant1; PottedPlant2; PottedTree; PottedTree1)
|
|
||||||
+ Components (BarrelLid; BarrelStaves; BarrelHoops; BarrelTap; Gears; Springs; Hinge; Axle; AxleGears; SextantParts; ClockParts; ClockFrame; Clock; ClockRight; ClockLeft)
|
|
||||||
+ Tools (BaseTool; BaseHarvestTool)
|
|
||||||
+ Crafting (BaseTool)
|
|
||||||
+ Harvesting (BaseHarvestTool)
|
|
||||||
+ Traps (BaseTrap)
|
|
||||||
+ Gems (Amber; Amethyst; Citrine; Diamond; Emerald; Ruby; Sapphire; StarSapphire; Tourmaline)
|
|
||||||
+ Boats (BaseBoat; BaseBoatDeed)
|
|
||||||
+ Constructed (BaseBoat)
|
|
||||||
+ Deeds (BaseBoatDeed)
|
|
||||||
+ House Deeds (HouseDeed; HousePlacementTool)
|
|
||||||
+ Camps (BaseCamp)
|
|
||||||
+ Magical (Spellbook; SpellScroll; BlankScroll; BasePotion; EtherealMount)
|
|
||||||
+ Scrolls (SpellScroll; BlankScroll)
|
|
||||||
+ Necromancy (AnimateDeadScroll; BloodOathScroll; CorpseSkinScroll; CurseWeaponScroll; EvilOmenScroll; HorrificBeastScroll; LichFormScroll; MindRotScroll; PainSpikeScroll; PoisonStrikeScroll; StrangleScroll; SummonFamiliarScroll; VampiricEmbraceScroll; VengefulSpiritScroll; WitherScroll; WraithFormScroll)
|
|
||||||
+ Standard (SpellScroll)
|
|
||||||
+ Circle #1 (ClumsyScroll; CreateFoodScroll; FeeblemindScroll; HealScroll; MagicArrowScroll; NightSightScroll; ReactiveArmorScroll; WeakenScroll)
|
|
||||||
+ Circle #2 (AgilityScroll; CunningScroll; CureScroll; HarmScroll; MagicTrapScroll; MagicUnTrapScroll; ProtectionScroll; StrengthScroll)
|
|
||||||
+ Circle #3 (BlessScroll; FireballScroll; MagicLockScroll; PoisonScroll; TelekinesisScroll; TeleportScroll; UnlockScroll; WallOfStoneScroll)
|
|
||||||
+ Circle #4 (ArchCureScroll; ArchProtectionScroll; CurseScroll; FireFieldScroll; GreaterHealScroll; LightningScroll; ManaDrainScroll; RecallScroll)
|
|
||||||
+ Circle #5 (BladeSpiritsScroll; DispelFieldScroll; IncognitoScroll; MagicReflectScroll; MindBlastScroll; ParalyzeScroll; PoisonFieldScroll; SummonCreatureScroll)
|
|
||||||
+ Circle #6 (DispelScroll; EnergyBoltScroll; ExplosionScroll; InvisibilityScroll; MarkScroll; MassCurseScroll; ParalyzeFieldScroll; RevealScroll)
|
|
||||||
+ Circle #7 (ChainLightningScroll; EnergyFieldScroll; FlamestrikeScroll; GateTravelScroll; ManaVampireScroll; MassDispelScroll; MeteorSwarmScroll; PolymorphScroll)
|
|
||||||
+ Circle #8 (EarthquakeScroll; EnergyVortexScroll; ResurrectionScroll; SummonAirElementalScroll; SummonDaemonScroll; SummonEarthElementalScroll; SummonFireElementalScroll; SummonWaterElementalScroll)
|
|
||||||
+ Potions (BasePotion)
|
|
||||||
+ Agility (BaseAgilityPotion)
|
|
||||||
+ Cure (BaseCurePotion)
|
|
||||||
+ Explosion (BaseExplosionPotion)
|
|
||||||
+ Heal (BaseHealPotion)
|
|
||||||
+ Poison (BasePoisonPotion)
|
|
||||||
+ Refresh (BaseRefreshPotion)
|
|
||||||
+ Strength (BaseStrengthPotion)
|
|
||||||
+ Ethereal Mounts (EtherealMount)
|
|
||||||
+ Uncategorized (Item)
|
|
||||||
508
Distribution/Data/items.json
Normal file
508
Distribution/Data/items.json
Normal file
|
|
@ -0,0 +1,508 @@
|
||||||
|
[
|
||||||
|
{ "category": "Items", "types": ["Item"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Bods & Rewards",
|
||||||
|
"types": [
|
||||||
|
"SmallBOD", "LargeBOD", "BulkOrderBook", "SturdyPickaxe", "SturdyShovel", "BaseGlovesOfMining",
|
||||||
|
"GargoylesPickaxe", "ProspectorsTool", "PowderOfTemperament", "ColoredAnvil", "RunicHammer",
|
||||||
|
"AncientSmithyHammer", "SmallStretchedHideEastDeed", "SmallStretchedHideEastAddon",
|
||||||
|
"SmallStretchedHideSouthDeed", "SmallStretchedHideSouthAddon", "MediumStretchedHideEastDeed",
|
||||||
|
"MediumStretchedHideEastAddon", "MediumStretchedHideSouthDeed", "MediumStretchedHideSouthAddon",
|
||||||
|
"LightFlowerTapestryEastDeed", "LightFlowerTapestryEastAddon", "LightFlowerTapestrySouthDeed",
|
||||||
|
"LightFlowerTapestrySouthAddon", "DarkFlowerTapestryEastDeed", "DarkFlowerTapestryEastAddon",
|
||||||
|
"DarkFlowerTapestrySouthDeed", "DarkFlowerTapestrySouthAddon", "BrownBearRugEastDeed",
|
||||||
|
"BrownBearRugEastAddon", "BrownBearRugSouthDeed", "BrownBearRugSouthAddon", "PolarBearRugEastDeed",
|
||||||
|
"PolarBearRugEastAddon", "PolarBearRugSouthDeed", "PolarBearRugSouthAddon", "ClothingBlessDeed",
|
||||||
|
"RunicSewingKit"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Bods & Rewards.Smithing",
|
||||||
|
"types": [
|
||||||
|
"SmallSmithBOD", "LargeSmithBOD", "SturdyPickaxe", "SturdyShovel", "BaseGlovesOfMining",
|
||||||
|
"GargoylesPickaxe", "ProspectorsTool", "PowderOfTemperament", "ColoredAnvil", "RunicHammer",
|
||||||
|
"AncientSmithyHammer"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Bods & Rewards.Tailoring",
|
||||||
|
"types": [
|
||||||
|
"SmallTailorBOD", "LargeTailorBOD", "SmallStretchedHideEastDeed", "SmallStretchedHideEastAddon",
|
||||||
|
"SmallStretchedHideSouthDeed", "SmallStretchedHideSouthAddon", "MediumStretchedHideEastDeed",
|
||||||
|
"MediumStretchedHideEastAddon", "MediumStretchedHideSouthDeed", "MediumStretchedHideSouthAddon",
|
||||||
|
"LightFlowerTapestryEastDeed", "LightFlowerTapestryEastAddon", "LightFlowerTapestrySouthDeed",
|
||||||
|
"LightFlowerTapestrySouthAddon", "DarkFlowerTapestryEastDeed", "DarkFlowerTapestryEastAddon",
|
||||||
|
"DarkFlowerTapestrySouthDeed", "DarkFlowerTapestrySouthAddon", "BrownBearRugEastDeed",
|
||||||
|
"BrownBearRugEastAddon", "BrownBearRugSouthDeed", "BrownBearRugSouthAddon", "PolarBearRugEastDeed",
|
||||||
|
"PolarBearRugEastAddon", "PolarBearRugSouthDeed", "PolarBearRugSouthAddon", "ClothingBlessDeed",
|
||||||
|
"RunicSewingKit"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Bods & Rewards.Tailoring.Addons", "types": ["BaseAddon", "BaseAddonDeed"] },
|
||||||
|
{ "category": "Items.Bods & Rewards.Tailoring.Addons.Constructed", "types": ["BaseAddon"] },
|
||||||
|
{ "category": "Items.Bods & Rewards.Tailoring.Addons.Deeds", "types": ["BaseAddonDeed"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Wearables",
|
||||||
|
"types": ["BaseArmor", "BaseClothing", "BaseSuit", "BaseJewel", "BaseWeapon"]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Wearables.Armor", "types": ["BaseArmor"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Wearables.Armor.Artifacts",
|
||||||
|
"types": [
|
||||||
|
"ArmorOfFortune", "GauntletsOfNobility", "HelmOfInsight", "HolyKnightsBreastplate",
|
||||||
|
"InquisitorsResolution", "JackalsCollar", "LeggingsOfBane", "MidnightBracers",
|
||||||
|
"OrnateCrownOfTheHarrower", "ShadowDancerLeggings", "TunicOfFire", "VoiceOfTheFallenKing"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Wearables.Armor.Bone",
|
||||||
|
"types": ["BoneArms", "BoneChest", "BoneGloves", "BoneLegs", "BoneHelm"]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Wearables.Armor.Chain", "types": ["ChainChest", "ChainLegs", "ChainCoif"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Wearables.Armor.Daemon Bone",
|
||||||
|
"types": ["DaemonArms", "DaemonChest", "DaemonGloves", "DaemonLegs", "DaemonHelm"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Wearables.Armor.Dragon",
|
||||||
|
"types": ["DragonArms", "DragonChest", "DragonGloves", "DragonLegs", "DragonHelm"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Wearables.Armor.Helmets",
|
||||||
|
"types": ["Bascinet", "CloseHelm", "Helmet", "NorseHelm", "OrcHelm"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Wearables.Armor.Leather",
|
||||||
|
"types": [
|
||||||
|
"FemaleLeatherChest", "LeatherArms", "LeatherBustierArms", "LeatherChest", "LeatherGloves",
|
||||||
|
"LeatherGorget", "LeatherLegs", "LeatherShorts", "LeatherSkirt", "LeatherCap"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Wearables.Armor.Plate",
|
||||||
|
"types": [
|
||||||
|
"FemalePlateChest", "PlateArms", "PlateChest", "PlateGloves", "PlateGorget", "PlateLegs",
|
||||||
|
"PlateHelm"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Wearables.Armor.Ranger",
|
||||||
|
"types": ["RangerArms", "RangerChest", "RangerGloves", "RangerGorget", "RangerLegs"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Wearables.Armor.Ring",
|
||||||
|
"types": ["RingmailArms", "RingmailChest", "RingmailGloves", "RingmailLegs"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Wearables.Armor.Studded Leather",
|
||||||
|
"types": [
|
||||||
|
"FemaleStuddedChest", "StuddedArms", "StuddedBustierArms", "StuddedChest", "StuddedGloves",
|
||||||
|
"StuddedGorget", "StuddedLegs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Wearables.Armor.Shields", "types": ["BaseShield"] },
|
||||||
|
{ "category": "Items.Wearables.Armor.Shields.Artifacts", "types": ["Aegis", "ArcaneShield"] },
|
||||||
|
{ "category": "Items.Wearables.Weapons", "types": ["BaseWeapon"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Wearables.Weapons.Artifacts",
|
||||||
|
"types": [
|
||||||
|
"AxeOfTheHeavens", "BladeOfInsanity", "BladeOfTheRighteous", "BoneCrusher", "BreathOfTheDead",
|
||||||
|
"Frostbringer", "LegacyOfTheDreadLord", "SerpentsFang", "StaffOfTheMagi", "TheBeserkersMaul",
|
||||||
|
"TheDragonSlayer", "TheTaskmaster", "TitansHammer", "ZyronicClaw"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Wearables.Weapons.Wands", "types": ["BaseWand"] },
|
||||||
|
{ "category": "Items.Wearables.Weapons.Axes", "types": ["BaseAxe"] },
|
||||||
|
{ "category": "Items.Wearables.Weapons.Knives", "types": ["BaseKnife"] },
|
||||||
|
{ "category": "Items.Wearables.Weapons.Bashing", "types": ["BaseBashing"] },
|
||||||
|
{ "category": "Items.Wearables.Weapons.Pole Arms", "types": ["BasePoleArm"] },
|
||||||
|
{ "category": "Items.Wearables.Weapons.Ranged", "types": ["BaseRanged"] },
|
||||||
|
{ "category": "Items.Wearables.Weapons.Spears", "types": ["BaseSpear"] },
|
||||||
|
{ "category": "Items.Wearables.Weapons.Staves", "types": ["BaseStaff"] },
|
||||||
|
{ "category": "Items.Wearables.Weapons.Swords", "types": ["BaseSword"] },
|
||||||
|
{ "category": "Items.Wearables.Clothing", "types": ["BaseClothing"] },
|
||||||
|
{ "category": "Items.Wearables.Clothing.Cloaks", "types": ["BaseCloak"] },
|
||||||
|
{ "category": "Items.Wearables.Clothing.Hats", "types": ["BaseHat"] },
|
||||||
|
{ "category": "Items.Wearables.Clothing.Robes", "types": ["BaseOuterTorso"] },
|
||||||
|
{ "category": "Items.Wearables.Clothing.Shirts", "types": ["BaseShirt"] },
|
||||||
|
{ "category": "Items.Wearables.Clothing.Pants", "types": ["BasePants", "BaseOuterLegs"] },
|
||||||
|
{ "category": "Items.Wearables.Clothing.Shoes", "types": ["BaseShoes"] },
|
||||||
|
{ "category": "Items.Wearables.Clothing.Misc", "types": ["BaseWaist", "BaseMiddleTorso"] },
|
||||||
|
{ "category": "Items.Wearables.Jewelry", "types": ["BaseJewel"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Wearables.Jewelry.Artifacts",
|
||||||
|
"types": ["BraceletOfHealth", "OrnamentOfTheMagician", "RingOfTheElements", "RingOfTheVile"]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Wearables.Suits", "types": ["BaseSuit"] },
|
||||||
|
{ "category": "Items.Addons", "types": ["BaseAddonDeed", "BaseAddon"] },
|
||||||
|
{ "category": "Items.Addons.Constructed", "types": ["BaseAddon"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Addons.Constructed.Smithing",
|
||||||
|
"types": [
|
||||||
|
"LargeForgeEastAddon", "LargeForgeSouthAddon", "SmallForgeAddon", "AnvilEastAddon",
|
||||||
|
"AnvilSouthAddon"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Addons.Constructed.Tailoring",
|
||||||
|
"types": ["LoomEastAddon", "LoomSouthAddon", "SpinningWheelEastAddon", "SpinningWheelSouthAddon"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Addons.Constructed.Cooking",
|
||||||
|
"types": ["FlourMillEastAddon", "FlourMillSouthAddon", "StoneOvenEastAddon", "StoneOvenSouthAddon"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Addons.Constructed.Bedding",
|
||||||
|
"types": ["LargeBedEastAddon", "LargeBedSouthAddon", "SmallBedSouthAddon", "SmallBedEastAddon"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Addons.Constructed.Training",
|
||||||
|
"types": [
|
||||||
|
"TrainingDummyEastAddon", "TrainingDummySouthAddon", "PickpocketDipEastAddon",
|
||||||
|
"PickpocketDipSouthAddon", "ArcheryButteAddon"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Addons.Constructed.Spiritual",
|
||||||
|
"types": ["PentagramAddon", "BloodPentagram", "AbbatoirAddon"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Addons.Constructed.Furniture",
|
||||||
|
"types": [
|
||||||
|
"LargeStoneTableEastAddon", "LargeStoneTableSouthAddon", "MediumStoneTableEastAddon",
|
||||||
|
"MediumStoneTableSouthAddon"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Addons.Constructed.Misc", "types": ["BaseAddon"] },
|
||||||
|
{ "category": "Items.Addons.Deeds", "types": ["BaseAddonDeed"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Addons.Deeds.Smithing",
|
||||||
|
"types": ["LargeForgeEastDeed", "LargeForgeSouthDeed", "SmallForgeDeed", "AnvilEastDeed", "AnvilSouthDeed"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Addons.Deeds.Tailoring",
|
||||||
|
"types": ["LoomEastDeed", "LoomSouthDeed", "SpinningWheelEastDeed", "SpinningWheelSouthDeed"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Addons.Deeds.Cooking",
|
||||||
|
"types": ["FlourMillEastDeed", "FlourMillSouthDeed", "StoneOvenEastDeed", "StoneOvenSouthDeed"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Addons.Deeds.Bedding",
|
||||||
|
"types": ["LargeBedEastDeed", "LargeBedSouthDeed", "SmallBedEastDeed", "SmallBedSouthDeed"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Addons.Deeds.Training",
|
||||||
|
"types": [
|
||||||
|
"TrainingDummyEastDeed", "TrainingDummySouthDeed", "PickpocketDipEastDeed", "PickpocketDipSouthDeed",
|
||||||
|
"ArcheryButteDeed"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Addons.Deeds.Spiritual", "types": ["PentagramDeed", "AbbatoirDeed"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Addons.Deeds.Furniture",
|
||||||
|
"types": [
|
||||||
|
"LargeStoneTableEastDeed", "LargeStoneTableSouthDeed", "MediumStoneTableEastDeed",
|
||||||
|
"MediumStoneTableSouthDeed"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Addons.Deeds.Misc", "types": ["BaseAddonDeed"] },
|
||||||
|
{ "category": "Items.Books", "types": ["BaseBook"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Resources",
|
||||||
|
"types": [
|
||||||
|
"BaseIngot", "BaseOre", "BaseGranite", "BaseScales", "BaseReagent", "BaseHides", "BaseLeather",
|
||||||
|
"Log", "Board", "BaseClothMaterial", "Bone", "UncutCloth", "BoltOfCloth", "Cloth", "Wool", "Flax",
|
||||||
|
"Cotton", "BagOfAllReagents", "BagOfNecroReagents", "BagOfReagents", "AlchemyBag", "BagOfIngots",
|
||||||
|
"ScribeBag", "SmithBag", "TailorBag", "Fish", "BigFish", "BaseMagicFish", "Arrow", "Bolt", "Feather",
|
||||||
|
"Shaft", "AlchemyStone", "IngotStone", "RegStone", "ScribeStone", "SmithStone", "TailorStone",
|
||||||
|
"Sand"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Resources.Ingots", "types": ["BaseIngot"] },
|
||||||
|
{ "category": "Items.Resources.Ore", "types": ["BaseOre"] },
|
||||||
|
{ "category": "Items.Resources.Granite", "types": ["BaseGranite"] },
|
||||||
|
{ "category": "Items.Resources.Scales", "types": ["BaseScales"] },
|
||||||
|
{ "category": "Items.Resources.Reagents", "types": ["BaseReagent"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Resources.Reagents.Standard",
|
||||||
|
"types": [
|
||||||
|
"BlackPearl", "Bloodmoss", "Garlic", "Ginseng", "MandrakeRoot", "Nightshade", "SpidersSilk",
|
||||||
|
"SulfurousAsh"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Resources.Reagents.Necromancy",
|
||||||
|
"types": ["BatWing", "DaemonBlood", "GraveDust", "NoxCrystal", "PigIron"]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Resources.Wood", "types": ["Log", "Board"] },
|
||||||
|
{ "category": "Items.Resources.Fish", "types": ["Fish", "BigFish", "BaseMagicFish"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Resources.Tailoring",
|
||||||
|
"types": [
|
||||||
|
"BaseHides", "BaseLeather", "BaseClothMaterial", "Bone", "BoltOfCloth", "Cloth", "UncutCloth",
|
||||||
|
"Wool", "Flax", "Cotton"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Resources.Tailoring.Hides", "types": ["BaseHides"] },
|
||||||
|
{ "category": "Items.Resources.Tailoring.Leather", "types": ["BaseLeather"] },
|
||||||
|
{ "category": "Items.Resources.Tailoring.Cloth", "types": ["BoltOfCloth", "Cloth", "UncutCloth"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Resources.Tailoring.Materials",
|
||||||
|
"types": ["BaseClothMaterial", "Wool", "Flax", "Cotton"]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Resources.Fletching", "types": ["Arrow", "Bolt", "Feather", "Shaft"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Resources.Bags",
|
||||||
|
"types": [
|
||||||
|
"BagOfAllReagents", "BagOfNecroReagents", "BagOfReagents", "AlchemyBag", "BagOfIngots", "ScribeBag",
|
||||||
|
"SmithBag", "TailorBag"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Resources.Stones",
|
||||||
|
"types": ["AlchemyStone", "IngotStone", "RegStone", "ScribeStone", "SmithStone", "TailorStone"]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Entertainment", "types": ["BaseInstrument", "BaseBoard", "Dices"] },
|
||||||
|
{ "category": "Items.Entertainment.Instruments", "types": ["BaseInstrument"] },
|
||||||
|
{ "category": "Items.Entertainment.Games", "types": ["BaseBoard", "Dices"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Construction",
|
||||||
|
"types": [
|
||||||
|
"BaseDoor", "BaseFloor", "Container", "DecorativeShield1", "DecorativeShield2", "DecorativeShield3",
|
||||||
|
"DecorativeShield4", "DecorativeShield5", "DecorativeShield6", "DecorativeShield7",
|
||||||
|
"DecorativeShield8", "DecorativeShield9", "DecorativeShield10", "DecorativeShield11",
|
||||||
|
"DecorativeShieldSword1North", "DecorativeShieldSword1West", "DecorativeShieldSword2North",
|
||||||
|
"DecorativeShieldSword2West", "DecorativeBowWest", "DecorativeBowNorth", "DecorativeAxeNorth",
|
||||||
|
"DecorativeAxeWest", "DecorativeSwordNorth", "DecorativeSwordWest", "DecorativeDAxeNorth",
|
||||||
|
"DecorativeDAxeWest", "LargePainting", "WomanPortrait1", "WomanPortrait2", "ManPortrait1",
|
||||||
|
"ManPortrait2", "LadyPortrait1", "LadyPortrait2", "Tapestry1N", "Tapestry2N", "Tapestry2W",
|
||||||
|
"Tapestry3N", "Tapestry3W", "Tapestry4N", "Tapestry4W", "Tapestry5N", "Tapestry5W", "Tapestry6N",
|
||||||
|
"Tapestry6W", "RuinedFallenChairA", "RuinedArmoire", "RuinedBookcase", "RuinedBooks", "CoveredChair",
|
||||||
|
"RuinedFallenChairB", "RuinedChair", "RuinedClock", "RuinedDrawers", "RuinedPainting", "WoodDebris",
|
||||||
|
"Rope", "IronWire", "SilverWire", "GoldWire", "CopperWire", "Whip", "PaintsAndBrush", "WoodenBench",
|
||||||
|
"FancyWoodenChairCushion", "WoodenChairCushion", "WoodenChair", "BambooChair", "Stool", "FootStool",
|
||||||
|
"Throne", "WoodenThrone", "LargeTable", "Nightstand", "YewWoodTable", "WritingTable", "Easel",
|
||||||
|
"TallMusicStand", "ShortMusicStand"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Construction.Decoration",
|
||||||
|
"types": [
|
||||||
|
"DecorativeShield1", "DecorativeShield2", "DecorativeShield3", "DecorativeShield4",
|
||||||
|
"DecorativeShield5", "DecorativeShield6", "DecorativeShield7", "DecorativeShield8",
|
||||||
|
"DecorativeShield9", "DecorativeShield10", "DecorativeShield11", "DecorativeShieldSword1North",
|
||||||
|
"DecorativeShieldSword1West", "DecorativeShieldSword2North", "DecorativeShieldSword2West",
|
||||||
|
"DecorativeBowWest", "DecorativeBowNorth", "DecorativeAxeNorth", "DecorativeAxeWest",
|
||||||
|
"DecorativeSwordNorth", "DecorativeSwordWest", "DecorativeDAxeNorth", "DecorativeDAxeWest",
|
||||||
|
"LargePainting", "WomanPortrait1", "WomanPortrait2", "ManPortrait1", "ManPortrait2", "LadyPortrait1",
|
||||||
|
"LadyPortrait2", "Tapestry1N", "Tapestry2N", "Tapestry2W", "Tapestry3N", "Tapestry3W", "Tapestry4N",
|
||||||
|
"Tapestry4W", "Tapestry5N", "Tapestry5W", "Tapestry6N", "Tapestry6W"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Construction.Decoration.Shields",
|
||||||
|
"types": [
|
||||||
|
"DecorativeShield1", "DecorativeShield2", "DecorativeShield3", "DecorativeShield4",
|
||||||
|
"DecorativeShield5", "DecorativeShield6", "DecorativeShield7", "DecorativeShield8",
|
||||||
|
"DecorativeShield9", "DecorativeShield10", "DecorativeShield11", "DecorativeShieldSword1North",
|
||||||
|
"DecorativeShieldSword1West", "DecorativeShieldSword2North", "DecorativeShieldSword2West"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Construction.Decoration.Weapons",
|
||||||
|
"types": [
|
||||||
|
"DecorativeBowWest", "DecorativeBowNorth", "DecorativeAxeNorth", "DecorativeAxeWest",
|
||||||
|
"DecorativeSwordNorth", "DecorativeSwordWest", "DecorativeDAxeNorth", "DecorativeDAxeWest"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Construction.Decoration.Paintings & Portraits",
|
||||||
|
"types": [
|
||||||
|
"LargePainting", "WomanPortrait1", "WomanPortrait2", "ManPortrait1", "ManPortrait2", "LadyPortrait1",
|
||||||
|
"LadyPortrait2"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Construction.Decoration.Tapestries",
|
||||||
|
"types": [
|
||||||
|
"Tapestry1N", "Tapestry2N", "Tapestry2W", "Tapestry3N", "Tapestry3W", "Tapestry4N", "Tapestry4W",
|
||||||
|
"Tapestry5N", "Tapestry5W", "Tapestry6N", "Tapestry6W"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Construction.Broken",
|
||||||
|
"types": [
|
||||||
|
"RuinedFallenChairA", "RuinedArmoire", "RuinedBookcase", "RuinedBooks", "CoveredChair",
|
||||||
|
"RuinedFallenChairB", "RuinedChair", "RuinedClock", "RuinedDrawers", "RuinedPainting", "WoodDebris"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Construction.Rares",
|
||||||
|
"types": ["Rope", "IronWire", "SilverWire", "GoldWire", "CopperWire", "Whip", "PaintsAndBrush"]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Construction.Doors", "types": ["BaseDoor"] },
|
||||||
|
{ "category": "Items.Construction.Floors", "types": ["BaseFloor"] },
|
||||||
|
{ "category": "Items.Construction.Containers", "types": ["Container"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Construction.Furniture",
|
||||||
|
"types": [
|
||||||
|
"WoodenBench", "FancyWoodenChairCushion", "WoodenChairCushion", "WoodenChair", "BambooChair",
|
||||||
|
"Stool", "FootStool", "Throne", "WoodenThrone", "LargeTable", "Nightstand", "YewWoodTable",
|
||||||
|
"WritingTable", "Easel", "TallMusicStand", "ShortMusicStand"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Construction.Furniture.Chairs",
|
||||||
|
"types": [
|
||||||
|
"WoodenBench", "FancyWoodenChairCushion", "WoodenChairCushion", "WoodenChair", "BambooChair",
|
||||||
|
"Stool", "FootStool", "Throne", "WoodenThrone"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Construction.Furniture.Tables",
|
||||||
|
"types": ["LargeTable", "Nightstand", "YewWoodTable", "WritingTable"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Construction.Furniture.Other",
|
||||||
|
"types": ["Easel", "TallMusicStand", "ShortMusicStand"]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Lights", "types": ["BaseLight"] },
|
||||||
|
{ "category": "Items.Food & Drink", "types": ["Food", "CookableFood", "BaseBeverage", "Glass"] },
|
||||||
|
{ "category": "Items.Food & Drink.Ready to eat", "types": ["Food"] },
|
||||||
|
{ "category": "Items.Food & Drink.Needs cooking", "types": ["CookableFood"] },
|
||||||
|
{ "category": "Items.Food & Drink.Beverages", "types": ["BaseBeverage", "Glass"] },
|
||||||
|
{ "category": "Items.Cartography", "types": ["MapItem"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Stonecraft",
|
||||||
|
"types": ["Vase", "LargeVase", "StatueSouth", "StatueNorth", "StatueEast", "StatuePegasus", "StoneChair"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Glassblowing",
|
||||||
|
"types": [
|
||||||
|
"SmallFlask", "MediumFlask", "LargeFlask", "CurvedFlask", "LongFlask", "SpinningHourglass",
|
||||||
|
"GreenBottle", "RedBottle", "SmallBrownBottle", "SmallVioletBottle", "TinyYellowBottle",
|
||||||
|
"SmallBlueFlask", "SmallYellowFlask", "SmallRedFlask", "SmallEmptyFlask", "YellowBeaker",
|
||||||
|
"RedBeaker", "BlueBeaker", "GreenBeaker", "EmptyCurvedFlaskW", "RedCurvedFlask", "LtBlueCurvedFlask",
|
||||||
|
"EmptyCurvedFlaskE", "BlueCurvedFlask", "GreenCurvedFlask", "RedRibbedFlask", "VioletRibbedFlask",
|
||||||
|
"EmptyRibbedFlask", "LargeYellowFlask", "LargeVioletFlask", "LargeEmptyFlask", "AniRedRibbedFlask",
|
||||||
|
"AniLargeVioletFlask", "AniSmallBlueFlask", "SmallBlueBottle", "SmallGreenBottle", "EmptyVIalsWRack",
|
||||||
|
"FullVialsWRack", "EmptyJar", "FullJar", "HalfEmptyJar", "VioletStemmedBottle", "EmptyJars3",
|
||||||
|
"EmptyJars4", "FullJars3", "FullJars4", "EmptyJars2", "FullJars2", "HalfEmptyJars2", "EmptyVial",
|
||||||
|
"HourglassAni", "Hourglass", "TinyRedBottle", "SmallGreenBottle2", "Glass"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Pots & Plants",
|
||||||
|
"types": [
|
||||||
|
"SmallEmptyPot", "LargeEmptyPot", "PottedCactus", "PottedCactus1", "PottedCactus2", "PottedCactus3",
|
||||||
|
"PottedCactus4", "PottedCactus5", "PottedPlant", "PottedPlant1", "PottedPlant2", "PottedTree",
|
||||||
|
"PottedTree1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Components",
|
||||||
|
"types": [
|
||||||
|
"BarrelLid", "BarrelStaves", "BarrelHoops", "BarrelTap", "Gears", "Springs", "Hinge", "Axle",
|
||||||
|
"AxleGears", "SextantParts", "ClockParts", "ClockFrame", "Clock", "ClockRight", "ClockLeft"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Tools", "types": ["BaseTool", "BaseHarvestTool"] },
|
||||||
|
{ "category": "Items.Tools.Crafting", "types": ["BaseTool"] },
|
||||||
|
{ "category": "Items.Tools.Harvesting", "types": ["BaseHarvestTool"] },
|
||||||
|
{ "category": "Items.Traps", "types": ["BaseTrap"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Gems",
|
||||||
|
"types": [
|
||||||
|
"Amber", "Amethyst", "Citrine", "Diamond", "Emerald", "Ruby", "Sapphire", "StarSapphire",
|
||||||
|
"Tourmaline"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Boats", "types": ["BaseBoat", "BaseBoatDeed"] },
|
||||||
|
{ "category": "Items.Boats.Constructed", "types": ["BaseBoat"] },
|
||||||
|
{ "category": "Items.Boats.Deeds", "types": ["BaseBoatDeed"] },
|
||||||
|
{ "category": "Items.House Deeds", "types": ["HouseDeed", "HousePlacementTool"] },
|
||||||
|
{ "category": "Items.Camps", "types": ["BaseCamp"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Magical",
|
||||||
|
"types": ["Spellbook", "SpellScroll", "BlankScroll", "BasePotion", "EtherealMount"]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Magical.Scrolls", "types": ["SpellScroll", "BlankScroll"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Magical.Scrolls.Necromancy",
|
||||||
|
"types": [
|
||||||
|
"AnimateDeadScroll", "BloodOathScroll", "CorpseSkinScroll", "CurseWeaponScroll", "EvilOmenScroll",
|
||||||
|
"HorrificBeastScroll", "LichFormScroll", "MindRotScroll", "PainSpikeScroll", "PoisonStrikeScroll",
|
||||||
|
"StrangleScroll", "SummonFamiliarScroll", "VampiricEmbraceScroll", "VengefulSpiritScroll",
|
||||||
|
"WitherScroll", "WraithFormScroll"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Magical.Scrolls.Standard", "types": ["SpellScroll"] },
|
||||||
|
{
|
||||||
|
"category": "Items.Magical.Scrolls.Standard.Circle #1",
|
||||||
|
"types": [
|
||||||
|
"ClumsyScroll", "CreateFoodScroll", "FeeblemindScroll", "HealScroll", "MagicArrowScroll",
|
||||||
|
"NightSightScroll", "ReactiveArmorScroll", "WeakenScroll"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Magical.Scrolls.Standard.Circle #2",
|
||||||
|
"types": [
|
||||||
|
"AgilityScroll", "CunningScroll", "CureScroll", "HarmScroll", "MagicTrapScroll", "MagicUnTrapScroll",
|
||||||
|
"ProtectionScroll", "StrengthScroll"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Magical.Scrolls.Standard.Circle #3",
|
||||||
|
"types": [
|
||||||
|
"BlessScroll", "FireballScroll", "MagicLockScroll", "PoisonScroll", "TelekinesisScroll",
|
||||||
|
"TeleportScroll", "UnlockScroll", "WallOfStoneScroll"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Magical.Scrolls.Standard.Circle #4",
|
||||||
|
"types": [
|
||||||
|
"ArchCureScroll", "ArchProtectionScroll", "CurseScroll", "FireFieldScroll", "GreaterHealScroll",
|
||||||
|
"LightningScroll", "ManaDrainScroll", "RecallScroll"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Magical.Scrolls.Standard.Circle #5",
|
||||||
|
"types": [
|
||||||
|
"BladeSpiritsScroll", "DispelFieldScroll", "IncognitoScroll", "MagicReflectScroll",
|
||||||
|
"MindBlastScroll", "ParalyzeScroll", "PoisonFieldScroll", "SummonCreatureScroll"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Magical.Scrolls.Standard.Circle #6",
|
||||||
|
"types": [
|
||||||
|
"DispelScroll", "EnergyBoltScroll", "ExplosionScroll", "InvisibilityScroll", "MarkScroll",
|
||||||
|
"MassCurseScroll", "ParalyzeFieldScroll", "RevealScroll"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Magical.Scrolls.Standard.Circle #7",
|
||||||
|
"types": [
|
||||||
|
"ChainLightningScroll", "EnergyFieldScroll", "FlamestrikeScroll", "GateTravelScroll",
|
||||||
|
"ManaVampireScroll", "MassDispelScroll", "MeteorSwarmScroll", "PolymorphScroll"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Items.Magical.Scrolls.Standard.Circle #8",
|
||||||
|
"types": [
|
||||||
|
"EarthquakeScroll", "EnergyVortexScroll", "ResurrectionScroll", "SummonAirElementalScroll",
|
||||||
|
"SummonDaemonScroll", "SummonEarthElementalScroll", "SummonFireElementalScroll",
|
||||||
|
"SummonWaterElementalScroll"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "category": "Items.Magical.Potions", "types": ["BasePotion"] },
|
||||||
|
{ "category": "Items.Magical.Potions.Agility", "types": ["BaseAgilityPotion"] },
|
||||||
|
{ "category": "Items.Magical.Potions.Cure", "types": ["BaseCurePotion"] },
|
||||||
|
{ "category": "Items.Magical.Potions.Explosion", "types": ["BaseExplosionPotion"] },
|
||||||
|
{ "category": "Items.Magical.Potions.Heal", "types": ["BaseHealPotion"] },
|
||||||
|
{ "category": "Items.Magical.Potions.Poison", "types": ["BasePoisonPotion"] },
|
||||||
|
{ "category": "Items.Magical.Potions.Refresh", "types": ["BaseRefreshPotion"] },
|
||||||
|
{ "category": "Items.Magical.Potions.Strength", "types": ["BaseStrengthPotion"] },
|
||||||
|
{ "category": "Items.Magical.Ethereal Mounts", "types": ["EtherealMount"] },
|
||||||
|
{ "category": "Items.Uncategorized", "types": ["Item"] }
|
||||||
|
]
|
||||||
|
|
@ -1,58 +0,0 @@
|
||||||
Mobiles (Mobile)
|
|
||||||
+ Healers (BaseHealer)
|
|
||||||
+ Champions (BaseChampion; Harrower; Silvani; HarrowerTentacles)
|
|
||||||
+ Guards (BaseGuard; BaseShieldGuard)
|
|
||||||
+ Escortables (BaseEscortable)
|
|
||||||
+ Vendors (BaseVendor)
|
|
||||||
+ Guildmasters (BaseGuildmaster)
|
|
||||||
+ Dummies (DummyMace; DummyFence; DummySword; DummyNox; DummyStun; DummySuper; DummyHealer; DummyAssassin; DummyTheif)
|
|
||||||
+ Creatures (BaseCreature)
|
|
||||||
+ Animals (Gorilla; Walrus; Alligator; Llama; PackLlama; PackHorse; BullFrog; GiantToad; Hind; GreatHart; DireWolf; GreyWolf; TimberWolf; WhiteWolf; HellHound; Dog; GrizzlyBear; PolarBear; BlackBear; BrownBear; Bull; Cow; Bird; Eagle; Chicken; Boar; Pig; Rabbit; JackRabbit; Rat; SewerRat; GiantRat; Goat; MountainGoat; Sheep; Panther; PredatorHellCat; HellCat; SnowLeopard; Cougar; Cat; BaseMount)
|
|
||||||
+ Mounts (BaseMount)
|
|
||||||
+ War Horses (BaseWarHorse)
|
|
||||||
+ Birds & Fowl (Bird; Eagle; Chicken)
|
|
||||||
+ Bovines (Bull; Cow)
|
|
||||||
+ Bruins (GrizzlyBear; PolarBear; BlackBear; BrownBear)
|
|
||||||
+ Canines (DireWolf; GreyWolf; TimberWolf; WhiteWolf; HellHound; Dog)
|
|
||||||
+ Deer (Hind; GreatHart)
|
|
||||||
+ Felines (Panther; PredatorHellCat; HellCat; SnowLeopard; Cougar; Cat)
|
|
||||||
+ Frogs & Toads (BullFrog; GiantToad)
|
|
||||||
+ Lizards (Alligator)
|
|
||||||
+ Llamas & Pack Animals (Llama; PackLlama; PackHorse)
|
|
||||||
+ Rodents (Rabbit; JackRabbit; Rat; SewerRat; GiantRat)
|
|
||||||
+ Porcines (Boar; Pig)
|
|
||||||
+ Ruminants (Goat; MountainGoat; Sheep)
|
|
||||||
+ Uncategorized (Gorilla; Walrus)
|
|
||||||
+ Ants (RedSolenWorker; RedSolenWarrior; RedSolenQueen; RedSolenInfiltratorQueen; RedSolenInfiltratorWarrior; BlackSolenWorker; BlackSolenWarrior; BlackSolenQueen; BlackSolenInfiltratorQueen; BlackSolenInfiltratorWarrior)
|
|
||||||
+ Red (RedSolenWorker; RedSolenWarrior; RedSolenQueen; RedSolenInfiltratorQueen; RedSolenInfiltratorWarrior)
|
|
||||||
+ Black (BlackSolenWorker; BlackSolenWarrior; BlackSolenQueen; BlackSolenInfiltratorQueen; BlackSolenInfiltratorWarrior)
|
|
||||||
+ Elementals (DullCopperElemental; ShadowIronElemental; CopperElemental; BronzeElemental; GoldenElemental; AgapiteElemental; VeriteElemental; ValoriteElemental; AirElemental; BloodElemental; FireElemental; IceElemental; WaterElemental; PoisonElemental; ToxicElemental; EarthElemental; SnowElemental)
|
|
||||||
+ Ore Elementals (DullCopperElemental; ShadowIronElemental; CopperElemental; BronzeElemental; GoldenElemental; AgapiteElemental; VeriteElemental; ValoriteElemental)
|
|
||||||
+ Marine (Dolphin; SeaSerpent; DeepSeaSerpent)
|
|
||||||
+ Good (Pixie; Wisp; EtherealWarrior; Centaur)
|
|
||||||
+ Evil (BaseCreature)
|
|
||||||
+ Age of Shadows (FleshGolem; Gibberling; GoreFiend; Ravager; SkitteringHopper; Treefellow; VampireBat; WailingBanshee; AbysmalHorror; BoneDemon; CrystalElemental; DarknightCreeper; DemonKnight; Devourer; FleshRenderer; Impaler; MoundOfMaggots; PatchworkSkeleton; ShadowKnight; WandererOfTheVoid; ChaosDaemon; HordeMinion)
|
|
||||||
+ Daemons (IceFiend; Balron; Daemon)
|
|
||||||
+ Dragons & Wyrms (Dragon; WhiteWyrm; SerpentineDragon; AncientWyrm; ShadowWyrm; SkeletalDragon; Drake; Wyvern)
|
|
||||||
+ Gargoyles (Gargoyle; FireGargoyle; StoneGargoyle)
|
|
||||||
+ Harpies (Harpy; StoneHarpy)
|
|
||||||
+ Humans (EvilMage; EvilMageLord; Betrayer; Brigand; Executioner; Guardian; KhaldunSummoner; KhaldunZealot)
|
|
||||||
+ Lizards (LavaLizard; Lizardman)
|
|
||||||
+ Mongbats, Imps, & Headless Ones (Mongbat; StrongMongbat; Imp; HeadlessOne)
|
|
||||||
+ Ogres, Ettins, Trolls, Cyclopses, & Titans (Titan; Cyclops; Ettin; FrostTroll; Ogre; Troll; ArcticOgreLord; OgreLord)
|
|
||||||
+ Ophidians (OphidianMage; OphidianArchmage; OphidianMatriarch; OphidianWarrior; OphidianKnight)
|
|
||||||
+ Orcs (OrcishMage; Orc; OrcishLord; OrcBomber; OrcCaptain; OrcishLord; OrcBrute)
|
|
||||||
+ Plague Beasts, Bog Things, & Slimes (Jwilson; FrostOoze; Slime; PlagueSpawn; PlagueBeast; BogThing; Bogling)
|
|
||||||
+ Plants (Corpser; Quagmire; WhippingVine; SwampTentacle; Reaper)
|
|
||||||
+ Ratmen (Ratman; RatmanArcher; RatmanMage)
|
|
||||||
+ Serpents (IceSerpent; IceSnake; LavaSerpent; LavaSnake; GiantSerpent; SilverSerpent; Snake)
|
|
||||||
+ Spiders (DreadSpider; FrostSpider; GiantSpider)
|
|
||||||
+ Terathans (TerathanMatriarch; TerathanAvenger; TerathanDrone; TerathanWarrior)
|
|
||||||
+ Undead (AncientLich; Bogle; BoneMagi; Lich; LichLord; Shade; SkeletalMage; Spectre; Wraith; BoneKnight; SkeletalKnight; Ghoul; RottingCorpse; Skeleton; Zombie; Mummy)
|
|
||||||
+ Ghosts (Bogle; Shade; Spectre; Wraith; Ghoul)
|
|
||||||
+ Skeletons (BoneMagi; SkeletalMage; BoneKnight; SkeletalKnight; Skeleton)
|
|
||||||
+ Walking Dead (RottingCorpse; Zombie; Mummy)
|
|
||||||
+ Liches (AncientLich; Lich; LichLord)
|
|
||||||
+ Vortexes & Blade Spirits (EnergyVortex; SandVortex; BladeSpirits)
|
|
||||||
+ Uncategorized (BaseCreature)
|
|
||||||
+ Uncategorized (Mobile)
|
|
||||||
197
Distribution/Data/mobiles.json
Normal file
197
Distribution/Data/mobiles.json
Normal file
|
|
@ -0,0 +1,197 @@
|
||||||
|
[
|
||||||
|
{ "category": "Mobiles", "types": ["Mobile"] },
|
||||||
|
{ "category": "Mobiles.Healers", "types": ["BaseHealer"] },
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Champions",
|
||||||
|
"types": ["BaseChampion", "Harrower", "Silvani", "HarrowerTentacles"]
|
||||||
|
},
|
||||||
|
{ "category": "Mobiles.Guards", "types": ["BaseGuard", "BaseShieldGuard"] },
|
||||||
|
{ "category": "Mobiles.Escortables", "types": ["BaseEscortable"] },
|
||||||
|
{ "category": "Mobiles.Vendors", "types": ["BaseVendor"] },
|
||||||
|
{ "category": "Mobiles.Vendors.Guildmasters", "types": ["BaseGuildmaster"] },
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Dummies",
|
||||||
|
"types": [
|
||||||
|
"DummyMace", "DummyFence", "DummySword", "DummyNox", "DummyStun", "DummySuper", "DummyHealer",
|
||||||
|
"DummyAssassin", "DummyTheif"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "category": "Mobiles.Creatures", "types": ["BaseCreature"] },
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Animals",
|
||||||
|
"types": [
|
||||||
|
"Gorilla", "Walrus", "Alligator", "Llama", "PackLlama", "PackHorse", "BullFrog", "GiantToad", "Hind",
|
||||||
|
"GreatHart", "DireWolf", "GreyWolf", "TimberWolf", "WhiteWolf", "HellHound", "Dog", "GrizzlyBear",
|
||||||
|
"PolarBear", "BlackBear", "BrownBear", "Bull", "Cow", "Bird", "Eagle", "Chicken", "Boar", "Pig",
|
||||||
|
"Rabbit", "JackRabbit", "Rat", "SewerRat", "GiantRat", "Goat", "MountainGoat", "Sheep", "Panther",
|
||||||
|
"PredatorHellCat", "HellCat", "SnowLeopard", "Cougar", "Cat", "BaseMount"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "category": "Mobiles.Creatures.Animals.Mounts", "types": ["BaseMount"] },
|
||||||
|
{ "category": "Mobiles.Creatures.Animals.Mounts.War Horses", "types": ["BaseWarHorse"] },
|
||||||
|
{ "category": "Mobiles.Creatures.Animals.Birds & Fowl", "types": ["Bird", "Eagle", "Chicken"] },
|
||||||
|
{ "category": "Mobiles.Creatures.Animals.Bovines", "types": ["Bull", "Cow"] },
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Animals.Bruins",
|
||||||
|
"types": ["GrizzlyBear", "PolarBear", "BlackBear", "BrownBear"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Animals.Canines",
|
||||||
|
"types": ["DireWolf", "GreyWolf", "TimberWolf", "WhiteWolf", "HellHound", "Dog"]
|
||||||
|
},
|
||||||
|
{ "category": "Mobiles.Creatures.Animals.Deer", "types": ["Hind", "GreatHart"] },
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Animals.Felines",
|
||||||
|
"types": ["Panther", "PredatorHellCat", "HellCat", "SnowLeopard", "Cougar", "Cat"]
|
||||||
|
},
|
||||||
|
{ "category": "Mobiles.Creatures.Animals.Frogs & Toads", "types": ["BullFrog", "GiantToad"] },
|
||||||
|
{ "category": "Mobiles.Creatures.Animals.Lizards", "types": ["Alligator"] },
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Animals.Llamas & Pack Animals",
|
||||||
|
"types": ["Llama", "PackLlama", "PackHorse"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Animals.Rodents",
|
||||||
|
"types": ["Rabbit", "JackRabbit", "Rat", "SewerRat", "GiantRat"]
|
||||||
|
},
|
||||||
|
{ "category": "Mobiles.Creatures.Animals.Porcines", "types": ["Boar", "Pig"] },
|
||||||
|
{ "category": "Mobiles.Creatures.Animals.Ruminants", "types": ["Goat", "MountainGoat", "Sheep"] },
|
||||||
|
{ "category": "Mobiles.Creatures.Animals.Uncategorized", "types": ["Gorilla", "Walrus"] },
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Ants",
|
||||||
|
"types": [
|
||||||
|
"RedSolenWorker", "RedSolenWarrior", "RedSolenQueen", "RedSolenInfiltratorQueen",
|
||||||
|
"RedSolenInfiltratorWarrior", "BlackSolenWorker", "BlackSolenWarrior", "BlackSolenQueen",
|
||||||
|
"BlackSolenInfiltratorQueen", "BlackSolenInfiltratorWarrior"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Ants.Red",
|
||||||
|
"types": [
|
||||||
|
"RedSolenWorker", "RedSolenWarrior", "RedSolenQueen", "RedSolenInfiltratorQueen",
|
||||||
|
"RedSolenInfiltratorWarrior"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Ants.Black",
|
||||||
|
"types": [
|
||||||
|
"BlackSolenWorker", "BlackSolenWarrior", "BlackSolenQueen", "BlackSolenInfiltratorQueen",
|
||||||
|
"BlackSolenInfiltratorWarrior"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Elementals",
|
||||||
|
"types": [
|
||||||
|
"DullCopperElemental", "ShadowIronElemental", "CopperElemental", "BronzeElemental",
|
||||||
|
"GoldenElemental", "AgapiteElemental", "VeriteElemental", "ValoriteElemental", "AirElemental",
|
||||||
|
"BloodElemental", "FireElemental", "IceElemental", "WaterElemental", "PoisonElemental",
|
||||||
|
"ToxicElemental", "EarthElemental", "SnowElemental"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Elementals.Ore Elementals",
|
||||||
|
"types": [
|
||||||
|
"DullCopperElemental", "ShadowIronElemental", "CopperElemental", "BronzeElemental",
|
||||||
|
"GoldenElemental", "AgapiteElemental", "VeriteElemental", "ValoriteElemental"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "category": "Mobiles.Creatures.Marine", "types": ["Dolphin", "SeaSerpent", "DeepSeaSerpent"] },
|
||||||
|
{ "category": "Mobiles.Creatures.Good", "types": ["Pixie", "Wisp", "EtherealWarrior", "Centaur"] },
|
||||||
|
{ "category": "Mobiles.Creatures.Evil", "types": ["BaseCreature"] },
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Evil.Age of Shadows",
|
||||||
|
"types": [
|
||||||
|
"FleshGolem", "Gibberling", "GoreFiend", "Ravager", "SkitteringHopper", "Treefellow", "VampireBat",
|
||||||
|
"WailingBanshee", "AbysmalHorror", "BoneDemon", "CrystalElemental", "DarknightCreeper",
|
||||||
|
"DemonKnight", "Devourer", "FleshRenderer", "Impaler", "MoundOfMaggots", "PatchworkSkeleton",
|
||||||
|
"ShadowKnight", "WandererOfTheVoid", "ChaosDaemon", "HordeMinion"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "category": "Mobiles.Creatures.Evil.Daemons", "types": ["IceFiend", "Balron", "Daemon"] },
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Evil.Dragons & Wyrms",
|
||||||
|
"types": [
|
||||||
|
"Dragon", "WhiteWyrm", "SerpentineDragon", "AncientWyrm", "ShadowWyrm", "SkeletalDragon", "Drake",
|
||||||
|
"Wyvern"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Evil.Gargoyles",
|
||||||
|
"types": ["Gargoyle", "FireGargoyle", "StoneGargoyle"]
|
||||||
|
},
|
||||||
|
{ "category": "Mobiles.Creatures.Evil.Harpies", "types": ["Harpy", "StoneHarpy"] },
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Evil.Humans",
|
||||||
|
"types": [
|
||||||
|
"EvilMage", "EvilMageLord", "Betrayer", "Brigand", "Executioner", "Guardian", "KhaldunSummoner",
|
||||||
|
"KhaldunZealot"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "category": "Mobiles.Creatures.Evil.Lizards", "types": ["LavaLizard", "Lizardman"] },
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Evil.Mongbats, Imps, & Headless Ones",
|
||||||
|
"types": ["Mongbat", "StrongMongbat", "Imp", "HeadlessOne"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Evil.Ogres, Ettins, Trolls, Cyclopses, & Titans",
|
||||||
|
"types": ["Titan", "Cyclops", "Ettin", "FrostTroll", "Ogre", "Troll", "ArcticOgreLord", "OgreLord"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Evil.Ophidians",
|
||||||
|
"types": ["OphidianMage", "OphidianArchmage", "OphidianMatriarch", "OphidianWarrior", "OphidianKnight"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Evil.Orcs",
|
||||||
|
"types": ["OrcishMage", "Orc", "OrcishLord", "OrcBomber", "OrcCaptain", "OrcishLord", "OrcBrute"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Evil.Plague Beasts, Bog Things, & Slimes",
|
||||||
|
"types": ["Jwilson", "FrostOoze", "Slime", "PlagueSpawn", "PlagueBeast", "BogThing", "Bogling"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Evil.Plants",
|
||||||
|
"types": ["Corpser", "Quagmire", "WhippingVine", "SwampTentacle", "Reaper"]
|
||||||
|
},
|
||||||
|
{ "category": "Mobiles.Creatures.Evil.Ratmen", "types": ["Ratman", "RatmanArcher", "RatmanMage"] },
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Evil.Serpents",
|
||||||
|
"types": ["IceSerpent", "IceSnake", "LavaSerpent", "LavaSnake", "GiantSerpent", "SilverSerpent", "Snake"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Evil.Spiders",
|
||||||
|
"types": ["DreadSpider", "FrostSpider", "GiantSpider"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Evil.Terathans",
|
||||||
|
"types": ["TerathanMatriarch", "TerathanAvenger", "TerathanDrone", "TerathanWarrior"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Evil.Undead",
|
||||||
|
"types": [
|
||||||
|
"AncientLich", "Bogle", "BoneMagi", "Lich", "LichLord", "Shade", "SkeletalMage", "Spectre", "Wraith",
|
||||||
|
"BoneKnight", "SkeletalKnight", "Ghoul", "RottingCorpse", "Skeleton", "Zombie", "Mummy"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Evil.Undead.Ghosts",
|
||||||
|
"types": ["Bogle", "Shade", "Spectre", "Wraith", "Ghoul"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Evil.Undead.Skeletons",
|
||||||
|
"types": ["BoneMagi", "SkeletalMage", "BoneKnight", "SkeletalKnight", "Skeleton"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Evil.Undead.Walking Dead",
|
||||||
|
"types": ["RottingCorpse", "Zombie", "Mummy"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Evil.Undead.Liches",
|
||||||
|
"types": ["AncientLich", "Lich", "LichLord"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "Mobiles.Creatures.Evil.Vortexes & Blade Spirits",
|
||||||
|
"types": ["EnergyVortex", "SandVortex", "BladeSpirits"]
|
||||||
|
},
|
||||||
|
{ "category": "Mobiles.Creatures.Evil.Uncategorized", "types": ["BaseCreature"] },
|
||||||
|
{ "category": "Mobiles.Uncategorized", "types": ["Mobile"] }
|
||||||
|
]
|
||||||
601
Distribution/Data/names.json
Normal file
601
Distribution/Data/names.json
Normal file
|
|
@ -0,0 +1,601 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "tokuno male",
|
||||||
|
"names": [
|
||||||
|
"Dosyaku", "Warimoto", "Ogino", "Soutatsu", "Wajida", "Batsu", "Hikoza", "Adai", "Ukita", "Sanesue", "Chihu", "Akiosa",
|
||||||
|
"Riku", "Kongou", "Numata", "Kirzahn", "Gakudai", "Nakai", "Ukita", "Ashimaru", "Fuha", "Gakudai", "Numata", "Waricika",
|
||||||
|
"Chihu", "Sanesue", "Yose", "Shinsirou", "Yasuke", "Akisuke", "Naozumi", "Numatta", "Kichizo", "Nasuno", "Akaba", "Arikoto",
|
||||||
|
"Kengi", "Magosuke"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "tokuno female",
|
||||||
|
"names": [
|
||||||
|
"Ahara", "Yume", "Ayane", "Yuki", "Wakae", "Akala", "Ikuha", "Wayu", "Haru", "Zannia", "Shino", "Agate", "Akashi", "Niji",
|
||||||
|
"Yochika", "Toyoka", "Wayo", "Iroha", "Nakai", "Ayatsumi", "Wayu", "Yumiha", "Enji", "Aasin", "Akela", "Chiwa", "Suni",
|
||||||
|
"Wakumi", "Ruri", "Tama"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "bird",
|
||||||
|
"names": [
|
||||||
|
"a wren", "a swallow", "a warbler", "a nuthatch", "a chickadee", "a thrush", "a nightingale", "a starling", "a skylark",
|
||||||
|
"a finch", "a crossbill", "a sparrow", "a towhee", "a woodpecker", "a kingfisher", "a tern", "a plover", "a lapwing",
|
||||||
|
"a hawk", "a cuckoo", "a swift"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ "type": "ancient lich", "names": ["Kaltivel", "Anshu", "Maliel", "Baratoz", "Almonjin"] },
|
||||||
|
{ "type": "balron", "names": ["the Lord of the Abyss", "the Collector of Souls", "the Slayer"] },
|
||||||
|
{
|
||||||
|
"type": "darknight creeper",
|
||||||
|
"names": [
|
||||||
|
"Pariah", "Ydoc Llessue", "Zhaan", "Lorbna", "Gragok", "Thranger", "Krygar", "Grothelfiend", "Centibis", "Farthak",
|
||||||
|
"Laitesach", "Crenabil", "Krullus", "Legron", "Noirkrach", "Blassarrabb", "Gragragron", "Vendodroth", "Flaggroth",
|
||||||
|
"Vilithrar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "impaler",
|
||||||
|
"names": [
|
||||||
|
"Po-Kor", "Manglar", "Verolyn", "Gathfe", "Skred", "Flandrith", "Stavinfeks", "Steelbane", "Crarigor", "Empalk", "Perfus",
|
||||||
|
"Cassiel", "Magor", "Xtul", "Vladeer", "Scrill", "Slix", "Ix", "Selminus", "Victux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "demon knight",
|
||||||
|
"names": [
|
||||||
|
"Hrallath", "Heksen", "Peinsluth", "Keelus", "Kra'an", "Ankou", "Turi'el", "Azazel", "Armarus", "Grigorus", "Ga'ahp",
|
||||||
|
"Therion", "Peirazo", "Ponerus", "Arhaios Ophis", "Vairocan", "Arsat", "Karnax", "Taet Nu'uhn"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "shadow knight",
|
||||||
|
"names": [
|
||||||
|
"Oghmus", "Arametheus", "Terxor", "Erdok", "Archatrix", "Jonar", "Marth'Fador", "Helzigar", "Tyrnak", "Krakus", "Marcus Fel",
|
||||||
|
"Lord Kaos", "Doomor", "Uhn", "Malashim", "Samael", "Nelokhiel", "Montobulus", "Usuhl", "Zul"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "fire gargoyle",
|
||||||
|
"names": [
|
||||||
|
"a fiery gargoyle", "a burning gargoyle", "a smoldering gargoyle", "a blistering gargoyle", "a sweltering gargoyle",
|
||||||
|
"a flaming gargoyle", "a scorching gargoyle", "a blazing gargoyle", "a searing gargoyle"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "gargoyle vendor",
|
||||||
|
"names": [
|
||||||
|
"Ansiraal", "Aurlem", "Betra", "Draxsom", "Fodus", "Forbrak", "ForLem", "Horffe", "Inforlem", "Invis", "Laplem", "Naxator",
|
||||||
|
"Quaeven", "Sarpling", "Silamo", "Tereg", "Volesh", "Vraal", "WisSur"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "centaur",
|
||||||
|
"names": [
|
||||||
|
"Sophanon", "Caryax", "Daemeox", "Phlegon", "Aerophus", "Euforus", "Pallax", "Nikaon", "Licouax", "Lindsaon", "Bastax",
|
||||||
|
"Magdanon", "Thayax", "Aethon", "Ceridus", "Galenon", "Rhysus", "Auramax", "Aldrax", "Anaxus", "Luceus", "Quarax", "Ariax",
|
||||||
|
"Balarax", "Vincenus", "Loxias", "Birhamus", "Lekax", "Nyctinus", "Myrsinus"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "ethereal warrior",
|
||||||
|
"names": [
|
||||||
|
"Galdrion", "Briellis", "Charpris", "Jesurian", "Agrast", "Beldrion", "Polis", "Arafel", "Melestoref", "Lanculis", "Judaselo",
|
||||||
|
"Pietrov"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "pixie",
|
||||||
|
"names": [
|
||||||
|
"Klian", "Klistra", "Laeri", "Ciline", "Shiale", "Ourie", "Piepe", "Liera", "Sili", "Sefi", "Cynthe", "Nedra", "Hali", "Jiki",
|
||||||
|
"Piku", "Rael", "Zanne", "Zut", "Sini", "Os", "Wienne", "Xian", "Ybri", "Calee", "Shendri", "Shri"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "savage",
|
||||||
|
"names": [
|
||||||
|
"Kahl", "Ghrom", "Ogger", "Vek", "Sai'ge", "Groov'h", "Khaonem", "Malen", "Atar", "Aicee", "Vaype", "Halex", "Yar", "Hanz",
|
||||||
|
"Evocah", "Bishor", "Jelak", "Adrok", "Praphut", "Usile", "Sann", "Sabba", "Prie", "Atuk", "Chaca", "ShoJo", "Baccu",
|
||||||
|
"Bonkie", "Alli", "Jexa", "La'Loh", "Arda", "Cordee", "Lana", "Lar", "Araka", "Rhunda", "Squee", "Bhora", "Niha", "Olaufee",
|
||||||
|
"Sinthe", "Karawyn", "Gruwulf", "Masena", "Nasha", "Sargaza"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "savage rider",
|
||||||
|
"names": [
|
||||||
|
"Kahl", "Ghrom", "Ogger", "Vek", "Sai'ge", "Groov'h", "Khaonem", "Malen", "Atar", "Aicee", "Vaype", "Halex", "Yar", "Hanz",
|
||||||
|
"Evocah", "Bishor", "Jelak", "Adrok", "Praphut", "Usile", "Sann", "Sabba", "Prie", "Atuk", "Chaca", "ShoJo", "Baccu",
|
||||||
|
"Bonkie", "Alli"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "savage shaman",
|
||||||
|
"names": [
|
||||||
|
"Jexa", "La'Loh", "Arda", "Cordee", "Lana", "Lar", "Araka", "Rhunda", "Squee", "Bhora", "Niha", "Olaufee", "Sinthe",
|
||||||
|
"Karawyn", "Gruwulf", "Masena", "Nasha", "Sargaza"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "golem controller",
|
||||||
|
"names": [
|
||||||
|
"Zelik", "Kronos", "Zakron", "Velis", "Chujil", "Hygraph", "Dyntrall", "Zarus", "Phoseph", "Malkavik", "Zevras", "Vakel",
|
||||||
|
"Daklon", "Zamog", "Tavurk", "Drakov", "Zazik", "Yyntrix", "Zazik", "Fropoz", "Noxtrag", "Makzok", "Galzan", "Drakan",
|
||||||
|
"Drakzik", "Vazmog"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "daemon",
|
||||||
|
"names": [
|
||||||
|
"Aamon", "Agalierept", "Agares", "Aglasis", "Aiwaz", "Astaroth", "Ayperos", "Azatoth", "Azmodaeus", "Azrael", "Ba'al", "Baal",
|
||||||
|
"Barbatos", "Bathim", "Bathsin", "Be'elzebub", "Be'elzebubba", "Bechard", "Beelzebuth", "Botis", "Brulefer", "Bucon", "Buer",
|
||||||
|
"Clauneck", "Clitheret", "Cthulhu", "Druzil", "El Chupacabra", "Eleogap", "Eliezer", "Eligor", "Eracove", "Faraii",
|
||||||
|
"Fleurety", "Frimost", "Frucissiere", "Fruitimiere", "Glassyalabolas", "Guland", "Gusoyn", "Hael", "Haristum", "Heramael",
|
||||||
|
"Hiepacth", "Huictiigara", "Humots", "Khil", "Maleki", "Marbas", "Mephistopheles", "Mersilde", "Minoson", "Moloch", "Molech",
|
||||||
|
"Morail", "Musisin", "Naberrs", "Nebiros", "Nebirots", "Nyarlathotep", "Pentagnony", "Proculo", "Pruslas", "Pursan",
|
||||||
|
"Rofocale", "Sargatans", "Satanchia", "Satanciae", "Segal", "Sergulath", "Sergutthy", "Sidragrosam", "Sirchade", "Surgat",
|
||||||
|
"Sustugriel", "Tarchimache", "Tarihimal", "Trimasel", "Vaelfar", "Wormius", "Yog-Sothoth", "Y'reif Eci", "Zoray"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "evil mage lord",
|
||||||
|
"names": ["Xarot the Black Archmage", "Kwan Li the Lord of the Mists", "Bazerion the Wizard-Lord", "Ylthallynon the Insane"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "evil mage",
|
||||||
|
"names": [
|
||||||
|
"Ronlyn", "Merkul", "Zasfus", "Zain", "Doraghir", "Danaghir", "Staylin", "Kraylin", "Limnoch", "Kranor", "Kraenor",
|
||||||
|
"Kranostil", "Kranostir", "Lilithack", "Terus", "Thaelin", "Thulack", "Jiltharis", "Garigor", "Banothil", "Bainothil",
|
||||||
|
"Quain", "Ilzinias", "Mardis the Avenger", "Phalil the Unexpected", "Lord Adnoc", "Leje the Invincible", "Master Akris",
|
||||||
|
"Sartan", "Zejron the Wild", "Pitt the Elder", "Puzilan the Puzzler", "Vantrom", "Singhe-Dul", "Tyrin Kuhl",
|
||||||
|
"Xarot the Black", "Kwan Li", "Lord of the Mists", "Viktor Blackoak", "Odilion", "Raith", "Lord of Rats", "Bazerion",
|
||||||
|
"the Wizard-Lord", "Tybevriat Varn", "Keldor the Modoc", "Magelord Varsan", "Izlay the Ebonheart", "SlirithnttIceblood",
|
||||||
|
"Alcor", "Vitar", "Feenark", "Sang Qui", "Lyticant", "Aegnor", "Aelfric", "Ainvar", "Arazion", "Ardarion", "Arkanis",
|
||||||
|
"Athrax", "Barghest", "Baros", "Begarin", "Beynlore", "Burat", "Cairne", "Carthon", "Chamdar", "Ciric", "Cruzado", "Cyphrak",
|
||||||
|
"D'Harun", "Daelon", "Daktar", "Darvain", "Dracus", "Dradar", "Draelin", "Draenor", "Durodund", "Eklor", "Elrak", "Fangorn",
|
||||||
|
"Farynthane", "Galtor", "Gemma", "Gragus", "Irian", "Israfel", "Jaden", "Jefahn", "K'shar", "Kalimus", "Kallomane", "Kanax",
|
||||||
|
"Kelnos", "Kharn", "Khir", "Kragon", "Kylnath", "Larac", "Lathis", "Lenroc", "Lonthorynthoryl", "Lorreck", "Mattrick",
|
||||||
|
"Mazrim", "Mazrim", "Modrei", "Morturus", "Muktar", "Murdon", "Murron", "Myndon", "Mythran", "Mytor", "Nabius", "Nalynkal",
|
||||||
|
"Nazgul", "Paorin", "Quillan", "Rendar", "Scythyn", "Shilor", "Sobran", "Soltak", "Sorz", "Taban", "Telzar", "Teron",
|
||||||
|
"Trethovian", "Tyrnar", "Ulath", "Vandor", "Vermithrax", "Vlade", "Volan", "Wydstrin", "X'calak", "Xaelin", "Xandor",
|
||||||
|
"Xarthos", "Xaxtox", "Xenix", "Xiltanth", "Xylor", "Xystil", "Yazad", "Yllthane", "Ylthallynon", "Ythoryn", "Zalifar",
|
||||||
|
"Zathrix", "Zunrek"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "ratman",
|
||||||
|
"names": [
|
||||||
|
"Ccketakiki", "Chachak", "Chachaktak", "Chackuk", "Chak", "Chaki", "Chaki", "Chakreki", "Chaktuki", "Chakukki", "Charitiki",
|
||||||
|
"Chatuki", "Chectik", "Chectik", "Chek", "Chekeckaki", "Cheki", "Chekkakii", "Cherek", "Chetak", "Chetickuki", "Chiackukk",
|
||||||
|
"Chichachak", "Chichak", "Chichak", "Chichoki", "Chichoki", "Chickek", "Chickek", "Chickeki", "Chickeki", "Chickekiaki",
|
||||||
|
"Chikavi", "Chikchickeki", "Chikckak", "Chikek", "Chiketckuki", "Chiki", "Chikitchaki", "Chiktaki", "Chiritchek", "Chitaviok",
|
||||||
|
"Chokchak", "Chokirek", "Chotechiki", "Ckak", "Ckek", "Ckekckuki", "Ckeki", "Ckekickuk", "Ckikhiki", "Ckikicheki", "Ckukchik",
|
||||||
|
"Ckukichek", "Ctiktik", "Dachek", "Dackatuki", "Dactuk", "Dafactik", "Deckarreki", "Deektuk", "Defetav", "Dekckuk",
|
||||||
|
"Detckiki", "Detckuki", "Detik", "Dicchok", "Dickiki", "Dikfachok", "Ditecckek", "Diwarek", "Eachik", "Eactiki", "Ecckkekek",
|
||||||
|
"Eckaki", "Eckechakiki", "Ecketak", "Ecterek", "Ectuk", "Eekckuk", "Eektuk", "Eicchiki", "Eickuki", "Ekiuki", "Etakheki",
|
||||||
|
"Etavchiki", "Etckuki", "Etik", "Fachchekiok", "Fachok", "Fackak", "Fackek", "Fackik", "Factavi", "Factik", "Fecckik",
|
||||||
|
"Fechaki", "Feractav", "Fetav", "Fetckiki", "Firchik", "Firecheki", "Fireki", "Fitactaki", "Fitaki", "Fitcheki", "Frecckeki",
|
||||||
|
"Hekckeki", "Hiki", "Hikitchaki", "Hokchek", "Ikchaki", "Iki", "Kackak", "Kactavi", "Kadicchok", "Kakhoki", "Kaki", "Kakiki",
|
||||||
|
"Karrekichoki", "Katukickek", "Kecckik", "Kechaki", "Kekachek", "Kekachik", "Kekkik", "Kicchiki", "Kichak", "Kickak",
|
||||||
|
"Kidikiki", "Kietik", "Kik", "Kikechokii", "Kikiaki", "Kiktaki", "Kirchik", "Kireki", "Kireki", "Kitak", "Kitaki", "Kitavi",
|
||||||
|
"Kitcheki", "Ktukchok", "Kukeckaki", "Kuki", "Kukiecckak", "Rackek", "Ractav", "Ratitchaki", "Recckeki", "Recheki",
|
||||||
|
"Rekchectik", "Reki", "Rektav", "Rektavi", "Retchectik", "Reteckaki", "Retituki", "Rikchickek", "Rikecckak", "Ritchek",
|
||||||
|
"Ritchekckiki", "Ritiki", "Ritikituk", "Tackik", "Tactaki", "Tactikiv", "Tadectuk", "Tak", "Tak", "Taki", "Taki", "Taktav",
|
||||||
|
"Tavchichoki", "Taviactak", "Taviectuk", "Tecckek", "Techiki", "Techikickik", "Teckak", "Tedetik", "Tekactiki", "Tekchichak",
|
||||||
|
"Tickukitaki", "Tictak", "Tidetckuki", "Tikckek", "Tikickeki", "Titchaki", "Tituki", "Tukckaki", "Tukitiki", "Tukituki",
|
||||||
|
"Vachichak", "Vackuk", "Vactak", "Vaveckaki", "Vechoki", "Vectaki", "Vevactak", "Vevitavi", "Vitavi", "Vitchak", "Vitituki",
|
||||||
|
"Vivackuk", "Vivitchak", "Vovechoki", "Warek", "Warreki", "Wecckak", "Weckaki", "Wedachek", "Wikchichoki", "Wochickeki"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "lizardman",
|
||||||
|
"names": [
|
||||||
|
"Aissssaiss", "Aisyths", "Alasthsiyss", "Alessitsl", "Alsiths", "Alssi", "Alsyth", "Asahlysy", "Asathsaisss", "Asaysth",
|
||||||
|
"Asiashy", "Asistsais", "Asitssis", "Asiyss", "Astha", "Asthcieth", "Astysah", "Athcesth", "Athys", "Athysthes", "Atslah",
|
||||||
|
"Aysthyss", "Cesthaysth", "Cetys", "Ciethlish", "Citsy", "Cythshi", "Cytsi", "Ekthsisthh", "Essith", "Estha", "Etys",
|
||||||
|
"Halasth", "Haless", "Halsasah", "Hasits", "Hekths", "Hiiths", "Hiitsl", "Hissis", "Hlyiss", "Hlylylyshi", "Hlyshilyly",
|
||||||
|
"Hlysylyiss", "Hlythilsyth", "Hissalsthy", "Hysslssi", "Hsysylh", "Hthessthil", "Hthissy", "Htisthh", "Htsiathys", "Hyisass",
|
||||||
|
"Hysil", "Hysyiss", "Iasia", "Icythhlysy", "Iithsissh", "Iitsliss", "Ilshy", "Ilsyth", "Isalraaat", "Isassthys", "Isathys",
|
||||||
|
"Isiss", "Isissil", "Isshi", "Isshlshy", "Isstha", "Issthas", "Issthyl", "Issysh", "Issyt", "Isthhtis", "Istis", "Istththh",
|
||||||
|
"Isyts", "Ithstsesh", "Ithsy", "Iththis", "Itsesh", "Itshas", "Itsltlish", "Itsthil", "Itsylh", "Iyssysil", "Kthystshas",
|
||||||
|
"Kthythes", "Lasath", "Lastha", "Lasthtsthih", "Lesstslah", "Lestha", "Lilhals", "Lilsyth", "Lishaless", "Lishath", "Lissysh",
|
||||||
|
"Lissyt", "Lithekths", "Litsylh", "Llithlish", "Lshyshas", "Lssissi", "Lsthyssy", "Lsyth", "Lsythstha", "Lyissisis",
|
||||||
|
"Lylsthy", "Lylyisass", "Lyshiisal", "Lyssthih", "Lyssthy", "Lysyiitsl", "Lythiiiths", "Lytsthih", "Saisalasths", "Saishtsi",
|
||||||
|
"Saisssmyss", "Salsesh", "Salssi", "Sasisthasth", "Sasss", "Sasth", "Sath", "Sathsthih", "Sathys", "Satslah", "Saysth",
|
||||||
|
"Scesthhals", "Seshsthyl", "Sessith", "Shasits", "Shassthy", "Shisis", "Shitha", "Shysil", "Shythis", "Siasia", "Siaththh",
|
||||||
|
"Sicyth", "Silshy", "Silthyl", "Sisal", "Sisshi", "Sisshlythi", "Sistlilh", "Sithtththh", "Sitsesh", "Sitshas", "Sitstsi",
|
||||||
|
"Siyss", "Slahyisass", "Slasath", "Slishless", "Ssaisss", "Ssasist", "Sshiscesth", "Ssisal", "Ssithsiss", "Ssiyth",
|
||||||
|
"Sssaisss", "Ssssshi", "Ssthasssthas", "Ssthihssthy", "Ssthssss", "Ssthyl", "Ssthyssths", "Ssyraaath", "Ssysah", "Ssyshstha",
|
||||||
|
"Ssyssith", "Ssytsth", "Stasah", "Sthasth", "Sthasthas", "Sthasthih", "Sthihaisss", "Sthihasits", "Sthilsthy", "Sthlyly",
|
||||||
|
"Sthlyshi", "Sthlysy", "Sthlythi", "Sthmissa", "Sthmyss", "Sthsasist", "Sthyss", "Sthyasia", "Sthycyth", "Sthyltasah",
|
||||||
|
"Stissh", "Stththh", "Stysah", "Sycieth", "Sylhsths", "Syllith", "Syraaat", "Syshsyts", "Syslish", "Syththil", "Sythysth",
|
||||||
|
"Sytlilh", "Sytlish", "Sytsyth", "Sytsyts", "Syys", "Tasahasath", "Thalasths", "Thaless", "Thals", "Thatsylh", "Thays",
|
||||||
|
"Thekths", "Theshthis", "Thiiths", "Thiitsl", "Thilhlyshi", "Thishthes", "Thlyiss", "Thlyly", "Thlyshi", "Thlysy", "Thlythi",
|
||||||
|
"Thmissa", "Thmyss", "Thsais", "Thslish", "Ththes", "Ththhllith", "Ththis", "Thtisthh", "Thyisass", "Thylmissa", "Thys",
|
||||||
|
"Thysslah", "Tisiss", "Tissyth", "Tisthhhsy", "Tlilhlasth", "Tlishkths", "Tseshsath", "Tshassasisth", "Tsicyth", "Tsitys",
|
||||||
|
"Tslahsits", "Tsthihssthih", "Tsthil", "Tsycieth", "Tsylhssyt", "Tsytysah", "Tththhsyt", "Tysahyraaath", "Tyscesth",
|
||||||
|
"Tysycieth", "Yciethhlyly", "Yisasshmyss", "Yisstisthh", "Yllith", "Ylsthy", "Yraaathlythi", "Ysahlith", "Ysasth", "Ysath",
|
||||||
|
"Yscesth", "Yshmissa", "Yshtsi", "Ysilsia", "Yslish", "Yssasisth", "Ysssal", "Yssthih", "Yssths", "Yssthy", "Ystasah",
|
||||||
|
"Ysthsith", "Ystsy", "Ythals", "Ythssysh", "Ytlilh", "Ytlish", "Ytsais", "Ytssysh", "Ytsthih"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "orc",
|
||||||
|
"names": [
|
||||||
|
"Abghat", "Adgulg", "Aghed", "Agugh", "Aguk", "Almthu", "Alog", "Ambilge", "Apaugh", "Argha", "Argigoth", "Argug", "Arpigig",
|
||||||
|
"Auhgan", "Azhug", "Bagdud", "Baghig", "Bahgigoth", "Bahgigoth", "Bandagh", "Barfu", "Bargulg", "Baugh", "Bidgug", "Bildud",
|
||||||
|
"Bilge", "Bog", "Boghat", "Bogugh", "Borgan", "Borug", "Braugh", "Brougha", "Brugagh", "Bruigig", "Buadagh", "Buggug",
|
||||||
|
"Builge", "Buimghig", "Bulgan", "Bumhug", "Buomaugh", "Buordud", "Burghed", "Buugug", "Cabugbu", "Cagan", "Carguk",
|
||||||
|
"Carthurg", "Clog", "Corgak", "Crothu", "Cubub", "Cukgilug", "Curbag", "Dabub", "Dakgorim", "Dakgu", "Dalthu", "Darfu",
|
||||||
|
"Deakgu", "Dergu", "Derthag", "Digdug", "Diggu", "Dilug", "Ditgurat", "Dorgarag", "Dregu", "Dretkag", "Drigka", "Drikdarok",
|
||||||
|
"Drutha", "Dudagog", "Dugarod", "Dugorim", "Duiltag", "Durbag", "Eagungad", "Eggha", "Eggugat", "Egharod", "Eghuglat",
|
||||||
|
"Eichelberbog", "Ekganit", "Epkagut", "Ergoth", "Ertguth", "Ewkbanok", "Fagdud", "Faghig", "Fandagh", "Farfu", "Farghed",
|
||||||
|
"Fargigoth", "Farod", "Faugh", "Feldgulg", "Fidgug", "Filge", "Fodagog", "Fogugh", "Fozhug", "Frikug", "Frug", "Frukag",
|
||||||
|
"Fubdagog", "Fudhagh", "Fupgugh", "Furbog", "Futgarek", "Gaakt", "Garekk", "Gelub", "Gholug", "Gilaktug", "Ginug", "Gnabadug",
|
||||||
|
"Gnadug", "Gnalurg", "Gnarg", "Gnarlug", "Gnorl", "Gnorth", "Gnoth", "Gnurl", "Golag", "Golag", "Golub", "Gomatug", "Gomoku",
|
||||||
|
"Gorgu", "Gorlag", "Grikug", "Grug", "Grug", "Grukag", "Grukk", "Grung", "Gruul", "Guag", "Gubdagog", "Gudhagh", "Gug", "Gug",
|
||||||
|
"Gujarek", "Gujek", "Gujjab", "Gulm", "Gulrn", "Gunaakt", "Gunag", "Gunug", "Gurukk", "Guthakug", "Guthug", "Gutjja", "Hagob",
|
||||||
|
"Hagu", "Hagub", "Haguk", "Hebub", "Hegug", "Hibub", "Hig", "Hogug", "Hoknath", "Hoknuk", "Hokulk", "Holkurg", "Horknuth",
|
||||||
|
"Hrolkug", "Hugagug", "Hugmug", "Hugolm", "Ig", "Igmut", "Ignatz", "Ignorg", "Igubat", "Igug", "Igurg", "Ikgnath", "Ikkath",
|
||||||
|
"Inkathu", "Inkathurg", "Isagubat", "Jogug", "Jokgagu", "Jolagh", "Jorgagu", "Jregh", "Jreghug", "Jugag", "Jughog",
|
||||||
|
"Jughragh", "Jukha", "Jukkhag", "Julakgh", "Kabugbu", "Kagan", "Kaghed", "Kahigig", "Karfu", "Karguk", "Karrghed", "Karrhig",
|
||||||
|
"Karthurg", "Kebub", "Kegigoth", "Kegth", "Kerghug", "Kertug", "Kilug", "Klapdud", "Klapdud", "Klog", "Klughig", "Knagh",
|
||||||
|
"Knaraugh", "Knodagh", "Knorgh", "Knuguk", "Knurigig", "Kodagog", "Kog", "Kogan", "Komarod", "Korgak", "Korgulg", "Koughat",
|
||||||
|
"Kraugug", "Krilge", "Krothu", "Krouthu", "Krugbu", "Krugorim", "Kubub", "Kugbu", "Kukgilug", "Kulgha", "Kupgugh", "Kurbag",
|
||||||
|
"Kurmbag", "Laghed", "Lamgugh", "Mabub", "Magdud", "Malthu", "Marfu", "Margulg", "Mazhug", "Meakgu", "Mergigoth", "Milug",
|
||||||
|
"Mudagog", "Mugarod", "Mughragh", "Mugorim", "Murbag", "Naghat", "Naghig", "Naguk", "Nahgigoth", "Nakgu", "Narfu", "Nargulg",
|
||||||
|
"Narhbub", "Narod", "Neghed", "Nehrakgu", "Nildud", "Nodagog", "Nofhug", "Nogugh", "Nomgulg", "Noogugh", "Nugbu", "Nughilug",
|
||||||
|
"Nulgha", "Numhug", "Nurbag", "Nurghed", "Oagungad", "Oakgu", "Obghat", "Oggha", "Oggugat", "Ogharod", "Oghuglat", "Oguk",
|
||||||
|
"Ohomdud", "Ohulhug", "Oilug", "Okganit", "Olaghig", "Olaugh", "Olmthu", "Olodagh", "Olog", "Omaghed", "Ombilge", "Omegugh",
|
||||||
|
"Omogulg", "Omugug", "Onog", "Onubub", "Onugug", "Oodagh", "Oogorim", "Oogugbu", "Oomigig", "Opathu", "Opaugh", "Opeghat",
|
||||||
|
"Opilge", "Opkagut", "Opoguk", "Oquagan", "Orgha", "Orgoth", "Orgug", "Orpigig", "Ortguth", "Otugbu", "Ougha", "Ougigoth",
|
||||||
|
"Ouhgan", "Owkbanok", "Paghorim", "Pahgigoth", "Pahgorim", "Pakgu", "Parfu", "Pargu", "Parhbub", "Parod", "Peghed",
|
||||||
|
"Pehrakgu", "Pergu", "Perthag", "Pigdug", "Piggu", "Pitgurat", "Podagog", "Pofhug", "Pomgulg", "Poogugh", "Porgarag", "Pregu",
|
||||||
|
"Pretkag", "Prigka", "Prikdarok", "Prutha", "Pughilug", "Puiltag", "Purbag", "Qog", "Quadagh", "Quilge", "Quimghig",
|
||||||
|
"Quomaugh", "Quordud", "Quugug", "Raghat", "Raguk", "Rakgu", "Rarfu", "Rebub", "Rilug", "Rodagog", "Rogan", "Romarod",
|
||||||
|
"Routhu", "Rugbu", "Rugorim", "Rurbag", "Rurigig", "Sabub", "Saghig", "Sahgigoth", "Sahgorim", "Sakgu", "Salthu", "Saraugug",
|
||||||
|
"Sarfu", "Sargulg", "Sarhbub", "Sarod", "Sbghat", "Seakgu", "Sguk", "Shomdud", "Shulhug", "Sildud", "Silge", "Silug",
|
||||||
|
"Sinsbog", "Slaghig", "Slapdud", "Slaugh", "Slodagh", "Slog", "Slughig", "Smaghed", "Smegugh", "Smogulg", "Snog", "Snubub",
|
||||||
|
"Snugug", "Sodagh", "Sog", "Sogorim", "Sogugbu", "Sogugh", "Sombilge", "Somigig", "Sonagh", "Sorgulg", "Sornaraugh",
|
||||||
|
"Soughat", "Spathu", "Speghat", "Spilge", "Spoguk", "Squagan", "Stugbu", "Sudagog", "Sugarod", "Sugbu", "Sugha", "Sugigoth",
|
||||||
|
"Sugorim", "Suhgan", "Sulgha", "Sulmthu", "Sumhug", "Sunodagh", "Sunuguk", "Supaugh", "Supgugh", "Surbag", "Surgha",
|
||||||
|
"Surghed", "Surgug", "Surpigig", "Tagdud", "Taghig", "Tandagh", "Tandagh", "Tarfu", "Targhed", "Targigoth", "Tarod", "Taugh",
|
||||||
|
"Taugh", "Teldgulg", "Tidgug", "Tidgug", "Tilge", "Todagog", "Tog", "Toghat", "Togugh", "Torgan", "Torug", "Tozhug", "Traugh",
|
||||||
|
"Trilug", "Trougha", "Trugagh", "Truigig", "Tuggug", "Tulgan", "Turbag", "Turge", "Ug", "Ugghra", "Uggug", "Ughat", "Ulgan",
|
||||||
|
"Ulmragha", "Ulmrougha", "Umhra", "Umragig", "Umruigig", "Ungagh", "Unrugagh", "Urag", "Uraugh", "Urg", "Urgan", "Urghat",
|
||||||
|
"Urgran", "Urlgan", "Urmug", "Urug", "Urulg", "Vabugbu", "Vagan", "Vagrungad", "Vagungad", "Vakgar", "Vakgu", "Vakmu",
|
||||||
|
"Valthurg", "Vambag", "Vamugbu", "Varbu", "Varbuk", "Varfu", "Vargan", "Varguk", "Varkgorim", "Varthurg", "Vegum", "Vergu",
|
||||||
|
"Verlgu", "Verthag", "Verthurg", "Vetorkag", "Vidarok", "Vigdolg", "Vigdug", "Viggu", "Viggulm", "Viguka", "Vitgurat",
|
||||||
|
"Vitgut", "Vlog", "Vlorg", "Vorgak", "Vorgarag", "Vothug", "Vregu", "Vretkag", "Vrigka", "Vrikdarok", "Vrogak", "Vrograg",
|
||||||
|
"Vrothu", "Vruhag", "Vrutha", "Vubub", "Vugub", "Vuiltag", "Vukgilug", "Vultog", "Vulug", "Vurbag", "Wakgut", "Wanug",
|
||||||
|
"Wapkagut", "Waruk", "Wauktug", "Wegub", "Welub", "Wholug", "Wilaktug", "Wingloug", "Winug", "Woabadug", "Woggha", "Woggugat",
|
||||||
|
"Woggugat", "Wogharod", "Wogharod", "Woghuglat", "Woglug", "Wokganit", "Womkug", "Womrikug", "Wonabadug", "Worthag", "Wraog",
|
||||||
|
"Wrug", "Wrukag", "Wrukaog", "Wubdagog", "Wudgh", "Wudhagh", "Wudugog", "Wuglat", "Wumanok", "Wumkbanok", "Wurgoth", "Wurmha",
|
||||||
|
"Wurtguth", "Wurthu", "Wutgarek", "Xaakt", "Xago", "Xagok", "Xagu", "Xaguk", "Xarlug", "Xarpug", "Xegug", "Xepug", "Xig",
|
||||||
|
"Xnath", "Xnaurl", "Xnurl", "Xoknath", "Xokuk", "Xolag", "Xolkug", "Xomath", "Xomkug", "Xomoku", "Xonoth", "Xorag", "Xorakk",
|
||||||
|
"Xoroku", "Xoruk", "Xothkug", "Xruul", "Xuag", "Xug", "Xugaa", "Xugag", "Xugagug", "Xugar", "Xugarf", "Xugha", "Xugor",
|
||||||
|
"Xugug", "Xujarek", "Xuk", "Xulgag", "Xunaakt", "Xunag", "Xunug", "Xurek", "Xurl", "Xurug", "Xurukk", "Xutag", "Xuthakug",
|
||||||
|
"Xutjja", "Yaghed", "Yagnar", "Yagnatz", "Yahg", "Yahigig", "Yakgnath", "Yakha", "Yalakgh", "Yargug", "Yegigoth", "Yegoth",
|
||||||
|
"Yerghug", "Yerug", "Ymafubag", "Yokgagu", "Yokgu", "Yolmar", "Yonkathu", "Yregh", "Yroh", "Ysagubar", "Yughragh", "Yugug",
|
||||||
|
"Yugug", "Yukgnath", "Yukha", "Yulakgh", "Yunkathu", "Zabghat", "Zabub", "Zaghig", "Zahgigoth", "Zahgorim", "Zalthu",
|
||||||
|
"Zaraugug", "Zarfu", "Zargulg", "Zarhbub", "Zarod", "Zeakgu", "Zguk", "Zildud", "Zilge", "Zilug", "Zinsbog", "Zlapdud",
|
||||||
|
"Zlog", "Zlughig", "Zodagh", "Zog", "Zogugbu", "Zogugh", "Zombilge", "Zonagh", "Zorfu", "Zorgulg", "Zorhgigoth", "Zornaraugh",
|
||||||
|
"Zoughat", "Zudagog", "Zugarod", "Zugbu", "Zugorim", "Zuhgan", "Zulgha", "Zulmthu", "Zumhug", "Zunodagh", "Zunuguk",
|
||||||
|
"Zupaugh", "Zupgugh", "Zurbag", "Zurgha", "Zurghed", "Zurgug", "Zurpigig"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "female",
|
||||||
|
"names": [
|
||||||
|
"Aba", "Abby", "Abella", "Abey", "Abigail", "Abina", "Abiona", "Abira", "Abra", "Abrah", "Absinthe", "Acacia", "Acanit",
|
||||||
|
"Acantha", "Accalia", "Acelin", "Achen", "Ada", "Adalia", "Adara", "Addi", "Adelaide", "Adele", "Adelia", "Adeline", "Adelle",
|
||||||
|
"Adena", "Aderes", "Adesina", "Adie", "Adimina", "Adiva", "Adoncia", "Adonia", "Adora", "Adrienne", "Aelina", "Afina", "Afra",
|
||||||
|
"Afrika", "Afton", "Agate", "Agatha", "Agnes", "Ahara", "Ahave", "Ahimsa", "Aida", "Aiella", "Aiko", "Aila", "Aileen",
|
||||||
|
"Ailsa", "Aimee", "Ain", "Aina", "Ainhoa", "Ainsley", "Aintzane", "Airlia", "Aisling", "Aislinn", "Aithne", "Aiyana", "Ajara",
|
||||||
|
"Ajay", "Ajinora", "Akako", "Akala", "Akanke", "Akasma", "Akela", "Akilah", "Akili", "Akilina", "Akina", "Alaina", "Alake",
|
||||||
|
"Alala", "Alamanada", "Alana", "Alani", "Alanna", "Alaqua", "Alavda", "Alazne", "Alberta", "Albinka", "Alcina", "Aldea",
|
||||||
|
"Aldercy", "Aleka", "Alenne", "Alesia", "Alessa", "Alethea", "Alexa", "Alexandra", "Alexandria", "Alexandrina", "Alexis",
|
||||||
|
"Ali", "Alia", "Alice", "Alicia", "Alida", "Alike", "Alima", "Alina", "Alison", "Alita", "Alix", "Aliz", "Aliza", "Allele",
|
||||||
|
"Alligra", "Allinora", "Allison", "Allyn", "Alma", "Alodie", "Aloysia", "Althea", "Alula", "Alumit", "Alvina", "Alvita",
|
||||||
|
"Alysa", "Alyssa", "Alyssand", "Alzena", "Ama", "Amabel", "Amadi", "Amadika", "Amadis", "Amaia", "Amala", "Amalia", "Amanda",
|
||||||
|
"Amandine", "Amara", "Amarande", "Amarante", "Amaris", "Amata", "Ambar", "Amber", "Ambika", "Ambis", "Ameerah", "Amelia",
|
||||||
|
"Amelina", "Amethyst", "Amie", "Amiella", "Amina", "Aminta", "Amissa", "Amita", "Amity", "Amoke", "Amy", "Ananda",
|
||||||
|
"Anastasia", "Ancelin", "Andi", "Andra", "Andraianna", "Andras", "Andrea", "Andromeda", "Aneida", "Anella", "Anemone",
|
||||||
|
"Anezka", "Angela", "Angelica", "Angeline", "Angelique", "Angeni", "Ani", "Anica", "Anieli", "Anisa", "Anita", "Anke", "Ann",
|
||||||
|
"Anna", "Annabel", "Annabelle", "Annamarie", "Anne", "Annette", "Annikka", "Annora", "Anorah", "Anoush", "Ansreana", "Anteia",
|
||||||
|
"Anthea", "Antje", "Antoinette", "Antonia", "Aolani", "Apara", "Apirka", "Apolline", "Apolloina", "Aponi", "April", "Aprille",
|
||||||
|
"Aprille", "Aqua", "Aquene", "Ara", "Arabella", "Arabelle", "Araceli", "Araminta", "Araxie", "Arcadia", "Ardath", "Ardelia",
|
||||||
|
"Arden", "Ardis", "Ardith", "Areiela", "Arella", "Aretha", "Aretina", "Ariadne", "Ariana", "Aricia", "Ariel", "Ariene",
|
||||||
|
"Arista", "Arlene", "Arlinda", "Armina", "Arminda", "Artemisia", "Aruna", "Arziki", "Asaria", "Asenka", "Ash", "Asha",
|
||||||
|
"Ashlan", "Ashleigh", "Ashley", "Asia", "Asisa", "Aslinda", "Aspasia", "Asta", "Aster", "Astera", "Astra", "Astrea", "Astrid",
|
||||||
|
"Atalanta", "Atara", "Atenne", "Ateri", "Athalia", "Athena", "Athla", "Atifa", "Atta", "Aubrey", "Auda", "Audny", "Audrey",
|
||||||
|
"Audrianna", "Audun", "Augustina", "Aura", "Aure", "Aurelia", "Aurilia", "Aurina", "Aurkene", "Aurora", "Autumn", "Ava",
|
||||||
|
"Avana", "Avasa", "Avella", "Avena", "Avie", "Avis", "Aviva", "Axella", "Aya", "Ayaluna", "Ayame", "Ayana", "Ayasha", "Aydee",
|
||||||
|
"Ayela", "Ayiana", "Ayila", "Ayisha", "Ayita", "Ayla", "Aynora", "Ayuna", "Azaleah", "Azalia", "Azarael", "Azera", "Azha",
|
||||||
|
"Azilea", "Azina", "Azize", "Azora", "Azura", "Babette", "Bacia", "Bacia", "Baka", "Baka", "Bakarne", "Balayna", "Balea",
|
||||||
|
"Balia", "Bambi", "Banan", "Banella", "Bara", "Barbara", "Barika", "Basha", "Basha", "Basia", "Basimah", "Batakah",
|
||||||
|
"Bathsheba", "Batya", "Bay", "Bayana", "Bayo", "Bayta", "Bea", "Beatrice", "Beatrix", "Beauina", "Becca", "Becky", "Bedelia",
|
||||||
|
"Bel", "Belana", "Belina", "Belinda", "Belita", "Bellanca", "Belle", "Belora", "Bente", "Beradine", "Berilla", "Berit",
|
||||||
|
"Bernadette", "Bernice", "Beryl", "Bess", "Bessine", "Beta", "Beth", "Bethana", "Bethany", "Betony", "Betty", "Beulah",
|
||||||
|
"Beverly", "Bevin", "Bian", "Bianca", "Billie", "Bina", "Bindy", "Binti", "Birdie", "Birkita", "Bixenta", "Blanche", "Blanda",
|
||||||
|
"Blenda", "Bliss", "Bly", "Blythe", "Bo", "Bohdana", "Bonamy", "Bonita", "Bonnie", "Bonny", "Borgny", "Braina", "Brandi",
|
||||||
|
"Brandy", "Bren", "Brenda", "Brenna", "Bretta", "Bridget", "Bridget", "Brie", "Brier", "Brietta", "Brigit", "Brigitte",
|
||||||
|
"Brina", "Brina", "Briona", "Briony", "Brites", "Britta", "Brittany", "Bronwyn", "Brooke", "Brynn", "Bucia", "Cadence",
|
||||||
|
"Caimile", "Caitlin", "Caitrin", "Cala", "Calandia", "Calandra", "Calendonia", "Caley", "Calida", "Calista", "Calla",
|
||||||
|
"Callan", "Callia", "Callidora", "Callie", "Caltha", "Calypso", "Cam", "Camelia", "Camilia", "Camille", "Canace", "Candace",
|
||||||
|
"Candida", "Candide", "Candra", "Cantara", "Caoimhe", "Capri", "Caprice", "Cara", "Caradoc", "Caresse", "Cari", "Carina",
|
||||||
|
"Carine", "Carissa", "Carita", "Carla", "Carleen", "Carlen", "Carling", "Carlota", "Carly", "Carma", "Carmel", "Carmelina",
|
||||||
|
"Carmen", "Carna", "Carnelian", "Carol", "Carolina", "Caroline", "Carolyn", "Caron", "Carrie", "Caryn", "Casey", "Casilda",
|
||||||
|
"Cassandra", "Cassia", "Casta", "Castalia", "Catalina", "Catava", "Caterina", "Catherine", "Cathleen", "Cathy", "Catriona",
|
||||||
|
"Cayla", "Ceara", "Cecania", "Cecilia", "Celandine", "Celeste", "Celia", "Celina", "Celina", "Cellia", "Cerelia", "Chaitra",
|
||||||
|
"Chanah", "Chanda", "Chandi", "Chandra", "Chane", "Chanel", "Channa", "Chantal", "Charis", "Charissa", "Charity", "Charlotte",
|
||||||
|
"Charmaine", "Chastity", "Chava", "Chaviva", "Chay", "Chaya", "Chelsea", "Chenoa", "Cherica", "Cherice", "Cherie", "Cheryl",
|
||||||
|
"Chesna", "Chiara", "Chika", "Chilali", "Chimlis", "Chipo", "Chloe", "Chloris", "Cho", "Christa", "Christable", "Christina",
|
||||||
|
"Christine", "Christy", "Chyou", "Cia", "Ciannait", "Ciar", "Cicely", "Cindy", "Claire", "Clara", "Clarinda", "Clarissa",
|
||||||
|
"Claudette", "Claudia", "Claudine", "Clementina", "Clementine", "Cliantha", "Clorinda", "Clorinda", "Clover", "Cochiti",
|
||||||
|
"Coleene", "Colette", "Connie", "Constance", "Constanza", "Consuela", "Cora", "Coralie", "Corazon", "Corbey", "Cordeali",
|
||||||
|
"Coretta", "Cori", "Corinna", "Coris", "Corliss", "Corrine", "Cortney", "Crescent", "Cressida", "Crystal", "Cybele", "Cybil",
|
||||||
|
"Cynthia", "Cyprien", "Cyrene", "Cyrilla", "Cytheria", "Dabria", "Dacey", "Dacia", "Dacie", "Dacio", "Dae", "Dagmar", "Dagna",
|
||||||
|
"Dai", "Daily", "Daisel", "Daisy", "Dakota", "Dale", "Dalila", "Dalilia", "Damara", "Damitri", "Dana", "Danett", "Dania",
|
||||||
|
"Daniella", "Danyelle", "Daphene", "Daphne", "Daphnie", "Dar", "Dara", "Daralis", "Darby", "Daria", "Darla", "Darlene",
|
||||||
|
"Dasha", "Dasha", "Davene", "Davine", "Davita", "Dawn", "Daya", "Dayna", "Deana", "Deana", "Deandra", "Deb", "Debra", "Dede",
|
||||||
|
"Dee", "Deedee", "Deianira", "Deiene", "Deirdre", "Delana", "Delaney", "Delbin", "Delia", "Delicia", "Delilia", "Della",
|
||||||
|
"Delphina", "Dembe", "Demi", "Demitria", "Dena", "Denby", "Denice", "Deva", "Devaki", "Deval", "Devi", "Devin", "Devnet",
|
||||||
|
"Devon", "Diamanta", "Diane", "Dianthe", "Diedre", "Diella", "Dillian", "Dilly", "Dilys", "Dinah", "Dionne", "Disa", "Dita",
|
||||||
|
"diti", "Dixie", "Dodie", "Dolores", "Dominique", "Dona", "Donata", "Donielle", "Donner", "Dooriya", "Dophina", "Dora",
|
||||||
|
"Doreen", "Dorinda", "Doris", "Dorithy", "Dory", "Drew", "Drina", "Drucilla", "Dulcie", "Dulcinea", "Dusty", "Dyan", "Dyani",
|
||||||
|
"Dymphna", "Dyna", "Eartha", "Easter", "Ebony", "Echo", "Edana", "Edie", "Edith", "Edlyn", "Edna", "Edolie", "Edria",
|
||||||
|
"Edwina", "Efia", "Eileen", "Eirene", "Elaine", "Elana", "Eleora", "Elianor", "Elina", "Elina", "Elisa", "Elise", "Eliska",
|
||||||
|
"Elissa", "Elita", "Eliza", "Elizabeeth", "Elke", "Ella", "Elle", "Ellen", "Elly", "Elodie", "Eloise", "Elsa", "Elsie",
|
||||||
|
"Elynor", "Elyse", "Elysia", "Ema", "Emajane", "Emalia", "Ember", "Emelie", "Emelyne", "Emily", "Emma", "Endora", "Engracia",
|
||||||
|
"Enid", "Enola", "Enye", "Erasma", "Erianthe", "Erica", "Erin", "Erlina", "Erwand", "Eskarne", "Esmerelda", "Esperanza",
|
||||||
|
"Esta", "Estelle", "Esther", "Estu", "Etain", "Etaina", "Etaina", "Etanthe", "Etta", "Eudocia", "Eugenia", "Eulalia",
|
||||||
|
"Eustacia", "Eva", "Evacsa", "Evadine", "Evadne", "Evangeline", "Evanthe", "Eve", "Evelyn", "Evita", "Evonne", "Eyota",
|
||||||
|
"Fabienne", "Faifuza", "Fainche", "Faith", "Faizah", "Fallon", "Fantine", "Farha", "Farima", "Farrah", "Fatin", "Fawne",
|
||||||
|
"Fay", "Faye", "Fayina", "Fayme", "Felcia", "Felicite", "Felicity", "Femi", "Feridwyn", "Fern", "Feronia", "Filinda", "Fina",
|
||||||
|
"Finola", "Fiona", "Fiorenza", "Flavia", "Fleta", "Flora", "Florence", "Frances", "Francesca", "Francine", "Francisca",
|
||||||
|
"Freda", "Frederica", "Freya", "Frida", "Frieda", "Fuscienne", "Gabriella", "Gabrielle", "Gaia", "Gail", "Galatea", "Gali",
|
||||||
|
"Galina", "Galya", "Gana", "Ganesa", "Gauri", "Gaye", "Gayle", "Gelasia", "Gemma", "Genevieve", "Geogia", "Georgeanne",
|
||||||
|
"Georgetta", "Georgette", "Georgiana", "Geradline", "Geraldine", "Gerda", "Gerri", "Gertrude", "Geva", "Ghislaine",
|
||||||
|
"Giacinta", "Gianina", "Gigi", "Gilana", "Gilda", "Gilen", "Gillian", "Gin", "Gina", "Ginger", "Giselle", "Gitana", "Githa",
|
||||||
|
"Gizane", "Gleda", "Glenna", "Glennys", "Golda", "Goldie", "Gotzone", "Grace", "Gracie", "Grainne", "Grazia", "Grear",
|
||||||
|
"Greta", "Gretchen", "Grette", "Gwen", "Gwendolyn", "Gweneth", "Gwynne", "Gytha", "Hadara", "Hadassa", "Hadiya", "Haidee",
|
||||||
|
"Hailey", "Haimi", "Haldis", "Hale", "Haley", "Hali", "Hali", "Halima", "Halle", "Hallie", "Hana", "Hanan", "Hannah", "Hanne",
|
||||||
|
"Harmoni", "Harriet", "Hasna", "Hava", "Haya", "Haylee", "Hazel", "Hea", "Heather", "Hei", "Heidi", "Heldegarde", "Helen",
|
||||||
|
"Helena", "Helene", "Helki", "Henka", "Henrietta", "Hesper", "Hester", "Hilary", "Hilda", "Hinda", "Hisa", "Holly", "Hope",
|
||||||
|
"Hoshi", "Hyacinth", "Hye", "Hypatia", "Ianthe", "Ida", "Idola", "Idonia", "Ilene", "Ilona", "Iman", "Imogene", "India",
|
||||||
|
"Indira", "Indra", "Ines", "Inez", "Inga", "Ingrid", "Iolana", "Iolanthe", "Iona", "Iratze", "Irena", "Irene", "Iris", "Irma",
|
||||||
|
"Isabeau", "Isabel", "Isabella", "Isadora", "Isaura", "Isis", "Isleta", "Isobel", "Isoke", "Istas", "Ivana", "Ivory", "Ivy",
|
||||||
|
"Jacelyn", "Jacinda", "Jacinthe", "Jada", "Jael", "Jaen", "Jaimie", "Jaione", "Jakinda", "Jala", "Jamie", "Jamila", "Jamilah",
|
||||||
|
"Jan", "Jana", "Jane", "Janelle", "Janet", "Janice", "Janis", "Janna", "Jannelle", "Jardena", "Jarvia", "Jarvinia", "Jasmine",
|
||||||
|
"Jaya", "Jayne", "Jean", "Jean", "Jeanette", "Jeanine", "Jelena", "Jena", "Jenay", "Jendayi", "Jendyose", "Jenica",
|
||||||
|
"Jennettia", "Jennifer", "Jensine", "Jerrilyn", "Jessica", "Jewel", "Jezebel", "Jihan", "Jillian", "Jin", "Jina", "Jinny",
|
||||||
|
"Jinx", "Joakima", "Joan", "Joanne", "Jobey", "Jobihna", "Jocasa", "Jocelyn", "Jodi", "Jody", "Joelle", "Joelliane",
|
||||||
|
"Johanna", "Joia", "Jolan", "Jolanta", "Jolene", "Jolie", "Joline", "Jonina", "Jora", "Jordane", "Josephine", "Josie",
|
||||||
|
"Jotha", "Joy", "Joyce", "Joye", "Juanita", "Judith", "Juditha", "Julia", "Juliana", "Juliane", "Julie", "Julietta",
|
||||||
|
"Julinka", "Jumoke", "Jun", "June", "Justine", "Kaatje", "Kachine", "Kaclyn", "Kaede", "Kaethe", "Kai", "Kaia", "Kaie",
|
||||||
|
"Kaili", "Kaimi", "Kairos", "Kaiya", "Kakra", "Kala", "Kalama", "Kalanit", "Kalare", "Kalea", "Kali", "Kalika", "Kalila",
|
||||||
|
"Kalinda", "Kalle", "Kalli", "Kalonice", "Kalyca", "Kama", "Kamala", "Kamali", "Kamaria", "Kambo", "Kameko", "Kamilah",
|
||||||
|
"Kamilia", "Kanda", "Kane", "Kanene", "Kanika", "Kantha", "Kanya", "Kapera", "Kara", "Karan", "Karayan", "Karel", "Karen",
|
||||||
|
"Karida", "Karimah", "Karisa", "Karka", "Karla", "Karlenne", "Karli", "Karlyn", "Karmina", "Karol", "Karylin", "Karyn",
|
||||||
|
"Kasa", "Kasen", "Kasia", "Kasinda", "Kassia", "Kate", "Katherine", "Kathleen", "Katja", "Katoka", "Katrien", "Katrina",
|
||||||
|
"Kaula", "Kaveri", "Kavindra", "Kay", "Kaya", "Kaye", "Kayla", "Kaysa", "Kazia", "Keara", "Keelin", "Keely", "Kefira",
|
||||||
|
"Kehinde", "Kei", "Keiko", "Keisha", "Kelda", "Kelia", "Kelley", "Kelli", "Kellie", "Kelly", "Kelsey", "Kendra", "Kennis",
|
||||||
|
"Kenyangi", "Kepa", "Kerani", "Kerensa", "Kerstan", "Kesare", "Kesi", "Kesia", "Kessie", "Keturah", "Ketzia", "Khalida",
|
||||||
|
"Kichi", "Kiele", "Kim", "Kimberly", "Kimmie", "Kimmy", "Kineta", "Kiona", "Kira", "Kiran", "Kirby", "Kirima", "Kirsten",
|
||||||
|
"Kirti", "Kisa", "Kiska", "Kismet", "Kissa", "Kita", "Kohana", "Kolina", "Koren", "Koressa", "Kristen", "Kyly", "Kyna",
|
||||||
|
"Kynthia", "Kyoko", "Lacey", "Lacie", "Laila", "Lailie", "Lakeisha", "Lala", "Lalasa", "Lan", "Lana", "Landra", "Lane",
|
||||||
|
"Lani", "Lara", "Laraine", "Laralee", "Lari", "Larissa", "Lark", "Latika", "Latonia", "Laura", "Laurana", "Laurel", "Laurie",
|
||||||
|
"Laurinda", "Lauryn", "Laveda", "Lavern", "Laverne", "Lavinia", "Lea", "Leah", "Leah", "Leala", "Leandra", "Leba", "Ledah",
|
||||||
|
"Lee", "Leigh", "Leiko", "Leila", "Leilana", "Lena", "Lene", "Lenor", "Lenora", "Lenore", "Leona", "Leora", "Leslie", "Letha",
|
||||||
|
"Letitia", "Levana", "Lexine", "Lia", "Liadan", "Lian", "Liana", "Liane", "Libby", "Lien", "Lila", "Lilith", "Lillian",
|
||||||
|
"Lillie", "Lily", "Limber", "Lina", "Linda", "Lindsay", "Lindsey", "Linette", "Linnae", "Linnea", "Lisa", "Lisette", "Litsa",
|
||||||
|
"Liv", "Liza", "Lois", "Lokelani", "Lola", "Loni", "Lora", "Lore", "Lorelei", "Lorelle", "Loretta", "Lori", "Lorraine",
|
||||||
|
"Lotus", "Louise", "Lucille", "Lucine", "Lucretia", "Lucy", "Ludia", "Luela", "Luisa", "Lukene", "Lukina", "Lulu", "Luna",
|
||||||
|
"Lydia", "Lynda", "Lynelle", "Lynn", "Lynnda", "Lynnette", "Lyris", "Lysel", "Lysnadra", "Mabel", "Macaria", "Machi", "Maddy",
|
||||||
|
"Madelaine", "Madelina", "Madeline", "Madelon", "Madelyn", "Mady", "Mae", "Magan", "Magara", "Magdalen", "Magdalena",
|
||||||
|
"Magdaline", "Magena", "Magenta", "Maggie", "Mahala", "Mahalia", "Mai", "Maia", "Maida", "Maisie", "Maitane", "Maizah", "Maj",
|
||||||
|
"Malaya", "Malila", "Malina", "Malinda", "Malka", "Mallory", "Malu", "Mamie", "Manda", "Mandara", "Mandisa", "Mandy",
|
||||||
|
"Mangena", "Manon", "Mansi", "Manya", "Mara", "Marcella", "Marcia", "Marcy", "Maren", "Margaret", "Margaret", "Margarita",
|
||||||
|
"Margo", "Margot", "Marguirte", "Maria", "Mariah", "Mariam", "Mariama", "Marian", "Mariana", "Marianna", "Marianne",
|
||||||
|
"Maribel", "Marie", "Mariel", "Marietta", "Marily", "Marilyn", "Marina", "Maris", "Marisa", "Marisha", "Marissa", "Marjani",
|
||||||
|
"Marjeta", "Marjorie", "Marlene", "Marlo", "Marmara", "Marnie", "Marnina", "Marsha", "Marta", "Martha", "Marti", "Martina",
|
||||||
|
"Mary", "Maryann", "Marybeth", "Marylou", "Marzia", "Matana", "Mathea", "Matilda", "Matrika", "Maud", "Maura", "Maureen",
|
||||||
|
"Maurita", "Mavis", "Maxine", "May", "Maya", "Meara", "Meara", "Meda", "Medea", "Meg", "Megan", "Megara", "Meghan", "Mei",
|
||||||
|
"Meira", "Mela", "Melanie", "Melantha", "Melba", "Melia", "Melian", "Melina", "Melinda", "Melisenda", "Melissa", "Mellinio",
|
||||||
|
"Melodie", "Melody", "Melosa", "Melva", "Mercedes", "Meredith", "Merele", "Mesha", "Meta", "Mia", "Miakoda", "Michaela",
|
||||||
|
"Michele", "Michelle", "Midori", "Migina", "Mignon", "Mika", "Millicent", "Millie", "Min", "Mina", "Minda", "Mindel", "Mindy",
|
||||||
|
"Minerva", "Minka", "Minna", "Minnie", "Mira", "Miranda", "Mirem", "Miremba", "Mireya", "Miriam", "Mirielle", "Missy",
|
||||||
|
"Misty", "Mitena", "Mitexi", "Mitzi", "Moira", "Mollie", "Molly", "Mona", "Monique", "Moon", "Morena", "Morgan", "Morgana",
|
||||||
|
"Morgance", "Moria", "Moriah", "Muriel", "Myra", "Nada", "Nadia", "Nadine", "Nadya", "Naia", "Nailah", "Naimah", "Nalini",
|
||||||
|
"Namazzi", "Nami", "Nan", "Nana", "Nancy", "Nanette", "Nantale", "Naomi", "Napea", "Nara", "Narda", "Narmada", "Nasiche",
|
||||||
|
"Nastassia", "Natalie", "Natane", "Natasha", "Natesa", "Naysa", "Nazirqah", "Neala", "Neci", "Nediva", "Neely", "Nekane",
|
||||||
|
"Nell", "Neola", "Neoma", "Neona", "Neria", "Nerine", "Nerissa", "Netti", "Neva", "Nevada", "Neysa", "Nicia", "Nicola",
|
||||||
|
"Nicole", "Nicolette", "Nika", "Nikki", "Nimah", "Nina", "Niobe", "Niola", "Nira", "Nirvelli", "Nissa", "Nita", "Nitara",
|
||||||
|
"Nixie", "Noel", "Noelani", "Noella", "Nolita", "Nona", "Nona", "Nora", "Norah", "Noreen", "Nori", "Noriko", "Norma", "Nydia",
|
||||||
|
"Nyrna", "Nyssa", "Obelia", "Octavia", "Odelia", "Odelia", "Odera", "Odessa", "Odetta", "Odette", "Odile", "Ohanna",
|
||||||
|
"Okelani", "Olathe", "Olayinka", "Olesia", "Olga", "Oliana", "Olinda", "Olivette", "Olivia", "Ona", "Onida", "Opal",
|
||||||
|
"Ophelia", "Oralie", "Orane", "Orenda", "Oriana", "Orianna", "Oriel", "Oriole", "Orlantha", "Ornidaa", "Paige", "Pakuna",
|
||||||
|
"Palmiera", "Paloma", "Pamela", "Pandita", "Pandora", "Panthea", "Pantzike", "Panya", "Panyin", "Pascale", "Patia",
|
||||||
|
"Patience", "Patricia", "Patsy", "Paula", "Paulette", "Pauline", "Pavla", "Pazia", "Pearl", "Peg", "Peggy", "Pelagia",
|
||||||
|
"Pemba", "Penda", "Penelope", "Peninna", "Penny", "Penthea", "Peony", "Perdita", "Perouze", "Persis", "Petra", "Phaedra",
|
||||||
|
"Phedra", "Philomena", "Phoebe", "Phylis", "Phyllis", "Pia", "Pier", "Pila", "Piper", "Polly", "Poloma", "Porche", "Portia",
|
||||||
|
"Priscilla", "Prudence", "Prudy", "Pyrena", "Pythia", "Qamra", "Queena", "Quella", "Quenby", "Quintina", "Quiterie", "Rachel",
|
||||||
|
"Radella", "Radinka", "Rae", "Rai", "Raizel", "Ramla", "Ramona", "Ramya", "Randie", "Rane", "Ranee", "Rani", "Raquel",
|
||||||
|
"Rashida", "Rasine", "Ratri", "Raven", "Rawnie", "Rayna", "Raynell", "Raziya", "Reba", "Rebecca", "Regan", "Regina", "Reidun",
|
||||||
|
"Remy", "Rena", "Renata", "Rene", "Renee", "Rhea", "Rhiamon", "Rhianne", "Rhiannon", "Rhoda", "Rhodanthe", "Rhonda", "Rhonna",
|
||||||
|
"Rhyssa", "Ria", "Riane", "Rica", "Rihana", "Rikki", "Rio", "Risa", "Rita", "Riva", "Roanna", "Roberta", "Robin", "Robyn",
|
||||||
|
"Rochelle", "Rohanna", "Rona", "Rorie", "Rosa", "Rosalind", "Rosalinda", "Rosalinde", "Rosaline", "Rosanne", "Rose",
|
||||||
|
"Roseanne", "Rosemarie", "Rosemary", "Rowena", "Roxana", "Roxanne", "Ruby", "Rumer", "Ruth", "Ruthann", "Ryann", "Ryanne",
|
||||||
|
"Ryba", "Ryssa", "Saba", "Sabina", "Sabiny", "Sabirah", "Sabra", "Sabrina", "Sacha", "Sachi", "Sade", "Sadira", "Saffi",
|
||||||
|
"Safiya", "Sagara", "Saidah", "Sakari", "Sakinah", "Sakti", "Sakura", "Salihah", "Salimah", "Salina", "Sally", "Salome",
|
||||||
|
"Samantha", "Samara", "Samirah", "Sancia", "Sandia", "Sandra", "Sandrine", "Sandya", "Sara", "Sarah", "Sarai", "Saraid",
|
||||||
|
"Saree", "Sarena", "Sari", "Sarisha", "Sasha", "Sashenka", "Satinka", "Savanna", "Saxon", "Scotia", "Searlait", "Season",
|
||||||
|
"Sebasten", "Seema", "Sela", "Selena", "Selina", "Selma", "Semele", "Senta", "Serafina", "Serilda", "Sesha", "Shaine",
|
||||||
|
"Shakira", "Shako", "Shammara", "Shana", "Shanata", "Shandra", "Shandy", "Shani", "Shanley", "Shanna", "Shannon", "Shantay",
|
||||||
|
"Shantha", "Sharman", "Sharon", "Sharri", "Shashi", "Shawn", "Shayndel", "Sheba", "Sheena", "Sheila", "Shela", "Shelby",
|
||||||
|
"Shelley", "Shelly", "Sherri", "Shika", "Shin", "Shina", "Shira", "Shirley", "Shobi", "Shoshana", "Sibley", "Sibongile",
|
||||||
|
"Sibyl", "Sidonia", "Sidra", "Sierra", "Sigourney", "Siham", "Sileas", "Silva", "Silvia", "Simba", "Simone", "Sine", "Sinead",
|
||||||
|
"Siobhan", "Siran", "Sirena", "Siroun", "Sitara", "Sitembile", "Siv", "Sive", "Skyler", "Sofi", "Solana", "Solange",
|
||||||
|
"Soledad", "Solita", "Sondra", "Sonia", "Sonja", "Sonya", "Sophia", "Sophie", "Sophronia", "Spica", "Stacey", "Stacia",
|
||||||
|
"Stacy", "Stefania", "Stella", "Stephani", "Stephanie", "Ster", "Stesha", "Stockard", "Storm", "Sukatai", "Suki", "Sumi",
|
||||||
|
"Summer", "Sun", "Susan", "Susanna", "Suzanne", "Svetlana", "Sybil", "Sydelle", "Sydney", "Syeira", "Sylvia", "Syna", "Synia",
|
||||||
|
"Tabitha", "Taci", "Tacita", "Tadi", "Taffy", "Tahirah", "Tai", "Taima", "Tainn", "Taipa", "Taite", "Taka", "Takara",
|
||||||
|
"Takiyah", "Takoda", "Talasi", "Tale", "Talia", "Talia", "Talitha", "Tallulah", "Tam", "Tama", "Tamara", "Tamary", "Tamma",
|
||||||
|
"Tammy", "Tanaka", "Tani", "Tansy", "Tanya", "Tao", "Tara", "Tate", "Tatyana", "Tawnie", "Tawny", "Tayce", "Taylor", "Teague",
|
||||||
|
"Tehya", "Tekla", "Temina", "Terentia", "Terese", "Terrilyn", "Tertia", "Teryn", "Tesia", "Tess", "Tessa", "Thadea", "Thais",
|
||||||
|
"Thalassa", "Thalia", "Than", "Thana", "Thara", "Thea", "Thekla", "Thelma", "Theodosia", "Theone", "Thera", "Thirza", "Thora",
|
||||||
|
"Thyra", "Tia", "Tiara", "Tienette", "Tierney", "Tierra", "Tiffany", "Tilda", "Timandra", "Tina", "Tiponya", "Tirza",
|
||||||
|
"Tivona", "Tobey", "Tola", "Tora", "Tori", "Tory", "Tosia", "Tove", "Tracey", "Tracy", "Treasa", "Tresa", "Treva", "Trianon",
|
||||||
|
"Tricia", "Trilby", "Trina", "Trind", "Trish", "Trisha", "Trudy", "Tryne", "Tryphena", "Tyne", "Ula", "Ulani", "Ultima",
|
||||||
|
"Uma", "Una", "Undine", "Undine", "Urania", "Uriana", "Ursula", "Uta", "Vala", "Valentina", "Valeria", "Valerie", "Valeska",
|
||||||
|
"Valonia", "Valora", "Vanda", "Vanessa", "Vanora", "Vanya", "Vashti", "Veda", "Velika", "Velma", "Venesssa", "Vera", "Verena",
|
||||||
|
"Verity", "Veronica", "Vesta", "Vevila", "Victoria", "Vidonia", "Violet", "Violet", "Violetta", "Virginia", "Viridis",
|
||||||
|
"Viveka", "Vivian", "Voleta", "Vrinda", "Wakanda", "Wanda", "Waneta", "Wendy", "Whilhelmina", "Whitney", "Wijdan", "Willow",
|
||||||
|
"Wilma", "Wilona", "Winda", "Winema", "Winifred", "Winna", "Winona", "Wynee", "Wynn", "Wynona", "Xanthe", "Xaveria",
|
||||||
|
"Xaviera", "Xena", "Xenia", "Ximena", "Xylia", "Xylona", "Yachne", "Yanice", "Yarmilla", "Yasmeen", "Yasmin", "Yelinda",
|
||||||
|
"Yenene", "Yesmina", "Yetta", "Yeva", "Yokiko", "Yolanda", "Yolie", "Yonina", "Yovela", "Yvella", "Yvette", "Yvonne", "Zada",
|
||||||
|
"Zahara", "Zahirah", "Zahra", "Zakia", "Zalea", "Zalika", "Zaltana", "Zandra", "Zara", "Zarah", "Zaza", "Zehava", "Zelda",
|
||||||
|
"Zelenka", "Zelia", "Zella", "Zena", "Zenaide", "Zenia", "Zerlinda", "Zeva", "Zevida", "Zia", "Ziazan", "Zigana", "Zila",
|
||||||
|
"Zina", "Zinnia", "Zita", "Zoe", "Zola", "Zona", "Zora", "Zorah", "Zorda", "Zosia", "Zuleika", "Zulema", "Zuza", "Zuzanny"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "male",
|
||||||
|
"names": [
|
||||||
|
"Aaron", "Aasin", "Abbott", "Abdel", "Abdiel", "Abel", "Abijah", "Abner", "Abraham", "Abran", "Ace", "Achilles", "Ackerley",
|
||||||
|
"Adair", "Adam", "Addison", "Adeben", "Adem", "Adiran", "Adlai", "Adler", "Adley", "Admon", "Adolph", "Adon", "Adonis",
|
||||||
|
"Adrian", "Adriel", "Aeneas", "Agustin", "Ahearn", "Ahmik", "Ahren", "Aidan", "Aiken", "Aimery", "Aitan", "Ajayi", "Akando",
|
||||||
|
"Akbaar", "Akello", "Akil", "Akshay", "Alan", "Aland", "Alano", "Alaric", "Alastair", "Alben", "Albert", "Alcander", "Alcott",
|
||||||
|
"Alden", "Alder", "Aldrick", "Alec", "Alek", "Aleksy", "Aleron", "Aleser", "Alex", "Alexander", "Alfred", "Alger", "Alim",
|
||||||
|
"Alistair", "Allaard", "Allan", "Allard", "Allen", "Alonzo", "Alphonse", "Alphonso", "Alston", "Altair", "Alton", "Alvin",
|
||||||
|
"Amadeo", "Amadi", "Amado", "Ambrose", "Amiel", "Ammon", "Amos", "Amsden", "Anders", "Andre", "Andreus", "Andrew", "Andrey",
|
||||||
|
"Andries", "Angelo", "Angus", "Anker", "Anoki", "Ansel", "Anselme", "Ansley", "Anson", "Anthony", "Antonio", "Anwar",
|
||||||
|
"Archer", "Archibald", "Ardon", "Aren", "Ares", "Argus", "Ari", "Aricin", "Arion", "Aristo", "Aristotle", "Arkin", "Arlen",
|
||||||
|
"Arley", "Arlin", "Arlo", "Arman", "Armen", "Armon", "Armstrong", "Arne", "Arnold", "Arnon", "Aron", "Arpiar", "Arsen",
|
||||||
|
"Arsenio", "Arthur", "Ashby", "Asher", "Ashford", "Ashlin", "Ashon", "Ashur", "Athan", "Atheron", "Atman", "Audric", "Audun",
|
||||||
|
"Augustin", "Augustus", "Aurek", "Austin", "Averill", "Avery", "Axel", "Bae", "Bailey", "Baingana", "Bakari", "Balbo",
|
||||||
|
"Balder", "Baldwin", "Bale", "Balendin", "Bali", "Balin", "Balint", "Bancroft", "Bandele", "Bane", "Banning", "Baran",
|
||||||
|
"Barclay", "Barden", "Bardo", "Bardon", "Barnabas", "Barnaby", "Barnett", "Barney", "Baron", "Barrett", "Barry", "Barse",
|
||||||
|
"Bart", "Barth", "Bartholomew", "Barton", "Basil", "Bastiaan", "Baul", "Bavol", "Baxter", "Bay", "Bayani", "Bayard", "Baylor",
|
||||||
|
"Bazyli", "Beacan", "Beagan", "Beaman", "Beau", "Beaumont", "Beauregard", "Beck", "Beldon", "Belen", "Bem", "Beman", "Ben",
|
||||||
|
"Benedict", "Benen", "Benjamin", "Bennett", "Benson", "Bent", "Bentley", "Benton", "Berenger", "Bergren", "Berk", "Berkeley",
|
||||||
|
"Bernard", "Bersh", "Bert", "Berthold", "Berton", "Bertram", "Beval", "Bevan", "Bialy", "Bilal", "Bishop", "Bitalo", "Bjorn",
|
||||||
|
"Blade", "Blaine", "Blair", "Blaise", "Blake", "Blaz", "Blorn", "Bo", "Boden", "Bogart", "Bohdan", "Bolton", "Bond", "Booker",
|
||||||
|
"Boone", "Borden", "Boris", "Botan", "Bowie", "Bowman", "Boyce", "Boyd", "Boyden", "Brad", "Braden", "Bradford", "Bradney",
|
||||||
|
"Brady", "Bram", "Bran", "Brand", "Brandeis", "Brandon", "Brant", "Braxton", "Bray", "Braz", "Brazil", "Bren", "Brencis",
|
||||||
|
"Brendan", "Brendon", "Brennan", "Brent", "Brentan", "Bret", "Brett", "Brewster", "Briac", "Brian", "Briand", "Brice",
|
||||||
|
"Brieg", "Brinley", "Brishen", "Brock", "Broderick", "Brodny", "Brody", "Bronson", "Bront", "Bruce", "Bruno", "Brutus",
|
||||||
|
"Bryan", "Bryant", "Bryce", "Bryson", "Buck", "Bud", "Budo", "Burgess", "Burhan", "Burian", "Burke", "Burl", "Burr", "Burton",
|
||||||
|
"Byran", "Byron", "Cadeo", "Cador", "Caedmon", "Cailan", "Cain", "Caine", "Calder", "Caldwell", "Caleb", "Calvin", "Cam",
|
||||||
|
"Camden", "Cameron", "Candan", "Canton", "Canute", "Carden", "Carey", "Carl", "Carlin", "Carlo", "Carlos", "Carlton", "Carr",
|
||||||
|
"Carrick", "Carrocio", "Carroll", "Carson", "Carson", "Carter", "Carver", "Casey", "Casper", "Cassidy", "Cassius", "Castel",
|
||||||
|
"Cato", "Caton", "Cavan", "Ceasar", "Cecil", "Cedric", "Cemal", "Chad", "Chadwick", "Chaim", "Chal", "Chale", "Chalmers",
|
||||||
|
"Chander", "Chandler", "Chane", "Chaney", "Channing", "Chapin", "Chapman", "Charles", "Charlton", "Chase", "Chatha",
|
||||||
|
"Chauncy", "Chayton", "Chen", "Cheney", "Chester", "Chet", "Chevalier", "Chike", "Chin", "Christian", "Christoph",
|
||||||
|
"Christopher", "Christos", "Chuck", "Ciceron", "Ciro", "Clarence", "Clark", "Claude", "Clay", "Clayton", "Clement",
|
||||||
|
"Cleveland", "Clifford", "Clifton", "Clint", "Clinton", "Clive", "Clyde", "Cody", "Colby", "Cole", "Coleman", "Colin",
|
||||||
|
"Collin", "Colon", "Colton", "Coman", "Condon", "Connor", "Conrad", "Conway", "Corbett", "Corbin", "Corcoran", "Cordell",
|
||||||
|
"Corey", "Cornelius", "Cort", "Coty", "Courtland", "Craig", "Crandall", "Creighton", "Crispin", "Crosby", "Cullen", "Cullin",
|
||||||
|
"Culver", "Curran", "Curtis", "Cynric", "Cyrano", "Cyril", "Cyrus", "Dag", "Dagan", "Dakarai", "Dakota", "Dale", "Dallin",
|
||||||
|
"Dalton", "Daly", "Damek", "Damen", "Damian", "Damien", "Damion", "Damon", "Dana", "Dane", "Daniel", "Danior", "Dannik",
|
||||||
|
"Dante", "Daren", "Darien", "Dario", "Darnell", "Darrel", "Darrell", "Darren", "Daryl", "David", "Davin", "Davis", "Deacon",
|
||||||
|
"Dean", "Decker", "Delaney", "Delano", "Delbert", "Dellan", "Delmore", "Delsin", "Deman", "Dempsey", "Dempster", "Denby",
|
||||||
|
"Dennis", "Dennys", "Denton", "Denver", "Der", "Derek", "Derrick", "Derry", "Deverell", "Devin", "Devlin", "Dewey",
|
||||||
|
"Diederik", "Diego", "Dieter", "Dillon", "Dimitri", "Dirk", "Dobry", "Dominic", "Dominick", "Donald", "Donatien", "Donato",
|
||||||
|
"Donnelley", "Donnelly", "Donovan", "Doron", "Dougie", "Douglas", "Douglass", "Dov", "Doyle", "Drake", "Drew", "Duane",
|
||||||
|
"Dugan", "Duglas", "Duncan", "Dunstan", "Durand", "Durriken", "Dusan", "Dustin", "Dutch", "Dwayne", "Dwight", "Dyami",
|
||||||
|
"Dyastro", "Dylan", "Dymas", "Eamon", "Earl", "Earle", "Eaton", "Edan", "Edgan", "Edgar", "Edison", "Edmund", "Edrin",
|
||||||
|
"Edward", "Edwin", "Edwin", "Egan", "Einar", "Elad", "Elden", "Eldroth", "Elek", "Eli", "Elias", "Elijah", "Elkan", "Ellery",
|
||||||
|
"Elliot", "Elliott", "Ellis", "Ellsworth", "Elmer", "Elmo", "Elston", "Elton", "Elwood", "Emanuel", "Emil", "Emilio",
|
||||||
|
"Emmett", "Emo", "Enoch", "Enrico", "Enrique", "Ephraim", "Erek", "Eric", "Erik", "Ernest", "Erol", "Errol", "Erskine",
|
||||||
|
"Erwin", "Eryx", "Essien", "Esteban", "Ethan", "Eugene", "Evan", "Evander", "Everett", "Evzen", "Ezekial", "Ezra", "Fabio",
|
||||||
|
"Fairfax", "Farley", "Farrell", "Faxon", "Felix", "Felix", "Fenn", "Fenton", "Fergus", "Ferran", "Ferris", "Fielding",
|
||||||
|
"Filbert", "Filmore", "Finlay", "Finley", "Finn", "Finnigan", "Fisk", "Fitzgerald", "Fletcher", "Flindo", "Flint", "Floyd",
|
||||||
|
"Flynn", "Forbes", "Forrest", "Forsythe", "Foster", "Foster", "Francis", "Franek", "Frank", "Franklin", "Frasier", "Frazer",
|
||||||
|
"Frazier", "Fred", "Frederick", "Fremont", "Fritz", "Fuller", "Fulton", "Gabe", "Gabriel", "Gage", "Galen", "Galeno",
|
||||||
|
"Galvin", "Gamble", "Gannon", "Gareth", "Garfield", "Gargan", "Garner", "Garrett", "Garrick", "Garridan", "Garrison",
|
||||||
|
"Garritt", "Garth", "Garvin", "Gary", "Gaspar", "Gaston", "Gavin", "Gavrie", "Gaylord", "Gaynor", "Geoff", "Geoffrey",
|
||||||
|
"Geoffry", "George", "Gerard", "Gerik", "Germain", "Gerry", "Gideon", "Gilberto", "Giles", "Ginton", "Givon", "Glen", "Glenn",
|
||||||
|
"Glenno", "Godfrey", "Gordon", "Gordy", "Gorman", "Grady", "Graham", "Gram", "Granger", "Grant", "Granville", "Grayson",
|
||||||
|
"Greg", "Greger", "Gregor", "Gregory", "Gresham", "Griffen", "Griffith", "Guilhem", "Gunnar", "Gunther", "Gus", "Gustave",
|
||||||
|
"Guthrie", "Guy", "Hackett", "Hadden", "Hadi", "Hadley", "Hadrian", "Hagan", "Hal", "Halden", "Hale", "Halian", "Halsey",
|
||||||
|
"Hamilton", "Hamlin", "Hank", "Hans", "Harden", "Hardy", "Harith", "Harlan", "Harman", "Harold", "Harper", "Harrison",
|
||||||
|
"Harry", "Hart", "Hartley", "Harvey", "Hassan", "Hastin", "Hastings", "Hayden", "Hayes", "Haynes", "Heath", "Hector",
|
||||||
|
"Helaku", "Henning", "Henry", "Herbert", "Herman", "Herschel", "Hilliard", "Hilton", "Hiroshi", "Hobart", "Hogan", "Holden",
|
||||||
|
"Holt", "Homes", "Horace", "Horton", "Houston", "Howard", "Howrence", "Hoyt", "Hugh", "Hugo", "Humphrey", "Hunter", "Huntley",
|
||||||
|
"Hyman", "Iain", "Ian", "Ilias", "Ingmar", "Ingram", "Ira", "Irvin", "Irving", "Irwin", "Isaac", "Isaiah", "Israel", "Itzak",
|
||||||
|
"Ivan", "Ivar", "Jabari", "Jabir", "Jack", "Jacob", "Jacobe", "Jacques", "Jacson", "Jacy", "Jafar", "Jagger", "Jake", "Jal",
|
||||||
|
"Jaleel", "Jamal", "James", "Jamison", "Jared", "Jarek", "Jarman", "Jaron", "Jarrod", "Jarvis", "Jason", "Jasper", "Javan",
|
||||||
|
"Javier", "Jay", "Jebidiah", "Jed", "Jedidiah", "Jedrek", "Jeff", "Jeffrey", "Jelani", "Jeremiah", "Jeremy", "Jerolin",
|
||||||
|
"Jerome", "Jeromy", "Jerzy", "Jesse", "Jessee", "Jethro", "Jibril", "Jin", "Jiro", "Jivin", "Joel", "Johann", "John", "Jolon",
|
||||||
|
"Jonah", "Jonathan", "Jonathon", "Jordan", "Jordon", "Jorgen", "Jorvin", "Joseph", "Joshua", "Judd", "Jude", "Julian",
|
||||||
|
"Julius", "Juma", "Jung", "Justin", "Kadin", "Kai", "Kaikara", "Kaladin", "Kalb", "Kale", "Kalil", "Kalkin", "Kalman",
|
||||||
|
"Kamal", "Kane", "Kaniel", "Kardal", "Karl", "Karsten", "Kasch", "Kasen", "Kaspar", "Kateb", "Kayin", "Keane", "Kearney",
|
||||||
|
"Kedar", "Keefe", "Keelan", "Keenan", "Kegan", "Keir", "Keir", "Keith", "Kelby", "Keleman", "Kell", "Kellen", "Kelvin", "Ken",
|
||||||
|
"Kenan", "Kendall", "Kendrick", "Kenelm", "Kenley", "Kennard", "Kennedy", "Kenneth", "Kent", "Kenton", "Kenyon", "Keona",
|
||||||
|
"Ker", "Kerby", "Kern", "Kerry", "Kers", "Kersen", "Kerwin", "Kester", "Kevin", "Khalil", "Khoury", "Kiefer", "Kieran",
|
||||||
|
"Kiernan", "Killian", "Kin", "Kinnel", "Kinsey", "Kintan", "Kip", "Kirby", "Kirk", "Kiyoshi", "Kliftin", "Klog", "Komor",
|
||||||
|
"Kontar", "Krischan", "Krister", "Kurt", "Kyle", "Kyler", "Laethan", "Laird", "Lamar", "Lamont", "Lance", "Lander", "Landon",
|
||||||
|
"Lane", "Lang", "Larry", "Lars", "Lawler", "Lawrence", "Lazarus", "Lear", "Lee", "Leif", "Leighton", "Leland", "Len",
|
||||||
|
"Lennon", "Lennor", "Lennox", "Lensar", "Leo", "Leon", "Leonard", "Leron", "Leroy", "Lester", "Lev", "Levi", "Lewis", "Lewis",
|
||||||
|
"Li", "Liam", "Like", "Lincoln", "Lindsey", "Lionel", "Llewellyn", "Lloyd", "Logan", "Loren", "Lorenzo", "Lorne", "Louis",
|
||||||
|
"Lowell", "Lucas", "Lucian", "Luis", "Luke", "Lukyan", "Lunt", "Luther", "Lyle", "Lyndon", "Lysander", "Mac", "Macer", "Mack",
|
||||||
|
"Mackenzie", "Magnus", "Malcolm", "Malik", "Manco", "Mandek", "Mander", "Manfred", "Manning", "Mansur", "Manuel", "Marc",
|
||||||
|
"Marcos", "Marcus", "Marden", "Marek", "Mario", "Mark", "Markham", "Markos", "Marlin", "Marlon", "Marlon", "Marshal",
|
||||||
|
"Marshall", "Marsten", "Martin", "Martingo", "Marvin", "Mason", "Matai", "Mateo", "Mather", "Matthew", "Matthias", "Maurice",
|
||||||
|
"Max", "Maxwell", "Maynard", "Mayon", "Mead", "Meka", "Mercer", "Merill", "Merle", "Merrick", "Merrik", "Meyer", "Micael",
|
||||||
|
"Michael", "Migon", "Miguel", "Mike", "Mikkel", "Mikos", "Miles", "Miles", "Milo", "Milton", "Miner", "Mitchell", "Monroe",
|
||||||
|
"Monte", "Morgan", "Morley", "Morris", "Mortimer", "Morton", "Morven", "Morz", "Motega", "Mukasa", "Murdoch", "Murdock",
|
||||||
|
"Murphy", "Myles", "Myron", "Naeem", "Nalren", "Nantan", "Nathan", "Nathaniel", "Neal", "Neale", "Neil", "Nelek", "Nelson",
|
||||||
|
"Neron", "Nestor", "Nevan", "Neville", "Nevin", "Nevin", "Nicanor", "Nicholas", "Nigel", "Nikolos", "Nils", "Noah", "Nodin",
|
||||||
|
"Noe", "Nolan", "Norbert", "Norman", "Norris", "Norton", "Nuri", "Nyle", "Oakes", "Oakley", "Ochen", "Octavius", "Odell",
|
||||||
|
"Odin", "Odion", "Odon", "Ogden", "Olaf", "Olin", "Oliver", "Omar", "Ordano", "Oren", "Orion", "Orman", "Ormand", "Orrin",
|
||||||
|
"Orson", "Orville", "Oscar", "Osgood", "Osmond", "Otis", "Otto", "Owen", "Paco", "Palmer", "Paolo", "Paris", "Parker",
|
||||||
|
"Parnell", "Pascal", "Patamon", "Patrick", "Patterson", "Patton", "Paul", "Paulin", "Pavel", "Paxton", "Payton", "Pearce",
|
||||||
|
"Peder", "Pembroke", "Penn", "Percival", "Perry", "Peter", "Peyton", "Phearcy", "Philip", "Phillip", "Phillippe", "Phoenix",
|
||||||
|
"Pierce", "Pierre", "Pierson", "Pilan", "Platon", "Porter", "Prentice", "Prescot", "Prescott", "Preston", "Quentin",
|
||||||
|
"Quenton", "Quillan", "Quincy", "Quinlan", "Quinn", "Rad", "Radcliffe", "Radman", "Rafael", "Rafferty", "Ragnar", "Raidon",
|
||||||
|
"Raleigh", "Ralph", "Ramiro", "Ramon", "Ramsay", "Ramsey", "Ranard", "Rance", "Randall", "Randolph", "Ranen", "Ranger",
|
||||||
|
"Rankin", "Raoul", "Raphael", "Raul", "Ravi", "Ravi", "Ravid", "Ray", "Raymond", "Raynor", "Reade", "Redford", "Redmond",
|
||||||
|
"Reed", "Reese", "Reeve", "Regan", "Reginald", "Regis", "Remington", "Renaldo", "Rendor", "Renfry", "Renny", "Reuben", "Rex",
|
||||||
|
"Reyhan", "Rhett", "Rhett", "Rhys", "Ricardo", "Richard", "Richter", "Rico", "Rider", "Ridgley", "Rigby", "Riley", "Rimon",
|
||||||
|
"Ringo", "Ringo", "Riodan", "Riordan", "Roarke", "Robert", "Roberto", "Robi", "Rockwell", "Rod", "Roderick", "Rodman",
|
||||||
|
"Rodney", "Rodrigo", "Roger", "Roi", "Roland", "Roldan", "Rolf", "Ronald", "Ronan", "Rooney", "Rory", "Roscoe", "Ross",
|
||||||
|
"Roth", "Rowan", "Rowland", "Roy", "Royce", "Ruben", "Rudd", "Rudi", "Rudyard", "Rufus", "Runako", "Ruskin", "Russ",
|
||||||
|
"Russell", "Rusty", "Rutherford", "Rutledge", "Ryan", "Ryder", "Rylan", "Sahale", "Sahen", "Salim", "Saloman", "Sam",
|
||||||
|
"Samien", "Sammon", "Samson", "Samuel", "Sanders", "Sandon", "Sandor", "Sanford", "Sargent", "Sarngin", "Sarojin", "Saul",
|
||||||
|
"Saunders", "Sawyer", "Saxon", "Schuyler", "Scott", "Sean", "Sebastian", "Sebastien", "Seif", "Selby", "Senon", "Sergio",
|
||||||
|
"Seth", "Seung", "Severin", "Sevilin", "Seward", "Seymour", "Shane", "Shawn", "Shea", "Sheffield", "Sheldon", "Shen",
|
||||||
|
"Sheridan", "Sherman", "Sherwin", "Sherwood", "Shing", "Shunnar", "Sidney", "Siegfried", "Silas", "Simon", "Sivan", "Skip",
|
||||||
|
"Skyler", "Slade", "Slevin", "Smith", "Solomon", "Sorgan", "Soterios", "Spalding", "Spencer", "Spenser", "Standford",
|
||||||
|
"Stanley", "Stanton", "Stasio", "Stefan", "Stephan", "Stephen", "Sterling", "Stevan", "Steve", "Steven", "Stewart", "Stoke",
|
||||||
|
"Stoyan", "Strom", "Stuart", "Subrey", "Sulaiman", "Sullican", "Sumner", "Sutherland", "Sutton", "Sven", "Sylvester", "Tab",
|
||||||
|
"Tabari", "Tad", "Tadi", "Tai", "Tajo", "Talbart", "Talbot", "Talman", "Talos", "Tanek", "Tanner", "Tano", "Taro", "Tate",
|
||||||
|
"Taurin", "Taylor", "Tem", "Terence", "Terrence", "Terrill", "Terry", "Thaddeus", "Thai", "Thaman", "Thane", "Thanos",
|
||||||
|
"Theobald", "Theodore", "Theron", "Thierry", "Thomas", "Thorpe", "Thurston", "Thurston", "Tibalt", "Tiernan", "Timothy",
|
||||||
|
"Titus", "Tobias", "Toby", "Tod", "Todd", "Tomas", "Tong", "Tor", "Torin", "Torrance", "Townsend", "Travers", "Travis",
|
||||||
|
"Tremain", "Tremaine", "Trent", "Trevor", "Trey", "Tristan", "Troy", "Tryon", "Tucker", "Tully", "Tyee", "Tyler", "Tymon",
|
||||||
|
"Tyrone", "Upton", "Uriah", "Urian", "Van", "Vance", "Vaughn", "Vern", "Vernon", "Victor", "Vincent", "Vinson", "Virgil",
|
||||||
|
"Vito", "Vlad", "Vladimir", "Vokes", "Volf", "Wade", "Wagner", "Walden", "Waldo", "Walker", "Wallace", "Wally", "Walter",
|
||||||
|
"Ward", "Warner", "Warren", "Watson", "Waylan", "Wayland", "Waylon", "Wayne", "Webb", "Webster", "Wendell", "Wesley",
|
||||||
|
"Weston", "Weylin", "Whitaker", "Wilfen", "Will", "Willard", "Willem", "William", "Wilson", "Winston", "Winthrop", "Wlby",
|
||||||
|
"Woody", "Wyatt", "Xavier", "Xenos", "Xerxes", "Ximen", "Yakecan", "Yale", "Yancey", "Yardley", "Yarin", "Yerik", "Yero",
|
||||||
|
"Yervant", "York", "Yusuf", "Yves", "Zachariah", "Zachary", "Zackery", "Zaid", "Zaide", "Zane", "Zaniel", "Zann", "Zared",
|
||||||
|
"Zarek", "Zeke", "Zenon", "Zion", "Ziven", "Zorn"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "female elf brigand",
|
||||||
|
"names": [
|
||||||
|
"Bergeni", "Callylili", "Elaniana", "Hanalea", "Jerliai", "Kaitha", "Mesanial", "Oquila", "Sylievo", "Uliala", "Vimaly",
|
||||||
|
"Yeldemi"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "male elf brigand",
|
||||||
|
"names": [
|
||||||
|
"Castoriel", "Celebrindal", "Chathmiru", "Davlien", "Gerrath", "Jerraintho", "Lewys", "Misran", "Nandrien", "Olonal",
|
||||||
|
"Peorilien", "Regornolas", "Rylvarn", "Silnaliel", "Talendeor", "Uomo", "Verlolas"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
@ -1,654 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
|
||||||
<names>
|
|
||||||
<namelist type="tokuno male">
|
|
||||||
Dosyaku, Warimoto, Ogino, Soutatsu, Wajida, Batsu, Hikoza, Adai, Ukita, Sanesue,
|
|
||||||
Chihu, Akiosa, Riku, Kongou, Numata, Kirzahn, Gakudai, Nakai, Ukita, Ashimaru,
|
|
||||||
Fuha, Gakudai, Numata, Waricika, Chihu, Sanesue, Yose, Shinsirou, Yasuke, Akisuke,
|
|
||||||
Naozumi, Numatta, Kichizo, Nasuno, Akaba, Arikoto, Kengi, Magosuke
|
|
||||||
</namelist>
|
|
||||||
<namelist type="tokuno female">
|
|
||||||
Ahara, Yume, Ayane, Yuki, Wakae, Akala, Ikuha, Wayu, Haru, Zannia, Shino, Agate,
|
|
||||||
Akashi, Niji, Yochika, Toyoka, Wayo, Iroha, Nakai, Ayatsumi, Wayu, Yumiha, Enji,
|
|
||||||
Aasin, Akela, Chiwa, Suni, Wakumi, Ruri, Tama
|
|
||||||
</namelist>
|
|
||||||
<namelist type="bird">
|
|
||||||
a wren, a swallow, a warbler, a nuthatch, a chickadee, a thrush,
|
|
||||||
a nightingale, a starling, a skylark, a finch, a crossbill, a sparrow, a towhee,
|
|
||||||
a woodpecker, a kingfisher, a tern, a plover, a lapwing, a hawk, a cuckoo, a swift
|
|
||||||
</namelist>
|
|
||||||
<namelist type="ancient lich">
|
|
||||||
Kaltivel, Anshu, Maliel, Baratoz, Almonjin
|
|
||||||
</namelist>
|
|
||||||
<namelist type="balron">
|
|
||||||
the Lord of the Abyss, the Collector of Souls, the Slayer
|
|
||||||
</namelist>
|
|
||||||
<namelist type="darknight creeper">
|
|
||||||
Pariah, Ydoc Llessue, Zhaan, Lorbna, Gragok, Thranger, Krygar,
|
|
||||||
Grothelfiend, Centibis, Farthak, Laitesach, Crenabil, Krullus, Legron,
|
|
||||||
Noirkrach, Blassarrabb, Gragragron, Vendodroth, Flaggroth, Vilithrar
|
|
||||||
</namelist>
|
|
||||||
<namelist type="impaler">
|
|
||||||
Po-Kor, Manglar, Verolyn, Gathfe, Skred, Flandrith, Stavinfeks,
|
|
||||||
Steelbane, Crarigor, Empalk, Perfus, Cassiel, Magor, Xtul, Vladeer, Scrill,
|
|
||||||
Slix, Ix, Selminus, Victux
|
|
||||||
</namelist>
|
|
||||||
<namelist type="demon knight">
|
|
||||||
Hrallath, Heksen, Peinsluth, Keelus, Kra'an, Ankou, Turi'el, Azazel,
|
|
||||||
Armarus, Grigorus, Ga'ahp, Therion, Peirazo, Ponerus, Arhaios Ophis,
|
|
||||||
Vairocan, Arsat, Karnax, Taet Nu'uhn
|
|
||||||
</namelist>
|
|
||||||
<namelist type="shadow knight">
|
|
||||||
Oghmus, Arametheus, Terxor, Erdok, Archatrix, Jonar, Marth'Fador, Helzigar,
|
|
||||||
Tyrnak, Krakus, Marcus Fel, Lord Kaos, Doomor, Uhn, Malashim, Samael, Nelokhiel,
|
|
||||||
Montobulus, Usuhl, Zul
|
|
||||||
</namelist>
|
|
||||||
<namelist type="fire gargoyle">
|
|
||||||
a fiery gargoyle, a burning gargoyle, a smoldering gargoyle, a blistering gargoyle,
|
|
||||||
a sweltering gargoyle, a flaming gargoyle, a scorching gargoyle,
|
|
||||||
a blazing gargoyle, a searing gargoyle
|
|
||||||
</namelist>
|
|
||||||
<namelist type="gargoyle vendor">
|
|
||||||
Ansiraal, Aurlem, Betra, Draxsom, Fodus, Forbrak, ForLem, Horffe, Inforlem, Invis,
|
|
||||||
Laplem, Naxator, Quaeven, Sarpling, Silamo, Tereg, Volesh, Vraal, WisSur
|
|
||||||
</namelist>
|
|
||||||
<namelist type="centaur">
|
|
||||||
Sophanon, Caryax, Daemeox, Phlegon, Aerophus, Euforus, Pallax,
|
|
||||||
Nikaon, Licouax, Lindsaon, Bastax, Magdanon, Thayax, Aethon, Ceridus, Galenon,
|
|
||||||
Rhysus, Auramax, Aldrax, Anaxus, Luceus, Quarax, Ariax, Balarax, Vincenus,
|
|
||||||
Loxias, Birhamus, Lekax, Nyctinus, Myrsinus
|
|
||||||
</namelist>
|
|
||||||
<namelist type="ethereal warrior">
|
|
||||||
Galdrion, Briellis, Charpris, Jesurian, Agrast, Beldrion, Polis,
|
|
||||||
Arafel, Melestoref, Lanculis, Judaselo, Pietrov
|
|
||||||
</namelist>
|
|
||||||
<namelist type="pixie">
|
|
||||||
Klian, Klistra, Laeri, Ciline, Shiale, Ourie, Piepe, Liera, Sili,
|
|
||||||
Sefi, Cynthe, Nedra, Hali, Jiki, Piku, Rael, Zanne, Zut, Sini, Os, Wienne, Xian,
|
|
||||||
Ybri, Calee, Shendri, Shri
|
|
||||||
</namelist>
|
|
||||||
<namelist type="savage">
|
|
||||||
Kahl, Ghrom, Ogger, Vek, Sai'ge, Groov'h, Khaonem, Malen, Atar,
|
|
||||||
Aicee, Vaype, Halex, Yar, Hanz, Evocah, Bishor, Jelak, Adrok, Praphut, Usile,
|
|
||||||
Sann, Sabba, Prie, Atuk, Chaca, ShoJo, Baccu, Bonkie, Alli, Jexa, La'Loh, Arda,
|
|
||||||
Cordee, Lana, Lar, Araka, Rhunda, Squee, Bhora, Niha, Olaufee, Sinthe, Karawyn,
|
|
||||||
Gruwulf, Masena, Nasha, Sargaza
|
|
||||||
</namelist>
|
|
||||||
<namelist type="savage rider">
|
|
||||||
Kahl, Ghrom, Ogger, Vek, Sai'ge, Groov'h, Khaonem, Malen, Atar,
|
|
||||||
Aicee, Vaype, Halex, Yar, Hanz, Evocah, Bishor, Jelak, Adrok, Praphut, Usile,
|
|
||||||
Sann, Sabba, Prie, Atuk, Chaca, ShoJo, Baccu, Bonkie, Alli
|
|
||||||
</namelist>
|
|
||||||
<namelist type="savage shaman">
|
|
||||||
Jexa, La'Loh, Arda, Cordee, Lana, Lar, Araka, Rhunda, Squee,
|
|
||||||
Bhora, Niha, Olaufee, Sinthe, Karawyn, Gruwulf, Masena, Nasha, Sargaza
|
|
||||||
</namelist>
|
|
||||||
<namelist type="golem controller">
|
|
||||||
Zelik, Kronos, Zakron, Velis, Chujil, Hygraph, Dyntrall, Zarus,
|
|
||||||
Phoseph, Malkavik, Zevras, Vakel, Daklon, Zamog, Tavurk, Drakov, Zazik, Yyntrix,
|
|
||||||
Zazik, Fropoz, Noxtrag, Makzok, Galzan, Drakan, Drakzik, Vazmog
|
|
||||||
</namelist>
|
|
||||||
<namelist type="daemon">
|
|
||||||
Aamon, Agalierept, Agares, Aglasis, Aiwaz, Astaroth, Ayperos,
|
|
||||||
Azatoth, Azmodaeus, Azrael, Ba'al, Baal, Barbatos, Bathim, Bathsin, Be'elzebub,
|
|
||||||
Be'elzebubba, Bechard, Beelzebuth, Botis, Brulefer, Bucon, Buer, Clauneck,
|
|
||||||
Clitheret, Cthulhu, Druzil, El Chupacabra, Eleogap, Eliezer, Eligor, Eracove,
|
|
||||||
Faraii, Fleurety, Frimost, Frucissiere, Fruitimiere, Glassyalabolas, Guland,
|
|
||||||
Gusoyn, Hael, Haristum, Heramael, Hiepacth, Huictiigara, Humots, Khil, Maleki,
|
|
||||||
Marbas, Mephistopheles, Mersilde, Minoson, Moloch, Molech, Morail, Musisin,
|
|
||||||
Naberrs, Nebiros, Nebirots, Nyarlathotep, Pentagnony, Proculo, Pruslas, Pursan,
|
|
||||||
Rofocale, Sargatans, Satanchia, Satanciae, Segal, Sergulath, Sergutthy,
|
|
||||||
Sidragrosam, Sirchade, Surgat, Sustugriel, Tarchimache, Tarihimal, Trimasel,
|
|
||||||
Vaelfar, Wormius, Yog-Sothoth, Y'reif Eci, Zoray
|
|
||||||
</namelist>
|
|
||||||
<namelist type="evil mage lord">
|
|
||||||
Xarot the Black Archmage, Kwan Li the Lord of the Mists,
|
|
||||||
Bazerion the Wizard-Lord, Ylthallynon the Insane
|
|
||||||
</namelist>
|
|
||||||
<namelist type="evil mage">
|
|
||||||
Ronlyn, Merkul, Zasfus, Zain, Doraghir, Danaghir, Staylin,
|
|
||||||
Kraylin, Limnoch, Kranor, Kraenor, Kranostil, Kranostir, Lilithack, Terus,
|
|
||||||
Thaelin, Thulack, Jiltharis, Garigor, Banothil, Bainothil, Quain, Ilzinias,
|
|
||||||
Mardis the Avenger, Phalil the Unexpected, Lord Adnoc, Leje the Invincible,
|
|
||||||
Master Akris, Sartan, Zejron the Wild, Pitt the Elder, Puzilan the Puzzler,
|
|
||||||
Vantrom, Singhe-Dul, Tyrin Kuhl, Xarot the Black, Kwan Li, Lord of the Mists,
|
|
||||||
Viktor Blackoak, Odilion, Raith, Lord of Rats, Bazerion, the Wizard-Lord,
|
|
||||||
Tybevriat Varn, Keldor the Modoc, Magelord Varsan, Izlay the Ebonheart, Slirith
|
|
||||||
Iceblood, Alcor, Vitar, Feenark, Sang Qui, Lyticant, Aegnor, Aelfric, Ainvar,
|
|
||||||
Arazion, Ardarion, Arkanis, Athrax, Barghest, Baros, Begarin, Beynlore, Burat,
|
|
||||||
Cairne, Carthon, Chamdar, Ciric, Cruzado, Cyphrak, D'Harun, Daelon, Daktar,
|
|
||||||
Darvain, Dracus, Dradar, Draelin, Draenor, Durodund, Eklor, Elrak, Fangorn,
|
|
||||||
Farynthane, Galtor, Gemma, Gragus, Irian, Israfel, Jaden, Jefahn, K'shar,
|
|
||||||
Kalimus, Kallomane, Kanax, Kelnos, Kharn, Khir, Kragon, Kylnath, Larac, Lathis,
|
|
||||||
Lenroc, Lonthorynthoryl, Lorreck, Mattrick, Mazrim, Mazrim, Modrei, Morturus,
|
|
||||||
Muktar, Murdon, Murron, Myndon, Mythran, Mytor, Nabius, Nalynkal, Nazgul,
|
|
||||||
Paorin, Quillan, Rendar, Scythyn, Shilor, Sobran, Soltak, Sorz, Taban, Telzar,
|
|
||||||
Teron, Trethovian, Tyrnar, Ulath, Vandor, Vermithrax, Vlade, Volan, Wydstrin,
|
|
||||||
X'calak, Xaelin, Xandor, Xarthos, Xaxtox, Xenix, Xiltanth, Xylor, Xystil, Yazad,
|
|
||||||
Yllthane, Ylthallynon, Ythoryn, Zalifar, Zathrix, Zunrek
|
|
||||||
</namelist>
|
|
||||||
<namelist type="ratman">
|
|
||||||
Ccketakiki, Chachak, Chachaktak, Chackuk, Chak, Chaki, Chaki,
|
|
||||||
Chakreki, Chaktuki, Chakukki, Charitiki, Chatuki, Chectik, Chectik, Chek,
|
|
||||||
Chekeckaki, Cheki, Chekkakii, Cherek, Chetak, Chetickuki, Chiackukk, Chichachak,
|
|
||||||
Chichak, Chichak, Chichoki, Chichoki, Chickek, Chickek, Chickeki, Chickeki,
|
|
||||||
Chickekiaki, Chikavi, Chikchickeki, Chikckak, Chikek, Chiketckuki, Chiki,
|
|
||||||
Chikitchaki, Chiktaki, Chiritchek, Chitaviok, Chokchak, Chokirek, Chotechiki,
|
|
||||||
Ckak, Ckek, Ckekckuki, Ckeki, Ckekickuk, Ckikhiki, Ckikicheki, Ckukchik,
|
|
||||||
Ckukichek, Ctiktik, Dachek, Dackatuki, Dactuk, Dafactik, Deckarreki, Deektuk,
|
|
||||||
Defetav, Dekckuk, Detckiki, Detckuki, Detik, Dicchok, Dickiki, Dikfachok,
|
|
||||||
Ditecckek, Diwarek, Eachik, Eactiki, Ecckkekek, Eckaki, Eckechakiki, Ecketak,
|
|
||||||
Ecterek, Ectuk, Eekckuk, Eektuk, Eicchiki, Eickuki, Ekiuki, Etakheki, Etavchiki,
|
|
||||||
Etckuki, Etik, Fachchekiok, Fachok, Fackak, Fackek, Fackik, Factavi, Factik,
|
|
||||||
Fecckik, Fechaki, Feractav, Fetav, Fetckiki, Firchik, Firecheki, Fireki,
|
|
||||||
Fitactaki, Fitaki, Fitcheki, Frecckeki, Hekckeki, Hiki, Hikitchaki, Hokchek,
|
|
||||||
Ikchaki, Iki, Kackak, Kactavi, Kadicchok, Kakhoki, Kaki, Kakiki, Karrekichoki,
|
|
||||||
Katukickek, Kecckik, Kechaki, Kekachek, Kekachik, Kekkik, Kicchiki, Kichak,
|
|
||||||
Kickak, Kidikiki, Kietik, Kik, Kikechokii, Kikiaki, Kiktaki, Kirchik, Kireki,
|
|
||||||
Kireki, Kitak, Kitaki, Kitavi, Kitcheki, Ktukchok, Kukeckaki, Kuki, Kukiecckak,
|
|
||||||
Rackek, Ractav, Ratitchaki, Recckeki, Recheki, Rekchectik, Reki, Rektav,
|
|
||||||
Rektavi, Retchectik, Reteckaki, Retituki, Rikchickek, Rikecckak, Ritchek,
|
|
||||||
Ritchekckiki, Ritiki, Ritikituk, Tackik, Tactaki, Tactikiv, Tadectuk, Tak, Tak,
|
|
||||||
Taki, Taki, Taktav, Tavchichoki, Taviactak, Taviectuk, Tecckek, Techiki,
|
|
||||||
Techikickik, Teckak, Tedetik, Tekactiki, Tekchichak, Tickukitaki, Tictak,
|
|
||||||
Tidetckuki, Tikckek, Tikickeki, Titchaki, Tituki, Tukckaki, Tukitiki, Tukituki,
|
|
||||||
Vachichak, Vackuk, Vactak, Vaveckaki, Vechoki, Vectaki, Vevactak, Vevitavi,
|
|
||||||
Vitavi, Vitchak, Vitituki, Vivackuk, Vivitchak, Vovechoki, Warek, Warreki,
|
|
||||||
Wecckak, Weckaki, Wedachek, Wikchichoki, Wochickeki
|
|
||||||
</namelist>
|
|
||||||
<namelist type="lizardman">
|
|
||||||
Aissssaiss, Aisyths, Alasthsiyss, Alessitsl, Alsiths, Alssi,
|
|
||||||
Alsyth, Asahlysy, Asathsaisss, Asaysth, Asiashy, Asistsais, Asitssis, Asiyss,
|
|
||||||
Astha, Asthcieth, Astysah, Athcesth, Athys, Athysthes, Atslah, Aysthyss,
|
|
||||||
Cesthaysth, Cetys, Ciethlish, Citsy, Cythshi, Cytsi, Ekthsisthh, Essith, Estha,
|
|
||||||
Etys, Halasth, Haless, Halsasah, Hasits, Hekths, Hiiths, Hiitsl, Hissis, Hlyiss,
|
|
||||||
Hlylylyshi, Hlyshilyly, Hlysylyiss, Hlythilsyth, Hissalsthy, Hysslssi, Hsysylh,
|
|
||||||
Hthessthil, Hthissy, Htisthh, Htsiathys, Hyisass, Hysil, Hysyiss, Iasia,
|
|
||||||
Icythhlysy, Iithsissh, Iitsliss, Ilshy, Ilsyth, Isalraaat, Isassthys, Isathys,
|
|
||||||
Isiss, Isissil, Isshi, Isshlshy, Isstha, Issthas, Issthyl, Issysh, Issyt,
|
|
||||||
Isthhtis, Istis, Istththh, Isyts, Ithstsesh, Ithsy, Iththis, Itsesh, Itshas,
|
|
||||||
Itsltlish, Itsthil, Itsylh, Iyssysil, Kthystshas, Kthythes, Lasath, Lastha,
|
|
||||||
Lasthtsthih, Lesstslah, Lestha, Lilhals, Lilsyth, Lishaless, Lishath, Lissysh,
|
|
||||||
Lissyt, Lithekths, Litsylh, Llithlish, Lshyshas, Lssissi, Lsthyssy, Lsyth,
|
|
||||||
Lsythstha, Lyissisis, Lylsthy, Lylyisass, Lyshiisal, Lyssthih, Lyssthy,
|
|
||||||
Lysyiitsl, Lythiiiths, Lytsthih, Saisalasths, Saishtsi, Saisssmyss, Salsesh,
|
|
||||||
Salssi, Sasisthasth, Sasss, Sasth, Sath, Sathsthih, Sathys, Satslah, Saysth,
|
|
||||||
Scesthhals, Seshsthyl, Sessith, Shasits, Shassthy, Shisis, Shitha, Shysil,
|
|
||||||
Shythis, Siasia, Siaththh, Sicyth, Silshy, Silthyl, Sisal, Sisshi, Sisshlythi,
|
|
||||||
Sistlilh, Sithtththh, Sitsesh, Sitshas, Sitstsi, Siyss, Slahyisass, Slasath,
|
|
||||||
Slishless, Ssaisss, Ssasist, Sshiscesth, Ssisal, Ssithsiss, Ssiyth, Sssaisss,
|
|
||||||
Ssssshi, Ssthasssthas, Ssthihssthy, Ssthssss, Ssthyl, Ssthyssths, Ssyraaath,
|
|
||||||
Ssysah, Ssyshstha, Ssyssith, Ssytsth, Stasah, Sthasth, Sthasthas, Sthasthih,
|
|
||||||
Sthihaisss, Sthihasits, Sthilsthy, Sthlyly, Sthlyshi, Sthlysy, Sthlythi,
|
|
||||||
Sthmissa, Sthmyss, Sthsasist, Sthyss, Sthyasia, Sthycyth, Sthyltasah, Stissh,
|
|
||||||
Stththh, Stysah, Sycieth, Sylhsths, Syllith, Syraaat, Syshsyts, Syslish,
|
|
||||||
Syththil, Sythysth, Sytlilh, Sytlish, Sytsyth, Sytsyts, Syys, Tasahasath,
|
|
||||||
Thalasths, Thaless, Thals, Thatsylh, Thays, Thekths, Theshthis, Thiiths,
|
|
||||||
Thiitsl, Thilhlyshi, Thishthes, Thlyiss, Thlyly, Thlyshi, Thlysy, Thlythi,
|
|
||||||
Thmissa, Thmyss, Thsais, Thslish, Ththes, Ththhllith, Ththis, Thtisthh,
|
|
||||||
Thyisass, Thylmissa, Thys, Thysslah, Tisiss, Tissyth, Tisthhhsy, Tlilhlasth,
|
|
||||||
Tlishkths, Tseshsath, Tshassasisth, Tsicyth, Tsitys, Tslahsits, Tsthihssthih,
|
|
||||||
Tsthil, Tsycieth, Tsylhssyt, Tsytysah, Tththhsyt, Tysahyraaath, Tyscesth,
|
|
||||||
Tysycieth, Yciethhlyly, Yisasshmyss, Yisstisthh, Yllith, Ylsthy, Yraaathlythi,
|
|
||||||
Ysahlith, Ysasth, Ysath, Yscesth, Yshmissa, Yshtsi, Ysilsia, Yslish, Yssasisth,
|
|
||||||
Ysssal, Yssthih, Yssths, Yssthy, Ystasah, Ysthsith, Ystsy, Ythals, Ythssysh,
|
|
||||||
Ytlilh, Ytlish, Ytsais, Ytssysh, Ytsthih
|
|
||||||
</namelist>
|
|
||||||
<namelist type="orc">
|
|
||||||
Abghat, Adgulg, Aghed, Agugh, Aguk, Almthu, Alog, Ambilge,
|
|
||||||
Apaugh, Argha, Argigoth, Argug, Arpigig, Auhgan, Azhug, Bagdud, Baghig,
|
|
||||||
Bahgigoth, Bahgigoth, Bandagh, Barfu, Bargulg, Baugh, Bidgug, Bildud, Bilge,
|
|
||||||
Bog, Boghat, Bogugh, Borgan, Borug, Braugh, Brougha, Brugagh, Bruigig, Buadagh,
|
|
||||||
Buggug, Builge, Buimghig, Bulgan, Bumhug, Buomaugh, Buordud, Burghed, Buugug,
|
|
||||||
Cabugbu, Cagan, Carguk, Carthurg, Clog, Corgak, Crothu, Cubub, Cukgilug, Curbag,
|
|
||||||
Dabub, Dakgorim, Dakgu, Dalthu, Darfu, Deakgu, Dergu, Derthag, Digdug, Diggu,
|
|
||||||
Dilug, Ditgurat, Dorgarag, Dregu, Dretkag, Drigka, Drikdarok, Drutha, Dudagog,
|
|
||||||
Dugarod, Dugorim, Duiltag, Durbag, Eagungad, Eggha, Eggugat, Egharod, Eghuglat,
|
|
||||||
Eichelberbog, Ekganit, Epkagut, Ergoth, Ertguth, Ewkbanok, Fagdud, Faghig,
|
|
||||||
Fandagh, Farfu, Farghed, Fargigoth, Farod, Faugh, Feldgulg, Fidgug, Filge,
|
|
||||||
Fodagog, Fogugh, Fozhug, Frikug, Frug, Frukag, Fubdagog, Fudhagh, Fupgugh,
|
|
||||||
Furbog, Futgarek, Gaakt, Garekk, Gelub, Gholug, Gilaktug, Ginug, Gnabadug,
|
|
||||||
Gnadug, Gnalurg, Gnarg, Gnarlug, Gnorl, Gnorth, Gnoth, Gnurl, Golag, Golag,
|
|
||||||
Golub, Gomatug, Gomoku, Gorgu, Gorlag, Grikug, Grug, Grug, Grukag, Grukk, Grung,
|
|
||||||
Gruul, Guag, Gubdagog, Gudhagh, Gug, Gug, Gujarek, Gujek, Gujjab, Gulm, Gulrn,
|
|
||||||
Gunaakt, Gunag, Gunug, Gurukk, Guthakug, Guthug, Gutjja, Hagob, Hagu, Hagub,
|
|
||||||
Haguk, Hebub, Hegug, Hibub, Hig, Hogug, Hoknath, Hoknuk, Hokulk, Holkurg,
|
|
||||||
Horknuth, Hrolkug, Hugagug, Hugmug, Hugolm, Ig, Igmut, Ignatz, Ignorg, Igubat,
|
|
||||||
Igug, Igurg, Ikgnath, Ikkath, Inkathu, Inkathurg, Isagubat, Jogug, Jokgagu,
|
|
||||||
Jolagh, Jorgagu, Jregh, Jreghug, Jugag, Jughog, Jughragh, Jukha, Jukkhag,
|
|
||||||
Julakgh, Kabugbu, Kagan, Kaghed, Kahigig, Karfu, Karguk, Karrghed, Karrhig,
|
|
||||||
Karthurg, Kebub, Kegigoth, Kegth, Kerghug, Kertug, Kilug, Klapdud, Klapdud,
|
|
||||||
Klog, Klughig, Knagh, Knaraugh, Knodagh, Knorgh, Knuguk, Knurigig, Kodagog, Kog,
|
|
||||||
Kogan, Komarod, Korgak, Korgulg, Koughat, Kraugug, Krilge, Krothu, Krouthu,
|
|
||||||
Krugbu, Krugorim, Kubub, Kugbu, Kukgilug, Kulgha, Kupgugh, Kurbag, Kurmbag,
|
|
||||||
Laghed, Lamgugh, Mabub, Magdud, Malthu, Marfu, Margulg, Mazhug, Meakgu,
|
|
||||||
Mergigoth, Milug, Mudagog, Mugarod, Mughragh, Mugorim, Murbag, Naghat, Naghig,
|
|
||||||
Naguk, Nahgigoth, Nakgu, Narfu, Nargulg, Narhbub, Narod, Neghed, Nehrakgu,
|
|
||||||
Nildud, Nodagog, Nofhug, Nogugh, Nomgulg, Noogugh, Nugbu, Nughilug, Nulgha,
|
|
||||||
Numhug, Nurbag, Nurghed, Oagungad, Oakgu, Obghat, Oggha, Oggugat, Ogharod,
|
|
||||||
Oghuglat, Oguk, Ohomdud, Ohulhug, Oilug, Okganit, Olaghig, Olaugh, Olmthu,
|
|
||||||
Olodagh, Olog, Omaghed, Ombilge, Omegugh, Omogulg, Omugug, Onog, Onubub, Onugug,
|
|
||||||
Oodagh, Oogorim, Oogugbu, Oomigig, Opathu, Opaugh, Opeghat, Opilge, Opkagut,
|
|
||||||
Opoguk, Oquagan, Orgha, Orgoth, Orgug, Orpigig, Ortguth, Otugbu, Ougha,
|
|
||||||
Ougigoth, Ouhgan, Owkbanok, Paghorim, Pahgigoth, Pahgorim, Pakgu, Parfu, Pargu,
|
|
||||||
Parhbub, Parod, Peghed, Pehrakgu, Pergu, Perthag, Pigdug, Piggu, Pitgurat,
|
|
||||||
Podagog, Pofhug, Pomgulg, Poogugh, Porgarag, Pregu, Pretkag, Prigka, Prikdarok,
|
|
||||||
Prutha, Pughilug, Puiltag, Purbag, Qog, Quadagh, Quilge, Quimghig, Quomaugh,
|
|
||||||
Quordud, Quugug, Raghat, Raguk, Rakgu, Rarfu, Rebub, Rilug, Rodagog, Rogan,
|
|
||||||
Romarod, Routhu, Rugbu, Rugorim, Rurbag, Rurigig, Sabub, Saghig, Sahgigoth,
|
|
||||||
Sahgorim, Sakgu, Salthu, Saraugug, Sarfu, Sargulg, Sarhbub, Sarod, Sbghat,
|
|
||||||
Seakgu, Sguk, Shomdud, Shulhug, Sildud, Silge, Silug, Sinsbog, Slaghig, Slapdud,
|
|
||||||
Slaugh, Slodagh, Slog, Slughig, Smaghed, Smegugh, Smogulg, Snog, Snubub, Snugug,
|
|
||||||
Sodagh, Sog, Sogorim, Sogugbu, Sogugh, Sombilge, Somigig, Sonagh, Sorgulg,
|
|
||||||
Sornaraugh, Soughat, Spathu, Speghat, Spilge, Spoguk, Squagan, Stugbu, Sudagog,
|
|
||||||
Sugarod, Sugbu, Sugha, Sugigoth, Sugorim, Suhgan, Sulgha, Sulmthu, Sumhug,
|
|
||||||
Sunodagh, Sunuguk, Supaugh, Supgugh, Surbag, Surgha, Surghed, Surgug, Surpigig,
|
|
||||||
Tagdud, Taghig, Tandagh, Tandagh, Tarfu, Targhed, Targigoth, Tarod, Taugh,
|
|
||||||
Taugh, Teldgulg, Tidgug, Tidgug, Tilge, Todagog, Tog, Toghat, Togugh, Torgan,
|
|
||||||
Torug, Tozhug, Traugh, Trilug, Trougha, Trugagh, Truigig, Tuggug, Tulgan,
|
|
||||||
Turbag, Turge, Ug, Ugghra, Uggug, Ughat, Ulgan, Ulmragha, Ulmrougha, Umhra,
|
|
||||||
Umragig, Umruigig, Ungagh, Unrugagh, Urag, Uraugh, Urg, Urgan, Urghat, Urgran,
|
|
||||||
Urlgan, Urmug, Urug, Urulg, Vabugbu, Vagan, Vagrungad, Vagungad, Vakgar, Vakgu,
|
|
||||||
Vakmu, Valthurg, Vambag, Vamugbu, Varbu, Varbuk, Varfu, Vargan, Varguk,
|
|
||||||
Varkgorim, Varthurg, Vegum, Vergu, Verlgu, Verthag, Verthurg, Vetorkag, Vidarok,
|
|
||||||
Vigdolg, Vigdug, Viggu, Viggulm, Viguka, Vitgurat, Vitgut, Vlog, Vlorg, Vorgak,
|
|
||||||
Vorgarag, Vothug, Vregu, Vretkag, Vrigka, Vrikdarok, Vrogak, Vrograg, Vrothu,
|
|
||||||
Vruhag, Vrutha, Vubub, Vugub, Vuiltag, Vukgilug, Vultog, Vulug, Vurbag, Wakgut,
|
|
||||||
Wanug, Wapkagut, Waruk, Wauktug, Wegub, Welub, Wholug, Wilaktug, Wingloug,
|
|
||||||
Winug, Woabadug, Woggha, Woggugat, Woggugat, Wogharod, Wogharod, Woghuglat,
|
|
||||||
Woglug, Wokganit, Womkug, Womrikug, Wonabadug, Worthag, Wraog, Wrug, Wrukag,
|
|
||||||
Wrukaog, Wubdagog, Wudgh, Wudhagh, Wudugog, Wuglat, Wumanok, Wumkbanok, Wurgoth,
|
|
||||||
Wurmha, Wurtguth, Wurthu, Wutgarek, Xaakt, Xago, Xagok, Xagu, Xaguk, Xarlug,
|
|
||||||
Xarpug, Xegug, Xepug, Xig, Xnath, Xnaurl, Xnurl, Xoknath, Xokuk, Xolag, Xolkug,
|
|
||||||
Xomath, Xomkug, Xomoku, Xonoth, Xorag, Xorakk, Xoroku, Xoruk, Xothkug, Xruul,
|
|
||||||
Xuag, Xug, Xugaa, Xugag, Xugagug, Xugar, Xugarf, Xugha, Xugor, Xugug, Xujarek,
|
|
||||||
Xuk, Xulgag, Xunaakt, Xunag, Xunug, Xurek, Xurl, Xurug, Xurukk, Xutag, Xuthakug,
|
|
||||||
Xutjja, Yaghed, Yagnar, Yagnatz, Yahg, Yahigig, Yakgnath, Yakha, Yalakgh,
|
|
||||||
Yargug, Yegigoth, Yegoth, Yerghug, Yerug, Ymafubag, Yokgagu, Yokgu, Yolmar,
|
|
||||||
Yonkathu, Yregh, Yroh, Ysagubar, Yughragh, Yugug, Yugug, Yukgnath, Yukha,
|
|
||||||
Yulakgh, Yunkathu, Zabghat, Zabub, Zaghig, Zahgigoth, Zahgorim, Zalthu,
|
|
||||||
Zaraugug, Zarfu, Zargulg, Zarhbub, Zarod, Zeakgu, Zguk, Zildud, Zilge, Zilug,
|
|
||||||
Zinsbog, Zlapdud, Zlog, Zlughig, Zodagh, Zog, Zogugbu, Zogugh, Zombilge, Zonagh,
|
|
||||||
Zorfu, Zorgulg, Zorhgigoth, Zornaraugh, Zoughat, Zudagog, Zugarod, Zugbu,
|
|
||||||
Zugorim, Zuhgan, Zulgha, Zulmthu, Zumhug, Zunodagh, Zunuguk, Zupaugh, Zupgugh,
|
|
||||||
Zurbag, Zurgha, Zurghed, Zurgug, Zurpigig
|
|
||||||
</namelist>
|
|
||||||
<namelist type="female">
|
|
||||||
Aba, Abby, Abella, Abey, Abigail, Abina, Abiona, Abira, Abra,
|
|
||||||
Abrah, Absinthe, Acacia, Acanit, Acantha, Accalia, Acelin, Achen, Ada, Adalia,
|
|
||||||
Adara, Addi, Adelaide, Adele, Adelia, Adeline, Adelle, Adena, Aderes, Adesina,
|
|
||||||
Adie, Adimina, Adiva, Adoncia, Adonia, Adora, Adrienne, Aelina, Afina, Afra,
|
|
||||||
Afrika, Afton, Agate, Agatha, Agnes, Ahara, Ahave, Ahimsa, Aida, Aiella, Aiko,
|
|
||||||
Aila, Aileen, Ailsa, Aimee, Ain, Aina, Ainhoa, Ainsley, Aintzane, Airlia,
|
|
||||||
Aisling, Aislinn, Aithne, Aiyana, Ajara, Ajay, Ajinora, Akako, Akala, Akanke,
|
|
||||||
Akasma, Akela, Akilah, Akili, Akilina, Akina, Alaina, Alake, Alala, Alamanada,
|
|
||||||
Alana, Alani, Alanna, Alaqua, Alavda, Alazne, Alberta, Albinka, Alcina, Aldea,
|
|
||||||
Aldercy, Aleka, Alenne, Alesia, Alessa, Alethea, Alexa, Alexandra, Alexandria,
|
|
||||||
Alexandrina, Alexis, Ali, Alia, Alice, Alicia, Alida, Alike, Alima, Alina,
|
|
||||||
Alison, Alita, Alix, Aliz, Aliza, Allele, Alligra, Allinora, Allison, Allyn,
|
|
||||||
Alma, Alodie, Aloysia, Althea, Alula, Alumit, Alvina, Alvita, Alysa, Alyssa,
|
|
||||||
Alyssand, Alzena, Ama, Amabel, Amadi, Amadika, Amadis, Amaia, Amala, Amalia,
|
|
||||||
Amanda, Amandine, Amara, Amarande, Amarante, Amaris, Amata, Ambar, Amber,
|
|
||||||
Ambika, Ambis, Ameerah, Amelia, Amelina, Amethyst, Amie, Amiella, Amina, Aminta,
|
|
||||||
Amissa, Amita, Amity, Amoke, Amy, Ananda, Anastasia, Ancelin, Andi, Andra,
|
|
||||||
Andraianna, Andras, Andrea, Andromeda, Aneida, Anella, Anemone, Anezka, Angela,
|
|
||||||
Angelica, Angeline, Angelique, Angeni, Ani, Anica, Anieli, Anisa, Anita, Anke,
|
|
||||||
Ann, Anna, Annabel, Annabelle, Annamarie, Anne, Annette, Annikka, Annora,
|
|
||||||
Anorah, Anoush, Ansreana, Anteia, Anthea, Antje, Antoinette, Antonia, Aolani,
|
|
||||||
Apara, Apirka, Apolline, Apolloina, Aponi, April, Aprille, Aprille, Aqua,
|
|
||||||
Aquene, Ara, Arabella, Arabelle, Araceli, Araminta, Araxie, Arcadia, Ardath,
|
|
||||||
Ardelia, Arden, Ardis, Ardith, Areiela, Arella, Aretha, Aretina, Ariadne,
|
|
||||||
Ariana, Aricia, Ariel, Ariene, Arista, Arlene, Arlinda, Armina, Arminda,
|
|
||||||
Artemisia, Aruna, Arziki, Asaria, Asenka, Ash, Asha, Ashlan, Ashleigh, Ashley,
|
|
||||||
Asia, Asisa, Aslinda, Aspasia, Asta, Aster, Astera, Astra, Astrea, Astrid,
|
|
||||||
Atalanta, Atara, Atenne, Ateri, Athalia, Athena, Athla, Atifa, Atta, Aubrey,
|
|
||||||
Auda, Audny, Audrey, Audrianna, Audun, Augustina, Aura, Aure, Aurelia, Aurilia,
|
|
||||||
Aurina, Aurkene, Aurora, Autumn, Ava, Avana, Avasa, Avella, Avena, Avie, Avis,
|
|
||||||
Aviva, Axella, Aya, Ayaluna, Ayame, Ayana, Ayasha, Aydee, Ayela, Ayiana, Ayila,
|
|
||||||
Ayisha, Ayita, Ayla, Aynora, Ayuna, Azaleah, Azalia, Azarael, Azera, Azha,
|
|
||||||
Azilea, Azina, Azize, Azora, Azura, Babette, Bacia, Bacia, Baka, Baka, Bakarne,
|
|
||||||
Balayna, Balea, Balia, Bambi, Banan, Banella, Bara, Barbara, Barika, Basha,
|
|
||||||
Basha, Basia, Basimah, Batakah, Bathsheba, Batya, Bay, Bayana, Bayo, Bayta, Bea,
|
|
||||||
Beatrice, Beatrix, Beauina, Becca, Becky, Bedelia, Bel, Belana, Belina, Belinda,
|
|
||||||
Belita, Bellanca, Belle, Belora, Bente, Beradine, Berilla, Berit, Bernadette,
|
|
||||||
Bernice, Beryl, Bess, Bessine, Beta, Beth, Bethana, Bethany, Betony, Betty,
|
|
||||||
Beulah, Beverly, Bevin, Bian, Bianca, Billie, Bina, Bindy, Binti, Birdie,
|
|
||||||
Birkita, Bixenta, Blanche, Blanda, Blenda, Bliss, Bly, Blythe, Bo, Bohdana,
|
|
||||||
Bonamy, Bonita, Bonnie, Bonny, Borgny, Braina, Brandi, Brandy, Bren, Brenda,
|
|
||||||
Brenna, Bretta, Bridget, Bridget, Brie, Brier, Brietta, Brigit, Brigitte, Brina,
|
|
||||||
Brina, Briona, Briony, Brites, Britta, Brittany, Bronwyn, Brooke, Brynn, Bucia,
|
|
||||||
Cadence, Caimile, Caitlin, Caitrin, Cala, Calandia, Calandra, Calendonia, Caley,
|
|
||||||
Calida, Calista, Calla, Callan, Callia, Callidora, Callie, Caltha, Calypso, Cam,
|
|
||||||
Camelia, Camilia, Camille, Canace, Candace, Candida, Candide, Candra, Cantara,
|
|
||||||
Caoimhe, Capri, Caprice, Cara, Caradoc, Caresse, Cari, Carina, Carine, Carissa,
|
|
||||||
Carita, Carla, Carleen, Carlen, Carling, Carlota, Carly, Carma, Carmel,
|
|
||||||
Carmelina, Carmen, Carna, Carnelian, Carol, Carolina, Caroline, Carolyn, Caron,
|
|
||||||
Carrie, Caryn, Casey, Casilda, Cassandra, Cassia, Casta, Castalia, Catalina,
|
|
||||||
Catava, Caterina, Catherine, Cathleen, Cathy, Catriona, Cayla, Ceara, Cecania,
|
|
||||||
Cecilia, Celandine, Celeste, Celia, Celina, Celina, Cellia, Cerelia, Chaitra,
|
|
||||||
Chanah, Chanda, Chandi, Chandra, Chane, Chanel, Channa, Chantal, Charis,
|
|
||||||
Charissa, Charity, Charlotte, Charmaine, Chastity, Chava, Chaviva, Chay, Chaya,
|
|
||||||
Chelsea, Chenoa, Cherica, Cherice, Cherie, Cheryl, Chesna, Chiara, Chika,
|
|
||||||
Chilali, Chimlis, Chipo, Chloe, Chloris, Cho, Christa, Christable, Christina,
|
|
||||||
Christine, Christy, Chyou, Cia, Ciannait, Ciar, Cicely, Cindy, Claire, Clara,
|
|
||||||
Clarinda, Clarissa, Claudette, Claudia, Claudine, Clementina, Clementine,
|
|
||||||
Cliantha, Clorinda, Clorinda, Clover, Cochiti, Coleene, Colette, Connie,
|
|
||||||
Constance, Constanza, Consuela, Cora, Coralie, Corazon, Corbey, Cordeali,
|
|
||||||
Coretta, Cori, Corinna, Coris, Corliss, Corrine, Cortney, Crescent, Cressida,
|
|
||||||
Crystal, Cybele, Cybil, Cynthia, Cyprien, Cyrene, Cyrilla, Cytheria, Dabria,
|
|
||||||
Dacey, Dacia, Dacie, Dacio, Dae, Dagmar, Dagna, Dai, Daily, Daisel, Daisy,
|
|
||||||
Dakota, Dale, Dalila, Dalilia, Damara, Damitri, Dana, Danett, Dania, Daniella,
|
|
||||||
Danyelle, Daphene, Daphne, Daphnie, Dar, Dara, Daralis, Darby, Daria, Darla,
|
|
||||||
Darlene, Dasha, Dasha, Davene, Davine, Davita, Dawn, Daya, Dayna, Deana, Deana,
|
|
||||||
Deandra, Deb, Debra, Dede, Dee, Deedee, Deianira, Deiene, Deirdre, Delana,
|
|
||||||
Delaney, Delbin, Delia, Delicia, Delilia, Della, Delphina, Dembe, Demi,
|
|
||||||
Demitria, Dena, Denby, Denice, Deva, Devaki, Deval, Devi, Devin, Devnet, Devon,
|
|
||||||
Diamanta, Diane, Dianthe, Diedre, Diella, Dillian, Dilly, Dilys, Dinah, Dionne,
|
|
||||||
Disa, Dita, diti, Dixie, Dodie, Dolores, Dominique, Dona, Donata, Donielle,
|
|
||||||
Donner, Dooriya, Dophina, Dora, Doreen, Dorinda, Doris, Dorithy, Dory, Drew,
|
|
||||||
Drina, Drucilla, Dulcie, Dulcinea, Dusty, Dyan, Dyani, Dymphna, Dyna, Eartha,
|
|
||||||
Easter, Ebony, Echo, Edana, Edie, Edith, Edlyn, Edna, Edolie, Edria, Edwina,
|
|
||||||
Efia, Eileen, Eirene, Elaine, Elana, Eleora, Elianor, Elina, Elina, Elisa,
|
|
||||||
Elise, Eliska, Elissa, Elita, Eliza, Elizabeeth, Elke, Ella, Elle, Ellen, Elly,
|
|
||||||
Elodie, Eloise, Elsa, Elsie, Elynor, Elyse, Elysia, Ema, Emajane, Emalia, Ember,
|
|
||||||
Emelie, Emelyne, Emily, Emma, Endora, Engracia, Enid, Enola, Enye, Erasma,
|
|
||||||
Erianthe, Erica, Erin, Erlina, Erwand, Eskarne, Esmerelda, Esperanza, Esta,
|
|
||||||
Estelle, Esther, Estu, Etain, Etaina, Etaina, Etanthe, Etta, Eudocia, Eugenia,
|
|
||||||
Eulalia, Eustacia, Eva, Evacsa, Evadine, Evadne, Evangeline, Evanthe, Eve,
|
|
||||||
Evelyn, Evita, Evonne, Eyota, Fabienne, Faifuza, Fainche, Faith, Faizah, Fallon,
|
|
||||||
Fantine, Farha, Farima, Farrah, Fatin, Fawne, Fay, Faye, Fayina, Fayme, Felcia,
|
|
||||||
Felicite, Felicity, Femi, Feridwyn, Fern, Feronia, Filinda, Fina, Finola, Fiona,
|
|
||||||
Fiorenza, Flavia, Fleta, Flora, Florence, Frances, Francesca, Francine,
|
|
||||||
Francisca, Freda, Frederica, Freya, Frida, Frieda, Fuscienne, Gabriella,
|
|
||||||
Gabrielle, Gaia, Gail, Galatea, Gali, Galina, Galya, Gana, Ganesa, Gauri, Gaye,
|
|
||||||
Gayle, Gelasia, Gemma, Genevieve, Geogia, Georgeanne, Georgetta, Georgette,
|
|
||||||
Georgiana, Geradline, Geraldine, Gerda, Gerri, Gertrude, Geva, Ghislaine,
|
|
||||||
Giacinta, Gianina, Gigi, Gilana, Gilda, Gilen, Gillian, Gin, Gina, Ginger,
|
|
||||||
Giselle, Gitana, Githa, Gizane, Gleda, Glenna, Glennys, Golda, Goldie, Gotzone,
|
|
||||||
Grace, Gracie, Grainne, Grazia, Grear, Greta, Gretchen, Grette, Gwen, Gwendolyn,
|
|
||||||
Gweneth, Gwynne, Gytha, Hadara, Hadassa, Hadiya, Haidee, Hailey, Haimi, Haldis,
|
|
||||||
Hale, Haley, Hali, Hali, Halima, Halle, Hallie, Hana, Hanan, Hannah, Hanne,
|
|
||||||
Harmoni, Harriet, Hasna, Hava, Haya, Haylee, Hazel, Hea, Heather, Hei, Heidi,
|
|
||||||
Heldegarde, Helen, Helena, Helene, Helki, Henka, Henrietta, Hesper, Hester,
|
|
||||||
Hilary, Hilda, Hinda, Hisa, Holly, Hope, Hoshi, Hyacinth, Hye, Hypatia, Ianthe,
|
|
||||||
Ida, Idola, Idonia, Ilene, Ilona, Iman, Imogene, India, Indira, Indra, Ines,
|
|
||||||
Inez, Inga, Ingrid, Iolana, Iolanthe, Iona, Iratze, Irena, Irene, Iris, Irma,
|
|
||||||
Isabeau, Isabel, Isabella, Isadora, Isaura, Isis, Isleta, Isobel, Isoke, Istas,
|
|
||||||
Ivana, Ivory, Ivy, Jacelyn, Jacinda, Jacinthe, Jada, Jael, Jaen, Jaimie, Jaione,
|
|
||||||
Jakinda, Jala, Jamie, Jamila, Jamilah, Jan, Jana, Jane, Janelle, Janet, Janice,
|
|
||||||
Janis, Janna, Jannelle, Jardena, Jarvia, Jarvinia, Jasmine, Jaya, Jayne, Jean,
|
|
||||||
Jean, Jeanette, Jeanine, Jelena, Jena, Jenay, Jendayi, Jendyose, Jenica,
|
|
||||||
Jennettia, Jennifer, Jensine, Jerrilyn, Jessica, Jewel, Jezebel, Jihan, Jillian,
|
|
||||||
Jin, Jina, Jinny, Jinx, Joakima, Joan, Joanne, Jobey, Jobihna, Jocasa, Jocelyn,
|
|
||||||
Jodi, Jody, Joelle, Joelliane, Johanna, Joia, Jolan, Jolanta, Jolene, Jolie,
|
|
||||||
Joline, Jonina, Jora, Jordane, Josephine, Josie, Jotha, Joy, Joyce, Joye,
|
|
||||||
Juanita, Judith, Juditha, Julia, Juliana, Juliane, Julie, Julietta, Julinka,
|
|
||||||
Jumoke, Jun, June, Justine, Kaatje, Kachine, Kaclyn, Kaede, Kaethe, Kai, Kaia,
|
|
||||||
Kaie, Kaili, Kaimi, Kairos, Kaiya, Kakra, Kala, Kalama, Kalanit, Kalare, Kalea,
|
|
||||||
Kali, Kalika, Kalila, Kalinda, Kalle, Kalli, Kalonice, Kalyca, Kama, Kamala,
|
|
||||||
Kamali, Kamaria, Kambo, Kameko, Kamilah, Kamilia, Kanda, Kane, Kanene, Kanika,
|
|
||||||
Kantha, Kanya, Kapera, Kara, Karan, Karayan, Karel, Karen, Karida, Karimah,
|
|
||||||
Karisa, Karka, Karla, Karlenne, Karli, Karlyn, Karmina, Karol, Karylin, Karyn,
|
|
||||||
Kasa, Kasen, Kasia, Kasinda, Kassia, Kate, Katherine, Kathleen, Katja, Katoka,
|
|
||||||
Katrien, Katrina, Kaula, Kaveri, Kavindra, Kay, Kaya, Kaye, Kayla, Kaysa, Kazia,
|
|
||||||
Keara, Keelin, Keely, Kefira, Kehinde, Kei, Keiko, Keisha, Kelda, Kelia, Kelley,
|
|
||||||
Kelli, Kellie, Kelly, Kelsey, Kendra, Kennis, Kenyangi, Kepa, Kerani, Kerensa,
|
|
||||||
Kerstan, Kesare, Kesi, Kesia, Kessie, Keturah, Ketzia, Khalida, Kichi, Kiele,
|
|
||||||
Kim, Kimberly, Kimmie, Kimmy, Kineta, Kiona, Kira, Kiran, Kirby, Kirima,
|
|
||||||
Kirsten, Kirti, Kisa, Kiska, Kismet, Kissa, Kita, Kohana, Kolina, Koren,
|
|
||||||
Koressa, Kristen, Kyly, Kyna, Kynthia, Kyoko, Lacey, Lacie, Laila, Lailie,
|
|
||||||
Lakeisha, Lala, Lalasa, Lan, Lana, Landra, Lane, Lani, Lara, Laraine, Laralee,
|
|
||||||
Lari, Larissa, Lark, Latika, Latonia, Laura, Laurana, Laurel, Laurie, Laurinda,
|
|
||||||
Lauryn, Laveda, Lavern, Laverne, Lavinia, Lea, Leah, Leah, Leala, Leandra, Leba,
|
|
||||||
Ledah, Lee, Leigh, Leiko, Leila, Leilana, Lena, Lene, Lenor, Lenora, Lenore,
|
|
||||||
Leona, Leora, Leslie, Letha, Letitia, Levana, Lexine, Lia, Liadan, Lian, Liana,
|
|
||||||
Liane, Libby, Lien, Lila, Lilith, Lillian, Lillie, Lily, Limber, Lina, Linda,
|
|
||||||
Lindsay, Lindsey, Linette, Linnae, Linnea, Lisa, Lisette, Litsa, Liv, Liza,
|
|
||||||
Lois, Lokelani, Lola, Loni, Lora, Lore, Lorelei, Lorelle, Loretta, Lori,
|
|
||||||
Lorraine, Lotus, Louise, Lucille, Lucine, Lucretia, Lucy, Ludia, Luela, Luisa,
|
|
||||||
Lukene, Lukina, Lulu, Luna, Lydia, Lynda, Lynelle, Lynn, Lynnda, Lynnette,
|
|
||||||
Lyris, Lysel, Lysnadra, Mabel, Macaria, Machi, Maddy, Madelaine, Madelina,
|
|
||||||
Madeline, Madelon, Madelyn, Mady, Mae, Magan, Magara, Magdalen, Magdalena,
|
|
||||||
Magdaline, Magena, Magenta, Maggie, Mahala, Mahalia, Mai, Maia, Maida, Maisie,
|
|
||||||
Maitane, Maizah, Maj, Malaya, Malila, Malina, Malinda, Malka, Mallory, Malu,
|
|
||||||
Mamie, Manda, Mandara, Mandisa, Mandy, Mangena, Manon, Mansi, Manya, Mara,
|
|
||||||
Marcella, Marcia, Marcy, Maren, Margaret, Margaret, Margarita, Margo, Margot,
|
|
||||||
Marguirte, Maria, Mariah, Mariam, Mariama, Marian, Mariana, Marianna, Marianne,
|
|
||||||
Maribel, Marie, Mariel, Marietta, Marily, Marilyn, Marina, Maris, Marisa,
|
|
||||||
Marisha, Marissa, Marjani, Marjeta, Marjorie, Marlene, Marlo, Marmara, Marnie,
|
|
||||||
Marnina, Marsha, Marta, Martha, Marti, Martina, Mary, Maryann, Marybeth,
|
|
||||||
Marylou, Marzia, Matana, Mathea, Matilda, Matrika, Maud, Maura, Maureen,
|
|
||||||
Maurita, Mavis, Maxine, May, Maya, Meara, Meara, Meda, Medea, Meg, Megan,
|
|
||||||
Megara, Meghan, Mei, Meira, Mela, Melanie, Melantha, Melba, Melia, Melian,
|
|
||||||
Melina, Melinda, Melisenda, Melissa, Mellinio, Melodie, Melody, Melosa, Melva,
|
|
||||||
Mercedes, Meredith, Merele, Mesha, Meta, Mia, Miakoda, Michaela, Michele,
|
|
||||||
Michelle, Midori, Migina, Mignon, Mika, Millicent, Millie, Min, Mina, Minda,
|
|
||||||
Mindel, Mindy, Minerva, Minka, Minna, Minnie, Mira, Miranda, Mirem, Miremba,
|
|
||||||
Mireya, Miriam, Mirielle, Missy, Misty, Mitena, Mitexi, Mitzi, Moira, Mollie,
|
|
||||||
Molly, Mona, Monique, Moon, Morena, Morgan, Morgana, Morgance, Moria, Moriah,
|
|
||||||
Muriel, Myra, Nada, Nadia, Nadine, Nadya, Naia, Nailah, Naimah, Nalini, Namazzi,
|
|
||||||
Nami, Nan, Nana, Nancy, Nanette, Nantale, Naomi, Napea, Nara, Narda, Narmada,
|
|
||||||
Nasiche, Nastassia, Natalie, Natane, Natasha, Natesa, Naysa, Nazirqah, Neala,
|
|
||||||
Neci, Nediva, Neely, Nekane, Nell, Neola, Neoma, Neona, Neria, Nerine, Nerissa,
|
|
||||||
Netti, Neva, Nevada, Neysa, Nicia, Nicola, Nicole, Nicolette, Nika, Nikki,
|
|
||||||
Nimah, Nina, Niobe, Niola, Nira, Nirvelli, Nissa, Nita, Nitara, Nixie, Noel,
|
|
||||||
Noelani, Noella, Nolita, Nona, Nona, Nora, Norah, Noreen, Nori, Noriko, Norma,
|
|
||||||
Nydia, Nyrna, Nyssa, Obelia, Octavia, Odelia, Odelia, Odera, Odessa, Odetta,
|
|
||||||
Odette, Odile, Ohanna, Okelani, Olathe, Olayinka, Olesia, Olga, Oliana, Olinda,
|
|
||||||
Olivette, Olivia, Ona, Onida, Opal, Ophelia, Oralie, Orane, Orenda, Oriana,
|
|
||||||
Orianna, Oriel, Oriole, Orlantha, Ornidaa, Paige, Pakuna, Palmiera, Paloma,
|
|
||||||
Pamela, Pandita, Pandora, Panthea, Pantzike, Panya, Panyin, Pascale, Patia,
|
|
||||||
Patience, Patricia, Patsy, Paula, Paulette, Pauline, Pavla, Pazia, Pearl, Peg,
|
|
||||||
Peggy, Pelagia, Pemba, Penda, Penelope, Peninna, Penny, Penthea, Peony, Perdita,
|
|
||||||
Perouze, Persis, Petra, Phaedra, Phedra, Philomena, Phoebe, Phylis, Phyllis,
|
|
||||||
Pia, Pier, Pila, Piper, Polly, Poloma, Porche, Portia, Priscilla, Prudence,
|
|
||||||
Prudy, Pyrena, Pythia, Qamra, Queena, Quella, Quenby, Quintina, Quiterie,
|
|
||||||
Rachel, Radella, Radinka, Rae, Rai, Raizel, Ramla, Ramona, Ramya, Randie, Rane,
|
|
||||||
Ranee, Rani, Raquel, Rashida, Rasine, Ratri, Raven, Rawnie, Rayna, Raynell,
|
|
||||||
Raziya, Reba, Rebecca, Regan, Regina, Reidun, Remy, Rena, Renata, Rene, Renee,
|
|
||||||
Rhea, Rhiamon, Rhianne, Rhiannon, Rhoda, Rhodanthe, Rhonda, Rhonna, Rhyssa, Ria,
|
|
||||||
Riane, Rica, Rihana, Rikki, Rio, Risa, Rita, Riva, Roanna, Roberta, Robin,
|
|
||||||
Robyn, Rochelle, Rohanna, Rona, Rorie, Rosa, Rosalind, Rosalinda, Rosalinde,
|
|
||||||
Rosaline, Rosanne, Rose, Roseanne, Rosemarie, Rosemary, Rowena, Roxana, Roxanne,
|
|
||||||
Ruby, Rumer, Ruth, Ruthann, Ryann, Ryanne, Ryba, Ryssa, Saba, Sabina, Sabiny,
|
|
||||||
Sabirah, Sabra, Sabrina, Sacha, Sachi, Sade, Sadira, Saffi, Safiya, Sagara,
|
|
||||||
Saidah, Sakari, Sakinah, Sakti, Sakura, Salihah, Salimah, Salina, Sally, Salome,
|
|
||||||
Samantha, Samara, Samirah, Sancia, Sandia, Sandra, Sandrine, Sandya, Sara,
|
|
||||||
Sarah, Sarai, Saraid, Saree, Sarena, Sari, Sarisha, Sasha, Sashenka, Satinka,
|
|
||||||
Savanna, Saxon, Scotia, Searlait, Season, Sebasten, Seema, Sela, Selena, Selina,
|
|
||||||
Selma, Semele, Senta, Serafina, Serilda, Sesha, Shaine, Shakira, Shako,
|
|
||||||
Shammara, Shana, Shanata, Shandra, Shandy, Shani, Shanley, Shanna, Shannon,
|
|
||||||
Shantay, Shantha, Sharman, Sharon, Sharri, Shashi, Shawn, Shayndel, Sheba,
|
|
||||||
Sheena, Sheila, Shela, Shelby, Shelley, Shelly, Sherri, Shika, Shin, Shina,
|
|
||||||
Shira, Shirley, Shobi, Shoshana, Sibley, Sibongile, Sibyl, Sidonia, Sidra,
|
|
||||||
Sierra, Sigourney, Siham, Sileas, Silva, Silvia, Simba, Simone, Sine, Sinead,
|
|
||||||
Siobhan, Siran, Sirena, Siroun, Sitara, Sitembile, Siv, Sive, Skyler, Sofi,
|
|
||||||
Solana, Solange, Soledad, Solita, Sondra, Sonia, Sonja, Sonya, Sophia, Sophie,
|
|
||||||
Sophronia, Spica, Stacey, Stacia, Stacy, Stefania, Stella, Stephani, Stephanie,
|
|
||||||
Ster, Stesha, Stockard, Storm, Sukatai, Suki, Sumi, Summer, Sun, Susan, Susanna,
|
|
||||||
Suzanne, Svetlana, Sybil, Sydelle, Sydney, Syeira, Sylvia, Syna, Synia, Tabitha,
|
|
||||||
Taci, Tacita, Tadi, Taffy, Tahirah, Tai, Taima, Tainn, Taipa, Taite, Taka,
|
|
||||||
Takara, Takiyah, Takoda, Talasi, Tale, Talia, Talia, Talitha, Tallulah, Tam,
|
|
||||||
Tama, Tamara, Tamary, Tamma, Tammy, Tanaka, Tani, Tansy, Tanya, Tao, Tara, Tate,
|
|
||||||
Tatyana, Tawnie, Tawny, Tayce, Taylor, Teague, Tehya, Tekla, Temina, Terentia,
|
|
||||||
Terese, Terrilyn, Tertia, Teryn, Tesia, Tess, Tessa, Thadea, Thais, Thalassa,
|
|
||||||
Thalia, Than, Thana, Thara, Thea, Thekla, Thelma, Theodosia, Theone, Thera,
|
|
||||||
Thirza, Thora, Thyra, Tia, Tiara, Tienette, Tierney, Tierra, Tiffany, Tilda,
|
|
||||||
Timandra, Tina, Tiponya, Tirza, Tivona, Tobey, Tola, Tora, Tori, Tory, Tosia,
|
|
||||||
Tove, Tracey, Tracy, Treasa, Tresa, Treva, Trianon, Tricia, Trilby, Trina,
|
|
||||||
Trind, Trish, Trisha, Trudy, Tryne, Tryphena, Tyne, Ula, Ulani, Ultima, Uma,
|
|
||||||
Una, Undine, Undine, Urania, Uriana, Ursula, Uta, Vala, Valentina, Valeria,
|
|
||||||
Valerie, Valeska, Valonia, Valora, Vanda, Vanessa, Vanora, Vanya, Vashti, Veda,
|
|
||||||
Velika, Velma, Venesssa, Vera, Verena, Verity, Veronica, Vesta, Vevila,
|
|
||||||
Victoria, Vidonia, Violet, Violet, Violetta, Virginia, Viridis, Viveka, Vivian,
|
|
||||||
Voleta, Vrinda, Wakanda, Wanda, Waneta, Wendy, Whilhelmina, Whitney, Wijdan,
|
|
||||||
Willow, Wilma, Wilona, Winda, Winema, Winifred, Winna, Winona, Wynee, Wynn,
|
|
||||||
Wynona, Xanthe, Xaveria, Xaviera, Xena, Xenia, Ximena, Xylia, Xylona, Yachne,
|
|
||||||
Yanice, Yarmilla, Yasmeen, Yasmin, Yelinda, Yenene, Yesmina, Yetta, Yeva,
|
|
||||||
Yokiko, Yolanda, Yolie, Yonina, Yovela, Yvella, Yvette, Yvonne, Zada, Zahara,
|
|
||||||
Zahirah, Zahra, Zakia, Zalea, Zalika, Zaltana, Zandra, Zara, Zarah, Zaza,
|
|
||||||
Zehava, Zelda, Zelenka, Zelia, Zella, Zena, Zenaide, Zenia, Zerlinda, Zeva,
|
|
||||||
Zevida, Zia, Ziazan, Zigana, Zila, Zina, Zinnia, Zita, Zoe, Zola, Zona, Zora,
|
|
||||||
Zorah, Zorda, Zosia, Zuleika, Zulema, Zuza, Zuzanny
|
|
||||||
</namelist>
|
|
||||||
<namelist type="male">
|
|
||||||
Aaron, Aasin, Abbott, Abdel, Abdiel, Abel, Abijah, Abner,
|
|
||||||
Abraham, Abran, Ace, Achilles, Ackerley, Adair, Adam, Addison, Adeben, Adem,
|
|
||||||
Adiran, Adlai, Adler, Adley, Admon, Adolph, Adon, Adonis, Adrian, Adriel,
|
|
||||||
Aeneas, Agustin, Ahearn, Ahmik, Ahren, Aidan, Aiken, Aimery, Aitan, Ajayi,
|
|
||||||
Akando, Akbaar, Akello, Akil, Akshay, Alan, Aland, Alano, Alaric, Alastair,
|
|
||||||
Alben, Albert, Alcander, Alcott, Alden, Alder, Aldrick, Alec, Alek, Aleksy,
|
|
||||||
Aleron, Aleser, Alex, Alexander, Alfred, Alger, Alim, Alistair, Allaard, Allan,
|
|
||||||
Allard, Allen, Alonzo, Alphonse, Alphonso, Alston, Altair, Alton, Alvin, Amadeo,
|
|
||||||
Amadi, Amado, Ambrose, Amiel, Ammon, Amos, Amsden, Anders, Andre, Andreus,
|
|
||||||
Andrew, Andrey, Andries, Angelo, Angus, Anker, Anoki, Ansel, Anselme, Ansley,
|
|
||||||
Anson, Anthony, Antonio, Anwar, Archer, Archibald, Ardon, Aren, Ares, Argus,
|
|
||||||
Ari, Aricin, Arion, Aristo, Aristotle, Arkin, Arlen, Arley, Arlin, Arlo, Arman,
|
|
||||||
Armen, Armon, Armstrong, Arne, Arnold, Arnon, Aron, Arpiar, Arsen, Arsenio,
|
|
||||||
Arthur, Ashby, Asher, Ashford, Ashlin, Ashon, Ashur, Athan, Atheron, Atman,
|
|
||||||
Audric, Audun, Augustin, Augustus, Aurek, Austin, Averill, Avery, Axel, Bae,
|
|
||||||
Bailey, Baingana, Bakari, Balbo, Balder, Baldwin, Bale, Balendin, Bali, Balin,
|
|
||||||
Balint, Bancroft, Bandele, Bane, Banning, Baran, Barclay, Barden, Bardo, Bardon,
|
|
||||||
Barnabas, Barnaby, Barnett, Barney, Baron, Barrett, Barry, Barse, Bart, Barth,
|
|
||||||
Bartholomew, Barton, Basil, Bastiaan, Baul, Bavol, Baxter, Bay, Bayani, Bayard,
|
|
||||||
Baylor, Bazyli, Beacan, Beagan, Beaman, Beau, Beaumont, Beauregard, Beck,
|
|
||||||
Beldon, Belen, Bem, Beman, Ben, Benedict, Benen, Benjamin, Bennett, Benson,
|
|
||||||
Bent, Bentley, Benton, Berenger, Bergren, Berk, Berkeley, Bernard, Bersh, Bert,
|
|
||||||
Berthold, Berton, Bertram, Beval, Bevan, Bialy, Bilal, Bishop, Bitalo, Bjorn,
|
|
||||||
Blade, Blaine, Blair, Blaise, Blake, Blaz, Blorn, Bo, Boden, Bogart, Bohdan,
|
|
||||||
Bolton, Bond, Booker, Boone, Borden, Boris, Botan, Bowie, Bowman, Boyce, Boyd,
|
|
||||||
Boyden, Brad, Braden, Bradford, Bradney, Brady, Bram, Bran, Brand, Brandeis,
|
|
||||||
Brandon, Brant, Braxton, Bray, Braz, Brazil, Bren, Brencis, Brendan, Brendon,
|
|
||||||
Brennan, Brent, Brentan, Bret, Brett, Brewster, Briac, Brian, Briand, Brice,
|
|
||||||
Brieg, Brinley, Brishen, Brock, Broderick, Brodny, Brody, Bronson, Bront, Bruce,
|
|
||||||
Bruno, Brutus, Bryan, Bryant, Bryce, Bryson, Buck, Bud, Budo, Burgess, Burhan,
|
|
||||||
Burian, Burke, Burl, Burr, Burton, Byran, Byron, Cadeo, Cador, Caedmon, Cailan,
|
|
||||||
Cain, Caine, Calder, Caldwell, Caleb, Calvin, Cam, Camden, Cameron, Candan,
|
|
||||||
Canton, Canute, Carden, Carey, Carl, Carlin, Carlo, Carlos, Carlton, Carr,
|
|
||||||
Carrick, Carrocio, Carroll, Carson, Carson, Carter, Carver, Casey, Casper,
|
|
||||||
Cassidy, Cassius, Castel, Cato, Caton, Cavan, Ceasar, Cecil, Cedric, Cemal,
|
|
||||||
Chad, Chadwick, Chaim, Chal, Chale, Chalmers, Chander, Chandler, Chane, Chaney,
|
|
||||||
Channing, Chapin, Chapman, Charles, Charlton, Chase, Chatha, Chauncy, Chayton,
|
|
||||||
Chen, Cheney, Chester, Chet, Chevalier, Chike, Chin, Christian, Christoph,
|
|
||||||
Christopher, Christos, Chuck, Ciceron, Ciro, Clarence, Clark, Claude, Clay,
|
|
||||||
Clayton, Clement, Cleveland, Clifford, Clifton, Clint, Clinton, Clive, Clyde,
|
|
||||||
Cody, Colby, Cole, Coleman, Colin, Collin, Colon, Colton, Coman, Condon, Connor,
|
|
||||||
Conrad, Conway, Corbett, Corbin, Corcoran, Cordell, Corey, Cornelius, Cort,
|
|
||||||
Coty, Courtland, Craig, Crandall, Creighton, Crispin, Crosby, Cullen, Cullin,
|
|
||||||
Culver, Curran, Curtis, Cynric, Cyrano, Cyril, Cyrus, Dag, Dagan, Dakarai,
|
|
||||||
Dakota, Dale, Dallin, Dalton, Daly, Damek, Damen, Damian, Damien, Damion, Damon,
|
|
||||||
Dana, Dane, Daniel, Danior, Dannik, Dante, Daren, Darien, Dario, Darnell,
|
|
||||||
Darrel, Darrell, Darren, Daryl, David, Davin, Davis, Deacon, Dean, Decker,
|
|
||||||
Delaney, Delano, Delbert, Dellan, Delmore, Delsin, Deman, Dempsey, Dempster,
|
|
||||||
Denby, Dennis, Dennys, Denton, Denver, Der, Derek, Derrick, Derry, Deverell,
|
|
||||||
Devin, Devlin, Dewey, Diederik, Diego, Dieter, Dillon, Dimitri, Dirk, Dobry,
|
|
||||||
Dominic, Dominick, Donald, Donatien, Donato, Donnelley, Donnelly, Donovan,
|
|
||||||
Doron, Dougie, Douglas, Douglass, Dov, Doyle, Drake, Drew, Duane, Dugan, Duglas,
|
|
||||||
Duncan, Dunstan, Durand, Durriken, Dusan, Dustin, Dutch, Dwayne, Dwight, Dyami,
|
|
||||||
Dyastro, Dylan, Dymas, Eamon, Earl, Earle, Eaton, Edan, Edgan, Edgar, Edison,
|
|
||||||
Edmund, Edrin, Edward, Edwin, Edwin, Egan, Einar, Elad, Elden, Eldroth, Elek,
|
|
||||||
Eli, Elias, Elijah, Elkan, Ellery, Elliot, Elliott, Ellis, Ellsworth, Elmer,
|
|
||||||
Elmo, Elston, Elton, Elwood, Emanuel, Emil, Emilio, Emmett, Emo, Enoch, Enrico,
|
|
||||||
Enrique, Ephraim, Erek, Eric, Erik, Ernest, Erol, Errol, Erskine, Erwin, Eryx,
|
|
||||||
Essien, Esteban, Ethan, Eugene, Evan, Evander, Everett, Evzen, Ezekial, Ezra,
|
|
||||||
Fabio, Fairfax, Farley, Farrell, Faxon, Felix, Felix, Fenn, Fenton, Fergus,
|
|
||||||
Ferran, Ferris, Fielding, Filbert, Filmore, Finlay, Finley, Finn, Finnigan,
|
|
||||||
Fisk, Fitzgerald, Fletcher, Flindo, Flint, Floyd, Flynn, Forbes, Forrest,
|
|
||||||
Forsythe, Foster, Foster, Francis, Franek, Frank, Franklin, Frasier, Frazer,
|
|
||||||
Frazier, Fred, Frederick, Fremont, Fritz, Fuller, Fulton, Gabe, Gabriel, Gage,
|
|
||||||
Galen, Galeno, Galvin, Gamble, Gannon, Gareth, Garfield, Gargan, Garner,
|
|
||||||
Garrett, Garrick, Garridan, Garrison, Garritt, Garth, Garvin, Gary, Gaspar,
|
|
||||||
Gaston, Gavin, Gavrie, Gaylord, Gaynor, Geoff, Geoffrey, Geoffry, George,
|
|
||||||
Gerard, Gerik, Germain, Gerry, Gideon, Gilberto, Giles, Ginton, Givon, Glen,
|
|
||||||
Glenn, Glenno, Godfrey, Gordon, Gordy, Gorman, Grady, Graham, Gram, Granger,
|
|
||||||
Grant, Granville, Grayson, Greg, Greger, Gregor, Gregory, Gresham, Griffen,
|
|
||||||
Griffith, Guilhem, Gunnar, Gunther, Gus, Gustave, Guthrie, Guy, Hackett, Hadden,
|
|
||||||
Hadi, Hadley, Hadrian, Hagan, Hal, Halden, Hale, Halian, Halsey, Hamilton,
|
|
||||||
Hamlin, Hank, Hans, Harden, Hardy, Harith, Harlan, Harman, Harold, Harper,
|
|
||||||
Harrison, Harry, Hart, Hartley, Harvey, Hassan, Hastin, Hastings, Hayden, Hayes,
|
|
||||||
Haynes, Heath, Hector, Helaku, Henning, Henry, Herbert, Herman, Herschel,
|
|
||||||
Hilliard, Hilton, Hiroshi, Hobart, Hogan, Holden, Holt, Homes, Horace, Horton,
|
|
||||||
Houston, Howard, Howrence, Hoyt, Hugh, Hugo, Humphrey, Hunter, Huntley, Hyman,
|
|
||||||
Iain, Ian, Ilias, Ingmar, Ingram, Ira, Irvin, Irving, Irwin, Isaac, Isaiah,
|
|
||||||
Israel, Itzak, Ivan, Ivar, Jabari, Jabir, Jack, Jacob, Jacobe, Jacques, Jacson,
|
|
||||||
Jacy, Jafar, Jagger, Jake, Jal, Jaleel, Jamal, James, Jamison, Jared, Jarek,
|
|
||||||
Jarman, Jaron, Jarrod, Jarvis, Jason, Jasper, Javan, Javier, Jay, Jebidiah, Jed,
|
|
||||||
Jedidiah, Jedrek, Jeff, Jeffrey, Jelani, Jeremiah, Jeremy, Jerolin, Jerome,
|
|
||||||
Jeromy, Jerzy, Jesse, Jessee, Jethro, Jibril, Jin, Jiro, Jivin, Joel, Johann,
|
|
||||||
John, Jolon, Jonah, Jonathan, Jonathon, Jordan, Jordon, Jorgen, Jorvin, Joseph,
|
|
||||||
Joshua, Judd, Jude, Julian, Julius, Juma, Jung, Justin, Kadin, Kai, Kaikara,
|
|
||||||
Kaladin, Kalb, Kale, Kalil, Kalkin, Kalman, Kamal, Kane, Kaniel, Kardal, Karl,
|
|
||||||
Karsten, Kasch, Kasen, Kaspar, Kateb, Kayin, Keane, Kearney, Kedar, Keefe,
|
|
||||||
Keelan, Keenan, Kegan, Keir, Keir, Keith, Kelby, Keleman, Kell, Kellen, Kelvin,
|
|
||||||
Ken, Kenan, Kendall, Kendrick, Kenelm, Kenley, Kennard, Kennedy, Kenneth, Kent,
|
|
||||||
Kenton, Kenyon, Keona, Ker, Kerby, Kern, Kerry, Kers, Kersen, Kerwin, Kester,
|
|
||||||
Kevin, Khalil, Khoury, Kiefer, Kieran, Kiernan, Killian, Kin, Kinnel, Kinsey,
|
|
||||||
Kintan, Kip, Kirby, Kirk, Kiyoshi, Kliftin, Klog, Komor, Kontar, Krischan,
|
|
||||||
Krister, Kurt, Kyle, Kyler, Laethan, Laird, Lamar, Lamont, Lance, Lander,
|
|
||||||
Landon, Lane, Lang, Larry, Lars, Lawler, Lawrence, Lazarus, Lear, Lee, Leif,
|
|
||||||
Leighton, Leland, Len, Lennon, Lennor, Lennox, Lensar, Leo, Leon, Leonard,
|
|
||||||
Leron, Leroy, Lester, Lev, Levi, Lewis, Lewis, Li, Liam, Like, Lincoln, Lindsey,
|
|
||||||
Lionel, Llewellyn, Lloyd, Logan, Loren, Lorenzo, Lorne, Louis, Lowell, Lucas,
|
|
||||||
Lucian, Luis, Luke, Lukyan, Lunt, Luther, Lyle, Lyndon, Lysander, Mac, Macer,
|
|
||||||
Mack, Mackenzie, Magnus, Malcolm, Malik, Manco, Mandek, Mander, Manfred,
|
|
||||||
Manning, Mansur, Manuel, Marc, Marcos, Marcus, Marden, Marek, Mario, Mark,
|
|
||||||
Markham, Markos, Marlin, Marlon, Marlon, Marshal, Marshall, Marsten, Martin,
|
|
||||||
Martingo, Marvin, Mason, Matai, Mateo, Mather, Matthew, Matthias, Maurice, Max,
|
|
||||||
Maxwell, Maynard, Mayon, Mead, Meka, Mercer, Merill, Merle, Merrick, Merrik,
|
|
||||||
Meyer, Micael, Michael, Migon, Miguel, Mike, Mikkel, Mikos, Miles, Miles, Milo,
|
|
||||||
Milton, Miner, Mitchell, Monroe, Monte, Morgan, Morley, Morris, Mortimer,
|
|
||||||
Morton, Morven, Morz, Motega, Mukasa, Murdoch, Murdock, Murphy, Myles, Myron,
|
|
||||||
Naeem, Nalren, Nantan, Nathan, Nathaniel, Neal, Neale, Neil, Nelek, Nelson,
|
|
||||||
Neron, Nestor, Nevan, Neville, Nevin, Nevin, Nicanor, Nicholas, Nigel, Nikolos,
|
|
||||||
Nils, Noah, Nodin, Noe, Nolan, Norbert, Norman, Norris, Norton, Nuri, Nyle,
|
|
||||||
Oakes, Oakley, Ochen, Octavius, Odell, Odin, Odion, Odon, Ogden, Olaf, Olin,
|
|
||||||
Oliver, Omar, Ordano, Oren, Orion, Orman, Ormand, Orrin, Orson, Orville, Oscar,
|
|
||||||
Osgood, Osmond, Otis, Otto, Owen, Paco, Palmer, Paolo, Paris, Parker, Parnell,
|
|
||||||
Pascal, Patamon, Patrick, Patterson, Patton, Paul, Paulin, Pavel, Paxton,
|
|
||||||
Payton, Pearce, Peder, Pembroke, Penn, Percival, Perry, Peter, Peyton, Phearcy,
|
|
||||||
Philip, Phillip, Phillippe, Phoenix, Pierce, Pierre, Pierson, Pilan, Platon,
|
|
||||||
Porter, Prentice, Prescot, Prescott, Preston, Quentin, Quenton, Quillan, Quincy,
|
|
||||||
Quinlan, Quinn, Rad, Radcliffe, Radman, Rafael, Rafferty, Ragnar, Raidon,
|
|
||||||
Raleigh, Ralph, Ramiro, Ramon, Ramsay, Ramsey, Ranard, Rance, Randall, Randolph,
|
|
||||||
Ranen, Ranger, Rankin, Raoul, Raphael, Raul, Ravi, Ravi, Ravid, Ray, Raymond,
|
|
||||||
Raynor, Reade, Redford, Redmond, Reed, Reese, Reeve, Regan, Reginald, Regis,
|
|
||||||
Remington, Renaldo, Rendor, Renfry, Renny, Reuben, Rex, Reyhan, Rhett, Rhett,
|
|
||||||
Rhys, Ricardo, Richard, Richter, Rico, Rider, Ridgley, Rigby, Riley, Rimon,
|
|
||||||
Ringo, Ringo, Riodan, Riordan, Roarke, Robert, Roberto, Robi, Rockwell, Rod,
|
|
||||||
Roderick, Rodman, Rodney, Rodrigo, Roger, Roi, Roland, Roldan, Rolf, Ronald,
|
|
||||||
Ronan, Rooney, Rory, Roscoe, Ross, Roth, Rowan, Rowland, Roy, Royce, Ruben,
|
|
||||||
Rudd, Rudi, Rudyard, Rufus, Runako, Ruskin, Russ, Russell, Rusty, Rutherford,
|
|
||||||
Rutledge, Ryan, Ryder, Rylan, Sahale, Sahen, Salim, Saloman, Sam, Samien,
|
|
||||||
Sammon, Samson, Samuel, Sanders, Sandon, Sandor, Sanford, Sargent, Sarngin,
|
|
||||||
Sarojin, Saul, Saunders, Sawyer, Saxon, Schuyler, Scott, Sean, Sebastian,
|
|
||||||
Sebastien, Seif, Selby, Senon, Sergio, Seth, Seung, Severin, Sevilin, Seward,
|
|
||||||
Seymour, Shane, Shawn, Shea, Sheffield, Sheldon, Shen, Sheridan, Sherman,
|
|
||||||
Sherwin, Sherwood, Shing, Shunnar, Sidney, Siegfried, Silas, Simon, Sivan, Skip,
|
|
||||||
Skyler, Slade, Slevin, Smith, Solomon, Sorgan, Soterios, Spalding, Spencer,
|
|
||||||
Spenser, Standford, Stanley, Stanton, Stasio, Stefan, Stephan, Stephen,
|
|
||||||
Sterling, Stevan, Steve, Steven, Stewart, Stoke, Stoyan, Strom, Stuart, Subrey,
|
|
||||||
Sulaiman, Sullican, Sumner, Sutherland, Sutton, Sven, Sylvester, Tab, Tabari,
|
|
||||||
Tad, Tadi, Tai, Tajo, Talbart, Talbot, Talman, Talos, Tanek, Tanner, Tano, Taro,
|
|
||||||
Tate, Taurin, Taylor, Tem, Terence, Terrence, Terrill, Terry, Thaddeus, Thai,
|
|
||||||
Thaman, Thane, Thanos, Theobald, Theodore, Theron, Thierry, Thomas, Thorpe,
|
|
||||||
Thurston, Thurston, Tibalt, Tiernan, Timothy, Titus, Tobias, Toby, Tod, Todd,
|
|
||||||
Tomas, Tong, Tor, Torin, Torrance, Townsend, Travers, Travis, Tremain, Tremaine,
|
|
||||||
Trent, Trevor, Trey, Tristan, Troy, Tryon, Tucker, Tully, Tyee, Tyler, Tymon,
|
|
||||||
Tyrone, Upton, Uriah, Urian, Van, Vance, Vaughn, Vern, Vernon, Victor, Vincent,
|
|
||||||
Vinson, Virgil, Vito, Vlad, Vladimir, Vokes, Volf, Wade, Wagner, Walden, Waldo,
|
|
||||||
Walker, Wallace, Wally, Walter, Ward, Warner, Warren, Watson, Waylan, Wayland,
|
|
||||||
Waylon, Wayne, Webb, Webster, Wendell, Wesley, Weston, Weylin, Whitaker, Wilfen,
|
|
||||||
Will, Willard, Willem, William, Wilson, Winston, Winthrop, Wlby, Woody, Wyatt,
|
|
||||||
Xavier, Xenos, Xerxes, Ximen, Yakecan, Yale, Yancey, Yardley, Yarin, Yerik,
|
|
||||||
Yero, Yervant, York, Yusuf, Yves, Zachariah, Zachary, Zackery, Zaid, Zaide,
|
|
||||||
Zane, Zaniel, Zann, Zared, Zarek, Zeke, Zenon, Zion, Ziven, Zorn
|
|
||||||
</namelist>
|
|
||||||
<namelist type="female elf brigand">
|
|
||||||
Bergeni, Callylili, Elaniana, Hanalea, Jerliai, Kaitha, Mesanial, Oquila, Sylievo,
|
|
||||||
Uliala, Vimaly, Yeldemi
|
|
||||||
</namelist>
|
|
||||||
<namelist type="male elf brigand">
|
|
||||||
Castoriel, Celebrindal, Chathmiru, Davlien, Gerrath, Jerraintho, Lewys, Misran,
|
|
||||||
Nandrien, Olonal, Peorilien, Regornolas, Rylvarn, Silnaliel, Talendeor, Uomo,
|
|
||||||
Verlolas
|
|
||||||
</namelist>
|
|
||||||
</names>
|
|
||||||
3706
Distribution/Data/objects.json
Normal file
3706
Distribution/Data/objects.json
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -192,6 +192,8 @@
|
||||||
193 0x2615
|
193 0x2615
|
||||||
194 0x2619
|
194 0x2619
|
||||||
195 0x260F
|
195 0x260F
|
||||||
|
197 0x20D6
|
||||||
|
198 0x20D6
|
||||||
200 0x2598
|
200 0x2598
|
||||||
201 0x211B
|
201 0x211B
|
||||||
202 0x2131
|
202 0x2131
|
||||||
|
|
@ -356,11 +358,85 @@
|
||||||
169 0x281C
|
169 0x281C
|
||||||
|
|
||||||
#ML Mobiles
|
#ML Mobiles
|
||||||
|
|
||||||
276 0x2D95
|
276 0x2D95
|
||||||
277 0x2D96
|
277 0x2D96
|
||||||
|
|
||||||
#SA Mobiles
|
#SA Mobiles
|
||||||
|
666 16941
|
||||||
|
667 16942
|
||||||
|
714 0x4288
|
||||||
|
715 0x4289
|
||||||
|
716 0x428A
|
||||||
|
717 0x428B
|
||||||
|
718 0x428C
|
||||||
|
719 0x428D
|
||||||
|
720 0x428E
|
||||||
|
721 0x428F
|
||||||
|
722 0x4290
|
||||||
|
723 0x4291
|
||||||
|
724 0x4292
|
||||||
|
334 0x4293
|
||||||
|
725 0x4295
|
||||||
|
726 0x4296
|
||||||
|
727 0x4297
|
||||||
|
728 0x4298
|
||||||
|
729 0x4299
|
||||||
|
830 0x429A
|
||||||
|
730 0x429B
|
||||||
|
829 0x429C
|
||||||
|
732 0x429D
|
||||||
|
740 0x429E
|
||||||
|
733 0x429F
|
||||||
|
741 0x42A0
|
||||||
|
734 0x42A1
|
||||||
|
735 0x42A2
|
||||||
|
736 0x42A3
|
||||||
|
737 0x42A4
|
||||||
|
705 0x42A5
|
||||||
|
826 0x42A6
|
||||||
|
738 0x42A7
|
||||||
|
742 0x42A8
|
||||||
|
739 0x42A9
|
||||||
|
|
||||||
1254 0x9844
|
#TOL Mobiles
|
||||||
1255 0x9844
|
|
||||||
|
95 0x4988
|
||||||
|
156 0x4988
|
||||||
|
|
||||||
|
1068 0x276E
|
||||||
|
1069 0x9ED5
|
||||||
|
1254 0x9844
|
||||||
|
1255 0x9844
|
||||||
|
|
||||||
|
1285 0x9845
|
||||||
|
1286 0x9846
|
||||||
|
1287 0x9847
|
||||||
|
1288 0x9848
|
||||||
|
1289 0x9849
|
||||||
|
1290 0x984A
|
||||||
|
1291 0x984B
|
||||||
|
1292 0x984C
|
||||||
|
1293 0x984D
|
||||||
|
1294 0x984E
|
||||||
|
1308 0x20F5
|
||||||
|
1309 0x9844
|
||||||
|
1400 0x9DED
|
||||||
|
1402 0x9D81
|
||||||
|
1403 0x9D81
|
||||||
|
1404 0x9D81
|
||||||
|
1405 0x9DE4
|
||||||
|
1406 0x9DB3
|
||||||
|
1407 0x9E35
|
||||||
|
1408 0x3ECD
|
||||||
|
1410 0x9ED5
|
||||||
|
1415 0x9DED
|
||||||
|
1416 0x9844
|
||||||
|
1417 0x20D6
|
||||||
|
1418 0x20D6
|
||||||
|
1419 0x20D6
|
||||||
|
1420 0x20D6
|
||||||
|
1422 0x20D6
|
||||||
|
1423 0x211C
|
||||||
|
1424 0x9DB6
|
||||||
|
1425 0x2108
|
||||||
|
1426 0x9F08
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -17,7 +17,7 @@ namespace Server.Tests
|
||||||
|
|
||||||
public static void Equal(ReadOnlySpan<byte> actual, ReadOnlySpan<byte> expected) =>
|
public static void Equal(ReadOnlySpan<byte> actual, ReadOnlySpan<byte> expected) =>
|
||||||
Xunit.Assert.True(
|
Xunit.Assert.True(
|
||||||
MemoryExtensions.SequenceEqual(expected, actual),
|
expected.SequenceEqual(actual),
|
||||||
$"Expected does not match actual.\nExpected:\t{SpanToString(expected)}\nActual:\t\t{SpanToString(actual)}"
|
$"Expected does not match actual.\nExpected:\t{SpanToString(expected)}\nActual:\t\t{SpanToString(actual)}"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
|
||||||
<PackageReference Include="xunit" Version="2.4.1" />
|
<PackageReference Include="xunit" Version="2.4.1" />
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" />
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.2" />
|
||||||
<PackageReference Include="coverlet.collector" Version="1.2.1" />
|
<PackageReference Include="coverlet.collector" Version="1.3.0" />
|
||||||
<ProjectReference Include="..\Server\Server.csproj" />
|
<ProjectReference Include="..\Server\Server.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,391 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Geometry.cs
|
|
||||||
* -------------------
|
|
||||||
* begin : May 1, 2002
|
|
||||||
* copyright : (C) The RunUO Software Team
|
|
||||||
* email : info@runuo.com
|
|
||||||
*
|
|
||||||
* $Id$
|
|
||||||
*
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace Server
|
|
||||||
{
|
|
||||||
[Parsable]
|
|
||||||
public struct Point2D : IPoint2D, IComparable<Point2D>, IEquatable<object>, IEquatable<Point2D>
|
|
||||||
{
|
|
||||||
internal int m_X;
|
|
||||||
internal int m_Y;
|
|
||||||
|
|
||||||
public static readonly Point2D Zero = new Point2D(0, 0);
|
|
||||||
|
|
||||||
public Point2D(int x, int y)
|
|
||||||
{
|
|
||||||
m_X = x;
|
|
||||||
m_Y = y;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Point2D(IPoint2D p) : this(p.X, p.Y)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandProperty(AccessLevel.Counselor)]
|
|
||||||
public int X
|
|
||||||
{
|
|
||||||
get => m_X;
|
|
||||||
set => m_X = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandProperty(AccessLevel.Counselor)]
|
|
||||||
public int Y
|
|
||||||
{
|
|
||||||
get => m_Y;
|
|
||||||
set => m_Y = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string ToString() => $"({m_X}, {m_Y})";
|
|
||||||
|
|
||||||
public static Point2D Parse(string value)
|
|
||||||
{
|
|
||||||
var start = value.IndexOf('(');
|
|
||||||
var end = value.IndexOf(',', start + 1);
|
|
||||||
|
|
||||||
var param1 = value.Substring(start + 1, end - (start + 1)).Trim();
|
|
||||||
|
|
||||||
start = end;
|
|
||||||
end = value.IndexOf(')', start + 1);
|
|
||||||
|
|
||||||
var param2 = value.Substring(start + 1, end - (start + 1)).Trim();
|
|
||||||
|
|
||||||
return new Point2D(Convert.ToInt32(param1), Convert.ToInt32(param2));
|
|
||||||
}
|
|
||||||
|
|
||||||
public int CompareTo(Point2D other)
|
|
||||||
{
|
|
||||||
var v = m_X.CompareTo(other.m_X);
|
|
||||||
|
|
||||||
if (v == 0)
|
|
||||||
v = m_Y.CompareTo(other.m_Y);
|
|
||||||
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool Equals(object o) => o is IPoint2D p && m_X == p.X && m_Y == p.Y;
|
|
||||||
|
|
||||||
public bool Equals(Point2D p) => m_X == p.X && m_Y == p.Y;
|
|
||||||
|
|
||||||
public override int GetHashCode() => m_X ^ m_Y;
|
|
||||||
|
|
||||||
public static bool operator ==(Point2D l, Point2D r) => l.m_X == r.m_X && l.m_Y == r.m_Y;
|
|
||||||
|
|
||||||
public static bool operator !=(Point2D l, Point2D r) => l.m_X != r.m_X || l.m_Y != r.m_Y;
|
|
||||||
|
|
||||||
public static bool operator ==(Point2D l, IPoint2D r) => !ReferenceEquals(r, null) && l.m_X == r.X && l.m_Y == r.Y;
|
|
||||||
|
|
||||||
public static bool operator !=(Point2D l, IPoint2D r) => !ReferenceEquals(r, null) && (l.m_X != r.X || l.m_Y != r.Y);
|
|
||||||
|
|
||||||
public static bool operator >(Point2D l, Point2D r) => l.m_X > r.m_X && l.m_Y > r.m_Y;
|
|
||||||
|
|
||||||
public static bool operator >(Point2D l, Point3D r) => l.m_X > r.m_X && l.m_Y > r.m_Y;
|
|
||||||
|
|
||||||
public static bool operator >(Point2D l, IPoint2D r) => !ReferenceEquals(r, null) && l.m_X > r.X && l.m_Y > r.Y;
|
|
||||||
|
|
||||||
public static bool operator <(Point2D l, Point2D r) => l.m_X < r.m_X && l.m_Y < r.m_Y;
|
|
||||||
|
|
||||||
public static bool operator <(Point2D l, Point3D r) => l.m_X < r.m_X && l.m_Y < r.m_Y;
|
|
||||||
|
|
||||||
public static bool operator <(Point2D l, IPoint2D r) => !ReferenceEquals(r, null) && l.m_X < r.X && l.m_Y < r.Y;
|
|
||||||
|
|
||||||
public static bool operator >=(Point2D l, Point2D r) => l.m_X >= r.m_X && l.m_Y >= r.m_Y;
|
|
||||||
|
|
||||||
public static bool operator >=(Point2D l, Point3D r) => l.m_X >= r.m_X && l.m_Y >= r.m_Y;
|
|
||||||
|
|
||||||
public static bool operator >=(Point2D l, IPoint2D r) => !ReferenceEquals(r, null) && l.m_X >= r.X && l.m_Y >= r.Y;
|
|
||||||
|
|
||||||
public static bool operator <=(Point2D l, Point2D r) => l.m_X <= r.m_X && l.m_Y <= r.m_Y;
|
|
||||||
|
|
||||||
public static bool operator <=(Point2D l, Point3D r) => l.m_X <= r.m_X && l.m_Y <= r.m_Y;
|
|
||||||
|
|
||||||
public static bool operator <=(Point2D l, IPoint2D r) => !ReferenceEquals(r, null) && l.m_X <= r.X && l.m_Y <= r.Y;
|
|
||||||
}
|
|
||||||
|
|
||||||
[Parsable]
|
|
||||||
public struct Point3D : IPoint3D, IComparable<Point3D>, IEquatable<object>, IEquatable<Point3D>
|
|
||||||
{
|
|
||||||
internal int m_X;
|
|
||||||
internal int m_Y;
|
|
||||||
internal int m_Z;
|
|
||||||
|
|
||||||
public static readonly Point3D Zero = new Point3D(0, 0, 0);
|
|
||||||
|
|
||||||
public Point3D(int x, int y, int z)
|
|
||||||
{
|
|
||||||
m_X = x;
|
|
||||||
m_Y = y;
|
|
||||||
m_Z = z;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Point3D(IPoint3D p)
|
|
||||||
: this(p.X, p.Y, p.Z)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public Point3D(IPoint2D p, int z)
|
|
||||||
: this(p.X, p.Y, z)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandProperty(AccessLevel.Counselor)]
|
|
||||||
public int X
|
|
||||||
{
|
|
||||||
get => m_X;
|
|
||||||
set => m_X = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandProperty(AccessLevel.Counselor)]
|
|
||||||
public int Y
|
|
||||||
{
|
|
||||||
get => m_Y;
|
|
||||||
set => m_Y = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandProperty(AccessLevel.Counselor)]
|
|
||||||
public int Z
|
|
||||||
{
|
|
||||||
get => m_Z;
|
|
||||||
set => m_Z = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string ToString() => $"({m_X}, {m_Y}, {m_Z})";
|
|
||||||
|
|
||||||
public override bool Equals(object o) => o is IPoint3D p && m_X == p.X && m_Y == p.Y && m_Z == p.Z;
|
|
||||||
|
|
||||||
public bool Equals(Point3D p) => m_X == p.X && m_Y == p.Y && m_Z == p.Z;
|
|
||||||
|
|
||||||
public override int GetHashCode() => m_X ^ m_Y ^ m_Z;
|
|
||||||
|
|
||||||
public static Point3D Parse(string value)
|
|
||||||
{
|
|
||||||
var start = value.IndexOf('(');
|
|
||||||
var end = value.IndexOf(',', start + 1);
|
|
||||||
|
|
||||||
var param1 = value.Substring(start + 1, end - (start + 1)).Trim();
|
|
||||||
|
|
||||||
start = end;
|
|
||||||
end = value.IndexOf(',', start + 1);
|
|
||||||
|
|
||||||
var param2 = value.Substring(start + 1, end - (start + 1)).Trim();
|
|
||||||
|
|
||||||
start = end;
|
|
||||||
end = value.IndexOf(')', start + 1);
|
|
||||||
|
|
||||||
var param3 = value.Substring(start + 1, end - (start + 1)).Trim();
|
|
||||||
|
|
||||||
return new Point3D(Convert.ToInt32(param1), Convert.ToInt32(param2), Convert.ToInt32(param3));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static bool operator ==(Point3D l, Point3D r) => l.m_X == r.m_X && l.m_Y == r.m_Y && l.m_Z == r.m_Z;
|
|
||||||
|
|
||||||
public static bool operator !=(Point3D l, Point3D r) => l.m_X != r.m_X || l.m_Y != r.m_Y || l.m_Z != r.m_Z;
|
|
||||||
|
|
||||||
public static bool operator ==(Point3D l, IPoint3D r) =>
|
|
||||||
!ReferenceEquals(r, null) && l.m_X == r.X && l.m_Y == r.Y && l.m_Z == r.Z;
|
|
||||||
|
|
||||||
public static bool operator !=(Point3D l, IPoint3D r) =>
|
|
||||||
!ReferenceEquals(r, null) && (l.m_X != r.X || l.m_Y != r.Y || l.m_Z != r.Z);
|
|
||||||
|
|
||||||
public int CompareTo(Point3D other)
|
|
||||||
{
|
|
||||||
var v = m_X.CompareTo(other.m_X);
|
|
||||||
|
|
||||||
if (v == 0)
|
|
||||||
{
|
|
||||||
v = m_Y.CompareTo(other.m_Y);
|
|
||||||
|
|
||||||
if (v == 0)
|
|
||||||
v = m_Z.CompareTo(other.m_Z);
|
|
||||||
}
|
|
||||||
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[NoSort]
|
|
||||||
[Parsable]
|
|
||||||
[PropertyObject]
|
|
||||||
public struct Rectangle2D
|
|
||||||
{
|
|
||||||
private Point2D m_Start;
|
|
||||||
private Point2D m_End;
|
|
||||||
|
|
||||||
public Rectangle2D(IPoint2D start, IPoint2D end)
|
|
||||||
{
|
|
||||||
m_Start = new Point2D(start);
|
|
||||||
m_End = new Point2D(end);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Rectangle2D(int x, int y, int width, int height)
|
|
||||||
{
|
|
||||||
m_Start = new Point2D(x, y);
|
|
||||||
m_End = new Point2D(x + width, y + height);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Set(int x, int y, int width, int height)
|
|
||||||
{
|
|
||||||
m_Start = new Point2D(x, y);
|
|
||||||
m_End = new Point2D(x + width, y + height);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Rectangle2D Parse(string value)
|
|
||||||
{
|
|
||||||
var start = value.IndexOf('(');
|
|
||||||
var end = value.IndexOf(',', start + 1);
|
|
||||||
|
|
||||||
var param1 = value.Substring(start + 1, end - (start + 1)).Trim();
|
|
||||||
|
|
||||||
start = end;
|
|
||||||
end = value.IndexOf(',', start + 1);
|
|
||||||
|
|
||||||
var param2 = value.Substring(start + 1, end - (start + 1)).Trim();
|
|
||||||
|
|
||||||
start = end;
|
|
||||||
end = value.IndexOf(',', start + 1);
|
|
||||||
|
|
||||||
var param3 = value.Substring(start + 1, end - (start + 1)).Trim();
|
|
||||||
|
|
||||||
start = end;
|
|
||||||
end = value.IndexOf(')', start + 1);
|
|
||||||
|
|
||||||
var param4 = value.Substring(start + 1, end - (start + 1)).Trim();
|
|
||||||
|
|
||||||
return new Rectangle2D(Convert.ToInt32(param1), Convert.ToInt32(param2), Convert.ToInt32(param3),
|
|
||||||
Convert.ToInt32(param4));
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandProperty(AccessLevel.Counselor)]
|
|
||||||
public Point2D Start
|
|
||||||
{
|
|
||||||
get => m_Start;
|
|
||||||
set => m_Start = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandProperty(AccessLevel.Counselor)]
|
|
||||||
public Point2D End
|
|
||||||
{
|
|
||||||
get => m_End;
|
|
||||||
set => m_End = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandProperty(AccessLevel.Counselor)]
|
|
||||||
public int X
|
|
||||||
{
|
|
||||||
get => m_Start.m_X;
|
|
||||||
set => m_Start.m_X = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandProperty(AccessLevel.Counselor)]
|
|
||||||
public int Y
|
|
||||||
{
|
|
||||||
get => m_Start.m_Y;
|
|
||||||
set => m_Start.m_Y = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandProperty(AccessLevel.Counselor)]
|
|
||||||
public int Width
|
|
||||||
{
|
|
||||||
get => m_End.m_X - m_Start.m_X;
|
|
||||||
set => m_End.m_X = m_Start.m_X + value;
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandProperty(AccessLevel.Counselor)]
|
|
||||||
public int Height
|
|
||||||
{
|
|
||||||
get => m_End.m_Y - m_Start.m_Y;
|
|
||||||
set => m_End.m_Y = m_Start.m_Y + value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void MakeHold(Rectangle2D r)
|
|
||||||
{
|
|
||||||
if (r.m_Start.m_X < m_Start.m_X)
|
|
||||||
m_Start.m_X = r.m_Start.m_X;
|
|
||||||
|
|
||||||
if (r.m_Start.m_Y < m_Start.m_Y)
|
|
||||||
m_Start.m_Y = r.m_Start.m_Y;
|
|
||||||
|
|
||||||
if (r.m_End.m_X > m_End.m_X)
|
|
||||||
m_End.m_X = r.m_End.m_X;
|
|
||||||
|
|
||||||
if (r.m_End.m_Y > m_End.m_Y)
|
|
||||||
m_End.m_Y = r.m_End.m_Y;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Contains(Point3D p) =>
|
|
||||||
m_Start.m_X <= p.m_X && m_Start.m_Y <= p.m_Y && m_End.m_X > p.m_X && m_End.m_Y > p.m_Y;
|
|
||||||
|
|
||||||
public bool Contains(Point2D p) =>
|
|
||||||
m_Start.m_X <= p.m_X && m_Start.m_Y <= p.m_Y && m_End.m_X > p.m_X && m_End.m_Y > p.m_Y;
|
|
||||||
|
|
||||||
public bool Contains(IPoint2D p) => m_Start <= p && m_End > p;
|
|
||||||
|
|
||||||
public override string ToString() => $"({X}, {Y})+({Width}, {Height})";
|
|
||||||
}
|
|
||||||
|
|
||||||
[NoSort]
|
|
||||||
[PropertyObject]
|
|
||||||
public struct Rectangle3D
|
|
||||||
{
|
|
||||||
public Rectangle3D(Point3D start, Point3D end)
|
|
||||||
{
|
|
||||||
Start = start;
|
|
||||||
End = end;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Rectangle3D(int x, int y, int z, int width, int height, int depth)
|
|
||||||
{
|
|
||||||
Start = new Point3D(x, y, z);
|
|
||||||
End = new Point3D(x + width, y + height, z + depth);
|
|
||||||
}
|
|
||||||
|
|
||||||
[CommandProperty(AccessLevel.Counselor)]
|
|
||||||
public Point3D Start { get; set; }
|
|
||||||
|
|
||||||
[CommandProperty(AccessLevel.Counselor)]
|
|
||||||
public Point3D End { get; set; }
|
|
||||||
|
|
||||||
[CommandProperty(AccessLevel.Counselor)]
|
|
||||||
public int Width => End.X - Start.X;
|
|
||||||
|
|
||||||
[CommandProperty(AccessLevel.Counselor)]
|
|
||||||
public int Height => End.Y - Start.Y;
|
|
||||||
|
|
||||||
[CommandProperty(AccessLevel.Counselor)]
|
|
||||||
public int Depth => End.Z - Start.Z;
|
|
||||||
|
|
||||||
public bool Contains(Point3D p) =>
|
|
||||||
p.m_X >= Start.m_X
|
|
||||||
&& p.m_X < End.m_X
|
|
||||||
&& p.m_Y >= Start.m_Y
|
|
||||||
&& p.m_Y < End.m_Y
|
|
||||||
&& p.m_Z >= Start.m_Z
|
|
||||||
&& p.m_Z < End.m_Z;
|
|
||||||
|
|
||||||
public bool Contains(IPoint3D p) =>
|
|
||||||
p.X >= Start.m_X
|
|
||||||
&& p.X < End.m_X
|
|
||||||
&& p.Y >= Start.m_Y
|
|
||||||
&& p.Y < End.m_Y
|
|
||||||
&& p.Z >= Start.m_Z
|
|
||||||
&& p.Z < End.m_Z;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
122
Projects/Server/Geometry/Point2D.cs
Normal file
122
Projects/Server/Geometry/Point2D.cs
Normal file
|
|
@ -0,0 +1,122 @@
|
||||||
|
/*************************************************************************
|
||||||
|
* ModernUO *
|
||||||
|
* Copyright (C) 2019-2020 - ModernUO Development Team *
|
||||||
|
* Email: hi@modernuo.com *
|
||||||
|
* File: Point2D.cs - Created: 2020/05/31 - Updated: 2020/05/31 *
|
||||||
|
* *
|
||||||
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||||
|
*************************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Server
|
||||||
|
{
|
||||||
|
[Parsable]
|
||||||
|
public struct Point2D :
|
||||||
|
IPoint2D, IComparable<Point2D>, IComparable<IPoint2D>, IEquatable<object>, IEquatable<Point2D>, IEquatable<IPoint2D>
|
||||||
|
{
|
||||||
|
internal int m_X;
|
||||||
|
internal int m_Y;
|
||||||
|
|
||||||
|
public static readonly Point2D Zero = new Point2D(0, 0);
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public int X
|
||||||
|
{
|
||||||
|
get => m_X;
|
||||||
|
set => m_X = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public int Y
|
||||||
|
{
|
||||||
|
get => m_Y;
|
||||||
|
set => m_Y = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Point2D(int x, int y)
|
||||||
|
{
|
||||||
|
m_X = x;
|
||||||
|
m_Y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Point2D(IPoint2D p) : this(p.X, p.Y)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString() => $"({m_X}, {m_Y})";
|
||||||
|
|
||||||
|
public static Point2D Parse(string value)
|
||||||
|
{
|
||||||
|
var start = value.IndexOf('(');
|
||||||
|
var end = value.IndexOf(',', start + 1);
|
||||||
|
|
||||||
|
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out int x);
|
||||||
|
|
||||||
|
start = end;
|
||||||
|
end = value.IndexOf(')', start + 1);
|
||||||
|
|
||||||
|
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out int y);
|
||||||
|
|
||||||
|
return new Point2D(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Equals(Point2D other) => m_X == other.m_X && m_Y == other.m_Y;
|
||||||
|
|
||||||
|
public bool Equals(IPoint2D other) =>
|
||||||
|
!ReferenceEquals(other, null) && m_X == other.X && m_Y == other.Y;
|
||||||
|
|
||||||
|
public override bool Equals(object obj) => obj is Point2D other && Equals(other);
|
||||||
|
|
||||||
|
public override int GetHashCode() => HashCode.Combine(m_X, m_Y);
|
||||||
|
|
||||||
|
public static bool operator ==(Point2D l, Point2D r) => l.m_X == r.m_X && l.m_Y == r.m_Y;
|
||||||
|
|
||||||
|
public static bool operator !=(Point2D l, Point2D r) => l.m_X != r.m_X || l.m_Y != r.m_Y;
|
||||||
|
|
||||||
|
public static bool operator ==(Point2D l, IPoint2D r) => !ReferenceEquals(r, null) && l.m_X == r.X && l.m_Y == r.Y;
|
||||||
|
|
||||||
|
public static bool operator !=(Point2D l, IPoint2D r) => !ReferenceEquals(r, null) && (l.m_X != r.X || l.m_Y != r.Y);
|
||||||
|
|
||||||
|
public static bool operator >(Point2D l, Point2D r) => l.m_X > r.m_X && l.m_Y > r.m_Y;
|
||||||
|
|
||||||
|
public static bool operator >(Point2D l, IPoint2D r) => !ReferenceEquals(r, null) && l.m_X > r.X && l.m_Y > r.Y;
|
||||||
|
|
||||||
|
public static bool operator <(Point2D l, Point2D r) => l.m_X < r.m_X && l.m_Y < r.m_Y;
|
||||||
|
|
||||||
|
public static bool operator <(Point2D l, IPoint2D r) => !ReferenceEquals(r, null) && l.m_X < r.X && l.m_Y < r.Y;
|
||||||
|
|
||||||
|
public static bool operator >=(Point2D l, Point2D r) => l.m_X >= r.m_X && l.m_Y >= r.m_Y;
|
||||||
|
|
||||||
|
public static bool operator >=(Point2D l, IPoint2D r) => !ReferenceEquals(r, null) && l.m_X >= r.X && l.m_Y >= r.Y;
|
||||||
|
|
||||||
|
public static bool operator <=(Point2D l, Point2D r) => l.m_X <= r.m_X && l.m_Y <= r.m_Y;
|
||||||
|
|
||||||
|
public static bool operator <=(Point2D l, IPoint2D r) => !ReferenceEquals(r, null) && l.m_X <= r.X && l.m_Y <= r.Y;
|
||||||
|
|
||||||
|
public int CompareTo(Point2D other)
|
||||||
|
{
|
||||||
|
var xComparison = m_X.CompareTo(other.m_X);
|
||||||
|
if (xComparison != 0) return xComparison;
|
||||||
|
return m_Y.CompareTo(other.m_Y);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int CompareTo(IPoint2D other)
|
||||||
|
{
|
||||||
|
var xComparison = m_X.CompareTo(other.X);
|
||||||
|
if (xComparison != 0) return xComparison;
|
||||||
|
return m_Y.CompareTo(other.Y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
150
Projects/Server/Geometry/Point3D.cs
Normal file
150
Projects/Server/Geometry/Point3D.cs
Normal file
|
|
@ -0,0 +1,150 @@
|
||||||
|
/*************************************************************************
|
||||||
|
* ModernUO *
|
||||||
|
* Copyright (C) 2019-2020 - ModernUO Development Team *
|
||||||
|
* Email: hi@modernuo.com *
|
||||||
|
* File: Point3D.cs - Created: 2020/05/31 - Updated: 2020/05/31 *
|
||||||
|
* *
|
||||||
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||||
|
*************************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Server
|
||||||
|
{
|
||||||
|
[Parsable]
|
||||||
|
public struct Point3D :
|
||||||
|
IPoint3D, IComparable<Point3D>, IComparable<IPoint3D>, IEquatable<object>, IEquatable<Point3D>, IEquatable<IPoint3D>
|
||||||
|
{
|
||||||
|
internal int m_X;
|
||||||
|
internal int m_Y;
|
||||||
|
internal int m_Z;
|
||||||
|
|
||||||
|
public static readonly Point3D Zero = new Point3D(0, 0, 0);
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public int X
|
||||||
|
{
|
||||||
|
get => m_X;
|
||||||
|
set => m_X = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public int Y
|
||||||
|
{
|
||||||
|
get => m_Y;
|
||||||
|
set => m_Y = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public int Z
|
||||||
|
{
|
||||||
|
get => m_Z;
|
||||||
|
set => m_Z = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Point3D(IPoint3D p) : this(p.X, p.Y, p.Z)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public Point3D(IPoint2D p, int z) : this(p.X, p.Y, z)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public Point3D(int x, int y, int z)
|
||||||
|
{
|
||||||
|
m_X = x;
|
||||||
|
m_Y = y;
|
||||||
|
m_Z = z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString() => $"({m_X}, {m_Y}, {m_Z})";
|
||||||
|
|
||||||
|
public bool Equals(Point3D other) => m_X == other.m_X && m_Y == other.m_Y && m_Z == other.m_Z;
|
||||||
|
|
||||||
|
public bool Equals(IPoint3D other) =>
|
||||||
|
!ReferenceEquals(other, null) && m_X == other.X && m_Y == other.Y && m_Z == other.Z;
|
||||||
|
|
||||||
|
public override bool Equals(object obj) => obj is Point3D other && Equals(other);
|
||||||
|
|
||||||
|
public override int GetHashCode() => HashCode.Combine(m_X, m_Y, m_Z);
|
||||||
|
|
||||||
|
public static Point3D Parse(string value)
|
||||||
|
{
|
||||||
|
var start = value.IndexOf('(');
|
||||||
|
var end = value.IndexOf(',', start + 1);
|
||||||
|
|
||||||
|
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out int x);
|
||||||
|
|
||||||
|
start = end;
|
||||||
|
end = value.IndexOf(',', start + 1);
|
||||||
|
|
||||||
|
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out int y);
|
||||||
|
|
||||||
|
start = end;
|
||||||
|
end = value.IndexOf(')', start + 1);
|
||||||
|
|
||||||
|
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out int z);
|
||||||
|
|
||||||
|
return new Point3D(x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool operator ==(Point3D l, Point3D r) => l.m_X == r.m_X && l.m_Y == r.m_Y && l.m_Z == r.m_Z;
|
||||||
|
|
||||||
|
public static bool operator ==(Point3D l, IPoint3D r) =>
|
||||||
|
!ReferenceEquals(r, null) && l.m_X == r.X && l.m_Y == r.Y && l.m_Z == r.Z;
|
||||||
|
|
||||||
|
public static bool operator !=(Point3D l, Point3D r) => l.m_X != r.m_X || l.m_Y != r.m_Y || l.m_Z != r.m_Z;
|
||||||
|
|
||||||
|
public static bool operator !=(Point3D l, IPoint3D r) =>
|
||||||
|
!ReferenceEquals(r, null) && (l.m_X != r.X || l.m_Y != r.Y || l.m_Z != r.Z);
|
||||||
|
|
||||||
|
public static bool operator >(Point3D l, Point3D r) => l.m_X > r.m_X && l.m_Y > r.m_Y && l.m_Z > r.m_Z;
|
||||||
|
|
||||||
|
public static bool operator >(Point3D l, IPoint3D r) =>
|
||||||
|
!ReferenceEquals(r, null) && l.m_X > r.X && l.m_Y > r.Y && l.m_Z > r.Z;
|
||||||
|
|
||||||
|
public static bool operator <(Point3D l, Point3D r) => l.m_X < r.m_X && l.m_Y < r.m_Y && l.m_Z > r.m_Z;
|
||||||
|
|
||||||
|
public static bool operator <(Point3D l, IPoint3D r) =>
|
||||||
|
!ReferenceEquals(r, null) && l.m_X < r.X && l.m_Y < r.Y && l.m_Z > r.Z;
|
||||||
|
|
||||||
|
public static bool operator >=(Point3D l, Point3D r) => l.m_X >= r.m_X && l.m_Y >= r.m_Y && l.m_Z > r.m_Z;
|
||||||
|
|
||||||
|
public static bool operator >=(Point3D l, IPoint3D r) =>
|
||||||
|
!ReferenceEquals(r, null) && l.m_X >= r.X && l.m_Y >= r.Y && l.m_Z > r.Z;
|
||||||
|
|
||||||
|
public static bool operator <=(Point3D l, Point3D r) => l.m_X <= r.m_X && l.m_Y <= r.m_Y && l.m_Z > r.m_Z;
|
||||||
|
|
||||||
|
public static bool operator <=(Point3D l, IPoint3D r) =>
|
||||||
|
!ReferenceEquals(r, null) && l.m_X <= r.X && l.m_Y <= r.Y && l.m_Z > r.Z;
|
||||||
|
|
||||||
|
public int CompareTo(Point3D other)
|
||||||
|
{
|
||||||
|
var xComparison = m_X.CompareTo(other.m_X);
|
||||||
|
if (xComparison != 0) return xComparison;
|
||||||
|
var yComparison = m_Y.CompareTo(other.m_Y);
|
||||||
|
if (yComparison != 0) return yComparison;
|
||||||
|
return m_Z.CompareTo(other.m_Z);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int CompareTo(IPoint3D other)
|
||||||
|
{
|
||||||
|
var xComparison = m_X.CompareTo(other.X);
|
||||||
|
if (xComparison != 0) return xComparison;
|
||||||
|
var yComparison = m_Y.CompareTo(other.Y);
|
||||||
|
if (yComparison != 0) return yComparison;
|
||||||
|
return m_Z.CompareTo(other.Z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
141
Projects/Server/Geometry/Rectangle2D.cs
Normal file
141
Projects/Server/Geometry/Rectangle2D.cs
Normal file
|
|
@ -0,0 +1,141 @@
|
||||||
|
/*************************************************************************
|
||||||
|
* ModernUO *
|
||||||
|
* Copyright (C) 2019-2020 - ModernUO Development Team *
|
||||||
|
* Email: hi@modernuo.com *
|
||||||
|
* File: Rectangle2D.cs - Created: 2020/05/31 - Updated: 2020/05/31 *
|
||||||
|
* *
|
||||||
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||||
|
*************************************************************************/
|
||||||
|
|
||||||
|
namespace Server
|
||||||
|
{
|
||||||
|
[NoSort]
|
||||||
|
[Parsable]
|
||||||
|
[PropertyObject]
|
||||||
|
public struct Rectangle2D
|
||||||
|
{
|
||||||
|
private Point2D m_Start;
|
||||||
|
private Point2D m_End;
|
||||||
|
|
||||||
|
public Rectangle2D(IPoint2D start, IPoint2D end)
|
||||||
|
{
|
||||||
|
m_Start = new Point2D(start);
|
||||||
|
m_End = new Point2D(end);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Rectangle2D(int x, int y, int width, int height)
|
||||||
|
{
|
||||||
|
m_Start = new Point2D(x, y);
|
||||||
|
m_End = new Point2D(x + width, y + height);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Set(int x, int y, int width, int height)
|
||||||
|
{
|
||||||
|
m_Start = new Point2D(x, y);
|
||||||
|
m_End = new Point2D(x + width, y + height);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Rectangle2D Parse(string value)
|
||||||
|
{
|
||||||
|
var start = value.IndexOf('(');
|
||||||
|
var end = value.IndexOf(',', start + 1);
|
||||||
|
|
||||||
|
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out int x);
|
||||||
|
|
||||||
|
start = end;
|
||||||
|
end = value.IndexOf(',', start + 1);
|
||||||
|
|
||||||
|
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out int y);
|
||||||
|
|
||||||
|
start = end;
|
||||||
|
end = value.IndexOf(',', start + 1);
|
||||||
|
|
||||||
|
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out int w);
|
||||||
|
|
||||||
|
start = end;
|
||||||
|
end = value.IndexOf(')', start + 1);
|
||||||
|
|
||||||
|
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out int h);
|
||||||
|
|
||||||
|
return new Rectangle2D(x, y, w, h);
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public Point2D Start
|
||||||
|
{
|
||||||
|
get => m_Start;
|
||||||
|
set => m_Start = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public Point2D End
|
||||||
|
{
|
||||||
|
get => m_End;
|
||||||
|
set => m_End = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public int X
|
||||||
|
{
|
||||||
|
get => m_Start.m_X;
|
||||||
|
set => m_Start.m_X = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public int Y
|
||||||
|
{
|
||||||
|
get => m_Start.m_Y;
|
||||||
|
set => m_Start.m_Y = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public int Width
|
||||||
|
{
|
||||||
|
get => m_End.m_X - m_Start.m_X;
|
||||||
|
set => m_End.m_X = m_Start.m_X + value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public int Height
|
||||||
|
{
|
||||||
|
get => m_End.m_Y - m_Start.m_Y;
|
||||||
|
set => m_End.m_Y = m_Start.m_Y + value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void MakeHold(Rectangle2D r)
|
||||||
|
{
|
||||||
|
if (r.m_Start.m_X < m_Start.m_X)
|
||||||
|
m_Start.m_X = r.m_Start.m_X;
|
||||||
|
|
||||||
|
if (r.m_Start.m_Y < m_Start.m_Y)
|
||||||
|
m_Start.m_Y = r.m_Start.m_Y;
|
||||||
|
|
||||||
|
if (r.m_End.m_X > m_End.m_X)
|
||||||
|
m_End.m_X = r.m_End.m_X;
|
||||||
|
|
||||||
|
if (r.m_End.m_Y > m_End.m_Y)
|
||||||
|
m_End.m_Y = r.m_End.m_Y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Contains(Point3D p) =>
|
||||||
|
m_Start.m_X <= p.m_X && m_Start.m_Y <= p.m_Y && m_End.m_X > p.m_X && m_End.m_Y > p.m_Y;
|
||||||
|
|
||||||
|
public bool Contains(Point2D p) =>
|
||||||
|
m_Start.m_X <= p.m_X && m_Start.m_Y <= p.m_Y && m_End.m_X > p.m_X && m_End.m_Y > p.m_Y;
|
||||||
|
|
||||||
|
public bool Contains(IPoint2D p) => m_Start <= p && m_End > p;
|
||||||
|
|
||||||
|
public override string ToString() => $"({X}, {Y})+({Width}, {Height})";
|
||||||
|
}
|
||||||
|
}
|
||||||
123
Projects/Server/Geometry/Rectangle3D.cs
Normal file
123
Projects/Server/Geometry/Rectangle3D.cs
Normal file
|
|
@ -0,0 +1,123 @@
|
||||||
|
/*************************************************************************
|
||||||
|
* ModernUO *
|
||||||
|
* Copyright (C) 2019-2020 - ModernUO Development Team *
|
||||||
|
* Email: hi@modernuo.com *
|
||||||
|
* File: Rectangle3D.cs - Created: 2020/05/31 - Updated: 2020/05/31 *
|
||||||
|
* *
|
||||||
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||||
|
*************************************************************************/
|
||||||
|
|
||||||
|
namespace Server
|
||||||
|
{
|
||||||
|
[NoSort]
|
||||||
|
[PropertyObject]
|
||||||
|
public struct Rectangle3D
|
||||||
|
{
|
||||||
|
private Point3D m_Start;
|
||||||
|
private Point3D m_End;
|
||||||
|
|
||||||
|
public Rectangle3D(Point3D start, Point3D end)
|
||||||
|
{
|
||||||
|
m_Start = start;
|
||||||
|
m_End = end;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Rectangle3D(int x, int y, int z, int width, int height, int depth)
|
||||||
|
{
|
||||||
|
m_Start = new Point3D(x, y, z);
|
||||||
|
m_End = new Point3D(x + width, y + height, z + depth);
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public Point3D Start
|
||||||
|
{
|
||||||
|
get => m_Start;
|
||||||
|
set => m_Start = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public Point3D End
|
||||||
|
{
|
||||||
|
get => m_End;
|
||||||
|
set => m_End = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public int X
|
||||||
|
{
|
||||||
|
get => m_Start.m_X;
|
||||||
|
set => m_Start.m_X = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public int Y
|
||||||
|
{
|
||||||
|
get => m_Start.m_Y;
|
||||||
|
set => m_Start.m_Y = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public int Z
|
||||||
|
{
|
||||||
|
get => m_Start.m_Z;
|
||||||
|
set => m_Start.m_Z = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public int Width => m_End.X - m_Start.X;
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public int Height => m_End.Y - m_Start.Y;
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public int Depth => m_End.Z - m_Start.Z;
|
||||||
|
|
||||||
|
public void MakeHold(Rectangle3D r)
|
||||||
|
{
|
||||||
|
if (r.m_Start.m_X < m_Start.m_X)
|
||||||
|
m_Start.m_X = r.m_Start.m_X;
|
||||||
|
|
||||||
|
if (r.m_Start.m_Y < m_Start.m_Y)
|
||||||
|
m_Start.m_Y = r.m_Start.m_Y;
|
||||||
|
|
||||||
|
if (r.m_Start.m_Z < m_Start.m_Z)
|
||||||
|
m_Start.m_Z = r.m_Start.m_Z;
|
||||||
|
|
||||||
|
if (r.m_End.m_X > m_End.m_X)
|
||||||
|
m_End.m_X = r.m_End.m_X;
|
||||||
|
|
||||||
|
if (r.m_End.m_Y > m_End.m_Y)
|
||||||
|
m_End.m_Y = r.m_End.m_Y;
|
||||||
|
|
||||||
|
if (r.m_End.m_Z < m_End.m_Z)
|
||||||
|
m_End.m_Z = r.m_End.m_Z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Contains(Point3D p) =>
|
||||||
|
p.m_X >= m_Start.m_X
|
||||||
|
&& p.m_X < m_End.m_X
|
||||||
|
&& p.m_Y >= m_Start.m_Y
|
||||||
|
&& p.m_Y < m_End.m_Y
|
||||||
|
&& p.m_Z >= m_Start.m_Z
|
||||||
|
&& p.m_Z < m_End.m_Z;
|
||||||
|
|
||||||
|
public bool Contains(IPoint3D p) =>
|
||||||
|
p.X >= m_Start.m_X
|
||||||
|
&& p.X < m_End.m_X
|
||||||
|
&& p.Y >= m_Start.m_Y
|
||||||
|
&& p.Y < m_End.m_Y
|
||||||
|
&& p.Z >= m_Start.m_Z
|
||||||
|
&& p.Z < m_End.m_Z;
|
||||||
|
}
|
||||||
|
}
|
||||||
173
Projects/Server/Geometry/WorldLocation.cs
Normal file
173
Projects/Server/Geometry/WorldLocation.cs
Normal file
|
|
@ -0,0 +1,173 @@
|
||||||
|
/*************************************************************************
|
||||||
|
* ModernUO *
|
||||||
|
* Copyright (C) 2019-2020 - ModernUO Development Team *
|
||||||
|
* Email: hi@modernuo.com *
|
||||||
|
* File: WorldLocation.cs - Created: 2020/05/31 - Updated: 2020/05/31 *
|
||||||
|
* *
|
||||||
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||||
|
*************************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Server
|
||||||
|
{
|
||||||
|
[Parsable]
|
||||||
|
public struct WorldLocation : IPoint3D, IComparable<WorldLocation>, IEquatable<object>, IEquatable<WorldLocation>, IEquatable<IEntity>
|
||||||
|
{
|
||||||
|
internal Point3D m_Loc;
|
||||||
|
internal Map m_Map;
|
||||||
|
|
||||||
|
public static readonly WorldLocation Zero = new WorldLocation(0, 0, 0, Map.Internal);
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public Point3D Location
|
||||||
|
{
|
||||||
|
get => m_Loc;
|
||||||
|
set => m_Loc = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public int X
|
||||||
|
{
|
||||||
|
get => m_Loc.m_X;
|
||||||
|
set => m_Loc.m_X = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public int Y
|
||||||
|
{
|
||||||
|
get => m_Loc.m_Y;
|
||||||
|
set => m_Loc.m_Y = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public int Z
|
||||||
|
{
|
||||||
|
get => m_Loc.m_Z;
|
||||||
|
set => m_Loc.m_Z = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandProperty(AccessLevel.Counselor)]
|
||||||
|
public Map Map
|
||||||
|
{
|
||||||
|
get => m_Map;
|
||||||
|
set => m_Map = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public WorldLocation(IEntity e) : this(e.Location.X, e.Location.Y, e.Location.Z, e.Map)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public WorldLocation(IPoint2D p, Map map) : this(p.X, p.Y, 0, map)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public WorldLocation(int x, int y, Map map) : this(x, y, 0, map)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public WorldLocation(IPoint3D p, Map map) : this(p.X, p.Y, p.Z, map)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public WorldLocation(int x, int y, int z, Map map)
|
||||||
|
{
|
||||||
|
m_Loc.m_X = x;
|
||||||
|
m_Loc.m_Y = y;
|
||||||
|
m_Loc.m_Z = z;
|
||||||
|
m_Map = map;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString() =>
|
||||||
|
$"({m_Loc.m_X}, {m_Loc.m_Y}, {m_Loc.m_Z}, {m_Map?.ToString() ?? "(-null-)"})";
|
||||||
|
|
||||||
|
public bool Equals(WorldLocation other) =>
|
||||||
|
m_Loc.Equals(other.m_Loc) && m_Map.MapID == other.m_Map.MapID;
|
||||||
|
|
||||||
|
public bool Equals(IEntity other) =>
|
||||||
|
!ReferenceEquals(other, null) && m_Loc == other.Location &&
|
||||||
|
m_Map.MapID == other.Map.MapID;
|
||||||
|
|
||||||
|
public override bool Equals(object obj) =>
|
||||||
|
obj is WorldLocation other && Equals(other);
|
||||||
|
|
||||||
|
public override int GetHashCode() => HashCode.Combine(m_Loc, m_Map);
|
||||||
|
|
||||||
|
public int CompareTo(WorldLocation other)
|
||||||
|
{
|
||||||
|
var locComparison = m_Loc.CompareTo(other.m_Loc);
|
||||||
|
if (locComparison != 0) return locComparison;
|
||||||
|
return Comparer<Map>.Default.Compare(m_Map, other.m_Map);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static implicit operator Point3D(WorldLocation worldLocation) => worldLocation.Location;
|
||||||
|
|
||||||
|
public static bool operator ==(WorldLocation l, WorldLocation r) =>
|
||||||
|
l.m_Loc == r.m_Loc && l.m_Map == r.m_Map;
|
||||||
|
|
||||||
|
public static bool operator ==(WorldLocation l, IEntity r) =>
|
||||||
|
!ReferenceEquals(r, null) && l.m_Loc == r.Location && l.m_Map == r.Map;
|
||||||
|
|
||||||
|
public static bool operator !=(WorldLocation l, WorldLocation r) => l.m_Loc != r.m_Loc && l.m_Map != r.m_Map;
|
||||||
|
|
||||||
|
public static bool operator !=(WorldLocation l, IEntity r) =>
|
||||||
|
!ReferenceEquals(r, null) && l.m_Loc != r.Location && l.m_Map != r.Map;
|
||||||
|
|
||||||
|
public static bool operator >(WorldLocation l, WorldLocation r) => l.m_Loc > r.m_Loc && l.m_Map == r.m_Map;
|
||||||
|
|
||||||
|
public static bool operator >(WorldLocation l, IEntity r) =>
|
||||||
|
!ReferenceEquals(r, null) && l.m_Loc > r.Location && l.m_Map == r.Map;
|
||||||
|
|
||||||
|
public static bool operator <(WorldLocation l, WorldLocation r) => l.m_Loc < r.m_Loc && l.m_Map == r.m_Map;
|
||||||
|
|
||||||
|
public static bool operator <(WorldLocation l, IEntity r) =>
|
||||||
|
!ReferenceEquals(r, null) && l.m_Loc < r.Location && l.m_Map == r.Map;
|
||||||
|
|
||||||
|
public static bool operator >=(WorldLocation l, WorldLocation r) => l.m_Loc >= r.m_Loc && l.m_Map == r.m_Map;
|
||||||
|
|
||||||
|
public static bool operator >=(WorldLocation l, IEntity r) =>
|
||||||
|
!ReferenceEquals(r, null) && l.m_Loc >= r.Location && l.m_Map == r.Map;
|
||||||
|
|
||||||
|
public static bool operator <=(WorldLocation l, WorldLocation r) => l.m_Loc <= r.m_Loc && l.m_Map == r.m_Map;
|
||||||
|
|
||||||
|
public static bool operator <=(WorldLocation l, IEntity r) =>
|
||||||
|
!ReferenceEquals(r, null) && l.m_Loc <= r.Location && l.m_Map == r.Map;
|
||||||
|
|
||||||
|
public static WorldLocation Parse(string value)
|
||||||
|
{
|
||||||
|
var start = value.IndexOf('(');
|
||||||
|
var end = value.IndexOf(',', start + 1);
|
||||||
|
|
||||||
|
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out int x);
|
||||||
|
|
||||||
|
start = end;
|
||||||
|
end = value.IndexOf(',', start + 1);
|
||||||
|
|
||||||
|
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out int y);
|
||||||
|
|
||||||
|
start = end;
|
||||||
|
end = value.IndexOf(',', start + 1);
|
||||||
|
|
||||||
|
Utility.ToInt32(value.Substring(start + 1, end - (start + 1)).Trim(), out int z);
|
||||||
|
|
||||||
|
start = end;
|
||||||
|
end = value.IndexOf(')', start + 1);
|
||||||
|
|
||||||
|
var map = Map.Parse(value.Substring(start + 1, end - (start + 1)).Trim());
|
||||||
|
|
||||||
|
return new WorldLocation(x, y, z, map);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,160 @@
|
||||||
|
/*************************************************************************
|
||||||
|
* ModernUO *
|
||||||
|
* Copyright (C) 2019-2020 - ModernUO Development Team *
|
||||||
|
* Email: hi@modernuo.com *
|
||||||
|
* File: WorldLocationConverter.cs *
|
||||||
|
* Created: 2020/05/31 - Updated: 2020/05/31 *
|
||||||
|
* *
|
||||||
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||||
|
*************************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Server.Json
|
||||||
|
{
|
||||||
|
public class WorldLocationConverter : JsonConverter<WorldLocation>
|
||||||
|
{
|
||||||
|
private WorldLocation DeserializeArray(ref Utf8JsonReader reader)
|
||||||
|
{
|
||||||
|
Span<int> data = stackalloc int[3];
|
||||||
|
var count = 0;
|
||||||
|
bool hasMap = false;
|
||||||
|
Map map = null;
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
reader.Read();
|
||||||
|
if (reader.TokenType == JsonTokenType.EndArray)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (reader.TokenType == JsonTokenType.Number)
|
||||||
|
{
|
||||||
|
if (count < 3)
|
||||||
|
data[count] = reader.GetInt32();
|
||||||
|
else if (count == 3)
|
||||||
|
map = Map.Maps[reader.GetInt32()];
|
||||||
|
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (reader.TokenType == JsonTokenType.String)
|
||||||
|
{
|
||||||
|
map = Map.Parse(reader.GetString());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hasMap || count < 3 || count > 4)
|
||||||
|
throw new JsonException("WorldLocation must be an array of x, y, z, and map");
|
||||||
|
|
||||||
|
return new WorldLocation(data[0], data[1], data[2], map);
|
||||||
|
}
|
||||||
|
|
||||||
|
private WorldLocation DeserializeObj(ref Utf8JsonReader reader, JsonSerializerOptions options)
|
||||||
|
{
|
||||||
|
Span<int> data = stackalloc int[3];
|
||||||
|
int count = 0;
|
||||||
|
bool hasLoc = false;
|
||||||
|
bool hasXYZ = false;
|
||||||
|
bool hasMap = false;
|
||||||
|
Map map = null;
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
reader.Read();
|
||||||
|
if (reader.TokenType == JsonTokenType.EndObject)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (reader.TokenType != JsonTokenType.PropertyName)
|
||||||
|
throw new JsonException("Invalid Json structure for WorldLocation object");
|
||||||
|
|
||||||
|
var key = reader.GetString();
|
||||||
|
|
||||||
|
var i = key switch
|
||||||
|
{
|
||||||
|
"x" => 0,
|
||||||
|
"y" => 1,
|
||||||
|
"z" => 2,
|
||||||
|
"loc" => 3,
|
||||||
|
"map" => 4,
|
||||||
|
_ => 5
|
||||||
|
};
|
||||||
|
|
||||||
|
if (i == 5)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
reader.Read();
|
||||||
|
|
||||||
|
if (i < 3)
|
||||||
|
{
|
||||||
|
if (hasLoc)
|
||||||
|
throw new JsonException("WorldLocation must have loc or x, y, z, but not both");
|
||||||
|
|
||||||
|
if (reader.TokenType != JsonTokenType.Number)
|
||||||
|
throw new JsonException($"Value for {key} must be a number");
|
||||||
|
|
||||||
|
hasXYZ = true;
|
||||||
|
data[i] = reader.GetInt32();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i == 3)
|
||||||
|
{
|
||||||
|
if (hasXYZ)
|
||||||
|
throw new JsonException("WorldLocation must have loc or x, y, z, but not both");
|
||||||
|
|
||||||
|
hasLoc = true;
|
||||||
|
Point3D loc = new Point3DConverter().Read(ref reader, typeof(Point3D), options);
|
||||||
|
data[0] = loc.X;
|
||||||
|
data[1] = loc.Y;
|
||||||
|
data[2] = loc.Z;
|
||||||
|
count = 3;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
map = reader.TokenType switch
|
||||||
|
{
|
||||||
|
JsonTokenType.String => Map.Parse(reader.GetString()),
|
||||||
|
JsonTokenType.Number => Map.Maps[reader.GetInt32()],
|
||||||
|
_ => throw new JsonException($"Value for {key} must be a number or string")
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hasMap || count < 2)
|
||||||
|
throw new JsonException("WorldLocation must have an x, y, z, and map properties");
|
||||||
|
|
||||||
|
return new WorldLocation(data[0], data[1], data[2], map);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override WorldLocation Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) =>
|
||||||
|
reader.TokenType switch
|
||||||
|
{
|
||||||
|
JsonTokenType.StartArray => DeserializeArray(ref reader),
|
||||||
|
JsonTokenType.StartObject => DeserializeObj(ref reader, options),
|
||||||
|
_ => throw new JsonException("Invalid Json for Point3D")
|
||||||
|
};
|
||||||
|
|
||||||
|
public override void Write(Utf8JsonWriter writer, WorldLocation value, JsonSerializerOptions options)
|
||||||
|
{
|
||||||
|
writer.WriteStartArray();
|
||||||
|
writer.WriteNumberValue(value.X);
|
||||||
|
writer.WriteNumberValue(value.Y);
|
||||||
|
writer.WriteNumberValue(value.Z);
|
||||||
|
writer.WriteStringValue(value.Map.ToString());
|
||||||
|
writer.WriteEndArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
/*************************************************************************
|
||||||
|
* ModernUO *
|
||||||
|
* Copyright (C) 2019-2020 - ModernUO Development Team *
|
||||||
|
* Email: hi@modernuo.com *
|
||||||
|
* File: WorldLocationConverterFactory.cs *
|
||||||
|
* Created: 2020/05/31 - Updated: 2020/05/31 *
|
||||||
|
* *
|
||||||
|
* This program is free software: you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||||
|
*************************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Server.Json
|
||||||
|
{
|
||||||
|
public class WorldLocationConverterFactory : JsonConverterFactory
|
||||||
|
{
|
||||||
|
public override bool CanConvert(Type typeToConvert) => typeToConvert == typeof(WorldLocation);
|
||||||
|
|
||||||
|
public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) => new WorldLocationConverter();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -20,33 +20,50 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Buffers;
|
using System.Buffers;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace Server.Json
|
namespace Server.Json
|
||||||
{
|
{
|
||||||
public static class JsonConfig
|
public static class JsonConfig
|
||||||
{
|
{
|
||||||
public static readonly JsonSerializerOptions Options = new JsonSerializerOptions
|
public static readonly JsonSerializerOptions DefaultOptions = GetOptions();
|
||||||
|
|
||||||
|
public static JsonSerializerOptions GetOptions(params JsonConverterFactory[] converters)
|
||||||
{
|
{
|
||||||
ReadCommentHandling = JsonCommentHandling.Skip,
|
// In the future this should be optimized by cloning DefaultOptions
|
||||||
WriteIndented = true,
|
var options = new JsonSerializerOptions
|
||||||
AllowTrailingCommas = true,
|
{
|
||||||
IgnoreNullValues = true
|
ReadCommentHandling = JsonCommentHandling.Skip,
|
||||||
};
|
WriteIndented = true,
|
||||||
|
AllowTrailingCommas = true,
|
||||||
|
IgnoreNullValues = true
|
||||||
|
};
|
||||||
|
|
||||||
|
options.Converters.Add(new MapConverterFactory());
|
||||||
|
options.Converters.Add(new Point3DConverterFactory());
|
||||||
|
options.Converters.Add(new Rectangle3DConverterFactory());
|
||||||
|
options.Converters.Add(new TimeSpanConverterFactory());
|
||||||
|
|
||||||
|
for (int i = 0; i < converters.Length; i++) options.Converters.Add(converters[i]);
|
||||||
|
|
||||||
|
return options;
|
||||||
|
}
|
||||||
|
|
||||||
public static T Deserialize<T>(string filePath, JsonSerializerOptions options = null)
|
public static T Deserialize<T>(string filePath, JsonSerializerOptions options = null)
|
||||||
{
|
{
|
||||||
if (!File.Exists(filePath)) return default;
|
if (!File.Exists(filePath)) return default;
|
||||||
string text = File.ReadAllText(filePath, Utility.UTF8);
|
string text = File.ReadAllText(filePath, Utility.UTF8);
|
||||||
return JsonSerializer.Deserialize<T>(text, options ?? Options);
|
return JsonSerializer.Deserialize<T>(text, options ?? DefaultOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Serialize(string filePath, object value, JsonSerializerOptions options = null)
|
public static void Serialize(string filePath, object value, JsonSerializerOptions options = null)
|
||||||
{
|
{
|
||||||
if (File.Exists(filePath)) File.Delete(filePath);
|
if (File.Exists(filePath)) File.Delete(filePath);
|
||||||
|
|
||||||
File.WriteAllText(filePath, JsonSerializer.Serialize(value, options ?? Options));
|
File.WriteAllText(filePath, JsonSerializer.Serialize(value, options ?? DefaultOptions));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static T ToObject<T>(this ref Utf8JsonReader reader, JsonSerializerOptions options = null) =>
|
public static T ToObject<T>(this ref Utf8JsonReader reader, JsonSerializerOptions options = null) =>
|
||||||
|
|
|
||||||
|
|
@ -14,12 +14,6 @@ namespace Server
|
||||||
{
|
{
|
||||||
var path = Path.Join(Core.BaseDirectory, "Data/regions.json");
|
var path = Path.Join(Core.BaseDirectory, "Data/regions.json");
|
||||||
|
|
||||||
// Json Deserialization options for custom objects
|
|
||||||
JsonSerializerOptions options = new JsonSerializerOptions();
|
|
||||||
options.Converters.Add(new MapConverterFactory());
|
|
||||||
options.Converters.Add(new Point3DConverterFactory());
|
|
||||||
options.Converters.Add(new Rectangle3DConverterFactory());
|
|
||||||
|
|
||||||
List<string> failures = new List<string>();
|
List<string> failures = new List<string>();
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
|
||||||
|
|
@ -38,7 +32,7 @@ namespace Server
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var region = ActivatorUtil.CreateInstance(type, json, options) as Region;
|
var region = ActivatorUtil.CreateInstance(type, json, JsonConfig.DefaultOptions) as Region;
|
||||||
region?.Register();
|
region?.Register();
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
<StartupObject>Server.Core</StartupObject>
|
<StartupObject>Server.Core</StartupObject>
|
||||||
<AssemblyName>ModernUO</AssemblyName>
|
<AssemblyName>ModernUO</AssemblyName>
|
||||||
<Win32Resource />
|
<Win32Resource />
|
||||||
<Version>0.4.0</Version>
|
<Version>0.5.0</Version>
|
||||||
<Product>ModernUO Server</Product>
|
<Product>ModernUO Server</Product>
|
||||||
<PublishDir>..\..\Distribution</PublishDir>
|
<PublishDir>..\..\Distribution</PublishDir>
|
||||||
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
<Delete Files="..\..\Distribution\zlib.dll" ContinueOnError="true" />
|
<Delete Files="..\..\Distribution\zlib.dll" ContinueOnError="true" />
|
||||||
<Delete Files="..\..\Distribution\libz.dylib" ContinueOnError="true" />
|
<Delete Files="..\..\Distribution\libz.dylib" ContinueOnError="true" />
|
||||||
<Delete Files="..\..\Distribution\libz.so" ContinueOnError="true" />
|
<Delete Files="..\..\Distribution\libz.so" ContinueOnError="true" />
|
||||||
|
<Delete Files="..\..\Distribution\ZLib.Bindings.dll" ContinueOnError="true" />
|
||||||
<Delete Files="..\..\Distribution\Microsoft.AspNetCore.Connections.Abstractions.dll" ContinueOnError="true" />
|
<Delete Files="..\..\Distribution\Microsoft.AspNetCore.Connections.Abstractions.dll" ContinueOnError="true" />
|
||||||
<Delete Files="..\..\Distribution\Microsoft.AspNetCore.Http.Features.dll" ContinueOnError="true" />
|
<Delete Files="..\..\Distribution\Microsoft.AspNetCore.Http.Features.dll" ContinueOnError="true" />
|
||||||
<Delete Files="..\..\Distribution\Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.dll" ContinueOnError="true" />
|
<Delete Files="..\..\Distribution\Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.dll" ContinueOnError="true" />
|
||||||
|
|
@ -64,9 +65,9 @@
|
||||||
<AdditionalFiles Include="..\..\stylecop.json">
|
<AdditionalFiles Include="..\..\stylecop.json">
|
||||||
<Link>stylecop.json</Link>
|
<Link>stylecop.json</Link>
|
||||||
</AdditionalFiles>
|
</AdditionalFiles>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="3.1.4" />
|
<PackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="3.1.5" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" Version="3.1.4" />
|
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" Version="3.1.5" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.4" />
|
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.5" />
|
||||||
<PackageReference Include="System.IO.Pipelines" Version="4.7.2" />
|
<PackageReference Include="System.IO.Pipelines" Version="4.7.2" />
|
||||||
<PackageReference Include="ZLib.Bindings" Version="1.0.2" />
|
<PackageReference Include="ZLib.Bindings" Version="1.0.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
||||||
|
|
@ -4,36 +4,36 @@
|
||||||
".NETCoreApp,Version=v3.1": {
|
".NETCoreApp,Version=v3.1": {
|
||||||
"Microsoft.AspNetCore.Connections.Abstractions": {
|
"Microsoft.AspNetCore.Connections.Abstractions": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[3.1.4, )",
|
"requested": "[3.1.5, )",
|
||||||
"resolved": "3.1.4",
|
"resolved": "3.1.5",
|
||||||
"contentHash": "3F5O9gkTfK8lp9qiLkKBacNlTIKb6dGv8W7noHGb6QVw8Kt0OvSXH/hCI08Ao7GCehciI7wNA9c6lUqarLV92A==",
|
"contentHash": "d9QNKLjOIb+O8fW+Xolhw0ZpOP1nzJi822qthXUhZqzb1PpL/xD4tmZfeE6IRXlRmQOAKDKg38mDEDTaMPGy1w==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.AspNetCore.Http.Features": "3.1.4",
|
"Microsoft.AspNetCore.Http.Features": "3.1.5",
|
||||||
"System.IO.Pipelines": "4.7.1"
|
"System.IO.Pipelines": "4.7.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv": {
|
"Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[3.1.4, )",
|
"requested": "[3.1.5, )",
|
||||||
"resolved": "3.1.4",
|
"resolved": "3.1.5",
|
||||||
"contentHash": "htKi6bBU13AxI3qsM21K0s82J43JAGPmPG/KTAvMHoFgba8/U32j2Y/4olWkFw8vRAGv302F6FnOOfe2eObfNA==",
|
"contentHash": "RmWkwrdmpquJa3Tvui4AhNEy+LeqeDgd85RPNjamwKNjVSUW+Yaz8n1pKPz4IiqDJ+3XfdmaLjP9TSVnXSDNuA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Libuv": "1.10.0",
|
"Libuv": "1.10.0",
|
||||||
"Microsoft.AspNetCore.Connections.Abstractions": "3.1.4",
|
"Microsoft.AspNetCore.Connections.Abstractions": "3.1.5",
|
||||||
"Microsoft.Extensions.Logging.Abstractions": "3.1.4",
|
"Microsoft.Extensions.Logging.Abstractions": "3.1.5",
|
||||||
"Microsoft.Extensions.Options": "3.1.4"
|
"Microsoft.Extensions.Options": "3.1.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Hosting.Abstractions": {
|
"Microsoft.Extensions.Hosting.Abstractions": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[3.1.4, )",
|
"requested": "[3.1.5, )",
|
||||||
"resolved": "3.1.4",
|
"resolved": "3.1.5",
|
||||||
"contentHash": "w1Zildlb70fJ8qqysyt6HaueWBQ89qQmcSCsh/6+1TKmipU0AOjwduqY72eqHZ39j4jZYaXaoXQ/zqXZ1nYgCg==",
|
"contentHash": "e57iK9spITqHE7qNgC3IowzK+PK5NC2rmVY4Sz+ZoDNO24nIsgllIRbanSbt2wQz7Iy/N8Jm3C1sXqKc8zEOMQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.Configuration.Abstractions": "3.1.4",
|
"Microsoft.Extensions.Configuration.Abstractions": "3.1.5",
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.4",
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.5",
|
||||||
"Microsoft.Extensions.FileProviders.Abstractions": "3.1.4",
|
"Microsoft.Extensions.FileProviders.Abstractions": "3.1.5",
|
||||||
"Microsoft.Extensions.Logging.Abstractions": "3.1.4"
|
"Microsoft.Extensions.Logging.Abstractions": "3.1.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"System.IO.Pipelines": {
|
"System.IO.Pipelines": {
|
||||||
|
|
@ -46,7 +46,7 @@
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[1.0.2, )",
|
"requested": "[1.0.2, )",
|
||||||
"resolved": "1.0.2",
|
"resolved": "1.0.2",
|
||||||
"contentHash": "rd7gUFhwKb9Pd5ehhsUUdZiGS/AQQ1v0UItP2J+EYIfKzq7H54yDQ509qcBmbNtr6zTz7AAax4zRUcg3j9mfyQ=="
|
"contentHash": "oMnRfnRHzfboCS/SXUrrqbDVtM/9h5LkHkB8GuyUq70BYkJRza7CNZxLR+F6IKOTNDcDO68VVCID4DA5Sj8c4Q=="
|
||||||
},
|
},
|
||||||
"Libuv": {
|
"Libuv": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
|
|
@ -58,58 +58,106 @@
|
||||||
},
|
},
|
||||||
"Microsoft.AspNetCore.Http.Features": {
|
"Microsoft.AspNetCore.Http.Features": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "3.1.4",
|
"resolved": "3.1.5",
|
||||||
"contentHash": "HroyqnPK+g/GF+W3oLFQ2CfKS7BO/vzKhcgRAz3bovf3F/c3vR5Qw8AJEi0c+UVxyIhbFp00CdNR53Ghj+qckA==",
|
"contentHash": "I+G1L5363H2oCdMxHv2vtbluRgb4e33Gv6zJd8Uj93bBRFbE4MZlb3cB9PvRAYpSB0xbK216/qRtHmQJBzWIcg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.Primitives": "3.1.4",
|
"Microsoft.Extensions.Primitives": "3.1.5",
|
||||||
"System.IO.Pipelines": "4.7.1"
|
"System.IO.Pipelines": "4.7.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Configuration.Abstractions": {
|
"Microsoft.Extensions.Configuration.Abstractions": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "3.1.4",
|
"resolved": "3.1.5",
|
||||||
"contentHash": "k7IJME4US5S5JFOGYaei5TLwutp8IqUvcBWtliKXETGn/JScmCgfej21xq5+ttxi0qZhiyJY06y9dw+cLh3kiQ==",
|
"contentHash": "VBcAk6s9izZr04WCzNqOh1Sxz2RbVSh0G79MfpHSDv16cUJtSEYEHody9ZnF71LBEktzdu6cvDFBOFMh43q0iA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.Primitives": "3.1.4"
|
"Microsoft.Extensions.Primitives": "3.1.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": {
|
"Microsoft.Extensions.DependencyInjection.Abstractions": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "3.1.4",
|
"resolved": "3.1.5",
|
||||||
"contentHash": "AceHamXNKDMDwIoZqEoApLp8s3935wSC3VXrPaRWa0wWOaEcYdDlo1nWQ1zLiezoDmpJzV7FqDm53E0Ty/hEMg=="
|
"contentHash": "2VSCj2TZPMdeEi279Lawi6qJQu4+sEWizSOYrhY6hapyS1jxn1jVUZT1Ugv68bya+x8+3lD4+RqhUZql9PhISQ=="
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.FileProviders.Abstractions": {
|
"Microsoft.Extensions.FileProviders.Abstractions": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "3.1.4",
|
"resolved": "3.1.5",
|
||||||
"contentHash": "NNJA8JAoIaxlnb/bdQ8N0kA4T9ZaBAaUFM79pnT7j/x61Wne6K4lznU9u+NDgSAB3wrSx94mz169jNtle7KrSA==",
|
"contentHash": "LrEQ97jhSWw84Y1m+CJfvh9qTUUswt27au54QYn2x5PCMPPgR+yAv/4VTJKMGSSI9T4scSLBXZ/fVhT4fPTCtA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.Primitives": "3.1.4"
|
"Microsoft.Extensions.Primitives": "3.1.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Logging.Abstractions": {
|
"Microsoft.Extensions.Logging.Abstractions": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "3.1.4",
|
"resolved": "3.1.5",
|
||||||
"contentHash": "JNPxhw2XwhjfGFyIkA5eBfzUDPNpa6Q50HJ2F6lCAMoSa1GquAktTrl4PhEyTYFNmu09B0E90WhYsUb3kmSkOA=="
|
"contentHash": "ZvwowjRSWXewdPI+whPFXgwF4Qme6Q9KV9SCPEITSGiqHLArct7q5hTBtTzj3GPsVLjTqehvTg6Bd/EQk9JS0A=="
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Options": {
|
"Microsoft.Extensions.Options": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "3.1.4",
|
"resolved": "3.1.5",
|
||||||
"contentHash": "ntWmD8i6UmAo0nn5MiCXIVl3+75aybVHgP/NxL9B16zwsbGkSfs+66BullsGEDNvrimgIFVDO+iB/h0yWfATWg==",
|
"contentHash": "f+JT/7lkKBMp/Ak2tVjO+TD7o+UoCfjnExkZNn0PZIso8kIXrqNy6x42Lrxf4Q0pW3JMf9ExmL2EQlvk2XnFAg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.4",
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.5",
|
||||||
"Microsoft.Extensions.Primitives": "3.1.4"
|
"Microsoft.Extensions.Primitives": "3.1.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.Primitives": {
|
"Microsoft.Extensions.Primitives": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "3.1.4",
|
"resolved": "3.1.5",
|
||||||
"contentHash": "tLR9n5ltwA56nr1t5M6q5IBfGLXtMS+XgumtqVENmtPQOWUD+m0Kgo1U6GWr06Y875WUN3sOGnmqkvW4an7fYA=="
|
"contentHash": "6bLdjSAQix82oP2tsuX9MM2yjgUFFOkSZYyRSKoUULilw2cg0Y0H+dnugwYlfj8Jd7yjd/+QSdNBqEyYhTYv0w=="
|
||||||
},
|
},
|
||||||
"Microsoft.NETCore.Platforms": {
|
"Microsoft.NETCore.Platforms": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "1.0.1",
|
"resolved": "1.0.1",
|
||||||
"contentHash": "2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ=="
|
"contentHash": "2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ=="
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
".NETCoreApp,Version=v3.1/linux-x64": {
|
||||||
|
"ZLib.Bindings": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[1.0.2, )",
|
||||||
|
"resolved": "1.0.2",
|
||||||
|
"contentHash": "oMnRfnRHzfboCS/SXUrrqbDVtM/9h5LkHkB8GuyUq70BYkJRza7CNZxLR+F6IKOTNDcDO68VVCID4DA5Sj8c4Q=="
|
||||||
|
},
|
||||||
|
"Libuv": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "1.10.0",
|
||||||
|
"contentHash": "GsCf4q+eyaI49rCPlgYxdxa1SQCysXFFdSJWdstrwxytg4+VPYLYrXD4AT2rjHVJ+UF7SSWX9CapWEYaU4ejVQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.0.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
".NETCoreApp,Version=v3.1/osx-x64": {
|
||||||
|
"ZLib.Bindings": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[1.0.2, )",
|
||||||
|
"resolved": "1.0.2",
|
||||||
|
"contentHash": "oMnRfnRHzfboCS/SXUrrqbDVtM/9h5LkHkB8GuyUq70BYkJRza7CNZxLR+F6IKOTNDcDO68VVCID4DA5Sj8c4Q=="
|
||||||
|
},
|
||||||
|
"Libuv": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "1.10.0",
|
||||||
|
"contentHash": "GsCf4q+eyaI49rCPlgYxdxa1SQCysXFFdSJWdstrwxytg4+VPYLYrXD4AT2rjHVJ+UF7SSWX9CapWEYaU4ejVQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.0.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
".NETCoreApp,Version=v3.1/win-x64": {
|
||||||
|
"ZLib.Bindings": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[1.0.2, )",
|
||||||
|
"resolved": "1.0.2",
|
||||||
|
"contentHash": "oMnRfnRHzfboCS/SXUrrqbDVtM/9h5LkHkB8GuyUq70BYkJRza7CNZxLR+F6IKOTNDcDO68VVCID4DA5Sj8c4Q=="
|
||||||
|
},
|
||||||
|
"Libuv": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "1.10.0",
|
||||||
|
"contentHash": "GsCf4q+eyaI49rCPlgYxdxa1SQCysXFFdSJWdstrwxytg4+VPYLYrXD4AT2rjHVJ+UF7SSWX9CapWEYaU4ejVQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.0.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
File diff suppressed because it is too large
Load diff
28
Projects/UOContent/Commands/Object Creation/CAGCategory.cs
Normal file
28
Projects/UOContent/Commands/Object Creation/CAGCategory.cs
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
using Server.Gumps;
|
||||||
|
|
||||||
|
namespace Server.Commands
|
||||||
|
{
|
||||||
|
public class CAGCategory : CAGNode
|
||||||
|
{
|
||||||
|
private static CAGCategory m_Root;
|
||||||
|
|
||||||
|
public CAGCategory(string title, CAGCategory parent = null)
|
||||||
|
{
|
||||||
|
Title = title;
|
||||||
|
Parent = parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string Title { get; }
|
||||||
|
|
||||||
|
public CAGNode[] Nodes { get; set; }
|
||||||
|
|
||||||
|
public CAGCategory Parent { get; }
|
||||||
|
|
||||||
|
public static CAGCategory Root => m_Root ??= CAGLoader.Load();
|
||||||
|
|
||||||
|
public override void OnClick(Mobile from, int page)
|
||||||
|
{
|
||||||
|
from.SendGump(new CategorizedAddGump(from, this));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
68
Projects/UOContent/Commands/Object Creation/CAGLoader.cs
Normal file
68
Projects/UOContent/Commands/Object Creation/CAGLoader.cs
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
using Server.Json;
|
||||||
|
|
||||||
|
namespace Server.Commands
|
||||||
|
{
|
||||||
|
public static class CAGLoader
|
||||||
|
{
|
||||||
|
public static CAGCategory Load()
|
||||||
|
{
|
||||||
|
var root = new CAGCategory("Add Menu");
|
||||||
|
var path = Path.Combine(Core.BaseDirectory, "Data/objects.json");
|
||||||
|
|
||||||
|
List<CAGJson> list = JsonConfig.Deserialize<List<CAGJson>>(path);
|
||||||
|
|
||||||
|
// Not an optimized solution
|
||||||
|
foreach (var cag in list)
|
||||||
|
{
|
||||||
|
var parent = root;
|
||||||
|
// Navigate through the dot notation categories until we find the last one
|
||||||
|
var categories = cag.Category.Split(".");
|
||||||
|
for (int i = 0; i < categories.Length; i++)
|
||||||
|
{
|
||||||
|
var category = categories[i];
|
||||||
|
var oldParent = parent;
|
||||||
|
|
||||||
|
for (int j = 0; j < parent.Nodes.Length; j++)
|
||||||
|
{
|
||||||
|
var node = parent.Nodes[i];
|
||||||
|
if (category == node.Title && node is CAGCategory cat)
|
||||||
|
{
|
||||||
|
parent = cat;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parent == oldParent)
|
||||||
|
parent = new CAGCategory(category, parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set the objects associated with the child most node
|
||||||
|
parent.Nodes = new CAGNode[cag.Objects.Length];
|
||||||
|
for (int i = 0; i < cag.Objects.Length; i++)
|
||||||
|
{
|
||||||
|
var obj = cag.Objects[i];
|
||||||
|
obj.Parent = parent;
|
||||||
|
parent.Nodes[i] = obj;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CAGJson
|
||||||
|
{
|
||||||
|
public CAGJson()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonPropertyName("category")]
|
||||||
|
public string Category { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("objects")]
|
||||||
|
public CAGObject[] Objects { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
8
Projects/UOContent/Commands/Object Creation/CAGNode.cs
Normal file
8
Projects/UOContent/Commands/Object Creation/CAGNode.cs
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
namespace Server.Commands
|
||||||
|
{
|
||||||
|
public abstract class CAGNode
|
||||||
|
{
|
||||||
|
public abstract string Title { get; }
|
||||||
|
public abstract void OnClick(Mobile from, int page);
|
||||||
|
}
|
||||||
|
}
|
||||||
40
Projects/UOContent/Commands/Object Creation/CAGObject.cs
Normal file
40
Projects/UOContent/Commands/Object Creation/CAGObject.cs
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
using System;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
using Server.Gumps;
|
||||||
|
|
||||||
|
namespace Server.Commands
|
||||||
|
{
|
||||||
|
public class CAGObject : CAGNode
|
||||||
|
{
|
||||||
|
public CAGObject()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonPropertyName("type")]
|
||||||
|
public Type Type { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("gfx")]
|
||||||
|
public int ItemID { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("hue")]
|
||||||
|
public int? Hue { get; set; }
|
||||||
|
|
||||||
|
public CAGCategory Parent { get; set; }
|
||||||
|
|
||||||
|
public override string Title => Type == null ? "bad type" : Type.Name;
|
||||||
|
|
||||||
|
public override void OnClick(Mobile from, int page)
|
||||||
|
{
|
||||||
|
if (Type == null)
|
||||||
|
{
|
||||||
|
from.SendMessage("That is an invalid type name.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CommandSystem.Handle(from, $"{CommandSystem.Prefix}Add {Type.Name}");
|
||||||
|
|
||||||
|
from.SendGump(new CategorizedAddGump(from, Parent, page));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,15 +1,15 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Text;
|
|
||||||
using System.Xml;
|
|
||||||
using Server.Items;
|
using Server.Items;
|
||||||
|
using Server.Json;
|
||||||
using Server.Utilities;
|
using Server.Utilities;
|
||||||
|
|
||||||
namespace Server.Commands
|
namespace Server.Commands
|
||||||
{
|
{
|
||||||
public class Categorization
|
public static class Categorization
|
||||||
{
|
{
|
||||||
private static CategoryEntry m_RootItems, m_RootMobiles;
|
private static CategoryEntry m_RootItems, m_RootMobiles;
|
||||||
|
|
||||||
|
|
@ -50,95 +50,87 @@ namespace Server.Commands
|
||||||
{
|
{
|
||||||
CategoryEntry root = new CategoryEntry(null, "Add Menu", new[] { Items, Mobiles });
|
CategoryEntry root = new CategoryEntry(null, "Add Menu", new[] { Items, Mobiles });
|
||||||
|
|
||||||
Export(root, "Data/objects.xml", "Objects");
|
List<CategoryEntry> ceList = new List<CategoryEntry>();
|
||||||
|
ceList.AddRange(root.SubCategories);
|
||||||
|
|
||||||
|
Export(ceList, "Data/objects.json");
|
||||||
|
|
||||||
e.Mobile.SendMessage("Categorization menu rebuilt.");
|
e.Mobile.SendMessage("Categorization menu rebuilt.");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Export(CategoryEntry ce, string fileName, string title)
|
public static void Export(List<CategoryEntry> ceList, string fileName)
|
||||||
{
|
{
|
||||||
XmlTextWriter xml = new XmlTextWriter(fileName, Encoding.UTF8);
|
List<CAGJson> list = new List<CAGJson>();
|
||||||
|
foreach (var ce in ceList)
|
||||||
|
RecurseExport(list, ce, null);
|
||||||
|
|
||||||
xml.Indentation = 1;
|
JsonConfig.Serialize(fileName, list);
|
||||||
xml.IndentChar = '\t';
|
|
||||||
xml.Formatting = Formatting.Indented;
|
|
||||||
|
|
||||||
xml.WriteStartDocument(true);
|
|
||||||
|
|
||||||
RecurseExport(xml, ce);
|
|
||||||
|
|
||||||
xml.Flush();
|
|
||||||
xml.Close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RecurseExport(XmlTextWriter xml, CategoryEntry ce)
|
public static void RecurseExport(List<CAGJson> list, CategoryEntry ce, string category)
|
||||||
{
|
{
|
||||||
xml.WriteStartElement("category");
|
category = string.IsNullOrWhiteSpace(category) ? ce.Title : $"{category}{ce.Title}";
|
||||||
|
|
||||||
xml.WriteAttributeString("title", ce.Title);
|
if (ce.Matched.Count > 0)
|
||||||
|
list.Add(new CAGJson
|
||||||
|
{
|
||||||
|
Category = category,
|
||||||
|
Objects = ce.Matched.Select(cte =>
|
||||||
|
{
|
||||||
|
if (cte.Object is Item item)
|
||||||
|
{
|
||||||
|
int itemID = item.ItemID;
|
||||||
|
|
||||||
|
if (item is BaseAddon addon && addon.Components.Count == 1)
|
||||||
|
itemID = addon.Components[0].ItemID;
|
||||||
|
|
||||||
|
if (itemID > TileData.MaxItemValue)
|
||||||
|
itemID = 1;
|
||||||
|
|
||||||
|
int? hue = item.Hue & 0x7FFF;
|
||||||
|
|
||||||
|
if ((hue & 0x4000) != 0)
|
||||||
|
hue = 0;
|
||||||
|
|
||||||
|
return new CAGObject
|
||||||
|
{
|
||||||
|
Type = cte.Type,
|
||||||
|
ItemID = itemID,
|
||||||
|
Hue = hue == 0 ? null : hue
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cte.Object is Mobile m)
|
||||||
|
{
|
||||||
|
int itemID = ShrinkTable.Lookup(m, 1);
|
||||||
|
|
||||||
|
int? hue = m.Hue & 0x7FFF;
|
||||||
|
|
||||||
|
if ((hue & 0x4000) != 0)
|
||||||
|
hue = 0;
|
||||||
|
|
||||||
|
return new CAGObject
|
||||||
|
{
|
||||||
|
Type = cte.Type,
|
||||||
|
ItemID = itemID,
|
||||||
|
Hue = hue == 0 ? null : hue
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new InvalidCastException($"Categorization Type Entry: {cte.Type.Name} is not a valid type.");
|
||||||
|
}).ToArray()
|
||||||
|
});
|
||||||
|
|
||||||
List<CategoryEntry> subCats = new List<CategoryEntry>(ce.SubCategories);
|
List<CategoryEntry> subCats = new List<CategoryEntry>(ce.SubCategories);
|
||||||
|
|
||||||
subCats.Sort(new CategorySorter());
|
subCats.Sort(new CategorySorter());
|
||||||
|
|
||||||
for (int i = 0; i < subCats.Count; ++i)
|
for (int i = 0; i < subCats.Count; i++)
|
||||||
RecurseExport(xml, subCats[i]);
|
|
||||||
|
|
||||||
ce.Matched.Sort(new CategoryTypeSorter());
|
|
||||||
|
|
||||||
for (int i = 0; i < ce.Matched.Count; ++i)
|
|
||||||
{
|
{
|
||||||
CategoryTypeEntry cte = ce.Matched[i];
|
var subCat = subCats[i];
|
||||||
|
RecurseExport(list, subCat, category);
|
||||||
xml.WriteStartElement("object");
|
|
||||||
|
|
||||||
xml.WriteAttributeString("type", cte.Type.ToString());
|
|
||||||
|
|
||||||
if (cte.Object is Item item)
|
|
||||||
{
|
|
||||||
int itemID = item.ItemID;
|
|
||||||
|
|
||||||
if (item is BaseAddon addon && addon.Components.Count == 1)
|
|
||||||
itemID = addon.Components[0].ItemID;
|
|
||||||
|
|
||||||
if (itemID > TileData.MaxItemValue)
|
|
||||||
itemID = 1;
|
|
||||||
|
|
||||||
xml.WriteAttributeString("gfx", XmlConvert.ToString(itemID));
|
|
||||||
|
|
||||||
int hue = item.Hue & 0x7FFF;
|
|
||||||
|
|
||||||
if ((hue & 0x4000) != 0)
|
|
||||||
hue = 0;
|
|
||||||
|
|
||||||
if (hue != 0)
|
|
||||||
xml.WriteAttributeString("hue", XmlConvert.ToString(hue));
|
|
||||||
|
|
||||||
item.Delete();
|
|
||||||
}
|
|
||||||
else if (cte.Object is Mobile mob)
|
|
||||||
{
|
|
||||||
int itemID = ShrinkTable.Lookup(mob, 1);
|
|
||||||
|
|
||||||
xml.WriteAttributeString("gfx", XmlConvert.ToString(itemID));
|
|
||||||
|
|
||||||
int hue = mob.Hue & 0x7FFF;
|
|
||||||
|
|
||||||
if ((hue & 0x4000) != 0)
|
|
||||||
hue = 0;
|
|
||||||
|
|
||||||
if (hue != 0)
|
|
||||||
xml.WriteAttributeString("hue", XmlConvert.ToString(hue));
|
|
||||||
|
|
||||||
mob.Delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
xml.WriteEndElement();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
xml.WriteEndElement();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Load()
|
public static void Load()
|
||||||
{
|
{
|
||||||
List<Type> types = new List<Type>();
|
List<Type> types = new List<Type>();
|
||||||
|
|
@ -156,17 +148,15 @@ namespace Server.Commands
|
||||||
{
|
{
|
||||||
CategoryLine[] lines = CategoryLine.Load(config);
|
CategoryLine[] lines = CategoryLine.Load(config);
|
||||||
|
|
||||||
if (lines.Length > 0)
|
if (lines.Length <= 0) return new CategoryEntry();
|
||||||
{
|
|
||||||
int index = 0;
|
|
||||||
CategoryEntry root = new CategoryEntry(null, lines, ref index);
|
|
||||||
|
|
||||||
Fill(root, types);
|
int index = 0;
|
||||||
|
CategoryEntry root = new CategoryEntry(null, lines, ref index);
|
||||||
|
|
||||||
return root;
|
Fill(root, types);
|
||||||
}
|
|
||||||
|
return root;
|
||||||
|
|
||||||
return new CategoryEntry();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool IsConstructible(Type type)
|
private static bool IsConstructible(Type type)
|
||||||
|
|
@ -240,13 +230,12 @@ namespace Server.Commands
|
||||||
string a = x?.Title;
|
string a = x?.Title;
|
||||||
string b = y?.Title;
|
string b = y?.Title;
|
||||||
|
|
||||||
if (a == null && b == null)
|
return a switch
|
||||||
return 0;
|
{
|
||||||
|
null when b == null => 0,
|
||||||
if (a == null)
|
null => 1,
|
||||||
return 1;
|
_ => a.CompareTo(b)
|
||||||
|
};
|
||||||
return a.CompareTo(b);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -257,13 +246,12 @@ namespace Server.Commands
|
||||||
string a = x?.Type.Name;
|
string a = x?.Type.Name;
|
||||||
string b = y?.Type.Name;
|
string b = y?.Type.Name;
|
||||||
|
|
||||||
if (a == null && b == null)
|
return a switch
|
||||||
return 0;
|
{
|
||||||
|
null when b == null => 0,
|
||||||
if (a == null)
|
null => 1,
|
||||||
return 1;
|
_ => a.CompareTo(b)
|
||||||
|
};
|
||||||
return a.CompareTo(b);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1,143 +1,9 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using Server.Commands;
|
||||||
using System.IO;
|
|
||||||
using System.Xml;
|
|
||||||
using Server.Network;
|
using Server.Network;
|
||||||
|
|
||||||
namespace Server.Gumps
|
namespace Server.Gumps
|
||||||
{
|
{
|
||||||
public abstract class CAGNode
|
|
||||||
{
|
|
||||||
public abstract string Caption { get; }
|
|
||||||
public abstract void OnClick(Mobile from, int page);
|
|
||||||
}
|
|
||||||
|
|
||||||
public class CAGObject : CAGNode
|
|
||||||
{
|
|
||||||
public CAGObject(CAGCategory parent, XmlTextReader xml)
|
|
||||||
{
|
|
||||||
Parent = parent;
|
|
||||||
|
|
||||||
if (xml.MoveToAttribute("type"))
|
|
||||||
Type = AssemblyHandler.FindFirstTypeForName(xml.Value, false);
|
|
||||||
|
|
||||||
if (xml.MoveToAttribute("gfx"))
|
|
||||||
ItemID = XmlConvert.ToInt32(xml.Value);
|
|
||||||
|
|
||||||
if (xml.MoveToAttribute("hue"))
|
|
||||||
Hue = XmlConvert.ToInt32(xml.Value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Type Type { get; }
|
|
||||||
|
|
||||||
public int ItemID { get; }
|
|
||||||
|
|
||||||
public int Hue { get; }
|
|
||||||
|
|
||||||
public CAGCategory Parent { get; }
|
|
||||||
|
|
||||||
public override string Caption => Type == null ? "bad type" : Type.Name;
|
|
||||||
|
|
||||||
public override void OnClick(Mobile from, int page)
|
|
||||||
{
|
|
||||||
if (Type == null)
|
|
||||||
{
|
|
||||||
from.SendMessage("That is an invalid type name.");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CommandSystem.Handle(from, $"{CommandSystem.Prefix}Add {Type.Name}");
|
|
||||||
|
|
||||||
from.SendGump(new CategorizedAddGump(from, Parent, page));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class CAGCategory : CAGNode
|
|
||||||
{
|
|
||||||
private static CAGCategory m_Root;
|
|
||||||
|
|
||||||
private CAGCategory()
|
|
||||||
{
|
|
||||||
Title = "no data";
|
|
||||||
Nodes = Array.Empty<CAGNode>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public CAGCategory(CAGCategory parent, XmlTextReader xml)
|
|
||||||
{
|
|
||||||
Parent = parent;
|
|
||||||
|
|
||||||
if (xml.MoveToAttribute("title"))
|
|
||||||
Title = xml.Value;
|
|
||||||
else
|
|
||||||
Title = "empty";
|
|
||||||
|
|
||||||
if (Title == "Docked")
|
|
||||||
Title = "Docked 2";
|
|
||||||
|
|
||||||
if (xml.IsEmptyElement)
|
|
||||||
{
|
|
||||||
Nodes = Array.Empty<CAGNode>();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
List<CAGNode> nodes = new List<CAGNode>();
|
|
||||||
|
|
||||||
while (xml.Read() && xml.NodeType != XmlNodeType.EndElement)
|
|
||||||
if (xml.NodeType == XmlNodeType.Element && xml.Name == "object")
|
|
||||||
{
|
|
||||||
nodes.Add(new CAGObject(this, xml));
|
|
||||||
}
|
|
||||||
else if (xml.NodeType == XmlNodeType.Element && xml.Name == "category")
|
|
||||||
{
|
|
||||||
if (!xml.IsEmptyElement)
|
|
||||||
nodes.Add(new CAGCategory(this, xml));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
xml.Skip();
|
|
||||||
}
|
|
||||||
|
|
||||||
Nodes = nodes.ToArray();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Title { get; }
|
|
||||||
|
|
||||||
public CAGNode[] Nodes { get; }
|
|
||||||
|
|
||||||
public CAGCategory Parent { get; }
|
|
||||||
|
|
||||||
public override string Caption => Title;
|
|
||||||
|
|
||||||
public static CAGCategory Root => m_Root ?? (m_Root = Load("Data/objects.xml"));
|
|
||||||
|
|
||||||
public override void OnClick(Mobile from, int page)
|
|
||||||
{
|
|
||||||
from.SendGump(new CategorizedAddGump(from, this));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static CAGCategory Load(string path)
|
|
||||||
{
|
|
||||||
if (File.Exists(path))
|
|
||||||
{
|
|
||||||
XmlTextReader xml = new XmlTextReader(path) { WhitespaceHandling = WhitespaceHandling.None };
|
|
||||||
|
|
||||||
while (xml.Read())
|
|
||||||
if (xml.Name == "category" && xml.NodeType == XmlNodeType.Element)
|
|
||||||
{
|
|
||||||
CAGCategory cat = new CAGCategory(null, xml);
|
|
||||||
|
|
||||||
xml.Close();
|
|
||||||
|
|
||||||
return cat;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return new CAGCategory();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class CategorizedAddGump : Gump
|
public class CategorizedAddGump : Gump
|
||||||
{
|
{
|
||||||
public static bool OldStyle = PropsConfig.OldStyle;
|
public static bool OldStyle = PropsConfig.OldStyle;
|
||||||
|
|
@ -266,7 +132,7 @@ namespace Server.Gumps
|
||||||
EntryGumpID);
|
EntryGumpID);
|
||||||
|
|
||||||
AddHtml(x + TextOffsetX, y + (EntryHeight - 20) / 2, emptyWidth - TextOffsetX, EntryHeight,
|
AddHtml(x + TextOffsetX, y + (EntryHeight - 20) / 2, emptyWidth - TextOffsetX, EntryHeight,
|
||||||
$"<center>{m_Category.Caption}</center>");
|
$"<center>{m_Category.Title}</center>");
|
||||||
|
|
||||||
x += emptyWidth + OffsetSize;
|
x += emptyWidth + OffsetSize;
|
||||||
|
|
||||||
|
|
@ -305,7 +171,7 @@ namespace Server.Gumps
|
||||||
|
|
||||||
AddImageTiled(x, y, EntryWidth, EntryHeight, EntryGumpID);
|
AddImageTiled(x, y, EntryWidth, EntryHeight, EntryGumpID);
|
||||||
AddLabelCropped(x + TextOffsetX, y + (EntryHeight - 20) / 2, EntryWidth - TextOffsetX, EntryHeight, TextHue,
|
AddLabelCropped(x + TextOffsetX, y + (EntryHeight - 20) / 2, EntryWidth - TextOffsetX, EntryHeight, TextHue,
|
||||||
node.Caption);
|
node.Title);
|
||||||
|
|
||||||
x += EntryWidth + OffsetSize;
|
x += EntryWidth + OffsetSize;
|
||||||
|
|
||||||
|
|
@ -11,7 +11,7 @@ using Server.Utilities;
|
||||||
|
|
||||||
namespace Server.Commands
|
namespace Server.Commands
|
||||||
{
|
{
|
||||||
public class DecorateMag
|
public static class DecorateMag
|
||||||
{
|
{
|
||||||
private static Mobile m_Mobile;
|
private static Mobile m_Mobile;
|
||||||
private static int m_Count;
|
private static int m_Count;
|
||||||
|
|
@ -5,30 +5,28 @@ using System.Linq;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using Server.Items;
|
using Server.Items;
|
||||||
using Server.Json;
|
|
||||||
|
|
||||||
namespace Server.Commands
|
namespace Server.Commands
|
||||||
{
|
{
|
||||||
public struct Location
|
|
||||||
{
|
|
||||||
[JsonPropertyName("point"), JsonConverter(typeof(Point3DConverter))]
|
|
||||||
public Point3D Pos { get; set; }
|
|
||||||
[JsonPropertyName("map"), JsonConverter(typeof(MapConverter))]
|
|
||||||
public Map Map { get; set; }
|
|
||||||
public override string ToString() => $"({Map.Name}:{Pos.X},{Pos.Y},{Pos.Z})";
|
|
||||||
public override int GetHashCode() => ToString().GetHashCode();
|
|
||||||
}
|
|
||||||
|
|
||||||
public struct TeleporterDefinition
|
public struct TeleporterDefinition
|
||||||
{
|
{
|
||||||
[JsonPropertyName("source")]
|
[JsonPropertyName("src")]
|
||||||
public Location Source { get; set; }
|
public WorldLocation Source { get; set; }
|
||||||
[JsonPropertyName("destination")]
|
|
||||||
public Location Destination { get; set; }
|
[JsonPropertyName("dst")]
|
||||||
|
public WorldLocation Destination { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("back")]
|
[JsonPropertyName("back")]
|
||||||
public bool Back { get; set; }
|
public bool Back { get; set; }
|
||||||
|
|
||||||
public override string ToString() => $"{{{Source},{Destination},{Back}}}";
|
public override string ToString() => $"{{{Source},{Destination},{Back}}}";
|
||||||
public override int GetHashCode() => ToString().GetHashCode();
|
|
||||||
|
public bool Equals(TeleporterDefinition other) =>
|
||||||
|
Source.Equals(other.Source) && Destination.Equals(other.Destination) && Back == other.Back;
|
||||||
|
|
||||||
|
public override bool Equals(object obj) => obj is TeleporterDefinition other && Equals(other);
|
||||||
|
|
||||||
|
public override int GetHashCode() => HashCode.Combine(Source, Destination, Back);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class GenTeleporter
|
public static class GenTeleporter
|
||||||
|
|
@ -124,11 +122,11 @@ namespace Server.Commands
|
||||||
|
|
||||||
private static bool IsWithinZ(int delta) => delta >= -12 && delta <= 12;
|
private static bool IsWithinZ(int delta) => delta >= -12 && delta <= 12;
|
||||||
|
|
||||||
public static int DeleteTeleporters(Location location)
|
public static int DeleteTeleporters(WorldLocation worldLocation)
|
||||||
{
|
{
|
||||||
IPooledEnumerable<Teleporter> eable = location.Map.GetItemsInRange<Teleporter>(location.Pos, 0);
|
IPooledEnumerable<Teleporter> eable = worldLocation.Map.GetItemsInRange<Teleporter>(worldLocation, 0);
|
||||||
var items = eable
|
var items = eable
|
||||||
.Where(x => !(x is KeywordTeleporter || x is SkillTeleporter) && IsWithinZ(x.Z - location.Pos.Z));
|
.Where(x => !(x is KeywordTeleporter || x is SkillTeleporter) && IsWithinZ(x.Z - worldLocation.Z));
|
||||||
int count = 0;
|
int count = 0;
|
||||||
foreach (var item in items)
|
foreach (var item in items)
|
||||||
{
|
{
|
||||||
|
|
@ -143,11 +141,11 @@ namespace Server.Commands
|
||||||
{
|
{
|
||||||
DelCount += DeleteTeleporters(telDef.Source);
|
DelCount += DeleteTeleporters(telDef.Source);
|
||||||
Count++;
|
Count++;
|
||||||
new Teleporter(telDef.Destination.Pos, telDef.Destination.Map).MoveToWorld(telDef.Source.Pos, telDef.Source.Map);
|
new Teleporter(telDef.Destination, telDef.Destination.Map).MoveToWorld(telDef.Source, telDef.Source.Map);
|
||||||
if (!telDef.Back) return;
|
if (!telDef.Back) return;
|
||||||
DelCount += DeleteTeleporters(telDef.Destination);
|
DelCount += DeleteTeleporters(telDef.Destination);
|
||||||
Count++;
|
Count++;
|
||||||
new Teleporter(telDef.Source.Pos, telDef.Source.Map).MoveToWorld(telDef.Destination.Pos, telDef.Destination.Map);
|
new Teleporter(telDef.Source, telDef.Source.Map).MoveToWorld(telDef.Destination, telDef.Destination.Map);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -36,11 +36,7 @@ namespace Server.Engines.Spawners
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonSerializerOptions options = new JsonSerializerOptions();
|
JsonSerializerOptions options = JsonConfig.GetOptions(new TextDefinitionConverterFactory());
|
||||||
options.Converters.Add(new MapConverterFactory());
|
|
||||||
options.Converters.Add(new Point3DConverterFactory());
|
|
||||||
options.Converters.Add(new TimeSpanConverterFactory());
|
|
||||||
options.Converters.Add(new TextDefinitionConverterFactory());
|
|
||||||
|
|
||||||
for (int i = 0; i < files.Length; i++)
|
for (int i = 0; i < files.Length; i++)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
||||||
using System.Xml;
|
|
||||||
|
|
||||||
namespace Server.Gumps
|
|
||||||
{
|
|
||||||
public class ChildNode : IGoNode
|
|
||||||
{
|
|
||||||
public ChildNode(XmlTextReader xml, ParentNode parent)
|
|
||||||
{
|
|
||||||
Parent = parent;
|
|
||||||
|
|
||||||
Parse(xml);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ParentNode Parent { get; }
|
|
||||||
|
|
||||||
public string Name { get; private set; }
|
|
||||||
|
|
||||||
public Point3D Location { get; private set; }
|
|
||||||
|
|
||||||
private void Parse(XmlTextReader xml)
|
|
||||||
{
|
|
||||||
Name = xml.MoveToAttribute("name") ? xml.Value : "empty";
|
|
||||||
|
|
||||||
int x = 0, y = 0, z = 0;
|
|
||||||
|
|
||||||
if (xml.MoveToAttribute("x"))
|
|
||||||
x = Utility.ToInt32(xml.Value);
|
|
||||||
|
|
||||||
if (xml.MoveToAttribute("y"))
|
|
||||||
y = Utility.ToInt32(xml.Value);
|
|
||||||
|
|
||||||
if (xml.MoveToAttribute("z"))
|
|
||||||
z = Utility.ToInt32(xml.Value);
|
|
||||||
|
|
||||||
Location = new Point3D(x, y, z);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
18
Projects/UOContent/Gumps/Go/GoCategory.cs
Normal file
18
Projects/UOContent/Gumps/Go/GoCategory.cs
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Server.Gumps
|
||||||
|
{
|
||||||
|
public class GoCategory
|
||||||
|
{
|
||||||
|
public GoCategory Parent { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("locations")]
|
||||||
|
public GoLocation[] Locations { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("categories")]
|
||||||
|
public GoCategory[] Categories { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("name")]
|
||||||
|
public string Name { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -4,11 +4,12 @@ namespace Server.Gumps
|
||||||
{
|
{
|
||||||
public class GoGump : Gump
|
public class GoGump : Gump
|
||||||
{
|
{
|
||||||
public static readonly LocationTree Felucca = new LocationTree("felucca.xml", Map.Felucca);
|
private static LocationTree Felucca;
|
||||||
public static readonly LocationTree Trammel = new LocationTree("trammel.xml", Map.Trammel);
|
private static LocationTree Trammel;
|
||||||
public static readonly LocationTree Ilshenar = new LocationTree("ilshenar.xml", Map.Ilshenar);
|
private static LocationTree Ilshenar;
|
||||||
public static readonly LocationTree Malas = new LocationTree("malas.xml", Map.Malas);
|
private static LocationTree Malas;
|
||||||
public static readonly LocationTree Tokuno = new LocationTree("tokuno.xml", Map.Tokuno);
|
private static LocationTree Tokuno;
|
||||||
|
private static LocationTree TerMur;
|
||||||
|
|
||||||
public static bool OldStyle = PropsConfig.OldStyle;
|
public static bool OldStyle = PropsConfig.OldStyle;
|
||||||
|
|
||||||
|
|
@ -61,16 +62,43 @@ namespace Server.Gumps
|
||||||
|
|
||||||
private static readonly int BackWidth = BorderSize + TotalWidth + BorderSize;
|
private static readonly int BackWidth = BorderSize + TotalWidth + BorderSize;
|
||||||
private static readonly int BackHeight = BorderSize + TotalHeight + BorderSize;
|
private static readonly int BackHeight = BorderSize + TotalHeight + BorderSize;
|
||||||
private readonly ParentNode m_Node;
|
private readonly GoCategory m_Node;
|
||||||
private readonly int m_Page;
|
private readonly int m_Page;
|
||||||
|
|
||||||
private readonly LocationTree m_Tree;
|
private readonly LocationTree m_Tree;
|
||||||
|
|
||||||
private GoGump(int page, Mobile from, LocationTree tree, ParentNode node) : base(50, 50)
|
public static void DisplayTo(Mobile from)
|
||||||
|
{
|
||||||
|
LocationTree tree;
|
||||||
|
|
||||||
|
if (from.Map == Map.Ilshenar)
|
||||||
|
tree = Ilshenar ??= new LocationTree("ilshenar", Map.Ilshenar);
|
||||||
|
else if (from.Map == Map.Felucca)
|
||||||
|
tree = Felucca ??= new LocationTree("felucca", Map.Felucca);
|
||||||
|
else if (from.Map == Map.Trammel)
|
||||||
|
tree = Trammel ??= new LocationTree("trammel", Map.Trammel);
|
||||||
|
else if (from.Map == Map.Malas)
|
||||||
|
tree = Malas ??= new LocationTree("malas", Map.Malas);
|
||||||
|
else if (from.Map == Map.Tokuno)
|
||||||
|
tree = Tokuno ??= new LocationTree("tokuno", Map.Tokuno);
|
||||||
|
else
|
||||||
|
tree = TerMur ??= new LocationTree("termur", Map.TerMur);
|
||||||
|
|
||||||
|
if (!tree.LastBranch.TryGetValue(from, out GoCategory branch))
|
||||||
|
branch = tree.Root;
|
||||||
|
|
||||||
|
if (branch != null)
|
||||||
|
from.SendGump(new GoGump(0, from, tree, branch));
|
||||||
|
}
|
||||||
|
|
||||||
|
private GoGump(int page, Mobile from, LocationTree tree, GoCategory node) : base(50, 50)
|
||||||
{
|
{
|
||||||
from.CloseGump<GoGump>();
|
from.CloseGump<GoGump>();
|
||||||
|
|
||||||
tree.LastBranch[from] = node;
|
if (node == tree.Root)
|
||||||
|
tree.LastBranch.Remove(from);
|
||||||
|
else
|
||||||
|
tree.LastBranch[from] = node;
|
||||||
|
|
||||||
m_Page = page;
|
m_Page = page;
|
||||||
m_Tree = tree;
|
m_Tree = tree;
|
||||||
|
|
@ -79,7 +107,7 @@ namespace Server.Gumps
|
||||||
int x = BorderSize + OffsetSize;
|
int x = BorderSize + OffsetSize;
|
||||||
int y = BorderSize + OffsetSize;
|
int y = BorderSize + OffsetSize;
|
||||||
|
|
||||||
int count = node.Children.Length - page * EntryCount;
|
int count = node.Categories.Length + node.Locations.Length - page * EntryCount;
|
||||||
|
|
||||||
if (count < 0)
|
if (count < 0)
|
||||||
count = 0;
|
count = 0;
|
||||||
|
|
@ -138,7 +166,7 @@ namespace Server.Gumps
|
||||||
if (!OldStyle)
|
if (!OldStyle)
|
||||||
AddImageTiled(x, y, NextWidth, EntryHeight, HeaderGumpID);
|
AddImageTiled(x, y, NextWidth, EntryHeight, HeaderGumpID);
|
||||||
|
|
||||||
if ((page + 1) * EntryCount < node.Children.Length)
|
if ((page + 1) * EntryCount < node.Categories.Length + node.Locations.Length)
|
||||||
{
|
{
|
||||||
AddButton(x + NextOffsetX, y + NextOffsetY, NextButtonID1, NextButtonID2, 3, GumpButtonType.Reply, 1);
|
AddButton(x + NextOffsetX, y + NextOffsetY, NextButtonID1, NextButtonID2, 3, GumpButtonType.Reply, 1);
|
||||||
|
|
||||||
|
|
@ -146,13 +174,14 @@ namespace Server.Gumps
|
||||||
AddLabel(x + NextLabelOffsetX, y + NextLabelOffsetY, TextHue, "Next");
|
AddLabel(x + NextLabelOffsetX, y + NextLabelOffsetY, TextHue, "Next");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0, index = page * EntryCount; i < EntryCount && index < node.Children.Length; ++i, ++index)
|
int totalEntryCount = node.Categories.Length + node.Locations.Length;
|
||||||
|
|
||||||
|
for (int i = 0, index = page * EntryCount; i < EntryCount && index < totalEntryCount; ++i, ++index)
|
||||||
{
|
{
|
||||||
x = BorderSize + OffsetSize;
|
x = BorderSize + OffsetSize;
|
||||||
y += EntryHeight + OffsetSize;
|
y += EntryHeight + OffsetSize;
|
||||||
|
|
||||||
IGoNode child = node.Children[index];
|
string name = index >= node.Categories.Length ? node.Locations[index].Name : node.Categories[index].Name;
|
||||||
string name = child.Name;
|
|
||||||
|
|
||||||
AddImageTiled(x, y, EntryWidth, EntryHeight, EntryGumpID);
|
AddImageTiled(x, y, EntryWidth, EntryHeight, EntryGumpID);
|
||||||
AddLabelCropped(x + TextOffsetX, y, EntryWidth - TextOffsetX, EntryHeight, TextHue, name);
|
AddLabelCropped(x + TextOffsetX, y, EntryWidth - TextOffsetX, EntryHeight, TextHue, name);
|
||||||
|
|
@ -166,28 +195,6 @@ namespace Server.Gumps
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DisplayTo(Mobile from)
|
|
||||||
{
|
|
||||||
LocationTree tree;
|
|
||||||
|
|
||||||
if (from.Map == Map.Ilshenar)
|
|
||||||
tree = Ilshenar;
|
|
||||||
else if (from.Map == Map.Felucca)
|
|
||||||
tree = Felucca;
|
|
||||||
else if (from.Map == Map.Trammel)
|
|
||||||
tree = Trammel;
|
|
||||||
else if (from.Map == Map.Malas)
|
|
||||||
tree = Malas;
|
|
||||||
else
|
|
||||||
tree = Tokuno;
|
|
||||||
|
|
||||||
if (!tree.LastBranch.TryGetValue(from, out ParentNode branch))
|
|
||||||
branch = tree.Root;
|
|
||||||
|
|
||||||
if (branch != null)
|
|
||||||
from.SendGump(new GoGump(0, from, tree, branch));
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnResponse(NetState state, RelayInfo info)
|
public override void OnResponse(NetState state, RelayInfo info)
|
||||||
{
|
{
|
||||||
Mobile from = state.Mobile;
|
Mobile from = state.Mobile;
|
||||||
|
|
@ -210,7 +217,7 @@ namespace Server.Gumps
|
||||||
}
|
}
|
||||||
case 3:
|
case 3:
|
||||||
{
|
{
|
||||||
if ((m_Page + 1) * EntryCount < m_Node.Children.Length)
|
if ((m_Page + 1) * EntryCount < m_Node.Categories.Length + m_Node.Locations.Length)
|
||||||
from.SendGump(new GoGump(m_Page + 1, from, m_Tree, m_Node));
|
from.SendGump(new GoGump(m_Page + 1, from, m_Tree, m_Node));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
@ -219,14 +226,18 @@ namespace Server.Gumps
|
||||||
{
|
{
|
||||||
int index = info.ButtonID - 4;
|
int index = info.ButtonID - 4;
|
||||||
|
|
||||||
if (index >= 0 && index < m_Node.Children.Length)
|
if (index < 0)
|
||||||
{
|
break;
|
||||||
IGoNode o = m_Node.Children[index];
|
|
||||||
|
|
||||||
if (o is ParentNode node)
|
if (index < m_Node.Categories.Length)
|
||||||
from.SendGump(new GoGump(0, from, m_Tree, node));
|
{
|
||||||
else
|
from.SendGump(new GoGump(0, from, m_Tree, m_Node.Categories[index]));
|
||||||
from.MoveToWorld(((ChildNode)o).Location, m_Tree.Map);
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
index -= m_Node.Categories.Length;
|
||||||
|
if (index < m_Node.Locations.Length)
|
||||||
|
from.MoveToWorld(m_Node.Locations[index].Location, m_Tree.Map);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
15
Projects/UOContent/Gumps/Go/GoLocation.cs
Normal file
15
Projects/UOContent/Gumps/Go/GoLocation.cs
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Server.Gumps
|
||||||
|
{
|
||||||
|
public class GoLocation
|
||||||
|
{
|
||||||
|
public GoCategory Parent { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("name")]
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("location")]
|
||||||
|
public Point3D Location { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Xml;
|
using Server.Json;
|
||||||
|
|
||||||
namespace Server.Gumps
|
namespace Server.Gumps
|
||||||
{
|
{
|
||||||
|
|
@ -8,34 +9,50 @@ namespace Server.Gumps
|
||||||
{
|
{
|
||||||
public LocationTree(string fileName, Map map)
|
public LocationTree(string fileName, Map map)
|
||||||
{
|
{
|
||||||
LastBranch = new Dictionary<Mobile, ParentNode>();
|
LastBranch = new Dictionary<Mobile, GoCategory>();
|
||||||
Map = map;
|
Map = map;
|
||||||
|
|
||||||
string path = Path.Combine("Data/Locations/", fileName);
|
string path = Path.Combine($"Data/Locations/{fileName}.json");
|
||||||
|
|
||||||
if (File.Exists(path))
|
if (!File.Exists(path))
|
||||||
{
|
{
|
||||||
XmlTextReader xml = new XmlTextReader(new StreamReader(path)) { WhitespaceHandling = WhitespaceHandling.None };
|
Console.WriteLine("Go Locations: {0} does not exist", path);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Root = Parse(xml);
|
try
|
||||||
|
{
|
||||||
xml.Close();
|
Root = JsonConfig.Deserialize<GoCategory>(path);
|
||||||
|
SetParents(Root);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Go Locations: Error in deserializing {0}", path);
|
||||||
|
Console.WriteLine(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Dictionary<Mobile, ParentNode> LastBranch { get; }
|
public Dictionary<Mobile, GoCategory> LastBranch { get; }
|
||||||
|
|
||||||
public Map Map { get; }
|
public Map Map { get; }
|
||||||
|
|
||||||
public ParentNode Root { get; }
|
public GoCategory Root { get; }
|
||||||
|
|
||||||
private ParentNode Parse(XmlTextReader xml)
|
private static void SetParents(GoCategory parent)
|
||||||
{
|
{
|
||||||
xml.Read();
|
// Deserialization may leave these null
|
||||||
xml.Read();
|
parent.Categories ??= Array.Empty<GoCategory>();
|
||||||
xml.Read();
|
parent.Locations ??= Array.Empty<GoLocation>();
|
||||||
|
|
||||||
return new ParentNode(xml, null);
|
for (int i = 0; i < parent.Categories.Length; i++)
|
||||||
|
{
|
||||||
|
GoCategory category = parent.Categories[i];
|
||||||
|
category.Parent = parent;
|
||||||
|
SetParents(category);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int j = 0; j < parent.Locations.Length; j++)
|
||||||
|
parent.Locations[j].Parent = parent;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,53 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Xml;
|
|
||||||
|
|
||||||
namespace Server.Gumps
|
|
||||||
{
|
|
||||||
public interface IGoNode
|
|
||||||
{
|
|
||||||
ParentNode Parent { get; }
|
|
||||||
string Name { get; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class ParentNode : IGoNode
|
|
||||||
{
|
|
||||||
public ParentNode(XmlTextReader xml, ParentNode parent)
|
|
||||||
{
|
|
||||||
Parent = parent;
|
|
||||||
|
|
||||||
Parse(xml);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ParentNode Parent { get; }
|
|
||||||
|
|
||||||
public IGoNode[] Children { get; private set; }
|
|
||||||
|
|
||||||
public string Name { get; private set; }
|
|
||||||
|
|
||||||
private void Parse(XmlTextReader xml)
|
|
||||||
{
|
|
||||||
Name = xml.MoveToAttribute("name") ? xml.Value : "empty";
|
|
||||||
|
|
||||||
if (xml.IsEmptyElement)
|
|
||||||
Children = Array.Empty<IGoNode>();
|
|
||||||
else
|
|
||||||
{
|
|
||||||
List<IGoNode> children = new List<IGoNode>();
|
|
||||||
|
|
||||||
while (xml.Read() && (xml.NodeType == XmlNodeType.Element || xml.NodeType == XmlNodeType.Comment))
|
|
||||||
{
|
|
||||||
if (xml.NodeType == XmlNodeType.Comment)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (xml.Name == "child")
|
|
||||||
children.Add(new ChildNode(xml, this));
|
|
||||||
else
|
|
||||||
children.Add(new ParentNode(xml, this));
|
|
||||||
}
|
|
||||||
|
|
||||||
Children = children.ToArray();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
using Server.Engines.VeteranRewards;
|
using Server.Engines.VeteranRewards;
|
||||||
using Server.Gumps;
|
using Server.Gumps;
|
||||||
using Server.Multis;
|
using Server.Multis;
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,18 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Xml;
|
using System.Text.Json.Serialization;
|
||||||
|
using Server.Json;
|
||||||
|
|
||||||
namespace Server
|
namespace Server
|
||||||
{
|
{
|
||||||
public class NameList
|
public class NameList
|
||||||
{
|
{
|
||||||
public string Type { get; }
|
[JsonPropertyName("type")]
|
||||||
|
public string Type { get; set; }
|
||||||
|
|
||||||
public string[] List { get; }
|
[JsonPropertyName("names")]
|
||||||
|
public string[] List { get; set; }
|
||||||
|
|
||||||
public bool ContainsName(string name)
|
public bool ContainsName(string name)
|
||||||
{
|
{
|
||||||
|
|
@ -20,22 +23,7 @@ namespace Server
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public NameList(string type, XmlElement xml)
|
public string GetRandomName() => List.Length > 0 ? List[Utility.Random(List.Length)] : "";
|
||||||
{
|
|
||||||
Type = type;
|
|
||||||
List = xml.InnerText.Split(',');
|
|
||||||
|
|
||||||
for (int i = 0; i < List.Length; ++i)
|
|
||||||
List[i] = Utility.Intern(List[i].Trim());
|
|
||||||
}
|
|
||||||
|
|
||||||
public string GetRandomName()
|
|
||||||
{
|
|
||||||
if (List.Length > 0)
|
|
||||||
return List[Utility.Random(List.Length)];
|
|
||||||
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static NameList GetNameList(string type)
|
public static NameList GetNameList(string type)
|
||||||
{
|
{
|
||||||
|
|
@ -45,53 +33,25 @@ namespace Server
|
||||||
|
|
||||||
public static string RandomName(string type) => GetNameList(type)?.GetRandomName() ?? "";
|
public static string RandomName(string type) => GetNameList(type)?.GetRandomName() ?? "";
|
||||||
|
|
||||||
private static readonly Dictionary<string, NameList> m_Table;
|
private static readonly Dictionary<string, NameList> m_Table = new Dictionary<string, NameList>(StringComparer.OrdinalIgnoreCase);
|
||||||
|
|
||||||
static NameList()
|
public static void Configure()
|
||||||
{
|
{
|
||||||
m_Table = new Dictionary<string, NameList>(StringComparer.OrdinalIgnoreCase);
|
// TODO: Turn this into a command so it can be updated in-game
|
||||||
|
string filePath = Path.Combine(Core.BaseDirectory, "Data/names.json");
|
||||||
|
|
||||||
string filePath = Path.Combine(Core.BaseDirectory, "Data/names.xml");
|
List<NameList> nameLists = JsonConfig.Deserialize<List<NameList>>(filePath);
|
||||||
|
foreach (var nameList in nameLists)
|
||||||
if (!File.Exists(filePath))
|
|
||||||
return;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
Load(filePath);
|
nameList.FixNames();
|
||||||
}
|
m_Table.Add(nameList.Type, nameList);
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
Console.WriteLine("Warning: Exception caught loading name lists:");
|
|
||||||
Console.WriteLine(e);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void Load(string filePath)
|
private void FixNames()
|
||||||
{
|
{
|
||||||
XmlDocument doc = new XmlDocument();
|
for (int i = 0; i < List.Length; i++)
|
||||||
doc.Load(filePath);
|
List[i] = Utility.Intern(List[i].Trim());
|
||||||
|
|
||||||
XmlElement root = doc["names"];
|
|
||||||
|
|
||||||
foreach (XmlElement element in root.GetElementsByTagName("namelist"))
|
|
||||||
{
|
|
||||||
string type = element.GetAttribute("type");
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(type))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
NameList list = new NameList(type, element);
|
|
||||||
|
|
||||||
m_Table[type] = list;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
// ignored
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.NetworkInformation;
|
using System.Net.NetworkInformation;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
using Microsoft.AspNetCore.Connections;
|
|
||||||
using Server.Network;
|
using Server.Network;
|
||||||
|
|
||||||
namespace Server.Misc
|
namespace Server.Misc
|
||||||
|
|
@ -70,16 +69,15 @@ namespace Server.Misc
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
NetState ns = e.State;
|
NetState ns = e.State;
|
||||||
ConnectionContext s = ns.Connection;
|
|
||||||
|
|
||||||
IPEndPoint ipep = (IPEndPoint)s.LocalEndPoint;
|
IPEndPoint ipep = (IPEndPoint)ns.Connection.LocalEndPoint;
|
||||||
|
|
||||||
IPAddress localAddress = ipep.Address;
|
IPAddress localAddress = ipep.Address;
|
||||||
int localPort = ipep.Port;
|
int localPort = ipep.Port;
|
||||||
|
|
||||||
if (IsPrivateNetwork(localAddress))
|
if (IsPrivateNetwork(localAddress))
|
||||||
{
|
{
|
||||||
ipep = (IPEndPoint)s.RemoteEndPoint;
|
ipep = (IPEndPoint)ns.Connection.RemoteEndPoint;
|
||||||
if (!IsPrivateNetwork(ipep.Address) && m_PublicAddress != null)
|
if (!IsPrivateNetwork(ipep.Address) && m_PublicAddress != null)
|
||||||
localAddress = m_PublicAddress;
|
localAddress = m_PublicAddress;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -61,10 +61,12 @@
|
||||||
<ProjectReference Include="..\Server\Server.csproj" Private="false" PrivateAssets="All" IncludeAssets="None">
|
<ProjectReference Include="..\Server\Server.csproj" Private="false" PrivateAssets="All" IncludeAssets="None">
|
||||||
<IncludeInPackage>false</IncludeInPackage>
|
<IncludeInPackage>false</IncludeInPackage>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<PackageReference Include="MailKit" Version="2.6.0" />
|
<!-- Transient package version resolution -->
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="3.1.4" />
|
<PackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="3.1.5" />
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.4" />
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.5" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.4" />
|
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.5" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.5" />
|
||||||
|
<PackageReference Include="MailKit" Version="2.7.0" />
|
||||||
<PackageReference Include="Argon2.Bindings" Version="1.2.7" />
|
<PackageReference Include="Argon2.Bindings" Version="1.2.7" />
|
||||||
<PackageReference Include="Zlib.Bindings" Version="1.0.2" />
|
<PackageReference Include="Zlib.Bindings" Version="1.0.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue