refactor cast

This commit is contained in:
bridge
2026-01-03 23:54:47 +08:00
parent 11cef02d74
commit 868e355e41
7 changed files with 26 additions and 14 deletions

View File

@@ -9,7 +9,7 @@ from src.classes.battle import decide_battle, get_assassination_success_rate
from src.classes.story_teller import StoryTeller
from src.classes.normalize import normalize_avatar_name
from src.classes.death import handle_death
from src.classes.death_reason import DeathReason
from src.classes.death_reason import DeathReason, DeathType
from src.classes.kill_and_grab import kill_and_grab
if TYPE_CHECKING:
@@ -119,7 +119,7 @@ class Assassinate(InstantAction):
story_event = Event(self.world.month_stamp, story, related_avatars=rel_ids, is_story=True)
# 死亡清理
handle_death(self.world, target, DeathReason.BATTLE)
handle_death(self.world, target, DeathReason(DeathType.BATTLE, killer_name=self.avatar.name))
return [result_event, story_event]

View File

@@ -139,6 +139,14 @@ class Cast(TimedAction):
# 4. 决策:保留还是卖出
base_desc = f"铸造成功!获得了{self.target_realm.value}{item_label}{new_item.name}』。"
# 事件1铸造成功
events.append(Event(
self.world.month_stamp,
f"{self.avatar.name} 成功铸造{self.target_realm.value}{item_label}{new_item.name}』。",
related_avatars=[self.avatar.id],
is_major=True
))
_, result_text = await handle_item_exchange(
avatar=self.avatar,
new_item=new_item,
@@ -147,6 +155,7 @@ class Cast(TimedAction):
can_sell_new=True
)
# 事件2处置结果
events.append(Event(
self.world.month_stamp,
result_text,

View File

@@ -267,7 +267,7 @@ async def handle_battle_finish(
from src.classes.event import Event
from src.classes.story_teller import StoryTeller
from src.classes.death import handle_death
from src.classes.death_reason import DeathReason
from src.classes.death_reason import DeathReason, DeathType
winner, loser, loser_damage, winner_damage = res
is_fatal = loser.hp <= 0
@@ -306,5 +306,5 @@ async def handle_battle_finish(
# 处理死亡
if is_fatal:
handle_death(world, loser, DeathReason.BATTLE)
handle_death(world, loser, DeathReason(DeathType.BATTLE, killer_name=attacker.name))
return [result_event, story_event]

View File

@@ -408,13 +408,14 @@ async def try_trigger_fortune(avatar: Avatar) -> list[Event]:
if avatar.weapon:
intro += f" 但你手中已有『{avatar.weapon.name}』。"
_, res_text = await handle_item_exchange(
_, exchange_text = await handle_item_exchange(
avatar=avatar,
new_item=weapon,
item_type="weapon",
context_intro=intro,
can_sell_new=False
)
res_text = f"发现了兵器『{weapon.name}』,{exchange_text}"
if kind == FortuneKind.AUXILIARY:
auxiliary = _get_auxiliary_for_avatar(avatar)
@@ -427,13 +428,14 @@ async def try_trigger_fortune(avatar: Avatar) -> list[Event]:
if avatar.auxiliary:
intro += f" 但你手中已有『{avatar.auxiliary.name}』。"
_, res_text = await handle_item_exchange(
_, exchange_text = await handle_item_exchange(
avatar=avatar,
new_item=auxiliary,
item_type="auxiliary",
context_intro=intro,
can_sell_new=False
)
res_text = f"发现了辅助装备『{auxiliary.name}』,{exchange_text}"
if kind == FortuneKind.TECHNIQUE:
tech = _get_fortune_technique_for_avatar(avatar)
@@ -444,13 +446,14 @@ async def try_trigger_fortune(avatar: Avatar) -> list[Event]:
if avatar.technique:
intro += f" 这与你当前主修的『{avatar.technique.name}』冲突。"
_, res_text = await handle_item_exchange(
_, exchange_text = await handle_item_exchange(
avatar=avatar,
new_item=tech,
item_type="technique",
context_intro=intro,
can_sell_new=False
)
res_text = f"领悟了功法『{tech.name}』,{exchange_text}"
elif kind == FortuneKind.FIND_MASTER:
master = _find_potential_master(avatar)

View File

@@ -57,6 +57,6 @@ async def kill_and_grab(winner: Avatar, loser: Avatar) -> str:
else:
loser.change_auxiliary(None)
return log_text
return f"缴获了{item_label}{loot_item.name}』。{log_text}"
return ""