refactor name logic

This commit is contained in:
bridge
2025-11-02 21:01:30 +08:00
parent 272ba8d9d8
commit c5c6c640b7
9 changed files with 740 additions and 117 deletions

197
src/classes/name.py Normal file
View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -0,0 +1,433 @@
given_name,gender,sect,cond
名字,性别(男/女),宗门名称(空=散修通用),条件(暂不用)
逍遥,,,
无极,,,
天行,,,
凌云,,,
破晓,,,
斩风,,,
御风,,,
追星,,,
景天,,,
清源,,,
玄机,,,
天骄,,,
无双,,,
惊鸿,,,
绝尘,,,
傲天,,,
剑心,,,
风华,,,
无尘,,,
天启,,,
墨染,,,
凌霄,,,
天羽,,,
星辰,,,
飞雪,,,
幽冥,,,
天籁,,,
破军,,,
神威,,,
无痕,,,
天策,,,
剑魂,,,
风流,,,
绝世,,,
天命,,,
扶摇,,,
傲骨,,,
星河,,,
天机,,,
风云,,,
天成,,,
无忧,,,
破空,,,
凌波,,,
天涯,,,
风尘,,,
玄凌,,,
天阙,,,
元衡,,,
剑尘,,,
云霄,,,
青玄,,,
玄霄,,,
沧澜,,,
断尘,,,
清尘,,,
承影,,,
寒月,,,
晨旭,,,
破阵,,,
北辰,,,
南斗,,,
青冥,,,
太虚,,,
玄空,,,
长生,,,
寒川,,,
寒星,,,
惊雷,,,
苍穹,,,
辰渊,,,
赤霄,,,
炎霆,,,
逐霜,,,
啸月,,,
逐风,,,
青穹,,,
玄霜,,,
白羽,,,
青羽,,,
紫霄,,,
云衡,,,
星衡,,,
沧海,,,
霆骁,,,
擎天,,,
孤川,,,
孤鸿,,,
墨白,,,
清越,,,
青霖,,,
驭风,,,
重楼,,,
寒洲,,,
星阑,,,
子陵,,,
元诚,,,
行舟,,,
凌寒,,,
青霜,,,
如雪,,,
若梦,,,
凝香,,,
紫霞,,,
月华,,,
清音,,,
蝶舞,,,
花颜,,,
雅韵,,,
诗涵,,,
静雯,,,
慕蓉,,,
婉儿,,,
柔情,,,
霓裳,,,
晚颜,,,
如烟,,,
妙音,,,
冰心,,,
玉颜,,,
如玉,,,
清影,,,
梦瑶,,,
紫嫣,,,
霜华,,,
若水,,,
青莲,,,
雪儿,,,
慧心,,,
素衣,,,
如意,,,
诗雨,,,
梦蝶,,,
紫萱,,,
冰莲,,,
若兰,,,
清雅,,,
雪梅,,,
慕雪,,,
天音,,,
如风,,,
诗韵,,,
梦云,,,
紫烟,,,
冰雪,,,
若霜,,,
清秋,,,
雪莲,,,
慕凝,,,
天香,,,
月影,,,
青衣,,,
素心,,,
霜凝,,,
清欢,,,
暮雪,,,
月灵,,,
云岚,,,
灵汐,,,
冷月,,,
冰瑶,,,
玄月,,,
青璇,,,
紫凝,,,
雪鸢,,,
绛霓,,,
绯烟,,,
流苏,,,
墨琴,,,
断晴,,,
雨霖,,,
归晚,,,
临渊,,,
婵娟,,,
听雪,,,
凝霜,,,
岚烟,,,
疏影,,,
清宵,,,
流萤,,,
夜阑,,,
素锦,,,
锦瑟,,,
孤鸢,,,
青萝,,,
碧落,,,
飞霜,,,
无霜,,,
明玥,,,
皎月,,,
醉花,,,
半夏,,,
初霁,,,
白芷,,,
青黛,,,
灵芸,,,
绮罗,,,
初晴,,,
寒烟,,,
月珑,,,
澄川,,明心剑宗,
宏石,,明心剑宗,
磐岳,,明心剑宗,
霆岱,,明心剑宗,
寂岚,,明心剑宗,
久安,,明心剑宗,
宸秋,,明心剑宗,
烁离,,明心剑宗,
沧岳,,明心剑宗,
砺锋,,明心剑宗,
炎洲,,明心剑宗,
远歌,,明心剑宗,
采微,,明心剑宗,
霏岚,,明心剑宗,
韶华,,明心剑宗,
绮澜,,明心剑宗,
珠影,,明心剑宗,
远岫,,明心剑宗,
若水,,明心剑宗,
凝香,,明心剑宗,
雪瑶,,明心剑宗,
南絮,,明心剑宗,
轻萝,,明心剑宗,
宛竹,,明心剑宗,
驼王,,百兽宗,
飞熊,,百兽宗,
虎魄,,百兽宗,
狼行,,百兽宗,
熊罡,,百兽宗,
白猿,,百兽宗,
石坚,,百兽宗,
山岚,,百兽宗,
青鬃,,百兽宗,
玄爪,,百兽宗,
金瞳,,百兽宗,
裂爪,,百兽宗,
破角,,百兽宗,
狂鬃,,百兽宗,
赤鬣,,百兽宗,
苍隼,,百兽宗,
啸风,,百兽宗,
裂岩,,百兽宗,
狐绮,,百兽宗,
白貂,,百兽宗,
青翎,,百兽宗,
雪牙,,百兽宗,
赤羽,,百兽宗,
玄狸,,百兽宗,
灵爪,,百兽宗,
月狐,,百兽宗,
银鳞,,百兽宗,
霜蹄,,百兽宗,
云貉,,百兽宗,
绒尾,,百兽宗,
锦狐,,百兽宗,
轻蹄,,百兽宗,
涟光,,水镜宗,
沧浪,,水镜宗,
泽远,,水镜宗,
浩川,,水镜宗,
泊舟,,水镜宗,
涓石,,水镜宗,
溪原,,水镜宗,
涵舟,,水镜宗,
泠曜,,水镜宗,
漪岑,,水镜宗,
淞岳,,水镜宗,
涔雨,,水镜宗,
漫霖,,水镜宗,
洛漪,,水镜宗,
潋月,,水镜宗,
涵烟,,水镜宗,
沁波,,水镜宗,
翠波,,水镜宗,
漫葭,,水镜宗,
汀兰,,水镜宗,
潭歌,,水镜宗,
涓玥,,水镜宗,
澧宁,,水镜宗,
潇然,,水镜宗,
血燎,,冥王宗,
焚魄,,冥王宗,
灰灭,,冥王宗,
殁川,,冥王宗,
绝尘,,冥王宗,
厌离,,冥王宗,
朔寒,,冥王宗,
邪风,,冥王宗,
归墟,,冥王宗,
朽骨,,冥王宗,
朔月,,冥王宗,
止戈,,冥王宗,
寒绫,,冥王宗,
霜瑶,,冥王宗,
凄歌,,冥王宗,
素鸢,,冥王宗,
祭宁,,冥王宗,
黛魂,,冥王宗,
夙梦,,冥王宗,
绫雪,,冥王宗,
凛珑,,冥王宗,
霁月,,冥王宗,
旷音,,冥王宗,
凝岚,,冥王宗,
暗阑,,朱勾宗,
机括,,朱勾宗,
鬼匣,,朱勾宗,
夜禁,,朱勾宗,
幻锁,,朱勾宗,
残锋,,朱勾宗,
暗弦,,朱勾宗,
影栅,,朱勾宗,
幽钩,,朱勾宗,
断线,,朱勾宗,
潜匿,,朱勾宗,
迷踪,,朱勾宗,
玄簪,,朱勾宗,
霜绡,,朱勾宗,
纤罗,,朱勾宗,
碎玉,,朱勾宗,
影裳,,朱勾宗,
轻弦,,朱勾宗,
凝黛,,朱勾宗,
凝烟,,朱勾宗,
冷珥,,朱勾宗,
素纱,,朱勾宗,
凛钗,,朱勾宗,
寒袖,,朱勾宗,
流烟,,合欢宗,
迟夜,,合欢宗,
长陌,,合欢宗,
归舟,,合欢宗,
暮成,,合欢宗,
远辞,,合欢宗,
行止,,合欢宗,
轻寒,,合欢宗,
沉香,,合欢宗,
野鹤,,合欢宗,
乘风,,合欢宗,
婉心,,合欢宗,
轻柔,,合欢宗,
疏影,,合欢宗,
如梦,,合欢宗,
绮念,,合欢宗,
惜香,,合欢宗,
慕雪,,合欢宗,
倾城,,合欢宗,
绯烟,,合欢宗,
晚晴,,合欢宗,
素袖,,合欢宗,
霁眉,,合欢宗,
绸缪,,合欢宗,
静妍,,合欢宗,
安魄,,镇魂宗,
靖川,,镇魂宗,
霁阳,,镇魂宗,
季衡,,镇魂宗,
砺甲,,镇魂宗,
烁锋,,镇魂宗,
昊戈,,镇魂宗,
祁光,,镇魂宗,
漠石,,镇魂宗,
启封,,镇魂宗,
殷策,,镇魂宗,
定魄,,镇魂宗,
清宁,,镇魂宗,
素铃,,镇魂宗,
靖霜,,镇魂宗,
澄心,,镇魂宗,
霁雪,,镇魂宗,
安祈,,镇魂宗,
净月,,镇魂宗,
宁枝,,镇魂宗,
祷绫,,镇魂宗,
明槐,,镇魂宗,
采霁,,镇魂宗,
定寒,,镇魂宗,
噬影,,幽魂噬影宗,
无藏,,幽魂噬影宗,
绝响,,幽魂噬影宗,
断痕,,幽魂噬影宗,
影渊,,幽魂噬影宗,
暗行,,幽魂噬影宗,
潜踪,,幽魂噬影宗,
魄隐,,幽魂噬影宗,
迷雾,,幽魂噬影宗,
空蝉,,幽魂噬影宗,
断念,,幽魂噬影宗,
裂隙,,幽魂噬影宗,
影绫,,幽魂噬影宗,
暗萝,,幽魂噬影宗,
霜绡,,幽魂噬影宗,
素鹭,,幽魂噬影宗,
玄绮,,幽魂噬影宗,
凝灯,,幽魂噬影宗,
绫岚,,幽魂噬影宗,
凛铃,,幽魂噬影宗,
朔华,,幽魂噬影宗,
漠音,,幽魂噬影宗,
宵岑,,幽魂噬影宗,
泠歌,,幽魂噬影宗,
持衡,,千帆城,
清评,,千帆城,
问价,,千帆城,
立契,,千帆城,
通衡,,千帆城,
问道,,千帆城,
理市,,千帆城,
衡准,,千帆城,
守约,,千帆城,
筑匠,,千帆城,
铸衡,,千帆城,
估算,,千帆城,
素蓝,,千帆城,
明衡,,千帆城,
巧心,,千帆城,
青帆,,千帆城,
绫舟,,千帆城,
观星,,千帆城,
衡绫,,千帆城,
星槎,,千帆城,
织霓,,千帆城,
采绫,,千帆城,
芸巧,,千帆城,
霁行,,千帆城,
砚秋,,千帆城,
镶玑,,千帆城,
绘蓝,,千帆城,
银梭,,千帆城,
珩心,,千帆城,
1 given_name gender sect cond
2 名字 性别(男/女) 宗门名称(空=散修通用) 条件(暂不用)
3 逍遥
4 无极
5 天行
6 凌云
7 破晓
8 斩风
9 御风
10 追星
11 景天
12 清源
13 玄机
14 天骄
15 无双
16 惊鸿
17 绝尘
18 傲天
19 剑心
20 风华
21 无尘
22 天启
23 墨染
24 凌霄
25 天羽
26 星辰
27 飞雪
28 幽冥
29 天籁
30 破军
31 神威
32 无痕
33 天策
34 剑魂
35 风流
36 绝世
37 天命
38 扶摇
39 傲骨
40 星河
41 天机
42 风云
43 天成
44 无忧
45 破空
46 凌波
47 天涯
48 风尘
49 玄凌
50 天阙
51 元衡
52 剑尘
53 云霄
54 青玄
55 玄霄
56 沧澜
57 断尘
58 清尘
59 承影
60 寒月
61 晨旭
62 破阵
63 北辰
64 南斗
65 青冥
66 太虚
67 玄空
68 长生
69 寒川
70 寒星
71 惊雷
72 苍穹
73 辰渊
74 赤霄
75 炎霆
76 逐霜
77 啸月
78 逐风
79 青穹
80 玄霜
81 白羽
82 青羽
83 紫霄
84 云衡
85 星衡
86 沧海
87 霆骁
88 擎天
89 孤川
90 孤鸿
91 墨白
92 清越
93 青霖
94 驭风
95 重楼
96 寒洲
97 星阑
98 子陵
99 元诚
100 行舟
101 凌寒
102 青霜
103 如雪
104 若梦
105 凝香
106 紫霞
107 月华
108 清音
109 蝶舞
110 花颜
111 雅韵
112 诗涵
113 静雯
114 慕蓉
115 婉儿
116 柔情
117 霓裳
118 晚颜
119 如烟
120 妙音
121 冰心
122 玉颜
123 如玉
124 清影
125 梦瑶
126 紫嫣
127 霜华
128 若水
129 青莲
130 雪儿
131 慧心
132 素衣
133 如意
134 诗雨
135 梦蝶
136 紫萱
137 冰莲
138 若兰
139 清雅
140 雪梅
141 慕雪
142 天音
143 如风
144 诗韵
145 梦云
146 紫烟
147 冰雪
148 若霜
149 清秋
150 雪莲
151 慕凝
152 天香
153 月影
154 青衣
155 素心
156 霜凝
157 清欢
158 暮雪
159 月灵
160 云岚
161 灵汐
162 冷月
163 冰瑶
164 玄月
165 青璇
166 紫凝
167 雪鸢
168 绛霓
169 绯烟
170 流苏
171 墨琴
172 断晴
173 雨霖
174 归晚
175 临渊
176 婵娟
177 听雪
178 凝霜
179 岚烟
180 疏影
181 清宵
182 流萤
183 夜阑
184 素锦
185 锦瑟
186 孤鸢
187 青萝
188 碧落
189 飞霜
190 无霜
191 明玥
192 皎月
193 醉花
194 半夏
195 初霁
196 白芷
197 青黛
198 灵芸
199 绮罗
200 初晴
201 寒烟
202 月珑
203 澄川 明心剑宗
204 宏石 明心剑宗
205 磐岳 明心剑宗
206 霆岱 明心剑宗
207 寂岚 明心剑宗
208 久安 明心剑宗
209 宸秋 明心剑宗
210 烁离 明心剑宗
211 沧岳 明心剑宗
212 砺锋 明心剑宗
213 炎洲 明心剑宗
214 远歌 明心剑宗
215 采微 明心剑宗
216 霏岚 明心剑宗
217 韶华 明心剑宗
218 绮澜 明心剑宗
219 珠影 明心剑宗
220 远岫 明心剑宗
221 若水 明心剑宗
222 凝香 明心剑宗
223 雪瑶 明心剑宗
224 南絮 明心剑宗
225 轻萝 明心剑宗
226 宛竹 明心剑宗
227 驼王 百兽宗
228 飞熊 百兽宗
229 虎魄 百兽宗
230 狼行 百兽宗
231 熊罡 百兽宗
232 白猿 百兽宗
233 石坚 百兽宗
234 山岚 百兽宗
235 青鬃 百兽宗
236 玄爪 百兽宗
237 金瞳 百兽宗
238 裂爪 百兽宗
239 破角 百兽宗
240 狂鬃 百兽宗
241 赤鬣 百兽宗
242 苍隼 百兽宗
243 啸风 百兽宗
244 裂岩 百兽宗
245 狐绮 百兽宗
246 白貂 百兽宗
247 青翎 百兽宗
248 雪牙 百兽宗
249 赤羽 百兽宗
250 玄狸 百兽宗
251 灵爪 百兽宗
252 月狐 百兽宗
253 银鳞 百兽宗
254 霜蹄 百兽宗
255 云貉 百兽宗
256 绒尾 百兽宗
257 锦狐 百兽宗
258 轻蹄 百兽宗
259 涟光 水镜宗
260 沧浪 水镜宗
261 泽远 水镜宗
262 浩川 水镜宗
263 泊舟 水镜宗
264 涓石 水镜宗
265 溪原 水镜宗
266 涵舟 水镜宗
267 泠曜 水镜宗
268 漪岑 水镜宗
269 淞岳 水镜宗
270 涔雨 水镜宗
271 漫霖 水镜宗
272 洛漪 水镜宗
273 潋月 水镜宗
274 涵烟 水镜宗
275 沁波 水镜宗
276 翠波 水镜宗
277 漫葭 水镜宗
278 汀兰 水镜宗
279 潭歌 水镜宗
280 涓玥 水镜宗
281 澧宁 水镜宗
282 潇然 水镜宗
283 血燎 冥王宗
284 焚魄 冥王宗
285 灰灭 冥王宗
286 殁川 冥王宗
287 绝尘 冥王宗
288 厌离 冥王宗
289 朔寒 冥王宗
290 邪风 冥王宗
291 归墟 冥王宗
292 朽骨 冥王宗
293 朔月 冥王宗
294 止戈 冥王宗
295 寒绫 冥王宗
296 霜瑶 冥王宗
297 凄歌 冥王宗
298 素鸢 冥王宗
299 祭宁 冥王宗
300 黛魂 冥王宗
301 夙梦 冥王宗
302 绫雪 冥王宗
303 凛珑 冥王宗
304 霁月 冥王宗
305 旷音 冥王宗
306 凝岚 冥王宗
307 暗阑 朱勾宗
308 机括 朱勾宗
309 鬼匣 朱勾宗
310 夜禁 朱勾宗
311 幻锁 朱勾宗
312 残锋 朱勾宗
313 暗弦 朱勾宗
314 影栅 朱勾宗
315 幽钩 朱勾宗
316 断线 朱勾宗
317 潜匿 朱勾宗
318 迷踪 朱勾宗
319 玄簪 朱勾宗
320 霜绡 朱勾宗
321 纤罗 朱勾宗
322 碎玉 朱勾宗
323 影裳 朱勾宗
324 轻弦 朱勾宗
325 凝黛 朱勾宗
326 凝烟 朱勾宗
327 冷珥 朱勾宗
328 素纱 朱勾宗
329 凛钗 朱勾宗
330 寒袖 朱勾宗
331 流烟 合欢宗
332 迟夜 合欢宗
333 长陌 合欢宗
334 归舟 合欢宗
335 暮成 合欢宗
336 远辞 合欢宗
337 行止 合欢宗
338 轻寒 合欢宗
339 沉香 合欢宗
340 野鹤 合欢宗
341 乘风 合欢宗
342 婉心 合欢宗
343 轻柔 合欢宗
344 疏影 合欢宗
345 如梦 合欢宗
346 绮念 合欢宗
347 惜香 合欢宗
348 慕雪 合欢宗
349 倾城 合欢宗
350 绯烟 合欢宗
351 晚晴 合欢宗
352 素袖 合欢宗
353 霁眉 合欢宗
354 绸缪 合欢宗
355 静妍 合欢宗
356 安魄 镇魂宗
357 靖川 镇魂宗
358 霁阳 镇魂宗
359 季衡 镇魂宗
360 砺甲 镇魂宗
361 烁锋 镇魂宗
362 昊戈 镇魂宗
363 祁光 镇魂宗
364 漠石 镇魂宗
365 启封 镇魂宗
366 殷策 镇魂宗
367 定魄 镇魂宗
368 清宁 镇魂宗
369 素铃 镇魂宗
370 靖霜 镇魂宗
371 澄心 镇魂宗
372 霁雪 镇魂宗
373 安祈 镇魂宗
374 净月 镇魂宗
375 宁枝 镇魂宗
376 祷绫 镇魂宗
377 明槐 镇魂宗
378 采霁 镇魂宗
379 定寒 镇魂宗
380 噬影 幽魂噬影宗
381 无藏 幽魂噬影宗
382 绝响 幽魂噬影宗
383 断痕 幽魂噬影宗
384 影渊 幽魂噬影宗
385 暗行 幽魂噬影宗
386 潜踪 幽魂噬影宗
387 魄隐 幽魂噬影宗
388 迷雾 幽魂噬影宗
389 空蝉 幽魂噬影宗
390 断念 幽魂噬影宗
391 裂隙 幽魂噬影宗
392 影绫 幽魂噬影宗
393 暗萝 幽魂噬影宗
394 霜绡 幽魂噬影宗
395 素鹭 幽魂噬影宗
396 玄绮 幽魂噬影宗
397 凝灯 幽魂噬影宗
398 绫岚 幽魂噬影宗
399 凛铃 幽魂噬影宗
400 朔华 幽魂噬影宗
401 漠音 幽魂噬影宗
402 宵岑 幽魂噬影宗
403 泠歌 幽魂噬影宗
404 持衡 千帆城
405 清评 千帆城
406 问价 千帆城
407 立契 千帆城
408 通衡 千帆城
409 问道 千帆城
410 理市 千帆城
411 衡准 千帆城
412 守约 千帆城
413 筑匠 千帆城
414 铸衡 千帆城
415 估算 千帆城
416 素蓝 千帆城
417 明衡 千帆城
418 巧心 千帆城
419 青帆 千帆城
420 绫舟 千帆城
421 观星 千帆城
422 衡绫 千帆城
423 星槎 千帆城
424 织霓 千帆城
425 采绫 千帆城
426 芸巧 千帆城
427 霁行 千帆城
428 砚秋 千帆城
429 镶玑 千帆城
430 绘蓝 千帆城
431 银梭 千帆城
432 珩心 千帆城

