This commit is contained in:
bridge
2025-11-20 00:42:40 +08:00
parent 8e72acee57
commit c5e2c2ff6d
6 changed files with 17 additions and 4 deletions

View File

@@ -25,6 +25,9 @@ class Attack(MutualAction):
def _can_start(self, target: "Avatar") -> tuple[bool, str]:
"""攻击无额外检查条件"""
from src.classes.observe import is_within_observation
if not is_within_observation(self.avatar, target):
return False, "目标不在交互范围内"
return True, ""
def _settle_feedback(self, target_avatar: "Avatar", feedback_name: str) -> None:

View File

@@ -23,6 +23,9 @@ class DriveAway(MutualAction):
def _can_start(self, target: "Avatar") -> tuple[bool, str]:
"""驱赶无额外检查条件"""
from src.classes.observe import is_within_observation
if not is_within_observation(self.avatar, target):
return False, "目标不在交互范围内"
return True, ""
def _settle_feedback(self, target_avatar: "Avatar", feedback_name: str) -> None:

View File

@@ -34,6 +34,10 @@ class GiftSpiritStone(MutualAction):
def _can_start(self, target: "Avatar") -> tuple[bool, str]:
"""检查赠送灵石的启动条件"""
from src.classes.observe import is_within_observation
if not is_within_observation(self.avatar, target):
return False, "目标不在交互范围内"
# 检查发起者的灵石是否足够
if self.avatar.magic_stone < self.GIFT_AMOUNT:
return False, f"灵石不足(当前:{self.avatar.magic_stone},需要:{self.GIFT_AMOUNT}"

View File

@@ -37,6 +37,10 @@ class Impart(MutualAction):
def _can_start(self, target: "Avatar") -> tuple[bool, str]:
"""检查传道特有的启动条件"""
from src.classes.observe import is_within_observation
if not is_within_observation(self.avatar, target):
return False, "目标不在交互范围内"
# 检查是否是师徒关系:师傅对徒弟的关系应该是 MASTER
relation = self.avatar.get_relation(target)
if relation != Relation.MASTER:

View File

@@ -155,10 +155,6 @@ class MutualAction(DefineAction, LLMAction, TargetingMixin):
target = self._get_target_avatar(target_avatar)
if target is None:
return False, "目标不存在"
from src.classes.observe import is_within_observation
ok = is_within_observation(self.avatar, target)
if not ok:
return False, "目标不在交互范围内"
# 调用子类的额外检查
return self._can_start(target)

View File

@@ -34,6 +34,9 @@ class Talk(MutualAction):
def _can_start(self, target: "Avatar") -> tuple[bool, str]:
"""攀谈无额外检查条件"""
from src.classes.observe import is_within_observation
if not is_within_observation(self.avatar, target):
return False, "目标不在交互范围内"
return True, ""
def _handle_feedback_result(self, target: "Avatar", result: dict) -> ActionResult: