Updates Data to JSON (#159)

This commit is contained in:
Kamron Batman 2020-06-19 13:53:18 -07:00 committed by GitHub
parent d2f7e08de4
commit 1246a135f7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
61 changed files with 18005 additions and 9152 deletions

View 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] }
]
}
]
}
]
}

View file

@ -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>

View 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] }
]
}
]
}

View file

@ -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>

View 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] }
]
}
]
}
]
}

View file

@ -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>

View 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] }
]
}
]
}
]
}

View 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 }
]
}
]
}
]
}
]
}

View file

@ -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>

View 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] }
]
}
]
}
]
}

View file

@ -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>

View file

@ -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)

View 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"] }
]

View file

@ -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)

View 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"] }
]

View 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"
]
}
]

View file

@ -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>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -192,6 +192,8 @@
193 0x2615
194 0x2619
195 0x260F
197 0x20D6
198 0x20D6
200 0x2598
201 0x211B
202 0x2131
@ -356,11 +358,85 @@
169 0x281C
#ML Mobiles
276 0x2D95
277 0x2D96
#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
1255 0x9844
#TOL Mobiles
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

View file

@ -17,7 +17,7 @@ namespace Server.Tests
public static void Equal(ReadOnlySpan<byte> actual, ReadOnlySpan<byte> expected) =>
Xunit.Assert.True(
MemoryExtensions.SequenceEqual(expected, actual),
expected.SequenceEqual(actual),
$"Expected does not match actual.\nExpected:\t{SpanToString(expected)}\nActual:\t\t{SpanToString(actual)}"
);
}

View file

@ -5,8 +5,8 @@
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" />
<PackageReference Include="coverlet.collector" Version="1.2.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.2" />
<PackageReference Include="coverlet.collector" Version="1.3.0" />
<ProjectReference Include="..\Server\Server.csproj" />
</ItemGroup>
</Project>

File diff suppressed because it is too large Load diff

View file

@ -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;
}
}

View 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);
}
}
}

View 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);
}
}
}

View 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})";
}
}

View 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;
}
}

View 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);
}
}
}

View file

@ -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();
}
}
}

View file

@ -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();
}
}

View file

@ -20,33 +20,50 @@
using System;
using System.Buffers;
using System.Collections.Generic;
using System.IO;
using System.Text.Json;
using System.Text.Json.Serialization;
namespace Server.Json
{
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,
WriteIndented = true,
AllowTrailingCommas = true,
IgnoreNullValues = true
};
// In the future this should be optimized by cloning DefaultOptions
var options = new JsonSerializerOptions
{
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)
{
if (!File.Exists(filePath)) return default;
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)
{
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) =>

View file

@ -14,12 +14,6 @@ namespace Server
{
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>();
int count = 0;
@ -38,7 +32,7 @@ namespace Server
continue;
}
var region = ActivatorUtil.CreateInstance(type, json, options) as Region;
var region = ActivatorUtil.CreateInstance(type, json, JsonConfig.DefaultOptions) as Region;
region?.Register();
count++;
}

View file

@ -6,7 +6,7 @@
<StartupObject>Server.Core</StartupObject>
<AssemblyName>ModernUO</AssemblyName>
<Win32Resource />
<Version>0.4.0</Version>
<Version>0.5.0</Version>
<Product>ModernUO Server</Product>
<PublishDir>..\..\Distribution</PublishDir>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
@ -25,6 +25,7 @@
<Delete Files="..\..\Distribution\zlib.dll" ContinueOnError="true" />
<Delete Files="..\..\Distribution\libz.dylib" 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.Http.Features.dll" ContinueOnError="true" />
<Delete Files="..\..\Distribution\Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.dll" ContinueOnError="true" />
@ -64,9 +65,9 @@
<AdditionalFiles Include="..\..\stylecop.json">
<Link>stylecop.json</Link>
</AdditionalFiles>
<PackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="3.1.4" />
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" Version="3.1.4" />
<PackageReference Include="Microsoft.Extensions.Hosting.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.5" />
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.5" />
<PackageReference Include="System.IO.Pipelines" Version="4.7.2" />
<PackageReference Include="ZLib.Bindings" Version="1.0.2" />
</ItemGroup>