View File

@@ -0,0 +1,101 @@
last_name,sect,cond
姓氏,宗门名称(空=散修通用),条件(暂不用)
司马,,
慕容,,
上官,,
独孤,,
东方,,
南宫,,
西门,,
北冥,,
欧阳,,
夏侯,,
令狐,,
诸葛,,
皇甫,,
公孙,,
轩辕,,
百里,,
呼延,,
闻人,,
长孙,,
段干,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,,
,明心剑宗,
,明心剑宗,
,明心剑宗,
,明心剑宗,
,明心剑宗,
,明心剑宗,
,明心剑宗,
,明心剑宗,
,明心剑宗,
,明心剑宗,
,水镜宗,
,水镜宗,
,水镜宗,
,水镜宗,
,水镜宗,
,水镜宗,
,水镜宗,
,水镜宗,
,冥王宗,
,冥王宗,
,冥王宗,
,冥王宗,
,冥王宗,
,冥王宗,
,朱勾宗,
,朱勾宗,
,朱勾宗,
,朱勾宗,
,朱勾宗,
,朱勾宗,
,朱勾宗,
,朱勾宗,
,合欢宗,
,合欢宗,
,合欢宗,
,合欢宗,
,镇魂宗,
,镇魂宗,
,镇魂宗,
,镇魂宗,
,镇魂宗,
,镇魂宗,
,幽魂噬影宗,
,幽魂噬影宗,
,幽魂噬影宗,
,幽魂噬影宗,
,幽魂噬影宗,
,千帆城,
1 last_name sect cond
2 姓氏 宗门名称(空=散修通用) 条件(暂不用)
3 司马
4 慕容
5 上官
6 独孤
7 东方
8 南宫
9 西门
10 北冥
11 欧阳
12 夏侯
13 令狐
14 诸葛
15 皇甫
16 公孙
17 轩辕
18 百里
19 呼延
20 闻人
21 长孙
22 段干
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 明心剑宗
54 明心剑宗
55 明心剑宗
56 明心剑宗
57 明心剑宗
58 明心剑宗
59 明心剑宗
60 明心剑宗
61 明心剑宗
62 明心剑宗
63 水镜宗
64 水镜宗
65 水镜宗
66 水镜宗
67 水镜宗
68 水镜宗
69 水镜宗
70 水镜宗
71 冥王宗
72 冥王宗
73 冥王宗
74 冥王宗
75 冥王宗
76 冥王宗
77 朱勾宗
78 朱勾宗
79 朱勾宗
80 朱勾宗
81 朱勾宗
82 朱勾宗
83 朱勾宗
84 朱勾宗
85 合欢宗
86 合欢宗
87 合欢宗
88 合欢宗
89 镇魂宗
90 镇魂宗
91 镇魂宗
92 镇魂宗
93 镇魂宗
94 镇魂宗
95 幽魂噬影宗
96 幽魂噬影宗
97 幽魂噬影宗
98 幽魂噬影宗
99 幽魂噬影宗
100 千帆城

View File

@@ -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():
"""

View File

@@ -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():