1.修复被错误删除的炼金配方查看插件类2.新增更多装备与配方3.新增闪烁粉尘用于合成共鸣粉末

This commit is contained in:
2025-11-14 00:34:03 +08:00
parent 5a8eb6cbd8
commit d80bfe28d5
4 changed files with 389 additions and 24 deletions

View File

@@ -2,14 +2,13 @@
from __future__ import annotations
from typing import Dict, List, Type, Union
from PWF.Convention.Runtime.Architecture import Architecture
from PWF.Convention.Runtime.Architecture import *
from PWF.Convention.Runtime.GlobalConfig import ConsoleFrontColor, ProjectConfig
from PWF.CoreModules.plugin_interface import DatabaseModel
from Plugins.WPSAPI import GuideEntry, GuideSection, WPSAPI
from Plugins.WPSBackpackSystem import BackpackItemTier, WPSBackpackSystem
from Plugins.WPSAlchemyGame import WPSAlchemyGame
from Plugins.WPSStoreSystem import WPSStoreSystem
from Plugins.WPSConfigSystem import WPSConfigAPI
from Plugins.WPSFortuneSystem import WPSFortuneSystem
@@ -21,21 +20,17 @@ from .combat_models import (
COMBAT_POTIONS,
EQUIPMENT_REGISTRY,
SKILL_REGISTRY,
SPARK_DUST_ITEM_ID,
EquipmentDefinition,
get_combat_db_models,
)
from .combat_service import CombatService, get_combat_service
# 尝试导入菜园系统(可选依赖)
try:
from Plugins.WPSGardenSystem import (
GardenCropDefinition,
GardenExtraReward,
register_crop,
)
GARDEN_SYSTEM_AVAILABLE = True
except ImportError:
GARDEN_SYSTEM_AVAILABLE = False
from Plugins.WPSGardenSystem import (
GardenCropDefinition,
GardenExtraReward,
register_crop,
)
logger: ProjectConfig = Architecture.Get(ProjectConfig)
@@ -326,7 +321,7 @@ class WPSCombatBase(WPSAPI):
WPSBackpackSystem,
WPSStoreSystem,
WPSFortuneSystem,
# 注:不强制依赖 WPSGardenSystem果酒buff配置在 combat_models.py 中
WPSAlchemyGame,
]
def register_db_model(self) -> List[DatabaseModel]:
@@ -389,9 +384,10 @@ class WPSCombatBase(WPSAPI):
self._safe_register_item(backpack, item_id, name, tier, desc)
# 种子只能通过冒险获得
# 5.1. 注册冒险种子到菜园系统(如果可用)
if GARDEN_SYSTEM_AVAILABLE:
self._register_adventure_seeds_to_garden()
# 5.1. 注册冒险种子到菜园系统
self._register_adventure_seeds_to_garden()
self._register_legendary_alchemy_recipes()
# 6. 恢复过期任务和超时战斗
try:
@@ -492,7 +488,7 @@ class WPSCombatBase(WPSAPI):
return " | ".join(parts) if parts else equipment.description
def _calculate_equipment_price(self, equipment) -> int:
def _calculate_equipment_price(self, equipment: EquipmentDefinition) -> int:
"""根据装备品质和属性计算价格"""
# 基础价格
base_prices = {
@@ -514,9 +510,6 @@ class WPSCombatBase(WPSAPI):
def _register_adventure_seeds_to_garden(self) -> None:
"""注册冒险种子到菜园系统"""
if not GARDEN_SYSTEM_AVAILABLE:
return
try:
backpack: WPSBackpackSystem = Architecture.Get(WPSBackpackSystem)
@@ -584,5 +577,36 @@ class WPSCombatBase(WPSAPI):
f"{ConsoleFrontColor.YELLOW}注册冒险种子到菜园系统时出错: {e}{ConsoleFrontColor.RESET}"
)
def _register_legendary_alchemy_recipes(self) -> None:
"""注册传说装备的炼金链条"""
alchemy: WPSAlchemyGame = Architecture.Get(WPSAlchemyGame)
recipe_definitions = (
# 护甲链
(("combat_material_ore", "garden_wood_maple", "combat_armor_chain"), "combat_armor_plate", 0.70),
(("combat_material_gem", "combat_material_crystal", "combat_armor_plate"), "combat_armor_sentinel", 0.50),
(("combat_armor_sentinel", "garden_wood_sakura", "combat_material_crystal"), "combat_armor_dragonheart", 0.30),
(("combat_armor_dragonheart", "combat_material_essence", "combat_armor_plate"), "combat_armor_guardian", 0.10),
# 鞋子链
(("combat_material_ore", "garden_wood_ginkgo", "combat_boots_leather"), "combat_boots_rapid", 0.70),
(("combat_boots_rapid", "combat_material_gem", "combat_material_crystal"), "combat_boots_wind", 0.50),
(("combat_boots_wind", "combat_material_crystal", "garden_wood_ginkgo"), "combat_boots_tempest", 0.30),
(("combat_boots_tempest", "combat_material_essence", "garden_wine_maple"), "combat_boots_starlight", 0.10),
# 饰品链
(("combat_accessory_ring_str", "combat_material_gem", "garden_wood_sakura"), "combat_accessory_barrier", 0.70),
(("combat_accessory_barrier", "combat_material_crystal", "garden_wood_sakura"), "combat_accessory_amulet", 0.50),
(("combat_accessory_amulet", "combat_material_crystal", "garden_wine_sakura"), "combat_accessory_sanctum", 0.30),
(("combat_accessory_sanctum", "combat_material_essence", "combat_souvenir_relic"), "combat_accessory_aegis", 0.10),
)
for materials, success_item_id, success_rate in recipe_definitions:
try:
alchemy.register_recipe(materials, success_item_id, SPARK_DUST_ITEM_ID, success_rate)
except Exception as exc:
logger.Log(
"Warning",
f"{ConsoleFrontColor.YELLOW}注册炼金配方 {materials} -> {success_item_id} 失败: {exc}{ConsoleFrontColor.RESET}",
)
__all__ = ["WPSCombatBase"]