refactor cast
This commit is contained in:
@@ -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]
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 ""
|
||||
|
||||
Reference in New Issue
Block a user