View file

@ -4,36 +4,36 @@
".NETCoreApp,Version=v3.1": {
"Microsoft.AspNetCore.Connections.Abstractions": {
"type": "Direct",
"requested": "[3.1.4, )",
"resolved": "3.1.4",
"contentHash": "3F5O9gkTfK8lp9qiLkKBacNlTIKb6dGv8W7noHGb6QVw8Kt0OvSXH/hCI08Ao7GCehciI7wNA9c6lUqarLV92A==",
"requested": "[3.1.5, )",
"resolved": "3.1.5",
"contentHash": "d9QNKLjOIb+O8fW+Xolhw0ZpOP1nzJi822qthXUhZqzb1PpL/xD4tmZfeE6IRXlRmQOAKDKg38mDEDTaMPGy1w==",
"dependencies": {
"Microsoft.AspNetCore.Http.Features": "3.1.4",
"Microsoft.AspNetCore.Http.Features": "3.1.5",
"System.IO.Pipelines": "4.7.1"
}
},
"Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv": {
"type": "Direct",
"requested": "[3.1.4, )",
"resolved": "3.1.4",
"contentHash": "htKi6bBU13AxI3qsM21K0s82J43JAGPmPG/KTAvMHoFgba8/U32j2Y/4olWkFw8vRAGv302F6FnOOfe2eObfNA==",
"requested": "[3.1.5, )",
"resolved": "3.1.5",
"contentHash": "RmWkwrdmpquJa3Tvui4AhNEy+LeqeDgd85RPNjamwKNjVSUW+Yaz8n1pKPz4IiqDJ+3XfdmaLjP9TSVnXSDNuA==",
"dependencies": {
"Libuv": "1.10.0",
"Microsoft.AspNetCore.Connections.Abstractions": "3.1.4",
"Microsoft.Extensions.Logging.Abstractions": "3.1.4",
"Microsoft.Extensions.Options": "3.1.4"
"Microsoft.AspNetCore.Connections.Abstractions": "3.1.5",
"Microsoft.Extensions.Logging.Abstractions": "3.1.5",
"Microsoft.Extensions.Options": "3.1.5"
}
},
"Microsoft.Extensions.Hosting.Abstractions": {
"type": "Direct",
"requested": "[3.1.4, )",
"resolved": "3.1.4",
"contentHash": "w1Zildlb70fJ8qqysyt6HaueWBQ89qQmcSCsh/6+1TKmipU0AOjwduqY72eqHZ39j4jZYaXaoXQ/zqXZ1nYgCg==",
"requested": "[3.1.5, )",
"resolved": "3.1.5",
"contentHash": "e57iK9spITqHE7qNgC3IowzK+PK5NC2rmVY4Sz+ZoDNO24nIsgllIRbanSbt2wQz7Iy/N8Jm3C1sXqKc8zEOMQ==",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "3.1.4",
"Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.4",
"Microsoft.Extensions.FileProviders.Abstractions": "3.1.4",
"Microsoft.Extensions.Logging.Abstractions": "3.1.4"
"Microsoft.Extensions.Configuration.Abstractions": "3.1.5",
"Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.5",
"Microsoft.Extensions.FileProviders.Abstractions": "3.1.5",
"Microsoft.Extensions.Logging.Abstractions": "3.1.5"
}
},
"System.IO.Pipelines": {
@ -46,7 +46,7 @@
"type": "Direct",
"requested": "[1.0.2, )",
"resolved": "1.0.2",
"contentHash": "rd7gUFhwKb9Pd5ehhsUUdZiGS/AQQ1v0UItP2J+EYIfKzq7H54yDQ509qcBmbNtr6zTz7AAax4zRUcg3j9mfyQ=="
"contentHash": "oMnRfnRHzfboCS/SXUrrqbDVtM/9h5LkHkB8GuyUq70BYkJRza7CNZxLR+F6IKOTNDcDO68VVCID4DA5Sj8c4Q=="
},
"Libuv": {
"type": "Transitive",
@ -58,58 +58,106 @@
},
"Microsoft.AspNetCore.Http.Features": {
"type": "Transitive",
"resolved": "3.1.4",
"contentHash": "HroyqnPK+g/GF+W3oLFQ2CfKS7BO/vzKhcgRAz3bovf3F/c3vR5Qw8AJEi0c+UVxyIhbFp00CdNR53Ghj+qckA==",
"resolved": "3.1.5",
"contentHash": "I+G1L5363H2oCdMxHv2vtbluRgb4e33Gv6zJd8Uj93bBRFbE4MZlb3cB9PvRAYpSB0xbK216/qRtHmQJBzWIcg==",
"dependencies": {
"Microsoft.Extensions.Primitives": "3.1.4",
"Microsoft.Extensions.Primitives": "3.1.5",
"System.IO.Pipelines": "4.7.1"
}
},
"Microsoft.Extensions.Configuration.Abstractions": {
"type": "Transitive",
"resolved": "3.1.4",
"contentHash": "k7IJME4US5S5JFOGYaei5TLwutp8IqUvcBWtliKXETGn/JScmCgfej21xq5+ttxi0qZhiyJY06y9dw+cLh3kiQ==",
"resolved": "3.1.5",
"contentHash": "VBcAk6s9izZr04WCzNqOh1Sxz2RbVSh0G79MfpHSDv16cUJtSEYEHody9ZnF71LBEktzdu6cvDFBOFMh43q0iA==",
"dependencies": {
"Microsoft.Extensions.Primitives": "3.1.4"
"Microsoft.Extensions.Primitives": "3.1.5"
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions": {
"type": "Transitive",
"resolved": "3.1.4",
"contentHash": "AceHamXNKDMDwIoZqEoApLp8s3935wSC3VXrPaRWa0wWOaEcYdDlo1nWQ1zLiezoDmpJzV7FqDm53E0Ty/hEMg=="
"resolved": "3.1.5",
"contentHash": "2VSCj2TZPMdeEi279Lawi6qJQu4+sEWizSOYrhY6hapyS1jxn1jVUZT1Ugv68bya+x8+3lD4+RqhUZql9PhISQ=="
},
"Microsoft.Extensions.FileProviders.Abstractions": {
"type": "Transitive",
"resolved": "3.1.4",
"contentHash": "NNJA8JAoIaxlnb/bdQ8N0kA4T9ZaBAaUFM79pnT7j/x61Wne6K4lznU9u+NDgSAB3wrSx94mz169jNtle7KrSA==",
"resolved": "3.1.5",
"contentHash": "LrEQ97jhSWw84Y1m+CJfvh9qTUUswt27au54QYn2x5PCMPPgR+yAv/4VTJKMGSSI9T4scSLBXZ/fVhT4fPTCtA==",
"dependencies": {
"Microsoft.Extensions.Primitives": "3.1.4"
"Microsoft.Extensions.Primitives": "3.1.5"
}
},
"Microsoft.Extensions.Logging.Abstractions": {
"type": "Transitive",
"resolved": "3.1.4",
"contentHash": "JNPxhw2XwhjfGFyIkA5eBfzUDPNpa6Q50HJ2F6lCAMoSa1GquAktTrl4PhEyTYFNmu09B0E90WhYsUb3kmSkOA=="
"resolved": "3.1.5",
"contentHash": "ZvwowjRSWXewdPI+whPFXgwF4Qme6Q9KV9SCPEITSGiqHLArct7q5hTBtTzj3GPsVLjTqehvTg6Bd/EQk9JS0A=="
},
"Microsoft.Extensions.Options": {
"type": "Transitive",
"resolved": "3.1.4",
"contentHash": "ntWmD8i6UmAo0nn5MiCXIVl3+75aybVHgP/NxL9B16zwsbGkSfs+66BullsGEDNvrimgIFVDO+iB/h0yWfATWg==",
"resolved": "3.1.5",
"contentHash": "f+JT/7lkKBMp/Ak2tVjO+TD7o+UoCfjnExkZNn0PZIso8kIXrqNy6x42Lrxf4Q0pW3JMf9ExmL2EQlvk2XnFAg==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.4",
"Microsoft.Extensions.Primitives": "3.1.4"
"Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.5",
"Microsoft.Extensions.Primitives": "3.1.5"
}
},
"Microsoft.Extensions.Primitives": {
"type": "Transitive",
"resolved": "3.1.4",
"contentHash": "tLR9n5ltwA56nr1t5M6q5IBfGLXtMS+XgumtqVENmtPQOWUD+m0Kgo1U6GWr06Y875WUN3sOGnmqkvW4an7fYA=="
"resolved": "3.1.5",
"contentHash": "6bLdjSAQix82oP2tsuX9MM2yjgUFFOkSZYyRSKoUULilw2cg0Y0H+dnugwYlfj8Jd7yjd/+QSdNBqEyYhTYv0w=="
},
"Microsoft.NETCore.Platforms": {
"type": "Transitive",
"resolved": "1.0.1",
"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

View 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));
}
}
}

