fix occupy & gift given bug

This commit is contained in:
bridge
2026-01-07 20:11:01 +08:00
parent 8ee0c34f6f
commit 1dfce734ef
5 changed files with 13 additions and 12 deletions

View File

@@ -1,2 +1,4 @@
[tool.pytest.ini_options]
pythonpath = "."
testpaths = ["tests"]
norecursedirs = ["tmp", "assets", "node_modules", "dist", "build", "web", "tools"]

View File

@@ -89,9 +89,9 @@ class GiftSpiritStone(MutualAction):
return events
if success:
result_text = f"{self.avatar.name} 赠送了 {self.GIFT_AMOUNT} 灵石给 {target.name}{self.avatar.
name} 灵石:{self.avatar.magic_stone + self.GIFT_AMOUNT}{self.avatar.magic_stone}{target.
name} 灵石:{target.magic_stone - self.GIFT_AMOUNT}{target.magic_stone}"
result_text = f"""{self.avatar.name} 赠送了 {self.GIFT_AMOUNT} 灵石给 {target.name}
{self.avatar.name} 灵石:{self.avatar.magic_stone + self.GIFT_AMOUNT}{self.avatar.magic_stone}
{target.name} 灵石:{target.magic_stone - self.GIFT_AMOUNT}{target.magic_stone}"""
result_event = Event(
self.world.month_stamp,
result_text,

View File

@@ -66,6 +66,7 @@ class Occupy(MutualAction):
region, host, _ = self._get_region_and_host(region_name)
self._start_month_stamp = self.world.month_stamp
self.target_region_name = region_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} 发起抢夺"
@@ -93,14 +94,16 @@ class Occupy(MutualAction):
def _settle_feedback(self, target_avatar: "Avatar", feedback_name: str) -> None:
"""处理反馈结果"""
region = self.avatar.tile.region
region_name = getattr(self, "target_region_name", self.avatar.tile.location_name)
region, _, _ = self._get_region_and_host(region_name)
if feedback_name == "Yield":
# 对方让步:直接转移所有权
region.host_avatar = self.avatar
if region:
region.host_avatar = self.avatar
# 共用一个事件
event_text = f"{self.avatar.name} 逼迫 {target_avatar.name} 让出了 {self.avatar.tile.location_name}"
event_text = f"{self.avatar.name} 逼迫 {target_avatar.name} 让出了 {region_name}"
event = Event(
self.world.month_stamp,
event_text,
@@ -120,10 +123,10 @@ class Occupy(MutualAction):
# 进攻方胜利则洞府易主
attacker_won = winner == self.avatar
if attacker_won:
if attacker_won and region:
region.host_avatar = self.avatar
self._last_result = (winner, loser, loser_dmg, winner_dmg, self.avatar.tile.location_name, attacker_won)
self._last_result = (winner, loser, loser_dmg, winner_dmg, region_name, attacker_won)
async def finish(self, region_name: str) -> list[Event]:
"""完成动作,生成战斗故事并处理死亡"""

View File

@@ -52,7 +52,6 @@ async function handleLoad(filename: string) {
await gameApi.loadGame(filename)
worldStore.reset()
uiStore.clearSelection()
uiStore.clearHoverCache()
await worldStore.initialize()
message.success('读档成功')
emit('close')

View File

@@ -34,9 +34,6 @@ export const useSocketStore = defineStore('socket', () => {
// Update World
worldStore.handleTick(payload);
// UI Cache Invalidations
uiStore.clearHoverCache();
// Refresh Detail if open (Silent update)
if (uiStore.selectedTarget) {
uiStore.refreshDetail();