From a499cebfcd97792ac0a0d0680a27b4b935424f9c Mon Sep 17 00:00:00 2001 From: ninemine <1371605831@qq.com> Date: Fri, 14 Nov 2025 23:12:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B0=B4=E6=99=B6=E7=B3=BB=E7=BB=9F=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E9=85=8D=E6=96=B9=E4=B8=8E=E7=89=A9=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Plugins/WPSCrystalSystem/crystal_models.py | 210 ++++++++++++++++++ .../WPSCrystalSystem/crystal_plugin_base.py | 34 +++ 2 files changed, 244 insertions(+) diff --git a/Plugins/WPSCrystalSystem/crystal_models.py b/Plugins/WPSCrystalSystem/crystal_models.py index 7bffdbd..3108a6a 100644 --- a/Plugins/WPSCrystalSystem/crystal_models.py +++ b/Plugins/WPSCrystalSystem/crystal_models.py @@ -159,6 +159,152 @@ def _build_black_color_definition() -> CrystalColorDefinition: ) +def _build_green_color_definition() -> CrystalColorDefinition: + """Construct default chain definition for green crystal.""" + + stage1 = CrystalRecipeStage( + identifier="green_stage_1", + materials=( + "combat_fruit_battle_flower", + "combat_fruit_battle_flower", + CRYSTAL_TINT_POWDER_ID, + ), + result_item="crystal_green_dust_stage1", + fail_item=WPSAlchemyGame.ASH_ITEM_ID, + base_success_rate=0.9, + description="将战斗之花果实与变色粉尘融合成初阶绿色粉尘。", + ) + stage2 = CrystalRecipeStage( + identifier="green_stage_2", + materials=( + stage1.result_item, + stage1.result_item, + CRYSTAL_RESONANCE_POWDER_ID, + ), + result_item="crystal_green_dust_stage2", + fail_item=WPSAlchemyGame.ASH_ITEM_ID, + base_success_rate=0.75, + description="压缩初阶粉尘并注入共鸣粉形成高阶粉尘。", + ) + scroll_stage = CrystalRecipeStage( + identifier="green_scroll_alchemy", + materials=( + stage2.result_item, + stage2.result_item, + CRYSTAL_BASE_SCROLL_ID, + ), + result_item="crystal_green_scroll", + fail_item=WPSAlchemyGame.ASH_ITEM_ID, + base_success_rate=0.65, + description="将高阶粉尘灌注到卷轴之上,得出绿色变色卷轴。", + ) + + wait_stage = CrystalWaitStage( + identifier="green_scroll_nurturing", + consumed_items={ + "combat_fruit_battle_flower": 3, + "crystal_green_scroll": 1, + }, + produced_item="crystal_green_scroll_charged", + delay_minutes=40, + message="绿色变色卷轴正在吸收自然能量,预计40分钟后完成。", + ) + + final_fusion = CrystalFinalFusion( + identifier="green_crystal_fusion", + materials=( + wait_stage.produced_item, + wait_stage.produced_item, + CRYSTAL_BASE_ITEM_ID, + ), + result_item="crystal_green_core", + fail_item=WPSAlchemyGame.ASH_ITEM_ID, + base_success_rate=0.7, + description="两张绿色卷轴共鸣后唤醒基础晶核,形成绿水晶。", + ) + + return CrystalColorDefinition( + color_key="green", + display_name="绿色水晶", + chain_stages=[stage1, stage2, scroll_stage], + wait_stage=wait_stage, + final_fusion=final_fusion, + ) + + +def _build_orange_color_definition() -> CrystalColorDefinition: + """Construct default chain definition for orange crystal.""" + + stage1 = CrystalRecipeStage( + identifier="orange_stage_1", + materials=( + "combat_material_essence", + "combat_material_essence", + CRYSTAL_TINT_POWDER_ID, + ), + result_item="crystal_orange_dust_stage1", + fail_item=WPSAlchemyGame.ASH_ITEM_ID, + base_success_rate=0.85, + description="将精华与变色粉尘融合成初阶橙色粉尘。", + ) + stage2 = CrystalRecipeStage( + identifier="orange_stage_2", + materials=( + stage1.result_item, + stage1.result_item, + CRYSTAL_RESONANCE_POWDER_ID, + ), + result_item="crystal_orange_dust_stage2", + fail_item=WPSAlchemyGame.ASH_ITEM_ID, + base_success_rate=0.75, + description="压缩初阶粉尘并注入共鸣粉形成高阶粉尘。", + ) + scroll_stage = CrystalRecipeStage( + identifier="orange_scroll_alchemy", + materials=( + stage2.result_item, + stage2.result_item, + CRYSTAL_BASE_SCROLL_ID, + ), + result_item="crystal_orange_scroll", + fail_item=WPSAlchemyGame.ASH_ITEM_ID, + base_success_rate=0.65, + description="将高阶粉尘灌注到卷轴之上,得出橙色变色卷轴。", + ) + + wait_stage = CrystalWaitStage( + identifier="orange_scroll_energizing", + consumed_items={ + "combat_material_essence": 2, + "crystal_orange_scroll": 1, + }, + produced_item="crystal_orange_scroll_charged", + delay_minutes=55, + message="橙色变色卷轴正在吸收活力能量,预计55分钟后完成。", + ) + + final_fusion = CrystalFinalFusion( + identifier="orange_crystal_fusion", + materials=( + wait_stage.produced_item, + wait_stage.produced_item, + CRYSTAL_BASE_ITEM_ID, + ), + result_item="crystal_orange_core", + fail_item=WPSAlchemyGame.ASH_ITEM_ID, + base_success_rate=0.7, + description="两张橙色卷轴共鸣后唤醒基础晶核,形成橙水晶。", + ) + + return CrystalColorDefinition( + color_key="orange", + display_name="橙色水晶", + chain_stages=[stage1, stage2, scroll_stage], + wait_stage=wait_stage, + final_fusion=final_fusion, + ) + + DEFAULT_CRYSTAL_ITEMS: Dict[str, CrystalItemDefinition] = { CRYSTAL_BASE_ITEM_ID: CrystalItemDefinition( item_id=CRYSTAL_BASE_ITEM_ID, @@ -226,11 +372,75 @@ DEFAULT_CRYSTAL_ITEMS: Dict[str, CrystalItemDefinition] = { tier=BackpackItemTier.LEGENDARY, description="浓缩黑暗能量的晶体,可在多系统中作为高级材料。", ), + # 绿色水晶相关物品 + "crystal_green_dust_stage1": CrystalItemDefinition( + item_id="crystal_green_dust_stage1", + name="绿色粉尘-初阶", + tier=BackpackItemTier.RARE, + description="微量绿色素的粉尘,需要进一步压缩。", + ), + "crystal_green_dust_stage2": CrystalItemDefinition( + item_id="crystal_green_dust_stage2", + name="绿色粉尘-高阶", + tier=BackpackItemTier.EPIC, + description="高纯度绿色粉尘,可用于制作绿色卷轴。", + ), + "crystal_green_scroll": CrystalItemDefinition( + item_id="crystal_green_scroll", + name="绿色变色卷轴", + tier=BackpackItemTier.EPIC, + description="封装绿色粉尘力量的卷轴,但仍需自然能量淬炼。", + ), + "crystal_green_scroll_charged": CrystalItemDefinition( + item_id="crystal_green_scroll_charged", + name="淬炼绿色卷轴", + tier=BackpackItemTier.EPIC, + description="经历自然能量淬炼的绿色卷轴,适合唤醒晶核。", + ), + "crystal_green_core": CrystalItemDefinition( + item_id="crystal_green_core", + name="绿水晶", + tier=BackpackItemTier.LEGENDARY, + description="浓缩自然能量的晶体,可在多系统中作为高级材料。", + ), + # 橙色水晶相关物品 + "crystal_orange_dust_stage1": CrystalItemDefinition( + item_id="crystal_orange_dust_stage1", + name="橙色粉尘-初阶", + tier=BackpackItemTier.RARE, + description="微量橙色素的粉尘,需要进一步压缩。", + ), + "crystal_orange_dust_stage2": CrystalItemDefinition( + item_id="crystal_orange_dust_stage2", + name="橙色粉尘-高阶", + tier=BackpackItemTier.EPIC, + description="高纯度橙色粉尘,可用于制作橙色卷轴。", + ), + "crystal_orange_scroll": CrystalItemDefinition( + item_id="crystal_orange_scroll", + name="橙色变色卷轴", + tier=BackpackItemTier.EPIC, + description="封装橙色粉尘力量的卷轴,但仍需活力能量淬炼。", + ), + "crystal_orange_scroll_charged": CrystalItemDefinition( + item_id="crystal_orange_scroll_charged", + name="淬炼橙色卷轴", + tier=BackpackItemTier.EPIC, + description="经历活力能量淬炼的橙色卷轴,适合唤醒晶核。", + ), + "crystal_orange_core": CrystalItemDefinition( + item_id="crystal_orange_core", + name="橙水晶", + tier=BackpackItemTier.LEGENDARY, + description="浓缩活力能量的晶体,可在多系统中作为高级材料。", + ), } DEFAULT_CRYSTAL_COLOR_MAP: Dict[str, CrystalColorDefinition] = { "black": _build_black_color_definition(), + "green": _build_green_color_definition(), + "orange": _build_orange_color_definition(), } diff --git a/Plugins/WPSCrystalSystem/crystal_plugin_base.py b/Plugins/WPSCrystalSystem/crystal_plugin_base.py index b094b55..ff32547 100644 --- a/Plugins/WPSCrystalSystem/crystal_plugin_base.py +++ b/Plugins/WPSCrystalSystem/crystal_plugin_base.py @@ -29,6 +29,8 @@ from .crystal_models import ( CrystalExchangeEntry, CrystalItemDefinition, build_default_crystal_crops, + CRYSTAL_BASE_ITEM_ID, + CRYSTAL_BASE_SCROLL_ID, CRYSTAL_TREE_FRUIT_ID, CRYSTAL_TREE_SEED_ID, CRYSTAL_TINT_POWDER_ID, @@ -492,6 +494,8 @@ class WPSCrystalSystem(WPSAPI): self._register_tint_powder_recipe(alchemy) self._register_resonance_powder_recipe(alchemy) + self._register_base_scroll_recipe(alchemy) + self._register_base_core_recipe(alchemy) def _safe_register_backpack_item( self, @@ -567,6 +571,36 @@ class WPSCrystalSystem(WPSAPI): f"{ConsoleFrontColor.YELLOW}注册闪烁粉尘共鸣配方失败: {exc}{ConsoleFrontColor.RESET}", ) + def _register_base_scroll_recipe(self, alchemy: WPSAlchemyGame) -> None: + """注册空白变色卷轴配方:三种木材合成""" + try: + alchemy.register_recipe( + ("garden_wood_ginkgo", "garden_wood_sakura", "garden_wood_maple"), + CRYSTAL_BASE_SCROLL_ID, + WPSAlchemyGame.ASH_ITEM_ID, + 0.7, + ) + except Exception as exc: # pylint: disable=broad-except + logger.Log( + "Warning", + f"{ConsoleFrontColor.YELLOW}注册空白变色卷轴配方失败: {exc}{ConsoleFrontColor.RESET}", + ) + + def _register_base_core_recipe(self, alchemy: WPSAlchemyGame) -> None: + """注册未调谐晶核配方:水晶树果实 + 胜利之树果实 + 腐败果实""" + try: + alchemy.register_recipe( + (CRYSTAL_TREE_FRUIT_ID, "combat_fruit_victory_tree", "garden_item_rot_fruit"), + CRYSTAL_BASE_ITEM_ID, + WPSAlchemyGame.ASH_ITEM_ID, + 0.6, + ) + except Exception as exc: # pylint: disable=broad-except + logger.Log( + "Warning", + f"{ConsoleFrontColor.YELLOW}注册未调谐晶核配方失败: {exc}{ConsoleFrontColor.RESET}", + ) + def _item_display_name( self, item_id: str,