diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/gendata.js | 242 | ||||
-rw-r--r-- | tools/genlayout.py | 51 | ||||
-rw-r--r-- | tools/makelayout.js | 59 | ||||
-rw-r--r-- | tools/pieces_layout.svg | 619 |
4 files changed, 971 insertions, 0 deletions
diff --git a/tools/gendata.js b/tools/gendata.js new file mode 100644 index 0000000..b6eb19f --- /dev/null +++ b/tools/gendata.js @@ -0,0 +1,242 @@ +let fs = require("fs") + +let data = {} + +// Factions +const DS = 0 +const BK = 1 +const VE = 2 +const MI = 3 + +// Pieces +const DISC = 0 +const ELITE = 1 +const TROOPS = 2 + +// Creating cards +const IMAP = { D: DS, B: BK, V: VE } +let order = null +data.card_title = [ null ] +data.card_order = [ null ] +data.card_flavor = [] +data.card_flavor_shaded = [] + +function def_order(s) { + order = [ IMAP[s[0]], IMAP[s[1]], IMAP[s[2]] ] +} + +function def_card(number, name) { + data.card_title[number] = name + data.card_order[number] = order +} + +function flavor(id, unshaded, shaded) { + id = parseInt(id) + if (unshaded) + data.card_flavor[id] = unshaded + if (shaded) + data.card_flavor_shaded[id] = shaded +} + +def_order("BDV") +def_card(3, "Diamond Mines of Golconda") +def_card(10, "Capital Relocated") +def_card(15, "Uprising in Daulatabad") +def_card(19, "Bengali Resistance") +def_card(29, "Ashvapati, Lord of Horses") +def_card(30, "Bara Gazi Toph") +def_order("BVD") +def_card(16, "Gulbarga Fort") +def_card(17, "Sufi Shaikh Relocates") +def_card(18, "Center of High Culture") +def_card(28, "The Turquoise Throne") +def_card(31, "The Raichur Doab") +def_card(35, "Hindu-Muslim Marriages") +def_order("DBV") +def_card(1, "Malik Kafur") +def_card(2, "Mongol Army Repelled") +def_card(8, "Yadava Kingdom Annexed") +def_card(11, "Hindu Kush Mountains") +def_card(20, "Eastern Ganga Dynasty") +def_card(21, "Vindhya Range") +def_order("DVB") +def_card(4, "Ears of the Sultan") +def_card(6, "Siege of Warangal") +def_card(7, "The Conquest of Madurai") +def_card(9, "Kakatiya Empire Extinguished") +def_card(22, "A New Calculus") +def_card(27, "Taghi the Elusive") +def_order("VBD") +def_card(13, "Sage of Vidyaranya") +def_card(14, "Last Great King of the Hoysalas") +def_card(25, "Empire Building") +def_card(26, "Of Gods and Kings") +def_card(32, "The Hare and the Hounds") +def_card(33, "Commercial Port of Goa") +def_order("VDB") +def_card(5, "Siege of Chittor") +def_card(12, "Musunuri Nayakas") +def_card(23, "Virupaksha Temple") +def_card(24, "Stone Temple Chariots") +def_card(34, "Bahmani Sultan Assassinated") +def_card(36, "Northern Alliances") + + +flavor("1. Malik Kafur", "General assassinated, power struggle ensues", "Favored slave-general brilliant in battle") +flavor("2. Mongol Army Repelled", "Pyrrhic victory", "Sultan’s mercenary army victorious") +flavor("3. Diamond Mines of Golconda", "Untold riches lie just beneath the surface", "Sultan’s oppressive taxation") +flavor("4. Ears of the Sultan", "Sultan’s plans intercepted", "Network of spies covers the Deccan") +flavor("5. Siege of Chittor", "Hammir Singh reclaims a Rajput Kingdom", "Massacre at Chittor") +flavor("6. Siege of Warangal", "Continual looting encourages resistance", "Koh-i-Noor diamond among war spoils") +flavor("7. The Conquest of Madurai", "Tale of Madurai Sultan’s defeat chronicled in epic Sanskrit poem", "Sultan’s generals plunder Pandyan kingdom") +flavor("8. Yadava Kingdom Annexed", "Multi-ethnic polity seeds development", "Sultanate reclaims natural stronghold") +flavor("9. Kakatiya Empire Extinguished", "Telugu kingdom leaves a mythic legacy", "Sultanate tires of awaiting tribute") +flavor("10. Capital Relocated", "Political damage and chaos ensues as the Delhi elite is forced to migrate", "Sultan shortens his reach into the Deccan") +flavor("11. Hindu Kush Mountains", "Sultanate army perishes in the snow on a scheme of foreign conquest", "Grandiose schemes pay dividends") +flavor("12. Musunuri Nayakas", "“Warrior kings” rise in the shadow of the Kakatiya Empire", "Telugu warriors no match for siege technology from Central Asia") +flavor("13. Sage of Vidyaranya", "Meeting with revered jagadguru in Sringeri sparks a foundational myth", "Inferior military suffers early defeats") +flavor("14. Last Great King of the Hoysalas", "Vijayanagara emerges from the crumbling kingdom of Veera Ballala III", "Delhi’s armies plunder the Hoysala Capital") +flavor("15. Uprising in Daulatabad", "Delhi resentment reaches breaking point", "Commanders sentenced to death") +flavor("16. Gulbarga Fort", "Defenses expanded in the first Bahmani capital", "Bahmani Kingdom threatens control") +flavor("17. Sufi Shaikh Relocates", "Siraj-al-Din Junaidi takes up residence", "Relationships sour between Bahmani rulers and Sufi shaikhs") +flavor("18. Center of High Culture", "Bahmani Kingdom attracts great minds from afar; culture flourishes in the Deccan", "Divisions among Deccanis and newcomers") +flavor("19. Bengali Resistance", "Governors repeatedly assert independence", "Criminals conscripted to reclaim Bengal") +flavor("20. Eastern Ganga Dynasty", "Prosperous kingdom falls into decline", "Sultanate invades Orissa") +flavor("21. Vindhya Range", "Mountainous region provides a natural buffer from Delhi", "Long campaigns go unchallenged") +flavor("22. A New Calculus", "Madhava of Sangamagrama founds the Kerala School of Astronomy and Mathematics", "Narayana Pandita’s mathematical treatises offer new insights of immediate use") +flavor("23. Virupaksha Temple", "Temple to Shiva merges regional goddess cults", "Symbols of sovereignty destroyed") +flavor("24. Stone Temple Chariots", "Chariots carry representations of Puranic Hindu gods", "Cultural development draws interest") +flavor("25. Empire Building", "Lords of the Eastern and Western Oceans", "Sultan’s new roads thrust into the Deccan") +flavor("26. Of Gods and Kings", "Telugu poet Srinatha revolutionizes the craft and weaves the tapestry of an Empire, while Sufi devotional songs of Amir Khusrau praise the Sultans in Delhi", "") +flavor("27. Taghi the Elusive", "Fugitive rebel an expensive distraction", "The Sultan marches west in pursuit") +flavor("28. The Turquoise Throne", "Bahmanis cross the Krishna river into Telangana", "Telangana Nayakas implore allies to attack") +flavor("29. Ashvapati, Lord of Horses", "Bahmani rulers likened to Hindu god", "War horses and siege technology imported from overseas") +flavor("30. Bara Gazi Toph", "Gigantic cannons defend Bahmani forts", "Gunpowder and cannons appear suddenly in the subcontinent") +flavor("31. The Raichur Doab", "Repeated raids over fertile lands", "Massive casualties in both kingdoms") +flavor("32. The Hare and the Hounds", "Identical empire origin stories lean on regional cult mythologies", "Persian values inherited from Delhi") +flavor("33. Commercial Port of Goa", "Struggle for critical maritime routes", "Competition over ports boils over") +flavor("34. Bahmani Sultan Assassinated", "Vijayanagara captures Goa while the Bahmanis are destabilized", "Bahmani successor ushers in a period of social reform and cultural revival") +flavor("35. Hindu-Muslim Marriages", "Bahmani Sultan weds a Hindu bride", "Diffusion and dilution of culture") +flavor("36. Northern Alliances", "Vijayanagara probes an alliance with Delhi", "Alliance rejected") + +// Defining spaces +data.spaces = [ ] +data.space_name = [ ] + +function def_space(type, pop, name) { + data.spaces.push({ type, id: to_ascii(name), pop, adjacent: [] }) + data.space_name.push(name) +} + +function adjacent(an, bn) { + ax = data.space_name.indexOf(an) + bx = data.space_name.indexOf(bn) + add(data.spaces[ax].adjacent, bx) + add(data.spaces[bx].adjacent, ax) +} + +def_space("province", 1, "Andhra") +def_space("province", 2, "Bengal") +def_space("province", 1, "Gondwana") +def_space("province", 2, "Gujarat") +def_space("province", 1, "Jaunpur") +def_space("province", 2, "Karnataka") +def_space("province", 1, "Madhyadesh") +def_space("province", 2, "Maharashtra") +def_space("province", 2, "Malwa") +def_space("province", 1, "Orissa") +def_space("province", 1, "Rajput Kingdoms") +def_space("province", 1, "Sindh") +def_space("province", 1, "Tamilakam") +def_space("capital", 0, "Delhi") +def_space("mongol", 0, "Mountain Passes") +def_space("mongol", 0, "Punjab") + + +adjacent("Andhra", "Gondwana") +adjacent("Andhra", "Karnataka") +adjacent("Andhra", "Madhyadesh") +adjacent("Andhra", "Maharashtra") +adjacent("Andhra", "Orissa") +adjacent("Andhra", "Tamilakam") + +adjacent("Bengal", "Gondwana") +adjacent("Bengal", "Jaunpur") +adjacent("Bengal", "Orissa") + +adjacent("Gondwana", "Jaunpur") +adjacent("Gondwana", "Madhyadesh") +adjacent("Gondwana", "Orissa") + +adjacent("Gujarat", "Madhyadesh") +adjacent("Gujarat", "Maharashtra") +adjacent("Gujarat", "Malwa") +adjacent("Gujarat", "Rajput Kingdoms") +adjacent("Gujarat", "Sindh") + +adjacent("Jaunpur", "Delhi") +adjacent("Jaunpur", "Malwa") + +adjacent("Karnataka", "Maharashtra") +adjacent("Karnataka", "Tamilakam") + +adjacent("Madhyadesh", "Malwa") +adjacent("Madhyadesh", "Maharashtra") +adjacent("Madhyadesh", "Orissa") + +adjacent("Maharashtra", "Malwa") + +adjacent("Malwa", "Delhi") +adjacent("Malwa", "Rajput Kingdoms") + +adjacent("Rajput Kingdoms", "Delhi") +adjacent("Rajput Kingdoms", "Punjab") +adjacent("Rajput Kingdoms", "Sindh") + +adjacent("Sindh", "Mountain Passes") +adjacent("Sindh", "Punjab") + +adjacent("Punjab", "Delhi") +adjacent("Punjab", "Mountain Passes") + +// Pieces numbers +function def_piece(faction, type, count) { + if (count == 0) { + data.first_piece[faction][type] = null + data.last_piece[faction][type] = null + } else { + data.first_piece[faction][type] = pc_index + data.last_piece[faction][type] = pc_index + count - 1 + pc_index += count + } +} + +pc_index = 0 +data.first_piece = [ [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0] ] +data.last_piece = [ [-1, -1, -1], [-1, -1, -1], [-1, -1, -1], [-1, -1, -1] ] +def_piece(DS, DISC, 5) +def_piece(DS, ELITE, 5) +def_piece(DS, TROOPS, 32) +def_piece(BK, DISC, 5) +def_piece(BK, ELITE, 18) +def_piece(BK, TROOPS, 0) +def_piece(VE, DISC, 5) +def_piece(VE, ELITE, 22) +def_piece(VE, TROOPS, 0) +def_piece(MI, DISC, 0) +def_piece(MI, ELITE, 0) +def_piece(MI, TROOPS, 12) + + +// Tools +function add(list, item) { + if (!list.includes(item)) + list.push(item) +} + +function to_ascii(s) { + return s.normalize("NFD").replace(/[\u0300-\u036f]/g, "") +} + +// Output data file +fs.writeFileSync("data.js", "const data = " + JSON.stringify(data, 0, 0) + "\nif (typeof module !== 'undefined') module.exports = data\n") diff --git a/tools/genlayout.py b/tools/genlayout.py new file mode 100644 index 0000000..54b1724 --- /dev/null +++ b/tools/genlayout.py @@ -0,0 +1,51 @@ +list = [] + +def flush(): + global mode, name, x, y, w, h + if mode == 'rect': + list.append((name, round(x+w/2), round(y+h/2))) + if mode == 'circle': + list.append((name, round(x), round(y))) + mode = None + +def readsvg(filename): + global mode, name, x, y, w, h + mode = None + name = None + x = y = w = h = 0 + for line in open(filename).readlines(): + line = line.strip() + if line == "<rect": + flush() + mode = 'rect' + x = y = w = h = 0 + name = None + elif line == "<ellipse" or line == "<circle": + flush() + mode = 'circle' + x = y = w = h = 0 + name = None + elif line == "<text": + flush() + mode = None + if line.startswith('x="'): x = round(float(line.split('"')[1])) + if line.startswith('y="'): y = round(float(line.split('"')[1])) + if line.startswith('width="'): w = round(float(line.split('"')[1])) + if line.startswith('height="'): h = round(float(line.split('"')[1])) + if line.startswith('cx="'): x = round(float(line.split('"')[1])) + if line.startswith('cy="'): y = round(float(line.split('"')[1])) + if line.startswith('inkscape:label="'): + name = line.split('"')[1] + flush() + +readsvg("tools/pieces_layout.svg") + +def print_list(): + print("const LAYOUT = {") + for (name,x,y) in list: + xc = round((x+w/2.0)) + yc = round((y+h/2.0)) + print(f'\t"{name}": [{x}, {y}],') + print("}") + +print_list() diff --git a/tools/makelayout.js b/tools/makelayout.js new file mode 100644 index 0000000..c187254 --- /dev/null +++ b/tools/makelayout.js @@ -0,0 +1,59 @@ +const PROVINCES = [ + "Andhra", + "Bengal", + "Gondwana", + "Gujarat", + "Jaunpur", + "Karnataka", + "Madhyadesh", + "Maharashtra", + "Malwa", + "Orissa", + "Rajput Kingdoms", + "Sindh", + "Tamilakam", + "Delhi", + "Mountain Passes", + "Punjab", +] + +const print = console.log + +print('<?xml version="1.0" encoding="UTF-8"?>') +print('<svg') +print('\txmlns="http://www.w3.org/2000/svg"') +print('\txmlns:xlink="http://www.w3.org/1999/xlink"') +print('\txmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"') +print('\txmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"') +print('\twidth="1275" height="1650">') +print('<image xlink:href="map75.jpg" x="0" y="0" width="1275" height="1650" image-rendering="pixelated" sodipodi:insensitive="true" />') + +const COLORS = { + DS: "black", + BK: "cyan", + VE: "yellow", + mongols: "red", +} + +let x = -700, y = 100 + +function advancex() { + x += 150 +} + +function advancey() { + x -= 150 * 4 + y += 100 +} + +for (let s of PROVINCES) { + // faction holdings - 100x80 ellipse + print(`<text x="${x-100}" y="${y}" text-anchor="end" font-size="40">${s}</text>`) + for (let f of [ "DS", "BK", "VE", "mongols" ]) { + print(`<ellipse inkscape:label="${s} ${f}" cx="${x}" cy="${y}" rx="40" ry="30" fill="${COLORS[f]}" fill-opacity="0.5" />`) + advancex() + } + advancey() +} + +print('</svg>') diff --git a/tools/pieces_layout.svg b/tools/pieces_layout.svg new file mode 100644 index 0000000..c4d2cc2 --- /dev/null +++ b/tools/pieces_layout.svg @@ -0,0 +1,619 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="1275" + height="1650" + version="1.1" + id="svg64" + sodipodi:docname="test.svg" + inkscape:version="1.3.2 (091e20e, 2023-11-25)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs64" /> + <sodipodi:namedview + id="namedview64" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:zoom="0.24727273" + inkscape:cx="-264.88971" + inkscape:cy="598.52941" + inkscape:window-width="1848" + inkscape:window-height="1016" + inkscape:window-x="72" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:current-layer="svg64" /> + <image + xlink:href="../map75.jpg" + x="0" + y="0" + width="1275" + height="1650" + image-rendering="pixelated" + sodipodi:insensitive="true" + id="image1" /> + <ellipse + inkscape:label="Andhra DS" + cx="785.10834" + cy="1013.6342" + rx="40" + ry="30" + fill="#000000" + fill-opacity="0.5" + id="ellipse1" /> + <ellipse + inkscape:label="Andhra BK" + cx="678.47357" + cy="1060.1261" + rx="40" + ry="30" + fill="#00ffff" + fill-opacity="0.5" + id="ellipse2" /> + <ellipse + inkscape:label="Andhra VE" + cx="653.30853" + cy="1165.0927" + rx="40" + ry="30" + fill="#ffff00" + fill-opacity="0.5" + id="ellipse3" /> + <ellipse + inkscape:label="Andhra mongols" + cx="747.90259" + cy="1214.5952" + rx="40" + ry="30" + fill="#ff0000" + fill-opacity="0.5" + id="ellipse4" /> + <ellipse + inkscape:label="Bengal DS" + cx="1147.8877" + cy="454.87421" + rx="40" + ry="30" + fill="#000000" + fill-opacity="0.5" + id="ellipse5" /> + <ellipse + inkscape:label="Bengal BK" + cx="1078.7566" + cy="536.22742" + rx="40" + ry="30" + fill="#00ffff" + fill-opacity="0.5" + id="ellipse6" /> + <ellipse + inkscape:label="Bengal VE" + cx="1122.0199" + cy="626.24115" + rx="40" + ry="30" + fill="#ffff00" + fill-opacity="0.5" + id="ellipse7" /> + <ellipse + inkscape:label="Bengal mongols" + cx="1208.5535" + cy="663.23492" + rx="40" + ry="30" + fill="#ff0000" + fill-opacity="0.5" + id="ellipse8" /> + <ellipse + inkscape:label="Gondwana DS" + cx="991.91602" + cy="685.04767" + rx="40" + ry="30" + fill="#000000" + fill-opacity="0.5" + id="ellipse9" /> + <ellipse + inkscape:label="Gondwana BK" + cx="848.12048" + cy="695.11127" + rx="40" + ry="30" + fill="#00ffff" + fill-opacity="0.5" + id="ellipse10" /> + <ellipse + inkscape:label="Gondwana VE" + cx="863.57416" + cy="842.24976" + rx="40" + ry="30" + fill="#ffff00" + fill-opacity="0.5" + id="ellipse11" /> + <ellipse + inkscape:label="Gondwana mongols" + cx="990.3092" + cy="743.26917" + rx="40" + ry="30" + fill="#ff0000" + fill-opacity="0.5" + id="ellipse12" /> + <ellipse + inkscape:label="Gujarat DS" + cx="362.35681" + cy="611.13867" + rx="40" + ry="30" + fill="#000000" + fill-opacity="0.5" + id="ellipse13" /> + <ellipse + inkscape:label="Gujarat BK" + cx="250.2686" + cy="601.49054" + rx="40" + ry="30" + fill="#00ffff" + fill-opacity="0.5" + id="ellipse14" /> + <ellipse + inkscape:label="Gujarat VE" + cx="385.84372" + cy="722.84753" + rx="40" + ry="30" + fill="#ffff00" + fill-opacity="0.5" + id="ellipse15" /> + <ellipse + inkscape:label="Gujarat mongols" + cx="133.53917" + cy="611.11877" + rx="40" + ry="30" + fill="#ff0000" + fill-opacity="0.5" + id="ellipse16" /> + <ellipse + inkscape:label="Jaunpur DS" + cx="979.46338" + cy="422.46359" + rx="40" + ry="30" + fill="#000000" + fill-opacity="0.5" + id="ellipse17" /> + <ellipse + inkscape:label="Jaunpur BK" + cx="787.50323" + cy="525.53986" + rx="40" + ry="30" + fill="#00ffff" + fill-opacity="0.5" + id="ellipse18" /> + <ellipse + inkscape:label="Jaunpur VE" + cx="914.74194" + cy="586.41663" + rx="40" + ry="30" + fill="#ffff00" + fill-opacity="0.5" + id="ellipse19" /> + <ellipse + inkscape:label="Jaunpur mongols" + cx="867.44952" + cy="385.47809" + rx="40" + ry="30" + fill="#ff0000" + fill-opacity="0.5" + id="ellipse20" /> + <ellipse + inkscape:label="Karnataka DS" + cx="551.49963" + cy="1212.6781" + rx="40" + ry="30" + fill="#000000" + fill-opacity="0.5" + id="ellipse21" /> + <ellipse + inkscape:label="Karnataka BK" + cx="651.41888" + cy="1298.4513" + rx="40" + ry="30" + fill="#00ffff" + fill-opacity="0.5" + id="ellipse22" /> + <ellipse + inkscape:label="Karnataka VE" + cx="572.3526" + cy="1389.6414" + rx="40" + ry="30" + fill="#ffff00" + fill-opacity="0.5" + id="ellipse23" /> + <ellipse + inkscape:label="Karnataka mongols" + cx="482.74741" + cy="1253.7037" + rx="40" + ry="30" + fill="#ff0000" + fill-opacity="0.5" + id="ellipse24" /> + <ellipse + inkscape:label="Madhyadesh DS" + cx="724.0636" + cy="746.15338" + rx="40" + ry="30" + fill="#000000" + fill-opacity="0.5" + id="ellipse25" /> + <ellipse + inkscape:label="Madhyadesh BK" + cx="571.19043" + cy="868.23297" + rx="40" + ry="30" + fill="#00ffff" + fill-opacity="0.5" + id="ellipse26" /> + <ellipse + inkscape:label="Madhyadesh VE" + cx="652.80389" + cy="940.88025" + rx="40" + ry="30" + fill="#ffff00" + fill-opacity="0.5" + id="ellipse27" /> + <ellipse + inkscape:label="Madhyadesh mongols" + cx="613.45172" + cy="769.71881" + rx="40" + ry="30" + fill="#ff0000" + fill-opacity="0.5" + id="ellipse28" /> + <ellipse + inkscape:label="Maharashtra DS" + cx="464.92444" + cy="907.37817" + rx="40" + ry="30" + fill="#000000" + fill-opacity="0.5" + id="ellipse29" /> + <ellipse + inkscape:label="Maharashtra BK" + cx="531.46307" + cy="997.39044" + rx="40" + ry="30" + fill="#00ffff" + fill-opacity="0.5" + id="ellipse30" /> + <ellipse + inkscape:label="Maharashtra VE" + cx="524.80768" + cy="1083.5806" + rx="40" + ry="30" + fill="#ffff00" + fill-opacity="0.5" + id="ellipse31" /> + <ellipse + inkscape:label="Maharashtra mongols" + cx="386.88681" + cy="900.46082" + rx="40" + ry="30" + fill="#ff0000" + fill-opacity="0.5" + id="ellipse32" /> + <ellipse + inkscape:label="Malwa DS" + cx="681.62103" + cy="573.92773" + rx="40" + ry="30" + fill="#000000" + fill-opacity="0.5" + id="ellipse33" /> + <ellipse + inkscape:label="Malwa BK" + cx="514.99274" + cy="622.97754" + rx="40" + ry="30" + fill="#00ffff" + fill-opacity="0.5" + id="ellipse34" /> + <ellipse + inkscape:label="Malwa VE" + cx="510.99982" + cy="735.04401" + rx="40" + ry="30" + fill="#ffff00" + fill-opacity="0.5" + id="ellipse35" /> + <ellipse + inkscape:label="Malwa mongols" + cx="536.92621" + cy="556.5993" + rx="40" + ry="30" + fill="#ff0000" + fill-opacity="0.5" + id="ellipse36" /> + <ellipse + inkscape:label="Orissa DS" + cx="1167.697" + cy="797.57922" + rx="40" + ry="30" + fill="#000000" + fill-opacity="0.5" + id="ellipse37" /> + <ellipse + inkscape:label="Orissa BK" + cx="1081.6849" + cy="799.6156" + rx="40" + ry="30" + fill="#00ffff" + fill-opacity="0.5" + id="ellipse38" /> + <ellipse + inkscape:label="Orissa VE" + cx="955.17651" + cy="929.42145" + rx="40" + ry="30" + fill="#ffff00" + fill-opacity="0.5" + id="ellipse39" /> + <ellipse + inkscape:label="Orissa mongols" + cx="935.16193" + cy="990.98254" + rx="40" + ry="30" + fill="#ff0000" + fill-opacity="0.5" + id="ellipse40" /> + <ellipse + inkscape:label="Rajput Kingdoms DS" + cx="427.15005" + cy="366.9664" + rx="40" + ry="30" + fill="#000000" + fill-opacity="0.5" + id="ellipse41" /> + <ellipse + inkscape:label="Rajput Kingdoms BK" + cx="205.18614" + cy="482.89713" + rx="40" + ry="30" + fill="#00ffff" + fill-opacity="0.5" + id="ellipse42" /> + <ellipse + inkscape:label="Rajput Kingdoms VE" + cx="433.16797" + cy="502.22614" + rx="40" + ry="30" + fill="#ffff00" + fill-opacity="0.5" + id="ellipse43" /> + <ellipse + inkscape:label="Rajput Kingdoms mongols" + cx="228.93816" + cy="382.51443" + rx="40" + ry="30" + fill="#ff0000" + fill-opacity="0.5" + id="ellipse44" /> + <ellipse + inkscape:label="Sindh DS" + cx="110.45609" + cy="327.46213" + rx="40" + ry="30" + fill="#000000" + fill-opacity="0.5" + id="ellipse45" /> + <ellipse + inkscape:label="Sindh BK" + cx="40.239883" + cy="491.85406" + rx="40" + ry="30" + fill="#00ffff" + fill-opacity="0.5" + id="ellipse46" /> + <ellipse + inkscape:label="Sindh VE" + cx="42.381397" + cy="543.638" + rx="40" + ry="30" + fill="#ffff00" + fill-opacity="0.5" + id="ellipse47" /> + <ellipse + inkscape:label="Sindh mongols" + cx="36.135269" + cy="344.03363" + rx="40" + ry="30" + fill="#ff0000" + fill-opacity="0.5" + id="ellipse48" /> + <ellipse + inkscape:label="Tamilakam DS" + cx="756.05219" + cy="1337.683" + rx="40" + ry="30" + fill="#000000" + fill-opacity="0.5" + id="ellipse49" /> + <ellipse + inkscape:label="Tamilakam BK" + cx="647.92712" + cy="1477.6115" + rx="40" + ry="30" + fill="#00ffff" + fill-opacity="0.5" + id="ellipse50" /> + <ellipse + inkscape:label="Tamilakam VE" + cx="657.41528" + cy="1543.4928" + rx="40" + ry="30" + fill="#ffff00" + fill-opacity="0.5" + id="ellipse51" /> + <ellipse + inkscape:label="Tamilakam mongols" + cx="752.04889" + cy="1394.1047" + rx="40" + ry="30" + fill="#ff0000" + fill-opacity="0.5" + id="ellipse52" /> + <ellipse + inkscape:label="Delhi DS" + cx="717.75586" + cy="315.85837" + rx="40" + ry="30" + fill="#000000" + fill-opacity="0.5" + id="ellipse53" /> + <ellipse + inkscape:label="Delhi BK" + cx="570.71161" + cy="422.11594" + rx="40" + ry="30" + fill="#00ffff" + fill-opacity="0.5" + id="ellipse54" /> + <ellipse + inkscape:label="Delhi VE" + cx="723.77979" + cy="414.29138" + rx="40" + ry="30" + fill="#ffff00" + fill-opacity="0.5" + id="ellipse55" /> + <ellipse + inkscape:label="Delhi mongols" + cx="572.69818" + cy="323.68002" + rx="40" + ry="30" + fill="#ff0000" + fill-opacity="0.5" + id="ellipse56" /> + <ellipse + inkscape:label="Mountain Passes DS" + cx="403.78482" + cy="105.72476" + rx="40" + ry="30" + fill="#000000" + fill-opacity="0.5" + id="ellipse57" /> + <ellipse + inkscape:label="Mountain Passes BK" + cx="235.53142" + cy="110.03997" + rx="40" + ry="30" + fill="#00ffff" + fill-opacity="0.5" + id="ellipse58" /> + <ellipse + inkscape:label="Mountain Passes VE" + cx="318.04935" + cy="105.33498" + rx="40" + ry="30" + fill="#ffff00" + fill-opacity="0.5" + id="ellipse59" /> + <ellipse + inkscape:label="Mountain Passes mongols" + cx="262.96384" + cy="182.53125" + rx="40" + ry="30" + fill="#ff0000" + fill-opacity="0.5" + id="ellipse60" /> + <ellipse + inkscape:label="Punjab DS" + cx="503.7612" + cy="170.15195" + rx="40" + ry="30" + fill="#000000" + fill-opacity="0.5" + id="ellipse61" /> + <ellipse + inkscape:label="Punjab BK" + cx="278.87726" + cy="262.32489" + rx="40" + ry="30" + fill="#00ffff" + fill-opacity="0.5" + id="ellipse62" /> + <ellipse + inkscape:label="Punjab VE" + cx="476.74246" + cy="265.74405" + rx="40" + ry="30" + fill="#ffff00" + fill-opacity="0.5" + id="ellipse63" /> + <ellipse + inkscape:label="Punjab mongols" + cx="370.125" + cy="233.37929" + rx="40" + ry="30" + fill="#ff0000" + fill-opacity="0.5" + id="ellipse64" /> +</svg> |