修复炼金系统中的错误

This commit is contained in:
2025-11-12 17:31:34 +08:00
parent b59931adcf
commit 4a3beb2153
3 changed files with 55 additions and 8 deletions

View File

@@ -401,18 +401,24 @@ class WPSAlchemyGame(WPSAPI):
material_ids = [item.item_id for item in resolved]
backpack: WPSBackpackSystem = Architecture.Get(WPSBackpackSystem)
for item in resolved:
owned = self._get_user_quantity(user_id, item.item_id)
if owned < times:
material_usage = Counter(item.item_id for item in resolved)
name_map = {item.item_id: item.name for item in resolved}
current_quantities: Dict[str, int] = {}
for item_id, single_batch_count in material_usage.items():
required_amount = single_batch_count * times
current = self._get_user_quantity(user_id, item_id)
current_quantities[item_id] = current
if current < required_amount:
item_name = name_map.get(item_id, item_id)
return (
f"❌ 材料 `{item.name}` 数量不足,需要 {times} 个,当前仅有 {owned}"
f"❌ 材料 `{item_name}` 数量不足,需要 {required_amount} 个,当前仅有 {current}"
)
# 扣除材料
for item in resolved:
current = self._get_user_quantity(user_id, item.item_id)
for item_id, single_batch_count in material_usage.items():
required_amount = single_batch_count * times
backpack.set_item_quantity(
user_id, item.item_id, current - times
user_id, item_id, current_quantities[item_id] - required_amount
)
# 创建炼金记录