From 0a78fd245b21948aa6086000e7333f6174f279c2 Mon Sep 17 00:00:00 2001
From: Jimmys <jimmysilverstein@proton.me>
Date: Wed, 1 Jan 2025 19:47:45 +0000
Subject: [PATCH 01/12] Add Npc mapper class reference to global directive for
 typing

---
 .../05-renderer/21-player-options.js              | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/game/03-JavaScript/05-renderer/21-player-options.js b/game/03-JavaScript/05-renderer/21-player-options.js
index b6ceaf802e..fb80e5e2d3 100644
--- a/game/03-JavaScript/05-renderer/21-player-options.js
+++ b/game/03-JavaScript/05-renderer/21-player-options.js
@@ -1,5 +1,5 @@
 // @ts-check
-/* global Partial, Dict, Record, CombatRenderer, Player, Bodywriting, ClothedSlots, SkinColours, ShaftTarget, isTransformationPartEnabled, isChimeraEnabled, TotalClothingStates, TransformationKeys, TransformationParts, CombatClothingTypes, AnimationSpeed, LegPositions, MachineState, CondomOptions */
+/* global Partial, Dict, Record, CombatRenderer, Player, Bodywriting, ClothedSlots, SkinColours, NpcCombatMapper, ShaftTarget, isTransformationPartEnabled, isChimeraEnabled, TotalClothingStates, TransformationKeys, TransformationParts, CombatClothingTypes, AnimationSpeed, LegPositions, MachineState, CondomOptions */
 
 /**
  * @typedef CombatPlayerOptions
@@ -1356,7 +1356,10 @@ class PlayerCombatMapper {
 			if (PlayerCombatMapper.getTentacleByShaft("rightleg") !== null && V.rightleg === "grappled") {
 				return "up";
 			}
-			if ((typeof V.vaginastate === "string" && ["othermouth", "othermouthentrance", "othermouthimminent"].includes(V.vaginastate)) || V.vaginause === "othermouth") {
+			if (
+				(typeof V.vaginastate === "string" && ["othermouth", "othermouthentrance", "othermouthimminent"].includes(V.vaginastate)) ||
+				V.vaginause === "othermouth"
+			) {
 				return "up";
 			}
 		}
@@ -1402,7 +1405,10 @@ class PlayerCombatMapper {
 			if (PlayerCombatMapper.getTentacleByShaft("leftleg") !== null && V.leftleg === "grappled") {
 				return "up";
 			}
-			if ((typeof V.vaginastate === "string" && ["othermouth", "othermouthentrance", "othermouthimminent"].includes(V.vaginastate)) || V.vaginause === "othermouth") {
+			if (
+				(typeof V.vaginastate === "string" && ["othermouth", "othermouthentrance", "othermouthimminent"].includes(V.vaginastate)) ||
+				V.vaginause === "othermouth"
+			) {
 				return "up";
 			}
 		}
@@ -1497,7 +1503,8 @@ class PlayerCombatMapper {
 		const hasPenetrator = pc.penisExist || playerHasStrapon();
 		const isExposed = PlayerCombatMapper.isPenisExposed(options);
 		const hasChastityBelt = ["chastitybeltfetish", "goldchastitybelt", "chastitybelt", "flatchastitycage"].includes(V.worn.genitals.variable);
-		const isEjaculating = V.orgasmdown > 0 &&
+		const isEjaculating =
+			V.orgasmdown > 0 &&
 			V.penisstate !== "penetrated" &&
 			V.orgasmcount < 25 &&
 			V.femaleclimax !== 1 &&
-- 
GitLab


From 88e9dfd8cb679ec798fc08968ff36d2855a62335 Mon Sep 17 00:00:00 2001
From: Jimmys <jimmysilverstein@proton.me>
Date: Thu, 2 Jan 2025 10:14:19 +0000
Subject: [PATCH 02/12] Improve error reporting for duplicate canvas setup
 calls

---
 game/03-JavaScript/05-renderer/01-multi-canvasmodel.js | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/game/03-JavaScript/05-renderer/01-multi-canvasmodel.js b/game/03-JavaScript/05-renderer/01-multi-canvasmodel.js
index 6d3546adc0..b47225ad05 100644
--- a/game/03-JavaScript/05-renderer/01-multi-canvasmodel.js
+++ b/game/03-JavaScript/05-renderer/01-multi-canvasmodel.js
@@ -130,6 +130,8 @@ class MultiCanvasModel {
 		this.animatingCanvas.redraw();
 	}
 }
+/** @type {string} */
+MultiCanvasModel.debugLastInit = "Unspecified";
 // @ts-ignore
 window.MultiCanvasModel = MultiCanvasModel;
 
@@ -143,8 +145,10 @@ Macro.add("setup-multi-canvas", {
 			Errors.report("MultiCanvasModel already exists: Likely due to two animateCombat uses in the same passage", {
 				key,
 				stack: Utils.GetStack(),
+				last: MultiCanvasModel.debugLastInit,
 			});
 		}
+		MultiCanvasModel.debugLastInit = Utils.GetStack();
 		const model = MultiCanvasModel.create(key, id, slot);
 		this.output.append(model.canvas.canvas);
 	},
-- 
GitLab


From bc6061dbb92267f0c842e43ee6cd7ff57199cbf0 Mon Sep 17 00:00:00 2001
From: Jimmys <jimmysilverstein@proton.me>
Date: Fri, 3 Jan 2025 15:54:00 +0000
Subject: [PATCH 03/12] Fix typos for hawk loot tuah

---
 game/overworld-town/loc-prison/work.twee | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/game/overworld-town/loc-prison/work.twee b/game/overworld-town/loc-prison/work.twee
index dd2d11e912..d6fc9c6378 100644
--- a/game/overworld-town/loc-prison/work.twee
+++ b/game/overworld-town/loc-prison/work.twee
@@ -1344,7 +1344,7 @@ You administer a single tooth as instructed. The <<person2>><<person>> sighs, bu
 	You return the $hawk_loot to <<anxious_guard 0>>. "That wasn't so bad," <<person1>><<he>> says.<<glove>><<lsuspicion>><<prison_rep anxious 1>><<prison_guards 1>>
 	<br><br>
 	<<prison_spire_options>>
-	<<if $hawk _loot is "mobile phone">>
+	<<if $hawk_loot is "mobile phone">>
 		<<wearProp "phone" 0 "mobile">>
 	<<else>>
 		<<wearProp $hawk_loot>>
@@ -1376,7 +1376,7 @@ You administer a single tooth as instructed. The <<person2>><<person>> sighs, bu
 	You return the $hawk_loot to <<anxious_guard 0>>. "Dunno how you do it," <<he>> says.<<glove>><<lsuspicion>><<prison_rep anxious 1>><<prison_guards 1>>
 	<br><br>
 	<<prison_spire_options>>
-	<<if $hawk _loot is "mobile phone">>
+	<<if $hawk_loot is "mobile phone">>
 		<<wearProp "phone" 0 "mobile">>
 	<<else>>
 		<<wearProp $hawk_loot>>
@@ -1415,7 +1415,7 @@ You reach for the $hawk_loot.
 	You return the $hawk_loot to <<anxious_guard 0>>. "Dunno how you do it," <<he>> says.<<glove>><<lsuspicion>><<prison_rep anxious 1>><<prison_guards 1>>
 	<br><br>
 	<<prison_spire_options>>
-	<<if $hawk _loot is "mobile phone">>
+	<<if $hawk_loot is "mobile phone">>
 		<<wearProp "phone" 0 "mobile">>
 	<<else>>
 		<<wearProp $hawk_loot>>
@@ -1477,7 +1477,7 @@ You reach for the $hawk_loot.
 	<<anxious_guard 0 cap>> awaits you. "Don't worry," <<he>> grins. "I'll delete the footage."<<gstress>><<stress 6>><<gattention prison>><<prison_attention 1>><<glove>><<lsuspicion>><<prison_rep anxious 1>><<prison_guards 1>>
 	<br><br>
 	<<prison_spire_options>>
-	<<if $hawk _loot is "mobile phone">>
+	<<if $hawk_loot is "mobile phone">>
 		<<wearProp "phone" 0 "mobile">>
 	<<else>>
 		<<wearProp $hawk_loot>>
@@ -1496,7 +1496,7 @@ You reach for the $hawk_loot.
 	You return the $hawk_loot to <<anxious_guard 0>>. "Dunno how you do it," <<he>> says.<<glove>><<lsuspicion>><<prison_rep anxious 1>><<prison_guards 1>>
 	<br><br>
 	<<prison_spire_options>>
-	<<if $hawk _loot is "mobile phone">>
+	<<if $hawk_loot is "mobile phone">>
 		<<wearProp "phone" 0 "mobile">>
 	<<else>>
 		<<wearProp $hawk_loot>>
-- 
GitLab


From 9f3008221edbf7462132964becd9be1e0bd41660 Mon Sep 17 00:00:00 2001
From: Jimmys <jimmysilverstein@proton.me>
Date: Fri, 3 Jan 2025 16:03:04 +0000
Subject: [PATCH 04/12] Put endevent call at the end of the event for sewer
 lizard vore

