fix occupy & gift given bug
This commit is contained in:
@@ -1,2 +1,4 @@
|
||||
[tool.pytest.ini_options]
|
||||
pythonpath = "."
|
||||
testpaths = ["tests"]
|
||||
norecursedirs = ["tmp", "assets", "node_modules", "dist", "build", "web", "tools"]
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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":
|
||||
# 对方让步:直接转移所有权
|
||||
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]:
|
||||
"""完成动作,生成战斗故事并处理死亡"""
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user