merge persona and traits & add rarity

This commit is contained in:
bridge
2025-11-11 23:07:36 +08:00
parent 29092efa90
commit 9949265748
14 changed files with 247 additions and 200 deletions

View File

@@ -47,7 +47,6 @@ class AvatarLoadMixin:
from src.classes.root import Root
from src.classes.alignment import Alignment
from src.classes.persona import personas_by_id
from src.classes.trait import traits_by_id
from src.classes.appearance import get_appearance_by_level
from src.classes.magic_stone import MagicStone
from src.classes.action_runtime import ActionPlan
@@ -133,11 +132,6 @@ class AvatarLoadMixin:
persona_ids = data.get("persona_ids", [])
avatar.personas = [personas_by_id[pid] for pid in persona_ids if pid in personas_by_id]
# 重建trait
trait_id = data.get("trait_id")
if trait_id is not None and trait_id in traits_by_id:
avatar.trait = traits_by_id[trait_id]
# 设置外貌通过level获取完整的Appearance对象
avatar.appearance = get_appearance_by_level(data.get("appearance", 5))

View File

@@ -18,7 +18,6 @@ from src.classes.relation import Relation
from src.classes.technique import get_technique_by_sect, attribute_to_root, Technique, techniques_by_id, techniques_by_name
from src.classes.treasure import treasures_by_sect_id, Treasure, treasures_by_id, treasures_by_name
from src.classes.persona import Persona, personas_by_id, personas_by_name
from src.classes.trait import Trait, traits_by_id, traits_by_name
# —— 参数常量(便于调参)——
@@ -572,22 +571,6 @@ def _parse_treasure(value: Union[str, int, Treasure, None]) -> Optional[Treasure
return treasures_by_name.get(s)
def _parse_trait(value: Union[str, int, Trait, None]) -> Optional[Trait]:
"""解析trait参数"""
if value is None:
return None
if isinstance(value, Trait):
return value
if isinstance(value, int):
return traits_by_id.get(value)
s = str(value).strip()
if not s:
return None
if s.isdigit():
return traits_by_id.get(int(s))
return traits_by_name.get(s)
def _parse_personas(value: Union[str, int, Persona, List[Union[str, int, Persona]], None]) -> Optional[List[Persona]]:
if value is None:
return None
@@ -662,7 +645,6 @@ def get_new_avatar_with_config(
technique: Union[str, int, Technique, None] = None,
treasure: Union[str, int, Treasure, None] = None,
personas: Union[str, int, Persona, List[Union[str, int, Persona]], None] = None,
trait: Union[str, int, Trait, None] = None,
appearance: Optional[int] = None,
) -> Avatar:
"""
@@ -738,11 +720,6 @@ def get_new_avatar_with_config(
if pers_list is not None and len(pers_list) > 0:
avatar.personas = pers_list
# 覆盖:特质
trait_obj = _parse_trait(trait)
if trait_obj is not None:
avatar.trait = trait_obj
# 覆盖:外貌/颜值
if isinstance(appearance, int):
avatar.appearance = get_appearance_by_level(appearance)

View File

@@ -86,7 +86,6 @@ class AvatarSaveMixin:
"sect_rank": self.sect_rank.value if self.sect_rank else None,
"alignment": self.alignment.name if self.alignment else None,
"persona_ids": [p.id for p in self.personas] if self.personas else [],
"trait_id": self.trait.id if self.trait else None,
"appearance": self.appearance.level,
# 行动与AI