Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences .
×
Create a free account

towngen script

1491067534
Paul S.
Sheet Author
API Scripter
Ok, so I made the namegen which creates random town names. &nbsp;I want to take that a step forward. This script creates random villages/towns/cities based on geographic location (african, arabic, asian, dwarf, elf, indian).&nbsp; It returns population, number of inns, and inn names (for cities it is limited to 15 inns ... because more than that is crazy). My question to you all - what other info would a DM want? &nbsp;Shops (random generated number of shop names)? Governmental style (monarchy, democracy, dictatorship, etc..)? Crime rate? Industrial base (mining, agriculture, shipping, etc..)? Here's the script: <a href="https://github.com/happywanderer/towngen/blob/mast" rel="nofollow">https://github.com/happywanderer/towngen/blob/mast</a>... ;(function(){ &nbsp; &nbsp; "use strict"; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; var towns = { &nbsp; &nbsp; &nbsp; &nbsp; african: ["Aba", "Aboso", "Abu Hammad", "Abu Minqar", "Abu Tartur", "Abu Zenima", "Accra", "Adabiya", "Aga", "Agona Swedru", "Ain Ris", "Akhmim", "Akropong", "Al-Amiriya", "Al-Ayyat", "Al-Birba", "Al-Fashn", "Al-Hamrawayn", "Al-Hindaw", "Al-Kuntilla", "Al-Mahalla al Kubra", "Apam", "As-Salihiya", "Asaba", "Ash-Shallufa", "Assiut", "Atfih", "Az-Zagaziq", "Banda Ahenkro", "Baragoi", "Barramiya", "Begoro", "Benin City", "Bibiani", "Bir Abu Hashim", "Bir Quei", "Bir Umm Gherg", "Biyala", "Bulaq", "Burj Mughaidhil", "Calabar", "Dair Mawas", "Damas", "Dishna", "Duayaw Nkwanta", "Edfu", "El-Alamein", "El-Kanayis", "Elat", "Embu", "Faraskur", "Fidimiin", "Garissa", "Ghazal", "Giza", "Gusau", "Hawsh Isa", "Hohoe", "Ibadan", "Ife", "Ikot Ekpene", "Isiolo", "Itsa", "Japekrom", "Kade", "Kafr asch-Schaich", "Kafrat-Zayyat", "Kano", "Kawm Hamada", "Khanika", "Kilifi", "Kisii", "Koforidua", "Kpandu", "Lagos", "Lekki", "Lokoja", "Machakos", "Maiduguri", "Malindi", "Mandiska", "Marsa Alam", "Masaid", "Minuf", "Monera", "Mpraeso", "Mut", "Nag Hammadi", "Nakuru", "Naro Moru", "Nsawam", "Nyahururu", "Oduponkpehe", "Okene", "Oron", "Oyo", "Prestea", "Qasr al-Farafira", "Qift", "Qus", "Ras al-Hikma", "Ras Jamsah", "Safaga", "Samalut", "Saqqara", "Savelugu", "Sharm el-Sheikh", "Shibin al-Qanatir", "Sidi Abd ar-Rahman", "Sinnuris", "Somanya", "Sunyani", "Taifa", "Talla", "Tarkwa", "Teshie", "Tukh", "Vihiga", "Wajir", "Wenchi", "Wundanyi", "Zagazig", "Zawiyat Shammas"], &nbsp; &nbsp; &nbsp; &nbsp; arabic: ["A'zaz", "Abu Kamal", "Ad-Dawr", "Afak", "Afrin", "Ain", "Ainata", "Al Anbar", "Al Diwaniyah", "Al Eskanaria", "Al Hillah", "Al Mehawil", "Al Mosayeb", "Al Muthana", "Al Qasim", "Al Zab", "Al-Awja", "Al-Bab", "Al-Darbasiyah", "Al-Faris", "Al-Haffah", "Al-Hajar al-Aswad", "Al-Hasakah ", "Al-Malikiyah", "Al-Mukharram", "Al-Qa'im", "Al-Qādisiyyah", "Al-Qusayr", "Al-Qutayfah", "Al-Rastan", "Al-Sanamayn", "Al-Suqaylabiyah", "Al-Tall", "Al-Thawrah", "Aleppo ", "Amarah", "An-Nabk", "Ar Rutba", "Ar-Raqqah ", "Arihah", "Arsal", "As Sulaymaniyah", "As-Safira", "As-Suwayda ", "Ash-Shaykh Badr", "Atarib", "Ayn al-Arab", "Baalbek", "Babil", "Baghdad", "Baghdadi", "Baiji", "Balad", "Baniyas", "Baqubah", "Barka", "Basra", "Bechwat", "Bednayel", "Binnish", "Bodai", "Bosra", "Brital", "Btadhi", "Chaat", "Chlifa", "Chmestar - Gharbi Baalbeck", "Dahuk", "Damascus ", "Daraa ", "Darayya", "Dayr 'Atiyah", "Dayr Hafir", "Deir el Ahmar", "Deir ez-Zor ", "Dhi Qar", "Diyala", "Douma", "Douriss", "Dreikiche", "Erbil", "Fakiha - Jdeydeh", "Fallujah", "Fiq", "Fleweh", "Hadath Baalbek", "Haditha", "Halabja", "Halbata", "Hama ", "Harasta", "Harem", "Hazin", "Hīt", "Homs ", "Hosh Barada", "Hosh el Rafika", "Hosh Snid", "Hosh Tal Safiya", "Hrebta", "Idlib ", "Iskandariya", "Izra'", "Jabbouleh", "Jableh", "Janta", "Jarabulus", "Jaramana", "Jisr ash-Shugur", "Kafr Nabl", "Kah", "Karbala", "Karha", "Kasarnaba", "Khan Shaykhun", "Khanaqin", "Khodr", "Khraibeh", "Kirkuk", "Kufa", "Kut", "Laat", "Labweh", "Latakia ", "Ma'arrat Misrin", "Maarat al-Numaan", "Majdloun", "Manbij", "Masyaf", "Mayadin", "Maysan", "Mhardeh", "Mikna", "Mosul (ku: Mûsil)", "Muqdadiyah", "n/a", "Nabi Chit", "Nabi Othman", "Najaf", "Nasiriyah", "Nawa", "Ninawa", "Palmyra", "Qamishli", "Qardaha", "Qatana", "Qudsaya", "Quneitra ", "Ra's al-'Ayn", "Ram - Jbenniyeh", "Ramadi", "Ras Baalbek", "Ras el Hadis", "Saayde", "Safita", "Salah ad Din", "Salamiyah", "Salkhad", "Salqin", "Samarra", "Samawah", "Saraqib", "Sayyidah Zaynab", "Seriine el Fawka", "Seriine el Tahta", "Shahba", "Shamia", "Sulaymaniyah", "Taji", "Tal Abyad", "Tal Afar", "Talbiseh", "Talkalakh", "Talya", "Taraya", "Tartus ", "Tayba", "Tel Keppe", "Temnin el Fawka", "Temnin el Tahta", "Tikrit", "Umm Qasr", "Wadi Faara", "Wasit", "Yabrud", "Yammouneh", "Younine", "Zabadani", "Zakho", "Zubayr"], &nbsp; &nbsp; &nbsp; &nbsp; asian: ["Aksu", "Anguo", "Anqing", "Anyang", "Baicheng", "Baoding", "Barkam", "Bei'an", "Beipiao", "Benxi", "Botou", "Chamdo", "Changji", "Changshu", "Chaohu", "Chengdu", "Chishui", "Chongzuo", "Da'an", "Dangyang", "Daqing", "Dazhou", "Dengta", "Dezhou", "Dongfang", "Dongtai", "Dujiangyan", "Emeishan", "Ergun", "Fengcheng", "Fu'an", "Fuqing", "Fuyang", "Gaizhou", "Gaomi", "Gejiu", "Gongyi", "Guangshui", "Guilin", "Gujiao", "Haikou", "Haining", "Hanchuan", "Harbin", "Hegang", "Helong", "Heyuan", "Hohhot", "Hongjiang", "Huai'an", "Huanggang", "Huayin", "Huizhou", "Hunchun", "Jiamusi", "Jiangshan", "Jiaohe", "Jiayuguan", "Jilin", "Jincheng", "Jingjiang", "Jinhua", "Jinzhong", "Jiuquan", "Kaifeng", "Kangding", "Kokdala", "Kunyu", "Laixi", "Langzhong", "Lechang", "Lengshuijiang", "Lianjiang", "Liaocheng", "Lijiang", "Linfen", "Lingyuan", "Linxia", "Lishui", "Liyang", "Longnan", "Lu'an", "Luoding", "Lushui", "Macheng", "Meihekou", "Mengzi", "Miluo", "Muling", "Nangong", "Nantong", "Neijiang", "Ningguo", "Panshi", "Pingdingshan", "Pingxiang", "Putian", "Qidong", "Qingyuan", "Qinyang", "Qiqihar", "Qufu", "Renqiu", "Ruian", "Rushan", "Sanming", "Shanghai", "Shangri-La", "Shanwei", "Shaoxing", "Shenzhen", "Shihezi", "Shiyan", "Shuangliao", "Sihui", "Suifenhe", "Suqian", "Taicang", "Taizhou", "Tengzhou", "Tianshui", "Tongcheng", "Tongliao", "Tumen", "Ulanqab", "Wanyuan", "Weinan", "Wu'an", "Wugang", "Wujiaqu", "Wuxue", "Wuzhou", "Xiangtan", "Xiantao", "Xichang", "Xingning", "Xingyi", "Xinmi", "Xinyang", "Xinzhou", "Xuzhou", "Yancheng", "Yangzhong", "Yantai", "Yichun", "Yingcheng", "Yining", "Yizheng", "Yongkang", "Yucheng", "Yumen", "Yuxi", "Zaozhuang", "Zhangjiakou", "Zhangzhou", "Zhaotong", "Zhijiang", "Zhoukou", "Zhuhai", "Zhuzhou", "Ziyang"], &nbsp; &nbsp; &nbsp; &nbsp; dwarf: ["Angern", "Attes", "Bärneck", "Beneschau", "Berlau", "Bessenitz", "Böhmische Haidl", "Böhmische Herslag", "Buchers", "Buggaus", "Cernitz", "Chlumzen", "Christianberg", "Droschelhof", "Dummrowitz", "Eggetschlag", "Ereschtag", "Favoritenhof", "Friedau", "Gilowitz", "Glöckelberg", "Gojau", "Goldkron", "Gollitsch", "Groses Umlowitz", "Hermannschlag u Benešova nad Černou", "Hewraffl", "Hochdorf", "Hochwald", "Hödlwald", "Hofbauernschloss", "Hohenfurth", "Holkau", "Holubau", "Holzrechen", "Honetschlag", "Höritz", "Hörschlag", "Johannesthal", "Kabschowitz", "Kalsching", "Kalten Brunn", "Kaplitz", "Kirzchschlag", "Kladen", "Kleinberg", "Kleinumlowitz", "Kodetschlag", "Kohlgruben", "Krems", "Krenau", "Krenauhof", "Kreuzberg", "Krumau", "Kugelweit", "Lagau", "Lagenbrück", "Lausek", "Liebesdorf", "Lippen", "Loizischen Gereith", "Losnitz", "Lupenz", "Maidstein", "Mainetschlag", "Malsching", "Maltschitz", "Maria Schnee", "Markvartitz", "Mautschlag", "Melm", "Michnitz", "Mirkowitz", "Mistelholz", "Mistelholz-Kollern", "Mitter Zwinzen", "Mojne", "Mollerhof", "Mrzitz", "Mugrau", "Mühlneth", "Muscherad", "Mutzgern", "Nesselbach", "Netrowitz", "Neudorf", "Neuhof", "Neusiedl", "Niedertal", "Ober Breitenschlag", "Oberhaid", "Oberplan", "Oenau", "Oppolz", "Ottau", "Otten", "Parkfried", "Passern", "Perneck", "Pernlesdorf", "Pflanzen", "Pichlern", "Platten", "Pleschowitz", "Pohlen", "Polletitz", "Poreschin", "Pötschmühle", "Pramles", "Prietal", "Prissnitz", "Puchers", "Quidosching", "Ratschin", "Rattschlag", "Reichenau", "Riendles", "Roisching", "Rojau", "Rossenberg", "Rossental", "Rothenhof", "Ruben", "Ruckendorf", "Sahorsch", "Sarau", "Schmiding", "Schöbersdorf", "Schömersdorf", "Schöninger", "Schwarzbach", "Sochors", "Spiegelhütten", "St. Thoma", "Stein", "Stiks", "Stubau", "Stuben", "Subschitz", "Teufelstein", "Teutsmannsdorf", "Trisau", "Troschelhof", "Tusch", "Tweraz", "Unter Breitenstein", "Unter Wuldau", "Unterhaid", "Vogeltenne", "Weichseln", "Weislowitz", "Weleschin", "Wetter", "Wieles", "Wittinghausen", "Wörles", "Zartlesdorf", "Zettwing", "Ziering", "Zippendorf", "Zwiesel"], &nbsp; &nbsp; &nbsp; &nbsp; elf: ["Bělá", "Běleň", "Benešov nad Černou", "Besednice", "Blansko", "Blatná", "Bližná", "Boletice", "Borová", "Borovští Uhlíři", "Branná", "Brloh", "Bujanov", "Bukovsko", "Čeřín", "Černá v Pošumaví", "Černice", "Čertova Stěna", "Červený Dvůr", "Český Heršlág", "Český Krumlov", "Cetviny", "Chabičovice", "Chlumec", "Chvalšiny", "Cipín", "Dívčí Kámen", "Dolní Dvořiště", "Dolní Třebonín", "Dolní Vltavice", "Domoradice", "Drahoslavice", "Dubová", "Havalda", "Hejdlov", "Heršlág", "Hněvanov", "Hodňov", "Holkov", "Holubov", "Hořice", "Horní Dvořiště", "Horní Planá", "Horní Třebonín", "Hrudkov", "Hůrka", "Jámy", "Jánské Údolí", "Jelm", "Jenín", "Jílovec", "Kájov", "Kaliště", "Kaplice", "Kladné", "Kleť", "Kovářov", "Křemže", "Křenov", "Křenovský Dvůr", "Křišťanov", "Křížová Hora", "Kuklov", "Kuří", "Květušín", "Kvítkův Dvůr", "Kyselov", "Lazec", "Lipno", "Lojzovy Paseky", "Loučovice", "Louzek", "Malčice", "Malonty", "Malotín", "Malšín", "Maňava", "Markvartice", "Michnice", "Milná", "Mirkovice", "Močerady", "Mojné", "Mokrá", "Mostky", "Mříč", "Muckov", "Mýto", "Nahořany", "Netřebice", "Nová Ves", "Novosedly", "Nový Dvůr", "Olšina", "Omlenice", "Omleničky", "Ostrov", "Pasovary", "Pečkovský Mlýn", "Pernek", "Píhlov", "Plešovice", "Pohoří na Šumavě", "Polná", "Pořešín", "Předmostí-Frýdava", "Přední Výtoň", "Přídolí", "Přísečná", "Prostřední Svince", "Ptačí Hrádek", "Račín", "Radslav", "Rájov", "Rechle", "Rojšín", "Rožmberk", "Rožmitál na Šumavě", "Rybník-Certlov", "Rychnov nad Malší", "Šebanov", "Skláře", "Slavkov", "Slupenec", "Soběnov", "Sokolčí", "Spolí", "Štěkře", "Studánky", "Suš", "Svatý Kámen", "Svatý Tomáš", "Svéráz", "Světlá", "Světlík", "Tichá", "Třísov", "Údolí", "Velešín", "Velislavice", "Větrná", "Větřní", "Vítkův Hrádek", "Všeměřice", "Vyšný", "Vyšší Brod", "Záhoří", "Zátes", "Zátoň", "Žďár", "Žlábek", "Zlatá Koruna", "Zrcadlová Huť", "Zubčice", "Zvonková"], &nbsp; &nbsp; &nbsp; &nbsp; indian: ["Adoor", "Ahmednagar", "AlipurdUrban Agglomerationr", "Ambikapur", "Anantapur", "Araria", "Asarganj", "Bagaha", "Baleshwar Town", "Bargarh", "Bathinda", "BhabUrban Agglomeration", "Bhatapara", "Bhiwandi", "Bilaspur", "Byasanagar", "Chatra", "Chirala", "Dalli-Rajhara", "Delhi", "Dhoraji", "Dumka", "Faridabad", "Firozpur", "Giridih", "Gooty", "Gurdaspur", "Haldwani-cum-Kathgodam", "Hisar", "Indore", "Jaipur", "Jamnagar", "Jhargram", "Kadi", "Kalpi", "Kanpur", "Karnal", "Kavali", "Khammam", "Kodungallur", "Kot Kapura", "Kurnool", "Lakheri", "Lalgudi", "Lilong", "Longowal", "Lunglei", "Madhugiri", "Maharajganj", "Mahesana", "Makrana", "Malkangiri", "Manavadar", "Mandi", "Manendragarh", "Mangrol", "Mansa", "Marhaura", "Mathura", "Medininagar (Daltonganj)", "Mhow Cantonment", "Modinagar", "Morena", "Mudabidri", "Mul", "Munger", "Muvattupuzha", "Nadiad", "Nagda", "Naidupet", "Nakur", "Nandura", "Narasapuram", "Narnaul", "Natham", "Nawabganj", "Nehtaur", "Neyyattinkara", "Niwari", "Noorpur", "Oddanchatram", "Pachora", "Pakaur", "Palasa Kasibugga", "Pallapatti", "Panamattom", "Panipat", "Paramakudi", "Parli", "Pathanamthitta", "Pattamundai", "Pavagada", "Peringathur", "Phagwara", "Phusro", "Pinjore", "Pithoragarh", "Porbandar", "Prithvipur", "Punalur", "Purna", "Puttur", "Rafiganj", "Raigarh", "Rajahmundry", "Rajgarh", "Rajpura", "Ramanathapuram", "Ramngarh", "Ranavav", "Rapar", "Ratnagiri", "Rayachoti", "Reoti", "Robertsganj", "Rudrapur", "Sadri", "Sagwara", "Sahjanwa", "Salaya", "Sambalpur", "Sanchore", "Sangli", "Sarangpur", "Satana", "Saundatti-Yellamma", "Sedam", "Shahabad, Hardoi", "Shahpur", "Shamsabad, Farrukhabad", "Sheopur", "Shillong", "Shivpuri", "Shujalpur", "Sihor", "Silapathar", "Sindhagi", "Sirkali", "Siruguppa", "Siwan", "Sonepur", "Sri Madhopur", "Srisailam Project (Right Flank Colony) Township", "Sultanpur", "Supaul", "Suriyampalayam", "Talcher", "Tanda", "Tarbha", "Tenkasi", "Thane", "Theni Allinagaram", "Thiruvarur", "Tilhar", "Tiruchirappalli", "Tiruppur", "Titlagarh", "Tuljapur", "Uchgaon", "Udumalaipettai", "Umbergaon", "Upleta", "Uthiramerur", "Vadodara", "Vapi", "Vellakoil", "Vijayapura", "Viramgam", "Vizianagaram", "Wanaparthy", "Warisaliganj", "Yanam", "Zaidpur"] &nbsp; &nbsp; }; &nbsp; &nbsp; var tavern = ["9 Horse Hitch", " The 10 Bed Inn", " Aerie of the Eagles", " Adventurer’s Hall", " Alchemist’s Alembic", " Ales 'n Beds", " The Alehouse of the Serpents", " The Alicorn", " The Amulet and Wineskin", " Antidote", " Arma Gedd Inn", " Atlastabeer!", " The Axe and Compass", " Axehandle Ale", " Baalzepub", " The Badger and Harp", " Badger Head", " The Bag and Flagon", " The Banjo and Zigzag", " The Bar of Kings", " The Barf Bag", " Bartie's Food and Brew", " The Basque and Feijoa", " Battle Axe Inn", " Bed-And-Boarmeat", " The Bedry", " Beast’s Head", " Beauty Man Garden ", " Bed THIS", " Beefy Stu's Beefy Stews", " The Beehive", " The Beer Guzzler", " The Behir and the Beholder", " Belching Boar", " The Belle", " The Belly Buster", " The Bent Elbows", " Bibbo’s Pub", " Biers ", " The Big Boy", " The Big Red Dog", " Bill & Ted’s Excellent Alehouse", " Blabbering Kobold", " Black Barrels", " Black and Blue Unicorn", " The Black Boar", " The Black Hole", " The &nbsp;Black Pearl", " The &nbsp;Black Swan", " Black Wednesday", " The Blind Basilisk", " The &nbsp;Blind Eye", " Blind Marksman", " Blood of the Vine ", " The Blue Bear", " The Blue Bladesman", " The Blue Duck", " The &nbsp;Blue Lantern", " Blue Parrot Inn", " The Boar and Spear", " The Boar's Bristles", " The Boar's Chase", " Boar's Head Inn", " Boar's Rest", " Bob's Place", " The Bog and Barrel", " The Boil and Youth", " Booze-up", " Bottomless Keg", " The Bowl's Rim", " Broken Arrow", " Broken Bow", " The Broken Cane", " The Broken Drum", " The Broken Fist", " The &nbsp;Broken Kender Arms", " Bucket", " The Buffalo's Beard", " The Bull and Finch", " The Bullet and Barrel", " The Bullseye Tavern", " Bunch o' Grapes", " The Bunk House", " Burly Beholder", " Burning Corpse", " The Buxom Wench", " The Cafe of Broken Dreams", " The &nbsp;Candi Bar", " The Cardinal's Error", " Caritas ", " The Cat and Fiddle", " The Cat and Mouse", " The Cat's Claw Inn", " Cavern", " The Cesspit", " The Chicken's Rest", " Chipped Chalice", " Citadel ", " Clan of the White Wind", " Cloak and Dagger", " The Cloven Hoof", " Inn of Clowns", " The Cock and Hen", " Colored Noun", " The Come on Inn", " The Cow's Horn", " The Creative Marquee", " The Creative Marquis", " Crippled Griffon", " Crazy Cleric", " Crazy Monk", " Crimson Chord", " Crooked Corner", " The Crossed Daggers", " The Crossed Swords", " The Crow's Heart", " The Crow's Nest", " The Cup and Mug", " The Dancing Elephant", " Dancing Giant", " Dancing Kobold", " The Dancing Pig", " Darkroot", " Dave's Hideously Dangerous Animal Emporium", " Days End Inn", " Dead Elf", " Dead Eye Moon", " The Dead Fish", " Dead Kings", " The Dead Man's Bluff", " Dead Mime", " Dead Parrot Inn", " The Deadly Minister's Hall", " Deepwater", " The Demon and Hawk", " Derrin's Divine Brews", " Desert’s Jewel", " The Devil and Deva", " The Dew Drop Inn", " The Dirty Dog", " The Dirty Dwarf", " The Dirty Laundry", " Divine Delights", " The Doan Goe Inn", " The Doctoris Inn", " The Dog and Thrush", " The Dog's Bollocks", " Donnybrook", " The &nbsp;Dracolich", " The Dragon and Flagon", " The &nbsp;Dragon Skulls", " The Dragons's Bar", " The Dragon's Breath", " The Dragon's Claw", " The Dragon's Codpiece", " The Dragon's Hoarde", " Dragon’s Jaw", " Dragon's Lair", " Dragon's Spittoon", " Dreaming Dragon", " The Dreaming Elf", " Driest Bone", " Drift On Inn", " Drinker", " Drinking Druid", " The Drinking Ogre", " Dripping Man ", " The Drowned Rat", " The Drunken Boar", " The Drunken Cow ", " Drunken Demon", " Drunken Dog", " Drunken Dragon", " Drunken Dwarf", " Drunken Mephit", " Drunken Monkey", " The &nbsp;Drunken Owlbear", " The Drunken Sailor", " Drunken Stogg", " Dry Stout", " Duke's", " The &nbsp;Dungeon and Dragon", " The Duplicate Chant", " Durien's Dazzlin' Darlins", " The Dustbin of Death", " The Dwarf's Axe", " The Dwarf's Keg", " Dwarven Egg", " Eagle", " Easing the Badger", " Inn of the Eastern Delights", " Ebon Flow", " Effervescence", " The Efreeti's Wish", " Eights and Aces", " The Elegant Book", " The Elegant Chant Hall", " The Elegant Prayer Tavern", " Elf’s Ears", " The Elf's Ultimatum", " Elswer's ", " Elven Nations", " Empty Pocket", " End of the Road", " The End of the World", " The Ent Tent", " Ergon’t Taps", " Erics Erotic Dancers", " The Tavern of Ever-full Jugs", " The Eye of the Beholder", " Eye of the Specter", " The Fallen Man", " Farlanghn's Rest", " The Fat Dragon Inn", " Fat Jack's Blues & Grub", " The Fawning Orc", " Feetal's Gizzard", " The Fermented Drunkard", " The Fiery Clap", " The Fig and Gristle", " Fire Mountain Brewery", " Fired Demon", " Fireplace", " The Fisherman's Friend", " Flabby Troll", " The Flame", " The Flaming Snake", " The Flaming Squirrel", " The Flask and Sword", " Flying Fish", " Flying Monk Tavern", " Friends of the Queen", " Forester's", " Foresthome Rest", " Inn of Forsaken Souls", " The Fox and Hound", " The Fox Hole", " The Fox's Tail", " Frog and Duck", " Frog and Peach", " Frogleg Inn", " Frogs Eggs ", " Frost Bite", " Frosted Flagon", " The Frosty Mug", " The Frozen Axe", " The Full Bottle Inn", " The Full Moon Tavern", " The Full Tankard", " Fumbling Ogre", " The Furious Llama", " The Gaff and Slasher", " Geezul's Place", " The Gelded Ranger", " The Giant's Nose", " Gina’s", " Glaring Goblin", " The Gnoll's Belly", " The Goat's Blood", " The Goat's Head", " Gob's ", " Goblins Armpit", " The Golden Chain", " The Golden Dragon Inn", " The Golden Grain", " The Golden Gryphon", " Golden Hammer", " The Golden Lady", " Golden Perch", " The Golden Schooner", " The Golden Stool", " The Good Night Inn", " Gory's Tavern", " The Gray Wizard", " The Great Black Axe", " The Greasy Squeal", " The Inn of the Great Arm", " The &nbsp;Green Dragon", " The Green Griffon", " The Green Man", " Greyhound", " Grig’s Fiddle", " Grik’s Bar and Billiards", " The Grimy Cauldron", " Gritty McDuff's", " The Grizzly Cave", " Grobo's Grotto", " Grog Barrel", " The Grumbling Dwarf", " The &nbsp;Guest's Dormitory", " Guinea Pig", " Guts ‘n Glory", " The Gutted Pig", " Halflings' Revenge", " The &nbsp;Half-way Inn", " The Hall of Narwhals", " Hammer and Anvil", " Anvil Hammer", " The Hamster's Folly", " Hanging Cat", " Hanging Man", " Happy Dwarf", " The Happy Harpy Tavern", " The Happy Hooker", " Happy Lich", " Happy Orc ", " Happy Puppy", " Happy Saturday's", " Happyfeet ", " Harlot’s Galleon", " Harpoon Louie's", " The Harpy's Hideaway", " Harvester’s Gate", " Hatchet Jack's", " Haudhla's", " Head On Inn", " Hearthstone Arms", " The Heart of Oak", " Heaves", " The Helix", " The Hen and Apple", " Herald’s Rest ", " Here's Sin in Your Eye", " Hide Away", " Inn of the Highlighted Eye", " Hillshire Farm", " Hilltop Hideaway", " The Hobbit's Armpit", " The Hobgoblin's Fist", " Hole in the Wall", " The Honest Barrister", " Hops Skip & Jump", " The Horn and Haunch", " The Horn and Hounds", " The Horny Halfling", " The Horse and Hound", " Horwrath's Haven", " House of Cards", " The Hungry Tree", " I Can't Believe It's Not Stolen", " Icarus Descending", " Ice Dragon House", " The Imps Intestine", " Indigo Incubus", " The Inn", " Inn of Clowns", " The Inn of the Eagles", " Inn of the Welcome Wench", " Inter-planetary House of Spam", " The Iron Fist", " Ivy Bush", " The Jade Terrorist", " Jane & Tonnig’s ", " Joe's", " The Joker's Maniacal Frogleg and Nosewart Cafe", " Just Ale ", " Karnov's Bar and Grill", " Kettles Inn", " The Khaki Garter", " Kibbles n' Bits' Inn", " The King's Coin", " The King's Rest", " The King's Spellbook", " The King's Throne", " The Klatchian's Head", " The Knife in the Back", " The Knight's Tournament", " Knotted Beard", " Knyte Lyfe ", " The Kraken", " Kraken’s Throat", " Kraun's", " Krazy Kobold", " The Labyrinth", " L’auberge du cochon siffleur ", " The Lascivious Fairy", " Last Book ", " Last Call ", " Last Chance Inn", " Last Port Tavern", " The Laughing Cat", " The Laughing Cow", " Laughing Dragon", " The Laughing Earl", " The Laughing Fox", " The Laughing Judge", " The Laughing Minotaur", " Laurence's Mug-house", " The Lazy Lamprey", " Lazy Oak", " Leaping Lizardman", " The Lecherous Virgin", " Liar’s Lye", " Library ", " Lich’s Tomb ", " Lion and Lantern", " The Lion's Den", " The Lonely Haystack", " Lonely Unicorn", " The Inn of the Lonely Wanderer", " Looter's ", " The Lost Wayfarer", " The Lotus", " Lunar Night", " The &nbsp;Mad Fiddler", " Maggot's Rest", " Malenthiyas Hearth", " The Mangy Dog", " The Manicured Mouse", " The &nbsp;[see The Nicked Bits below} Marbled Lady", " Marty’s Tavern", " The Master and Aubergine", " Mead Market", " The Mended Drum", " Mermaid’s Flagon ", " The Mermaid's Smile", " The Merry Wizard", " Millway’s", " Momma's", " The Monk and Eggplant", " The Mountain Home Inn", " The Mousehole", " The Mug o' Ale", " The Mulled Apple", " The Murdered Priest", " Musty Moldan's Mighty Morsels", " The Nag's Head", " The Nanny's Arms", " Naughty Damsel", " The New Cup", " The New Sword Hall", " The &nbsp;[see The Marbled Lady above] Nicked Bits", " Night Candle Inn", " Nomadic Revery", " Nonnovyer Buisiness", " The Noisy Bed Inn", " Inn of the Northern Road", " Nothing's Free House", " Nymph’s Grove Tavern", " The Oarhouse", " The Octopus Club", " Oiled Spleen", " The Ol' Bacon and Eggs", " Old Flying Penguin", " The Old Lantern", " The Old Man and the Smee", " Old Rubin's", " The Olde Fox Decieved", " One-eyed Jack’s", " The One-legged Man", " The Only Bar in the Multiverse Without a Convenient Back Door", " The Only Port in a Storm Inn", " The &nbsp;Open Book", " Old Grant's Ale-house", " The Orange Ogre", " Orc's Armpit", " Orc's Head Inn", " The &nbsp;Orc's Toenail", " Orc’s Pride", " The Organ and Poinsettia", " Over the Wall ", " The Paladin and Angel", " Pay Up Front", " Peacock Alley", " The Peddler and Cleric", " The Perfumed 'Possum", " Pig and Pie", " The &nbsp;Pig and Whistle", " The Pink Dragon", " Pink Lady Inn", " The Pipe and Tobacco", " Pistol & Whip", " Plaid Chameleon", " The Plastered Imbecile", " The Playful Party Place", " The Pleasure Palace", " The Port in a Storm", " The Pot Belly", " The &nbsp;Prancing Pony", " Pub-Pub", " Puke Bucket", " The Priest and Horse", " The Puking Unicorn", " Punchin’ Pete’s Palace", " The Purple Bucket", " Purple Penguin Pub", " The Puzzle and Egg", " Queens Head ", " The Quene's Hed", " Quincy's", " Raging Dire Cow", " The Raging Flea", " The Rain Cloud", " The Rain Song", " The Rampaging Rabbit", " The Rampant Dragon", " Ram’s Horn", " Ram's Lord's Tavern", " The Randy Stoat", " The Ranger's Lookout", " Rasvi & Vijay's Stop and Eat", " The Rats Nest", " The Razorback Inn", " Realm’s Tavern", " Red Barrel Brewery", " Red Crow", " Red Dragon", " The Red Dwarf", " The Red Lantern", " Red Rogue", " The Red Sky Inn", " The Refuge from the Storm", " Rick’s", " Rifle and Whip", " Ripped Kitty", " Road Kill Café", " Road to Araby", " Roadwarden’s Rest", " The Roamer's Pillow", " The Robber's Inn", " Rock Rock Rock ", " The Rolling Meadows", " The Rooster and Spheres", " The Rose and Crown", " Inn of the Rose Gem", " The Rotgut Room", " Rouge Rogue ", " Royal Pockets", " The Ruby Blade", " The Ruby Lips", " The Rusty Blade", " Rusty Grog ", " The Rusty Justicar", " Rusty Nail", " Rusty Vampire", " The Safe Haven", " The &nbsp;Safe House", " The Sahuagen and Lady", " The Sailor's Delight", " The Salty Dog", " Saltsail’s", " The Satyr and Stiletto", " The Sauce Bucket", " Inn Scheister's Casino", " Sea Barrel", " The Sea Dog", " Seabreeze Inn", " Seatin' 'N Eatin'", " Seven Priests", " Severed Arms", " The Sexist Pig", " Screaming Demon", " The Shallow Swamp", " The Shining Gem", " The Ship's Wheel", " The Shipyard", " Short Neck Clam Town Inn and Tavern", " The Shot in the Dark", " The Sign of the Cringing Eunuch", " The Sign of the Golden Orange", " The Sign of the Jester", " Sign of the Northward Gull", " Sign of the Sign ", " The Sign of the Talon", " The Silver Axe", " The &nbsp;Silver Cypher", " The Silver Oak Inn", " The Silver Snail", " The Singing Boar", " Site of the Harvest", " Six Flags over Mead", " The &nbsp;Skull-Dragon Inn", " Slade's", " Slap and Tickle", " Slaughtered Cabbage", " The &nbsp;Slaughtered Lamb", " Sleep Here", " The Sleeping Demon", " The Sleepy Halfling", " The Slippery Eel", " The Sloppy Salamander", " The Slugfest", " The Slumbering Serpent", " The Smiling Orc", " The Smithy's Armpit", " The Snake Pit", " The Snake's Foot", " Snoring Troll", " The Solar Night", " The Song Bird", " Sottish Gnome", " Spend the Knight Inn", " Spit and the Fire", " Splintered Ego Tavern", " The Spread-eagled Bugbear", " The Squalid Claw", " Stalin’s Mother", " The Sterling Hook", " The Step Right Inn", " The Stinking Cow", " The Stinking Boar Inn", " The Stinky Tuna", " Stowaway", " Strange Brew", " The Strangled Cat", " Strong Drink", " Student's Hideaway ", " The Stumble on Inn", " Stump", " Stumpy Bob's House of Beer", " The Succubus", " The Sundown", " Supply in the Sky ", " Surly Goat", " The Svirfneblin's Ear", " The Swagger and Swivel", " Swashbuckler's Luck", " Sword's Sleep", " Tattered Crown", " Tavern", " Tavern of the Blushing Barmaids", " The Tavern of Ever-full Jugs", " Tavern on the Edge ", " Ted’s Beer and Bathhouse", " The Temple of Gruumsh", " Thank God It’s Open", " The Thiefs Knot", " Thirsty Vampire", " The Thirsty Whale", " This Ain't Your Daddy's Bar", " Three Eye Tavern", " The Three Gables", " Three Happy Mice", " Three Lions", " Three Sheets", " Three Swords", " The Thug and Succubus", " The Thunderbird Club", " Thurston's Brass Tankard", " Time’s Grave", " Tipsy McStagger’s", " The Tipsy Tarrasque", " Tipsy Troll Tavern", " The Tired Dog", " The Tired Traveller", " Toad & Turtle", " The &nbsp;Toss-It-Back", " The Tower Tavern", " The Townhouse", " Treadwell’s Beer and Sausage", " The Tree With Antlers", " Trog Scent Tavern", " Troll Breath Repository", " Troll Slayer Tavern", " Troll’s Head Inn", " The &nbsp;Trough", " Turkey Cove Sleep and Eat", " Twin Left Feet", " Twisted Boot", " The Two-Fingered Troll", " The Two Halfling's Inn", " Two Steeple Inn ", " The Ulcer", " Valabar's", " Van Smack's Tavern and Inn", " The Victorious Egret", " Vincent's Gin-Palace", " The Violet Vein", " The Violent Dog", " The Violent Priestess Hall", " The Virgin and Nightmare", " The Voluptuous Elf", " Vulgar Unicorn", " The Wagonhouse", " The Wagon Wheel", " The Wand and the Stein", " The Wandering Mistrel", " The Wandering Serpent Inn", " The Wanton Wench", " Warm Socks", " The Watchman's Light", " The Way Out Inn", " The Wayfarer's Home", " The Wayfarer's Lay", " The Weary Wanderer", " The Weasels Warble", " The Weigh Inn", " The Inn of the Well Worn Wench", " We're Not Hostel", " Wet Dog", " Whirling Dervish", " The Whisper and Boil", " Whistling Oyster", " The Whistling Pig", " The White Hand", " White Hart", " The White Roc Inn", " White Spear", " The White Tree", " Whiteblade’s Winery", " Whompers", " The Widowers Den", " The Wig and Thistle", " The Wild Chessman", " The Wild Side", " The Wiley Winnint", " Willowbee's Brewery", " The Willow", " The Wine of Heaven", " The Wistful Wyvern", " The Wizard's Tower", " Wobblin’ Will’s Wide World of Whiskey", " Wobbling Goblin", " Wobbly Boot", " The Wolfhound", " The Wolf's Den", " The Wooden Pillow", " The Woolystonecrafters Inn", " World of Wines", " World's End Inn", " Worn Cudgel", " The Wrong Bar", " The Yawning Dog", " The Yawing Portal", " Ye Granny’s Ale", " The Yellow Necromancer", " The Zoo"]; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; var BoxStyle = "&lt;div style='box-shadow: 3px 3px 2px #000000; font-family: Verdana; fontWeight: bold; text-align: center; vertical-align: middle; padding: 2px 2px; margin-top: 0.2em; border: 1px solid #000; border-radius: 8px 8px 8px 8px; color: #000000; background-color: #FFFFFF;'&gt;"; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; on('chat:message',function(msg){ &nbsp; &nbsp; &nbsp; &nbsp; if('api' !== msg.type){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; let cmds = msg.content.split(/\s+/); &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( cmds[0] === "!village" ){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var minpop = 100; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var maxpop = 500; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var pop = population(minpop,maxpop); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var mininn = 1; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var maxinn = 4; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var number_inns = inn_number(mininn, maxinn); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var inn_list = []; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inn_list = inn_names(number_inns); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; village(); &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( cmds[0] === "!town" ){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var minpop = 1000; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var maxpop = 10000; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var pop = population(minpop,maxpop); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var mininn = 4; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var maxinn = 10; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var number_inns = inn_number(mininn, maxinn); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var inn_list = []; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inn_list = inn_names(number_inns); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; town(); &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( cmds[0] === "!city" ){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var minpop = 10000; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var maxpop = 1000000; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var pop = population(minpop,maxpop); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var mininn = 10; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var maxinn = 15; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var number_inns = inn_number(mininn, maxinn); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var inn_list = []; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inn_list = inn_names(number_inns); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; city(); &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function population(){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var p = Math.floor(Math.random()*(maxpop-minpop+1))+minpop; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return p; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function inn_number(){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var inn_no = Math.floor(Math.random()*(maxinn-mininn+1))+mininn; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return inn_no; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function inn_names(){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var parts = number_inns; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var innnames = []; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var i; for (i = 0; i &lt; parts; i++) { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var n = _.sample(tavern); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var name = n; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var last_n = n; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while (name.length &lt; parts) { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; n = _.sample(tavern); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; name += n; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; last_n = n; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; innnames.push(name); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return innnames.join('&lt;br&gt;'); &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function village(){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( '!village' === cmds.shift()){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(cmds.length) { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let location=(cmds.shift()||'').toLowerCase(); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let townname = _.sample(_.keys(towns[location])); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sendChat('',`${BoxStyle} &lt;b&gt;Town name is: ${_.sample(towns[location])}&lt;/b&gt;&lt;br&gt;&lt;b&gt;Population is:&lt;/b&gt; ${pop}&lt;br&gt;Number of Inns: ${number_inns}&lt;br&gt;&lt;b&gt;Inn names:&lt;br&gt; ${inn_list}&lt;/b&gt;&lt;/div&gt;`); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sendChat('',`${BoxStyle} &lt;b&gt;No location&lt;/b&gt;. &nbsp;Available options are: &lt;b&gt;${_.keys(towns).join(', ')}&lt;/b&gt;&lt;/div&gt;`); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function town(){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( '!town' === cmds.shift()){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(cmds.length) { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let location=(cmds.shift()||'').toLowerCase(); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let townname = _.sample(_.keys(towns[location])); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sendChat('',`${BoxStyle} &lt;b&gt;Town name is: ${_.sample(towns[location])}&lt;/b&gt;&lt;br&gt;&lt;b&gt;Population is:&lt;/b&gt; ${pop}&lt;br&gt;Number of Inns: ${number_inns}&lt;br&gt;&lt;b&gt;Inn names:&lt;br&gt; ${inn_list}&lt;/b&gt;&lt;/div&gt;`); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sendChat('',`${BoxStyle} &lt;b&gt;No location&lt;/b&gt;. &nbsp;Available options are: &lt;b&gt;${_.keys(towns).join(', ')}&lt;/b&gt;&lt;/div&gt;`); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function city(){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( '!city' === cmds.shift()){ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(cmds.length) { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let location=(cmds.shift()||'').toLowerCase(); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let townname = _.sample(_.keys(towns[location])); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sendChat('',`${BoxStyle} &lt;b&gt;Town name is: ${_.sample(towns[location])}&lt;/b&gt;&lt;br&gt;&lt;b&gt;Population is:&lt;/b&gt; ${pop}&lt;br&gt;Number of Inns: ${number_inns}&lt;br&gt;&lt;b&gt;Inn names:&lt;br&gt; ${inn_list}&lt;/b&gt;&lt;/div&gt;`); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sendChat('',`${BoxStyle} &lt;b&gt;No location&lt;/b&gt;. &nbsp;Available options are: &lt;b&gt;${_.keys(towns).join(', ')}&lt;/b&gt;&lt;/div&gt;`); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; }); }()); &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; It will eventually be incorporated into my namegen script (I think). &nbsp;
1491067587
Paul S.
Sheet Author
API Scripter
Oh - and huge thanks to donjon's generator which inspired me to create this one. &nbsp;And to The Aaron who helped me on my namegen script.&nbsp;
1492561647

