Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //-----------------------------------------------------------------------------------
- // AI Dungeon script: Name generation and more
- // Scenario: https://play.aidungeon.io/scenario/8d530120-b99e-11ea-84b4-4d52634a4dbd
- //-----------------------------------------------------------------------------------
- Generate random names and descriptions with this script.
- Enter one of the commands below for the desired effect.
- E.g. if you write the following:
- My name is rnm_barb. My friend is rnf_elf. I have a sword called rni_weapon, and a horse called rn_horse.
- It will be replaced with something like this:
- My name is Sejr. My friend is Feawen. I have a sword called Thundershard, and a horse called Stormheart.
- or:
- My name is Grímnir. My friend is Lachril. I have a sword called Cryptic, and a horse called Bolt. / etc. It's random.
- It can also be used for descriptions, e.g.:
- rd_region
- Will be replaced with something like this:
- The region is mainly covered in rivers and has a calm climate. The region's landscape is cheerful; small, playful waterfalls, cascading rivers and gorgeous flower fields.
- or:
- The region is mainly covered in caves and has a stormy climate. The region's landscape is unsightly; fallen towers and ruins marks the entrance to many hidden caves and somber architecture.
- etc.
- Or spawn a demon encounter with renc_demon, which will be replaced by something like:
- A howl in the desolation, a burst of fire, and suddenly you are challenged by a foul soul of blood and fury.
- or:
- A shriek in the fog, a strike of a clock, and suddenly you are stared at by an immense creation of decay and blood.
- etc.
- //-----------------------------------------------------------------------------------
- Commands:
- NAMES:
- rnm_gen = Random Name Male, generic
- rnf_gen = Random Name Female, generic
- rnm_barb = Random Name Male, barbarian
- rnf_barb = Random Name Female, barbarian
- rnm_human = Random male name, anglo-saxon (think rohirrim)
- rnf_human = Random female name, anglo-saxon (think rohirrim)
- rnm_knight = Random Name Male, knight
- rnf_knight = Random Name Female, knight
- rnm_wizard = Random Name Male, wizard
- rnf_wizard = Random Name Female, wizard
- rnm_elf = Random Name Male, elf.
- rnf_elf = Random Name Female, elf.
- rn_dwarf = Random name, dwarf
- rn_demon = Random name, demon
- rnm_hobbit = Random Name Male, hobbit
- rnf_hobbit = Random Name Female, hobbit
- rnm_darkelf = Random Name Male, dark elf
- rnf_darkelf = Random female name, dark elf
- rnm_fairy = Random Name Male, fairy
- rnf_fairy = Random Name Female, fairy
- rnm_orc = Random Name Male, orc
- rnf_orc = Random Name Female, orc
- rnm_succubus = Random Name Male, succubus/incubus
- rnf_succubus = Random Name Female, succubus
- rnm_vampire = Random Name Male, vampire
- rnf_vampire = Random Name Female, vampire
- rn_nymph = Random name nymph (female by default)
- rn_dragon = Dragon name (inspired by Elder Scrolls)
- rn_nick = Random nickname
- rn_horse = Horse name
- rn_disease = Random magical disease name
- ITEMS:
- rni_weapon = Random Name Item, Weapon name
- PLACES:
- rnc_elf = Random Name City, Elf
- rnc_dwarf = Random Name City, Dwarf
- rnc_fantasy = Random Name City, generic fantasy
- rnc_barb = Random Name City, Barbarian
- rn_mountain = random mountain range name, needs more work.
- DESCRIPTIONS:
- rd_forest = Random description, forest
- rd_region = Random description of a region
- rd_cave_dwarf = Random description of dwarf cave/city
- rd_cave_dark = Random description of dark cave
- rd_castle = Random description of a castle
- rd_town = Random description of a town/village/city etc.
- ENCOUNTERS:
- renc_demon = spawn a random demon
- //-----------------------------------------------------------------------------------
- I have included DJORTNER's world entry script.
- //-----------------------------------------------------------------------------------
- // The script:
- //-----------------------------------------------------------------------------------
- const modifier = (text) => {
- let modifiedText = text
- var lowered = text.toLowerCase()
- modifiedText = generateRandName(modifiedText, lowered)
- modifiedText = generateRandForest(modifiedText, lowered)
- modifiedText = generateDiseaseName(modifiedText, lowered)
- const bDescribePopulation = false;
- const bGiveRegionAName = false;
- modifiedText = generateRegion(modifiedText, lowered, bDescribePopulation, bGiveRegionAName)
- modifiedText = generateCaveDescription(modifiedText, lowered)
- modifiedText = generateCastle(modifiedText, lowered)
- modifiedText = generateEncounter(modifiedText, lowered)
- const bDescriptiveTown = false
- modifiedText = generateTown(modifiedText, lowered, bDescriptiveTown)
- //worldEntryScript(modifiedText)
- modifiedText = worldEntryScript(modifiedText)
- // You must return an object with the text property defined.
- return {text: modifiedText}
- }
- //#region WorldInfo
- /*
- Credit to DJORTNER:
- https://pastebin.com/GJgjU1D1
- Commands:
- /addkey [key] [entry] - Adds key to World info.
- /editkey [key] [updated entry] - Allows you overwrite entry in world info.
- /delkey [key] - Deletes key in world info.
- /showkeys - Show keys, this will clear in next input
- /import [/export output] - Allows you to import world info JSON.
- /export - Allows you to export world info JSON.
- */
- function worldEntryScript(text) {
- let modifiedText = text
- var lowered = text.toLowerCase()
- if(state.command == null) {
- state.command = false
- }
- if(lowered.includes('/addkey')) {
- state.command = true
- text = cleanText(text, false)
- var str = text.substring(lowered.search('/addkey'))
- var keys = getKeys(str)
- var entry = getEntry(str, keys)
- if(keys == 'gengirl'|| keys == 'genboy') {
- const boyNames = JSON.parse('{"year": 2018, "names": ["Liam", "Noah", "William", "James", "Oliver", "Benjamin", "Elijah", "Lucas", "Mason", "Logan", "Alexander", "Ethan", "Jacob", "Michael", "Daniel", "Henry", "Jackson", "Sebastian", "Aiden", "Matthew", "Samuel", "David", "Joseph", "Carter", "Owen", "Wyatt", "John", "Jack", "Luke", "Jayden", "Dylan", "Grayson", "Levi", "Isaac", "Gabriel", "Julian", "Mateo", "Anthony", "Jaxon", "Lincoln", "Joshua", "Christopher", "Andrew", "Theodore", "Caleb", "Ryan", "Asher", "Nathan", "Thomas", "Leo", "Isaiah", "Charles", "Josiah", "Hudson", "Christian", "Hunter", "Connor", "Eli", "Ezra", "Aaron", "Landon", "Adrian", "Jonathan", "Nolan", "Jeremiah", "Easton", "Elias", "Colton", "Cameron", "Carson", "Robert", "Angel", "Maverick", "Nicholas", "Dominic", "Jaxson", "Greyson", "Adam", "Ian", "Austin", "Santiago", "Jordan", "Cooper", "Brayden", "Roman", "Evan", "Ezekiel", "Xavier", "Jose", "Jace", "Jameson", "Leonardo", "Bryson", "Axel", "Everett", "Parker", "Kayden", "Miles", "Sawyer", "Jason", "Declan", "Weston", "Micah", "Ayden", "Wesley", "Luca", "Vincent", "Damian", "Zachary", "Silas", "Gavin", "Chase", "Kai", "Emmett", "Harrison", "Nathaniel", "Kingston", "Cole", "Tyler", "Bennett", "Bentley", "Ryker", "Tristan", "Brandon", "Kevin", "Luis", "George", "Ashton", "Rowan", "Braxton", "Ryder", "Gael", "Ivan", "Diego", "Maxwell", "Max", "Carlos", "Kaiden", "Juan", "Maddox", "Justin", "Waylon", "Calvin", "Giovanni", "Jonah", "Abel", "Jayce", "Jesus", "Amir", "King", "Beau", "Camden", "Alex", "Jasper", "Malachi", "Brody", "Jude", "Blake", "Emmanuel", "Eric", "Brooks", "Elliot", "Antonio", "Abraham", "Timothy", "Finn", "Rhett", "Elliott", "Edward", "August", "Xander", "Alan", "Dean", "Lorenzo", "Bryce", "Karter", "Victor", "Milo", "Miguel", "Hayden", "Graham", "Grant", "Zion", "Tucker", "Jesse", "Zayden", "Joel", "Richard", "Patrick", "Emiliano", "Avery", "Nicolas", "Brantley", "Dawson", "Myles", "Matteo", "River", "Steven", "Thiago", "Zane", "Matias", "Judah", "Messiah", "Jeremy", "Preston", "Oscar", "Kaleb", "Alejandro", "Marcus", "Mark", "Peter", "Maximus", "Barrett", "Jax", "Andres", "Holden", "Legend", "Charlie", "Knox", "Kaden", "Paxton", "Kyrie", "Kyle", "Griffin", "Josue", "Kenneth", "Beckett", "Enzo", "Adriel", "Arthur", "Felix", "Bryan", "Lukas", "Paul", "Brian", "Colt", "Caden", "Leon", "Archer", "Omar", "Israel", "Aidan", "Theo", "Javier", "Remington", "Jaden", "Bradley", "Emilio", "Colin", "Riley", "Cayden", "Phoenix", "Clayton", "Simon", "Ace", "Nash", "Derek", "Rafael", "Zander", "Brady", "Jorge", "Jake", "Louis", "Damien", "Karson", "Walker", "Maximiliano", "Amari", "Sean", "Chance", "Walter", "Martin", "Finley", "Andre", "Tobias", "Cash", "Corbin", "Arlo", "Iker", "Erick", "Emerson", "Gunner", "Cody", "Stephen", "Francisco", "Killian", "Dallas", "Reid", "Manuel", "Lane", "Atlas", "Rylan", "Jensen", "Ronan", "Beckham", "Daxton", "Anderson", "Kameron", "Raymond", "Orion", "Cristian", "Tanner", "Kyler", "Jett", "Cohen", "Ricardo", "Spencer", "Gideon", "Ali", "Fernando", "Jaiden", "Titus", "Travis", "Bodhi", "Eduardo", "Dante", "Ellis", "Prince", "Kane", "Luka", "Kash", "Hendrix", "Desmond", "Donovan", "Mario", "Atticus", "Cruz", "Garrett", "Hector", "Angelo", "Jeffrey", "Edwin", "Cesar", "Zayn", "Devin", "Conor", "Warren", "Odin", "Jayceon", "Romeo", "Julius", "Jaylen", "Hayes", "Kayson", "Muhammad", "Jaxton", "Joaquin", "Caiden", "Dakota", "Major", "Keegan", "Sergio", "Marshall", "Johnny", "Kade", "Edgar", "Leonel", "Ismael", "Marco", "Tyson", "Wade", "Collin", "Troy", "Nasir", "Conner", "Adonis", "Jared", "Rory", "Andy", "Jase", "Lennox", "Shane", "Malik", "Ari", "Reed", "Seth", "Clark", "Erik", "Lawson", "Trevor", "Gage", "Nico", "Malakai", "Quinn", "Cade", "Johnathan", "Sullivan", "Solomon", "Cyrus", "Fabian", "Pedro", "Frank", "Shawn", "Malcolm", "Khalil", "Nehemiah", "Dalton", "Mathias", "Jay", "Ibrahim", "Peyton", "Winston", "Kason", "Zayne", "Noel", "Princeton", "Matthias", "Gregory", "Sterling", "Dominick", "Elian", "Grady", "Russell", "Finnegan", "Ruben", "Gianni", "Porter", "Kendrick", "Leland", "Pablo", "Allen", "Hugo", "Raiden", "Kolton", "Remy", "Ezequiel", "Damon", "Emanuel", "Zaiden", "Otto", "Bowen", "Marcos", "Abram", "Kasen", "Franklin", "Royce", "Jonas", "Sage", "Philip", "Esteban", "Drake", "Kashton", "Roberto", "Harvey", "Alexis", "Kian", "Jamison", "Maximilian", "Adan", "Milan", "Phillip", "Albert", "Dax", "Mohamed", "Ronin", "Kamden", "Hank", "Memphis", "Oakley", "Augustus", "Drew", "Moises", "Armani", "Rhys", "Benson", "Jayson", "Kyson", "Braylen", "Corey", "Gunnar", "Omari", "Alonzo", "Landen", "Armando", "Derrick", "Dexter", "Enrique", "Bruce", "Nikolai", "Francis", "Rocco", "Kairo", "Royal", "Zachariah", "Arjun", "Deacon", "Skyler", "Eden", "Alijah", "Rowen", "Pierce", "Uriel", "Ronald", "Luciano", "Tate", "Frederick", "Kieran", "Lawrence", "Moses", "Rodrigo", "Brycen", "Leonidas", "Nixon", "Keith", "Chandler", "Case", "Davis", "Asa", "Darius", "Isaias", "Aden", "Jaime", "Landyn", "Raul", "Niko", "Trenton", "Apollo", "Cairo", "Izaiah", "Scott", "Dorian", "Julio", "Wilder", "Santino", "Dustin", "Donald", "Raphael", "Saul", "Taylor", "Ayaan", "Duke", "Ryland", "Tatum", "Ahmed", "Moshe", "Edison", "Emmitt", "Cannon", "Alec", "Danny", "Keaton", "Roy", "Conrad", "Roland", "Quentin", "Lewis", "Samson", "Brock", "Kylan", "Cason", "Ahmad", "Jalen", "Nikolas", "Braylon", "Kamari", "Dennis", "Callum", "Justice", "Soren", "Rayan", "Aarav", "Gerardo", "Ares", "Brendan", "Jamari", "Kaison", "Yusuf", "Issac", "Jasiah", "Callen", "Forrest", "Makai", "Crew", "Kobe", "Bo", "Julien", "Mathew", "Braden", "Johan", "Marvin", "Zaid", "Stetson", "Casey", "Ty", "Ariel", "Tony", "Zain", "Callan", "Cullen", "Sincere", "Uriah", "Dillon", "Kannon", "Colby", "Axton", "Cassius", "Quinton", "Mekhi", "Reece", "Alessandro", "Jerry", "Mauricio", "Sam", "Trey", "Mohammad", "Alberto", "Gustavo", "Arturo", "Fletcher", "Marcelo", "Abdiel", "Hamza", "Alfredo", "Chris", "Finnley", "Curtis", "Kellan", "Quincy", "Kase", "Harry", "Kyree", "Wilson", "Cayson", "Hezekiah", "Kohen", "Neil", "Mohammed", "Raylan", "Kaysen", "Lucca", "Sylas", "Mack", "Leonard", "Lionel", "Ford", "Roger", "Rex", "Alden", "Boston", "Colson", "Briggs", "Zeke", "Dariel", "Kingsley", "Valentino", "Jamir", "Salvador", "Vihaan", "Mitchell", "Lance", "Lucian", "Darren", "Jimmy", "Alvin", "Amos", "Tripp", "Zaire", "Layton", "Reese", "Casen", "Colten", "Brennan", "Korbin", "Sonny", "Bruno", "Orlando", "Devon", "Huxley", "Boone", "Maurice", "Nelson", "Douglas", "Randy", "Gary", "Lennon", "Titan", "Denver", "Jaziel", "Noe", "Jefferson", "Ricky", "Lochlan", "Rayden", "Bryant", "Langston", "Lachlan", "Clay", "Abdullah", "Lee", "Baylor", "Leandro", "Ben", "Kareem", "Layne", "Joe", "Crosby", "Deandre", "Demetrius", "Kellen", "Carl", "Jakob", "Ridge", "Bronson", "Jedidiah", "Rohan", "Larry", "Stanley", "Tomas", "Shiloh", "Thaddeus", "Watson", "Baker", "Vicente", "Koda", "Jagger", "Nathanael", "Carmelo", "Shepherd", "Graysen", "Melvin", "Ernesto", "Jamie", "Yosef", "Clyde", "Eddie", "Tristen", "Grey", "Ray", "Tommy", "Samir", "Ramon", "Santana", "Kristian", "Marcel", "Wells", "Zyaire", "Brecken", "Byron", "Otis", "Reyansh", "Axl", "Joey", "Trace", "Morgan", "Musa", "Harlan", "Enoch", "Henrik", "Kristopher", "Talon", "Rey", "Guillermo", "Houston", "Jon", "Vincenzo", "Dane", "Terry", "Azariah", "Castiel", "Kye", "Augustine", "Zechariah", "Joziah", "Kamryn", "Hassan", "Jamal", "Chaim", "Bodie", "Emery", "Branson", "Jaxtyn", "Kole", "Wayne", "Aryan", "Alonso", "Brixton", "Madden", "Allan", "Flynn", "Jaxen", "Harley", "Magnus", "Sutton", "Dash", "Anders", "Westley", "Brett", "Emory", "Felipe", "Yousef", "Jadiel", "Mordechai", "Dominik", "Junior", "Eliseo", "Fisher", "Harold", "Jaxxon", "Kamdyn", "Maximo", "Caspian", "Kelvin", "Damari", "Fox", "Trent", "Hugh", "Briar", "Franco", "Keanu", "Terrance", "Yahir", "Ameer", "Kaiser", "Thatcher", "Ishaan", "Koa", "Merrick", "Coen", "Rodney", "Brayan", "London", "Rudy", "Gordon", "Bobby", "Aron", "Marc", "Van", "Anakin", "Canaan", "Dario", "Reginald", "Westin", "Darian", "Ledger", "Leighton", "Maxton", "Tadeo", "Valentin", "Aldo", "Khalid", "Nickolas", "Toby", "Dayton", "Jacoby", "Billy", "Gatlin", "Elisha", "Jabari", "Jermaine", "Alvaro", "Marlon", "Mayson", "Blaze", "Jeffery", "Kace", "Braydon", "Achilles", "Brysen", "Saint", "Xzavier", "Aydin", "Eugene", "Adrien", "Cain", "Kylo", "Nova", "Onyx", "Arian", "Bjorn", "Jerome", "Miller", "Alfred", "Kenzo", "Kyng", "Leroy", "Maison", "Jordy", "Stefan", "Wallace", "Benicio", "Kendall", "Zayd", "Blaine", "Tristian", "Anson", "Gannon", "Jeremias", "Marley", "Ronnie", "Dangelo", "Kody", "Will", "Bentlee", "Gerald", "Salvatore", "Turner", "Chad", "Misael", "Mustafa", "Konnor", "Maxim", "Rogelio", "Zakai", "Cory", "Judson", "Brentley", "Darwin", "Louie", "Ulises", "Dakari", "Rocky", "Wesson", "Alfonso", "Payton", "Dwayne", "Juelz", "Duncan", "Keagan", "Deshawn", "Bode", "Bridger", "Skylar", "Brodie", "Landry", "Avi", "Keenan", "Reuben", "Jaxx", "Rene", "Yehuda", "Imran", "Yael", "Alexzander", "Willie", "Cristiano", "Heath", "Lyric", "Davion", "Elon", "Karsyn", "Krew", "Jairo", "Maddux", "Ephraim", "Ignacio", "Vivaan", "Aries", "Vance", "Boden", "Lyle", "Ralph", "Reign", "Camilo", "Draven", "Terrence", "Idris", "Ira", "Javion", "Jericho", "Khari", "Marcellus", "Creed", "Shepard", "Terrell", "Ahmir", "Camdyn", "Cedric", "Howard", "Jad", "Zahir", "Harper", "Justus", "Forest", "Gibson", "Zev", "Alaric", "Decker", "Ernest", "Jesiah", "Torin", "Benedict", "Bowie", "Deangelo", "Genesis", "Harlem", "Kalel", "Kylen", "Bishop", "Immanuel", "Lian", "Zavier", "Archie", "Davian", "Gus", "Kabir", "Korbyn", "Randall", "Benton", "Coleman", "Markus"]}')
- const girlNames = JSON.parse('{"year": 2018, "names": ["Emma", "Olivia", "Ava", "Isabella", "Sophia", "Charlotte", "Mia", "Amelia", "Harper", "Evelyn", "Abigail", "Emily", "Elizabeth", "Mila", "Ella", "Avery", "Sofia", "Camila", "Aria", "Scarlett", "Victoria", "Madison", "Luna", "Grace", "Chloe", "Penelope", "Layla", "Riley", "Zoey", "Nora", "Lily", "Eleanor", "Hannah", "Lillian", "Addison", "Aubrey", "Ellie", "Stella", "Natalie", "Zoe", "Leah", "Hazel", "Violet", "Aurora", "Savannah", "Audrey", "Brooklyn", "Bella", "Claire", "Skylar", "Lucy", "Paisley", "Everly", "Anna", "Caroline", "Nova", "Genesis", "Emilia", "Kennedy", "Samantha", "Maya", "Willow", "Kinsley", "Naomi", "Aaliyah", "Elena", "Sarah", "Ariana", "Allison", "Gabriella", "Alice", "Madelyn", "Cora", "Ruby", "Eva", "Serenity", "Autumn", "Adeline", "Hailey", "Gianna", "Valentina", "Isla", "Eliana", "Quinn", "Nevaeh", "Ivy", "Sadie", "Piper", "Lydia", "Alexa", "Josephine", "Emery", "Julia", "Delilah", "Arianna", "Vivian", "Kaylee", "Sophie", "Brielle", "Madeline", "Peyton", "Rylee", "Clara", "Hadley", "Melanie", "Mackenzie", "Reagan", "Adalynn", "Liliana", "Aubree", "Jade", "Katherine", "Isabelle", "Natalia", "Raelynn", "Maria", "Athena", "Ximena", "Arya", "Leilani", "Taylor", "Faith", "Rose", "Kylie", "Alexandra", "Mary", "Margaret", "Lyla", "Ashley", "Amaya", "Eliza", "Brianna", "Bailey", "Andrea", "Khloe", "Jasmine", "Melody", "Iris", "Isabel", "Norah", "Annabelle", "Valeria", "Emerson", "Adalyn", "Ryleigh", "Eden", "Emersyn", "Anastasia", "Kayla", "Alyssa", "Juliana", "Charlie", "Esther", "Ariel", "Cecilia", "Valerie", "Alina", "Molly", "Reese", "Aliyah", "Lilly", "Parker", "Finley", "Morgan", "Sydney", "Jordyn", "Eloise", "Trinity", "Daisy", "Kimberly", "Lauren", "Genevieve", "Sara", "Arabella", "Harmony", "Elise", "Remi", "Teagan", "Alexis", "London", "Sloane", "Laila", "Lucia", "Diana", "Juliette", "Sienna", "Elliana", "Londyn", "Ayla", "Callie", "Gracie", "Josie", "Amara", "Jocelyn", "Daniela", "Everleigh", "Mya", "Rachel", "Summer", "Alana", "Brooke", "Alaina", "Mckenzie", "Catherine", "Amy", "Presley", "Journee", "Rosalie", "Ember", "Brynlee", "Rowan", "Joanna", "Paige", "Rebecca", "Ana", "Sawyer", "Mariah", "Nicole", "Brooklynn", "Payton", "Marley", "Fiona", "Georgia", "Lila", "Harley", "Adelyn", "Alivia", "Noelle", "Gemma", "Vanessa", "Journey", "Makayla", "Angelina", "Adaline", "Catalina", "Alayna", "Julianna", "Leila", "Lola", "Adriana", "June", "Juliet", "Jayla", "River", "Tessa", "Lia", "Dakota", "Delaney", "Selena", "Blakely", "Ada", "Camille", "Zara", "Malia", "Hope", "Samara", "Vera", "Mckenna", "Briella", "Izabella", "Hayden", "Raegan", "Michelle", "Angela", "Ruth", "Freya", "Kamila", "Vivienne", "Aspen", "Olive", "Kendall", "Elaina", "Thea", "Kali", "Destiny", "Amiyah", "Evangeline", "Cali", "Blake", "Elsie", "Juniper", "Alexandria", "Myla", "Ariella", "Kate", "Mariana", "Lilah", "Charlee", "Daleyza", "Nyla", "Jane", "Maggie", "Zuri", "Aniyah", "Lucille", "Leia", "Melissa", "Adelaide", "Amina", "Giselle", "Lena", "Camilla", "Miriam", "Millie", "Brynn", "Gabrielle", "Sage", "Annie", "Logan", "Lilliana", "Haven", "Jessica", "Kaia", "Magnolia", "Amira", "Adelynn", "Makenzie", "Stephanie", "Nina", "Phoebe", "Arielle", "Evie", "Lyric", "Alessandra", "Gabriela", "Paislee", "Raelyn", "Madilyn", "Paris", "Makenna", "Kinley", "Gracelyn", "Talia", "Maeve", "Rylie", "Kiara", "Evelynn", "Brinley", "Jacqueline", "Laura", "Gracelynn", "Lexi", "Ariah", "Fatima", "Jennifer", "Kehlani", "Alani", "Ariyah", "Luciana", "Allie", "Heidi", "Maci", "Phoenix", "Felicity", "Joy", "Kenzie", "Veronica", "Margot", "Addilyn", "Lana", "Cassidy", "Remington", "Saylor", "Ryan", "Keira", "Harlow", "Miranda", "Angel", "Amanda", "Daniella", "Royalty", "Gwendolyn", "Ophelia", "Heaven", "Jordan", "Madeleine", "Esmeralda", "Kira", "Miracle", "Elle", "Amari", "Danielle", "Daphne", "Willa", "Haley", "Gia", "Kaitlyn", "Oakley", "Kailani", "Winter", "Alicia", "Serena", "Nadia", "Aviana", "Demi", "Jada", "Braelynn", "Dylan", "Ainsley", "Alison", "Camryn", "Avianna", "Bianca", "Skyler", "Scarlet", "Maddison", "Nylah", "Sarai", "Regina", "Dahlia", "Nayeli", "Raven", "Helen", "Adrianna", "Averie", "Skye", "Kelsey", "Tatum", "Kensley", "Maliyah", "Erin", "Viviana", "Jenna", "Anaya", "Carolina", "Shelby", "Sabrina", "Mikayla", "Annalise", "Octavia", "Lennon", "Blair", "Carmen", "Yaretzi", "Kennedi", "Mabel", "Zariah", "Kyla", "Christina", "Selah", "Celeste", "Eve", "Mckinley", "Milani", "Frances", "Jimena", "Kylee", "Leighton", "Katie", "Aitana", "Kayleigh", "Sierra", "Kathryn", "Rosemary", "Jolene", "Alondra", "Elisa", "Helena", "Charleigh", "Hallie", "Lainey", "Avah", "Jazlyn", "Kamryn", "Mira", "Cheyenne", "Francesca", "Antonella", "Wren", "Chelsea", "Amber", "Emory", "Lorelei", "Nia", "Abby", "April", "Emelia", "Carter", "Aylin", "Cataleya", "Bethany", "Marlee", "Carly", "Kaylani", "Emely", "Liana", "Madelynn", "Cadence", "Matilda", "Sylvia", "Myra", "Fernanda", "Oaklyn", "Elianna", "Hattie", "Dayana", "Kendra", "Maisie", "Malaysia", "Kara", "Katelyn", "Maia", "Celine", "Cameron", "Renata", "Jayleen", "Charli", "Emmalyn", "Holly", "Azalea", "Leona", "Alejandra", "Bristol", "Collins", "Imani", "Meadow", "Alexia", "Edith", "Kaydence", "Leslie", "Lilith", "Kora", "Aisha", "Meredith", "Danna", "Wynter", "Emberly", "Julieta", "Michaela", "Alayah", "Jemma", "Reign", "Colette", "Kaliyah", "Elliott", "Johanna", "Remy", "Sutton", "Emmy", "Virginia", "Briana", "Oaklynn", "Adelina", "Everlee", "Megan", "Angelica", "Justice", "Mariam", "Khaleesi", "Macie", "Karsyn", "Alanna", "Aleah", "Mae", "Mallory", "Esme", "Skyla", "Madilynn", "Charley", "Allyson", "Hanna", "Shiloh", "Henley", "Macy", "Maryam", "Ivanna", "Ashlynn", "Lorelai", "Amora", "Ashlyn", "Sasha", "Baylee", "Beatrice", "Itzel", "Priscilla", "Marie", "Jayda", "Liberty", "Rory", "Alessia", "Alaia", "Janelle", "Kalani", "Gloria", "Sloan", "Dorothy", "Greta", "Julie", "Zahra", "Savanna", "Annabella", "Poppy", "Amalia", "Zaylee", "Cecelia", "Coraline", "Kimber", "Emmie", "Anne", "Karina", "Kassidy", "Kynlee", "Monroe", "Anahi", "Jaliyah", "Jazmin", "Maren", "Monica", "Siena", "Marilyn", "Reyna", "Kyra", "Lilian", "Jamie", "Melany", "Alaya", "Ariya", "Kelly", "Rosie", "Adley", "Dream", "Jaylah", "Laurel", "Jazmine", "Mina", "Karla", "Bailee", "Aubrie", "Katalina", "Melina", "Harlee", "Elliot", "Hayley", "Elaine", "Karen", "Dallas", "Irene", "Lylah", "Ivory", "Chaya", "Rosa", "Aleena", "Braelyn", "Nola", "Alma", "Leyla", "Pearl", "Addyson", "Roselyn", "Lacey", "Lennox", "Reina", "Aurelia", "Noa", "Janiyah", "Jessie", "Madisyn", "Saige", "Alia", "Tiana", "Astrid", "Cassandra", "Kyleigh", "Romina", "Stevie", "Haylee", "Zelda", "Lillie", "Aileen", "Brylee", "Eileen", "Yara", "Ensley", "Lauryn", "Giuliana", "Livia", "Anya", "Mikaela", "Palmer", "Lyra", "Mara", "Marina", "Kailey", "Liv", "Clementine", "Kenna", "Briar", "Emerie", "Galilea", "Tiffany", "Bonnie", "Elyse", "Cynthia", "Frida", "Kinslee", "Tatiana", "Joelle", "Armani", "Jolie", "Nalani", "Rayna", "Yareli", "Meghan", "Rebekah", "Addilynn", "Faye", "Zariyah", "Lea", "Aliza", "Julissa", "Lilyana", "Anika", "Kairi", "Aniya", "Noemi", "Angie", "Crystal", "Bridget", "Ari", "Davina", "Amelie", "Amirah", "Annika", "Elora", "Xiomara", "Linda", "Hana", "Laney", "Mercy", "Hadassah", "Madalyn", "Louisa", "Simone", "Kori", "Jillian", "Alena", "Malaya", "Miley", "Milan", "Sariyah", "Malani", "Clarissa", "Nala", "Princess", "Amani", "Analia", "Estella", "Milana", "Aya", "Chana", "Jayde", "Tenley", "Zaria", "Itzayana", "Penny", "Ailani", "Lara", "Aubriella", "Clare", "Lina", "Rhea", "Bria", "Thalia", "Keyla", "Haisley", "Ryann", "Addisyn", "Amaia", "Chanel", "Ellen", "Harmoni", "Aliana", "Tinsley", "Landry", "Paisleigh", "Lexie", "Myah", "Rylan", "Deborah", "Emilee", "Laylah", "Novalee", "Ellis", "Emmeline", "Avalynn", "Hadlee", "Legacy", "Braylee", "Elisabeth", "Kaylie", "Ansley", "Dior", "Paula", "Belen", "Corinne", "Maleah", "Martha", "Teresa", "Salma", "Louise", "Averi", "Lilianna", "Amiya", "Milena", "Royal", "Aubrielle", "Calliope", "Frankie", "Natasha", "Kamilah", "Meilani", "Raina", "Amayah", "Lailah", "Rayne", "Zaniyah", "Isabela", "Nathalie", "Miah", "Opal", "Kenia", "Azariah", "Hunter", "Tori", "Andi", "Keily", "Leanna", "Scarlette", "Jaelyn", "Saoirse", "Selene", "Dalary", "Lindsey", "Marianna", "Ramona", "Estelle", "Giovanna", "Holland", "Nancy", "Emmalynn", "Mylah", "Rosalee", "Sariah", "Zoie", "Blaire", "Lyanna", "Maxine", "Anais", "Dana", "Judith", "Kiera", "Jaelynn", "Noor", "Kai", "Adalee", "Oaklee", "Amaris", "Jaycee", "Belle", "Carolyn", "Della", "Karter", "Sky", "Treasure", "Vienna", "Jewel", "Rivka", "Rosalyn", "Alannah", "Ellianna", "Sunny", "Claudia", "Cara", "Hailee", "Estrella", "Harleigh", "Zhavia", "Alianna", "Brittany", "Jaylene", "Journi", "Marissa", "Mavis", "Iliana", "Jurnee", "Aislinn", "Alyson", "Elsa", "Kamiyah", "Kiana", "Lisa", "Arlette", "Kadence", "Kathleen", "Halle", "Erika", "Sylvie", "Adele", "Erica", "Veda", "Whitney", "Bexley", "Emmaline", "Guadalupe", "August", "Brynleigh", "Gwen", "Promise", "Alisson", "India", "Madalynn", "Paloma", "Patricia", "Samira", "Aliya", "Casey", "Jazlynn", "Paulina", "Dulce", "Kallie", "Perla", "Adrienne", "Alora", "Nataly", "Ayleen", "Christine", "Kaiya", "Ariadne", "Karlee", "Barbara", "Lillianna", "Raquel", "Saniyah", "Yamileth", "Arely", "Celia", "Heavenly", "Kaylin", "Marisol", "Marleigh", "Avalyn", "Berkley", "Kataleya", "Zainab", "Dani", "Egypt", "Joyce", "Kenley", "Annabel", "Kaelyn", "Etta", "Hadleigh", "Joselyn", "Luella", "Jaylee", "Zola", "Alisha", "Ezra", "Queen", "Amia", "Annalee", "Bellamy", "Paola", "Tinley", "Violeta", "Jenesis", "Arden", "Giana", "Wendy", "Ellison", "Florence", "Margo", "Naya", "Robin", "Sandra", "Scout", "Waverly", "Janessa", "Jayden", "Micah", "Novah", "Zora", "Ann", "Jana", "Taliyah", "Vada", "Giavanna", "Ingrid", "Valery", "Azaria", "Emmarie", "Esperanza", "Kailyn", "Aiyana", "Keilani", "Austyn", "Whitley", "Elina", "Kimora", "Maliah"]}')
- var name = ''
- if(keys == 'gengirl') {
- name = girlNames.names[Math.floor(Math.random() * (Object.keys(girlNames.names).length))]
- } else if (keys == 'genboy') {
- name = boyNames.names[Math.floor(Math.random() * (Object.keys(boyNames.names).length))]
- }
- keys = name.toLowerCase()
- }
- entry = entry.replace('[name]', name)
- addWorldEntry(keys, entry)
- } else if(lowered.includes('/editkey')) {
- state.command = true
- text = cleanText(text, false)
- var str = text.substring(lowered.search('/editkey'))
- var keys = getKeys(str)
- var entry = getEntry(str)
- var found = false
- for(var i = 0; i < worldEntries.length; i++) {
- if(worldEntries[i].keys == keys) {
- found = true
- updateWorldEntry(i, keys, entry)
- }
- }
- if(!found)
- state.message = 'Unable to find key(s) \'' + keys + '\''
- } else if(lowered.includes('/delkey')) {
- state.command = true
- text = cleanText(text, true)
- var str = text.substring(lowered.search('/delkey'))
- var keys = getKeys(str)
- var entry = getEntry(str)
- var found = false
- for(var i = 0; i < worldEntries.length; i++) {
- if(worldEntries[i].keys == keys) {
- found = true
- removeWorldEntry(i)
- }
- }
- if(!found)
- state.message = 'Unable to find key(s) \'' + keys + '\''
- } else if(lowered.includes('/showkeys')) {
- state.command = true
- msg = ''
- for(var i = 0; i < Object.keys(worldEntries).length; i++) {
- msg += worldEntries[i].keys + ': ' + worldEntries[i].entry + '\n'
- }
- state.message = msg
- } else if(lowered.includes('/import')) {
- state.command = true
- text = cleanText(text, false)
- var str = text.substring(lowered.search('/import') + 8)
- var obj = JSON.parse(str)
- var currKeys = []
- for(var i = 0; i < Object.keys(worldEntries).length; i++) {
- currKeys.push(worldEntries[i].keys)
- }
- for(var i = 0; i < Object.keys(obj).length; i++) {
- if(!currKeys.includes(obj[i].keys))
- addWorldEntry(obj[i].keys, obj[i].entry)
- }
- } else if(lowered.includes('/export')) {
- state.command = true
- state.message = JSON.stringify(worldEntries)
- } else {
- state.message = ''
- }
- if(state.command) {
- modifiedText = null
- state.command = false
- }
- // You must return an object with the text property defined.
- //return {text: modifiedText}
- return modifiedText
- }
- function getKeys(str) {
- var res = str.split(" ")
- if(res[1].startsWith(';')) {
- var temp = ''
- var foundFirst = false
- for(var i = 0; i < str.length; i++) {
- if(str.charAt(i) == ';') {
- if(!foundFirst) {
- i++
- foundFirst = true
- } else {
- i = str.length
- }
- }
- if(foundFirst && i != str.length) {
- temp += str.charAt(i)
- }
- }
- res[1] = temp
- }
- if(res[1].includes(',')) {
- var temp = res[1].split(',')
- res[1] = ''
- for(var i = 0; i < temp.length; i++) {
- if(i != temp.length - 1) {
- res[1] += temp[i] + ', '
- } else {
- res[1] += temp[i]
- }
- }
- }
- res[1] = res[1].toLowerCase()
- return res[1]
- }
- function getEntry(str, key) {
- var entry = ''
- if(key.includes(', ')) {
- var temp = key.split(',')
- key = ''
- for(var i = 0; i < temp.length; i++) {
- if(temp[i].startsWith(" ")) {
- temp[i] = temp[i].substring(1)
- }
- if(i != temp.length - 1) {
- key += temp[i] + ','
- } else {
- key += temp[i]
- }
- }
- }
- if(str.startsWith('/addkey ;') || str.startsWith('/editkey ;') || str.startsWith('/delkey ;')) {
- var found = false;
- for(var i = 0; i < str.length; i++) {
- if(str.charAt(i) == ';' && !found) {
- found = true
- } else if (str.charAt(i) == ';' && found) {
- entry = str.substring(i + 2);
- }
- }
- } else {
- entry = str.substring(str.toLowerCase().search(key) + key.length + 1)
- }
- if(entry.startsWith(" ")) {
- entry = entry.substring(1)
- }
- return entry
- }
- function cleanText(str, keepPeriods) {
- if(str.includes('> You say \"')) {
- str = str.substring(12, str.length - 2)
- } else if (str.includes('> You') && !keepPeriods) {
- if(str.charAt(str.length - 1) == '.') {
- str = str.substring(6, str.length - 2)
- }
- }
- return str
- }
- //#endregion
- function generateRandName(text, lowered) {
- if (!lowered.includes('rn_') && !lowered.includes('rni_') && !lowered.includes('rnc_') && !lowered.includes('rnf_') && !lowered.includes('rnm_')) {
- //console.log('Returning from gen')
- return text;
- }
- let name = ''
- const names = {
- // #GENERIC
- 'mNames' : ["Liam", "Noah", "William", "James", "Oliver", "Benjamin", "Elijah", "Lucas", "Mason", "Logan", "Alexander", "Ethan", "Jacob", "Michael", "Daniel", "Henry", "Jackson", "Sebastian", "Aiden", "Matthew", "Samuel", "David", "Joseph", "Carter", "Owen", "Wyatt", "John", "Jack", "Luke", "Jayden", "Dylan", "Grayson",
- "Levi", "Isaac", "Gabriel", "Julian", "Mateo", "Anthony", "Jaxon", "Lincoln", "Joshua", "Christopher", "Andrew", "Theodore", "Caleb", "Ryan", "Asher", "Nathan", "Thomas", "Leo", "Isaiah", "Charles", "Josiah", "Hudson", "Christian", "Hunter", "Connor", "Eli", "Ezra", "Aaron", "Landon", "Adrian", "Jonathan", "Nolan", "Jeremiah",
- "Easton", "Elias", "Colton", "Cameron", "Carson", "Robert", "Angel", "Maverick", "Nicholas", "Dominic", "Jaxson", "Greyson", "Adam", "Ian", "Austin", "Santiago", "Jordan", "Cooper", "Brayden", "Roman", "Evan", "Ezekiel", "Xavier", "Jose", "Jace", "Jameson", "Leonardo", "Bryson", "Axel", "Everett", "Parker", "Kayden", "Miles",
- "Sawyer", "Jason", "Declan", "Weston", "Micah", "Ayden", "Wesley", "Luca", "Vincent", "Damian", "Zachary", "Silas", "Gavin", "Chase", "Kai", "Emmett", "Harrison", "Nathaniel", "Kingston", "Cole", "Tyler", "Bennett", "Bentley", "Ryker", "Tristan", "Brandon", "Kevin", "Luis", "George", "Ashton", "Rowan", "Braxton", "Ryder",
- "Gael", "Ivan", "Diego", "Maxwell", "Max", "Carlos", "Kaiden", "Juan", "Maddox", "Justin", "Waylon", "Calvin", "Giovanni", "Jonah", "Abel", "Jayce", "Jesus", "Amir", "King", "Beau", "Camden", "Alex", "Jasper", "Malachi", "Brody", "Jude", "Blake", "Emmanuel", "Eric", "Brooks", "Elliot", "Antonio", "Abraham", "Timothy", "Finn",
- "Rhett", "Elliott", "Edward", "August", "Xander", "Alan", "Dean", "Lorenzo", "Bryce", "Karter", "Victor", "Milo", "Miguel", "Hayden", "Graham", "Grant", "Zion", "Tucker", "Jesse", "Zayden", "Joel", "Richard", "Patrick", "Emiliano", "Avery", "Nicolas", "Brantley", "Dawson", "Myles", "Matteo", "River", "Steven", "Thiago", "Zane",
- "Matias", "Judah", "Messiah", "Jeremy", "Preston", "Oscar", "Kaleb", "Alejandro", "Marcus", "Mark", "Peter", "Maximus", "Barrett", "Jax", "Andres", "Holden", "Legend", "Charlie", "Knox", "Kaden", "Paxton", "Kyrie", "Kyle", "Griffin", "Josue", "Kenneth", "Beckett", "Enzo", "Adriel", "Arthur", "Felix", "Bryan", "Lukas", "Paul",
- "Brian", "Colt", "Caden", "Leon", "Archer", "Omar", "Israel", "Aidan", "Theo", "Javier", "Remington", "Jaden", "Bradley", "Emilio", "Colin", "Riley", "Cayden", "Phoenix", "Clayton", "Simon", "Ace", "Nash", "Derek", "Rafael", "Zander", "Brady", "Jorge", "Jake", "Louis", "Damien", "Karson", "Walker", "Maximiliano", "Amari", "Sean",
- "Chance", "Walter", "Martin", "Finley", "Andre", "Tobias", "Cash", "Corbin", "Arlo", "Iker", "Erick", "Emerson", "Gunner", "Cody", "Stephen", "Francisco", "Killian", "Dallas", "Reid", "Manuel", "Lane", "Atlas", "Rylan", "Jensen", "Ronan", "Beckham", "Daxton", "Anderson", "Kameron", "Raymond", "Orion", "Cristian", "Tanner", "Kyler",
- "Jett", "Cohen", "Ricardo", "Spencer", "Gideon", "Ali", "Fernando", "Jaiden", "Titus", "Travis", "Bodhi", "Eduardo", "Dante", "Ellis", "Prince", "Kane", "Luka", "Kash", "Hendrix", "Desmond", "Donovan", "Mario", "Atticus", "Cruz", "Garrett", "Hector", "Angelo", "Jeffrey", "Edwin", "Cesar", "Zayn", "Devin", "Conor", "Warren", "Odin",
- "Jayceon", "Romeo", "Julius", "Jaylen", "Hayes", "Kayson", "Muhammad", "Jaxton", "Joaquin", "Caiden", "Dakota", "Major", "Keegan", "Sergio", "Marshall", "Johnny", "Kade", "Edgar", "Leonel", "Ismael", "Marco", "Tyson", "Wade", "Collin", "Troy", "Nasir", "Conner", "Adonis", "Jared", "Rory", "Andy", "Jase", "Lennox", "Shane", "Malik",
- "Ari", "Reed", "Seth", "Clark", "Erik", "Lawson", "Trevor", "Gage", "Nico", "Malakai", "Quinn", "Cade", "Johnathan", "Sullivan", "Solomon", "Cyrus", "Fabian", "Pedro", "Frank", "Shawn", "Malcolm", "Khalil", "Nehemiah", "Dalton", "Mathias", "Jay", "Ibrahim", "Peyton", "Winston", "Kason", "Zayne", "Noel", "Princeton", "Matthias",
- "Gregory", "Sterling", "Dominick", "Elian", "Grady", "Russell", "Finnegan", "Ruben", "Gianni", "Porter", "Kendrick", "Leland", "Pablo", "Allen", "Hugo", "Raiden", "Kolton", "Remy", "Ezequiel", "Damon", "Emanuel", "Zaiden", "Otto", "Bowen", "Marcos", "Abram", "Kasen", "Franklin", "Royce", "Jonas", "Sage", "Philip", "Esteban", "Drake",
- "Kashton", "Roberto", "Harvey", "Alexis", "Kian", "Jamison", "Maximilian", "Adan", "Milan", "Phillip", "Albert", "Dax", "Mohamed", "Ronin", "Kamden", "Hank", "Memphis", "Oakley", "Augustus", "Drew", "Moises", "Armani", "Rhys", "Benson", "Jayson", "Kyson", "Braylen", "Corey", "Gunnar", "Omari", "Alonzo", "Landen", "Armando", "Derrick",
- "Dexter", "Enrique", "Bruce", "Nikolai", "Francis", "Rocco", "Kairo", "Royal", "Zachariah", "Arjun", "Deacon", "Skyler", "Eden", "Alijah", "Rowen", "Pierce", "Uriel", "Ronald", "Luciano", "Tate", "Frederick", "Kieran", "Lawrence", "Moses", "Rodrigo", "Brycen", "Leonidas", "Nixon", "Keith", "Chandler", "Case", "Davis", "Asa", "Darius",
- "Isaias", "Aden", "Jaime", "Landyn", "Raul", "Niko", "Trenton", "Apollo", "Cairo", "Izaiah", "Scott", "Dorian", "Julio", "Wilder", "Santino", "Dustin", "Donald", "Raphael", "Saul", "Taylor", "Ayaan", "Duke", "Ryland", "Tatum", "Ahmed", "Moshe", "Edison", "Emmitt", "Cannon", "Alec", "Danny", "Keaton", "Roy", "Conrad", "Roland",
- "Quentin", "Lewis", "Samson", "Brock", "Kylan", "Cason", "Ahmad", "Jalen", "Nikolas", "Braylon", "Kamari", "Dennis", "Callum", "Justice", "Soren", "Rayan", "Aarav", "Gerardo", "Ares", "Brendan", "Jamari", "Kaison", "Yusuf", "Issac", "Jasiah", "Callen", "Forrest", "Makai", "Crew", "Kobe", "Bo", "Julien", "Mathew", "Braden", "Johan",
- "Marvin", "Zaid", "Stetson", "Casey", "Ty", "Ariel", "Tony", "Zain", "Callan", "Cullen", "Sincere", "Uriah", "Dillon", "Kannon", "Colby", "Axton", "Cassius", "Quinton", "Mekhi", "Reece", "Alessandro", "Jerry", "Mauricio", "Sam", "Trey", "Mohammad", "Alberto", "Gustavo", "Arturo", "Fletcher", "Marcelo", "Abdiel", "Hamza", "Alfredo",
- "Chris", "Finnley", "Curtis", "Kellan", "Quincy", "Kase", "Harry", "Kyree", "Wilson", "Cayson", "Hezekiah", "Kohen", "Neil", "Mohammed", "Raylan", "Kaysen", "Lucca", "Sylas", "Mack", "Leonard", "Lionel", "Ford", "Roger", "Rex", "Alden", "Boston", "Colson", "Briggs", "Zeke", "Dariel", "Kingsley", "Valentino", "Jamir", "Salvador",
- "Vihaan", "Mitchell", "Lance", "Lucian", "Darren", "Jimmy", "Alvin", "Amos", "Tripp", "Zaire", "Layton", "Reese", "Casen", "Colten", "Brennan", "Korbin", "Sonny", "Bruno", "Orlando", "Devon", "Huxley", "Boone", "Maurice", "Nelson", "Douglas", "Randy", "Gary", "Lennon", "Titan", "Denver", "Jaziel", "Noe", "Jefferson", "Ricky",
- "Lochlan", "Rayden", "Bryant", "Langston", "Lachlan", "Clay", "Abdullah", "Lee", "Baylor", "Leandro", "Ben", "Kareem", "Layne", "Joe", "Crosby", "Deandre", "Demetrius", "Kellen", "Carl", "Jakob", "Ridge", "Bronson", "Jedidiah", "Rohan", "Larry", "Stanley", "Tomas", "Shiloh", "Thaddeus", "Watson", "Baker", "Vicente", "Koda",
- "Jagger", "Nathanael", "Carmelo", "Shepherd", "Graysen", "Melvin", "Ernesto", "Jamie", "Yosef", "Clyde", "Eddie", "Tristen", "Grey", "Ray", "Tommy", "Samir", "Ramon", "Santana", "Kristian", "Marcel", "Wells", "Zyaire", "Brecken", "Byron", "Otis", "Reyansh", "Axl", "Joey", "Trace", "Morgan", "Musa", "Harlan", "Enoch", "Henrik",
- "Kristopher", "Talon", "Rey", "Guillermo", "Houston", "Jon", "Vincenzo", "Dane", "Terry", "Azariah", "Castiel", "Kye", "Augustine", "Zechariah", "Joziah", "Kamryn", "Hassan", "Jamal", "Chaim", "Bodie", "Emery", "Branson", "Jaxtyn", "Kole", "Wayne", "Aryan", "Alonso", "Brixton", "Madden", "Allan", "Flynn", "Jaxen", "Harley",
- "Magnus", "Sutton", "Dash", "Anders", "Westley", "Brett", "Emory", "Felipe", "Yousef", "Jadiel", "Mordechai", "Dominik", "Junior", "Eliseo", "Fisher", "Harold", "Jaxxon", "Kamdyn", "Maximo", "Caspian", "Kelvin", "Damari", "Fox", "Trent", "Hugh", "Briar", "Franco", "Keanu", "Terrance", "Yahir", "Ameer", "Kaiser", "Thatcher",
- "Ishaan", "Koa", "Merrick", "Coen", "Rodney", "Brayan", "London", "Rudy", "Gordon", "Bobby", "Aron", "Marc", "Van", "Anakin", "Canaan", "Dario", "Reginald", "Westin", "Darian", "Ledger", "Leighton", "Maxton", "Tadeo", "Valentin", "Aldo", "Khalid", "Nickolas", "Toby", "Dayton", "Jacoby", "Billy", "Gatlin", "Elisha", "Jabari",
- "Jermaine", "Alvaro", "Marlon", "Mayson", "Blaze", "Jeffery", "Kace", "Braydon", "Achilles", "Brysen", "Saint", "Xzavier", "Aydin", "Eugene", "Adrien", "Cain", "Kylo", "Nova", "Onyx", "Arian", "Bjorn", "Jerome", "Miller", "Alfred", "Kenzo", "Kyng", "Leroy", "Maison", "Jordy", "Stefan", "Wallace", "Benicio", "Kendall", "Zayd",
- "Blaine", "Tristian", "Anson", "Gannon", "Jeremias", "Marley", "Ronnie", "Dangelo", "Kody", "Will", "Bentlee", "Gerald", "Salvatore", "Turner", "Chad", "Misael", "Mustafa", "Konnor", "Maxim", "Rogelio", "Zakai", "Cory", "Judson", "Brentley", "Darwin", "Louie", "Ulises", "Dakari", "Rocky", "Wesson", "Alfonso", "Payton", "Dwayne",
- "Juelz", "Duncan", "Keagan", "Deshawn", "Bode", "Bridger", "Skylar", "Brodie", "Landry", "Avi", "Keenan", "Reuben", "Jaxx", "Rene", "Yehuda", "Imran", "Yael", "Alexzander", "Willie", "Cristiano", "Heath", "Lyric", "Davion", "Elon", "Karsyn", "Krew", "Jairo", "Maddux", "Ephraim", "Ignacio", "Vivaan", "Aries", "Vance", "Boden",
- "Lyle", "Ralph", "Reign", "Camilo", "Draven", "Terrence", "Idris", "Ira", "Javion", "Jericho", "Khari", "Marcellus", "Creed", "Shepard", "Terrell", "Ahmir", "Camdyn", "Cedric", "Howard", "Jad", "Zahir", "Harper", "Justus", "Forest", "Gibson", "Zev", "Alaric", "Decker", "Ernest", "Jesiah", "Torin", "Benedict", "Bowie", "Deangelo",
- "Genesis", "Harlem", "Kalel", "Kylen", "Bishop", "Immanuel", "Lian", "Zavier", "Archie", "Davian", "Gus", "Kabir", "Korbyn", "Randall", "Benton", "Coleman", "Markus"],
- 'fNames' : ["Emma", "Olivia", "Ava", "Isabella", "Sophia", "Charlotte", "Mia", "Amelia", "Harper", "Evelyn", "Abigail", "Emily", "Elizabeth", "Mila", "Ella", "Avery", "Sofia", "Camila", "Aria", "Scarlett", "Victoria", "Madison", "Luna", "Grace", "Chloe", "Penelope", "Layla", "Riley", "Zoey", "Nora", "Lily", "Eleanor", "Hannah",
- "Lillian", "Addison", "Aubrey", "Ellie", "Stella", "Natalie", "Zoe", "Leah", "Hazel", "Violet", "Aurora", "Savannah", "Audrey", "Brooklyn", "Bella", "Claire", "Skylar", "Lucy", "Paisley", "Everly", "Anna", "Caroline", "Nova", "Genesis", "Emilia", "Kennedy", "Samantha", "Maya", "Willow", "Kinsley", "Naomi", "Aaliyah", "Elena",
- "Sarah", "Ariana", "Allison", "Gabriella", "Alice", "Madelyn", "Cora", "Ruby", "Eva", "Serenity", "Autumn", "Adeline", "Hailey", "Gianna", "Valentina", "Isla", "Eliana", "Quinn", "Nevaeh", "Ivy", "Sadie", "Piper", "Lydia", "Alexa", "Josephine", "Emery", "Julia", "Delilah", "Arianna", "Vivian", "Kaylee", "Sophie", "Brielle",
- "Madeline", "Peyton", "Rylee", "Clara", "Hadley", "Melanie", "Mackenzie", "Reagan", "Adalynn", "Liliana", "Aubree", "Jade", "Katherine", "Isabelle", "Natalia", "Raelynn", "Maria", "Athena", "Ximena", "Arya", "Leilani", "Taylor", "Faith", "Rose", "Kylie", "Alexandra", "Mary", "Margaret", "Lyla", "Ashley", "Amaya", "Eliza",
- "Brianna", "Bailey", "Andrea", "Khloe", "Jasmine", "Melody", "Iris", "Isabel", "Norah", "Annabelle", "Valeria", "Emerson", "Adalyn", "Ryleigh", "Eden", "Emersyn", "Anastasia", "Kayla", "Alyssa", "Juliana", "Charlie", "Esther", "Ariel", "Cecilia", "Valerie", "Alina", "Molly", "Reese", "Aliyah", "Lilly", "Parker", "Finley",
- "Morgan", "Sydney", "Jordyn", "Eloise", "Trinity", "Daisy", "Kimberly", "Lauren", "Genevieve", "Sara", "Arabella", "Harmony", "Elise", "Remi", "Teagan", "Alexis", "London", "Sloane", "Laila", "Lucia", "Diana", "Juliette", "Sienna", "Elliana", "Londyn", "Ayla", "Callie", "Gracie", "Josie", "Amara", "Jocelyn", "Daniela", "Everleigh",
- "Mya", "Rachel", "Summer", "Alana", "Brooke", "Alaina", "Mckenzie", "Catherine", "Amy", "Presley", "Journee", "Rosalie", "Ember", "Brynlee", "Rowan", "Joanna", "Paige", "Rebecca", "Ana", "Sawyer", "Mariah", "Nicole", "Brooklynn", "Payton", "Marley", "Fiona", "Georgia", "Lila", "Harley", "Adelyn", "Alivia", "Noelle", "Gemma",
- "Vanessa", "Journey", "Makayla", "Angelina", "Adaline", "Catalina", "Alayna", "Julianna", "Leila", "Lola", "Adriana", "June", "Juliet", "Jayla", "River", "Tessa", "Lia", "Dakota", "Delaney", "Selena", "Blakely", "Ada", "Camille", "Zara", "Malia", "Hope", "Samara", "Vera", "Mckenna", "Briella", "Izabella", "Hayden", "Raegan",
- "Michelle", "Angela", "Ruth", "Freya", "Kamila", "Vivienne", "Aspen", "Olive", "Kendall", "Elaina", "Thea", "Kali", "Destiny", "Amiyah", "Evangeline", "Cali", "Blake", "Elsie", "Juniper", "Alexandria", "Myla", "Ariella", "Kate", "Mariana", "Lilah", "Charlee", "Daleyza", "Nyla", "Jane", "Maggie", "Zuri", "Aniyah", "Lucille",
- "Leia", "Melissa", "Adelaide", "Amina", "Giselle", "Lena", "Camilla", "Miriam", "Millie", "Brynn", "Gabrielle", "Sage", "Annie", "Logan", "Lilliana", "Haven", "Jessica", "Kaia", "Magnolia", "Amira", "Adelynn", "Makenzie", "Stephanie", "Nina", "Phoebe", "Arielle", "Evie", "Lyric", "Alessandra", "Gabriela", "Paislee", "Raelyn",
- "Madilyn", "Paris", "Makenna", "Kinley", "Gracelyn", "Talia", "Maeve", "Rylie", "Kiara", "Evelynn", "Brinley", "Jacqueline", "Laura", "Gracelynn", "Lexi", "Ariah", "Fatima", "Jennifer", "Kehlani", "Alani", "Ariyah", "Luciana", "Allie", "Heidi", "Maci", "Phoenix", "Felicity", "Joy", "Kenzie", "Veronica", "Margot", "Addilyn",
- "Lana", "Cassidy", "Remington", "Saylor", "Ryan", "Keira", "Harlow", "Miranda", "Angel", "Amanda", "Daniella", "Royalty", "Gwendolyn", "Ophelia", "Heaven", "Jordan", "Madeleine", "Esmeralda", "Kira", "Miracle", "Elle", "Amari", "Danielle", "Daphne", "Willa", "Haley", "Gia", "Kaitlyn", "Oakley", "Kailani", "Winter", "Alicia",
- "Serena", "Nadia", "Aviana", "Demi", "Jada", "Braelynn", "Dylan", "Ainsley", "Alison", "Camryn", "Avianna", "Bianca", "Skyler", "Scarlet", "Maddison", "Nylah", "Sarai", "Regina", "Dahlia", "Nayeli", "Raven", "Helen", "Adrianna", "Averie", "Skye", "Kelsey", "Tatum", "Kensley", "Maliyah", "Erin", "Viviana", "Jenna", "Anaya",
- "Carolina", "Shelby", "Sabrina", "Mikayla", "Annalise", "Octavia", "Lennon", "Blair", "Carmen", "Yaretzi", "Kennedi", "Mabel", "Zariah", "Kyla", "Christina", "Selah", "Celeste", "Eve", "Mckinley", "Milani", "Frances", "Jimena", "Kylee", "Leighton", "Katie", "Aitana", "Kayleigh", "Sierra", "Kathryn", "Rosemary", "Jolene",
- "Alondra", "Elisa", "Helena", "Charleigh", "Hallie", "Lainey", "Avah", "Jazlyn", "Kamryn", "Mira", "Cheyenne", "Francesca", "Antonella", "Wren", "Chelsea", "Amber", "Emory", "Lorelei", "Nia", "Abby", "April", "Emelia", "Carter", "Aylin", "Cataleya", "Bethany", "Marlee", "Carly", "Kaylani", "Emely", "Liana", "Madelynn",
- "Cadence", "Matilda", "Sylvia", "Myra", "Fernanda", "Oaklyn", "Elianna", "Hattie", "Dayana", "Kendra", "Maisie", "Malaysia", "Kara", "Katelyn", "Maia", "Celine", "Cameron", "Renata", "Jayleen", "Charli", "Emmalyn", "Holly", "Azalea", "Leona", "Alejandra", "Bristol", "Collins", "Imani", "Meadow", "Alexia", "Edith", "Kaydence",
- "Leslie", "Lilith", "Kora", "Aisha", "Meredith", "Danna", "Wynter", "Emberly", "Julieta", "Michaela", "Alayah", "Jemma", "Reign", "Colette", "Kaliyah", "Elliott", "Johanna", "Remy", "Sutton", "Emmy", "Virginia", "Briana", "Oaklynn", "Adelina", "Everlee", "Megan", "Angelica", "Justice", "Mariam", "Khaleesi", "Macie", "Karsyn",
- "Alanna", "Aleah", "Mae", "Mallory", "Esme", "Skyla", "Madilynn", "Charley", "Allyson", "Hanna", "Shiloh", "Henley", "Macy", "Maryam", "Ivanna", "Ashlynn", "Lorelai", "Amora", "Ashlyn", "Sasha", "Baylee", "Beatrice", "Itzel", "Priscilla", "Marie", "Jayda", "Liberty", "Rory", "Alessia", "Alaia", "Janelle", "Kalani", "Gloria",
- "Sloan", "Dorothy", "Greta", "Julie", "Zahra", "Savanna", "Annabella", "Poppy", "Amalia", "Zaylee", "Cecelia", "Coraline", "Kimber", "Emmie", "Anne", "Karina", "Kassidy", "Kynlee", "Monroe", "Anahi", "Jaliyah", "Jazmin", "Maren", "Monica", "Siena", "Marilyn", "Reyna", "Kyra", "Lilian", "Jamie", "Melany", "Alaya", "Ariya",
- "Kelly", "Rosie", "Adley", "Dream", "Jaylah", "Laurel", "Jazmine", "Mina", "Karla", "Bailee", "Aubrie", "Katalina", "Melina", "Harlee", "Elliot", "Hayley", "Elaine", "Karen", "Dallas", "Irene", "Lylah", "Ivory", "Chaya", "Rosa", "Aleena", "Braelyn", "Nola", "Alma", "Leyla", "Pearl", "Addyson", "Roselyn", "Lacey", "Lennox",
- "Reina", "Aurelia", "Noa", "Janiyah", "Jessie", "Madisyn", "Saige", "Alia", "Tiana", "Astrid", "Cassandra", "Kyleigh", "Romina", "Stevie", "Haylee", "Zelda", "Lillie", "Aileen", "Brylee", "Eileen", "Yara", "Ensley", "Lauryn", "Giuliana", "Livia", "Anya", "Mikaela", "Palmer", "Lyra", "Mara", "Marina", "Kailey", "Liv", "Clementine",
- "Kenna", "Briar", "Emerie", "Galilea", "Tiffany", "Bonnie", "Elyse", "Cynthia", "Frida", "Kinslee", "Tatiana", "Joelle", "Armani", "Jolie", "Nalani", "Rayna", "Yareli", "Meghan", "Rebekah", "Addilynn", "Faye", "Zariyah", "Lea", "Aliza", "Julissa", "Lilyana", "Anika", "Kairi", "Aniya", "Noemi", "Angie", "Crystal", "Bridget",
- "Ari", "Davina", "Amelie", "Amirah", "Annika", "Elora", "Xiomara", "Linda", "Hana", "Laney", "Mercy", "Hadassah", "Madalyn", "Louisa", "Simone", "Kori", "Jillian", "Alena", "Malaya", "Miley", "Milan", "Sariyah", "Malani", "Clarissa", "Nala", "Princess", "Amani", "Analia", "Estella", "Milana", "Aya", "Chana", "Jayde", "Tenley",
- "Zaria", "Itzayana", "Penny", "Ailani", "Lara", "Aubriella", "Clare", "Lina", "Rhea", "Bria", "Thalia", "Keyla", "Haisley", "Ryann", "Addisyn", "Amaia", "Chanel", "Ellen", "Harmoni", "Aliana", "Tinsley", "Landry", "Paisleigh", "Lexie", "Myah", "Rylan", "Deborah", "Emilee", "Laylah", "Novalee", "Ellis", "Emmeline", "Avalynn",
- "Hadlee", "Legacy", "Braylee", "Elisabeth", "Kaylie", "Ansley", "Dior", "Paula", "Belen", "Corinne", "Maleah", "Martha", "Teresa", "Salma", "Louise", "Averi", "Lilianna", "Amiya", "Milena", "Royal", "Aubrielle", "Calliope", "Frankie", "Natasha", "Kamilah", "Meilani", "Raina", "Amayah", "Lailah", "Rayne", "Zaniyah", "Isabela",
- "Nathalie", "Miah", "Opal", "Kenia", "Azariah", "Hunter", "Tori", "Andi", "Keily", "Leanna", "Scarlette", "Jaelyn", "Saoirse", "Selene", "Dalary", "Lindsey", "Marianna", "Ramona", "Estelle", "Giovanna", "Holland", "Nancy", "Emmalynn", "Mylah", "Rosalee", "Sariah", "Zoie", "Blaire", "Lyanna", "Maxine", "Anais", "Dana", "Judith",
- "Kiera", "Jaelynn", "Noor", "Kai", "Adalee", "Oaklee", "Amaris", "Jaycee", "Belle", "Carolyn", "Della", "Karter", "Sky", "Treasure", "Vienna", "Jewel", "Rivka", "Rosalyn", "Alannah", "Ellianna", "Sunny", "Claudia", "Cara", "Hailee", "Estrella", "Harleigh", "Zhavia", "Alianna", "Brittany", "Jaylene", "Journi", "Marissa", "Mavis",
- "Iliana", "Jurnee", "Aislinn", "Alyson", "Elsa", "Kamiyah", "Kiana", "Lisa", "Arlette", "Kadence", "Kathleen", "Halle", "Erika", "Sylvie", "Adele", "Erica", "Veda", "Whitney", "Bexley", "Emmaline", "Guadalupe", "August", "Brynleigh", "Gwen", "Promise", "Alisson", "India", "Madalynn", "Paloma", "Patricia", "Samira", "Aliya",
- "Casey", "Jazlynn", "Paulina", "Dulce", "Kallie", "Perla", "Adrienne", "Alora", "Nataly", "Ayleen", "Christine", "Kaiya", "Ariadne", "Karlee", "Barbara", "Lillianna", "Raquel", "Saniyah", "Yamileth", "Arely", "Celia", "Heavenly", "Kaylin", "Marisol", "Marleigh", "Avalyn", "Berkley", "Kataleya", "Zainab", "Dani", "Egypt",
- "Joyce", "Kenley", "Annabel", "Kaelyn", "Etta", "Hadleigh", "Joselyn", "Luella", "Jaylee", "Zola", "Alisha", "Ezra", "Queen", "Amia", "Annalee", "Bellamy", "Paola", "Tinley", "Violeta", "Jenesis", "Arden", "Giana", "Wendy", "Ellison", "Florence", "Margo", "Naya",
- "Robin", "Sandra", "Scout", "Waverly", "Janessa", "Jayden", "Micah", "Novah", "Zora", "Ann", "Jana", "Taliyah", "Vada", "Giavanna", "Ingrid", "Valery", "Azaria", "Emmarie", "Esperanza", "Kailyn", "Aiyana", "Keilani", "Austyn", "Whitley", "Elina", "Kimora", "Maliah"],
- // #BARBARIAN
- 'mBarb' : ["Adolf","Bernódus","Bjarmi","Björgúlfur","Dónaldur","Einthór","Erlar","Fossmar","Gill","Grímnir","Harald","Herluf","Hersir","Hjallkár","Hjalte","Hreimur",
- "Ívar","Júlíus","Katarínus","Kjartan","Leifur","Loftur","Lói","Morgan","Rúnar","Rune","Runólfur","Sejr","Styrr","Theódór","Thórar","Tindri","Valur","Vilmar"],
- 'fBarb' : ["Albjört","Atena","Eybjörg","Eygló","Eyrós","Fura","Gabriela","Gullbrá","Herlaug","Hinrika","Íselín","Jórunn","Julia","Maia","Málmfridur","Marja","Millý",
- "Minney","Peta","Rafney","Rósmunda","Sigdís","Símona","Snæborg","Sónata","Tíalilja","Unndís","Villa","Vinbjörg"],
- // #ELF
- 'mElf' : ["Remmo", "Lanatno", "Sercemo", "Ceutano", "Estano", "Sanwo", "Ferender", "Cuilon", "Lemyamo", "Ramano", "Fanano", "Poicon", "Lilómëion", "Nambamo", "Tino",
- "Ñarmon", "Thanyano", "Olótion", "Tino", "Varyo", "Culumaldon", "Ciryon", "Caimon", "Mantamo", "Sirilon", "Harmamo", "Arinder", "Tyavno", "Yalmo", "Londion",
- "Árener", "Wistaro", "Wilmo", "Iestor", "Gwilithon", "Thurilostor", "Gruithedir", "Harnon", "Hûrchon", "Corudor", "Bardor"],
- 'fElf' : ["Eruwen", "Gaussel", "Awarthadis", "Deliril", "Pelilassien", "Breniadis", "Teliriel", "Calphil", "Duineneth", "Parcheth", "Lachril", "Cabriel", "Nirormes",
- "Dimaethorel", "Iail", "Padradis", "Adlegril", "Galenasdes", "Gwathil", "Nîdiel", "Neithriel", "Rostril", "Calemirien", "Gruinthel", "Haewil", "Hwiniril",
- "Lachadis", "Tulussien", "Pethiel", "Magolil", "Narrien", "Gwathrril", "Morgulel", "Halel", "Suilril", "Nodrien"],
- 'ElfPrefix' : ["Mal", "Gwaer", "Baran", "Rista", "Had", "Galad", "Telir", "Lach", "Niror", "Suil", "Deli", "Nîd", "Thâr", "Teitha", "Delos", "Míria", "Maed",
- "Iphan", "Beleg", "Far", "Iaun", "Colfin", "Fea", "Eru", "Rem", "Gau", "Awartha", "Esta", "San", "Deli", "Calph", "Duinen", "Lilómë", "Namba", "Olót", "Vary",
- "Culmal", "Cir", "Celeb", "Gwath", "Nîd", "Caim"],
- 'ElfSuffixMale' : ["ion", "on", "dir", "hawn", "tor", "en", "no", "mo"],
- 'ElfSuffixFemale' : ["dis", "mes", "es", "bes", "des", "dis", "ril", "iel", "wen", "il", "hil", "eth", "sil", "rían"],
- // #DWARF
- 'Dwarf' : ["Borlun", "Khemlor", "Bosrim", "Nenram", "Bresrer", "Khem", "Gluti", "Nake", "Nadu", "Doim", "Mhandom", "Kosuk", "Friben", "Glumbak", "Frenrek", "Floba",
- "Goina", "Kot", "Thog", "Dwum", "Glemuk", "Felrak", "Furim", "Mhumuk", "Tifon", "Beg", "Gret", "Frumu", "Meti", "Goil", "Khurer", "Gendon", "Dofran",
- "Frenuk", "Mhisren", "Flaini", "Flek", "Fugo", "Glaili", "Thrada", "Mulbar", "Kobak", "Thamok", "Tindor", "Mindom", "Kidu", "Drele", "Kroge", "Nain"],
- 'DwarfPrefix' : ["Borl", "Khem", "Bos", "Nen", "Bres", "Glu", "Na", "Gloi", "Mhand", "Flo", "Fro", "Goi", "Dw", "Fu", "Ti", "Fel", "Beg", "Dof", "Flai"],
- 'DwarfSuffix' : ["un", "lor", "im", "rim", "ram", "am", "rer", "ti", "ke", "du", "uk", "na", "um", "ak", "rak", "on", "li", "le", "ar", "bar", "bak", "rek", "ek", "l" ],
- 'DemonPrefix' : ["Bund", "Zon", "Vut", "Nuk", "Bhol", "Non", "Hukga", "Votro", "Runi", "Bobaz", "Zaz", "Gug", "Nok", "Dek", "Heg", "Gul", "Nalvu", "Hakva",
- "Geke", "Vuluz", "Dhuz", "Val", "Bel", "Zath", "Bul", "Bot", "Bunzo", "Nubru", "Dotul", "Donu", "Khug", "Dhez", "Ra", "Bobak", "Broz", "Kinn", "Jolva", "Bok",
- "Raz", "Xork", "Zuglo", "Rorror", "Gugr", "Rag"],
- 'DemonSuffix' : ["od", "zur", "zin", "rak", "gor", "gud", "bil", "dak", "throd", "rod", "zag", "zug", "rur", "ur", "gol", "dur", "zun", "ger", "val", "kan", "cok",
- "nul", "al", "dal", "rel", "rel", "zomun", "mun", "un", "nad", "ad", "zad", "gol", "kes", "mis", "goraz", "uz"],
- 'fHobbit' : ["Lyla", "Eglantine", "Dicentra", "Angelonia", "Beryl", "Scilla", "Dora", "Rosa", "Sapphire", "Bell", "Lily", "Jasmina", "Firiel", "Monarda", "Clover", "Liatra", "Laura"],
- 'mHobbit' : ["Sad", "Rat", "Oth", "Albe", "Theode", "Arn", "Gross", "Theo", "Anso", "Nor", "Leode", "Agil", "Ebro", "Vig", "Bilb", "Tim", "Isem", "Vig", "Liu"],
- 'mHobbitSuffix' : ["oc", "doc", "old", "o", "bo", "ric", "bert", "man", "bald", "vald", "fride", "in", "go", "gar", "bold", "dolf"],
- 'fOrc' : ["Oghash", "Ghak", "Agrob", "Urzul", "Bor", "Urog", "Gonk", "Ghorza", "Sharn", "Morn", "Dura", "Durgat", "Gharol", "Murzush", "Bashuk", "Ugor",
- "Borgakh", "Bolar", "Ghak", "Ugak", "Borgakh", "Orbul", "Mogak", "Yazgash", "Sharamph", "Bagrak", "Bulfim", "Sharn"],
- 'mOrc' : ["Yukha", "Zogugh", "Kupgugh", "Kurz", "Mazhug", "Yukha", "Ulgan", "Nag", "Durzum", "Yadba", "Krugbu", "Kogan", "Ushnar", "Feldgulg", "Zurpigig",
- "Taghig", "Zarod", "Vultog", "Larek", "Ghamborz", "Gnoth", "Dular", "Mol", "Sharkub", "Ginug", "Oilug", "Yak"],
- 'fSuccubus' : ["Iphisrahne", "Zarinana", "Usinvyra", "Vylnell", "Brizeli", "Lilixia", "Felrahne", "Jilryss", "Ynisess", "Charysh", "Dhysoria", "Nemorynore",
- "Azaervienne", "Meridania", "Fyrlienne", "Qyryla", "Sareli", "Penerris", "Nymrahne", "Risania", "Fyrelyla", "Zrixelin", "Winsya"],
- 'mSuccubus' : ["Oranorin", "Orannarax", "Joranrel", "Maznear", "Garantihr", "Survix", "Xalaxis", "Lanarnil", "Unorsyx", "Arlennar", "Unoraris", "Ezrinniran",
- "Brennar", "Zohnan", "Zohnilan", "Najlyx", "Jhorovan", "Surlahin", "Lanarlarin", "Azersan", "Kyllead", "Azernyx", "Xinriad", "Praxsyx"],
- 'fKnight' : ["Bela", "Tetty", "Jennet", "Lilias", "Tillote", "Annet", "Mathila", "Isolde", "Malle", "Arlette", "Malie", "Cristina", "Geue", "Sosanna", "Esobel",
- "Mylle", "Libby", "Izot", "Sabelina", "Jaquelot", "Juliana", "Alys", "Tibb", "Jocea", "Milisant", "Auicia", "Havisa", "Ybelote", "Ebota", "Mariun"],
- 'mKnight' : ["Udo", "Rex", "Huelin", "Mosseus", "Renaud of the North", "Arnaldus", "Janot", "Tristram", "Guarinet", "Hewelin", "Jupp", "Hardi", "Dumpty", "Anfroi",
- "Randulfus", "Tobye", "Richie", "Percyvallus", "Beroldus", "Randoul", "Renaut", "Taffy", "Nel", "Guiot", "Basequin", "Ansell", "Barnet", "Bryan", "Sanse", "Davy"],
- 'KnightSuffix' : ["the Wild", "the Lion", "the Swift", "the Loner", "the Dreamer", "of the Sea", "the Maneater", "the Friendly", "the Humble", "the Timid", "the Vigilant",
- "the Lionheart", "the Horrific", "the Caring", "the Wolf", "the Hound", "the Mountain", "the Outsider", "the Keen", "the Humble", "the Guardian", "the Poet",
- "the Kingslayer", "the Shield", "the Cold", "the Shephard", "the Brave", "the Gracious", "the Defender", "the Cold", "the Mercyful", "the Highborn", "the Allegiant",
- "the Champion", "the Daring", "the Adamant", "the Poor", "the Strong", "the Illuminator", "the Fierce", "the Beast", "the Twisted", "the Titan", "the Colussus",
- "the Relentless", "the Magnificent", "of the North", "of the South", "of the West", "of the East", "the Observant"],
- 'DragonPrefix' : ["Odtuz", "Viinfun", "Briilon", "Aldu", "Paarthu", "Pelzaan", "Nahlrul", "Vusfeyn", "Ulgaar", "Vulmid", "Niviin", "Malbah", "Bonis", "Ondjud", "Paakvik",
- "Zahont", "Tilvus", "Rotkel", "Ahjo", "Grindlah", "Loriiz", "Zindag", "Zehfel", "Rotya", "Vodviir", "Dezkrii", "Zunwol", "Venzein"],
- 'DragonSuffix' : ["hul", "gaar", "mal", "dom", "sil", "sul", "bein", "uin", "bex", "leh", "viir", "vaaz", "in", "nax", "brom", "sar", "krii", "gus", "lir", "nir", "viing",
- "kras", "twen", "ond", "ind", "daan", "faad", "ru", "gut"],
- 'Nickname' : ["The Bronze", "The Prodigy", "Deathbringer", "Backstab", "Smooth-Spoken", "The Sentinel", "The Firm", "The Monster", "The Wall", "The Inferior", "The Modest",
- "Queen of Nothing", "The Innocent", "The Sloth", "The Boar", "Lord of Blood", "The Great", "Hero of Fools", "The Inept", "The Eunuch", "The Bastard",
- "The Heartless", "Venom Tongue", "The Colossal", "The Rider", "The Pompous", "The Tempest", "Lapdog", "The Pretender", "Stormbringer", "The Restless", "Horsehead", "The Wildling",
- "The Kind", "The Fiend", "Little Boot", "The Guardian", "The Savage", "The Cunning", "The Firm", "The Dragon", "The Damned", "Mumbling Mouth",
- "Ironhide", "Silent Foot", "The Ghost", "The Hog", "Snow King", "The Crow", "Sidestep", "The Gutless", "Twice Killed", "The Pretender"],
- 'Horse' : ["Fleetlight", "Kingston", "Muscade", "Pacific", "Appichi", "Aferditie", "Brocco", "Remrock", "Thunderbird", "Solmyr", "Stormfeet", "Icefall", "Morningfeet", "Fastflame",
- "Wildheart", "Snowmane", "Joy", "Tempo", "Aftershock", "Hasty", "Midnightfire", "Shadelight", "Reflexion", "Phantagero", "Chrome", "Gulliver", "Sundancer", "Epic", "Sky Feet",
- "Thunderflame", "Sunflash", "Quickheart", "Bolt", "Shadow Step", "Nightfire", "Flash", "Thunder Step", "Eagle", "Stormheart", "Sunrise", "Andale", "Falcon", "Pebbles", "Billie", "Billy", "Stormheart", "Roach"],
- 'fDarkElfPrefix' : ["Duad", "Saed", "Nim", "Ied", "Faf", "Toth", "Cus", "Umut", "Ial", "Um", "Eth", "Nen", "Cashad", "Vagl", "Hif", "Ath", "Elo"],
- 'mDarkElfPrefix' : ["Ful", "Min", "Chae", "Dus", "Dior", "Ae", "Vea", "Hiom", "Tomu", "Iorb", "Rib", "Err", "Geh", "Vir", "Orv", "God", "Fib", "Mai", "Ai"],
- 'fDarkElfSuffix' : ["ti", "hie", "unn", "thla", "laes", "fiollo", "frun", "ash", "ha", "hu", "munn", "esh", "las", "rol", "hae", "ua", "al", "ta"],
- 'mDarkElfSuffix' : ["ba", "vas", "go", "la", "na", "aich", "um", "as", "un", "genn", "dru", "lea", "arr", "darr", "dac", "ac", "ril", "ann", "doc", "hel"],
- 'fFairyPrefix' : ["Tulip", "Lovely", "Parsley", "Flirty", "Cotton", "Rose", "Fern", "Crystal", "Swift", "Wood", "Sea", "Swift", "Olive", "Snow", "Sun", "Bumble", "Swan", "Raen", "Walnut", "Daisy", "Apple", "Windy"],
- 'fFairySuffix' : ["horn", "bottom", "fig", "griddle", "wink", "valley", "spring", "glimmer", "whisper", "vine", "gust", "meadow", "dust", "fog", "hill", "petal", "mist", "dew", "lily", "blossom"],
- 'mFairyPrefix' : ["Night", "Spark", "Nimbus", "Spark", "Cosmo", "Dew", "Stone", "Falcon", "Black", "Silver", "Wolf", "Moon", "Jelly"],
- 'mFairySuffix' : ["fall", "dew", "bottom", "horn", "bird", "hill", "meadow", "flame", "fall", "white", "beam", "rock"],
- 'fWizardPrefix' : ["Onna", "Thor", "Udo", "Ina", "Onu", "Va", "Em", "En", "Eq", "Est", "Ami", "Asu", "Inno", "Ozu", "Oli", "Zuph"],
- 'fWizardSuffix' : ["trixi", "ish", "vys", "tosh", "key", "gaell", "nora", "ora", "ia", "rea", "phior", "rass", "prixy", "ane"],
- 'mWizardPrefix' : ["Eso", "Ulze", "Wob", "Ub", "Eliba", "Onul", "Strig", "Ura", "Up", "Kril", "Elu", "Wi", "Gan", "Dumble"],
- 'mWizardSuffix' : ["rin", "bahn", "in", "eus", "dor", "or", "rus", "grus", "dore", "ius", "wyn", "key", "dalf", "dolf"],
- 'fVampire' : ["Lamia", "Star", "Silver", "Delia", "Florence", "Raven", "Raphaelle", "Emberlynn", "Ivory", "Lenchsinska", "Ruby", "Guinevere",
- "Lyllith", "Violeta", "Pandora", "Aurora", "Ianira", "Ivory", "Topaz", "Tatiana", "Belladonna", "Venus", "Destiny", "Scarlett", "Trista",
- "Rosalyn", "Angelica", "Arabella"],
- 'mVampire' : ["Lycidas", "Marcel", "Corbin", "Dante", "Daire", "Armand", "Demitri", "Anton", "Severn", "Damien", "Marcus", "Emil", "Severn",
- "Balthazar", "Demetrius", "Dreven", "Heskel", "Gareth", "Astaroth", "Fabian", "Lazarus", "Saber", "Vladimir", "Marius", "Ciaran", "Nikolas",
- "Kane", "Cain", "Iancu", "Raoul", "Constantine"],
- 'mHumanFantasy' : {"prefix": ["Bir", "Ceol", "Elu", "Wulf", "Wald", "Ealh", "Bea", "Wig", "Sige", "Frea", "Aelf", "Leod", "Aethel", "Bea", "Éo", "Léof", "Gár", "Théo"],
- "suffix": ["stan", "an", "ard", "ric", "beald", "here", "gnoth", "maer", "wine", "heard", "wulf", "wald", "geat", "lac", "laf", "red", "mer", "leth", "orl", "man"]},
- 'fHumanFantasy' : {"prefix": ["Balde", "Leof", "Ear", "Frit", "Hring", "Aedil", "Wit", "Wilt", "Ead", "Ean", "Hild", "Cuth", "Ceol", "Eah", "Elf", "Gold", "Théo"],
- "suffix": ["thiva", "waru", "ryth", "with", "wynn", "burh", "wine", "fled", "hilda", "gifu", "yth", "ild"]},
- 'fNymph' : ["Xaniphe", "Ida", "Themistae", "Akiria", "Liriope", "Philyra", "Klytie", "Axiphiche", "Acalephia", "Themistae", "Theliphe", "Eletea",
- "Minthe", "Chania", "Larishae", "Oinoie", "Phaethosia", "Klaia", "Anithraci", "Amphise", "Kleodora", "Endeis", "Laromedia", "Melanippe",
- "Ephemei", "Syrianix", "Amithelia", "Psamaphine", "Monithei", "Ambrosia", "Pasithoe", "Helleori", "Peria", "Caligeina", "Pomedosa", "Lampetia", "Phonia", "Laripha", "Kleorei", "Aethusa"],
- }
- let replace = ''
- //const randNameSimple = (nameArray) => { return nameArray[getRandomRange(nameArray.length)]}
- //#region FunctionsNames
- if (lowered.includes('rnm_gen')) {
- replace = 'rnm_gen'
- while (text.includes(replace)) {
- name = randNameSimple(names.mNames)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnf_gen')) {
- replace = 'rnf_gen'
- while (text.includes(replace)) {
- name = randNameSimple(names.fNames)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnm_barb')) {
- replace = 'rnm_barb'
- while (text.includes(replace)) {
- name = randNameSimple(names.mBarb)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnf_barb')) {
- replace = 'rnf_barb'
- while (text.includes(replace)) {
- name = randNameSimple(names.fBarb)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnm_elf')) {
- replace = 'rnm_elf'
- while (text.includes(replace)) {
- name = randNameSimple(names.ElfPrefix)
- name += randNameSimple(names.ElfSuffixMale)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnf_elf')) {
- replace = 'rnf_elf'
- while (text.includes(replace)) {
- name = randNameSimple(names.ElfPrefix)
- name += randNameSimple(names.ElfSuffixFemale)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rn_dwarf')) {
- replace = 'rn_dwarf'
- while (text.includes(replace)) {
- name = randNameSimple(names.DwarfPrefix)
- name += randNameSimple(names.DwarfSuffix)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rn_demon')) {
- replace = 'rn_demon'
- while (text.includes(replace)) {
- name = randNameSimple(names.DemonPrefix)
- name += randNameSimple(names.DemonSuffix)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnm_hobbit')) {
- replace = 'rnm_hobbit'
- while (text.includes(replace)) {
- name = randNameSimple(names.mHobbit)
- name += randNameSimple(names.mHobbitSuffix)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnf_hobbit')) {
- replace = 'rnf_hobbit'
- while (text.includes(replace)) {
- name = randNameSimple(names.fHobbit)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnm_orc')) {
- replace = 'rnm_orc'
- while (text.includes(replace)) {
- name = randNameSimple(names.mOrc)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnf_orc')) {
- replace = 'rnf_orc'
- while (text.includes(replace)) {
- name = randNameSimple(names.fOrc)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnm_succubus')) {
- replace = 'rnm_succubus'
- while (text.includes(replace)) {
- name = randNameSimple(names.mSuccubus)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnf_succubus')) {
- replace = 'rnf_succubus'
- while (text.includes(replace)) {
- name = randNameSimple(names.fSuccubus)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnm_knight')) {
- replace = 'rnm_knight'
- while (text.includes(replace)) {
- name = randNameSimple(names.mKnight)
- name += " " + randNameSimple(names.KnightSuffix)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnf_knight')) {
- replace = 'rnf_knight'
- while (text.includes(replace)) {
- name = randNameSimple(names.fKnight)
- name += " " + randNameSimple(names.KnightSuffix)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rn_dragon')) {
- replace = 'rn_dragon'
- while (text.includes(replace)) {
- name = randNameSimple(names.DragonPrefix)
- name += randNameSimple(names.DragonSuffix)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rn_nick')) {
- replace = 'rn_nick'
- while (text.includes(replace)) {
- name = randNameSimple(names.Nickname)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rn_horse')) {
- replace = 'rn_horse'
- while (text.includes(replace)) {
- name = randNameSimple(names.Horse)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnm_darkelf')) {
- replace = 'rnm_darkelf'
- while (text.includes(replace)) {
- name = randNameSimple(names.mDarkElfPrefix)
- name += randNameSimple(names.mDarkElfSuffix)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnf_darkelf')) {
- replace = 'rnf_darkelf'
- while (text.includes(replace)) {
- name = randNameSimple(names.fDarkElfPrefix)
- name += randNameSimple(names.fDarkElfSuffix)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnm_fairy')) {
- replace = 'rnm_fairy'
- while (text.includes(replace)) {
- name = randNameSimple(names.mFairyPrefix)
- name += randNameSimple(names.mFairySuffix)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnf_fairy')) {
- replace = 'rnf_fairy'
- while (text.includes(replace)) {
- name = randNameSimple(names.fFairyPrefix)
- let suffix = randNameSimple(names.fFairySuffix)
- while (suffix === name) {
- suffix = randNameSimple(names.fFairySuffix)
- }
- name += suffix
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnm_wizard')) {
- replace = 'rnm_wizard'
- while (text.includes(replace)) {
- name = randNameSimple(names.mWizardPrefix)
- name += randNameSimple(names.mWizardSuffix)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnf_wizard')) {
- replace = 'rnf_wizard'
- while (text.includes(replace)) {
- name = randNameSimple(names.fWizardPrefix)
- name += randNameSimple(names.fWizardSuffix)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnm_vampire')) {
- replace = 'rnm_vampire'
- while (text.includes(replace)) {
- name = randNameSimple(names.mVampire)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnf_vampire')) {
- replace = 'rnf_vampire'
- while (text.includes(replace)) {
- name = randNameSimple(names.fVampire)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnm_human')) {
- replace = 'rnm_human'
- while (text.includes(replace)) {
- name = randNameSimple(names.mHumanFantasy.prefix)
- name += randNameSimple(names.mHumanFantasy.suffix)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnf_human')) {
- replace = 'rnf_human'
- while (text.includes(replace)) {
- name = randNameSimple(names.fHumanFantasy.prefix)
- name += randNameSimple(names.fHumanFantasy.suffix)
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rn_nymph')) {
- replace = 'rn_nymph'
- while (text.includes(replace)) {
- name = randNameSimple(names.fNymph)
- text = text.replace(replace, name)
- }
- }
- //#endregion
- text = generateItemNames(text, lowered)
- text = generateCityNames(text, lowered)
- text = generateMiscNames(text, lowered)
- return text
- }
- function generateItemNames(text, lowered)
- {
- const itemNames = {
- 'Weapon' : ["Illumina", "Eclipse", "Remorse", "Nethersong", "Oracle", "Reflection", "Ashes", "Lazarus", "Soulkeeper", "Verdict", "Doomguard", "Celestia", "Serenity", "Trinity", "Netherbane", "Duskshadow", "Thunderfury", "Dreamsong",
- "Benediction", "Necrolight", "Ghost", "Lull", "Duskshadow", "Prudence", "Chaos", "Soulsiphon", "Dusksong", "Dreamwhisper", "Sapience", "Blazefury", "Dusksong", "Oathkeeper", "Crucifer", "Soulshadow", "Visage", "Relentless",
- "Remorse", "Earthfire", "Quicksilver", "Nexus", "Soulshard", "Lament", "Supinity", "Thorn", "Emberling", "Dragonbane", "Twinkle", "Pursuit", "Phantom", "Nightfall", "Cryptic", "Blightspore", "Snowfall", "Doomward", "Malice", "Duskshadow",
- "Firestorm", "Harmony", "Omega", "Spellkeeper", "Dawn", "Moonlight", "Stormrage", "Sleepwalker", "Inertia", "Thundersoul", "Dawn", "Scar", "Deathsong", "Frenzy", "Alakaslam", "Silverlight", "Cometfall", "Eclipse", "Verdict", "Clarity",
- "Phobia", "Mirage", "Oblivion", "Glimmer"],
- 'WeaponPrefix' : ["Necro", "Ghost", "Glimmer", "Spell", "Thunder", "Dusk", "Dawn", "Night", "Storm", "Fire", "Death", "Doom", "Nether", "Dream", "Earth", "Scar", "Blaze", "Oath", "Blight", "Snow", "Comet", "Quick"],
- 'WeaponSuffix' : ["keeper", "breaker", "bane", "shadow", "fury", "song", "fall", "storm", "slam", "rage", "soul", "light", "shard", "guard", "fire", "eclipse"],
- }
- if (lowered.includes('rni_weapon'))
- {
- replace = 'rni_weapon'
- while (text.includes(replace)) {
- let suffix = ''
- if (Math.random() >= 0.5) {
- name = randNameSimple(itemNames.Weapon)
- } else {
- name = randNameSimple(itemNames.WeaponPrefix)
- suffix = randNameSimple(itemNames.WeaponSuffix)
- while (suffix === name) {
- suffix = randNameSimple(itemNames.WeaponSuffix)
- }
- name += suffix
- }
- text = text.replace(replace, name)
- }
- }
- return text
- }
- function generateCityNames(text, lowered)
- {
- // TODO: Make prefix and suffixes for all city names
- const cityNames = {
- 'Elf' : ["Namanora", "Neeth Themar", "Fylnserine", "Isflenor", "Lyls Serine", "Olyve Edhil", "Yllfelenora", "Thaana Taesi", "Shylo Lenora", "Mathanlian", "Unyren Alora", "Ava Tirion", "Mellelone", "Yaaserine", "Imyelshys", "Anyen Aiqua", "Nelsalume", "Ylloqua", "Offelone", "Nyathlean", "Tholona", "Ollethalas", "Maths Elunore", "Nytfe Thalore", "Sanehone", "Nahadell", "Inneluna", "Waena Ortheiad", "Iyhenora", "Uo Entheas"],
- 'Dwarf' : ["Dundum", "Thegeruhm", "Hom Farum", "Khimbuldar", "Gumelduhr", "Thamgrom", "Degh Loduhr", "Mirn Toduhr", "Gurnuluhr", "Dimdarim", "Thigtoduhr", "Deghburim", "Vir Garohm", "Then Farum", "Girn Thurum", "Bun Boram", "Belfurum", "Harn Darum", "Bhern Lodihr", "Nir Lodihr", "Hern Toruhm", "Nunyaruhm", "Holria", "Dhughtuhrm", "Kangrun", "Thaghbadur", "Bon Buldohr", "Kirneduhr", "Dham Todihr", "Dornboram"],
- 'FantasyPrefix' : ["Pure", "Still", "Silent", "Stage", "Lost", "Dry", "Maple", "Salt", "Bleak", "Winter", "Fay", "Whit", "Dusk", "Dawn", "Clear", "Boulder", "Small", "Spring", "Fear", "Wild", "Summer", "Chill", "Lake", "Crag", "Cliff",
- "Gold", "Dog", "Dawn", "Stone", "Pure", "Swan", "Timber", "Green", "Grime", "Hound", "High", "Sleet", "Rose", "Mill", "Swamp", "Never", "Bell", "Ox", "Dead", "Lost"],
- 'FantasySuffix' : ["star", "brook", "ville", "breach", "band", "fair", "break", "mond", "hallow", "cross", "grasp", "call", "wall", "scar", "bell", "chill", "town", "burn", "moor", "glen", "hand", "fell", "bury", "water", "denn",
- "vale", "cliff", "well", "acre", "post", "gulf", "storm", "fall", "vein", "shore", "gulch", "bourne", "mere", "hold", "hollow", "moor", "bourne", "coast", "break", "stall", "shire"],
- 'Fantasy' : ["Purestar", "Stillbrook", "Silentville", "Stagbreach", "Lostband", "Dryfair", "Cavebreak", "Maplemond", "Salthallow", "Bleakcross", "Wintergrasp", "Faycall", "Whitwall", "Duskscar", "Dawnhallow", "Clearbell", "Boulderchill",
- "Smalltown", "Sprinburn", "Fearmoor", "Wildglen", "Summerhand", "Chillfell", "Lakehand", "Cragbury", "Cliffwater", "Golddenn", "Dogvale", "Dawncliff", "Stonewell", "Pureacre", "Swanpost", "Timbergulf", "Greenstorm", "Grimefall",
- "Houndvein", "Highshore", "Lostgulch", "Sleetbourne", "Cliffgulch", "Houndmere", "Doghold", "Rosehollow", "Millmoor", "Swampbourne", "Nevercoast", "Bellbreak", "Oxstall", "Lostvault", "Deadshire"],
- 'Barbarian' : ["Ljosavatnsskaro", "Kambakista", "Borg", "Melar", "Hvarf", "Fljotshverfi", "Reynir", "Boroeyrr", "Geirshlio", "Baugsstaoir", "Meoallond", "Reyoarfell", "Eyvindarmuli", "Brunahaugr", "Naumdaelafylki", "Kleifarlond", "Auokulustaoir", "Kolbeinsaross", "Fura", "Sireksstaoir", "Jafnaskaro", "Hvanna", "Skutilsfjoror", "Reykjaa", "Kjaransvik", "Halland", "Rytagnupr", "Signyjarbuoir", "Leiruloekr", "Gufua"]
- }
- if (lowered.includes('rnc_elf')) {
- replace = 'rnc_elf'
- while (text.includes(replace)) {
- text = text.replace(replace, randNameSimple(cityNames.Elf))
- }
- }
- if (lowered.includes('rnc_dwarf')) {
- replace = 'rnc_dwarf'
- while (text.includes(replace)) {
- text = text.replace(replace, randNameSimple(cityNames.Dwarf))
- }
- }
- if (lowered.includes('rnc_fantasy'))
- {
- replace = 'rnc_fantasy'
- while (text.includes(replace)) {
- let suffix = ''
- if (Math.random() >= 0.667) {
- name = randNameSimple(cityNames.Fantasy)
- } else {
- name = randNameSimple(cityNames.FantasyPrefix)
- suffix = randNameSimple(cityNames.FantasySuffix)
- while (suffix === name) {
- suffix = randNameSimple(cityNames.FantasySuffix)
- }
- name += suffix
- }
- text = text.replace(replace, name)
- }
- }
- if (lowered.includes('rnc_barb')) {
- replace = 'rnc_barb'
- while (text.includes(replace)) {
- text = text.replace(replace, randNameSimple(cityNames.Barbarian))
- }
- }
- return text;
- }
- function generateMiscNames(text, lowered) {
- const miscNames = {
- 'Mountains' : ["The Hopeless Hills", "The Decaying Hills", "The Silver Tips"],
- 'MountainPrefix' : ["Misty", "Hopeless", "Decaying", "Silver", "Blue", "Red", "Black", "Grey", "Symmetrical", "Slumbering", "Quiet", "Colorless", "Adamantine", "Titanic", "Snowy", "Gloomy", "Jagged", "Charmed"],
- 'MountainSuffix' : ["Hills", "Tips", "Slopes", "Mountains", "Tops", "Horns", "Rise"]
- }
- if (lowered.includes('rn_mountain'))
- {
- replace = 'rn_mountain'
- while (text.includes(replace)) {
- let suffix = ''
- if (Math.random() >= 0.8) {
- name = randNameSimple(miscNames.Mountains)
- } else {
- name = "The " + randNameSimple(miscNames.MountainPrefix)
- suffix = randNameSimple(miscNames.MountainSuffix)
- while (suffix === name) {
- suffix = randNameSimple(miscNames.MountainSuffix)
- }
- name += " " + suffix
- }
- text = text.replace(replace, name)
- }
- }
- return text
- }
- function generateRandForest(text, lowered) {
- if (!lowered.includes('rd_forest')) return text
- const forest = {
- 'Size' : ["tremendous", "vast", "gigantic", "huge", "small", "humble"],
- 'Desc' : ["clear", "budding", "gloomy", "young", "wet", "lush", "shadowy", "foggy", "primal", "dense", "verdant", "ancient", "misty", "prospering", "radiant", "diverse"],
- 'Color' : ["golden", "orange", "jade green", "pink", "olive green", "multicolored", "yellow", "silver", "red", "red and white", "chartreuse", "forest green", "laurel green", "moss green", "mint green"],
- 'Trees' : ["hawthorn", "buxus", "larch", "ash", "apple", "redwood", "beech", "asp", "alder", "pine", "fir", "chestnut", "elm", "linden", "rowan", "juniper", "hemlock", "willow"],
- 'FloraTree' : ["Coiling creepers waves from every", "Quiet branches waves from many a", "Thick vines waves from the occasional", "Curving creepers grasps many a", "Thin branches hold onto many a", "Thin branches grasps every", "Silent vines grasps every", "Swooping creepers suspended from every"],
- 'FloraGround' : ["and an array of flowers, which blossoms brightly, on the forest floor", "and a vast amount of mossy boulders and tree stumps cover the forest floor"],
- 'SoundsClose' : ["Braying animal noises can be heard", "The sound of rustling leaves and branches can be heard from the tree tops in the wind,", "A mishmash of wild sounds, predominantly those of varmint can be heard", "A variation of animal noises, which are caused by prowling animals, resonates through the air,"],
- 'SoundsDistant' : ["the sounds of several woodpeckers", "the occasional roar of a large animal", "the occasional sounds of birds of prey", "a barrage of noise coming from a waterfall"]
- }
- const replace = 'rd_forest'
- while (text.includes(replace))
- {
- let size = randNameSimple(forest.Size)
- const desc = randNameSimple(forest.Desc)
- const color = randNameSimple(forest.Color)
- let treeA, treeB, treeC
- treeA = randNameSimple(forest.Trees)
- treeB = randNameSimple(forest.Trees)
- treeC = randNameSimple(forest.Trees)
- while (treeB === treeA) treeB = randNameSimple(forest.Trees)
- while (treeC === treeA || treeC === treeB) treeC = randNameSimple(forest.Trees)
- const floraTree = randNameSimple(forest.FloraTree)
- const floraGround = randNameSimple(forest.FloraGround)
- const soundClose = randNameSimple(forest.SoundsClose)
- const soundDist = randNameSimple(forest.SoundsDistant)
- var ret = "The forest is " + size + ", " + desc + " and " + color + ". "
- ret += "Its canopy is dominated by " + randNameSimple(forest.Size) + " " + treeA + ", " + treeB + " and " + treeC + " trees. "
- ret += floraTree + " tree " + floraGround + ". "
- ret += soundClose + " and " + soundDist + " in the distance."
- text = text.replace(replace, ret)
- }
- return text;
- }
- function generateDiseaseName(text, lowered) {
- const replace = 'rn_disease'
- if (lowered.includes(replace)) {
- const disease = {
- 'prefix' : ["Echo", "Dryad", "Changeling", "Angelic", "Ectoplasm", "Witcher", "Void", "Pyro", "Werewolf", "Chimera", "Chaos", "Flying", "Wizard", "Skeleton", "Vampire", "Magnetic", "Pendulum", "Rune", "Hellion",
- "Haunted", "Faerie", "Orcale", "Hypnotic", "Vanishing", "Warlock", "Goblin", "Troll", "Aether", "Clairvoyance", "Outsider", "Demon", "Lich", "Succubus", "Tooth", "Crotch"],
- 'suffix' : ["Infection", "Curse", "Virus", "Rot", "Delusion", "Fatigue", "Cold", "Blight", "Limb", "Vapors", "Pox", "Spasm", "Thirst", "Insanity", "Malady", "Gut", "Puffs", "Chills", "Amnesia", "Rash", "Cramps",
- "Haze", "Disorder", "Anemia", "Rage", "Disease", "Drip", "Decay", "Thirst", "Cough", "Death", "Lust", "Plague", "Disorder", "Mark", "Blindness", "Ache"]
- }
- while (text.includes(replace))
- {
- var diseaseDesc = randNameSimple(disease.prefix) + " " + randNameSimple(disease.suffix)
- text = text.replace(replace, diseaseDesc);
- }
- }
- return text;
- }
- function generateRegion(text, lowered, bPopulation, bNameRegion) {
- if (!lowered.includes('rd_region')) {
- return text;
- }
- const replace = 'rd_region'
- const regionStruct = {
- 'Name' : ["Osium", "Udeth", "Olios", "Omend", "Flaegrun", "Aenin", "Uslai", "Omen", "Toria", "Cedoria", "Oxtrad", "Lessau", "Bunia", "Athea"],
- 'Gen' : ["rivers", "rock formations", "marshlands", "hills", "caves", "steep mountains", "tundras"],
- 'Climate' : ["temperate", "arctic", "warm", "tropical", "stormy", "wet", "calm", "humid"],
- 'Population' : ["sparsely spread population", "lightly spread population", "stretched population", "loosely concentrated population", "closely concentrated population", "cramped population"],
- 'LandscapeType' : ["stunning", "unsightly", "cheerful", "depressing", "friendly", "delightful", "sublime"],
- 'RiverWater' : ["small, playful waterfalls, cascading rivers", "rushing rivers and great waterfalls"],
- 'Rocks' : ["huge, jutting rocks", "imposing fjords", "fiercy rock formations, icy springs"],
- 'Marshland' : ["wild rivers", "wild, overgrown forests and smelly, overgrown ponds"],
- 'Hills' : ["red leaved trees, mellow rivers", "soft, foggy fields", "dramatic mountain views", "pink blossom forests, magnificent wildlife"],
- 'Caves' : ["overgrown boulders marks the entrance to many hidden caves", "fallen towers and ruins marks the entrance to many hidden caves"],
- 'Mountains' : ["dramatic mountain views", "steep, magnificent mountains"],
- 'Tundra' : ["gorgeous flower fields, pristine, snow covered fields"],
- // climate
- 'Temperate' : ["gorgeous flower fields.", "jade green fields.", "green forests and mellow rivers.", "terraced fields of green.", "green forests and luscious fields."],
- 'Arctic' : ["gorgeous flower fields, luscious fields and steep, magnificent mountains.", "cold, windy mountains, icy springs and rocky beaches.", "aggressive wildlife, icy, snow covered fields."],
- 'Warm' : ["white sandy beaches.", "terraced fields of green."],
- 'Unsightly' : ["withered flower fields.", "somber architecture.", "smelly, overgrown ponds and ominous trees."],
- 'Depressing' : ["black lakes, bleak, bare forests and drying rivers.", "smelly, overgrown ponds and ominous trees."],
- 'Foreigner': ["insensitive", "rude", "reserved", "welcoming", "kindhearted", "cold", "spiteful"],
- 'ForeignerWelcomePos' : ["food", "friendliness", "generosity"],
- 'ForeignerWelcomeNeg' : ["resentment", "disintrest", "apathy"],
- 'ForeignerDislike': ["restrict", "delay"],
- 'ForeignerLike': ["aid", "nurse", "strengthen", "thwart"]
- }
- while (text.includes(replace))
- {
- var regionName = regionStruct.Name[getRandomRange(regionStruct.Name.length)]
- var gen = regionStruct.Gen[getRandomRange(regionStruct.Gen.length)];
- var climate = regionStruct.Climate[getRandomRange(regionStruct.Climate.length)]
- var population = regionStruct.Population[getRandomRange(regionStruct.Population.length)];
- var lsType = regionStruct.LandscapeType[getRandomRange(regionStruct.LandscapeType.length)];
- var desc = '';
- if (!lsType.includes('depressing')) {
- switch (gen) {
- default:
- case 'rock':
- desc += regionStruct.Rocks[getRandomRange(regionStruct.Rocks.length)]
- break;
- case 'rivers':
- desc += regionStruct.RiverWater[getRandomRange(regionStruct.RiverWater.length)]
- break;
- case 'marshlands':
- desc += regionStruct.Marshland[getRandomRange(regionStruct.Marshland.length)]
- break;
- case 'hills':
- desc += regionStruct.Hills[getRandomRange(regionStruct.Hills.length)]
- break;
- case 'steep mountains':
- desc += regionStruct.Mountains[getRandomRange(regionStruct.Mountains.length)]
- break;
- case 'tundras':
- desc += regionStruct.Tundra[getRandomRange(regionStruct.Tundra.length)]
- break;
- case 'caves':
- desc += regionStruct.Caves[getRandomRange(regionStruct.Caves.length)]
- break;
- }
- }
- if (bPopulation) {
- gen += " and has a " + climate + " climate, which has lead to a " + population + "."
- } else {
- gen += " and has a " + climate + " climate."
- }
- if (desc) {
- desc += " and "
- }
- if (lsType.includes('unsightly') || lsType.includes('depressing')) {
- if (lsType.includes('depressing')) {
- desc += regionStruct.Depressing[getRandomRange(regionStruct.Depressing.length)]
- }
- else {
- desc += regionStruct.Unsightly[getRandomRange(regionStruct.Unsightly.length)]
- }
- }
- else
- {
- switch (climate) {
- default:
- case 'temperate':
- desc += regionStruct.Temperate[getRandomRange(regionStruct.Temperate.length)]
- break;
- case 'arctic':
- desc += regionStruct.Arctic[getRandomRange(regionStruct.Arctic.length)]
- break;
- case 'warm':
- desc += regionStruct.Warm[getRandomRange(regionStruct.Warm.length)]
- break;
- }
- }
- var foreigner = regionStruct.Foreigner[getRandomRange(regionStruct.Foreigner.length)];
- var bForeignerPositive = false
- //ner': ["insensitive", "rude", "reserved", "welcoming", "kindhearted", "cold", "spiteful"],
- switch (foreigner) {
- default:
- break;
- case 'welcoming':
- case 'kindhearted':
- bForeignerPositive = true
- break;
- }
- var foreignerWelcome = bForeignerPositive ? regionStruct.ForeignerWelcomePos[getRandomRange(regionStruct.ForeignerWelcomePos.length)] : regionStruct.ForeignerWelcomeNeg[getRandomRange(regionStruct.ForeignerWelcomeNeg.length)]
- var foreignerCountry = bForeignerPositive ? regionStruct.ForeignerLike[getRandomRange(regionStruct.ForeignerLike.length)] : regionStruct.ForeignerDislike[getRandomRange(regionStruct.ForeignerDislike.length)]
- if (bNameRegion) {
- var ret = "The region of " + regionName + " is mainly covered in " + gen + " The region's landscape is " + lsType + "; " + desc
- }
- else {
- var ret = "The region is mainly covered in " + gen + " The region's landscape is " + lsType + "; " + desc
- }
- if (bPopulation) {
- if (bNameRegion) {
- ret += " The people of " + regionName + " are " + foreigner + " towards foreigners and tend to welcome them with " + foreignerWelcome + "." //". They feel foreigners could " + foreignerCountry + " the region's well being."
- } else {
- ret += " The people of the region are " + foreigner + " towards foreigners and tend to welcome them with " + foreignerWelcome + "." //". They feel foreigners could " + foreignerCountry + " the region's well being."
- }
- }
- text = text.replace(replace, ret)
- }
- return text;
- }
- function generateCaveDescription(text, lowered) {
- if (!lowered.includes('rd_cave')) return text;
- //var replace = ''
- const caves = {
- 'DwarfA' : ["immeasurable halls, filled with an everlasting music of water that tinkles into pools, as fair as a mirror in the starlight.", "many miles of caves and tunnels of various shapes and sizes carved through the rock, which is possibly limestone. There are three Great Halls centered around the other tunnels and caves.", "mighty halls of shiny gold and marble."],
- 'DwarfB' : ["an immense, beautiful, and ore-laden cave system that extends deep down into the mountains for many miles and consists of many different paths, tunnels, and chambers.", "a grand underground fortress and city, and in the deepest of the caves is the Innermost Chamber, where treasures are hoarded.", "a glorious cave system that softly rise and fall, consisting of many chambers."],
- 'DwarfC' : ["A small stream runs down through the mountain and into the caves and is its source of water.", "The silver lanterns shine a pale light, making the caves glitter like starlight.", "Gems are infused with light, bathing the halls in pale kaleidoscopic hues."],
- 'CaveDark' : ["dark and moist, you hear water dripping somewhere, echoing in the deep.", "dark and overgrown. Small insects can be heard buzzing around. You hear running water somewhere.", "dark and dusty. Great pillars lie sundered, making transversal cumbersome."]
- }
- if (lowered.includes('rd_cave_dwarf')) {
- var replace = 'rd_cave_dwarf'
- while (text.includes(replace)) {
- var caveDesc = caves.DwarfA[getRandomRange(caves.DwarfA.length)]
- var ret = "The dwarven city consists of " + caveDesc
- caveDesc = caves.DwarfB[getRandomRange(caves.DwarfB.length)]
- ret += " It is " + caveDesc
- caveDesc = caves.DwarfC[getRandomRange(caves.DwarfC.length)]
- ret += " " + caveDesc
- text = text.replace(replace, ret)
- }
- }
- if (lowered.includes('rd_cave_dark')) {
- var replace = 'rd_cave_dark'
- while (text.includes(replace)) {
- var caveDesc = caves.CaveDark[getRandomRange(caves.CaveDark.length)]
- var ret = "The cave is " + caveDesc
- text = text.replace(replace, ret)
- }
- }
- return text;
- }
- function generateCastle(text, lowered) {
- if (!lowered.includes('rd_castle')) return text;
- const castle = {
- 'TowerAmount' : ["Nine", "Ten", "Eleven", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen", "Twenty"],
- 'Towers' : ["lean, square towers surround the castle, they reach twice the height of the walls"],
- 'WallSize' : ["enormous, vast", "huge, firm", "tall, chunky", "fortified, solid", "enormous, massive", "fortified, wide"],
- 'MatPrefix' : ["dark", "bright", ""],
- 'MatColor' : ["blue", "red", "white", "black", "grey"],
- 'Material' : ["stone", "marble", "glistening obsidian", "sandstone", "stone", "basalt"],
- 'Windows' : ["Simple windows are scattered generously across the walls in a seemingly random pattern, along with symmetric crenelations for archers and artillery.", "Wide windows are scattered thinly across the walls in an asymmetric pattern, along with symmetric holes for archers and artillery.", "Elegant windows are scattered generously around the walls in seeminly perfect symmetry, along with huge crenelations for archers and artillery.", "Elegant windows are scattered generously across the walls in an asymmetric pattern, along with symmetric crenelations for archers and artillery."],
- 'Gate' : ["A regular gate with giant wooden doors and hot oil pots guards the only passage into the castle, but it's not the only way in when you know the castle's secret passages.", "A sizable gate with large metal doors, a regular bridge and hot oil pots offers a safe home to all those in need, but it's not the only way in when you know the castle's secret passages.", "A vast gate with thick metal doors, a draw bridge and a moat guards the only entrance to the castle build at the edges of a shoreline, but it's not the only way in.", "A sizable gate with huge metal doors, a regular bridge and strong defenses. It's the only easy way in."],
- 'Outside' : ["Various large houses are scattered outside the castle gates, surprisingly the rich are comfortable with living outside the gates as well. This castle has stood the test of time and despite knowing some very rough times, the castle still stands and it looks like it will do so for many years to come.", "Remnants of broken siege engines, swords and shields litter the fields outside, a painful reminder of a past war. This castle has clearly stood the test of time, the rocks of the walls are aged and vines and plants grow inside the cracks, but this castle will last for ages to come.", "Plain fields of a type of grass cover most of the fields outside of the castle, adding to the castle's aesthetics. This castle is relatively new, but so far it stood its ground with ease and it'll likely do so for ages to come.", "Large boulders litter the fields outside the castle, paths to and from the castle snake around them and farm plots are small and scattered all around. This castle has clearly stood the test of time and its inhabitants are intend on making sure it stays that way for ages to come.", "The forest outside of the castle gates is light up with bioluminescent creatues, adding to the atmosphere of the castle. This castle looks very new, but without knowing its history it's impossible to tell if it's a newly build castle or a well kept one.", "Well kept gardens with fragrant flowers, gorgeous trees and many bushes decorate the outside of the castle. This castle has stood the test of time and despite knowing some very rough times, the castle still stands and it looks like it will do so for many years to come.", "Small buildings, houses and other structures populate the grounds outside the castle walls, homes for the poorest of the poor. This castle looks very new, but without knowing its history it's impossible to tell if it's a newly build castle or a well kept one."]
- }
- var replace = 'rd_castle'
- while (text.includes(replace))
- {
- var ret = castle.TowerAmount[(getRandomRange(castle.TowerAmount.length))]
- ret += " " + castle.Towers[(getRandomRange(castle.Towers.length))]
- ret += " and are connected by " + castle.WallSize[(getRandomRange(castle.WallSize.length))] + " walls made of ";
- ret += castle.MatPrefix[(getRandomRange(castle.MatPrefix.length))] + " " + castle.MatColor[(getRandomRange(castle.MatColor.length))]
- ret += " " + castle.Material[(getRandomRange(castle.Material.length))] + "."
- ret += " " + castle.Windows[(getRandomRange(castle.Windows.length))] + " " + castle.Gate[(getRandomRange(castle.Gate.length))] + " " + castle.Outside[(getRandomRange(castle.Outside.length))]
- text = text.replace(replace, ret)
- }
- return text;
- }
- function generateEncounter(text, lowered) {
- if (!lowered.includes('renc_')) return text
- if (lowered.includes('renc_demon'))
- {
- const demon = {
- 'Intro' : {
- 'Sound' : ["crash", "moan", "blare", "crackle", "howl", "bawl", "shriek", "roar", "boom", "scream", "bark", "bong",
- "chime", "growl", "neigh", "murmur", "hiss", "slam", "snort", "snarl", "wail", "yelp", "wheeze", "whine", "yap"],
- 'A' : ["blackness", "fog", "mist", "sky", "smoke", "desolation", "hazy air", "wind"],
- 'B' : ["strike of a clock", "buzz of a drill", "creak of wood", "beat of a heart", "burst of fire", "trembling of stones",
- "flicker of flames", "wave of heat", "ringing of ears", "whisper of wind", "blood-curdling scream", "sepulchral laugh",
- "stench of ozone", "stench of rotting corpses", "rancid stench", "rumble of distant thunder", "sense of vertigo",
- "feeling of claustrophobia", "sound of countless legs"]
- },
- 'Encounter' : ["face to face with", "stared at by", "eye to eye with", "challenged by", "greeted by"],
- 'Form' : {
- 'Prefix' : ["a foul", "a tiny", "a bizarre", "a peculiar", "an immense", "a towering", "a daunting", "an alarming", "a cruel",
- "a crawly", "a gruesome", "a hair-raising", "a nightmarish", "a macabre", "a petrifying", "a sinister", "a horrible",
- "a repulsive", "a terrible", "an amorphous", "a many-legged", "a cephalopod", "a colossal", "a nameless", "a drooling"],
- 'Type' : ["beast", "soul", "creature", "creation", "entity", "being", "blasphemy"],
- 'Suffix' : ["blood", "sickness", "shadows", "heat", "decay", "sin", "flame", "terror", "blood", "dread", "fury", "anguish", "ire", "wrath", "madness", "rotting skin"]
- },
- 'Appendage' : ["A scythe-like tail slithers behind it, it ends in a barbed tip covered in sticky goo", "Two ethereal wings extend themselves fully. Fiery bones, and shadowy feathers stretch upward over the creature"]
- }
- var replace = 'renc_demon'
- while (text.includes(replace)) {
- const sound = randNameSimple(demon.Intro.Sound)
- const introA = randNameSimple(demon.Intro.A)
- const introB = randNameSimple(demon.Intro.B)
- const encounter = randNameSimple(demon.Encounter)
- const formPrefix = randNameSimple(demon.Form.Prefix)
- const formType = randNameSimple(demon.Form.Type)
- const formSuffixA = randNameSimple(demon.Form.Suffix)
- let formSuffixB = randNameSimple(demon.Form.Suffix)
- while (formSuffixB === formSuffixA) formSuffixB = randNameSimple(demon.Form.Suffix)
- let ret = "A " + sound + " in the " + introA + ", a " + introB
- ret += ", and suddenly you are " + encounter + " " + formPrefix + " " + formType + " of " + formSuffixA + " and " + formSuffixB + "."
- //ret += " "
- text = text.replace(replace, ret)
- }
- }
- return text
- }
- function generateTown(text, lowered, bDescriptive) {
- if (!lowered.includes('rd_town')) return text
- const town = {
- 'Prefix' : ["Stationed besides", "Designed on", "Forged around", "Located on", "Found on", "Set on", "Established inside", "Cast above", "Erected on", "Rooten on", "Formed on"],
- 'LocationType' : ["the Northern side of", "the highest point of", "the right side of", "the base of", "the left side of", "above", "the lowest point of", "the bottom of", "the Southern side of", "the end of"],
- 'Location' : ["a canyon", "a waterfall", "a mound", "a cavern", "a stream", "a lava stream", "a stream", "a river", "a covert", "a woodlands", "a field", "a wetlands", "a greyser field", "a peninsula", "a vulcano"],
- 'TownType' : ["hamlet", "city", "town", "village", "crossroad", "outpost", "port"],
- 'Inhabitants' : ["orcs", "hobbits", "elves", "humans"],
- 'BuildReason' : ["rare plants", "rare resources", "ancient, unexplained statues", "a dark history", "ancient burial grounds", "hidden tunnels", "an ancient water source", "medicinal plants",
- "spiritual significance", "unique wildlife"],
- 'Looks' : {
- 'Pos' : ["ordinary", "mediocre", "unexciting", "delightful", "graceful", "stunning", "grandiose", "humble"],
- 'Neg' : ["gruesome", "dreadful", "macabre", "ghastly", "dull", "worn"],
- 'bIsPos' : true,
- },
- 'Materials' : {
- 'Pos' : ["copper", "ceramic tile", "bamboo", "birch wood", "wheat straw", "maple wood", "pine wood", "blackwood", "ash wood", "oak wood", "silky oak wood"],
- 'Neg' : ["rusted", "gloomy wooden", "galvanised steel", "grey", "black wooden", "faded marble"]
- },
- 'Flora' : {
- 'Pos' : ["lucious gardens", "calming ocean front", "aromatic flowers", "stunning canyon", "frozen ponds"],
- 'Neg' : ["dirty roads", "absolute silence", "scary animals", "barren grounds", "a lot of insects"]
- }
- }
- var replace = 'rd_town'
- while (text.includes(replace)) {
- const location = randNameSimple(town.Location)
- const inhabitants = randNameWeight(town.Inhabitants, Math.random() * 0.667) //randNameSimple(town.Inhabitants)
- const bIsPos = (inhabitants != 'orcs') && Math.random() <= 0.75
- const looks = bIsPos ? randNameSimple(town.Looks.Pos) : randNameSimple(town.Looks.Neg)
- const matA = bIsPos ? randNameSimple(town.Materials.Pos) : randNameSimple(town.Materials.Neg)
- let matB = bIsPos ? randNameSimple(town.Materials.Pos) : randNameSimple(town.Materials.Neg)
- while (matB === matA) matB = bIsPos ? randNameSimple(town.Materials.Pos) : randNameSimple(town.Materials.Neg)
- const flora = bIsPos ? randNameSimple(town.Flora.Pos) : randNameSimple(town.Flora.Neg)
- const townType = randNameSimple(town.TownType)
- let cityName = "invalid"
- switch (inhabitants)
- {
- // TODO: Implement city names for all races
- default:
- case 'humans':
- case 'hobbits':
- cityName = generateCityNames('rnc_fantasy', 'rnc_fantasy')
- break;
- case 'elves':
- cityName = generateCityNames('rnc_elf', 'rnc_elf')
- break;
- }
- let ret = randNameSimple(town.Prefix) + " " + randNameSimple(town.LocationType) + " " + location + ", the " + townType + " of " + cityName + " is home to " + inhabitants + ". "
- if (bDescriptive) {
- ret += "The " + townType + " has " + randNameSimple(town.BuildReason) + ", which is of great importance to the people of " + cityName + ". "
- ret += "The " + townType + " itself looks " + looks + ". "
- }
- else {
- ret += "The " + townType + " has " + randNameSimple(town.BuildReason) + " and it looks " + looks + ". "
- }
- ret += "With its " + matA + " rooftops, " + matB + " walls and " + flora + "."
- text = text.replace(replace, ret)
- }
- return text
- }
- const getRandomRange = (length) => { return Math.floor(Math.random() * (length)) }
- const randNameSimple = (nameArray) => { return nameArray[getRandomRange(nameArray.length)]}
- const clamp = (v, min, max) => { return Math.max(min, Math.min(v, max))}
- const randNameWeight = (nameArray, weight) => {
- var r = (Math.random() + weight) * nameArray.length
- r = clamp(r, 0, nameArray.length)
- var r2 = Math.floor(clamp(r, 0, nameArray.length - 1))
- return nameArray[r2]
- }
- // Don't modify this part
- modifier(text)
Add Comment
Please, Sign In to add comment