View 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; }
}
}

View 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);
}
}

View 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));
}
}
}
}

View file

@ -1,15 +1,15 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Xml;
using Server.Items;
using Server.Json;
using Server.Utilities;
namespace Server.Commands
{
public class Categorization
public static class Categorization
{
private static CategoryEntry m_RootItems, m_RootMobiles;
@ -50,95 +50,87 @@ namespace Server.Commands
{
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.");
}
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;
xml.IndentChar = '\t';
xml.Formatting = Formatting.Indented;
xml.WriteStartDocument(true);
RecurseExport(xml, ce);
xml.Flush();
xml.Close();
JsonConfig.Serialize(fileName, list);
}
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);
subCats.Sort(new CategorySorter());
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)
for (int i = 0; i < subCats.Count; i++)
{
CategoryTypeEntry cte = ce.Matched[i];
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();
var subCat = subCats[i];
RecurseExport(list, subCat, category);
}
xml.WriteEndElement();
}
public static void Load()
{
List<Type> types = new List<Type>();
@ -156,17 +148,15 @@ namespace Server.Commands
{
CategoryLine[] lines = CategoryLine.Load(config);
if (lines.Length > 0)
{
int index = 0;
CategoryEntry root = new CategoryEntry(null, lines, ref index);
if (lines.Length <= 0) return new CategoryEntry();
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)
@ -240,13 +230,12 @@ namespace Server.Commands
string a = x?.Title;
string b = y?.Title;
if (a == null && b == null)
return 0;
if (a == null)
return 1;
return a.CompareTo(b);
return a switch
{
null when b == null => 0,
null => 1,
_ => a.CompareTo(b)
};
}
}
@ -257,13 +246,12 @@ namespace Server.Commands
string a = x?.Type.Name;
string b = y?.Type.Name;
if (a == null && b == null)
return 0;
if (a == null)
return 1;
return a.CompareTo(b);
return a switch
{
null when b == null => 0,
null => 1,
_ => a.CompareTo(b)
};
}
}

