From c6a574a2ac045a03b51775649ecf4566e4e7bf40 Mon Sep 17 00:00:00 2001 From: bridge Date: Thu, 8 Jan 2026 22:19:56 +0800 Subject: [PATCH] refactor: remove switch weapon action --- src/classes/action/__init__.py | 3 - src/classes/action/switch_weapon.py | 98 ----------------------------- src/classes/store.py | 6 +- src/classes/world.py | 3 +- 4 files changed, 5 insertions(+), 105 deletions(-) delete mode 100644 src/classes/action/switch_weapon.py diff --git a/src/classes/action/__init__.py b/src/classes/action/__init__.py index f20511a..60fdf20 100644 --- a/src/classes/action/__init__.py +++ b/src/classes/action/__init__.py @@ -33,7 +33,6 @@ from .devour_mortals import DevourMortals from .self_heal import SelfHeal from .catch import Catch from .nurture_weapon import NurtureWeapon -from .switch_weapon import SwitchWeapon from .assassinate import Assassinate from .move_to_direction import MoveToDirection from .cast import Cast @@ -69,7 +68,6 @@ register_action(actual=True)(DevourMortals) register_action(actual=True)(SelfHeal) register_action(actual=True)(Catch) register_action(actual=True)(NurtureWeapon) -register_action(actual=True)(SwitchWeapon) register_action(actual=True)(Assassinate) register_action(actual=True)(MoveToDirection) register_action(actual=True)(Cast) @@ -108,7 +106,6 @@ __all__ = [ "SelfHeal", "Catch", "NurtureWeapon", - "SwitchWeapon", "Assassinate", "MoveToDirection", "Cast", diff --git a/src/classes/action/switch_weapon.py b/src/classes/action/switch_weapon.py deleted file mode 100644 index abed81f..0000000 --- a/src/classes/action/switch_weapon.py +++ /dev/null @@ -1,98 +0,0 @@ -from __future__ import annotations - -from src.classes.action import InstantAction -from src.classes.event import Event -from src.classes.weapon import get_random_weapon_by_realm -from src.classes.weapon_type import WeaponType -from src.classes.cultivation import Realm -from src.classes.normalize import normalize_weapon_type - - -class SwitchWeapon(InstantAction): - """ - 切换兵器:将当前兵器切换为指定类型的练气兵器。 - 熟练度重置为0。 - """ - - ACTION_NAME = "切换兵器" - EMOJI = "🔄" - DESC = "切换到指定类型的练气兵器,或卸下兵器。当前兵器会丧失,熟练度会重置为0。适用于想要更换兵器类型或从头修炼新兵器的情况。" - DOABLES_REQUIREMENTS = "无前置条件" - PARAMS = {"weapon_type_name": "str"} - - def _execute(self, weapon_type_name: str) -> None: - # 处理卸下兵器的情况 - if weapon_type_name in ["无", "None", "none", ""]: - self.avatar.change_weapon(None) - return - - # 规范化兵器类型名称 - normalized_type = normalize_weapon_type(weapon_type_name) - - # 匹配 WeaponType 枚举 - target_weapon_type = None - for wt in WeaponType: - if wt.value == normalized_type: - target_weapon_type = wt - break - - if target_weapon_type is None: - return - - # 获取练气兵器(练气期) - common_weapon = get_random_weapon_by_realm(Realm.Qi_Refinement, target_weapon_type) - if common_weapon is None: - return - - # 切换兵器(使用 Avatar 的 change_weapon 方法) - self.avatar.change_weapon(common_weapon) - - def can_start(self, weapon_type_name: str) -> tuple[bool, str]: - # 处理卸下兵器的情况 - if weapon_type_name in ["无", "None", "none", ""]: - if self.avatar.weapon is None: - return False, "当前已处于无兵器状态" - return True, "" - - # 规范化并验证兵器类型 - normalized_type = normalize_weapon_type(weapon_type_name) - target_weapon_type = None - for wt in WeaponType: - if wt.value == normalized_type: - target_weapon_type = wt - break - - if target_weapon_type is None: - return False, f"未知兵器类型: {weapon_type_name}(支持的类型:剑/刀/枪/棍/扇/鞭/琴/笛/暗器/无)" - - # 检查是否已经是该类型的练气兵器 - if self.avatar.weapon is not None and \ - self.avatar.weapon.weapon_type == target_weapon_type and \ - self.avatar.weapon.realm == Realm.Qi_Refinement: - return False, f"已经装备了基础{target_weapon_type.value}" - - # 检查练气兵器是否存在 - common_weapon = get_random_weapon_by_realm(Realm.Qi_Refinement, target_weapon_type) - if common_weapon is None: - return False, f"系统中不存在练气{target_weapon_type.value}" - - return True, "" - - def start(self, weapon_type_name: str) -> Event: - if weapon_type_name in ["无", "None", "none", ""]: - return Event( - self.world.month_stamp, - f"{self.avatar.name} 卸下了兵器", - related_avatars=[self.avatar.id] - ) - - normalized_type = normalize_weapon_type(weapon_type_name) - return Event( - self.world.month_stamp, - f"{self.avatar.name} 切换兵器为练气{normalized_type}", - related_avatars=[self.avatar.id] - ) - - async def finish(self, weapon_type_name: str) -> list[Event]: - return [] - diff --git a/src/classes/store.py b/src/classes/store.py index be64d84..3565301 100644 --- a/src/classes/store.py +++ b/src/classes/store.py @@ -31,7 +31,7 @@ class StoreMixin: def get_store_info(self) -> str: """ 获取商店信息描述 - 例如:交易:练气剑、练气刀(100灵石);练气破境丹(50灵石) + 例如:出售:练气剑、练气刀(100灵石);练气破境丹(50灵石) """ # 如果没有初始化或者没有物品 if not hasattr(self, 'store_items') or not self.store_items: @@ -52,12 +52,12 @@ class StoreMixin: # 按价格从低到高排序 for price in sorted(items_by_price.keys()): names = items_by_price[price] - # 去重并保持顺序 (Python 3.7+ dict key insertion order) + # 去重并保持顺序 unique_names = list(dict.fromkeys(names)) names_str = "、".join(unique_names) parts.append(f"{names_str}({price}灵石)") - return "交易:" + ";".join(parts) + return "出售:" + ";".join(parts) def is_selling(self, item_name: str) -> bool: """ diff --git a/src/classes/world.py b/src/classes/world.py index 9858a9d..6059531 100644 --- a/src/classes/world.py +++ b/src/classes/world.py @@ -60,9 +60,10 @@ class World(): "天地灵机": "世界每隔数年会有一次天象变动(如灵气潮汐),影响角色能力。", "灵石": "修仙界的通用货币。可用于购买法宝丹药,通过采集、交易或掠夺获取。", "宗门": "修士的庇护所。加入宗门可习得独门功法、获同门庇护;散修自由但资源匮乏。", - "战斗": "弱肉强食。境界压制极大,高境界者对低境界者有绝对优势。若对方死亡,胜者可掠夺败者财物。", + "战斗": "弱肉强食,境界压制极大,高境界者对低境界者有绝对优势。若对方死亡,胜者可掠夺败者财物。", "动作": "你有一系列可以执行的动作。要注意动作的效果、限制条件、区域和时间。", "装备与丹药": "通过兵器、辅助装备、丹药等装备,可以获得额外的属性加成,获得或小或大的增益。拥有好的装备或者服用好的丹药,能获得很大好处。", + "购物": "在城市区域可以购买练气级别丹药、兵器。购买丹药后会立刻服用强化自身。购买兵器可以帮自己切换兵器类型为顺手的类型。", } return desc