fix talk no recent events bug

This commit is contained in:
bridge
2025-10-26 02:38:45 +08:00
parent bc155fbfca
commit 00b173fa30
5 changed files with 22 additions and 10 deletions

View File

@@ -58,7 +58,9 @@ class Catch(TimedAction):
# 覆盖为新的灵兽
self.avatar.spirit_animal = SpiritAnimal(name=target.name, realm=target.realm)
# 记录结果供 finish 生成事件
self._caught_result = (str(target.name), target.realm)
self._caught_result = (str(target.name), target.realm, "success")
else:
self._caught_result = (None, None, "fail")
def can_start(self) -> tuple[bool, str]:
# 仅百兽宗
@@ -85,11 +87,14 @@ class Catch(TimedAction):
def finish(self) -> list[Event]:
res = self._caught_result
if not (isinstance(res, tuple) and len(res) == 2):
if not (isinstance(res, tuple) and len(res) == 3):
return []
target_name, target_realm = res[0], res[1]
realm_label = target_realm.value
text = f"{self.avatar.name} 御兽成功,{realm_label}境的{target_name}成为其灵兽"
return [Event(self.world.month_stamp, text, related_avatars=[self.avatar.id])]
target_name, target_realm, result = res[0], res[1], res[2]
if result == "fail":
return [Event(self.world.month_stamp, f"{self.avatar.name} 御兽失败", related_avatars=[self.avatar.id])]
else:
realm_label = target_realm.value
text = f"{self.avatar.name} 御兽成功,{realm_label}境的{target_name}成为其灵兽"
return [Event(self.world.month_stamp, text, related_avatars=[self.avatar.id])]

View File

@@ -44,12 +44,17 @@ class Conversation(MutualAction):
}
# 可能的后天关系(转中文名,给模板阅读)
possible_relations = [relation_display_names[r] for r in get_possible_post_relations(self.avatar, target_avatar)]
# 历史上下文:仅双方共同经历的最近事件(与 MutualAction 对齐)
n = CONFIG.social.event_context_num
em = self.world.event_manager
pair_recent_events = [str(e) for e in em.get_events_between(self.avatar.id, target_avatar.id, limit=n)]
return {
"avatar_infos": avatar_infos,
"avatar_name_1": avatar_name_1,
"avatar_name_2": avatar_name_2,
"can_into_relation": bool(can_into_relation),
"possible_relations": possible_relations,
"recent_events": pair_recent_events,
}
def can_start(self, target_avatar: "Avatar|str|None" = None, **kwargs) -> tuple[bool, str]: