aboutsummaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
Diffstat (limited to 'data')
-rw-r--r--data/index.yaml1
-rw-r--r--data/maps/sushibar.yaml87
-rw-r--r--data/recipes/default.ts42
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()
}