update
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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})"
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user