diff --git a/src/classes/name.py b/src/classes/name.py new file mode 100644 index 0000000..f59f742 --- /dev/null +++ b/src/classes/name.py @@ -0,0 +1,197 @@ +import random +from typing import Optional +from dataclasses import dataclass + +from src.utils.df import game_configs +from src.classes.avatar import Gender + + +@dataclass +class LastName: + """姓氏""" + name: str + sect: Optional[str] + +@dataclass +class GivenName: + """名字""" + name: str + gender: Gender + sect: Optional[str] + + +class NameManager: + """姓名管理器""" + + def __init__(self): + # 散修通用姓氏 + self.common_last_names: list[str] = [] + # 按宗门分类的姓氏 {宗门名: [姓氏列表]} + self.sect_last_names: dict[str, list[str]] = {} + + # 散修通用名字 {Gender: [名字列表]} + self.common_given_names: dict[Gender, list[str]] = { + Gender.MALE: [], + Gender.FEMALE: [] + } + # 按宗门和性别分类的名字 {宗门名: {Gender: [名字列表]}} + self.sect_given_names: dict[str, dict[Gender, list[str]]] = {} + + self._load_names() + + def _load_names(self): + """从CSV加载姓名数据""" + # 加载姓氏 + last_name_df = game_configs["last_name"] + for _, row in last_name_df.iterrows(): + name = str(row["last_name"]).strip() + sect = str(row.get("sect", "")).strip() if row.get("sect") and str(row.get("sect")) != "nan" else None + + if sect: + if sect not in self.sect_last_names: + self.sect_last_names[sect] = [] + self.sect_last_names[sect].append(name) + else: + self.common_last_names.append(name) + + # 加载名字 + given_name_df = game_configs["given_name"] + for _, row in given_name_df.iterrows(): + name = str(row["given_name"]).strip() + gender_str = str(row["gender"]).strip() + gender = Gender.MALE if gender_str == "男" else Gender.FEMALE + sect = str(row.get("sect", "")).strip() if row.get("sect") and str(row.get("sect")) != "nan" else None + + if sect: + if sect not in self.sect_given_names: + self.sect_given_names[sect] = {Gender.MALE: [], Gender.FEMALE: []} + self.sect_given_names[sect][gender].append(name) + else: + self.common_given_names[gender].append(name) + + def get_random_last_name(self, sect_name: Optional[str] = None) -> str: + """ + 获取随机姓氏 + + Args: + sect_name: 宗门名称,如果为None则从散修姓氏中选择 + + Returns: + 姓氏字符串 + """ + if sect_name and sect_name in self.sect_last_names: + return random.choice(self.sect_last_names[sect_name]) + return random.choice(self.common_last_names) + + def get_random_given_name(self, gender: Gender, sect_name: Optional[str] = None) -> str: + """ + 获取随机名字 + + Args: + gender: 性别 + sect_name: 宗门名称,如果为None则从散修名字中选择 + + Returns: + 名字字符串 + """ + if sect_name and sect_name in self.sect_given_names: + sect_names = self.sect_given_names[sect_name][gender] + if sect_names: + return random.choice(sect_names) + return random.choice(self.common_given_names[gender]) + + def get_random_full_name(self, gender: Gender, sect_name: Optional[str] = None) -> str: + """ + 获取随机全名 + + Args: + gender: 性别 + sect_name: 宗门名称,如果为None则为散修 + + Returns: + 完整姓名 + """ + last_name = self.get_random_last_name(sect_name) + given_name = self.get_random_given_name(gender, sect_name) + return last_name + given_name + + def get_random_full_name_with_surname( + self, + gender: Gender, + surname: str, + sect_name: Optional[str] = None + ) -> str: + """ + 使用指定姓氏生成随机全名 + + Args: + gender: 性别 + surname: 指定的姓氏 + sect_name: 宗门名称,如果为None则为散修 + + Returns: + 完整姓名 + """ + if not surname: + return self.get_random_full_name(gender, sect_name) + given_name = self.get_random_given_name(gender, sect_name) + return surname + given_name + + +# 全局单例 +_name_manager = NameManager() + + +def get_random_name(gender: Gender, sect_name: Optional[str] = None) -> str: + """获取随机全名""" + return _name_manager.get_random_full_name(gender, sect_name) + + +def get_random_name_for_sect(gender: Gender, sect) -> str: + """ + 基于宗门生成姓名(兼容旧接口) + + Args: + gender: 性别 + sect: Sect对象或None + + Returns: + 完整姓名 + """ + sect_name = sect.name if sect is not None else None + return _name_manager.get_random_full_name(gender, sect_name) + + +def pick_surname_for_sect(sect) -> str: + """ + 从宗门常见姓或全局库中挑选一个姓氏(兼容旧接口) + + Args: + sect: Sect对象或None + + Returns: + 姓氏 + """ + sect_name = sect.name if sect is not None else None + return _name_manager.get_random_last_name(sect_name) + + +def get_random_name_with_surname( + gender: Gender, + surname: str, + sect +) -> str: + """ + 使用指定姓氏生成随机全名(兼容旧接口) + + Args: + gender: 性别 + surname: 指定的姓氏 + sect: Sect对象或None + + Returns: + 完整姓名 + """ + sect_name = sect.name if sect is not None else None + return _name_manager.get_random_full_name_with_surname(gender, surname, sect_name) + diff --git a/src/run/run.py b/src/run/run.py index 2e0a8cd..929a5ac 100644 --- a/src/run/run.py +++ b/src/run/run.py @@ -20,7 +20,7 @@ from src.classes.cultivation import CultivationProgress from src.classes.root import Root from src.classes.age import Age from src.run.create_map import create_cultivation_world_map, add_sect_headquarters -from src.utils.names import get_random_name, get_random_name_for_sect +from src.classes.name import get_random_name, get_random_name_for_sect from src.utils.id_generator import get_avatar_id from src.utils.config import CONFIG from src.classes.sect import sects_by_id diff --git a/src/sim/new_avatar.py b/src/sim/new_avatar.py index 878e721..82c5bc1 100644 --- a/src/sim/new_avatar.py +++ b/src/sim/new_avatar.py @@ -10,7 +10,7 @@ from src.classes.calendar import MonthStamp from src.classes.cultivation import CultivationProgress from src.classes.root import Root from src.classes.age import Age -from src.utils.names import get_random_name_for_sect, pick_surname_for_sect, get_random_name_with_surname +from src.classes.name import get_random_name_for_sect, pick_surname_for_sect, get_random_name_with_surname from src.utils.id_generator import get_avatar_id from src.classes.sect import Sect, sects_by_id, sects_by_name from src.classes.alignment import Alignment diff --git a/src/sim/simulator.py b/src/sim/simulator.py index b076635..836626a 100644 --- a/src/sim/simulator.py +++ b/src/sim/simulator.py @@ -8,7 +8,7 @@ from src.classes.cultivation import Realm from src.classes.world import World from src.classes.event import Event, is_null_event from src.classes.ai import llm_ai -from src.utils.names import get_random_name +from src.classes.name import get_random_name from src.utils.config import CONFIG from src.run.log import get_logger from src.classes.fortune import try_trigger_fortune diff --git a/src/utils/names.py b/src/utils/names.py deleted file mode 100644 index 78e1332..0000000 --- a/src/utils/names.py +++ /dev/null @@ -1,110 +0,0 @@ -import random -from typing import Optional -from src.classes.avatar import Gender -from src.classes.sect import Sect - -""" -仙侠风格姓名数据库 -包含50个姓氏和200个名字(男女各100个) -""" - -# 50个仙侠风格的姓氏 -SURNAMES = [ - "司马", "慕容", "上官", "独孤", "东方", "南宫", "西门", "北冥", "欧阳", "夏侯", - "令狐", "诸葛", "皇甫", "公孙", "轩辕", "百里", "呼延", "闻人", "长孙", "段干", - "云", "叶", "夜", "风", "霜", "雪", "星", "月", "冷", "凌", - "苏", "陆", "萧", "林", "君", "墨", "白", "顾", "秦", "楚", - "赵", "唐", "韩", "魏", "宋", "齐", "燕", "晋", "陈", "李" -] - -# 200个仙侠风格的名字 -MALE_GIVEN_NAMES = [ - # 男性名字 (100个) - "逍遥", "无极", "天行", "凌云", "破晓", "斩风", "御风", "追星", "景天", "清源", - "玄机", "天骄", "无双", "惊鸿", "绝尘", "傲天", "剑心", "风华", "无尘", "天启", - "墨染", "凌霄", "天羽", "星辰", "飞雪", "幽冥", "天籁", "破军", "神威", "无痕", - "天策", "剑魂", "风流", "绝世", "天命", "扶摇", "傲骨", "星河", "天机", "风云", - "天成", "无忧", "破空", "凌波", "天涯", "风尘", "玄凌", "天阙", "元衡", "剑尘", - # 新增的50个仙侠风格名字 - "云霄", "青玄", "玄霄", "沧澜", "断尘", "清尘", "承影", "寒月", "晨旭", "破阵", - "北辰", "南斗", "青冥", "太虚", "玄空", "长生", "寒川", "寒星", "惊雷", "苍穹", - "辰渊", "赤霄", "炎霆", "逐霜", "啸月", "逐风", "青穹", "玄霜", "白羽", "青羽", - "紫霄", "云衡", "星衡", "沧海", "霆骁", "擎天", "孤川", "孤鸿", "墨白", "清越", - "青霖", "驭风", "重楼", "寒洲", "星阑", "子陵", "元诚", "行舟", "凌寒", "青霜" -] - -FEMALE_GIVEN_NAMES = [ - # 女性名字 (100个) - "如雪", "若梦", "凝香", "紫霞", "月华", "清音", "蝶舞", "花颜", "雅韵", "诗涵", - "静雯", "慕蓉", "婉儿", "柔情", "霓裳", "晚颜", "如烟", "妙音", "冰心", "玉颜", - "如玉", "清影", "梦瑶", "紫嫣", "霜华", "若水", "青莲", "雪儿", "慧心", "素衣", - "如意", "诗雨", "梦蝶", "紫萱", "冰莲", "若兰", "清雅", "雪梅", "慕雪", "天音", - "如风", "诗韵", "梦云", "紫烟", "冰雪", "若霜", "清秋", "雪莲", "慕凝", "天香", - # 新增的50个仙侠风格名字 - "月影", "青衣", "素心", "霜凝", "清欢", "暮雪", "月灵", "云岚", "灵汐", "冷月", - "冰瑶", "玄月", "青璇", "紫凝", "雪鸢", "绛霓", "绯烟", "流苏", "墨琴", "断晴", - "雨霖", "归晚", "临渊", "婵娟", "听雪", "凝霜", "岚烟", "疏影", "清宵", "流萤", - "夜阑", "素锦", "锦瑟", "孤鸢", "青萝", "碧落", "飞霜", "无霜", "明玥", "皎月", - "醉花", "半夏", "初霁", "白芷", "青黛", "灵芸", "绮罗", "初晴", "寒烟", "月珑" -] - -def get_random_male_name(): - """ - 获取随机男性全名 - """ - return random.choice(SURNAMES) + random.choice(MALE_GIVEN_NAMES) - -def get_random_female_name(): - """ - 获取随机女性全名 - """ - return random.choice(SURNAMES) + random.choice(FEMALE_GIVEN_NAMES) - -def get_random_name(gender: Gender) -> str: - """ - 获取随机全名 - """ - if gender == Gender.MALE: - return get_random_male_name() - else: - return get_random_female_name() - - -def get_random_name_for_sect(gender: Gender, sect: Optional[Sect]) -> str: - """ - 基于宗门生成姓名:优先使用宗门常见姓与性别对应名,若缺失则回退到全局库。 - """ - surname = pick_surname_for_sect(sect) - given_pool = get_given_pool_for_sect(gender, sect) - return surname + random.choice(given_pool) - - -# —— 新增:基于指定姓氏与宗门风格生成姓名 —— -def pick_surname_for_sect(sect: Optional[Sect]) -> str: - """ - 从宗门常见姓或全局库中挑选一个姓氏。 - """ - if sect is not None and sect.sect_surnames: - return random.choice(sect.sect_surnames) - return random.choice(SURNAMES) - - -def get_given_pool_for_sect(gender: Gender, sect: Optional[Sect]) -> list[str]: - """ - 返回给定性别与宗门下的名库(回退到全局)。 - """ - if sect is None: - return MALE_GIVEN_NAMES if gender == Gender.MALE else FEMALE_GIVEN_NAMES - if gender == Gender.MALE: - return sect.male_sect_given_names or MALE_GIVEN_NAMES - return sect.female_sect_given_names or FEMALE_GIVEN_NAMES - - -def get_random_name_with_surname(gender: Gender, surname: str, sect: Optional[Sect]) -> str: - """ - 使用给定姓氏,结合宗门偏好名库生成姓名;若宗门未配置则回退全局。 - """ - if not surname: - return get_random_name_for_sect(gender, sect) - given_pool = get_given_pool_for_sect(gender, sect) - return surname + random.choice(given_pool) \ No newline at end of file diff --git a/static/game_configs/given_name.csv b/static/game_configs/given_name.csv new file mode 100644 index 0000000..fff22e0 --- /dev/null +++ b/static/game_configs/given_name.csv @@ -0,0 +1,433 @@ +given_name,gender,sect,cond +名字,性别(男/女),宗门名称(空=散修通用),条件(暂不用) +逍遥,男,, +无极,男,, +天行,男,, +凌云,男,, +破晓,男,, +斩风,男,, +御风,男,, +追星,男,, +景天,男,, +清源,男,, +玄机,男,, +天骄,男,, +无双,男,, +惊鸿,男,, +绝尘,男,, +傲天,男,, +剑心,男,, +风华,男,, +无尘,男,, +天启,男,, +墨染,男,, +凌霄,男,, +天羽,男,, +星辰,男,, +飞雪,男,, +幽冥,男,, +天籁,男,, +破军,男,, +神威,男,, +无痕,男,, +天策,男,, +剑魂,男,, +风流,男,, +绝世,男,, +天命,男,, +扶摇,男,, +傲骨,男,, +星河,男,, +天机,男,, +风云,男,, +天成,男,, +无忧,男,, +破空,男,, +凌波,男,, +天涯,男,, +风尘,男,, +玄凌,男,, +天阙,男,, +元衡,男,, +剑尘,男,, +云霄,男,, +青玄,男,, +玄霄,男,, +沧澜,男,, +断尘,男,, +清尘,男,, +承影,男,, +寒月,男,, +晨旭,男,, +破阵,男,, +北辰,男,, +南斗,男,, +青冥,男,, +太虚,男,, +玄空,男,, +长生,男,, +寒川,男,, +寒星,男,, +惊雷,男,, +苍穹,男,, +辰渊,男,, +赤霄,男,, +炎霆,男,, +逐霜,男,, +啸月,男,, +逐风,男,, +青穹,男,, +玄霜,男,, +白羽,男,, +青羽,男,, +紫霄,男,, +云衡,男,, +星衡,男,, +沧海,男,, +霆骁,男,, +擎天,男,, +孤川,男,, +孤鸿,男,, +墨白,男,, +清越,男,, +青霖,男,, +驭风,男,, +重楼,男,, +寒洲,男,, +星阑,男,, +子陵,男,, +元诚,男,, +行舟,男,, +凌寒,男,, +青霜,男,, +如雪,女,, +若梦,女,, +凝香,女,, +紫霞,女,, +月华,女,, +清音,女,, +蝶舞,女,, +花颜,女,, +雅韵,女,, +诗涵,女,, +静雯,女,, +慕蓉,女,, +婉儿,女,, +柔情,女,, +霓裳,女,, +晚颜,女,, +如烟,女,, +妙音,女,, +冰心,女,, +玉颜,女,, +如玉,女,, +清影,女,, +梦瑶,女,, +紫嫣,女,, +霜华,女,, +若水,女,, +青莲,女,, +雪儿,女,, +慧心,女,, +素衣,女,, +如意,女,, +诗雨,女,, +梦蝶,女,, +紫萱,女,, +冰莲,女,, +若兰,女,, +清雅,女,, +雪梅,女,, +慕雪,女,, +天音,女,, +如风,女,, +诗韵,女,, +梦云,女,, +紫烟,女,, +冰雪,女,, +若霜,女,, +清秋,女,, +雪莲,女,, +慕凝,女,, +天香,女,, +月影,女,, +青衣,女,, +素心,女,, +霜凝,女,, +清欢,女,, +暮雪,女,, +月灵,女,, +云岚,女,, +灵汐,女,, +冷月,女,, +冰瑶,女,, +玄月,女,, +青璇,女,, +紫凝,女,, +雪鸢,女,, +绛霓,女,, +绯烟,女,, +流苏,女,, +墨琴,女,, +断晴,女,, +雨霖,女,, +归晚,女,, +临渊,女,, +婵娟,女,, +听雪,女,, +凝霜,女,, +岚烟,女,, +疏影,女,, +清宵,女,, +流萤,女,, +夜阑,女,, +素锦,女,, +锦瑟,女,, +孤鸢,女,, +青萝,女,, +碧落,女,, +飞霜,女,, +无霜,女,, +明玥,女,, +皎月,女,, +醉花,女,, +半夏,女,, +初霁,女,, +白芷,女,, +青黛,女,, +灵芸,女,, +绮罗,女,, +初晴,女,, +寒烟,女,, +月珑,女,, +澄川,男,明心剑宗, +宏石,男,明心剑宗, +磐岳,男,明心剑宗, +霆岱,男,明心剑宗, +寂岚,男,明心剑宗, +久安,男,明心剑宗, +宸秋,男,明心剑宗, +烁离,男,明心剑宗, +沧岳,男,明心剑宗, +砺锋,男,明心剑宗, +炎洲,男,明心剑宗, +远歌,男,明心剑宗, +采微,女,明心剑宗, +霏岚,女,明心剑宗, +韶华,女,明心剑宗, +绮澜,女,明心剑宗, +珠影,女,明心剑宗, +远岫,女,明心剑宗, +若水,女,明心剑宗, +凝香,女,明心剑宗, +雪瑶,女,明心剑宗, +南絮,女,明心剑宗, +轻萝,女,明心剑宗, +宛竹,女,明心剑宗, +驼王,男,百兽宗, +飞熊,男,百兽宗, +虎魄,男,百兽宗, +狼行,男,百兽宗, +熊罡,男,百兽宗, +白猿,男,百兽宗, +石坚,男,百兽宗, +山岚,男,百兽宗, +青鬃,男,百兽宗, +玄爪,男,百兽宗, +金瞳,男,百兽宗, +裂爪,男,百兽宗, +破角,男,百兽宗, +狂鬃,男,百兽宗, +赤鬣,男,百兽宗, +苍隼,男,百兽宗, +啸风,男,百兽宗, +裂岩,男,百兽宗, +狐绮,女,百兽宗, +白貂,女,百兽宗, +青翎,女,百兽宗, +雪牙,女,百兽宗, +赤羽,女,百兽宗, +玄狸,女,百兽宗, +灵爪,女,百兽宗, +月狐,女,百兽宗, +银鳞,女,百兽宗, +霜蹄,女,百兽宗, +云貉,女,百兽宗, +绒尾,女,百兽宗, +锦狐,女,百兽宗, +轻蹄,女,百兽宗, +涟光,男,水镜宗, +沧浪,男,水镜宗, +泽远,男,水镜宗, +浩川,男,水镜宗, +泊舟,男,水镜宗, +涓石,男,水镜宗, +溪原,男,水镜宗, +涵舟,男,水镜宗, +泠曜,男,水镜宗, +漪岑,男,水镜宗, +淞岳,男,水镜宗, +涔雨,男,水镜宗, +漫霖,女,水镜宗, +洛漪,女,水镜宗, +潋月,女,水镜宗, +涵烟,女,水镜宗, +沁波,女,水镜宗, +翠波,女,水镜宗, +漫葭,女,水镜宗, +汀兰,女,水镜宗, +潭歌,女,水镜宗, +涓玥,女,水镜宗, +澧宁,女,水镜宗, +潇然,女,水镜宗, +血燎,男,冥王宗, +焚魄,男,冥王宗, +灰灭,男,冥王宗, +殁川,男,冥王宗, +绝尘,男,冥王宗, +厌离,男,冥王宗, +朔寒,男,冥王宗, +邪风,男,冥王宗, +归墟,男,冥王宗, +朽骨,男,冥王宗, +朔月,男,冥王宗, +止戈,男,冥王宗, +寒绫,女,冥王宗, +霜瑶,女,冥王宗, +凄歌,女,冥王宗, +素鸢,女,冥王宗, +祭宁,女,冥王宗, +黛魂,女,冥王宗, +夙梦,女,冥王宗, +绫雪,女,冥王宗, +凛珑,女,冥王宗, +霁月,女,冥王宗, +旷音,女,冥王宗, +凝岚,女,冥王宗, +暗阑,男,朱勾宗, +机括,男,朱勾宗, +鬼匣,男,朱勾宗, +夜禁,男,朱勾宗, +幻锁,男,朱勾宗, +残锋,男,朱勾宗, +暗弦,男,朱勾宗, +影栅,男,朱勾宗, +幽钩,男,朱勾宗, +断线,男,朱勾宗, +潜匿,男,朱勾宗, +迷踪,男,朱勾宗, +玄簪,女,朱勾宗, +霜绡,女,朱勾宗, +纤罗,女,朱勾宗, +碎玉,女,朱勾宗, +影裳,女,朱勾宗, +轻弦,女,朱勾宗, +凝黛,女,朱勾宗, +凝烟,女,朱勾宗, +冷珥,女,朱勾宗, +素纱,女,朱勾宗, +凛钗,女,朱勾宗, +寒袖,女,朱勾宗, +流烟,男,合欢宗, +迟夜,男,合欢宗, +长陌,男,合欢宗, +归舟,男,合欢宗, +暮成,男,合欢宗, +远辞,男,合欢宗, +行止,男,合欢宗, +轻寒,男,合欢宗, +沉香,男,合欢宗, +野鹤,男,合欢宗, +乘风,男,合欢宗, +婉心,女,合欢宗, +轻柔,女,合欢宗, +疏影,女,合欢宗, +如梦,女,合欢宗, +绮念,女,合欢宗, +惜香,女,合欢宗, +慕雪,女,合欢宗, +倾城,女,合欢宗, +绯烟,女,合欢宗, +晚晴,女,合欢宗, +素袖,女,合欢宗, +霁眉,女,合欢宗, +绸缪,女,合欢宗, +静妍,女,合欢宗, +安魄,男,镇魂宗, +靖川,男,镇魂宗, +霁阳,男,镇魂宗, +季衡,男,镇魂宗, +砺甲,男,镇魂宗, +烁锋,男,镇魂宗, +昊戈,男,镇魂宗, +祁光,男,镇魂宗, +漠石,男,镇魂宗, +启封,男,镇魂宗, +殷策,男,镇魂宗, +定魄,男,镇魂宗, +清宁,女,镇魂宗, +素铃,女,镇魂宗, +靖霜,女,镇魂宗, +澄心,女,镇魂宗, +霁雪,女,镇魂宗, +安祈,女,镇魂宗, +净月,女,镇魂宗, +宁枝,女,镇魂宗, +祷绫,女,镇魂宗, +明槐,女,镇魂宗, +采霁,女,镇魂宗, +定寒,女,镇魂宗, +噬影,男,幽魂噬影宗, +无藏,男,幽魂噬影宗, +绝响,男,幽魂噬影宗, +断痕,男,幽魂噬影宗, +影渊,男,幽魂噬影宗, +暗行,男,幽魂噬影宗, +潜踪,男,幽魂噬影宗, +魄隐,男,幽魂噬影宗, +迷雾,男,幽魂噬影宗, +空蝉,男,幽魂噬影宗, +断念,男,幽魂噬影宗, +裂隙,男,幽魂噬影宗, +影绫,女,幽魂噬影宗, +暗萝,女,幽魂噬影宗, +霜绡,女,幽魂噬影宗, +素鹭,女,幽魂噬影宗, +玄绮,女,幽魂噬影宗, +凝灯,女,幽魂噬影宗, +绫岚,女,幽魂噬影宗, +凛铃,女,幽魂噬影宗, +朔华,女,幽魂噬影宗, +漠音,女,幽魂噬影宗, +宵岑,女,幽魂噬影宗, +泠歌,女,幽魂噬影宗, +持衡,男,千帆城, +清评,男,千帆城, +问价,男,千帆城, +立契,男,千帆城, +通衡,男,千帆城, +问道,男,千帆城, +理市,男,千帆城, +衡准,男,千帆城, +守约,男,千帆城, +筑匠,男,千帆城, +铸衡,男,千帆城, +估算,男,千帆城, +素蓝,女,千帆城, +明衡,女,千帆城, +巧心,女,千帆城, +青帆,女,千帆城, +绫舟,女,千帆城, +观星,女,千帆城, +衡绫,女,千帆城, +星槎,女,千帆城, +织霓,女,千帆城, +采绫,女,千帆城, +芸巧,女,千帆城, +霁行,女,千帆城, +砚秋,女,千帆城, +镶玑,女,千帆城, +绘蓝,女,千帆城, +银梭,女,千帆城, +珩心,女,千帆城, + diff --git a/static/game_configs/last_name.csv b/static/game_configs/last_name.csv new file mode 100644 index 0000000..7bc10ea --- /dev/null +++ b/static/game_configs/last_name.csv @@ -0,0 +1,101 @@ +last_name,sect,cond +姓氏,宗门名称(空=散修通用),条件(暂不用) +司马,, +慕容,, +上官,, +独孤,, +东方,, +南宫,, +西门,, +北冥,, +欧阳,, +夏侯,, +令狐,, +诸葛,, +皇甫,, +公孙,, +轩辕,, +百里,, +呼延,, +闻人,, +长孙,, +段干,, +云,, +叶,, +夜,, +风,, +霜,, +雪,, +星,, +月,, +冷,, +凌,, +苏,, +陆,, +萧,, +林,, +君,, +墨,, +白,, +顾,, +秦,, +楚,, +赵,, +唐,, +韩,, +魏,, +宋,, +齐,, +燕,, +晋,, +陈,, +李,, +明,明心剑宗, +心,明心剑宗, +剑,明心剑宗, +霄,明心剑宗, +玄,明心剑宗, +霁,明心剑宗, +衡,明心剑宗, +孤,明心剑宗, +徽,明心剑宗, +肃,明心剑宗, +水,水镜宗, +镜,水镜宗, +寒,水镜宗, +清,水镜宗, +沐,水镜宗, +澜,水镜宗, +渊,水镜宗, +泉,水镜宗, +冥,冥王宗, +王,冥王宗, +幽,冥王宗, +狱,冥王宗, +魇,冥王宗, +阴,冥王宗, +朱,朱勾宗, +绯,朱勾宗, +刃,朱勾宗, +戮,朱勾宗, +蚀,朱勾宗, +钧,朱勾宗, +鸦,朱勾宗, +殷,朱勾宗, +合,合欢宗, +欢,合欢宗, +柳,合欢宗, +花,合欢宗, +厉,镇魂宗, +卢,镇魂宗, +镇,镇魂宗, +魂,镇魂宗, +钟,镇魂宗, +青,镇魂宗, +阎,幽魂噬影宗, +鬼,幽魂噬影宗, +归,幽魂噬影宗, +应,幽魂噬影宗, +魅,幽魂噬影宗, +商,千帆城, + diff --git a/tests/test_basic.py b/tests/test_basic.py index aae7be0..a207af0 100644 --- a/tests/test_basic.py +++ b/tests/test_basic.py @@ -2,10 +2,11 @@ from src.utils.id_generator import get_avatar_id from src.classes.avatar import Avatar, Gender from src.classes.calendar import Month, Year, MonthStamp, create_month_stamp from src.classes.world import World -from src.classes.tile import Map, TileType +from src.classes.map import Map +from src.classes.tile import TileType from src.classes.age import Age from src.classes.cultivation import Realm -from src.utils.names import get_random_name +from src.classes.name import get_random_name def test_basic(): """ diff --git a/tests/test_simulator.py b/tests/test_simulator.py index 2615cd1..eac69ae 100644 --- a/tests/test_simulator.py +++ b/tests/test_simulator.py @@ -4,9 +4,10 @@ from src.sim.simulator import Simulator from src.classes.avatar import Avatar, Gender from src.classes.calendar import Month, Year, MonthStamp, create_month_stamp from src.classes.world import World -from src.classes.tile import Map, TileType +from src.classes.map import Map +from src.classes.tile import TileType from src.classes.action import Move -from src.utils.names import get_random_name +from src.classes.name import get_random_name def test_simulator_step_moves_avatar_and_sets_tile():