View file

@ -1,143 +1,9 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using Server.Commands;
using Server.Network;
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 static bool OldStyle = PropsConfig.OldStyle;
@ -266,7 +132,7 @@ namespace Server.Gumps
EntryGumpID);
AddHtml(x + TextOffsetX, y + (EntryHeight - 20) / 2, emptyWidth - TextOffsetX, EntryHeight,
$"<center>{m_Category.Caption}</center>");
$"<center>{m_Category.Title}</center>");
x += emptyWidth + OffsetSize;
@ -305,7 +171,7 @@ namespace Server.Gumps
AddImageTiled(x, y, EntryWidth, EntryHeight, EntryGumpID);
AddLabelCropped(x + TextOffsetX, y + (EntryHeight - 20) / 2, EntryWidth - TextOffsetX, EntryHeight, TextHue,
node.Caption);
node.Title);
x += EntryWidth + OffsetSize;

View file

@ -11,7 +11,7 @@ using Server.Utilities;
namespace Server.Commands
{
public class DecorateMag
public static class DecorateMag
{
private static Mobile m_Mobile;
private static int m_Count;

View file

@ -5,30 +5,28 @@ using System.Linq;
using System.Text.Json;
using System.Text.Json.Serialization;
using Server.Items;
using Server.Json;
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
{
[JsonPropertyName("source")]
public Location Source { get; set; }
[JsonPropertyName("destination")]
public Location Destination { get; set; }
[JsonPropertyName("src")]
public WorldLocation Source { get; set; }
[JsonPropertyName("dst")]
public WorldLocation Destination { get; set; }
[JsonPropertyName("back")]
public bool Back { get; set; }
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
@ -124,11 +122,11 @@ namespace Server.Commands
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
.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;
foreach (var item in items)
{
@ -143,11 +141,11 @@ namespace Server.Commands
{
DelCount += DeleteTeleporters(telDef.Source);
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;
DelCount += DeleteTeleporters(telDef.Destination);
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);
}
}
}

View file

@ -36,11 +36,7 @@ namespace Server.Engines.Spawners
return;
}
JsonSerializerOptions options = new JsonSerializerOptions();
options.Converters.Add(new MapConverterFactory());
options.Converters.Add(new Point3DConverterFactory());
options.Converters.Add(new TimeSpanConverterFactory());
options.Converters.Add(new TextDefinitionConverterFactory());
JsonSerializerOptions options = JsonConfig.GetOptions(new TextDefinitionConverterFactory());
for (int i = 0; i < files.Length; i++)
{

View file

@ -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);
}
}
}