Edited 1492561740
Garrett K.
Marketplace Creator
Lets get crazy... In a dream world (which I've been slowly trying to compile through the use of rollable tables) you'd have a macro which would open a "menu" of buttons, each linking to a different random roll. The rolls would be recursive, and access tables of name parts to increase variation. Using a system like this, only information that has been requested will appear.. For example, pressing the initial button might generate this: [Towns] [Npcs] [Items] Each it's own button, pressing [Towns] would generate the following: [Building Names] [Governance Type] [Random Art] [Population] Each button rolls on its own table, then spits out the details on request. At least, that's in my ideal world :) I appreciate the work you're putting in! (Edit: of course include each of the things you listed as well, crime rate et al, once it's in a proper menu/button format, there's no reason to add EVERYTHING possible. I would love to see functionality like this extend into random generators of all types embedded right into a single macro button for easy use)
I use cityographer all the time to generate random towns. If you incorporated terrain generator API with Building tiles and then could random gen inhabitants for each building on the random table to pop up as kind of a note or something. You would have to get funky for walls though.&nbsp;
1494356689
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Cityographer is excellent for generating all of the businesses, residences and inhabitants of a city. It even does price lists. (Disclaimer - I'm the lead artist on Cityographer, so I'm biased)
1494446492

Edited 1494446527
Arthur B
API Scripter
I was using the Wizardawn (&nbsp;<a href="http://wizardawn.and-mag.com/tool_ftown.php" rel="nofollow">http://wizardawn.and-mag.com/tool_ftown.php</a> )&nbsp;creator for a while... It creates a random city/village/keep map based on geomorphic map tiles. In addition, it creates rulers, guards, shops with pricelists etc. And, if you want, even names and descriptions for every single citizen. If you quickly need a full-blown village - there it is just two clicks away.&nbsp;