refactor
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 487 KiB After Width: | Height: | Size: 668 KiB |
@@ -45,7 +45,7 @@ class Alignment(Enum):
|
||||
t = str(text).strip().lower()
|
||||
if t in {"正", "righteous", "right"}:
|
||||
return Alignment.RIGHTEOUS
|
||||
if t in {"中", "neutral", "middle", "center"}:
|
||||
if t in {"中", "中立", "neutral", "middle", "center"}:
|
||||
return Alignment.NEUTRAL
|
||||
if t in {"邪", "evil"}:
|
||||
return Alignment.EVIL
|
||||
@@ -54,7 +54,7 @@ class Alignment(Enum):
|
||||
|
||||
alignment_strs = {
|
||||
Alignment.RIGHTEOUS: "正",
|
||||
Alignment.NEUTRAL: "中",
|
||||
Alignment.NEUTRAL: "中立",
|
||||
Alignment.EVIL: "邪",
|
||||
}
|
||||
|
||||
|
||||
@@ -535,23 +535,6 @@ class Avatar(AvatarSaveMixin, AvatarLoadMixin):
|
||||
"""
|
||||
self.age.update_age(current_month_stamp, self.birth_month_stamp)
|
||||
|
||||
def get_age_info(self) -> dict:
|
||||
"""
|
||||
获取年龄相关信息
|
||||
|
||||
返回:
|
||||
包含年龄、期望寿命、死亡概率等信息的字典
|
||||
"""
|
||||
current_age, expected_lifespan = self.age.get_lifespan_progress()
|
||||
death_probability = self.age.get_death_probability()
|
||||
|
||||
return {
|
||||
"current_age": round(current_age, 2),
|
||||
"expected_lifespan": expected_lifespan,
|
||||
"is_elderly": self.age.is_elderly(),
|
||||
"death_probability": round(death_probability, 4),
|
||||
"realm": self.cultivation_progress.realm.value
|
||||
}
|
||||
|
||||
def is_in_region(self, region: Region|None) -> bool:
|
||||
current_region = self.tile.region
|
||||
@@ -640,25 +623,6 @@ class Avatar(AvatarSaveMixin, AvatarLoadMixin):
|
||||
if to_sidebar:
|
||||
self._pending_events.append(event)
|
||||
|
||||
def get_action_space_str(self) -> str:
|
||||
action_space = self.get_action_space()
|
||||
action_space_str = json.dumps(action_space, ensure_ascii=False)
|
||||
return action_space_str
|
||||
|
||||
def get_action_space(self) -> list[dict]:
|
||||
"""
|
||||
获取动作空间
|
||||
"""
|
||||
from src.classes.actions import ALL_ACTUAL_ACTION_NAMES
|
||||
actual_actions = [self.create_action(action_cls_name) for action_cls_name in ALL_ACTUAL_ACTION_NAMES]
|
||||
doable_actions: list[Action] = []
|
||||
for action in actual_actions:
|
||||
# 用 can_start 的无参形式,用于“是否在动作空间中显示”
|
||||
ok, _reason = action.can_start()
|
||||
if ok:
|
||||
doable_actions.append(action)
|
||||
action_space = [action.name for action in doable_actions]
|
||||
return action_space
|
||||
|
||||
def get_expanded_info(
|
||||
self,
|
||||
@@ -827,13 +791,6 @@ class Avatar(AvatarSaveMixin, AvatarLoadMixin):
|
||||
from src.classes.relations import clear_relation
|
||||
clear_relation(self, other)
|
||||
|
||||
def _get_relations_summary_str(self, max_count: int = 8) -> str:
|
||||
entries: list[str] = []
|
||||
for other in self.relations.keys():
|
||||
entries.append(self.get_other_avatar_info(other))
|
||||
if not entries:
|
||||
return "无"
|
||||
return ",".join(entries[:max_count])
|
||||
|
||||
def get_co_region_avatars(self, avatars: List["Avatar"]) -> List["Avatar"]:
|
||||
"""
|
||||
|
||||
@@ -12,11 +12,6 @@ if TYPE_CHECKING:
|
||||
|
||||
# 战斗力参数(参考文明6思想,但适配本项目数值体系)
|
||||
_STRENGTH_LOG_SCALE: float = 10.0 # 修为强度的对数缩放:10×ln(1+level)
|
||||
_GRADE_POINTS = {
|
||||
TechniqueGrade.LOWER: 0.0,
|
||||
TechniqueGrade.MIDDLE: 3.0,
|
||||
TechniqueGrade.UPPER: 6.0,
|
||||
}
|
||||
_SUPPRESSION_POINTS: float = 3.0 # 属性克制即加固定战斗力点数
|
||||
_CIV6_K: float = 0.04 # 伤害指数系数:e^(K×差值)
|
||||
_WIN_BETA: float = 0.15 # 胜率逻辑函数斜率
|
||||
@@ -31,17 +26,15 @@ _PAIR_BIAS: float = 1.1 # 成对偏置:让败者再多一
|
||||
def get_base_strength(self_avatar: "Avatar") -> float:
|
||||
"""
|
||||
基础战斗力:与对手无关。
|
||||
= 10×ln(1+修为等级) + 品阶点数(0/3/6)
|
||||
= 10×ln(1+修为等级) + 额外效果点数
|
||||
"""
|
||||
level = max(1, self_avatar.cultivation_progress.level)
|
||||
strength_from_level = _STRENGTH_LOG_SCALE * math.log1p(level)
|
||||
grade_points = 0.0
|
||||
if self_avatar.technique is not None:
|
||||
grade_points = _GRADE_POINTS.get(self_avatar.technique.grade, 0.0)
|
||||
# 来自效果的额外战斗力点数(例如法宝带来的被动加成)
|
||||
|
||||
# 来自效果的额外战斗力点数(例如功法、法宝带来的被动加成)
|
||||
extra_raw = self_avatar.effects.get("extra_battle_strength_points", 0)
|
||||
extra_points = float(extra_raw or 0.0)
|
||||
return strength_from_level + grade_points + extra_points
|
||||
return strength_from_level + extra_points
|
||||
|
||||
|
||||
def _combat_strength_vs(opponent: "Avatar", self_avatar: "Avatar") -> float:
|
||||
|
||||
@@ -252,47 +252,10 @@ def get_technique_by_sect(sect) -> Technique:
|
||||
return random.choices(candidates, weights=weights, k=1)[0]
|
||||
|
||||
|
||||
def get_grade_bonus(grade: TechniqueGrade) -> float:
|
||||
if grade is TechniqueGrade.UPPER:
|
||||
return 0.10
|
||||
if grade is TechniqueGrade.MIDDLE:
|
||||
return 0.05
|
||||
return 0.0
|
||||
|
||||
|
||||
def get_suppression_bonus(att_attr: TechniqueAttribute, def_attr: TechniqueAttribute) -> float:
|
||||
return 0.10 if def_attr in SUPPRESSION.get(att_attr, set()) else 0.0
|
||||
|
||||
|
||||
# 相对品阶优势加成:按“品阶差×步进”的方式计算
|
||||
# - 品阶映射:下品=0,中品=1,上品=2
|
||||
# - 每级差距步进:5%(最大±10%)
|
||||
_GRADE_RANK: dict[TechniqueGrade, int] = {
|
||||
TechniqueGrade.LOWER: 0,
|
||||
TechniqueGrade.MIDDLE: 1,
|
||||
TechniqueGrade.UPPER: 2,
|
||||
}
|
||||
|
||||
|
||||
def get_grade_advantage_bonus(attacker_grade: Optional[TechniqueGrade], defender_grade: Optional[TechniqueGrade]) -> float:
|
||||
"""
|
||||
根据双方品阶差计算进攻方的相对加成:
|
||||
- diff = rank(att) - rank(def)
|
||||
- bonus = 0.05 × diff,夹紧到 [-0.10, 0.10]
|
||||
- 任一为空则视为无加成
|
||||
返回:进攻方概率或伤害的相对加成(可为负)。
|
||||
"""
|
||||
if attacker_grade is None or defender_grade is None:
|
||||
return 0.0
|
||||
diff = _GRADE_RANK[attacker_grade] - _GRADE_RANK[defender_grade]
|
||||
bonus = 0.05 * diff
|
||||
if bonus > 0.10:
|
||||
bonus = 0.10
|
||||
if bonus < -0.10:
|
||||
bonus = -0.10
|
||||
return bonus
|
||||
|
||||
|
||||
|
||||
# 将功法属性映射为默认的灵根(邪功法不返回)
|
||||
def attribute_to_root(attr: TechniqueAttribute) -> Optional[Root]:
|
||||
|
||||
@@ -35,6 +35,8 @@ game_instance = {
|
||||
"is_paused": True # 默认启动为暂停状态,等待前端连接唤醒
|
||||
}
|
||||
|
||||
# 触发配置重载的标记 (technique.csv updated)
|
||||
|
||||
# 简易的命令行参数检查 (不使用 argparse 以避免冲突和时序问题)
|
||||
IS_DEV_MODE = "--dev" in sys.argv
|
||||
|
||||
@@ -411,20 +413,6 @@ def get_map():
|
||||
"regions": regions_data
|
||||
}
|
||||
|
||||
@app.post("/api/step")
|
||||
async def step_world():
|
||||
"""手动触发一帧(一个月)"""
|
||||
sim = game_instance["sim"]
|
||||
if not sim:
|
||||
return {"error": "Sim not initialized"}
|
||||
|
||||
events = await sim.step()
|
||||
|
||||
return {
|
||||
"message": "Step executed",
|
||||
"event_count": len(events),
|
||||
"events_sample": [str(e) for e in events[:5]]
|
||||
}
|
||||
|
||||
@app.post("/api/control/pause")
|
||||
def pause_game():
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
from fastapi import FastAPI
|
||||
import uvicorn
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
@app.get("/")
|
||||
def read_root():
|
||||
return {"Hello": "World"}
|
||||
|
||||
@app.get("/api/state")
|
||||
def get_state():
|
||||
return {"status": "ok"}
|
||||
|
||||
if __name__ == "__main__":
|
||||
uvicorn.run(app, host="0.0.0.0", port=8001)
|
||||
|
||||
@@ -20,12 +20,22 @@ EFFECT_DESC_MAP = {
|
||||
"extra_escape_success_rate": "逃跑成功率",
|
||||
"extra_observation_radius": "感知范围",
|
||||
"extra_move_step": "移动步长",
|
||||
"legal_actions": "特殊能力",
|
||||
}
|
||||
|
||||
ACTION_DESC_MAP = {
|
||||
"DualCultivation": "双修",
|
||||
"DevourMortals": "吞噬凡人",
|
||||
}
|
||||
|
||||
def format_value(key: str, value: Any) -> str:
|
||||
"""
|
||||
格式化效果数值
|
||||
"""
|
||||
if key == "legal_actions" and isinstance(value, list):
|
||||
actions = [ACTION_DESC_MAP.get(str(a), str(a)) for a in value]
|
||||
return "、".join(actions)
|
||||
|
||||
if isinstance(value, (int, float)):
|
||||
# 处理百分比类型的字段
|
||||
if "rate" in key or "probability" in key or "chance" in key or "multiplier" in key or "gain" in key:
|
||||
@@ -69,10 +79,13 @@ def format_effects_to_text(effects: dict[str, Any] | list[dict[str, Any]]) -> st
|
||||
# 跳过 eval 表达式或者无法解析的 key,或者直接显示 key
|
||||
name = EFFECT_DESC_MAP.get(k, k)
|
||||
|
||||
# 如果是 eval 表达式(字符串形式)
|
||||
if isinstance(v, str) and v.startswith("eval("):
|
||||
# 尝试提取简单的描述,或者显示"特殊效果"
|
||||
val_str = "特殊效果"
|
||||
# 如果是 eval 表达式(字符串形式)或者看起来像代码
|
||||
if isinstance(v, str):
|
||||
if v.startswith("eval(") or "avatar." in v or "//" in v:
|
||||
# 尝试提取简单的描述,或者显示"特殊效果"
|
||||
val_str = "特殊效果(动态)"
|
||||
else:
|
||||
val_str = format_value(k, v)
|
||||
else:
|
||||
val_str = format_value(k, v)
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
id,name,exclusion_names,desc,rarity,condition,effects
|
||||
,,和本persona互斥的persona的名称,描述/用于LLM输入的文本,稀有度(N/R/SR/SSR),选取条件(可用avatar字段/Alignment中文或英文等),"JSON形式(支持宽松格式,见effects.py说明)"
|
||||
,,和本persona互斥的persona的名称,描述/用于LLM输入的文本,稀有度(N/R/SR/SSR),选取条件(可用avatar字段/Alignment中文或英文等),JSON形式(支持宽松格式,见effects.py说明)
|
||||
1,理性,无常;随性,你总是会用逻辑来思考问题,做事会谋定而后动。,N,
|
||||
2,无常,理性;极端正义;极端邪恶;沉思,目标飘忽不定,不会长期坚持一个目标。,N,
|
||||
3,怠惰,冒险;极端正义;极端邪恶,你总是会拖延,不想努力,更热衷于享受人生。,N,
|
||||
@@ -11,7 +11,7 @@ id,name,exclusion_names,desc,rarity,condition,effects
|
||||
9,沉思,无常,你总是会深思熟虑,思考问题比较有哲理。,N,
|
||||
10,惜命,冒险;极端正义;极端邪恶,你总是会珍惜自己的生命,不会轻易冒险。,R,,{extra_escape_success_rate: 0.15}
|
||||
11,友爱,孤僻;淡漠;好斗;复仇;极端正义;极端邪恶,你重视同伴与和谐,乐于助人,倾向通过协作与沟通化解矛盾。,N,
|
||||
12,复仇,友爱;淡漠,"你绝不轻易放下仇怨,为了复仇愿意付出代价与时间。你必须立刻进行复仇行动。",N,,
|
||||
12,复仇,友爱;淡漠,你绝不轻易放下仇怨,为了复仇愿意付出代价与时间。你必须立刻进行复仇行动。,N,,
|
||||
13,孤僻,友爱,你喜欢独处,避免与人深交,更信赖自己的判断与行动。,N,
|
||||
14,淡漠,友爱;复仇;好斗;极端正义;极端邪恶,你情感克制,对外界冷静疏离,不轻易被他人或事件影响。,N,
|
||||
15,好斗,友爱;淡漠;惜命;胆小,你直面冲突,偏好以力量与对抗解决问题,并格外热衷增加己身战力。,R,,{extra_battle_strength_points: 1}
|
||||
@@ -23,8 +23,8 @@ id,name,exclusion_names,desc,rarity,condition,effects
|
||||
21,外向,孤僻;淡漠;内向,你乐于与人交流,主动结识伙伴,倾向接受对话和合作。,N,
|
||||
22,刻薄,友爱;热情,你在对话中倾向以讽刺、嘲弄、挖苦的方式表达自己,更容易引发冲突与对立;你通常不愿迅速进入友好关系,更可能在不顺利的交流后滋生敌意或结仇。,N,
|
||||
23,热情,孤僻;淡漠;刻薄,你待人友好、积极回应,倾向用鼓励与赞美拉近距离;你更愿意主动展开善意的交流,乐于合作与分享,N,
|
||||
24,极端正义,内向;极端邪恶,你对邪恶深恶痛绝,对正义的理想抱有近乎偏执的追求。,SR,avatar.alignment == "正",{extra_breakthrough_success_rate: 0.05}
|
||||
25,极端邪恶,内向;极端正义,你推崇权力与恐惧,为达目的不择手段,对善良嗤之以鼻。,SR,avatar.alignment == "邪","{extra_breakthrough_success_rate: -0.05, extra_cultivate_exp: 20}"
|
||||
24,极端正义,内向;极端邪恶,你对邪恶深恶痛绝,对正义的理想抱有近乎偏执的追求。,SR,"avatar.alignment == ""正""",{extra_breakthrough_success_rate: 0.05}
|
||||
25,极端邪恶,内向;极端正义,你推崇权力与恐惧,为达目的不择手段,对善良嗤之以鼻。,SR,"avatar.alignment == ""邪""","{extra_breakthrough_success_rate: -0.05, extra_cultivate_exp: 20}"
|
||||
26,开放,腼腆,你对待和他人结为道侣或者双修比较随意,R,,{extra_dual_cultivation_exp: 30}
|
||||
27,腼腆,开放,你对待和他人结为道侣或者双修比较谨慎,N,
|
||||
28,舔狗,孤僻;淡漠;刻薄;腼腆,你对异性中外貌出众者格外友善,倾向主动接近、帮助与合作。,N,
|
||||
@@ -32,26 +32,25 @@ id,name,exclusion_names,desc,rarity,condition,effects
|
||||
30,穿越者,,你来自现代社会,怀念现代社会的一切,你的思考(thinking)必须是现代化的思考,SR,
|
||||
31,气运之子,,天生气运加身,更易遇到奇遇,战斗力也略有提升,SSR,,"{extra_fortune_probability: 0.05, extra_battle_strength_points: 2, extra_breakthrough_success_rate: 0.05}"
|
||||
32,剑痴,怠惰;胆小,以剑入道,剑即是命。你认为剑道至上,战力强悍,但对剑道之外的事物兴趣寥寥。,SR,,"[{when: 'avatar.weapon.type == WeaponType.SWORD', extra_weapon_proficiency_gain: 1.0, extra_battle_strength_points: 3}]"
|
||||
33,散修,,无宗门庇护,四处寻找机缘,警惕性高,善于观察周围环境以自保求存。,N,
|
||||
34,心机深沉,鲁莽;热情;外向,深藏不露,行事谨慎,善于算计。你不轻易暴露实力和想法,观察力敏锐,总在暗中盘算。,R,
|
||||
35,忠诚,孤僻;淡漠;刻薄,重承诺守信义,对认定的人绝不背叛,愿为之赴死。你视背叛为最大耻辱。,R,
|
||||
36,狠辣,友爱;热情;胆小,行事果决狠辣,不留后患,斩草必除根。你认为心慈手软只会害了自己。,N,
|
||||
37,重生者,无常;随性,经历过一世,对未来有模糊预知,行事更有目的性。你比常人更清楚什么重要,什么是陷阱。,SSR,
|
||||
38,疑心重,热情;外向;友爱,对任何人都保持怀疑,不轻易信任,时刻警惕他人可能的背叛和算计。,N,
|
||||
39,体修,惜命;胆小,专注肉身淬炼,体魄强健,近战无敌。你相信肉身才是修行的根本,法术只是旁门左道。,R,
|
||||
40,炼丹师,好斗,精通丹道,对灵药敏感,擅长炼制丹药。你认为丹药是修行的关键,战斗并非你的专长。,R,
|
||||
41,福缘深厚,,天生福运,逢凶化吉。虽不如气运之子,但也常有小幸运眷顾。,SR,,{extra_fortune_probability: 0.02}
|
||||
42,剑修,怠惰,对剑道有着深厚的兴趣和独特的天赋,持剑修炼时事半功倍。,R,,"[{when: 'avatar.weapon.type == WeaponType.SWORD', extra_weapon_proficiency_gain: 0.5, extra_battle_strength_points: 1}]"
|
||||
43,刀修,怠惰,专精刀法,对刀道有着独特的理解,持刀修炼时事半功倍。,R,,"[{when: 'avatar.weapon.type == WeaponType.SABER', extra_weapon_proficiency_gain: 0.5, extra_battle_strength_points: 1}]"
|
||||
44,枪修,怠惰,精通枪法,百兵之王在手,修炼速度远超常人。,R,,"[{when: 'avatar.weapon.type == WeaponType.SPEAR', extra_weapon_proficiency_gain: 0.5, extra_battle_strength_points: 1}]"
|
||||
45,棍修,怠惰,棍棒在手,天下我有。对棍法有着天生的悟性。,R,,"[{when: 'avatar.weapon.type == WeaponType.STAFF', extra_weapon_proficiency_gain: 0.5, extra_battle_strength_points: 1}]"
|
||||
46,音律大师,怠惰,精通音律之道,琴笛在手,可攻可守,修炼速度远超常人。,SR,,"[{when: 'avatar.weapon.type == WeaponType.ZITHER or avatar.weapon.type == WeaponType.FLUTE', extra_weapon_proficiency_gain: 1.0, extra_battle_strength_points: 3}]"
|
||||
47,暗器高手,怠惰,擅长使用暗器,出手诡秘莫测,修炼暗器技巧时事半功倍。,R,,"[{when: 'avatar.weapon.type == WeaponType.HIDDEN_WEAPON', extra_weapon_proficiency_gain: 0.5, extra_battle_strength_points: 1}]"
|
||||
48,扇修,怠惰,精通扇法,举手投足间尽显风流,持扇修炼时事半功倍。,R,,"[{when: 'avatar.weapon.type == WeaponType.FAN', extra_weapon_proficiency_gain: 0.5, extra_battle_strength_points: 1}]"
|
||||
49,鞭修,怠惰,精通鞭法,软兵器在手,刚柔并济,修炼速度远超常人。,R,,"[{when: 'avatar.weapon.type == WeaponType.WHIP', extra_weapon_proficiency_gain: 0.5, extra_battle_strength_points: 1}]"
|
||||
50,刀痴,怠惰;胆小,以刀入道,刀即是命。你认为刀法至上,战力强悍,但对刀道之外的事物兴趣寥寥。,SR,,"[{when: 'avatar.weapon.type == WeaponType.SABER', extra_weapon_proficiency_gain: 1.0, extra_battle_strength_points: 3}]"
|
||||
51,枪痴,怠惰;胆小,以枪入道,枪即是命。你认为枪法至上,战力强悍,但对枪道之外的事物兴趣寥寥。,SR,,"[{when: 'avatar.weapon.type == WeaponType.SPEAR', extra_weapon_proficiency_gain: 1.0, extra_battle_strength_points: 3}]"
|
||||
52,棍圣,怠惰;胆小,以棍入道,棍即是命。棍法通神,一棍在手,天下无敌,但对棍道之外的事物兴趣寥寥。,SR,,"[{when: 'avatar.weapon.type == WeaponType.STAFF', extra_weapon_proficiency_gain: 1.0, extra_battle_strength_points: 3}]"
|
||||
53,扇痴,怠惰;胆小,以扇入道,扇即是命。你认为扇法至上,战力强悍,但对扇道之外的事物兴趣寥寥。,SR,,"[{when: 'avatar.weapon.type == WeaponType.FAN', extra_weapon_proficiency_gain: 1.0, extra_battle_strength_points: 3}]"
|
||||
54,鞭痴,怠惰;胆小,以鞭入道,鞭即是命。你认为鞭法至上,战力强悍,但对鞭道之外的事物兴趣寥寥。,SR,,"[{when: 'avatar.weapon.type == WeaponType.WHIP', extra_weapon_proficiency_gain: 1.0, extra_battle_strength_points: 3}]"
|
||||
55,暗影宗师,怠惰;胆小,暗器之道登峰造极,杀人于无形。出手必见血,战力惊人,但对暗器之外的事物兴趣寥寥。,SR,,"[{when: 'avatar.weapon.type == WeaponType.HIDDEN_WEAPON', extra_weapon_proficiency_gain: 1.0, extra_battle_strength_points: 3}]"
|
||||
33,心机深沉,鲁莽;热情;外向,深藏不露,行事谨慎,善于算计。你不轻易暴露实力和想法,观察力敏锐,总在暗中盘算。,R,
|
||||
34,忠诚,孤僻;淡漠;刻薄,重承诺守信义,对认定的人绝不背叛,愿为之赴死。你视背叛为最大耻辱。,R,
|
||||
35,狠辣,友爱;热情;胆小,行事果决狠辣,不留后患,斩草必除根。你认为心慈手软只会害了自己。,N,
|
||||
36,重生者,无常;随性,经历过一世,对未来有模糊预知,行事更有目的性。你比常人更清楚什么重要,什么是陷阱。,SSR,
|
||||
37,疑心重,热情;外向;友爱,对任何人都保持怀疑,不轻易信任,时刻警惕他人可能的背叛和算计。,N,
|
||||
38,体修,惜命;胆小,专注肉身淬炼,体魄强健,近战无敌。你相信肉身才是修行的根本,法术只是旁门左道。,R,
|
||||
39,炼丹师,好斗,精通丹道,对灵药敏感,擅长炼制丹药。你认为丹药是修行的关键,战斗并非你的专长。,R,
|
||||
40,福缘深厚,,天生福运,逢凶化吉。虽不如气运之子,但也常有小幸运眷顾。,SR,,{extra_fortune_probability: 0.02}
|
||||
41,剑修,怠惰,对剑道有着深厚的兴趣和独特的天赋,持剑修炼时事半功倍。,R,,"[{when: 'avatar.weapon.type == WeaponType.SWORD', extra_weapon_proficiency_gain: 0.5, extra_battle_strength_points: 1}]"
|
||||
42,刀修,怠惰,专精刀法,对刀道有着独特的理解,持刀修炼时事半功倍。,R,,"[{when: 'avatar.weapon.type == WeaponType.SABER', extra_weapon_proficiency_gain: 0.5, extra_battle_strength_points: 1}]"
|
||||
43,枪修,怠惰,精通枪法,百兵之王在手,修炼速度远超常人。,R,,"[{when: 'avatar.weapon.type == WeaponType.SPEAR', extra_weapon_proficiency_gain: 0.5, extra_battle_strength_points: 1}]"
|
||||
44,棍修,怠惰,棍棒在手,天下我有。对棍法有着天生的悟性。,R,,"[{when: 'avatar.weapon.type == WeaponType.STAFF', extra_weapon_proficiency_gain: 0.5, extra_battle_strength_points: 1}]"
|
||||
45,音律大师,怠惰,精通音律之道,琴笛在手,可攻可守,修炼速度远超常人。,SR,,"[{when: 'avatar.weapon.type == WeaponType.ZITHER or avatar.weapon.type == WeaponType.FLUTE', extra_weapon_proficiency_gain: 1.0, extra_battle_strength_points: 3}]"
|
||||
46,暗器高手,怠惰,擅长使用暗器,出手诡秘莫测,修炼暗器技巧时事半功倍。,R,,"[{when: 'avatar.weapon.type == WeaponType.HIDDEN_WEAPON', extra_weapon_proficiency_gain: 0.5, extra_battle_strength_points: 1}]"
|
||||
47,扇修,怠惰,精通扇法,举手投足间尽显风流,持扇修炼时事半功倍。,R,,"[{when: 'avatar.weapon.type == WeaponType.FAN', extra_weapon_proficiency_gain: 0.5, extra_battle_strength_points: 1}]"
|
||||
48,鞭修,怠惰,精通鞭法,软兵器在手,刚柔并济,修炼速度远超常人。,R,,"[{when: 'avatar.weapon.type == WeaponType.WHIP', extra_weapon_proficiency_gain: 0.5, extra_battle_strength_points: 1}]"
|
||||
49,刀痴,怠惰;胆小,以刀入道,刀即是命。你认为刀法至上,战力强悍,但对刀道之外的事物兴趣寥寥。,SR,,"[{when: 'avatar.weapon.type == WeaponType.SABER', extra_weapon_proficiency_gain: 1.0, extra_battle_strength_points: 3}]"
|
||||
50,枪痴,怠惰;胆小,以枪入道,枪即是命。你认为枪法至上,战力强悍,但对枪道之外的事物兴趣寥寥。,SR,,"[{when: 'avatar.weapon.type == WeaponType.SPEAR', extra_weapon_proficiency_gain: 1.0, extra_battle_strength_points: 3}]"
|
||||
51,棍圣,怠惰;胆小,以棍入道,棍即是命。棍法通神,一棍在手,天下无敌,但对棍道之外的事物兴趣寥寥。,SR,,"[{when: 'avatar.weapon.type == WeaponType.STAFF', extra_weapon_proficiency_gain: 1.0, extra_battle_strength_points: 3}]"
|
||||
52,扇痴,怠惰;胆小,以扇入道,扇即是命。你认为扇法至上,战力强悍,但对扇道之外的事物兴趣寥寥。,SR,,"[{when: 'avatar.weapon.type == WeaponType.FAN', extra_weapon_proficiency_gain: 1.0, extra_battle_strength_points: 3}]"
|
||||
53,鞭痴,怠惰;胆小,以鞭入道,鞭即是命。你认为鞭法至上,战力强悍,但对鞭道之外的事物兴趣寥寥。,SR,,"[{when: 'avatar.weapon.type == WeaponType.WHIP', extra_weapon_proficiency_gain: 1.0, extra_battle_strength_points: 3}]"
|
||||
54,暗影宗师,怠惰;胆小,暗器之道登峰造极,杀人于无形。出手必见血,战力惊人,但对暗器之外的事物兴趣寥寥。,SR,,"[{when: 'avatar.weapon.type == WeaponType.HIDDEN_WEAPON', extra_weapon_proficiency_gain: 1.0, extra_battle_strength_points: 3}]"
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 26 and column 136.
|
@@ -1,11 +1,11 @@
|
||||
id,name,desc,member_act_style,alignment,weight,preferred_weapon,effects
|
||||
,,宗门名称与描述,宗门成员行事风格,阵营(正/中/邪),权重(默认1),倾向兵器类型,"effects(JSON形式,支持宽松格式,见effects.py说明)"
|
||||
,,宗门名称与描述,宗门成员行事风格,阵营(正/中立/邪),权重(默认1),倾向兵器类型,"effects(JSON形式,支持宽松格式,见effects.py说明)"
|
||||
1,明心剑宗,通玄界东方第一宗,以无上剑道称雄于世。云纹禁制为不传心法。,清明克己,行止如一。重剑与心法并重,讲究明心见性。,正,1,剑,
|
||||
2,百兽宗,以驯养灵兽闻名,豢养各种妖兽灵怪为战力。,你言语直接,重视力量与血性,崇尚狩猎与搏斗。,邪,1,鞭,
|
||||
3,水镜宗,正道十宗之一,实则严守中立。拥有仙界异宝"彻天水镜"可预知未来。,你处事冷静圆融,喜以柔克刚,擅借力与反制。,中,1,扇,
|
||||
3,水镜宗,正道十宗之一,实则严守中立。拥有仙界异宝"彻天水镜"可预知未来。,你处事冷静圆融,喜以柔克刚,擅借力与反制。,中立,1,扇,
|
||||
4,冥王宗,行走幽冥之道,术法阴冷狠厉。,你言辞冷厉少情,敬畏因果而不惧杀伐,偏向效率与结果。,邪,1,扇,
|
||||
5,朱勾宗,邪宗大派。以炼器、机关、暗杀闻名于世,素来阴毒冷僻。,你直面欲望与代价,不惧黑暗,以攻伐见长。,邪,1,暗器,
|
||||
6,合欢宗,以情入道,靠双修增进修为,善驭人心,长于权变。,你辞令婉转,善于拿捏人欲与局势,以柔制刚。,中,1,琴,{legal_actions: ['DualCultivation']}
|
||||
6,合欢宗,以情入道,靠双修增进修为,善驭人心,长于权变。,你辞令婉转,善于拿捏人欲与局势,以柔制刚。,中立,1,琴,{legal_actions: ['DualCultivation']}
|
||||
7,镇魂宗,铁血风格,擅安魂、封邪、渡厄,兼有刚烈镇压之术。,你肃穆沉稳,重安魂镇邪,少言而果决。,正,1,棍,
|
||||
8,幽魂噬影宗,镇宗典籍《幽冥录》。幽明气为根基。,你行事隐秘果断,重结果轻虚名,擅潜行与出其不意。,邪,1,刀,
|
||||
9,千帆城,炼器大宗,巧匠云集。著名法宝有灵灭丝、定魂蓝星、天罗网、万里极光壁、飞翼等。商旅云集,自成体系。,你务实精明,重交易与信誉,崇尚规则与秩序。,中,1,枪,
|
||||
9,千帆城,炼器大宗,巧匠云集。著名法宝有灵灭丝、定魂蓝星、天罗网、万里极光壁、飞翼等。商旅云集,自成体系。,你务实精明,重交易与信誉,崇尚规则与秩序。,中立,1,枪,
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 5 and column 73.
|
@@ -1,50 +1,49 @@
|
||||
id,name,technique_root,grade,desc,weight,condition,sect,effects
|
||||
,名称,属性,品阶(上中下),描述/提示词,抽样权重,条件,所属宗门,"JSON形式(支持宽松格式,见effects.py说明)"
|
||||
,名称,属性,品阶(上中下),描述/提示词,抽样权重,条件,所属宗门,JSON形式(支持宽松格式,见effects.py说明)
|
||||
1,太乙金光锻体诀,金,下品,运太乙金光淬骨炼筋,金罡护体,刀兵难侵。,1,,,
|
||||
2,金阳破甲术,金,中品,融金阳之炽与锋,一往破敌,破甲断魄。,1,,,
|
||||
2,金阳破甲术,金,中品,融金阳之炽与锋,一往破敌,破甲断魄。,1,,,"{""extra_battle_strength_points"": 3}"
|
||||
4,青木长春诀,木,下品,借青木长春之机,涓涓养元,稳固根基。,1,,,
|
||||
5,碧林长生法,木,中品,汲林海生机,法源不竭,柔而不折。,1,,,
|
||||
5,碧林长生法,木,中品,汲林海生机,法源不竭,柔而不折。,1,,,"{""extra_battle_strength_points"": 3}"
|
||||
7,玄冥敛息诀,水,下品,以玄冥静息收摄心神,润物无声。,1,,,
|
||||
8,玄水化海术,水,中品,以玄水化百川,绵延不绝,攻守随势。,1,,,
|
||||
8,玄水化海术,水,中品,以玄水化百川,绵延不绝,攻守随势。,1,,,"{""extra_battle_strength_points"": 3}"
|
||||
10,南明离火心诀,火,下品,承南明离火之炽,鼓荡心魄,炼魂淬魄。,1,,,
|
||||
11,赤炎炼真诀,火,中品,以赤炎炼真元,去伪存真,攻势如潮。,1,,,
|
||||
11,赤炎炼真诀,火,中品,以赤炎炼真元,去伪存真,攻势如潮。,1,,,"{""extra_battle_strength_points"": 3}"
|
||||
13,厚土镇魄诀,土,下品,以厚土安神定魄,稳如山嶽,不动如山。,1,,,
|
||||
14,玄黄定岳法,土,中品,以玄黄凝岳势,千钧一力,镇压四方。,1,,,
|
||||
14,玄黄定岳法,土,中品,以玄黄凝岳势,千钧一力,镇压四方。,1,,,"{""extra_battle_strength_points"": 3}"
|
||||
16,玄冰凝真诀,冰,下品,以玄冰凝灵,清寒护体,心湖如镜。,1,,,
|
||||
17,冰魄玄寒法,冰,中品,御玄寒之魄,封江冻海,以静制动。,1,,,
|
||||
17,冰魄玄寒法,冰,中品,御玄寒之魄,封江冻海,以静制动。,1,,,"{""extra_battle_strength_points"": 3}"
|
||||
19,御风术,风,下品,以清风导息,轻身迅行,形如掠影。,1,,,
|
||||
20,清风御行法,风,中品,驭风行空,攻守兼备,灵动飘逸。,1,,,
|
||||
20,清风御行法,风,中品,驭风行空,攻守兼备,灵动飘逸。,1,,,"{""extra_battle_strength_points"": 3}"
|
||||
22,幽冥潜形术,暗,下品,以幽冥藏形,锋芒尽敛,伺机而动。,1,,,
|
||||
23,玄夜无相法,暗,中品,夜行无相,出入无痕,摄人心魄。,1,,,
|
||||
23,玄夜无相法,暗,中品,夜行无相,出入无痕,摄人心魄。,1,,,"{""extra_battle_strength_points"": 3}"
|
||||
25,九天淬体雷诀,雷,下品,引九天霆罡击体,筋骨再生,爆发如雷。,1,,,
|
||||
26,九霄养雷法,雷,中品,引九霄真雷,养气通窍,威势赫然。,1,,,
|
||||
26,九霄养雷法,雷,中品,引九霄真雷,养气通窍,威势赫然。,1,,,"{""extra_battle_strength_points"": 3}"
|
||||
28,血神噬魂大法,邪,下品,以血神邪念淬炼,杀伐狠辣,损阴德。,1,,,"{extra_breakthrough_success_rate: -0.1, extra_cultivate_exp: 50}"
|
||||
29,冥狱吞灵大法,邪,中品,循冥狱之道吞噬灵魄,逆乱阴阳,速成之途。,1,,,"{extra_breakthrough_success_rate: -0.1, extra_cultivate_exp: 50}"
|
||||
30,明心归一剑典,金,上品,以剑返本归一,明镜止水,一剑断妄。,10,,明心剑宗,
|
||||
31,霆光明志剑,雷,上品,以霆光贯剑意,电掣雷行,破虚斩障。,10,,明心剑宗,
|
||||
32,离火明心诀,火,上品,以离火照见自心,去蔽存真,剑随心行。,10,,明心剑宗,
|
||||
33,御兽玄纲,木,上品,以木灵沟通群兽,血脉契合,驱策如臂。,10,,百兽宗,
|
||||
34,蛮荒镇骨体,土,上品,以厚土淬锻筋骨,躯壳如山,血勇不挫。,10,,百兽宗,
|
||||
35,血啸狩魂诀,邪,上品,以嗜血啸魄摄魂,狩猎杀伐,越战越猛。,10,,百兽宗,"{extra_breakthrough_success_rate: -0.1, extra_cultivate_exp: 50}"
|
||||
36,彻天水镜观,水,上品,以彻天水镜观机,借势化力,先机在握。,10,,水镜宗,
|
||||
37,寒漪反斩法,冰,上品,以寒漪回折之势,四两拨千斤,刚柔相济。,10,,水镜宗,
|
||||
38,镜花游身步,风,上品,以轻风流转为引,身化水月,进退自如。,10,,水镜宗,
|
||||
39,幽冥镇狱经,暗,上品,引幽冥阴煞镇压万灵,寒魄凝骨,万劫不侵。,10,,冥王宗,
|
||||
40,冥焰噬神法,邪,上品,以冥焰噬神,逆夺生机,吞灵化魄。,10,,冥王宗,"{extra_breakthrough_success_rate: -0.1, extra_cultivate_exp: 50}"
|
||||
41,黄泉引魄步,冰,上品,以玄寒引魄入泉,步步生霜,摄魂夺魄。,10,,冥王宗,
|
||||
42,赤狱炼锋诀,火,上品,以赤狱真火炼锋,法器通灵,杀机更盛。,10,,朱勾宗,
|
||||
43,魇丝摄魂术,暗,上品,以魇丝无声摄魄,藏形夺命,来去无迹。,10,,朱勾宗,
|
||||
44,噬心傀儡经,金,上品,以金罡刻阵,傀儡载魄,攻守如一。,10,,朱勾宗,
|
||||
45,双修合和典,水,上品,以清润相济,合气生生,周天圆满。,10,,合欢宗,
|
||||
46,魅月摄情术,暗,上品,以魅月摄心,惑而不乱,借情化力。,10,,合欢宗,
|
||||
47,绮罗化影步,风,上品,以轻纱化影,形随意转,柔中带锋。,10,,合欢宗,
|
||||
48,镇岳定魂经,土,上品,以玄黄定岳势,安神定魄,万邪难侵。,10,,镇魂宗,
|
||||
49,霆狱伏邪法,雷,上品,引九霄霆威压邪,刚猛无俦,镇压不返。,10,,镇魂宗,
|
||||
50,金章封煞术,金,上品,以金章为印,封煞束灵,斩乱镇邪。,10,,镇魂宗,
|
||||
51,幽冥无相诀,暗,上品,隐形无相,出没幽明,摄心夺魄于无声。,10,,幽魂噬影宗,
|
||||
52,噬影穿行步,风,上品,以风掠影,穿行缝隙,先至而不留痕。,10,,幽魂噬影宗,
|
||||
53,冥狱吞魄经,邪,上品,循幽冥吞魄之道,化敌为养,速成险绝。,10,,幽魂噬影宗,"{extra_breakthrough_success_rate: -0.1, extra_cultivate_exp: 50}"
|
||||
54,天罗机巧篇,金,上品,精研机巧阵枢,百变应敌,器术合一。,10,,千帆城,
|
||||
55,蓝星定魂阵,土,上品,以厚土定魂为基,阵锁心神,稳如磐石。,10,,千帆城,
|
||||
56,飞翼乘风术,风,上品,乘风而行,纵横千里,御器齐驱。,10,,千帆城,
|
||||
|
||||
29,冥狱吞灵大法,邪,中品,循冥狱之道吞噬灵魄,逆乱阴阳,速成之途。,1,,,"{""extra_breakthrough_success_rate"": -0.1, ""extra_cultivate_exp"": 50, ""extra_battle_strength_points"": 3}"
|
||||
30,明心归一剑典,金,上品,以剑返本归一,明镜止水,一剑断妄。,10,,明心剑宗,"{""extra_battle_strength_points"": 6}"
|
||||
31,霆光明志剑,雷,上品,以霆光贯剑意,电掣雷行,破虚斩障。,10,,明心剑宗,"{""extra_battle_strength_points"": 6}"
|
||||
32,离火明心诀,火,上品,以离火照见自心,去蔽存真,剑随心行。,10,,明心剑宗,"{""extra_battle_strength_points"": 6}"
|
||||
33,御兽玄纲,木,上品,以木灵沟通群兽,血脉契合,驱策如臂。,10,,百兽宗,"{""extra_battle_strength_points"": 6}"
|
||||
34,蛮荒镇骨体,土,上品,以厚土淬锻筋骨,躯壳如山,血勇不挫。,10,,百兽宗,"{""extra_battle_strength_points"": 6}"
|
||||
35,血啸狩魂诀,邪,上品,以嗜血啸魄摄魂,狩猎杀伐,越战越猛。,10,,百兽宗,"{""extra_breakthrough_success_rate"": -0.1, ""extra_cultivate_exp"": 50, ""extra_battle_strength_points"": 6}"
|
||||
36,彻天水镜观,水,上品,以彻天水镜观机,借势化力,先机在握。,10,,水镜宗,"{""extra_battle_strength_points"": 6}"
|
||||
37,寒漪反斩法,冰,上品,以寒漪回折之势,四两拨千斤,刚柔相济。,10,,水镜宗,"{""extra_battle_strength_points"": 6}"
|
||||
38,镜花游身步,风,上品,以轻风流转为引,身化水月,进退自如。,10,,水镜宗,"{""extra_battle_strength_points"": 6}"
|
||||
39,幽冥镇狱经,暗,上品,引幽冥阴煞镇压万灵,寒魄凝骨,万劫不侵。,10,,冥王宗,"{""extra_battle_strength_points"": 6}"
|
||||
40,冥焰噬神法,邪,上品,以冥焰噬神,逆夺生机,吞灵化魄。,10,,冥王宗,"{""extra_breakthrough_success_rate"": -0.1, ""extra_cultivate_exp"": 50, ""extra_battle_strength_points"": 6}"
|
||||
41,黄泉引魄步,冰,上品,以玄寒引魄入泉,步步生霜,摄魂夺魄。,10,,冥王宗,"{""extra_battle_strength_points"": 6}"
|
||||
42,赤狱炼锋诀,火,上品,以赤狱真火炼锋,法器通灵,杀机更盛。,10,,朱勾宗,"{""extra_battle_strength_points"": 6}"
|
||||
43,魇丝摄魂术,暗,上品,以魇丝无声摄魄,藏形夺命,来去无迹。,10,,朱勾宗,"{""extra_battle_strength_points"": 6}"
|
||||
44,噬心傀儡经,金,上品,以金罡刻阵,傀儡载魄,攻守如一。,10,,朱勾宗,"{""extra_battle_strength_points"": 6}"
|
||||
45,双修合和典,水,上品,以清润相济,合气生生,周天圆满。,10,,合欢宗,"{""extra_battle_strength_points"": 6}"
|
||||
46,魅月摄情术,暗,上品,以魅月摄心,惑而不乱,借情化力。,10,,合欢宗,"{""extra_battle_strength_points"": 6}"
|
||||
47,绮罗化影步,风,上品,以轻纱化影,形随意转,柔中带锋。,10,,合欢宗,"{""extra_battle_strength_points"": 6}"
|
||||
48,镇岳定魂经,土,上品,以玄黄定岳势,安神定魄,万邪难侵。,10,,镇魂宗,"{""extra_battle_strength_points"": 6}"
|
||||
49,霆狱伏邪法,雷,上品,引九霄霆威压邪,刚猛无俦,镇压不返。,10,,镇魂宗,"{""extra_battle_strength_points"": 6}"
|
||||
50,金章封煞术,金,上品,以金章为印,封煞束灵,斩乱镇邪。,10,,镇魂宗,"{""extra_battle_strength_points"": 6}"
|
||||
51,幽冥无相诀,暗,上品,隐形无相,出没幽明,摄心夺魄于无声。,10,,幽魂噬影宗,"{""extra_battle_strength_points"": 6}"
|
||||
52,噬影穿行步,风,上品,以风掠影,穿行缝隙,先至而不留痕。,10,,幽魂噬影宗,"{""extra_battle_strength_points"": 6}"
|
||||
53,冥狱吞魄经,邪,上品,循幽冥吞魄之道,化敌为养,速成险绝。,10,,幽魂噬影宗,"{""extra_breakthrough_success_rate"": -0.1, ""extra_cultivate_exp"": 50, ""extra_battle_strength_points"": 6}"
|
||||
54,天罗机巧篇,金,上品,精研机巧阵枢,百变应敌,器术合一。,10,,千帆城,"{""extra_battle_strength_points"": 6}"
|
||||
55,蓝星定魂阵,土,上品,以厚土定魂为基,阵锁心神,稳如磐石。,10,,千帆城,"{""extra_battle_strength_points"": 6}"
|
||||
56,飞翼乘风术,风,上品,乘风而行,纵横千里,御器齐驱。,10,,千帆城,"{""extra_battle_strength_points"": 6}"
|
||||
|
||||
|
@@ -72,22 +72,28 @@ async function handleClearObjective() {
|
||||
<div class="stats-grid">
|
||||
<StatItem label="境界" :value="data.realm" :sub-value="data.level" />
|
||||
<StatItem label="年龄" :value="formatAge(data.age, data.lifespan)" />
|
||||
|
||||
<StatItem label="HP" :value="formatHp(data.hp.cur, data.hp.max)" />
|
||||
<StatItem label="灵石" :value="data.magic_stone" />
|
||||
<StatItem label="MP" :value="formatHp(data.mp.cur, data.mp.max)" />
|
||||
|
||||
<StatItem
|
||||
label="阵营"
|
||||
:value="data.alignment"
|
||||
full-width
|
||||
:on-click="() => showDetail(data.alignment_detail)"
|
||||
/>
|
||||
<StatItem
|
||||
label="宗门"
|
||||
:value="data.sect?.name || '散修'"
|
||||
:sub-value="data.sect?.rank"
|
||||
:on-click="data.sect ? () => showDetail(data.sect) : undefined"
|
||||
/>
|
||||
|
||||
<StatItem
|
||||
label="灵根"
|
||||
:value="data.root"
|
||||
full-width
|
||||
:on-click="() => showDetail(data.root_detail)"
|
||||
/>
|
||||
<StatItem label="灵石" :value="data.magic_stone" />
|
||||
</div>
|
||||
|
||||
<!-- Thinking -->
|
||||
@@ -110,12 +116,6 @@ async function handleClearObjective() {
|
||||
:item="data.technique"
|
||||
@click="showDetail(data.technique)"
|
||||
/>
|
||||
<EntityRow
|
||||
v-if="data.sect"
|
||||
:item="data.sect"
|
||||
:meta="data.sect.rank"
|
||||
@click="showDetail(data.sect)"
|
||||
/>
|
||||
<EntityRow
|
||||
v-if="data.weapon"
|
||||
:item="data.weapon"
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
<script setup lang="ts">
|
||||
import { computed, ref, onMounted, onUnmounted, watch } from 'vue';
|
||||
import { useUiStore } from '@/stores/ui';
|
||||
import type { AvatarDetail, RegionDetail } from '@/types/core';
|
||||
import { useUiStore } from '../../../../stores/ui';
|
||||
|
||||
// Sub-components
|
||||
import AvatarDetailView from './AvatarDetail.vue';
|
||||
|
||||
@@ -2,12 +2,6 @@
|
||||
* 格式化工具
|
||||
*/
|
||||
|
||||
export function formatNumber(num: number): string {
|
||||
if (num >= 10000) {
|
||||
return (num / 10000).toFixed(1) + '万';
|
||||
}
|
||||
return num.toString();
|
||||
}
|
||||
|
||||
export function formatHp(current: number, max: number): string {
|
||||
return `${Math.floor(current)} / ${max}`;
|
||||
|
||||
Reference in New Issue
Block a user