From db6df82ea8ad3ac108369f2db72223bbf2df48f6 Mon Sep 17 00:00:00 2001 From: bridge Date: Tue, 6 Jan 2026 22:28:25 +0800 Subject: [PATCH] refactor cast action --- src/classes/action/cast.py | 17 ++++++++++++----- static/config.yml | 5 ----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/classes/action/cast.py b/src/classes/action/cast.py index 9a0fbbb..3b07be8 100644 --- a/src/classes/action/cast.py +++ b/src/classes/action/cast.py @@ -10,7 +10,6 @@ from src.classes.item import Item from src.classes.weapon import get_random_weapon_by_realm from src.classes.auxiliary import get_random_auxiliary_by_realm from src.classes.single_choice import handle_item_exchange -from src.utils.config import CONFIG from src.utils.resolution import resolve_query if TYPE_CHECKING: @@ -24,7 +23,16 @@ class Cast(TimedAction): ACTION_NAME = "铸造" EMOJI = "🔥" DESC = "消耗材料尝试铸造法宝" - DOABLES_REQUIREMENTS = f"拥有{getattr(CONFIG.action.cast, 'cost', 10)}个同阶材料" + + COST = 5 + SUCCESS_RATES = { + Realm.Qi_Refinement: 0.4, + Realm.Foundation_Establishment: 0.3, + Realm.Core_Formation: 0.2, + Realm.Nascent_Soul: 0.1, + } + + DOABLES_REQUIREMENTS = f"拥有{COST}个同境界材料" PARAMS = {"target_realm": "目标境界名称('练气'、'筑基'、'金丹'、'元婴')"} IS_MAJOR = False @@ -35,8 +43,7 @@ class Cast(TimedAction): self.target_realm: Optional[Realm] = None def _get_cost(self) -> int: - # 从配置读取消耗数量,默认为10 - return getattr(CONFIG.action.cast, "cost", 10) + return self.COST def _count_materials(self, realm: Realm) -> int: """ @@ -109,7 +116,7 @@ class Cast(TimedAction): return [] # 1. 计算成功率 - base_rate = float(getattr(CONFIG.action.cast, "base_success_rate", 0.3)) + base_rate = self.SUCCESS_RATES.get(self.target_realm, 0.1) extra_rate = float(self.avatar.effects.get("extra_cast_success_rate", 0.0)) success_rate = base_rate + extra_rate diff --git a/static/config.yml b/static/config.yml index 979c8d2..f43d229 100644 --- a/static/config.yml +++ b/static/config.yml @@ -27,11 +27,6 @@ game: fortune_probability: 0.005 misfortune_probability: 0.005 -action: - cast: - cost: 10 - base_success_rate: 0.3 - df: ids_separator: ";"