class_name Random const MIN_WORD_LEN = 4 const MAX_WORD_LEN = 8 const VOWEL = ["a","e","i","o","u","y"] const CONSONANTS = ["b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "z"] #region ------------------ Plant Name ------------------ static func generate_random_word(_random_seed = randi()) -> String: if ( GameInfo and GameInfo.settings_data.activate_twitch_integration and len(TwitchConnection.pseudo_gathered) ): return TwitchConnection.pseudo_gathered.pick_random() var word_len = randf_range(4,8) var word = '' var last_letter_is_vowel = false for i in range(word_len): if last_letter_is_vowel: word += CONSONANTS.pick_random() else: word += VOWEL.pick_random() last_letter_is_vowel = not last_letter_is_vowel return word.capitalize() static func mutate_word(word : String) -> String: var rand_int = randi() if len(word) > MIN_WORD_LEN and rand_int % 3 == 0: return shorten_word(word) elif len(word) < MAX_WORD_LEN and rand_int % 3 == 1: return elongate_word(word) return replace_character(word) static func shorten_word(word : String): if randi()%2 == 0: return word.left(len(word) - 1).capitalize() else : return word.right(len(word) - 1).capitalize() static func elongate_word(word : String): if randi()%2 == 0: var letter = CONSONANTS.pick_random() if word.left(1) in VOWEL else VOWEL.pick_random() return (letter + word).capitalize() else : var letter = CONSONANTS.pick_random() if word.right(1) in VOWEL else VOWEL.pick_random() return (word + letter).capitalize() static func replace_character(word : String): var character_id = randi_range(0, len(word)) var character = word[character_id] if character in VOWEL: character = VOWEL.pick_random() else: character = CONSONANTS.pick_random() word[character_id] = character return word #region ------------------ Region Name ------------------ const RANDOM_REGION_NAME_POOL = [ "Pinouille", "Hyugo", "Dedana", "Snowy", "Eros", "Snoop", "Warmfuzzy", "Sheepish", "Nebula", "Luna", "Catapult", "Kepler", "Fabricius", "Sagan", "Lovelace", "Torvalds", "Turing", "Asimov", "Herbert", "Wells", "Pesquet", "Tereshkova", "Poiro", "O'Malley", "Dream", "Cumulus", "Pyrka", "Pacho", "Birdopia", "Obsaya", "Looping", "Jarvis", "Orion", "Canaillerie", "Pomoa", "Ezeron", "Ebis", "Ecloya", "Vlamedun", "Slazor", "Plulune", "Fledu", "Jiclot", "Greyun", "Ebimeron", "Fosmule", "Nesnar", "Broysau", "Shiesal", "Eblie", "Ostraria", "Nochuedan", "Woshania", "Eblor", "Ochil", "Speles", "Oscesh", "Estor", "Lagronus", "Relmania", "Bobbeon", "Peclite", "Eivis", "Drugantu", "Latunides", "Qisos", "Bosos", "Yesta", "Nodeuria", "Thosone", "Zinuna", "Viurus", "Natis", "Laduphus", "Cebbaphus", "Pungea", "Vebos", "Nebos", "Dremili", "Seganides", "Icania", "Aboulara", "Guzadus", "Dulmea", "Kueli", "Deothe", "Gonides", "Monvelib", "Cimemia", "Ricia", "Nechov", "Huphus", "Maliat", "Deaphus", ] const RANDOM_REGION_TYPE_POOL = [ "REGION_TYPE_VALLEY", "REGION_TYPE_HIGHLANDS", "REGION_TYPE_HEIGHTS", "REGION_TYPE_MOUNTAIN", "REGION_TYPE_PEAKS", "REGION_TYPE_HILLS", "REGION_TYPE_PASS", "REGION_TYPE_PLAIN", "REGION_TYPE_CANAL", "REGION_TYPE_FLATLANDS", "REGION_TYPE_LABYRINTH", "REGION_TYPE_REGION", "REGION_TYPE_BARRIER", "REGION_TYPE_CROWN", "REGION_TYPE_SUMMIT", "REGION_TYPE_PANORAMA", "REGION_TYPE_EXPANSE", "REGION_TYPE_GROUNDS", "REGION_TYPE_PLATEAU", "REGION_TYPE_FOOTHILLS", "REGION_TYPE_CANYON", "REGION_TYPE_RIDGE", "REGION_TYPE_LANDSCAPE", ]