diff --git a/src/classes/mutual_action/drive_away.py b/src/classes/mutual_action/drive_away.py index 5834d04..da3dc74 100644 --- a/src/classes/mutual_action/drive_away.py +++ b/src/classes/mutual_action/drive_away.py @@ -23,6 +23,10 @@ class DriveAway(MutualAction): def _can_start(self, target: "Avatar") -> tuple[bool, str]: """驱赶无额外检查条件""" + # 必须在有效区域内才能驱赶(因为需要指定 MoveAwayFromRegion 的目标区域) + if self.avatar.tile.region is None: + return False, "荒野之中无法驱赶" + from src.classes.observe import is_within_observation if not is_within_observation(self.avatar, target): return False, "目标不在交互范围内" diff --git a/src/classes/mutual_action/occupy.py b/src/classes/mutual_action/occupy.py index 9ebf50e..1604841 100644 --- a/src/classes/mutual_action/occupy.py +++ b/src/classes/mutual_action/occupy.py @@ -57,11 +57,10 @@ class Occupy(MutualAction): def start(self, region_name: str) -> Event: region, host, _ = self._get_region_and_host(region_name) - # 必须初始化开始时间 self._start_month_stamp = self.world.month_stamp - target_name = host.name if host else "无主之地" - event_text = f"{self.avatar.name} 对 {target_name} 的 {self.avatar.tile.location_name} 发起抢夺" + region_display_name = region.name if region else self.avatar.tile.location_name + event_text = f"{self.avatar.name} 对 {host.name} 的 {region_display_name} 发起抢夺" rel_ids = [self.avatar.id] if host: diff --git a/src/sim/simulator.py b/src/sim/simulator.py index a30259d..d68bb97 100644 --- a/src/sim/simulator.py +++ b/src/sim/simulator.py @@ -87,7 +87,7 @@ class Simulator: # 记录事件 event = Event( self.world.month_stamp, - f"{avatar.name} 路过 {avatar.tile.location_name},发现无主,将其占据。", + f"{avatar.name} 路过 {region.name},发现无主,将其占据。", related_avatars=[avatar.id] ) avatar.add_event(event)