diff options
Diffstat (limited to 'data')
-rw-r--r-- | data/index.yaml | 1 | ||||
-rw-r--r-- | data/maps/sushibar.yaml | 87 | ||||
-rw-r--r-- | data/recipes/default.ts | 42 |
3 files changed, 124 insertions, 6 deletions
diff --git a/data/index.yaml b/data/index.yaml index 6cf8742a..407d9005 100644 --- a/data/index.yaml +++ b/data/index.yaml @@ -45,6 +45,7 @@ maps: depot: { name: "Depot", players: 4, difficulty: 5 } 5star: { name: "5 Star", players: 10, difficulty: 5 } auto_sushi: { name: "AutoSushi", players: 2, difficulty: 2 } + sushibar: { name: "Sushi Bar", players: 2, difficulty: 2 } recipes: - none diff --git a/data/maps/sushibar.yaml b/data/maps/sushibar.yaml new file mode 100644 index 00000000..4023d873 --- /dev/null +++ b/data/maps/sushibar.yaml @@ -0,0 +1,87 @@ +# Hurry Curry! - a game about cooking +# Copyright 2024 metamuffin +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, version 3 of the License only. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +map: + - "*''''*''''*''''''''*''" + - "'''*'''''''**''''''''*" + - "''█████████████'X'''*'" + - "''█RGHI..#c...█'''''**" + - "''█T.....#c...d____'''" + - "'*█F..S..#c...d____'*'" + - "*'█L..S..#c...█''__'''" + - "''█f..⌷..#c...█''__''*" + - "*'█f..⌷..#c.~.█''__'*'" + - "'*█o..C..#c...█''__''*" + - "''█o..C..███d██''__'''" + - "*'█s..........█''__'*'" + - "'*█⌷ZZ⌷⌷⌷ggg⌷⌷█''__''*" + - "*'█████████████''__'''" + - "'''*'''''''''''''_!'''" + - "'*''''''''''''''''''''" + +tiles: + "⌷": counter + "f": counter + "#": counter + "g": counter + "t": table + "w": counter-window + "s": sink + "o": oven + "S": stove + "b": book + "C": cuttingboard + "R": rice-crate + "G": flour-crate + "H": raw-steak-crate + "I": tomato-crate + "T": coconut-crate + "F": fish-crate + "L": strawberry-crate + "X": trash + "Z": freezer + + "c": chair + "~": floor + ".": floor + "'": grass + "*": tree + "!": path + "_": path + "d": door + "▒": wall-window + "█": wall + +items: + "S": pot + "#": plate + "p": plate + "g": glass + "f": foodprocessor + +chef_spawn: "~" +customer_spawn: "!" + +walkable: + - door + - floor + - chair + - grass + - path + +collider: + - wall + - wall-window + - tree diff --git a/data/recipes/default.ts b/data/recipes/default.ts index a7ccfd1d..24122b5d 100644 --- a/data/recipes/default.ts +++ b/data/recipes/default.ts @@ -34,13 +34,15 @@ export function auto_trash() { for (const ifull of all_items) { let [i, ic] = get_container(ifull) if (i == "plate") continue + if (i == "glass") continue if (i == "pot") continue if (i == "foodprocessor") continue if (i == "dirty") continue + if (ic == "glass") ic = "glass" if (ic == "plate") ic = "dirty-plate" out({ action: "instant", - tile: "trash", + tile: ic == "glass" ? "sink" : "trash", inputs: [ifull], outputs: [ic] }) @@ -66,13 +68,13 @@ export function cook(from: string, to?: string) { out({ action: "passive", duration: 5, revert_duration: 10, tile: "stove", inputs: [o], outputs: ["burned-pot"], warn: true }) } export function process(from: string, to?: string) { - const i = from + "-foodprocessor" + const i = from.endsWith("-foodprocessor") ? from : from + "-foodprocessor" const o = (to ?? (from + "-juice")) + "-foodprocessor" - out({ action: "instant", inputs: ["foodprocessor", from], outputs: [i] }) + if (!from.endsWith("-foodprocessor")) out({ action: "instant", inputs: ["foodprocessor", from], outputs: [i] }) out({ action: "passive", duration: 5, inputs: [i], outputs: [o] }) } export function bake(from: string, to?: string) { - const o = (to ?? ("cooked-" + from)) + const o = (to ?? ("baked-" + from)) out({ action: "passive", duration: 25, tile: "oven", inputs: [from], outputs: [o] }) out({ action: "passive", duration: 15, revert_duration: 20, tile: "oven", inputs: [o], outputs: ["burned"], warn: true }) } @@ -83,7 +85,7 @@ export function crate(item: string) { export function get_container(ifull: string): [string, string | null] { const iparts = ifull.split("-") const ic = iparts.pop() - if (ic && iparts.length && ["pot", "plate", "foodprocessor"].includes(ic)) return [iparts.join("-"), ic] + if (ic && iparts.length && ["pot", "plate", "foodprocessor", "glass"].includes(ic)) return [iparts.join("-"), ic] return [ifull, null] } @@ -127,14 +129,15 @@ if (import.meta.main) { crate("leek") cut("tomato") - cook("raw-steak", "steak") + // bread process("flour", "dough") out({ action: "instant", inputs: ["dough-foodprocessor"], outputs: ["foodprocessor", "dough"] }) bake("dough", "bread") cut("bread", "bread-slice", "bread-slice") + // tomato soup process("tomato") combine("pot", "leek", "tomato-juice-foodprocessor") cook("leek-tomato-juice-pot", "tomato-soup") @@ -142,5 +145,32 @@ if (import.meta.main) { combine("plate", "steak-pot", "sliced-tomato", "bread-slice") + crate("rice") + crate("fish") + crate("coconut") + crate("strawberry") + + // Rice and nigiri + cut("fish") + cook("rice") + out({ action: "instant", inputs: ["sliced-fish", "cooked-rice-pot"], outputs: ["nigiri", "pot"] }) + + // coconut milk and strawberry puree + process("strawberry", "strawberry-puree") + process("coconut", "milk") + out({ action: "instant", inputs: ["milk-foodprocessor", "strawberry"], outputs: ["strawberry-milk-foodprocessor"] }) + out({ action: "instant", inputs: ["strawberry-puree-foodprocessor", "coconut"], outputs: ["strawberry-milk-foodprocessor"] }) + process("strawberry-milk-foodprocessor", "strawberrymilk") + process("coconut-strawberry-puree-foodprocessor", "strawberrymilk") + + // icecream + out({ action: "passive", inputs: ["strawberrymilk-foodprocessor"], outputs: ["strawberry-icecream-foodprocessor"], tile: "freezer", duration: 20 }) + out({ action: "instant", inputs: ["strawberry-icecream-foodprocessor", "plate"], outputs: ["foodprocessor", "strawberry-icecream-plate"] }) + + // drinks + out({ action: "instant", inputs: ["glass"], outputs: ["water-glass"], tile: "sink" }) + out({ action: "instant", inputs: ["glass", "milk-foodprocessor"], outputs: ["milk-glass", "foodprocessor"] }) + out({ action: "instant", inputs: ["glass", "strawberrymilk-foodprocessor"], outputs: ["strawberrymilk-glass", "foodprocessor"] }) + auto_trash() } |