View 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; }
}
}

View file

@ -4,11 +4,12 @@ namespace Server.Gumps
{
public class GoGump : Gump
{
public static readonly LocationTree Felucca = new LocationTree("felucca.xml", Map.Felucca);
public static readonly LocationTree Trammel = new LocationTree("trammel.xml", Map.Trammel);
public static readonly LocationTree Ilshenar = new LocationTree("ilshenar.xml", Map.Ilshenar);
public static readonly LocationTree Malas = new LocationTree("malas.xml", Map.Malas);
public static readonly LocationTree Tokuno = new LocationTree("tokuno.xml", Map.Tokuno);
private static LocationTree Felucca;
private static LocationTree Trammel;
private static LocationTree Ilshenar;
private static LocationTree Malas;
private static LocationTree Tokuno;
private static LocationTree TerMur;
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 BackHeight = BorderSize + TotalHeight + BorderSize;
private readonly ParentNode m_Node;
private readonly GoCategory m_Node;
private readonly int m_Page;
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>();
tree.LastBranch[from] = node;
if (node == tree.Root)
tree.LastBranch.Remove(from);
else
tree.LastBranch[from] = node;
m_Page = page;
m_Tree = tree;
@ -79,7 +107,7 @@ namespace Server.Gumps
int x = 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)
count = 0;
@ -138,7 +166,7 @@ namespace Server.Gumps
if (!OldStyle)
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);
@ -146,13 +174,14 @@ namespace Server.Gumps
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;
y += EntryHeight + OffsetSize;
IGoNode child = node.Children[index];
string name = child.Name;
string name = index >= node.Categories.Length ? node.Locations[index].Name : node.Categories[index].Name;
AddImageTiled(x, y, EntryWidth, EntryHeight, EntryGumpID);
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)
{
Mobile from = state.Mobile;
@ -210,7 +217,7 @@ namespace Server.Gumps
}
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));
break;
@ -219,14 +226,18 @@ namespace Server.Gumps
{
int index = info.ButtonID - 4;
if (index >= 0 && index < m_Node.Children.Length)
{
IGoNode o = m_Node.Children[index];
if (index < 0)
break;
if (o is ParentNode node)
from.SendGump(new GoGump(0, from, m_Tree, node));
else
from.MoveToWorld(((ChildNode)o).Location, m_Tree.Map);
if (index < m_Node.Categories.Length)
{
from.SendGump(new GoGump(0, from, m_Tree, m_Node.Categories[index]));
}
else
{
index -= m_Node.Categories.Length;
if (index < m_Node.Locations.Length)
from.MoveToWorld(m_Node.Locations[index].Location, m_Tree.Map);
}
break;

View 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; }
}
}