---
 game/overworld-underground/loc-sewers/old-sewers-events.twee | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/game/overworld-underground/loc-sewers/old-sewers-events.twee b/game/overworld-underground/loc-sewers/old-sewers-events.twee
index 7971a41dcc..44abebf844 100644
--- a/game/overworld-underground/loc-sewers/old-sewers-events.twee
+++ b/game/overworld-underground/loc-sewers/old-sewers-events.twee
@@ -50,9 +50,10 @@ The stimulation is too much for you. You pass out.
 :: Sewers Lizard Vore 5
 
 <<location "forest">><<effects>>
-<<swallowedstat>><<sewersend>><<outergoo>>
+<<swallowedstat>><<outergoo>>
 You awaken in the woods, lying inside the <<beasttype>>'s mouth. <<bHe>>'s sleeping. You wiggle out, shivering in pleasure as your <<genitals>> slides along <<bhis>> tongue once more.
 <br><br>
+<<sewersend>>
 <<link [[Next|Forest]]>><<set $eventskip to 1>><<set $forest to 20>><</link>>
 <br>
 
@@ -752,4 +753,4 @@ The tendrils retreat, vanishing into the dark.
 		<<link [[Next|Sewers Wood]]>><<handheldon>><<unset $sewersBox>><<set $eventskip to 1>><</link>>
 		<br>
 	<</if>>
-<</if>>
\ No newline at end of file
+<</if>>
-- 
GitLab


From 8ac64054d6389b52b9602f81343626ca0b4912c3 Mon Sep 17 00:00:00 2001
From: Jimmys <jimmysilverstein@proton.me>
Date: Fri, 3 Jan 2025 16:18:50 +0000
Subject: [PATCH 05/12] Update backcomp with daily prison check

---
 game/04-Variables/variables-versionUpdate.twee | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/game/04-Variables/variables-versionUpdate.twee b/game/04-Variables/variables-versionUpdate.twee
index 4fb6f31a7c..843cc67b44 100644
--- a/game/04-Variables/variables-versionUpdate.twee
+++ b/game/04-Variables/variables-versionUpdate.twee
@@ -5789,4 +5789,7 @@
     <<if $plants.chilli_con_carne.singular is "serving ">>
         <<set $plants.chilli_con_carne.singular to "serving of chilli con carne">>
 	<</if>>
+
+	<!-- $daily.prison not set in at least one save game -->
+	<<set $daily.prison ||= {}>>
 <</widget>>
-- 
GitLab


From 24ac394ccb81d9fc796dcf7dd6f0c06c23e7dab3 Mon Sep 17 00:00:00 2001
From: Jimmys <jimmysilverstein@proton.me>
Date: Fri, 3 Jan 2025 16:21:03 +0000
Subject: [PATCH 06/12] Remove unncessary console log

---
 .../05-renderer/21-npc-options.js             | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/game/03-JavaScript/05-renderer/21-npc-options.js b/game/03-JavaScript/05-renderer/21-npc-options.js
index fb8ee0f36c..eb8edb2a92 100644
--- a/game/03-JavaScript/05-renderer/21-npc-options.js
+++ b/game/03-JavaScript/05-renderer/21-npc-options.js
@@ -209,7 +209,23 @@ class NpcCombatMapper {
 			show: false,
 			amount: V.enemyarousal >= (V.enemyarousalmax / 5) * 3 ? 2 : 1,
 		};
-		options.tongue.show = typeof npc.mouth === "string" && ["mouth", "kiss", "kissentrance", "kissimminent", "anus", "anusentrance", "anusimminent", "vagina", "vaginaentrance", "vaginaimminent", "penis", "penisentrance", "penisimminent"].includes(npc.mouth);
+		options.tongue.show =
+			typeof npc.mouth === "string" &&
+			[
+				"mouth",
+				"kiss",
+				"kissentrance",
+				"kissimminent",
+				"anus",
+				"anusentrance",
+				"anusimminent",
+				"vagina",
+				"vaginaentrance",
+				"vaginaimminent",
+				"penis",
+				"penisentrance",
+				"penisimminent",
+			].includes(npc.mouth);
 		options.tongue.position = typeof npc.mouth === "string" ? npc.mouth : null;
 		options.penetrators = options.penetrators = [];
 
@@ -244,7 +260,6 @@ class NpcCombatMapper {
 			options.show = penetrator.position != null && ["vagina", "anus", "mouth"].includes(penetrator.position);
 
 			// Add exclusion for mouth-entrance.
-			console.log("Checking exclusion:", penetrator);
 			if (penetrator.position === "mouth" && penetrator.state === "entrance") {
 				options.show = false;
 				penetrator.show = false;
-- 
GitLab


From 5345020544cedd8d885486cbb3ea21ce29377dcd Mon Sep 17 00:00:00 2001
From: Jimmys <jimmysilverstein@proton.me>
Date: Fri, 3 Jan 2025 16:57:26 +0000
Subject: [PATCH 07/12] Fix sex toy speech logic

---
 game/base-combat/speech.twee | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/game/base-combat/speech.twee b/game/base-combat/speech.twee
index d46b11e461..926c14f515 100644
--- a/game/base-combat/speech.twee
+++ b/game/base-combat/speech.twee
@@ -329,7 +329,7 @@
 			`"Both? I hope there's nothing else wrong with you."`,
 			`"Why do I never get anyone normal?"`,
 		][random(0,4)]>>
-	<<elseif $speechSextoyState is "aroused" or $speechsextoy is 1 and random(0,2) isnot 0 and ($rightarm is "heldSexToy" or $leftarm is "heldSexToy")>>
+	<<elseif ($speechSextoyState is "aroused" or $speechsextoy is 1) and random(0,2) isnot 0 and ($rightarm is "heldSexToy" or $leftarm is "heldSexToy")>>
 		<<if $rightarm is "heldSexToy" and $leftarm is "heldSexToy">>
 			<<set $_sexToy to "sex toys">>
 		<<elseif $rightarm is "heldSexToy">>
-- 
GitLab


From 9dcbb571d5bc4ff8a4d11376e2b352c377361f65 Mon Sep 17 00:00:00 2001
From: Jimmys <jimmysilverstein@proton.me>
Date: Fri, 3 Jan 2025 17:52:24 +0000
Subject: [PATCH 08/12] Convert plant setup to JS

---
 .../plant-setup.js}                           | 777 +++++++++---------
 types/plants.d.ts                             |  51 ++
 2 files changed, 448 insertions(+), 380 deletions(-)
 rename game/{base-system/plant-objects.twee => 04-Variables/plant-setup.js} (86%)
 create mode 100644 types/plants.d.ts

