def elf(race_name, similar_names=False): male_name = "" female_name = "" first_char = None race_tuple_list = utils.return_race_tuple_list(race_name) for tuple_var in race_tuple_list: if first_char != tuple_var[0][0]: first_char = tuple_var[0][0] if first_char == "T": male_name += ")" female_name += ")" male_name += " " female_name += " " if first_char == "L": male_name += "(" female_name += "(" if tuple_var[0] and not tuple_var[0][-1].isdigit(): if tuple_var[0][-1] == "M": male_name += add_syllable(race_name, tuple_var) elif tuple_var[0][-1] == "F": female_name += add_syllable(race_name, tuple_var) else: if similar_names: # gen similar names syllable = add_syllable(race_name, tuple_var) male_name += syllable female_name += syllable else: # or different names male_name += add_syllable(race_name, tuple_var) female_name += add_syllable(race_name, tuple_var) return [race_name, male_name, female_name]
def standard_single_name(race_name, similar_names=False): name = "" first_char = None race_tuple_list = utils.return_race_tuple_list(race_name) for tuple_var in race_tuple_list: name += add_syllable(race_name, tuple_var) return [race_name, name, name]
def tavern(race_name, similar_names=False): name = "the" first_char = None race_tuple_list = utils.return_race_tuple_list(race_name) for tuple_var in race_tuple_list: name += " " name += add_syllable(race_name, tuple_var) return [race_name, name, name]
def standard_nongendered(race_name, similar_names=False): name = "" first_char = None race_tuple_list = utils.return_race_tuple_list(race_name) for tuple_var in race_tuple_list: if first_char != tuple_var[0][0]: first_char = tuple_var[0][0] name += " " name += add_syllable(race_name, tuple_var) return [race_name, name, name]
def orc(race_name, similar_names=False): leading_orc_L2_space = True trailing_orc_L2_space = False name = "" first_char = None race_tuple_list = utils.return_race_tuple_list(race_name) for tuple_var in race_tuple_list: add_next_syllable = decision(tuple_var[1]) if first_char != tuple_var[0][0]: first_char = tuple_var[0][0] name += " " if leading_orc_L2_space and tuple_var[0] == "L2": if add_next_syllable: name += " " leading_orc_L2_space = False trailing_orc_L2_space = True if trailing_orc_L2_space and tuple_var[0] == "L3": name += " " trailing_orc_L2_space = False name += add_syllable(race_name, tuple_var, predetermined=add_next_syllable) return [race_name, name, name]
def party(race_name, similar_names=False): race_tuple_list = utils.return_race_tuple_list(race_name) p1 = race_tuple_list[0] # subject (possessive) p1_text = "" p1a = race_tuple_list[1] # subject's-adj p1a_text = "" n1 = race_tuple_list[2] # noun1 n1_text = "" n1a = race_tuple_list[3] # n1's-adj n1a_text = "" n2 = race_tuple_list[4] # noun2 n2_text = "" n2a = race_tuple_list[5] # n2-adj n2a_text = "" c1 = race_tuple_list[6] # collective term else plural c1_text = "" connector = "" tuple_list = [p1, p1a, n1, n1a, n2, n2a, c1] if decision(p1[1]): p1a_text = add_syllable(race_name, p1a, similar_names=similar_names) p1_text = add_syllable( race_name, p1, predetermined=True, similar_names=similar_names) + "'s" if decision(n1[1]): n1a_text = add_syllable(race_name, n1a, similar_names=similar_names) n1_text = add_syllable(race_name, n1, predetermined=True, similar_names=similar_names) else: n1a_text = add_syllable(race_name, n1a, predetermined=True, similar_names=similar_names) if decision(n2[1]): n2a_text = add_syllable(race_name, n2a, similar_names=similar_names) n2_text = add_syllable(race_name, n2, predetermined=True, similar_names=similar_names) c1_text = add_syllable(race_name, c1, similar_names=similar_names) text_list = [ p1a_text, p1_text, n1a_text, n1_text, connector, n2a_text, n2_text, c1_text ] if n2_text and not p1_text: if n1_text: n1_text += "'s" text_list = [ p1a_text, p1_text, n1a_text, n1_text, connector, n2a_text, n2_text, c1_text ] passed_list = [x for x in text_list if x] if len(passed_list) > 5: connector = "and" new_plural = None text_list = [ p1a_text, p1_text, n1a_text, n1_text, connector, n2a_text, n2_text, c1_text ] if not c1_text: for text in reversed(text_list): if text: new_plural = inflection.pluralize(text) break if new_plural: last_index = text_list.index(passed_list[-1]) text_list[last_index] = new_plural name = "The " for word in text_list: if word: name += word + " " name = name.strip() if similar_names: race_name = "party_alliteration" return [race_name, name, name]
def newtavern(race_name, similar_names=False): name = "" first_char = None race_tuple_list = utils.return_race_tuple_list(race_name) first_name_probability = 0.2 s_vs_and_probability = 0.8 first_name = None if decision(first_name_probability): human_race_name, human_male_name, human_female_name = gen_race_name( random.choice(config.human_races)) if similar_names: for i in range(10000): human_male_name = human_male_name.strip() human_female_name = human_female_name.strip() if human_male_name.startswith( similar_names) or human_female_name.startswith( similar_names): alliterative_name = random.choice([ name for name in [human_male_name, human_female_name] if name.startswith(similar_names) ]) human_male_name = alliterative_name human_female_name = alliterative_name break else: human_race_name, human_male_name, human_female_name = gen_race_name( random.choice(config.human_races)) first_name = random.choice([human_male_name, human_female_name]).strip().split(" ")[0] name1s_likely = race_tuple_list[0] name1and_likely = race_tuple_list[1] n2 = race_tuple_list[2] n3 = race_tuple_list[3] if first_name: name += first_name + "'s" name += " " name += add_syllable(race_name, n2, similar_names=similar_names) elif decision(name1s_likely[1]): name += add_syllable(race_name, name1s_likely, predetermined=True, similar_names=similar_names) if decision(s_vs_and_probability): name = "The " + name + "'s " else: name = "The " + name + " and " name += add_syllable(race_name, n2, similar_names=similar_names) elif decision(name1and_likely[1]): name += add_syllable(race_name, name1and_likely, predetermined=True, similar_names=similar_names) if decision(s_vs_and_probability): name = "The " + name + " and " else: name = "The " + name + "'s " name += add_syllable(race_name, n2, similar_names=similar_names) else: name += add_syllable(race_name, n2, predetermined=True, similar_names=similar_names) name = "The " + name name += " " name += add_syllable(race_name, n3, similar_names=similar_names) if similar_names: race_name = "newtavern_alliteration" return [race_name, name, name]