View file

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using Server.Json;
namespace Server.Gumps
{
@ -8,34 +9,50 @@ namespace Server.Gumps
{
public LocationTree(string fileName, Map map)
{
LastBranch = new Dictionary<Mobile, ParentNode>();
LastBranch = new Dictionary<Mobile, GoCategory>();
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);
xml.Close();
try
{
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 ParentNode Root { get; }
public GoCategory Root { get; }
private ParentNode Parse(XmlTextReader xml)
private static void SetParents(GoCategory parent)
{
xml.Read();
xml.Read();
xml.Read();
// Deserialization may leave these null
parent.Categories ??= Array.Empty<GoCategory>();
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;
}
}
}

View file

@ -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();
}
}
}
}

View file

@ -1,4 +1,5 @@
using System;
using System.Diagnostics;
using Server.Engines.VeteranRewards;
using Server.Gumps;
using Server.Multis;

View file

@ -1,15 +1,18 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using System.Text.Json.Serialization;
using Server.Json;
namespace Server
{
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)
{
@ -20,22 +23,7 @@ namespace Server
return false;
}
public NameList(string type, XmlElement xml)
{
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 string GetRandomName() => List.Length > 0 ? List[Utility.Random(List.Length)] : "";
public static NameList GetNameList(string type)
{
@ -45,53 +33,25 @@ namespace Server
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");
if (!File.Exists(filePath))
return;
try
List<NameList> nameLists = JsonConfig.Deserialize<List<NameList>>(filePath);
foreach (var nameList in nameLists)
{
Load(filePath);
}
catch (Exception e)
{
Console.WriteLine("Warning: Exception caught loading name lists:");
Console.WriteLine(e);
nameList.FixNames();
m_Table.Add(nameList.Type, nameList);
}
}
private static void Load(string filePath)
private void FixNames()
{
XmlDocument doc = new XmlDocument();
doc.Load(filePath);
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
}
}
for (int i = 0; i < List.Length; i++)
List[i] = Utility.Intern(List[i].Trim());
}
}
}

View file

@ -4,7 +4,6 @@ using System.Linq;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using Microsoft.AspNetCore.Connections;
using Server.Network;
namespace Server.Misc
@ -70,16 +69,15 @@ namespace Server.Misc
try
{
NetState ns = e.State;
ConnectionContext s = ns.Connection;
IPEndPoint ipep = (IPEndPoint)s.LocalEndPoint;
IPEndPoint ipep = (IPEndPoint)ns.Connection.LocalEndPoint;
IPAddress localAddress = ipep.Address;
int localPort = ipep.Port;
if (IsPrivateNetwork(localAddress))
{
ipep = (IPEndPoint)s.RemoteEndPoint;
ipep = (IPEndPoint)ns.Connection.RemoteEndPoint;
if (!IsPrivateNetwork(ipep.Address) && m_PublicAddress != null)
localAddress = m_PublicAddress;
}

View file

@ -61,10 +61,12 @@
<ProjectReference Include="..\Server\Server.csproj" Private="false" PrivateAssets="All" IncludeAssets="None">
<IncludeInPackage>false</IncludeInPackage>
</ProjectReference>
<PackageReference Include="MailKit" Version="2.6.0" />
<PackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="3.1.4" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.4" />
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.4" />
<!-- Transient package version resolution -->
<PackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="3.1.5" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.5" />
<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="Zlib.Bindings" Version="1.0.2" />
</ItemGroup>

File diff suppressed because it is too large Load diff