将果酒替换为果实炼金的产物
This commit is contained in:
@@ -82,5 +82,12 @@ Yolo模式: Off
|
|||||||
- 阻碍因素:无
|
- 阻碍因素:无
|
||||||
- 状态:未确认
|
- 状态:未确认
|
||||||
|
|
||||||
|
2025-11-10_01:30:57
|
||||||
|
- 已修改:Plugins/WPSGardenSystem/garden_models.py Plugins/WPSGardenSystem/garden_plugin_base.py
|
||||||
|
- 更改:新增果酒物品定义并注册背包与商店模式,炼金成功产物改为果酒,成功率统一 75%。
|
||||||
|
- 原因:取消高亏损的“果实→种子”配方,为后续系统提供果酒物品。
|
||||||
|
- 阻碍因素:无
|
||||||
|
- 状态:未确认
|
||||||
|
|
||||||
# 最终审查
|
# 最终审查
|
||||||
(待补充)
|
(待补充)
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ class GardenCropDefinition(BaseModel):
|
|||||||
base_yield: int
|
base_yield: int
|
||||||
extra_reward: GardenExtraReward
|
extra_reward: GardenExtraReward
|
||||||
extra_item_id: str | None = None
|
extra_item_id: str | None = None
|
||||||
|
wine_item_id: str | None = None
|
||||||
|
wine_tier: str | None = None
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
allow_mutation = False
|
allow_mutation = False
|
||||||
@@ -60,6 +62,8 @@ COMMON_HERB_CROPS: Tuple[GardenCropDefinition, ...] = (
|
|||||||
seed_price=30,
|
seed_price=30,
|
||||||
base_yield=4,
|
base_yield=4,
|
||||||
extra_reward=GardenExtraReward(kind="points", payload={"min": 10, "max": 120}, base_rate=0.6),
|
extra_reward=GardenExtraReward(kind="points", payload={"min": 10, "max": 120}, base_rate=0.6),
|
||||||
|
wine_item_id="garden_wine_mint",
|
||||||
|
wine_tier="rare",
|
||||||
),
|
),
|
||||||
GardenCropDefinition(
|
GardenCropDefinition(
|
||||||
seed_id="garden_seed_basil",
|
seed_id="garden_seed_basil",
|
||||||
@@ -70,6 +74,8 @@ COMMON_HERB_CROPS: Tuple[GardenCropDefinition, ...] = (
|
|||||||
seed_price=36,
|
seed_price=36,
|
||||||
base_yield=5,
|
base_yield=5,
|
||||||
extra_reward=GardenExtraReward(kind="points", payload={"min": 15, "max": 150}, base_rate=0.55),
|
extra_reward=GardenExtraReward(kind="points", payload={"min": 15, "max": 150}, base_rate=0.55),
|
||||||
|
wine_item_id="garden_wine_basil",
|
||||||
|
wine_tier="rare",
|
||||||
),
|
),
|
||||||
GardenCropDefinition(
|
GardenCropDefinition(
|
||||||
seed_id="garden_seed_sage",
|
seed_id="garden_seed_sage",
|
||||||
@@ -80,6 +86,8 @@ COMMON_HERB_CROPS: Tuple[GardenCropDefinition, ...] = (
|
|||||||
seed_price=42,
|
seed_price=42,
|
||||||
base_yield=5,
|
base_yield=5,
|
||||||
extra_reward=GardenExtraReward(kind="points", payload={"min": 20, "max": 180}, base_rate=0.5),
|
extra_reward=GardenExtraReward(kind="points", payload={"min": 20, "max": 180}, base_rate=0.5),
|
||||||
|
wine_item_id="garden_wine_sage",
|
||||||
|
wine_tier="rare",
|
||||||
),
|
),
|
||||||
GardenCropDefinition(
|
GardenCropDefinition(
|
||||||
seed_id="garden_seed_rosemary",
|
seed_id="garden_seed_rosemary",
|
||||||
@@ -90,6 +98,8 @@ COMMON_HERB_CROPS: Tuple[GardenCropDefinition, ...] = (
|
|||||||
seed_price=50,
|
seed_price=50,
|
||||||
base_yield=6,
|
base_yield=6,
|
||||||
extra_reward=GardenExtraReward(kind="points", payload={"min": 30, "max": 220}, base_rate=0.45),
|
extra_reward=GardenExtraReward(kind="points", payload={"min": 30, "max": 220}, base_rate=0.45),
|
||||||
|
wine_item_id="garden_wine_rosemary",
|
||||||
|
wine_tier="rare",
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -104,6 +114,8 @@ RARE_TREE_CROPS: Tuple[GardenCropDefinition, ...] = (
|
|||||||
base_yield=3,
|
base_yield=3,
|
||||||
extra_reward=GardenExtraReward(kind="item", payload={"min": 2, "max": 6}, base_rate=0.5),
|
extra_reward=GardenExtraReward(kind="item", payload={"min": 2, "max": 6}, base_rate=0.5),
|
||||||
extra_item_id="garden_wood_ginkgo",
|
extra_item_id="garden_wood_ginkgo",
|
||||||
|
wine_item_id="garden_wine_ginkgo",
|
||||||
|
wine_tier="epic",
|
||||||
),
|
),
|
||||||
GardenCropDefinition(
|
GardenCropDefinition(
|
||||||
seed_id="garden_seed_sakura",
|
seed_id="garden_seed_sakura",
|
||||||
@@ -115,6 +127,8 @@ RARE_TREE_CROPS: Tuple[GardenCropDefinition, ...] = (
|
|||||||
base_yield=3,
|
base_yield=3,
|
||||||
extra_reward=GardenExtraReward(kind="item", payload={"min": 3, "max": 8}, base_rate=0.45),
|
extra_reward=GardenExtraReward(kind="item", payload={"min": 3, "max": 8}, base_rate=0.45),
|
||||||
extra_item_id="garden_wood_sakura",
|
extra_item_id="garden_wood_sakura",
|
||||||
|
wine_item_id="garden_wine_sakura",
|
||||||
|
wine_tier="epic",
|
||||||
),
|
),
|
||||||
GardenCropDefinition(
|
GardenCropDefinition(
|
||||||
seed_id="garden_seed_maple",
|
seed_id="garden_seed_maple",
|
||||||
@@ -126,6 +140,8 @@ RARE_TREE_CROPS: Tuple[GardenCropDefinition, ...] = (
|
|||||||
base_yield=4,
|
base_yield=4,
|
||||||
extra_reward=GardenExtraReward(kind="item", payload={"min": 4, "max": 10}, base_rate=0.4),
|
extra_reward=GardenExtraReward(kind="item", payload={"min": 4, "max": 10}, base_rate=0.4),
|
||||||
extra_item_id="garden_wood_maple",
|
extra_item_id="garden_wood_maple",
|
||||||
|
wine_item_id="garden_wine_maple",
|
||||||
|
wine_tier="epic",
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -70,13 +70,35 @@ class WPSGardenBase(WPSAPI):
|
|||||||
self._safe_register_item(backpack, crop.fruit_id, fruit_name, tier)
|
self._safe_register_item(backpack, crop.fruit_id, fruit_name, tier)
|
||||||
if crop.extra_reward and crop.extra_reward.kind == "item" and crop.extra_item_id:
|
if crop.extra_reward and crop.extra_reward.kind == "item" and crop.extra_item_id:
|
||||||
wood_name = f"{crop.display_name}的木材"
|
wood_name = f"{crop.display_name}的木材"
|
||||||
self._safe_register_item(backpack, crop.extra_item_id, wood_name, BackpackItemTier.RARE)
|
self._safe_register_item(
|
||||||
|
backpack,
|
||||||
|
crop.extra_item_id,
|
||||||
|
wood_name,
|
||||||
|
BackpackItemTier.RARE,
|
||||||
|
)
|
||||||
|
if crop.wine_item_id and crop.wine_tier:
|
||||||
|
wine_tier = getattr(BackpackItemTier, crop.wine_tier.upper(), BackpackItemTier.RARE)
|
||||||
|
wine_name = f"{crop.display_name}的果酒"
|
||||||
|
self._safe_register_item(
|
||||||
|
backpack,
|
||||||
|
crop.wine_item_id,
|
||||||
|
wine_name,
|
||||||
|
wine_tier,
|
||||||
|
)
|
||||||
|
|
||||||
self._safe_register_mode(
|
self._safe_register_mode(
|
||||||
store,
|
store,
|
||||||
crop,
|
crop,
|
||||||
limit_amount=service.config.seed_store_limit,
|
limit_amount=service.config.seed_store_limit,
|
||||||
)
|
)
|
||||||
|
if crop.wine_item_id and crop.wine_tier:
|
||||||
|
wine_price = crop.seed_price * service.config.sale_multiplier * 5
|
||||||
|
self._safe_register_wine_mode(
|
||||||
|
store,
|
||||||
|
crop.wine_item_id,
|
||||||
|
wine_price,
|
||||||
|
limit_amount=service.config.seed_store_limit,
|
||||||
|
)
|
||||||
self._safe_register_recipe(alchemy, crop)
|
self._safe_register_recipe(alchemy, crop)
|
||||||
|
|
||||||
for item_id, meta in GARDEN_MISC_ITEMS.items():
|
for item_id, meta in GARDEN_MISC_ITEMS.items():
|
||||||
@@ -121,16 +143,35 @@ class WPSGardenBase(WPSAPI):
|
|||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def _safe_register_wine_mode(
|
||||||
|
self,
|
||||||
|
store: WPSStoreSystem,
|
||||||
|
item_id: str,
|
||||||
|
price: int,
|
||||||
|
*,
|
||||||
|
limit_amount: int,
|
||||||
|
) -> None:
|
||||||
|
try:
|
||||||
|
store.register_mode(
|
||||||
|
item_id=item_id,
|
||||||
|
price=price,
|
||||||
|
limit_amount=limit_amount,
|
||||||
|
)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
def _safe_register_recipe(
|
def _safe_register_recipe(
|
||||||
self,
|
self,
|
||||||
alchemy: WPSAlchemyGame,
|
alchemy: WPSAlchemyGame,
|
||||||
crop: GardenCropDefinition,
|
crop: GardenCropDefinition,
|
||||||
) -> None:
|
) -> None:
|
||||||
try:
|
try:
|
||||||
success_rate = 0.75 if crop.tier == "common" else 0.6
|
if not crop.wine_item_id:
|
||||||
|
return
|
||||||
|
success_rate = 0.75
|
||||||
alchemy.register_recipe(
|
alchemy.register_recipe(
|
||||||
(crop.fruit_id, crop.fruit_id, crop.fruit_id),
|
(crop.fruit_id, crop.fruit_id, crop.fruit_id),
|
||||||
crop.seed_id,
|
crop.wine_item_id,
|
||||||
"garden_item_rot_fruit",
|
"garden_item_rot_fruit",
|
||||||
success_rate,
|
success_rate,
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user