This commit is contained in:
bridge
2025-10-08 21:31:24 +08:00
parent 004e6d34c5
commit a7e2de6783
5 changed files with 96 additions and 2 deletions

View File

@@ -31,6 +31,21 @@ class Alignment(Enum):
return other == self.value or other == str(self)
return False
@staticmethod
def from_str(text: str) -> "Alignment":
"""
将字符串解析为 Alignment支持中文与英文别名。
未识别时返回中立。
"""
t = str(text).strip().lower()
if t in {"", "righteous", "right"}:
return Alignment.RIGHTEOUS
if t in {"", "neutral", "middle", "center"}:
return Alignment.NEUTRAL
if t in {"", "evil"}:
return Alignment.EVIL
return Alignment.NEUTRAL
alignment_strs = {
Alignment.RIGHTEOUS: "",

68
src/classes/sect.py Normal file
View File

@@ -0,0 +1,68 @@
from dataclasses import dataclass
from pathlib import Path
from src.classes.alignment import Alignment
from src.utils.df import game_configs
from src.utils.config import CONFIG
# 宗门驻地
@dataclass
class SectHeadQuarter:
"""
宗门总部
"""
name: str
image: Path
@dataclass
class Sect:
"""
宗门
"""
id: int
name: str
desc: str
member_act_style: str
alignment: Alignment
sect_surnames: list[str]
sect_given_names: list[str]
headquarter: SectHeadQuarter
# 功法在technique.csv中配置
# TODO法宝
# TODO宗内等级和称谓
def _split_names(value: object) -> list[str]:
raw = "" if value is None or str(value) == "nan" else str(value)
sep = CONFIG.df.ids_separator
parts = [x.strip() for x in raw.split(sep) if x.strip()] if raw else []
return parts
def _load_sects() -> tuple[dict[int, Sect], dict[str, Sect]]:
"""从配表加载 sect 数据"""
sects_by_id: dict[int, Sect] = {}
sects_by_name: dict[str, Sect] = {}
df = game_configs["sect"]
assets_base = Path("assets/sects")
for _, row in df.iterrows():
image_path = assets_base / f"{row['name']}.png"
sect = Sect(
id=int(row["id"]),
name=str(row["name"]),
desc=str(row["desc"]),
member_act_style=str(row["member_act_style"]),
alignment=Alignment.from_str(row.get("alignment", "")),
sect_surnames=_split_names(row.get("sect_surnames", "")),
sect_given_names=_split_names(row.get("sect_given_names", "")),
headquarter=SectHeadQuarter(name=str(row["name"]), image=image_path),
)
sects_by_id[sect.id] = sect
sects_by_name[sect.name] = sect
return sects_by_id, sects_by_name
# 导出:从配表加载 sect 数据
sects_by_id, sects_by_name = _load_sects()

View File

@@ -0,0 +1,11 @@
id,name,desc,member_act_style,alignment,sect_surnames,sect_given_names
,,宗门名称与描述,宗门成员行事风格,阵营(正/中/邪),宗门常用姓氏(分号分隔),宗门常用名(分号分隔)
1,明心剑宗,以剑证道,清明克己,行止如一。重剑与心法并重,讲究明心见性。,,明;心;剑;云;白;飞;清;凌;顾;林,清风;明远;问心;凌霄;止水;无尘;素心;明照;心远;雪凝
2,百兽宗,崇尚血脉与搏杀,习驭兽与变身之术,体魄强横。,你是百兽宗弟子。你言语直接,重视力量与血性,崇尚狩猎与搏斗。,,百;熊;虎;狼;猿;牛;白;石;嵩;岳,虎魄;狼行;熊罡;白猿;石坚;山岚;青鬃;玄爪;金瞳;赤鬃
3,水镜宗,以水化镜,以镜照心,术法多幻与反制,攻守如流。,你是水镜宗弟子。你处事冷静圆融,喜以柔克刚,擅借力与反制。,,水;镜;寒;霜;冰;清;沐;阮;顾;白,映月;照心;寒影;秋水;轻漪;雪落;如镜;寒江;青荷;凝霜
4,冥王宗,行走幽冥之道,以冥焰镇压亡魂,术法阴冷狠厉。,你是冥王宗弟子。你言辞冷厉少情,敬畏因果而不惧杀伐,偏向效率与结果。,,冥;王;玄;幽;夜;白;江;冷;燕;楚,冥焰;噬魂;夜阙;幽垣;玄骨;寒魄;冥狱;魇息;影灭;夜行
5,朱勾宗,以血炼骨,勾魂摄魄,擅用血煞与禁术,代价与力量并存。,你是朱勾宗弟子。你直面欲望与代价,不惧黑暗,以攻伐见长。,,朱;勾;血;狱;秦;韩;燕;赵;魏;楚,血手;勾魂;朱砂;赤狱;凝血;摄魄;夺心;吞灵;渊渟;夜烬
6,合欢宗,以情入道,双修与魅术并重,善驭人心,长于权变。,你是合欢宗弟子。你辞令婉转,善于拿捏人欲与局势,以柔制刚。,,合;欢;苏;陆;柳;花;月;楚;顾;白,婉心;轻柔;疏影;流烟;如梦;绮念;月华;惜香;慕雪;倾城
7,镇魂宗,以镇魂钟摄百魂,擅安魂、封邪、渡厄,兼有刚烈镇压之术。,你是镇魂宗弟子。你肃穆沉稳,重安魂镇邪,少言而果决。,,镇;魂;钟;青;凌;白;楚;顾;林;云,镇灵;定魄;钟离;安魂;肃霜;白岭;清钟;涤秽;正鸣;宁川
8,幽魂噬影宗,影遁噬魂,袭取魄光于无形,偏好奇袭与暗杀之道。,你是幽魂噬影宗弟子。你行事隐秘果断,重结果轻虚名,擅潜行与出其不意。,,幽;魂;噬;影;夜;冷;白;江;玄;楚,噬影;隐魄;夜藏;无相;玄影;摄魂;遁形;寒星;绝响;空痕
9,千帆城,商旅云集的修真大城,亦有自成体系的城主与护城修士。,你是千帆城修士。你务实精明,重交易与信誉,崇尚规则与秩序。,,商;楚;顾;白;苏;林;叶;秦;赵;魏,商行;持衡;清评;问价;立契;通衡;问道;理市;衡准;守约
1 id,name,desc,member_act_style,alignment,sect_surnames,sect_given_names
2 ,,宗门名称与描述,宗门成员行事风格,阵营(正/中/邪),宗门常用姓氏(分号分隔),宗门常用名(分号分隔)
3 1,明心剑宗,以剑证道,清明克己,行止如一。重剑与心法并重,讲究明心见性。,正,明;心;剑;云;白;飞;清;凌;顾;林,清风;明远;问心;凌霄;止水;无尘;素心;明照;心远;雪凝
4 2,百兽宗,崇尚血脉与搏杀,习驭兽与变身之术,体魄强横。,你是百兽宗弟子。你言语直接,重视力量与血性,崇尚狩猎与搏斗。,,百;熊;虎;狼;猿;牛;白;石;嵩;岳,虎魄;狼行;熊罡;白猿;石坚;山岚;青鬃;玄爪;金瞳;赤鬃
5 3,水镜宗,以水化镜,以镜照心,术法多幻与反制,攻守如流。,你是水镜宗弟子。你处事冷静圆融,喜以柔克刚,擅借力与反制。,中,水;镜;寒;霜;冰;清;沐;阮;顾;白,映月;照心;寒影;秋水;轻漪;雪落;如镜;寒江;青荷;凝霜
6 4,冥王宗,行走幽冥之道,以冥焰镇压亡魂,术法阴冷狠厉。,你是冥王宗弟子。你言辞冷厉少情,敬畏因果而不惧杀伐,偏向效率与结果。,邪,冥;王;玄;幽;夜;白;江;冷;燕;楚,冥焰;噬魂;夜阙;幽垣;玄骨;寒魄;冥狱;魇息;影灭;夜行
7 5,朱勾宗,以血炼骨,勾魂摄魄,擅用血煞与禁术,代价与力量并存。,你是朱勾宗弟子。你直面欲望与代价,不惧黑暗,以攻伐见长。,邪,朱;勾;血;狱;秦;韩;燕;赵;魏;楚,血手;勾魂;朱砂;赤狱;凝血;摄魄;夺心;吞灵;渊渟;夜烬
8 6,合欢宗,以情入道,双修与魅术并重,善驭人心,长于权变。,你是合欢宗弟子。你辞令婉转,善于拿捏人欲与局势,以柔制刚。,中,合;欢;苏;陆;柳;花;月;楚;顾;白,婉心;轻柔;疏影;流烟;如梦;绮念;月华;惜香;慕雪;倾城
9 7,镇魂宗,以镇魂钟摄百魂,擅安魂、封邪、渡厄,兼有刚烈镇压之术。,你是镇魂宗弟子。你肃穆沉稳,重安魂镇邪,少言而果决。,正,镇;魂;钟;青;凌;白;楚;顾;林;云,镇灵;定魄;钟离;安魂;肃霜;白岭;清钟;涤秽;正鸣;宁川
10 8,幽魂噬影宗,影遁噬魂,袭取魄光于无形,偏好奇袭与暗杀之道。,你是幽魂噬影宗弟子。你行事隐秘果断,重结果轻虚名,擅潜行与出其不意。,邪,幽;魂;噬;影;夜;冷;白;江;玄;楚,噬影;隐魄;夜藏;无相;玄影;摄魂;遁形;寒星;绝响;空痕
11 9,千帆城,商旅云集的修真大城,亦有自成体系的城主与护城修士。,你是千帆城修士。你务实精明,重交易与信誉,崇尚规则与秩序。,中,商;楚;顾;白;苏;林;叶;秦;赵;魏,商行;持衡;清评;问价;立契;通衡;问道;理市;衡准;守约

View File

@@ -9,5 +9,5 @@
注意只返回json格式的结果格式为
{{
"story": "", // 第三人称的故事描述
"story": "", // 第三人称的故事描述,仙侠语言风格
}}

View File

@@ -14,7 +14,7 @@
{avatar_name_2}: {{
"thinking": ..., // 简单思考应该怎么决策
"feedback": ... // 面对{avatar_name_1}的行为的合法feedback action name
"talk_content": ... // 第三人称视角的对话的主题和情况概括约100字。注意不是对话的口语内容。
"talk_content": ... // 第三人称视角的对话的主题和情况概括约100字。注意不是对话的口语内容,仙侠语言风格
"into_relation": ... // 如果你认为可以让两者产生某种身份关系,则返回。注意这是{avatar_name_2}相对于{avatar_name_1}的身份。
}}
}}