修复炼金系统中的错误
This commit is contained in:
@@ -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
|
||||
)
|
||||
|
||||
# 创建炼金记录
|
||||
|
||||
Reference in New Issue
Block a user