def generate_parents(race): mother = None father = None parents_names = [None, None] result = roll_event(100, parents) if "don't" in result: return result if 'half' in race: human_parent = random.choice([0, 1]) parents_names[human_parent] = generate_name('human', human_parent) if 'orc' in race: parents_names[not human_parent] = generate_name( 'orc', not human_parent) elif 'dwarf' in race: parents_names[not human_parent] = generate_name( 'dwarf', not human_parent) else: raise RaceNotSupportedException(race) else: for ii in range(2): parents_names[ii] = generate_name(race, ii) return ("Knew parents, they were " + parents_names[0] + " and " + parents_names[1])
def namer_util(args): if args.list: print('Supported races: ' + str(races)) return for n in range(args.num_names): print(generate_name(args.race, args.gender))
def generate_character(*args, **kargs): """ Generates a random npc with a backstory and stats. """ # TODO: Do something with the arguments later. # TODO: This is admittedly awful. This will be changed after we refine the libary. # It's currently here mostly for testing purposes. gender = randint(0, 1) level = 4 CHARACTER['Race'] = choose_random_race() CHARACTER['Gender'] = 'Male' if gender else 'Female' CHARACTER['Name'] = generate_name(CHARACTER['Race'], gender) CHARACTER['Background'] = generate_character_backstory() CHARACTER['Stats'] = generate_stats_roll() CHARACTER['Stat Modifier'] = stats.calculate_stat_mod(CHARACTER['Stats']) CHARACTER['Base AC'] = stats.calculate_base_ac(CHARACTER['Stats']) # Intelligence is for the wizard class, just using as a test. CHARACTER['Spell Save DC'] = \ stats.calculate_spell_dc(CHARACTER['Stats']['Intelligence'], level) CHARACTER['Spell Attack Mod'] = \ stats.calculate_spell_attack_mod(CHARACTER['Stats']['Intelligence'], level) # TODO: To be better determined base on a class, for now hardcoding. CHARACTER['Maximum HP'] = stats.calculate_max_hp(CHARACTER['Stats'], 8, level) for key in CHARACTER: # Generate and print all the stats. print("{}: {}".format(key, CHARACTER[key]))
def friend_event(): """ Generate a random name and maybe some more details about this person """ gender = random.randint(0, 1) race = random.choice(races) name = generate_name(race, gender) return "You made a friend earlier in life with {}".format(name)
def love_event(): gender = random.choice(["man", "woman"]) gender = random.randint(0, 1) race = random.choice(races) name = generate_name(race, gender) return "You fell in love with a {} named {} {} years ago".format(gender, name, roll_d10(1))
def enemy_event(): dangerous = random.choice(["in danger", "not in danger"]) blame = random.choice(["to blame", "not to blame"]) gender = random.randint(0, 1) race = random.choice(races) name = generate_name(race, gender) event = "You made an enemy with {}, {} years ago. You are {} for this. Currently you are {}".format( name, roll_d4(1), blame, dangerous) return event
def generate_character_backstory(race=None, age=None, gender=None, name=None): gender_opt = 0 if not gender: gender_opt = choice([MALE, FEMALE]) if not race: race = choice(races) if not name: name = generate_name(race, gender_opt) if not age: age = randint(20, 100) #there is a personal decisions section that can be implemented later.. alot of work childhood = generate_childhood(race) life_events = get_life_events(age) return { 'childhood': childhood, 'age': age, 'race': race, 'gender': gender, 'name': name, 'life_events': life_events }