diff --git a/game/base-system/plant-objects.twee b/game/04-Variables/plant-setup.js
similarity index 86%
rename from game/base-system/plant-objects.twee
rename to game/04-Variables/plant-setup.js
index a6381f72cd..f7bfa6a8e4 100644
--- a/game/base-system/plant-objects.twee
+++ b/game/04-Variables/plant-setup.js
@@ -1,6 +1,9 @@
-:: Widgets Plant Objects [widget]
-<<widget "init_plant_objects">>
-	<<set _plants to {
+/* globals Dict, PlantSetup */
+// @ts-check
+
+function initPlants() {
+	/** @type {Dict<PlantSetup>} */
+	const plants = {
 		red_rose: {
 			index: 0,
 			name: "red_rose",
@@ -13,10 +16,10 @@
 			days: 14,
 			multiplier: 1,
 			special: [],
-			season: ["spring","autumn"],
+			season: ["spring", "autumn"],
 			ingredients: [],
-			icon: "red_rose.png"
-			},
+			icon: "red_rose.png",
+		},
 
 		white_rose: {
 			index: 1,
@@ -30,10 +33,10 @@
 			days: 14,
 			multiplier: 1,
 			special: [],
-			season: ["spring","autumn"],
+			season: ["spring", "autumn"],
 			ingredients: [],
-			icon: "white_rose.png"
-			},
+			icon: "white_rose.png",
+		},
 
 		orchid: {
 			index: 2,
@@ -49,8 +52,8 @@
 			special: [],
 			season: ["summer"],
 			ingredients: [],
-			icon: "orchid.png"
-			},
+			icon: "orchid.png",
+		},
 
 		daisy: {
 			index: 3,
@@ -64,10 +67,10 @@
 			days: 7,
 			multiplier: 1,
 			special: [],
-			season: ["spring","summer","autumn"],
+			season: ["spring", "summer", "autumn"],
 			ingredients: [],
-			icon: "daisy.png"
-			},
+			icon: "daisy.png",
+		},
 
 		tulip: {
 			index: 4,
@@ -83,8 +86,8 @@
 			special: [],
 			season: ["autumn"],
 			ingredients: [],
-			icon: "tulip.png"
-			},
+			icon: "tulip.png",
+		},
 
 		lotus: {
 			index: 5,
@@ -98,10 +101,10 @@
 			days: 5,
 			multiplier: 1,
 			special: [],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "lotus.png"
-			},
+			icon: "lotus.png",
+		},
 
 		lily: {
 			index: 6,
@@ -115,10 +118,10 @@
 			days: 10,
 			multiplier: 1,
 			special: [],
-			season: ["spring","autumn"],
+			season: ["spring", "autumn"],
 			ingredients: [],
-			icon: "lily.png"
-			},
+			icon: "lily.png",
+		},
 
 		poppy: {
 			index: 7,
@@ -132,10 +135,10 @@
 			days: 8,
 			multiplier: 1,
 			special: [],
-			season: ["spring","autumn"],
+			season: ["spring", "autumn"],
 			ingredients: [],
-			icon: "poppy.png"
-			},
+			icon: "poppy.png",
+		},
 
 		apple: {
 			index: 8,
@@ -149,10 +152,10 @@
 			days: 7,
 			multiplier: 1,
 			special: [],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "apple.png"
-			},
+			icon: "apple.png",
+		},
 
 		orange: {
 			index: 9,
@@ -166,10 +169,10 @@
 			days: 6,
 			multiplier: 1,
 			special: [],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "orange.png"
-			},
+			icon: "orange.png",
+		},
 
 		banana: {
 			index: 10,
@@ -183,10 +186,10 @@
 			days: 9,
 			multiplier: 1,
 			special: [],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "banana.png"
-			},
+			icon: "banana.png",
+		},
 
 		lemon: {
 			index: 11,
@@ -200,10 +203,10 @@
 			days: 12,
 			multiplier: 1,
 			special: [],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "lemon.png"
-			},
+			icon: "lemon.png",
+		},
 
 		blood_lemon: {
 			index: 12,
@@ -217,10 +220,10 @@
 			days: 20,
 			multiplier: 1,
 			special: ["aphrodisiac"],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "blood_lemon.gif"
-			},
+			icon: "blood_lemon.gif",
+		},
 
 		pear: {
 			index: 13,
@@ -234,10 +237,10 @@
 			days: 10,
 			multiplier: 1,
 			special: [],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "pear.png"
-			},
+			icon: "pear.png",
+		},
 
 		strawberry: {
 			index: 14,
@@ -251,10 +254,10 @@
 			days: 14,
 			multiplier: 1,
 			special: [],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "strawberry.png"
-			},
+			icon: "strawberry.png",
+		},
 
 		peach: {
 			index: 15,
@@ -268,10 +271,10 @@
 			days: 8,
 			multiplier: 1,
 			special: [],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "peach.png"
-			},
+			icon: "peach.png",
+		},
 
 		plum: {
 			index: 16,
@@ -285,10 +288,10 @@
 			days: 10,
 			multiplier: 1,
 			special: [],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "plum.png"
-			},
+			icon: "plum.png",
+		},
 
 		mushroom: {
 			index: 17,
@@ -302,10 +305,10 @@
 			days: 14,
 			multiplier: 1,
 			special: [],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "mushroom.png"
-			},
+			icon: "mushroom.png",
+		},
 
 		wolfshroom: {
 			index: 18,
@@ -319,10 +322,10 @@
 			days: 21,
 			multiplier: 1,
 			special: ["aphrodisiac"],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "wolfshroom.png"
-			},
+			icon: "wolfshroom.png",
+		},
 
 		wild_honeycomb: {
 			index: 19,
@@ -336,10 +339,10 @@
 			days: 7,
 			multiplier: 1,
 			special: ["large"],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "wild_honeycomb.png"
-			},
+			icon: "wild_honeycomb.png",
+		},
 
 		wild_carrot: {
 			index: 20,
@@ -353,10 +356,10 @@
 			days: 10,
 			multiplier: 3,
 			special: [],
-			season: ["spring","summer","autumn"],
+			season: ["spring", "summer", "autumn"],
 			ingredients: [],
-			icon: "carrot.png"
-			},
+			icon: "carrot.png",
+		},
 
 		onion: {
 			index: 21,
@@ -370,10 +373,10 @@
 			days: 12,
 			multiplier: 3,
 			special: [],
-			season: ["spring","autumn"],
+			season: ["spring", "autumn"],
 			ingredients: [],
-			icon: "onion.png"
-			},
+			icon: "onion.png",
+		},
 
 		garlic_bulb: {
 			index: 22,
@@ -389,8 +392,8 @@
 			special: [],
 			season: ["autumn"],
 			ingredients: [],
-			icon: "garlic.png"
-			},
+			icon: "garlic.png",
+		},
 
 		potato: {
 			index: 23,
@@ -404,10 +407,10 @@
 			days: 7,
 			multiplier: 4,
 			special: [],
-			season: ["spring","autumn","winter"],
+			season: ["spring", "autumn", "winter"],
 			ingredients: [],
-			icon: "potato.png"
-			},
+			icon: "potato.png",
+		},
 
 		strange_flower: {
 			index: 24,
@@ -421,10 +424,10 @@
 			days: 28,
 			multiplier: 1,
 			special: ["aphrodisiac"],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "strange_flower.png"
-			},
+			icon: "strange_flower.png",
+		},
 
 		truffle: {
 			index: 25,
@@ -438,10 +441,10 @@
 			days: 28,
 			multiplier: 1,
 			special: [],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "truffle.png"
-			},
+			icon: "truffle.png",
+		},
 
 		bottle_of_milk: {
 			index: 26,
@@ -455,10 +458,10 @@
 			days: 1,
 			multiplier: 1,
 			special: [],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "milk.png"
-			},
+			icon: "milk.png",
+		},
 
 		chicken_egg: {
 			index: 27,
@@ -472,10 +475,10 @@
 			days: 1,
 			multiplier: 1,
 			special: [],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "egg.png"
-			},
+			icon: "egg.png",
+		},
 
 		bottle_of_breast_milk: {
 			index: 28,
@@ -489,10 +492,10 @@
 			days: 1,
 			multiplier: 1,
 			special: ["large"],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "breastmilk.png"
-			},
+			icon: "breastmilk.png",
+		},
 
 		bottle_of_semen: {
 			index: 29,
@@ -506,10 +509,10 @@
 			days: 1,
 			multiplier: 1,
 			special: ["large"],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "semenbottle.png"
-			},
+			icon: "semenbottle.png",
+		},
 
 		cabbage: {
 			index: 30,
@@ -523,10 +526,10 @@
 			days: 8,
 			multiplier: 3,
 			special: [],
-			season: ["spring","winter"],
+			season: ["spring", "winter"],
 			ingredients: [],
-			icon: "cabbage.png"
-			},
+			icon: "cabbage.png",
+		},
 
 		turnip: {
 			index: 31,
@@ -540,10 +543,10 @@
 			days: 12,
 			multiplier: 2,
 			special: [],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "turnip.png"
-			},
+			icon: "turnip.png",
+		},
 
 		broccoli: {
 			index: 32,
@@ -557,10 +560,10 @@
 			days: 10,
 			multiplier: 3,
 			special: [],
-			season: ["spring","autumn"],
+			season: ["spring", "autumn"],
 			ingredients: [],
-			icon: "broccoli.png"
-			},
+			icon: "broccoli.png",
+		},
 
 		ghostshroom: {
 			index: 33,
@@ -574,10 +577,10 @@
 			days: 14,
 			multiplier: 1,
 			special: [],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "ghostshroom.png"
-			},
+			icon: "ghostshroom.png",
+		},
 
 		blackberry: {
 			index: 34,
@@ -591,10 +594,10 @@
 			days: 10,
 			multiplier: 10,
 			special: ["small"],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "blackberry.png"
-			},
+			icon: "blackberry.png",
+		},
 
 		carnation: {
 			index: 35,
@@ -610,8 +613,8 @@
 			special: [],
 			season: ["autumn"],
 			ingredients: [],
-			icon: "carnation.png"
-			},
+			icon: "carnation.png",
+		},
 
 		bird_egg: {
 			index: 36,
@@ -625,10 +628,10 @@
 			days: 1,
 			multiplier: 1,
 			special: [],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "bird_egg.png"
-			},
+			icon: "bird_egg.png",
+		},
 
 		baby_bottle_of_breast_milk: {
 			index: 37,
@@ -643,10 +646,10 @@
 			days: 1,
 			multiplier: 1,
 			special: [],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "babybottle.png"
-			},
+			icon: "babybottle.png",
+		},
 
 		plumeria: {
 			index: 38,
@@ -662,8 +665,8 @@
 			special: [],
 			season: ["spring", "summer", "autumn"],
 			ingredients: [],
-			icon: "plumeria.png"
-			},
+			icon: "plumeria.png",
+		},
 
 		oyster_pearl: {
 			index: 39,
@@ -681,7 +684,7 @@
 			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
 			icon: "oyster_pearl.png",
-			},
+		},
 
 		bread: {
 			index: 40,
@@ -695,11 +698,11 @@
 			type: "food",
 			days: 20,
 			multiplier: 1,
-			special: ["vegan",],
+			special: ["vegan"],
 			season: [],
 			ingredients: ["flour", "salt", "vegetable_oil"],
-			icon: "bread.png"
-			},
+			icon: "bread.png",
+		},
 
 		flour: {
 			index: 41,
@@ -716,8 +719,8 @@
 			special: [],
 			season: [],
 			ingredients: ["wheat"],
-			icon: "flour.png"
-			},
+			icon: "flour.png",
+		},
 
 		salt: {
 			index: 42,
@@ -734,8 +737,8 @@
 			special: [],
 			season: [],
 			ingredients: [],
-			icon: "salt.png"
-			},
+			icon: "salt.png",
+		},
 
 		vegetable_oil: {
 			index: 43,
@@ -752,8 +755,8 @@
 			special: [],
 			season: [],
 			ingredients: [],
-			icon: "vegetable_oil.png"
-			},
+			icon: "vegetable_oil.png",
+		},
 
 		pizza: {
 			index: 44,
@@ -771,8 +774,8 @@
 			special: ["vegetarian"],
 			season: [],
 			ingredients: ["bread", "tomato", "garlic_bulb", "cheese"],
-			icon: "pizza.png"
-			},
+			icon: "pizza.png",
+		},
 
 		tomato: {
 			index: 45,
@@ -787,10 +790,10 @@
 			days: 10,
 			multiplier: 4,
 			special: [],
-			season: ["summer","autumn"],
+			season: ["summer", "autumn"],
 			ingredients: [],
-			icon: "tomato.png"
-			},
+			icon: "tomato.png",
+		},
 
 		cheese: {
 			index: 46,
@@ -808,8 +811,8 @@
 			special: ["vegetarian"],
 			season: [],
 			ingredients: ["bottle_of_milk"],
-			icon: "cheese.png"
-			},
+			icon: "cheese.png",
+		},
 
 		macaroni_cheese: {
 			index: 47,
@@ -827,8 +830,8 @@
 			special: ["vegetarian"],
 			season: [],
 			ingredients: ["bottle_of_milk", "cheese", "flour", "pasta", "salt"],
-			icon: "macaroni_cheese.png"
-			},
+			icon: "macaroni_cheese.png",
+		},
 
 		pasta: {
 			index: 48,
@@ -845,8 +848,8 @@
 			special: ["vegetarian"],
 			season: [],
 			ingredients: ["flour", "chicken_egg", "vegetable_oil", "salt"],
-			icon: "pasta.png"
-			},
+			icon: "pasta.png",
+		},
 
 		cauliflower_cheese: {
 			index: 49,
@@ -863,8 +866,8 @@
 			special: ["vegetarian"],
 			season: [],
 			ingredients: ["cauliflower", "cheese", "garlic_bulb", "bottle_of_milk"],
-			icon: "cauliflower_cheese.png"
-			},
+			icon: "cauliflower_cheese.png",
+		},
 
 		wheat: {
 			index: 50,
@@ -880,10 +883,10 @@
 			days: 9,
 			multiplier: 5,
 			special: [],
-			season: ["spring","summer","autumn"],
+			season: ["spring", "summer", "autumn"],
 			ingredients: [],
-			icon: "wheat.png"
-			},
+			icon: "wheat.png",
+		},
 
 		prawn_bisque: {
 			index: 51,
@@ -900,8 +903,8 @@
 			special: ["seafood"],
 			season: [],
 			ingredients: ["prawn", "onion", "garlic_bulb", "vegetable_oil", "cream", "lemon"],
-			icon: "prawn_bisque.png"
-			},
+			icon: "prawn_bisque.png",
+		},
 
 		cream: {
 			index: 52,
@@ -918,8 +921,8 @@
 			special: [],
 			season: [],
 			ingredients: [],
-			icon: "cream.png"
-			},
+			icon: "cream.png",
+		},
 
 		chelsea_bun: {
 			index: 53,
@@ -938,8 +941,8 @@
 			special: ["vegetarian"],
 			season: [],
 			ingredients: ["flour", "salt", "butter", "sugar", "bottle_of_milk", "honey"],
-			icon: "chelsea_bun.png"
-			},
+			icon: "chelsea_bun.png",
+		},
 
 		honey: {
 			index: 54,
@@ -956,8 +959,8 @@
 			special: [],
 			season: [],
 			ingredients: ["wild_honeycomb"],
-			icon: "honey.png"
-			},
+			icon: "honey.png",
+		},
 
 		butter: {
 			index: 55,
@@ -974,8 +977,8 @@
 			special: [],
 			season: [],
 			ingredients: ["bottle_of_milk"],
-			icon: "butter.png"
-			},
+			icon: "butter.png",
+		},
 
 		naan_bread: {
 			index: 56,
@@ -992,8 +995,8 @@
 			special: ["vegetarian"],
 			season: [],
 			ingredients: ["bottle_of_milk", "flour", "vegetable_oil", "chicken_egg", "salt"],
-			icon: "naan_bread.png"
-			},
+			icon: "naan_bread.png",
+		},
 
 		pastry: {
 			index: 57,
@@ -1011,8 +1014,8 @@
 			special: [],
 			season: [],
 			ingredients: ["butter", "flour", "salt"],
-			icon: "pastry.png"
-			},
+			icon: "pastry.png",
+		},
 
 		quiche: {
 			index: 58,
@@ -1029,8 +1032,8 @@
 			special: [],
 			season: [],
 			ingredients: ["pastry", "bottle_of_milk", "chicken_egg", "bacon", "cheese", "tomato"],
-			icon: "quiche.png"
-			},
+			icon: "quiche.png",
+		},
 
 		bacon: {
 			index: 59,
@@ -1047,8 +1050,8 @@
 			special: [],
 			season: [],
 			ingredients: [],
-			icon: "bacon.png"
-			},
+			icon: "bacon.png",
+		},
 
 		mince_pie: {
 			index: 60,
@@ -1065,8 +1068,8 @@
 			special: ["vegetarian", "sweet"],
 			season: [],
 			ingredients: ["pastry", "blackberry", "sugar"],
-			icon: "mince_pie.png"
-			},
+			icon: "mince_pie.png",
+		},
 
 		sugar: {
 			index: 61,
@@ -1083,8 +1086,8 @@
 			special: [],
 			season: [],
 			ingredients: [],
-			icon: "sugar.png"
-			},
+			icon: "sugar.png",
+		},
 
 		sausage_roll: {
 			index: 62,
@@ -1102,8 +1105,8 @@
 			special: [],
 			season: [],
 			ingredients: ["pastry", "salt", "sausage", "chicken_egg", "lemon"],
-			icon: "sausage_roll.png"
-			},
+			icon: "sausage_roll.png",
+		},
 
 		sausage: {
 			index: 63,
@@ -1120,8 +1123,8 @@
 			special: [],
 			season: [],
 			ingredients: [],
-			icon: "sausage.png"
-			},
+			icon: "sausage.png",
+		},
 
 		potato_pancake: {
 			index: 64,
@@ -1139,8 +1142,8 @@
 			special: ["vegetarian"],
 			season: [],
 			ingredients: ["potato", "onion", "chicken_egg", "vegetable_oil"],
-			icon: "potato_pancake.png"
-			},
+			icon: "potato_pancake.png",
+		},
 
 		onion_bhaji: {
 			index: 65,
@@ -1158,8 +1161,8 @@
 			special: ["vegan", "spicy"],
 			season: [],
 			ingredients: ["flour", "onion", "chilli_pepper"],
-			icon: "onion_bhaji.png"
-			},
+			icon: "onion_bhaji.png",
+		},
 
 		chilli_pepper: {
 			index: 66,
@@ -1174,10 +1177,10 @@
 			days: 22,
 			multiplier: 6,
 			special: [],
-			season: ["summer","autumn"],
+			season: ["summer", "autumn"],
 			ingredients: [],
-			icon: "chilli_pepper.png"
-			},
+			icon: "chilli_pepper.png",
+		},
 
 		samosa: {
 			index: 67,
@@ -1195,8 +1198,8 @@
 			special: ["vegetarian", "spicy"],
 			season: [],
 			ingredients: ["pastry", "potato", "chilli_pepper", "lemon"],
-			icon: "samosa.png"
-			},
+			icon: "samosa.png",
+		},
 
 		sweet_and_sour_chicken: {
 			index: 68,
@@ -1213,8 +1216,8 @@
 			special: ["spicy"],
 			season: [],
 			ingredients: ["chicken", "vegetable_oil", "pepper", "sugar", "onion"],
-			icon: "sweet_and_sour_chicken.png"
-			},
+			icon: "sweet_and_sour_chicken.png",
+		},
 
 		chicken: {
 			index: 69,
@@ -1231,8 +1234,8 @@
 			special: [],
 			season: [],
 			ingredients: [],
-			icon: "chicken.png"
-			},
+			icon: "chicken.png",
+		},
 
 		pepper: {
 			index: 70,
@@ -1247,10 +1250,10 @@
 			days: 15,
 			multiplier: 4,
 			special: [],
-			season: ["spring","summer","winter"],
+			season: ["spring", "summer", "winter"],
 			ingredients: [],
-			icon: "pepper.png"
-			},
+			icon: "pepper.png",
+		},
 
 		kedgeree: {
 			index: 71,
@@ -1267,8 +1270,8 @@
 			special: ["seafood"],
 			season: [],
 			ingredients: ["haddock", "rice", "chicken_egg", "butter", "vegetable_oil", "lemon", "cream"],
-			icon: "kedgeree.png"
-			},
+			icon: "kedgeree.png",
+		},
 
 		rice: {
 			index: 72,
@@ -1283,10 +1286,10 @@
 			days: 26,
 			multiplier: 20,
 			special: [],
-			season: ["spring","summer","autumn"],
+			season: ["spring", "summer", "autumn"],
 			ingredients: [],
-			icon: "rice.png"
-			},
+			icon: "rice.png",
+		},
 
 		haddock: {
 			index: 73,
@@ -1303,8 +1306,8 @@
 			special: [],
 			season: ["summer", "autumn"],
 			ingredients: [],
-			icon: "haddock.png"
-			},
+			icon: "haddock.png",
+		},
 
 		honeyed_pork: {
 			index: 74,
@@ -1321,8 +1324,8 @@
 			special: ["carnivore"],
 			season: [],
 			ingredients: ["pork", "salt", "honey", "chicken_egg"],
-			icon: "honeyed_pork.png"
-			},
+			icon: "honeyed_pork.png",
+		},
 
 		beef_wellington: {
 			index: 75,
@@ -1339,8 +1342,8 @@
 			special: [],
 			season: [],
 			ingredients: ["beef", "onion", "pastry", "chicken_egg", "salt", "mushroom"],
-			icon: "beef_wellington.png"
-			},
+			icon: "beef_wellington.png",
+		},
 
 		salmon_wellington: {
 			index: 76,
@@ -1357,8 +1360,8 @@
 			special: [],
 			season: [],
 			ingredients: ["salmon", "broccoli", "pastry", "chicken_egg", "salt"],
-			icon: "salmon_wellington.png"
-			},
+			icon: "salmon_wellington.png",
+		},
 
 		hamburger: {
 			index: 77,
@@ -1376,8 +1379,8 @@
 			special: [],
 			season: [],
 			ingredients: ["beef", "bread", "onion", "tomato"],
-			icon: "burger.png"
-			},
+			icon: "burger.png",
+		},
 
 		cheeseburger: {
 			index: 78,
@@ -1395,8 +1398,8 @@
 			special: [],
 			season: [],
 			ingredients: ["beef", "bread", "onion", "tomato", "cheese"],
-			icon: "cheeseburger.png"
-			},
+			icon: "cheeseburger.png",
+		},
 
 		chips: {
 			index: 79,
@@ -1413,8 +1416,8 @@
 			special: ["vegan"],
 			season: [],
 			ingredients: ["potato", "vegetable_oil", "salt"],
-			icon: "chips.png"
-			},
+			icon: "chips.png",
+		},
 
 		cheese_topped_trout: {
 			index: 80,
@@ -1431,8 +1434,8 @@
 			special: ["seafood"],
 			season: [],
 			ingredients: ["trout", "bread", "cheese", "vegetable_oil", "butter", "lemon"],
-			icon: "cheese_topped_trout.png"
-			},
+			icon: "cheese_topped_trout.png",
+		},
 
 		salmon: {
 			index: 81,
@@ -1447,10 +1450,10 @@
 			days: 1,
 			multiplier: 1,
 			special: [],
-			season: ["spring","summer","autumn"],
+			season: ["spring", "summer", "autumn"],
 			ingredients: [],
-			icon: "salmon.png"
-			},
+			icon: "salmon.png",
+		},
 
 		trout: {
 			index: 82,
@@ -1465,10 +1468,10 @@
 			days: 1,
 			multiplier: 1,
 			special: [],
-			season: ["autumn","winter"],
+			season: ["autumn", "winter"],
 			ingredients: [],
-			icon: "trout.png"
-			},
+			icon: "trout.png",
+		},
 
 		spaghetti_bolognese: {
 			index: 83,
@@ -1485,8 +1488,8 @@
 			special: [],
 			season: [],
 			ingredients: ["pasta", "beef", "vegetable_oil", "garlic_bulb", "tomato"],
-			icon: "spaghetti_bolognese.png"
-			},
+			icon: "spaghetti_bolognese.png",
+		},
 
 		lasagne: {
 			index: 84,
@@ -1503,8 +1506,8 @@
 			special: [],
 			season: [],
 			ingredients: ["pasta", "beef", "cheese", "flour", "garlic_bulb", "tomato"],
-			icon: "lasagne.png"
-			},
+			icon: "lasagne.png",
+		},
 
 		carbonara: {
 			index: 85,
@@ -1521,8 +1524,8 @@
 			special: [],
 			season: [],
 			ingredients: ["pasta", "cheese", "flour", "bottle_of_milk", "pork"],
-			icon: "carbonara.png"
-			},
+			icon: "carbonara.png",
+		},
 
 		chicken_tikka_masala: {
 			index: 86,
@@ -1539,8 +1542,8 @@
 			special: ["spicy"],
 			season: [],
 			ingredients: ["chicken", "vegetable_oil", "onion", "garlic_bulb", "tomato", "butter", "lemon", "naan_bread", "rice"],
-			icon: "chicken_tikka_masala.png"
-			},
+			icon: "chicken_tikka_masala.png",
+		},
 
 		chilli_con_carne: {
 			index: 87,
@@ -1557,8 +1560,8 @@
 			special: ["spicy"],
 			season: [],
 			ingredients: ["beef", "vegetable_oil", "onion", "garlic_bulb", "tomato", "chilli_pepper"],
-			icon: "chilli_con_carne.png"
-			},
+			icon: "chilli_con_carne.png",
+		},
 
 		rich_biscuit: {
 			index: 88,
@@ -1577,8 +1580,8 @@
 			special: ["vegetarian", "sweet"],
 			season: [],
 			ingredients: ["chicken_egg", "flour", "sugar", "lemon"],
-			icon: "rich_biscuit.png"
-			},
+			icon: "rich_biscuit.png",
+		},
 
 		shortbread: {
 			index: 89,
@@ -1595,9 +1598,9 @@
 			multiplier: 5,
 			special: ["vegetarian", "sweet"],
 			season: [],
-			ingredients: ["butter", "flour", "sugar",],
-			icon: "shortbread.png"
-			},
+			ingredients: ["butter", "flour", "sugar"],
+			icon: "shortbread.png",
+		},
 
 		melting_moment: {
 			index: 90,
@@ -1616,8 +1619,8 @@
 			special: ["vegetarian", "sweet"],
 			season: [],
 			ingredients: ["butter", "flour", "sugar", "chicken_egg", "jam"],
-			icon: "melting_moment.png"
-			},
+			icon: "melting_moment.png",
+		},
 
 		choc_chip_cookie: {
 			index: 91,
@@ -1636,8 +1639,8 @@
 			special: ["vegetarian", "sweet"],
 			season: [],
 			ingredients: ["butter", "flour", "sugar", "chicken_egg", "chocolate"],
-			icon: "choc_chip_cookie.png"
-			},
+			icon: "choc_chip_cookie.png",
+		},
 
 		cocoa_powder: {
 			index: 92,
@@ -1654,8 +1657,8 @@
 			special: [],
 			season: [],
 			ingredients: [],
-			icon: "cocoa_powder.png"
-			},
+			icon: "cocoa_powder.png",
+		},
 
 		chocolate: {
 			index: 93,
@@ -1672,8 +1675,8 @@
 			special: ["vegetarian", "sweet"],
 			season: [],
 			ingredients: ["butter", "bottle_of_milk", "cocoa_powder"],
-			icon: "chocolate.png"
-			},
+			icon: "chocolate.png",
+		},
 
 		jammie_dodger: {
 			index: 94,
@@ -1692,8 +1695,8 @@
 			special: ["vegetarian", "sweet"],
 			season: [],
 			ingredients: ["flour", "sugar", "butter", "chicken_egg", "jam"],
-			icon: "jammie_dodger.png"
-			},
+			icon: "jammie_dodger.png",
+		},
 
 		jam: {
 			index: 95,
@@ -1710,8 +1713,8 @@
 			special: [],
 			season: [],
 			ingredients: ["strawberry", "sugar"],
-			icon: "jam.png"
-			},
+			icon: "jam.png",
+		},
 
 		apple_strudel: {
 			index: 94,
@@ -1729,8 +1732,8 @@
 			special: ["vegetarian", "sweet"],
 			season: [],
 			ingredients: ["pastry", "apple", "sugar", "honey", "butter"],
-			icon: "apple_strudel.png"
-			},
+			icon: "apple_strudel.png",
+		},
 
 		soufflé: {
 			index: 95,
@@ -1748,8 +1751,8 @@
 			special: ["vegetarian", "sweet"],
 			season: [],
 			ingredients: ["chicken_egg", "bird_egg", "cream", "sugar", "butter", "flour", "lemon"],
-			icon: "soufflé.png"
-			},
+			icon: "soufflé.png",
+		},
 
 		tart: {
 			index: 96,
@@ -1767,8 +1770,8 @@
 			special: ["vegetarian", "sweet"],
 			season: [],
 			ingredients: ["pastry", "chocolate"],
-			icon: "tart.png"
-			},
+			icon: "tart.png",
+		},
 
 		lemon_meringue_pie: {
 			index: 97,
@@ -1785,8 +1788,8 @@
 			special: ["vegetarian", "sweet"],
 			season: [],
 			ingredients: ["pastry", "lemon", "sugar", "butter", "chicken_egg"],
-			icon: "lemon_meringue_pie.png"
-			},
+			icon: "lemon_meringue_pie.png",
+		},
 
 		sponge_cake: {
 			index: 98,
@@ -1804,8 +1807,8 @@
 			special: ["vegetarian", "sweet"],
 			season: [],
 			ingredients: ["flour", "butter", "sugar", "cream", "chicken_egg", "jam"],
-			icon: "sponge_cake.png"
-			},
+			icon: "sponge_cake.png",
+		},
 
 		swiss_roll: {
 			index: 99,
@@ -1823,8 +1826,8 @@
 			special: ["vegetarian", "sweet"],
 			season: [],
 			ingredients: ["flour", "butter", "cream", "chicken_egg", "jam", "orange", "sugar"],
-			icon: "swiss_roll.png"
-			},
+			icon: "swiss_roll.png",
+		},
 
 		scone: {
 			index: 100,
@@ -1842,8 +1845,8 @@
 			special: ["vegetarian", "sweet"],
 			season: [],
 			ingredients: ["flour", "butter", "sugar", "salt", "bottle_of_milk"],
-			icon: "scone.png"
-			},
+			icon: "scone.png",
+		},
 
 		brownie: {
 			index: 101,
@@ -1861,8 +1864,8 @@
 			special: ["vegetarian", "sweet"],
 			season: [],
 			ingredients: ["butter", "flour", "chocolate", "chicken_egg", "salt"],
-			icon: "brownie.png"
-			},
+			icon: "brownie.png",
+		},
 
 		carrot_cake: {
 			index: 102,
@@ -1880,8 +1883,8 @@
 			special: ["vegetarian", "sweet"],
 			season: [],
 			ingredients: ["wild_carrot", "sugar", "chicken_egg", "vegetable_oil", "flour", "lemon", "cream", "butter"],
-			icon: "carrot_cake.png"
-			},
+			icon: "carrot_cake.png",
+		},
 
 		crème_brulee: {
 			index: 103,
@@ -1898,8 +1901,8 @@
 			special: ["vegetarian", "sweet"],
 			season: [],
 			ingredients: ["bottle_of_milk", "cream", "sugar", "chicken_egg"],
-			icon: "crème_brulee.png"
-			},
+			icon: "crème_brulee.png",
+		},
 
 		date: {
 			index: 104,
@@ -1914,10 +1917,10 @@
 			days: 10,
 			multiplier: 6,
 			special: [],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "date.png"
-			},
+			icon: "date.png",
+		},
 
 		sticky_toffee_pudding: {
 			index: 105,
@@ -1934,8 +1937,8 @@
 			special: ["vegetarian", "sweet"],
 			season: [],
 			ingredients: ["date", "flour", "chicken_egg", "butter", "sugar", "bottle_of_milk", "cream"],
-			icon: "sticky_toffee_pudding.png"
-			},
+			icon: "sticky_toffee_pudding.png",
+		},
 
 		chicken_vindaloo: {
 			index: 106,
@@ -1952,8 +1955,8 @@
 			special: ["spicy"],
 			season: [],
 			ingredients: ["chicken", "vegetable_oil", "chilli_pepper", "onion", "tomato", "lemon", "garlic_bulb", "naan_bread", "rice"],
-			icon: "chicken_vindaloo.png"
-			},
+			icon: "chicken_vindaloo.png",
+		},
 
 		flapjack: {
 			index: 107,
@@ -1972,8 +1975,8 @@
 			special: ["vegetarian", "sweet"],
 			season: [],
 			ingredients: ["butter", "sugar", "oats", "lemon"],
-			icon: "flapjack.png"
-			},
+			icon: "flapjack.png",
+		},
 
 		cherry: {
 			index: 108,
@@ -1990,8 +1993,8 @@
 			special: [],
 			season: ["spring", "autumn", "winter"],
 			ingredients: [],
-			icon: "cherry.png"
-			},
+			icon: "cherry.png",
+		},
 
 		belgian_bun: {
 			index: 109,
@@ -2009,8 +2012,8 @@
 			special: ["sweet"],
 			season: [],
 			ingredients: ["flour", "sugar", "bottle_of_milk", "chicken_egg", "lemon", "cherry"],
-			icon: "belgian_bun.png"
-			},
+			icon: "belgian_bun.png",
+		},
 
 		lime: {
 			index: 110,
@@ -2025,10 +2028,10 @@
 			days: 12,
 			multiplier: 1,
 			special: [],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "lime.png"
-			},
+			icon: "lime.png",
+		},
 
 		linguine: {
 			index: 111,
@@ -2045,8 +2048,8 @@
 			special: ["vegetarian"],
 			season: [],
 			ingredients: ["vegetable_oil", "lemon", "pasta", "cream"],
-			icon: "linguine.png"
-			},
+			icon: "linguine.png",
+		},
 
 		steak: {
 			index: 112,
@@ -2063,8 +2066,8 @@
 			special: ["carnivore"],
 			season: [],
 			ingredients: ["vegetable_oil", "beef"],
-			icon: "steak.png"
-			},
+			icon: "steak.png",
+		},
 
 		full_english_breakfast: {
 			index: 113,
@@ -2082,8 +2085,8 @@
 			special: [],
 			season: [],
 			ingredients: ["vegetable_oil", "bacon", "sausage", "mushroom", "tomato", "chicken_egg"],
-			icon: "full_english_breakfast.png"
-			},
+			icon: "full_english_breakfast.png",
+		},
 
 		apple_crumble: {
 			index: 114,
@@ -2100,8 +2103,8 @@
 			special: ["sweet"],
 			season: [],
 			ingredients: ["apple", "sugar", "flour", "butter", "oats", "cream"],
-			icon: "apple_crumble.png"
-			},
+			icon: "apple_crumble.png",
+		},
 
 		bakewell_tart: {
 			index: 115,
@@ -2119,8 +2122,8 @@
 			special: ["sweet"],
 			season: [],
 			ingredients: ["shortbread", "cream", "cherry"],
-			icon: "bakewell_tart.png"
-			},
+			icon: "bakewell_tart.png",
+		},
 
 		cod: {
 			index: 116,
@@ -2137,8 +2140,8 @@
 			special: [],
 			season: ["winter"],
 			ingredients: [],
-			icon: "cod.png"
-			},
+			icon: "cod.png",
+		},
 
 		fish_and_chips: {
 			index: 117,
@@ -2155,8 +2158,8 @@
 			special: ["seafood"],
 			season: [],
 			ingredients: ["cod", "chips", "vegetable_oil", "flour"],
-			icon: "fish_and_chips.png"
-			},
+			icon: "fish_and_chips.png",
+		},
 
 		clam: {
 			index: 118,
@@ -2173,8 +2176,8 @@
 			special: [],
 			season: ["spring", "autumn", "winter"],
 			ingredients: [],
-			icon: "clam.png"
-			},
+			icon: "clam.png",
+		},
 
 		clam_chowder: {
 			index: 119,
@@ -2191,8 +2194,8 @@
 			special: ["seafood"],
 			season: [],
 			ingredients: ["clam", "butter", "bacon", "onion", "flour", "bottle_of_milk", "cream", "potato"],
-			icon: "clam_chowder.png"
-			},
+			icon: "clam_chowder.png",
+		},
 
 		cheese_and_crackers: {
 			index: 120,
@@ -2209,8 +2212,8 @@
 			special: ["vegetarian"],
 			season: [],
 			ingredients: ["flour", "salt", "sugar", "vegetable_oil", "cheese"],
-			icon: "cheese_and_crackers.png"
-			},
+			icon: "cheese_and_crackers.png",
+		},
 
 		bangers_and_mash: {
 			index: 121,
@@ -2227,8 +2230,8 @@
 			special: [],
 			season: [],
 			ingredients: ["vegetable_oil", "sausage", "butter", "bottle_of_milk", "potato"],
-			icon: "bangers_and_mash.png"
-			},
+			icon: "bangers_and_mash.png",
+		},
 
 		yorkshire_pudding: {
 			index: 122,
@@ -2245,8 +2248,8 @@
 			special: ["vegetarian"],
 			season: [],
 			ingredients: ["flour", "chicken_egg", "bottle_of_milk", "vegetable_oil"],
-			icon: "yorkshire_pudding.png"
-			},
+			icon: "yorkshire_pudding.png",
+		},
 
 		stuffing: {
 			index: 123,
@@ -2263,8 +2266,8 @@
 			special: ["vegetarian"],
 			season: [],
 			ingredients: ["butter", "vegetable_oil", "onion", "garlic_bulb", "bread", "chicken_egg"],
-			icon: "stuffing.png"
-			},
+			icon: "stuffing.png",
+		},
 
 		roast_dinner: {
 			index: 124,
@@ -2280,9 +2283,22 @@
 			multiplier: 1,
 			special: [],
 			season: [],
-			ingredients: ["yorkshire_pudding", "stuffing", "chicken", "beef", "pork", "potato", "wild_carrot", "cabbage", "onion", "turnip", "vegetable_oil", "salt"],
-			icon: "roast_dinner.png"
-			},
+			ingredients: [
+				"yorkshire_pudding",
+				"stuffing",
+				"chicken",
+				"beef",
+				"pork",
+				"potato",
+				"wild_carrot",
+				"cabbage",
+				"onion",
+				"turnip",
+				"vegetable_oil",
+				"salt",
+			],
+			icon: "roast_dinner.png",
+		},
 
 		crumpet: {
 			index: 125,
@@ -2300,8 +2316,8 @@
 			special: ["vegetarian"],
 			season: [],
 			ingredients: ["flour", "butter", "salt", "sugar"],
-			icon: "crumpet.png"
-			},
+			icon: "crumpet.png",
+		},
 
 		orange_juice: {
 			index: 126,
@@ -2318,8 +2334,8 @@
 			special: ["vegan", "drink"],
 			season: [],
 			ingredients: ["orange", "sugar"],
-			icon: "orange_juice.png"
-			},
+			icon: "orange_juice.png",
+		},
 
 		lemonade: {
 			index: 127,
@@ -2336,8 +2352,8 @@
 			special: ["vegan", "drink"],
 			season: [],
 			ingredients: ["lemon", "sugar"],
-			icon: "lemonade.png"
-			},
+			icon: "lemonade.png",
+		},
 
 		banana_bread: {
 			index: 128,
@@ -2354,8 +2370,8 @@
 			special: ["vegetarian", "sweet"],
 			season: [],
 			ingredients: ["butter", "sugar", "chicken_egg", "flour", "banana"],
-			icon: "banana_bread.png"
-			},
+			icon: "banana_bread.png",
+		},
 
 		red_wine: {
 			index: 129,
@@ -2372,8 +2388,8 @@
 			special: ["vegetarian", "drink", "alcohol"],
 			season: [],
 			ingredients: [],
-			icon: "red_wine.png"
-			},
+			icon: "red_wine.png",
+		},
 
 		white_wine: {
 			index: 130,
@@ -2390,8 +2406,8 @@
 			special: ["vegetarian", "drink", "alcohol"],
 			season: [],
 			ingredients: [],
-			icon: "white_wine.png"
-			},
+			icon: "white_wine.png",
+		},
 
 		poached_pear: {
 			index: 131,
@@ -2409,8 +2425,8 @@
 			special: ["vegan", "alcohol", "sweet"],
 			season: [],
 			ingredients: ["pear", "sugar", "red_wine"],
-			icon: "poached_pear.png"
-			},
+			icon: "poached_pear.png",
+		},
 
 		peach_panzanella: {
 			index: 132,
@@ -2427,8 +2443,8 @@
 			special: ["vegetarian"],
 			season: [],
 			ingredients: ["peach", "bread", "cheese", "vegetable_oil", "lemon"],
-			icon: "peach_panzanella.png"
-			},
+			icon: "peach_panzanella.png",
+		},
 
 		plum_pudding: {
 			index: 133,
@@ -2446,8 +2462,8 @@
 			special: ["vegetarian", "sweet"],
 			season: [],
 			ingredients: ["plum", "flour", "bread", "sugar", "orange", "lemon", "cherry", "wild_carrot"],
-			icon: "plum_pudding.png"
-			},
+			icon: "plum_pudding.png",
+		},
 
 		spinach: {
 			index: 134,
@@ -2463,10 +2479,10 @@
 			days: 10,
 			multiplier: 10,
 			special: [],
-			season: ["spring","autumn"],
+			season: ["spring", "autumn"],
 			ingredients: [],
-			icon: "spinach.png"
-			},
+			icon: "spinach.png",
+		},
 
 		salad: {
 			index: 135,
@@ -2483,8 +2499,8 @@
 			special: ["vegan"],
 			season: [],
 			ingredients: ["spinach", "tomato", "onion", "garlic_bulb", "chilli_pepper", "pepper", "lime"],
-			icon: "salad.png"
-			},
+			icon: "salad.png",
+		},
 
 		arancini: {
 			index: 136,
@@ -2501,8 +2517,8 @@
 			special: ["vegetarian"],
 			season: [],
 			ingredients: ["vegetable_oil", "butter", "onion", "rice", "garlic_bulb", "white_wine", "cheese", "lemon", "flour", "chicken_egg", "truffle"],
-			icon: "arancini.png"
-			},
+			icon: "arancini.png",
+		},
 
 		wolfbrew: {
 			index: 137,
@@ -2519,8 +2535,8 @@
 			special: ["vegetarian", "drink", "alcohol", "tainted"],
 			season: [],
 			ingredients: ["wolfshroom", "red_wine", "strange_flower"],
-			icon: "wolfbrew.png"
-			},
+			icon: "wolfbrew.png",
+		},
 
 		ghostbrew: {
 			index: 138,
@@ -2537,8 +2553,8 @@
 			special: ["vegetarian", "drink", "alcohol", "tainted"],
 			season: [],
 			ingredients: ["ghostshroom", "white_wine", "strange_flower"],
-			icon: "ghostbrew.png"
-			},
+			icon: "ghostbrew.png",
+		},
 
 		beef: {
 			index: 139,
@@ -2555,8 +2571,8 @@
 			special: [],
 			season: [],
 			ingredients: [],
-			icon: "beef.png"
-			},
+			icon: "beef.png",
+		},
 
 		pork: {
 			index: 140,
@@ -2573,8 +2589,8 @@
 			special: [],
 			season: [],
 			ingredients: [],
-			icon: "pork.png"
-			},
+			icon: "pork.png",
+		},
 
 		cauliflower: {
 			index: 141,
@@ -2589,10 +2605,10 @@
 			days: 30,
 			multiplier: 1,
 			special: [],
-			season: ["spring","summer","autumn","winter"],
+			season: ["spring", "summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "cauliflower.png"
-			},
+			icon: "cauliflower.png",
+		},
 
 		oats: {
 			index: 142,
@@ -2609,8 +2625,8 @@
 			special: [],
 			season: [],
 			ingredients: [],
-			icon: "oats.png"
-			},
+			icon: "oats.png",
+		},
 
 		prawn: {
 			index: 143,
@@ -2627,8 +2643,8 @@
 			special: [],
 			season: ["summer", "autumn", "winter"],
 			ingredients: [],
-			icon: "prawn.png"
-			},
+			icon: "prawn.png",
+		},
 
 		omelette: {
 			index: 144,
@@ -2646,8 +2662,8 @@
 			special: ["vegetarian"],
 			season: [],
 			ingredients: ["chicken_egg", "vegetable_oil", "butter"],
-			icon: "omelette.png"
-			},
+			icon: "omelette.png",
+		},
 
 		porridge: {
 			index: 145,
@@ -2664,8 +2680,8 @@
 			special: ["vegetarian"],
 			season: [],
 			ingredients: ["oats", "bottle_of_milk"],
-			icon: "porridge.png"
-			},
+			icon: "porridge.png",
+		},
 
 		turnip_soup: {
 			index: 146,
@@ -2682,42 +2698,43 @@
 			special: ["vegan"],
 			season: [],
 			ingredients: ["turnip", "potato", "onion", "vegetable_oil", "salt"],
-			icon: "turnip_soup.png"
-			}
-	}>>
-
-	<!-- Jimmy: Sorts all plants alphabetically after their initialisation into _plants.
-				This is so Object.values/keys will read them based on their alphabetical key order.
-				Yet allows extras to be added easily based on .index being available and ordered above.
-	-->
-	<<run
-		let sorted = Object.keys(_plants).sort();
-		setup.plants = {};
-		sorted.forEach(s => {
-			setup.plants[s] = _plants[s];
-		});
-		delete _plants;
-	>>
-
-	<<set setup.tending to {}>>
-
-	<<set setup.tending.plot_base to {
+			icon: "turnip_soup.png",
+		},
+	};
+
+	/*
+		Sorts all plants alphabetically after their initialisation into _plants.
+		This is so Object.values/keys will read them based on their alphabetical key order.
+		Yet allows extras to be added easily based on .index being available and ordered above.
+	*/
+	const sorted = Object.keys(plants).sort();
+	setup.plants = {};
+	sorted.forEach(s => {
+		setup.plants[s] = plants[s];
+	});
+
+	setup.tending = {};
+
+	setup.tending.plot_base = {
 		plant: "none",
 		stage: 0,
 		days: 0,
 		water: 0,
 		till: 0,
-	}>>
-
-	<<set setup.tending.plot_sizes to [
-		"small",
-		"medium",
-		"large",
-	]>>
-
-	<<set setup.tending.wateringTimes to {
-		"small": 5,
-		"medium": 15,
-		"large": 60,
-	}>>
-<</widget>>
+	};
+
+	setup.tending.plot_sizes = ["small", "medium", "large"];
+
+	setup.tending.wateringTimes = {
+		small: 5,
+		medium: 15,
+		large: 60,
+	};
+}
+window.initPlants = initPlants;
+
+Macro.add("init_plant_objects", {
+	handler() {
+		initPlants();
+	},
+});
diff --git a/types/plants.d.ts b/types/plants.d.ts
new file mode 100644
index 0000000000..39f0e48bfd
--- /dev/null
+++ b/types/plants.d.ts
@@ -0,0 +1,51 @@
+declare module "twine-sugarcube" {
+	export interface SugarCubeStoryVariables {}
+
+	export interface SugarCubeSetupObject {
+		plants: Dict<PlantSetup>;
+		tending: {
+			plot_base: Plot;
+			plot_sizes: string[];
+			wateringTimes: {
+				[key: PlotSize]: number;
+			};
+		};
+	}
+}
+
+declare global {
+	export type Season = "spring" | "summer" | "autumn" | "winter";
+
+	export type PlotSize = "small" | "medium" | "large";
+
+	export interface PlantSetup {
+		index: number;
+		name: string;
+		plural: string;
+		singular?: string; // *
+		handheld: string;
+		handheld_gift?: string; // *
+		recipe_name?: string; // *
+		seed_name?: string; // *
+		plant_cost: number;
+		difficulty: number;
+		bed: string;
+		type: string;
+		days: number;
+		multiplier: number;
+		special: any[];
+		season: Season[];
+		ingredients: any[];
+		icon: string;
+	}
+
+	export interface Plot {
+		plant: string;
+		stage: number;
+		days: number;
+		water: number;
+		till: number;
+	}
+}
+
+export {};
-- 
GitLab


