厨具功能 bug 改
This commit is contained in:
1 parent
262b91ba08
commit
eed273f777
5 files changed
+80
-37
No files matched your search
@@ -51,7 +51,8 @@ MEATBALLMAKER_RULES = [
|
|||||||
{"source": "rtdd:meatballmaker_1", "item": "rtdd:rawsquidwhiskersr",
|
{"source": "rtdd:meatballmaker_1", "item": "rtdd:rawsquidwhiskersr",
|
||||||
"target": "rtdd:meatballmaker_2", "consume": 4, "tip": "§a加入鱿鱼须"},
|
"target": "rtdd:meatballmaker_2", "consume": 4, "tip": "§a加入鱿鱼须"},
|
||||||
{"source": "rtdd:meatballmaker_2", "item": "*any",
|
{"source": "rtdd:meatballmaker_2", "item": "*any",
|
||||||
"target": "rtdd:meatballmaker_3", "consume": 1, "tip": "§a加入配料,开始烹制丸子"},
|
"target": "rtdd:meatballmaker_3", "consume": 1,
|
||||||
|
"below": ["rtdd:stove_2"], "tip": "§a加入配料,开始烹制丸子"},
|
||||||
{"source": "rtdd:meatballmaker_5", "item": "rtdd:plate_0",
|
{"source": "rtdd:meatballmaker_5", "item": "rtdd:plate_0",
|
||||||
"target": "rtdd:meatballmaker_0", "consume": 1,
|
"target": "rtdd:meatballmaker_0", "consume": 1,
|
||||||
"dropItem": [{"name": "rtdd:plate_40", "count": 1}],
|
"dropItem": [{"name": "rtdd:plate_40", "count": 1}],
|
||||||
@@ -61,9 +62,9 @@ MEATBALLMAKER_RULES = [
|
|||||||
# 丸子机计时: _3(加料完成) -> 30s -> _4(半熟) -> 30s -> _5(熟)
|
# 丸子机计时: _3(加料完成) -> 30s -> _4(半熟) -> 30s -> _5(熟)
|
||||||
MEATBALL_TIMERS = [
|
MEATBALL_TIMERS = [
|
||||||
{"source": "rtdd:meatballmaker_3", "target": "rtdd:meatballmaker_4",
|
{"source": "rtdd:meatballmaker_3", "target": "rtdd:meatballmaker_4",
|
||||||
"time": 30, "autoStart": True, "doneTip": "§e丸子半熟了"},
|
"time": 30, "autoStart": True, "below": ["rtdd:stove_2"], "doneTip": "§e丸子半熟了"},
|
||||||
{"source": "rtdd:meatballmaker_4", "target": "rtdd:meatballmaker_5",
|
{"source": "rtdd:meatballmaker_4", "target": "rtdd:meatballmaker_5",
|
||||||
"time": 30, "autoStart": True, "doneTip": "§e丸子熟了!"},
|
"time": 30, "autoStart": True, "below": ["rtdd:stove_2"], "doneTip": "§e丸子熟了!"},
|
||||||
]
|
]
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
|
|||||||
+40
-19
@@ -127,6 +127,11 @@ class ChujuService(BlueFoxServerSystem):
|
|||||||
return False
|
return False
|
||||||
if not self.checkCooldown(key, 0.5):
|
if not self.checkCooldown(key, 0.5):
|
||||||
return True
|
return True
|
||||||
|
# 下方方块检查(丸子机开始烹制需下方点燃的炉灶 stove_2)
|
||||||
|
if not self.checkBelow(recipe, dim, pos):
|
||||||
|
comp.CreateMsg(playerId).NotifyOneMessage(
|
||||||
|
playerId, "§c下方需要点燃的炉灶(stove_2)才能烹制!")
|
||||||
|
return True
|
||||||
self.handleSwitch(recipe, playerId, pos, dim, itemDict, key)
|
self.handleSwitch(recipe, playerId, pos, dim, itemDict, key)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@@ -144,6 +149,19 @@ class ChujuService(BlueFoxServerSystem):
|
|||||||
return self.switchRecipes.get((blockName, "*any"))
|
return self.switchRecipes.get((blockName, "*any"))
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def checkBelow(self, recipe, dim, pos):
|
||||||
|
"""检查方块下方是否为 recipe["below"] 指定的方块列表。
|
||||||
|
没写 below 字段 → 视为满足(炉灶/蒸笼等无需下方方块)。"""
|
||||||
|
below = recipe.get("below")
|
||||||
|
if not below:
|
||||||
|
return True
|
||||||
|
belowPos = (pos[0], pos[1] - 1, pos[2])
|
||||||
|
try:
|
||||||
|
b = comp.CreateBlockInfo(LevelId).GetBlockNew(belowPos, dim)
|
||||||
|
return b.get("name") in below
|
||||||
|
except Exception:
|
||||||
|
return False
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
# 三、通用开关规则执行(炉灶/丸子机/蒸笼)
|
# 三、通用开关规则执行(炉灶/丸子机/蒸笼)
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
@@ -186,13 +204,16 @@ class ChujuService(BlueFoxServerSystem):
|
|||||||
# ---------- 空搅拌器:放入第一份食材 ----------
|
# ---------- 空搅拌器:放入第一份食材 ----------
|
||||||
if blockName == "rtdd:beater":
|
if blockName == "rtdd:beater":
|
||||||
if itemName in MEAT_ITEMS:
|
if itemName in MEAT_ITEMS:
|
||||||
|
if (itemDict.get("count") or 0) < 2:
|
||||||
|
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§c需要2个肉")
|
||||||
|
return True
|
||||||
if not self.checkCooldown(key, 0.5):
|
if not self.checkCooldown(key, 0.5):
|
||||||
return True
|
return True
|
||||||
self.consumeItem(playerId, itemDict, 1)
|
self.consumeItem(playerId, itemDict, 2)
|
||||||
self.replaceBlock(pos, dim, "rtdd:beatermeat_0", playerId)
|
self.replaceBlock(pos, dim, "rtdd:beatermeat_0", playerId)
|
||||||
self._writeMeat(dim, pos, itemName)
|
self._writeMeat(dim, pos, itemName)
|
||||||
comp.CreateMsg(playerId).NotifyOneMessage(
|
comp.CreateMsg(playerId).NotifyOneMessage(
|
||||||
playerId, "§a放入肉,再放一份搅打")
|
playerId, "§a放入肉,空手右键搅打")
|
||||||
return True
|
return True
|
||||||
if itemName == MILK_ITEM:
|
if itemName == MILK_ITEM:
|
||||||
if not self.checkCooldown(key, 0.5):
|
if not self.checkCooldown(key, 0.5):
|
||||||
@@ -203,30 +224,29 @@ class ChujuService(BlueFoxServerSystem):
|
|||||||
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§a放入牛奶")
|
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§a放入牛奶")
|
||||||
return True
|
return True
|
||||||
if itemName == EGG_ITEM:
|
if itemName == EGG_ITEM:
|
||||||
|
if (itemDict.get("count") or 0) < 3:
|
||||||
|
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§c需要3个鸡蛋")
|
||||||
|
return True
|
||||||
if not self.checkCooldown(key, 0.5):
|
if not self.checkCooldown(key, 0.5):
|
||||||
return True
|
return True
|
||||||
self.consumeItem(playerId, itemDict, 1)
|
self.consumeItem(playerId, itemDict, 3)
|
||||||
self.replaceBlock(pos, dim, "rtdd:beater_custard_0", playerId)
|
self.replaceBlock(pos, dim, "rtdd:beater_custard_0", playerId)
|
||||||
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§a放入鸡蛋")
|
comp.CreateMsg(playerId).NotifyOneMessage(
|
||||||
|
playerId, "§a放入鸡蛋,空手右键搅打")
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# ---------- 肉态: 再放一份同种肉 -> 搅打完成 ----------
|
# ---------- 肉态: 空手右键搅打 -> 肉_2 ----------
|
||||||
if blockName == "rtdd:beatermeat_0":
|
if blockName == "rtdd:beatermeat_0":
|
||||||
meat = self._readMeat(pos, dim)
|
if not itemName or itemName == "minecraft:air":
|
||||||
if itemName in MEAT_ITEMS and itemName == meat:
|
|
||||||
if not self.checkCooldown(key, 0.5):
|
if not self.checkCooldown(key, 0.5):
|
||||||
return True
|
return True
|
||||||
self.consumeItem(playerId, itemDict, 1)
|
meat = self._readMeat(pos, dim)
|
||||||
self.replaceBlock(pos, dim, "rtdd:beatermeat_1", playerId)
|
self.replaceBlock(pos, dim, "rtdd:beatermeat_1", playerId)
|
||||||
self._writeMeat(dim, pos, meat)
|
self._writeMeat(dim, pos, meat)
|
||||||
comp.CreateMsg(playerId).NotifyOneMessage(
|
comp.CreateMsg(playerId).NotifyOneMessage(
|
||||||
playerId, "§a搅打完成,空手取出肉馅")
|
playerId, "§a搅打完成,空手取出肉馅")
|
||||||
return True
|
return True
|
||||||
if itemName in MEAT_ITEMS and itemName != meat:
|
|
||||||
comp.CreateMsg(playerId).NotifyOneMessage(
|
|
||||||
playerId, "§c不能混入不同种类的肉")
|
|
||||||
return True
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if blockName == "rtdd:beatermeat_1":
|
if blockName == "rtdd:beatermeat_1":
|
||||||
@@ -242,16 +262,18 @@ class ChujuService(BlueFoxServerSystem):
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# ---------- 牛奶态: 继续加牛奶 -> 牛奶_3 ----------
|
# ---------- 牛奶态: 空手右键搅打 -> 牛奶_3 ----------
|
||||||
if blockName in ("rtdd:beatermike_0", "rtdd:beatermike_1"):
|
if blockName in ("rtdd:beatermike_0", "rtdd:beatermike_1"):
|
||||||
if itemName == MILK_ITEM:
|
if not itemName or itemName == "minecraft:air":
|
||||||
if not self.checkCooldown(key, 0.5):
|
if not self.checkCooldown(key, 0.5):
|
||||||
return True
|
return True
|
||||||
self.consumeItem(playerId, itemDict, 1)
|
|
||||||
self.giveItem(playerId, BUCKET_ITEM)
|
|
||||||
target = "rtdd:beatermike_1" if blockName == "rtdd:beatermike_0" \
|
target = "rtdd:beatermike_1" if blockName == "rtdd:beatermike_0" \
|
||||||
else "rtdd:beatermike_2"
|
else "rtdd:beatermike_2"
|
||||||
self.replaceBlock(pos, dim, target, playerId)
|
self.replaceBlock(pos, dim, target, playerId)
|
||||||
|
if target == "rtdd:beatermike_2":
|
||||||
|
comp.CreateMsg(playerId).NotifyOneMessage(
|
||||||
|
playerId, "§a牛奶搅打完成,加入鸡蛋做鸡蛋牛奶")
|
||||||
|
else:
|
||||||
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§a继续搅打牛奶")
|
comp.CreateMsg(playerId).NotifyOneMessage(playerId, "§a继续搅打牛奶")
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
@@ -268,12 +290,11 @@ class ChujuService(BlueFoxServerSystem):
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# ---------- 蛋态: 继续加蛋 -> 蛋_3 ----------
|
# ---------- 蛋态: 空手右键搅打 -> 蛋_3 ----------
|
||||||
if blockName in ("rtdd:beater_custard_0", "rtdd:beater_custard_1"):
|
if blockName in ("rtdd:beater_custard_0", "rtdd:beater_custard_1"):
|
||||||
if itemName == EGG_ITEM:
|
if not itemName or itemName == "minecraft:air":
|
||||||
if not self.checkCooldown(key, 0.5):
|
if not self.checkCooldown(key, 0.5):
|
||||||
return True
|
return True
|
||||||
self.consumeItem(playerId, itemDict, 1)
|
|
||||||
target = "rtdd:beater_custard_1" if blockName == "rtdd:beater_custard_0" \
|
target = "rtdd:beater_custard_1" if blockName == "rtdd:beater_custard_0" \
|
||||||
else "rtdd:beater_custard_2"
|
else "rtdd:beater_custard_2"
|
||||||
self.replaceBlock(pos, dim, target, playerId)
|
self.replaceBlock(pos, dim, target, playerId)
|
||||||
|
|||||||
+17
-1
@@ -116,8 +116,9 @@ class ChujuTimerService(BlueFoxServerSystem):
|
|||||||
except Exception:
|
except Exception:
|
||||||
tid = ""
|
tid = ""
|
||||||
if tid != blockName:
|
if tid != blockName:
|
||||||
# 丸子机为 autoStart=True: 计时源方块无计时数据时自动启动
|
# 丸子机为 autoStart=True: 计时源方块无计时数据且下方有炉灶时自动启动
|
||||||
if recipe.get("autoStart", True):
|
if recipe.get("autoStart", True):
|
||||||
|
if self.checkBelow(recipe, dim, pos):
|
||||||
self._writeTimerData(dim, pos, recipe, None)
|
self._writeTimerData(dim, pos, recipe, None)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -135,6 +136,9 @@ class ChujuTimerService(BlueFoxServerSystem):
|
|||||||
if cur and cur.get("name") != recipe["source"]:
|
if cur and cur.get("name") != recipe["source"]:
|
||||||
self._clearTimerData(dim, pos)
|
self._clearTimerData(dim, pos)
|
||||||
return
|
return
|
||||||
|
# 下方炉灶被拿走 → 暂停烹制, 等炉灶回来继续
|
||||||
|
if not self.checkBelow(recipe, dim, pos):
|
||||||
|
return
|
||||||
self.replaceBlock(pos, dim, recipe["target"], None)
|
self.replaceBlock(pos, dim, recipe["target"], None)
|
||||||
self._clearTimerData(dim, pos)
|
self._clearTimerData(dim, pos)
|
||||||
if recipe.get("doneTip"):
|
if recipe.get("doneTip"):
|
||||||
@@ -142,6 +146,18 @@ class ChujuTimerService(BlueFoxServerSystem):
|
|||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def checkBelow(self, recipe, dim, pos):
|
||||||
|
"""检查方块下方是否为 recipe["below"] 指定的方块列表(丸子机需 stove_2)。"""
|
||||||
|
below = recipe.get("below")
|
||||||
|
if not below:
|
||||||
|
return True
|
||||||
|
belowPos = (pos[0], pos[1] - 1, pos[2])
|
||||||
|
try:
|
||||||
|
b = comp.CreateBlockInfo(LevelId).GetBlockNew(belowPos, dim)
|
||||||
|
return b.get("name") in below
|
||||||
|
except Exception:
|
||||||
|
return False
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
# 四、计时数据读写(存在方块实体数据里,重启不丢)
|
# 四、计时数据读写(存在方块实体数据里,重启不丢)
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
|
|||||||
+7
-5
@@ -366,16 +366,18 @@ FurnitureData+FurnitureService 实现, 注册到 FeatureDispatcher)
|
|||||||
二、丸子机 (meatballmaker_0~5, 章鱼小丸子)
|
二、丸子机 (meatballmaker_0~5, 章鱼小丸子)
|
||||||
- 放面团: 手持面团(dough_0)右键空丸子机 → 加入面团(meatballmaker_1), 消耗1个 [已实现]
|
- 放面团: 手持面团(dough_0)右键空丸子机 → 加入面团(meatballmaker_1), 消耗1个 [已实现]
|
||||||
- 放鱿鱼须: 手持鱿鱼须(rawsquidwhiskersr)右键 → 加入鱿鱼(meatballmaker_2), 消耗4个 [已实现]
|
- 放鱿鱼须: 手持鱿鱼须(rawsquidwhiskersr)右键 → 加入鱿鱼(meatballmaker_2), 消耗4个 [已实现]
|
||||||
- 放配料: 手持任意物品右键 → 加入配料(meatballmaker_3), 消耗1个 [已实现]
|
- 放配料: 手持任意物品右键 → 加入配料(meatballmaker_3), 消耗1个;
|
||||||
|
需下方是点燃的炉灶(stove_2), 否则提示拒绝 [已实现]
|
||||||
- 计时熟化: 加料完成(_3) 计时30秒 → 半熟(_4) 计时30秒 → 熟(_5)
|
- 计时熟化: 加料完成(_3) 计时30秒 → 半熟(_4) 计时30秒 → 熟(_5)
|
||||||
(autoStart 自动启动, 绝对时间戳写方块实体数据, 退出重进继续计时) [已实现]
|
(autoStart 自动启动, 绝对时间戳写方块实体数据, 退出重进继续计时;
|
||||||
|
全程需下方持续存在 stove_2, 中途拿走则暂停, 放回继续) [已实现]
|
||||||
- 取成品: 手持盘子(plate_0)右键熟 → 掉落 章鱼小丸子_完整(plate_40) + 还原空 [已实现]
|
- 取成品: 手持盘子(plate_0)右键熟 → 掉落 章鱼小丸子_完整(plate_40) + 还原空 [已实现]
|
||||||
|
|
||||||
三、搅拌器 (beater 系列)
|
三、搅拌器 (beater 系列)
|
||||||
- 搅肉: 空+肉(生猪排/生牛肉) → 肉_1 → 肉_2(共消耗2个肉); 空手取出 生猪肉馅(rawmeatball_0)/
|
- 搅肉: 空+肉(一次性消耗2个) → 肉_1, 空手右键搅打 → 肉_2; 空手取 生猪肉馅(rawmeatball_0)/
|
||||||
生牛肉馅(rawmeatball_1), 按放入肉的种类决定 [已实现]
|
生牛肉馅(rawmeatball_1), 按放入肉的种类决定 [已实现]
|
||||||
- 搅奶: 空+牛奶桶 → 牛奶_1/2/3(每次消耗1牛奶桶, 返还空桶) [已实现]
|
- 搅奶: 空+牛奶桶(消耗1个, 返还空桶) → 牛奶_1, 空手右键搅打 → 牛奶_2 → 牛奶_3 [已实现]
|
||||||
- 搅蛋: 空+鸡蛋 → 蛋_1/2/3(共消耗3个鸡蛋) [已实现]
|
- 搅蛋: 空+鸡蛋(一次性消耗3个) → 蛋_1, 空手右键搅打 → 蛋_2 → 蛋_3 [已实现]
|
||||||
- 取奶油: 蛋完成态(beater_custard_2) + 木碗(消耗1) → 掉落 奶油(cream_0) + 还原空 [已实现]
|
- 取奶油: 蛋完成态(beater_custard_2) + 木碗(消耗1) → 掉落 奶油(cream_0) + 还原空 [已实现]
|
||||||
- 鸡蛋牛奶: 牛奶_3+蛋 或 蛋_3+牛奶桶(返空桶) → 鸡蛋牛奶_1; 空手搅打 → 鸡蛋牛奶_3 [已实现]
|
- 鸡蛋牛奶: 牛奶_3+蛋 或 蛋_3+牛奶桶(返空桶) → 鸡蛋牛奶_1; 空手搅打 → 鸡蛋牛奶_3 [已实现]
|
||||||
- 取蛋液: 鸡蛋牛奶_3 + 盘子(消耗1) → 掉落 蛋液半成品(plate_34) + 还原空 [已实现]
|
- 取蛋液: 鸡蛋牛奶_3 + 盘子(消耗1) → 掉落 蛋液半成品(plate_34) + 还原空 [已实现]
|
||||||
|
|||||||
+12
-9
@@ -20,7 +20,7 @@
|
|||||||
2. stove_1(炉灶_加木条) -> stove_2(炉灶_点燃)
|
2. stove_1(炉灶_加木条) -> stove_2(炉灶_点燃)
|
||||||
转换条件:[手持 打火石/烈焰弹 右键 进行转换]
|
转换条件:[手持 打火石/烈焰弹 右键 进行转换]
|
||||||
机制: 手持打火石右键不消耗/烈焰弹右键消耗1个, 点燃
|
机制: 手持打火石右键不消耗/烈焰弹右键消耗1个, 点燃
|
||||||
(炉灶点燃态 = 灶台底座, 炒锅/汤锅烹饪都需架在其上)
|
(炉灶点燃态 = 灶台底座, 炒锅/汤锅/油锅/丸子机烹饪都需架在其上)
|
||||||
|
|
||||||
========================================
|
========================================
|
||||||
二、丸子机 (meatballmaker_0~5, 章鱼小丸子)
|
二、丸子机 (meatballmaker_0~5, 章鱼小丸子)
|
||||||
@@ -51,19 +51,22 @@
|
|||||||
三、搅拌器 (beater, 蛋液/肉馅/牛奶)
|
三、搅拌器 (beater, 蛋液/肉馅/牛奶)
|
||||||
========================================
|
========================================
|
||||||
7. beater(空) + 肉 -> beatermeat_0 -> beatermeat_1
|
7. beater(空) + 肉 -> beatermeat_0 -> beatermeat_1
|
||||||
转换条件:[手持 原版牛/猪肉 右键 依次放入/搅打]
|
转换条件:[手持 原版牛/猪肉 右键 放入(一次性消耗2个), 之后空手右键搅打]
|
||||||
机制: 手持肉类右键, 消耗2个, 逐级搅打
|
机制: 空搅拌器手持肉右键一次性消耗2个 -> 肉_1(beatermeat_0);
|
||||||
|
空手右键搅打 -> 肉_2(beatermeat_1)
|
||||||
7a. beatermeat_1 -> 取出 生猪/牛肉馅(rawmeatball, 乡野食材)
|
7a. beatermeat_1 -> 取出 生猪/牛肉馅(rawmeatball, 乡野食材)
|
||||||
转换条件:[右键 进行转换, 取出肉馅]
|
转换条件:[空手 右键 进行转换, 取出肉馅]
|
||||||
机制: 最后一步右键, 取出 生猪/牛肉馅(由放入的肉决定)
|
机制: 肉_2 空手右键, 取出 生猪/牛肉馅(由放入的肉决定), 还原空搅拌器
|
||||||
|
|
||||||
8. beater(空) + 牛奶 -> beatermike_0 -> beatermike_1 -> beatermike_2
|
8. beater(空) + 牛奶 -> beatermike_0 -> beatermike_1 -> beatermike_2
|
||||||
转换条件:[手持 牛奶 右键 依次放入/搅打]
|
转换条件:[手持 牛奶桶 右键 放入(消耗1个, 返还空桶), 之后空手右键搅打]
|
||||||
机制: 手持牛奶右键, 消耗1个, 逐级搅打
|
机制: 空搅拌器手持牛奶桶右键消耗1个 -> 牛奶_1(beatermike_0);
|
||||||
|
空手右键搅打 -> 牛奶_2(beatermike_1) -> 牛奶_3(beatermike_2)
|
||||||
|
|
||||||
9. beater(空) + 蛋 -> 蛋_1 -> 蛋_2 -> 蛋_3(beater_custard_0~2)
|
9. beater(空) + 蛋 -> 蛋_1 -> 蛋_2 -> 蛋_3(beater_custard_0~2)
|
||||||
转换条件:[手持 鸡蛋 右键 依次放入/搅打]
|
转换条件:[手持 鸡蛋 右键 放入(一次性消耗3个), 之后空手右键搅打]
|
||||||
机制: 手持鸡蛋右键, 消耗3个, 逐级搅打, 蛋_3为蛋完成态
|
机制: 空搅拌器手持鸡蛋右键一次性消耗3个 -> 蛋_1(beater_custard_0);
|
||||||
|
空手右键搅打 -> 蛋_2(beater_custard_1) -> 蛋_3(beater_custard_2, 蛋完成态)
|
||||||
9a. 蛋完成态(beater_custard_2) + 木碗 -> 奶油(cream_0)
|
9a. 蛋完成态(beater_custard_2) + 木碗 -> 奶油(cream_0)
|
||||||
转换条件:[手持 木碗(bowlasoup) 右键 进行转换, 不加入牛奶]
|
转换条件:[手持 木碗(bowlasoup) 右键 进行转换, 不加入牛奶]
|
||||||
机制: 蛋完成态不加入牛奶, 手持木碗右键取出, 获得 奶油(cream_0, 乡野食材/调味·佐料)一份
|
机制: 蛋完成态不加入牛奶, 手持木碗右键取出, 获得 奶油(cream_0, 乡野食材/调味·佐料)一份
|
||||||
|
|||||||
Reference in new issue
Block a user