merge persona and traits & add rarity
This commit is contained in:
@@ -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))
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user