1.更新菜园系统的植物加载体系2.修复冒险中定义的植物与菜园系统脱离的错误

This commit is contained in:
2025-11-11 20:31:46 +08:00
parent e949938263
commit 29c1ddef53
6 changed files with 486 additions and 9 deletions

View File

@@ -24,6 +24,17 @@ from .combat_models import (
)
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
logger: ProjectConfig = Architecture.Get(ProjectConfig)
@@ -109,7 +120,11 @@ class WPSCombatBase(WPSAPI):
for item_id, (name, tier, desc) in ADVENTURE_SEEDS.items():
self._safe_register_item(backpack, item_id, name, tier, desc)
# 种子只能通过冒险获得
# 5.1. 注册冒险种子到菜园系统(如果可用)
if GARDEN_SYSTEM_AVAILABLE:
self._register_adventure_seeds_to_garden()
# 6. 恢复过期任务和超时战斗
try:
service = self.service()
@@ -189,5 +204,77 @@ class WPSCombatBase(WPSAPI):
return price + skill_bonus
def _register_adventure_seeds_to_garden(self) -> None:
"""注册冒险种子到菜园系统"""
if not GARDEN_SYSTEM_AVAILABLE:
return
try:
backpack: WPSBackpackSystem = Architecture.Get(WPSBackpackSystem)
# 战斗之花种子EPIC
battle_flower_crop = GardenCropDefinition(
seed_id="combat_seed_battle_flower",
fruit_id="combat_fruit_battle_flower",
display_name="战斗之花",
tier="epic",
growth_minutes=240, # 4小时比稀有树木更长
seed_price=300, # 比稀有树木更贵
base_yield=2, # 产量较低,体现稀有性
extra_reward=GardenExtraReward(
kind="points",
payload={"min": 500, "max": 2000},
base_rate=0.35, # 较低的基础概率,体现稀有性
),
wine_item_id=None, # 暂不设置果酒
wine_tier=None,
)
register_crop(battle_flower_crop)
# 注册果实到背包系统
self._safe_register_item(
backpack,
battle_flower_crop.fruit_id,
"战斗之花的果实",
BackpackItemTier.EPIC,
"战斗之花成熟后的果实,可食用或售出换取积分。",
)
# 胜利之树种子LEGENDARY
victory_tree_crop = GardenCropDefinition(
seed_id="combat_seed_victory_tree",
fruit_id="combat_fruit_victory_tree",
display_name="胜利之树",
tier="legendary",
growth_minutes=480, # 8小时最长的生长时间
seed_price=800, # 最贵的种子
base_yield=1, # 最低产量,体现传说级稀有性
extra_reward=GardenExtraReward(
kind="points",
payload={"min": 2000, "max": 5000},
base_rate=0.25, # 最低的基础概率
),
wine_item_id=None, # 暂不设置果酒
wine_tier=None,
)
register_crop(victory_tree_crop)
# 注册果实到背包系统
self._safe_register_item(
backpack,
victory_tree_crop.fruit_id,
"胜利之树的果实",
BackpackItemTier.LEGENDARY,
"胜利之树成熟后的果实,可食用或售出换取积分。",
)
logger.Log(
"Info",
f"{ConsoleFrontColor.GREEN}成功注册 {len(ADVENTURE_SEEDS)} 种冒险种子到菜园系统{ConsoleFrontColor.RESET}"
)
except Exception as e:
logger.Log(
"Warning",
f"{ConsoleFrontColor.YELLOW}注册冒险种子到菜园系统时出错: {e}{ConsoleFrontColor.RESET}"
)
__all__ = ["WPSCombatBase"]