From e75bd48039c9ed16dd2e42e6364a69d1b43d8e9d Mon Sep 17 00:00:00 2001
From: Jimmys <jimmysilverstein@proton.me>
Date: Fri, 3 Jan 2025 18:07:43 +0000
Subject: [PATCH 09/12] Add supermarket backcomp to rice

---
 game/04-Variables/variables-versionUpdate.twee | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/game/04-Variables/variables-versionUpdate.twee b/game/04-Variables/variables-versionUpdate.twee
index 843cc67b44..aad3183964 100644
--- a/game/04-Variables/variables-versionUpdate.twee
+++ b/game/04-Variables/variables-versionUpdate.twee
@@ -5742,7 +5742,7 @@
 		<<set $makeup.blusher = 0>>
 	<</if>>
 	<!-- 0.5.3.0 makes sure $plants is defined on all saves, and stocks supermarket-->
-	<<if $plants["salt"] is undefined>>
+	<<if $plants.salt is undefined>>
 		<<set _food_keys to Object.keys(setup.plants)>>
 		<<for _i to 0; _i lt _food_keys.length; _i++>>
 			<<set $_type to _food_keys[_i]>>
@@ -5792,4 +5792,7 @@
 
 	<!-- $daily.prison not set in at least one save game -->
 	<<set $daily.prison ||= {}>>
+
+	<!-- Rice does not have a supermarket quantity -->
+	<<set $plants.rice.supermarket ||= 0>>
 <</widget>>
-- 
GitLab


From 56db96aa6fd5fb5dfb472343215297df6b339b3a Mon Sep 17 00:00:00 2001
From: Jimmys <jimmysilverstein@proton.me>
Date: Fri, 3 Jan 2025 18:26:35 +0000
Subject: [PATCH 10/12] Adjust tentacle semen layer and images

---
 .../05-renderer/20-canvasmodel-combat-pc.js       |   2 +-
 img/sex/doggy/tentacles/vagina-sperm.png          | Bin 0 -> 199 bytes
 img/sex/missionary/tentacles/vagina-sperm.png     | Bin 0 -> 199 bytes
 3 files changed, 1 insertion(+), 1 deletion(-)
 create mode 100644 img/sex/doggy/tentacles/vagina-sperm.png
 create mode 100644 img/sex/missionary/tentacles/vagina-sperm.png

diff --git a/game/03-JavaScript/05-renderer/20-canvasmodel-combat-pc.js b/game/03-JavaScript/05-renderer/20-canvasmodel-combat-pc.js
index 8351298477..7295bf8edf 100644
--- a/game/03-JavaScript/05-renderer/20-canvasmodel-combat-pc.js
+++ b/game/03-JavaScript/05-renderer/20-canvasmodel-combat-pc.js
@@ -618,7 +618,7 @@ const combatMainPc = {
 		},
 		tentacleVaginaCum: {
 			srcfn(options) {
-				return `${options.src}body/vaginal/vaginalcum.png`;
+				return `${options.src}tentacles/vagina-sperm.png`;
 			},
 			showfn(options) {
 				return options.tentacles.vagina.show && V.vaginastate === "tentacledeep";
diff --git a/img/sex/doggy/tentacles/vagina-sperm.png b/img/sex/doggy/tentacles/vagina-sperm.png
new file mode 100644
index 0000000000000000000000000000000000000000..3adaf77894e770ddc93f37aba3e8873f9d507f7f
GIT binary patch
literal 199
zcmeAS@N?(olHy`uVBq!ia0y~yU;#22fe;8-<19OY6jMo%UoZnh+2pepKwg8Vi(^Q|
zt+(e6@-`T7I9ybV?fC02dthPAffEN!7VIlmJs{5v(u@Lj6y526?(;3&sQ(+|$;LPT
zBThE{W4t|8d<y%8IF1$j;^iFv*e$4C(D13@TjOo!P3-si6@>Ypzvr)z`tg_H(RZ+G
czy@A8$!Q+UyZWn>*F_ND)78&qol`;+0KqRp0{{R3

literal 0
HcmV?d00001

diff --git a/img/sex/missionary/tentacles/vagina-sperm.png b/img/sex/missionary/tentacles/vagina-sperm.png
new file mode 100644
index 0000000000000000000000000000000000000000..3adaf77894e770ddc93f37aba3e8873f9d507f7f
GIT binary patch
literal 199
zcmeAS@N?(olHy`uVBq!ia0y~yU;#22fe;8-<19OY6jMo%UoZnh+2pepKwg8Vi(^Q|
zt+(e6@-`T7I9ybV?fC02dthPAffEN!7VIlmJs{5v(u@Lj6y526?(;3&sQ(+|$;LPT
zBThE{W4t|8d<y%8IF1$j;^iFv*e$4C(D13@TjOo!P3-si6@>Ypzvr)z`tg_H(RZ+G
czy@A8$!Q+UyZWn>*F_ND)78&qol`;+0KqRp0{{R3

literal 0
HcmV?d00001

-- 
GitLab


From 01f6d64094abb2649b904460d04b5b291609a198 Mon Sep 17 00:00:00 2001
From: Jimmys <jimmysilverstein@proton.me>
Date: Fri, 3 Jan 2025 18:44:47 +0000
Subject: [PATCH 11/12] Fix rogue 0 in pillory new NPC logic

---
 game/overworld-town/loc-street/cliff.twee | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/game/overworld-town/loc-street/cliff.twee b/game/overworld-town/loc-street/cliff.twee
index 1fea1d5ed8..17381dc6f0 100644
--- a/game/overworld-town/loc-street/cliff.twee
+++ b/game/overworld-town/loc-street/cliff.twee
@@ -87,7 +87,7 @@ There's a path leading down to the beach.
 		<<else>> /* Sentence ongoing to tomorrow. */
 			<<npc_pillory>>
 		<</if>>
-	<<elseif $rng lte 100>> /* Pillory empty gives 10% chance of new person */
+	<<elseif $rng lte 10>> /* Pillory empty gives 10% chance of new person */
 		<<new_npc_pillory>>
 	<</if>>
 <</if>>
-- 
GitLab


From 1b25683de8db598cb7926cd42d1b95638099c8ad Mon Sep 17 00:00:00 2001
From: Jimmys <jimmysilverstein@proton.me>
Date: Fri, 3 Jan 2025 18:50:35 +0000
Subject: [PATCH 12/12] Add daily lockout for pillory usage if someone was
 freed

---
 game/overworld-town/loc-street/cliff.twee | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/game/overworld-town/loc-street/cliff.twee b/game/overworld-town/loc-street/cliff.twee
index 17381dc6f0..93521bc76d 100644
--- a/game/overworld-town/loc-street/cliff.twee
+++ b/game/overworld-town/loc-street/cliff.twee
@@ -87,7 +87,7 @@ There's a path leading down to the beach.
 		<<else>> /* Sentence ongoing to tomorrow. */
 			<<npc_pillory>>
 		<</if>>
-	<<elseif $rng lte 10>> /* Pillory empty gives 10% chance of new person */
+	<<elseif $rng lte 10 and !$daily.freedPillory>> /* Pillory empty gives 10% chance of new person */
 		<<new_npc_pillory>>
 	<</if>>
 <</if>>
@@ -735,6 +735,7 @@ Once out of sight of the crowd, you disappear together into an alley.
 <<else>>
 	"Thank you," <<the_pillory_person>> says, earnestly. "That was so horrible. You really helped me out."
 <</if>>
+<<set $daily.freedPillory to true>>
 <<clear_pillory>>
 <<endevent>><<famegood 15>>
 <br><br>
-- 
GitLab