User prompt
no like I’m a tester can you add a button only for me
User prompt
make it so if you’re testing, you can go back to the game at any time
User prompt
no make it so there’s no stop menu if you got jump scared before and there’s still the tomato staring into your soul
User prompt
make it so in the normal game, there’s a button in the stock menu you make it so there’s a start menu first OK
User prompt
make sure if you wait some seconds you get text that says you don’t own. This game in the text starts multiplying so much until it flooded your screen every single couple seconds.
User prompt
make it so it’s not permanent unless you get jump scared
User prompt
make it so there’s just no game over screen and you just get the eyes forever not even if you do that five times anymore
User prompt
make it so if you load five times with the eyes, then it brings you back to the original game
User prompt
no, after the jumpscare
User prompt
Next time you load up the game, it’s just not even any texts from before. It’s just a black box with the tomato that the creepy tomato staring into your soul with black eyes.
Code edit (1 edits merged)
Please save this source code
User prompt
Feed the Tomato: The Hungry Return
Initial prompt
add a game about a tomato that wants to get fed that doesn’t have any hands so he says he needs to get fed by his self so she says that he wants to eat some foods that’s on a table and if you give him the right foods he would say he wants to come back like if you give him the right foods a lot. He will say he wants to come back tomorrow and then once you press the stop button tomorrow then he’ll be back but if you get all of them wrong 10 times then his med level will go up 10 and he will become creepy with teeth sharp thief and he will say that he’s gonna give you one more chance of a creepy voice and then you have to feed him creepy food like creepy food that like creepy people eat or just yeah I don’t know then once you’re done feeding the creepy food she will jump scare you and next time you try and load up the game after he jump scared you then they will just be a tomato staring into your soul
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1", { creepy: false }); /**** * Classes ****/ // Food class var Food = Container.expand(function () { var self = Container.call(this); self.foodId = null; self.isGood = true; self.isCreepy = false; self.asset = null; self.eaten = false; self.init = function (foodId, isGood, isCreepy) { self.foodId = foodId; self.isGood = isGood; self.isCreepy = isCreepy; self.asset = self.attachAsset(foodId, { anchorX: 0.5, anchorY: 0.5 }); }; // Animate food being eaten self.eat = function (_onFinish) { if (self.eaten) return; self.eaten = true; tween(self, { scaleX: 0, scaleY: 0, alpha: 0 }, { duration: 350, easing: tween.easeIn, onFinish: function onFinish() { if (_onFinish) _onFinish(); self.destroy(); } }); }; // Touch event self.down = function (x, y, obj) { if (game.state !== 'playing' && game.state !== 'creepy') return; game.handleFoodSelect(self); }; return self; }); // Tomato class var Tomato = Container.expand(function () { var self = Container.call(this); self.face = null; self.creepy = false; self.jumpscare = false; self.init = function () { self.face = self.attachAsset('tomatoNormal', { anchorX: 0.5, anchorY: 1 }); }; self.setNormal = function () { self.creepy = false; self.jumpscare = false; self.face.assetId = 'tomatoNormal'; self.face.setAsset('tomatoNormal'); }; self.setCreepy = function () { self.creepy = true; self.jumpscare = false; self.face.assetId = 'tomatoCreepy'; self.face.setAsset('tomatoCreepy'); }; self.setJumpscare = function () { self.jumpscare = true; self.face.assetId = 'tomatoJumpscare'; self.face.setAsset('tomatoJumpscare'); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xf7e7c1 }); /**** * Game Code ****/ // Music // Sounds // Creepy foods // Bad foods // Good foods // Spoon // Fork // Plate // Table // Tomato (jumpscare) // Tomato (creepy) // Tomato (normal) // --- GLOBALS --- var tomato = null; var table = null; var plate = null; var utensils = []; var foodObjs = []; var foodSlots = []; var messageTxt = null; var scoreTxt = null; var stateTxt = null; var jumpscareTimeout = null; var mistakeCount = 0; var correctCount = 0; var maxMistakes = 10; var maxCorrect = 5; var isJumpscare = false; var isHaunted = false; var lastFoodIds = []; var creepyFoodsFed = 0; var creepyFoodsNeeded = 3; var foodY = 2000; var foodSlotY = 2000; var foodSlotXStart = 524; var foodSlotSpacing = 250; var foodSlotCount = 5; var foodTypes = [{ id: 'foodApple', isGood: true, isCreepy: false }, { id: 'foodCheese', isGood: true, isCreepy: false }, { id: 'foodBread', isGood: true, isCreepy: false }, { id: 'foodEgg', isGood: true, isCreepy: false }, { id: 'foodCarrot', isGood: true, isCreepy: false }, { id: 'foodSoap', isGood: false, isCreepy: false }, { id: 'foodRock', isGood: false, isCreepy: false }, { id: 'foodBattery', isGood: false, isCreepy: false }, { id: 'foodShoe', isGood: false, isCreepy: false }, { id: 'foodBug', isGood: false, isCreepy: false }]; var creepyFoodTypes = [{ id: 'foodEyeball', isGood: false, isCreepy: true }, { id: 'foodWorm', isGood: false, isCreepy: true }, { id: 'foodFingertip', isGood: false, isCreepy: true }, { id: 'foodTooth', isGood: false, isCreepy: true }, { id: 'foodHeart', isGood: false, isCreepy: true }]; // --- HAUNTED STATE --- // Track number of haunted loads and reset after 5 if (storage.creepy) { // Use storage to persist load count if (typeof storage.hauntLoads === "undefined") { storage.hauntLoads = 1; } else { storage.hauntLoads += 1; } if (storage.hauntLoads >= 5) { // Reset haunted state and load count, return to normal game storage.creepy = false; storage.hauntLoads = 0; isHaunted = false; } else { isHaunted = true; } } else { // Reset hauntLoads if not haunted storage.hauntLoads = 0; } // --- SETUP SCENE --- function setupScene() { // Table table = LK.getAsset('table', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 2200 }); game.addChild(table); // Plate plate = LK.getAsset('plate', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 2100 }); game.addChild(plate); // Utensils var fork = LK.getAsset('fork', { anchorX: 0.5, anchorY: 0.5, x: 900, y: 2180 }); var spoon = LK.getAsset('spoon', { anchorX: 0.5, anchorY: 0.5, x: 1150, y: 2180 }); utensils = [fork, spoon]; game.addChild(fork); game.addChild(spoon); // Tomato tomato = new Tomato(); tomato.init(); tomato.x = 1024; tomato.y = 900; game.addChild(tomato); // Message text messageTxt = new Text2('', { size: 90, fill: 0x222222 }); messageTxt.anchor.set(0.5, 0); LK.gui.top.addChild(messageTxt); // Score text (hidden, but used for state) scoreTxt = new Text2('0', { size: 80, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.topRight.addChild(scoreTxt); // State text (for jumpscare/haunt) stateTxt = new Text2('', { size: 120, fill: 0xFF0000 }); stateTxt.anchor.set(0.5, 0.5); LK.gui.center.addChild(stateTxt); stateTxt.visible = false; } // --- GAME STATE --- game.state = 'init'; // 'init', 'playing', 'creepy', 'jumpscare', 'haunt', 'end' // --- START GAME --- function startGame() { // Reset mistakeCount = 0; correctCount = 0; isJumpscare = false; creepyFoodsFed = 0; lastFoodIds = []; scoreTxt.setText('0'); stateTxt.visible = false; tomato.setNormal(); game.state = isHaunted ? 'haunt' : 'playing'; if (isHaunted) { showHaunt(); } else { showMessage("Help me eat! Feed me the right foods."); spawnFoods(); LK.playMusic('bgm', { loop: true }); } } // --- SHOW MESSAGE --- function showMessage(msg) { messageTxt.setText(msg); } // --- SPAWN FOODS --- function spawnFoods() { clearFoods(); foodObjs = []; foodSlots = []; var used = {}; var pool = game.state === 'creepy' ? creepyFoodTypes : foodTypes; // Pick 5 foods, at least 1 correct (if not creepy) var foods = []; if (game.state === 'playing') { // At least 1 good food var good = []; var bad = []; for (var i = 0; i < pool.length; ++i) { if (pool[i].isGood) good.push(pool[i]);else bad.push(pool[i]); } var goodFood = good[Math.floor(Math.random() * good.length)]; foods.push(goodFood); // Fill rest while (foods.length < foodSlotCount) { var arr = Math.random() < 0.5 ? bad : good; var f = arr[Math.floor(Math.random() * arr.length)]; // Avoid duplicates var dupe = false; for (var j = 0; j < foods.length; ++j) if (foods[j].id === f.id) dupe = true; if (!dupe) foods.push(f); } } else { // Creepy: all from creepyFoodTypes, random while (foods.length < foodSlotCount) { var f = pool[Math.floor(Math.random() * pool.length)]; var dupe = false; for (var j = 0; j < foods.length; ++j) if (foods[j].id === f.id) dupe = true; if (!dupe) foods.push(f); } } // Shuffle for (var i = foods.length - 1; i > 0; --i) { var k = Math.floor(Math.random() * (i + 1)); var tmp = foods[i]; foods[i] = foods[k]; foods[k] = tmp; } // Place foods for (var i = 0; i < foodSlotCount; ++i) { var slotX = foodSlotXStart + i * foodSlotSpacing; var food = new Food(); food.init(foods[i].id, foods[i].isGood, foods[i].isCreepy); food.x = slotX; food.y = foodSlotY; food.scaleX = 1; food.scaleY = 1; food.alpha = 1; foodObjs.push(food); foodSlots.push({ x: slotX, y: foodSlotY }); game.addChild(food); } } // --- CLEAR FOODS --- function clearFoods() { for (var i = 0; i < foodObjs.length; ++i) { if (foodObjs[i] && foodObjs[i].destroy) foodObjs[i].destroy(); } foodObjs = []; foodSlots = []; } // --- HANDLE FOOD SELECT --- game.handleFoodSelect = function (foodObj) { if (game.state !== 'playing' && game.state !== 'creepy') return; if (foodObj.eaten) return; // Animate food to tomato mouth var mouthX = tomato.x; var mouthY = tomato.y - 200; tween(foodObj, { x: mouthX, y: mouthY, scaleX: 0.3, scaleY: 0.3, alpha: 0.7 }, { duration: 350, easing: tween.easeIn, onFinish: function onFinish() { foodObj.eat(); if (game.state === 'playing') { if (foodObj.isGood) { correctCount++; LK.getSound('eat').play(); LK.effects.flashObject(tomato, 0x9bff4a, 400); showMessage("Yum! Thank you."); scoreTxt.setText(correctCount); if (correctCount >= maxCorrect) { showMessage("I'm full! See you tomorrow!"); LK.setTimeout(function () { LK.showYouWin(); }, 1200); return; } } else { mistakeCount++; LK.getSound('wrong').play(); LK.effects.flashObject(tomato, 0xff0000, 400); showMessage("Yuck! That's not food."); if (mistakeCount >= maxMistakes) { // Go creepy LK.getSound('creepy').play(); goCreepy(); return; } } // Next round LK.setTimeout(function () { showMessage("Feed me the right foods."); spawnFoods(); }, 700); } else if (game.state === 'creepy') { // Only creepy foods accepted if (foodObj.isCreepy) { creepyFoodsFed++; LK.getSound('eat').play(); LK.effects.flashObject(tomato, 0xff0000, 400); showMessage("More. Feed me more..."); if (creepyFoodsFed >= creepyFoodsNeeded) { // Jumpscare LK.setTimeout(function () { jumpscare(); }, 700); return; } } else { LK.getSound('wrong').play(); LK.effects.flashObject(tomato, 0x000000, 400); showMessage("NO! Give me what I want."); } LK.setTimeout(function () { spawnFoods(); }, 700); } } }); }; // --- GO CREEPY --- function goCreepy() { game.state = 'creepy'; tomato.setCreepy(); showMessage("You made me angry. Feed me what I want..."); LK.effects.flashScreen(0x000000, 1200); LK.setTimeout(function () { spawnFoods(); }, 1200); } // --- JUMPSCARE --- function jumpscare() { game.state = 'jumpscare'; isJumpscare = true; clearFoods(); tomato.setJumpscare(); showMessage(""); stateTxt.setText("👁️"); stateTxt.visible = true; LK.getSound('jumpscare').play(); LK.effects.flashScreen(0xff0000, 1200); // Save haunted state storage.creepy = true; // After a moment, show game over jumpscareTimeout = LK.setTimeout(function () { LK.showGameOver(); }, 1500); } // --- SHOW HAUNTED STATE --- function showHaunt() { game.state = 'haunt'; clearFoods(); // Set background to black game.setBackgroundColor(0x000000); // Remove all GUI overlays messageTxt.setText(""); scoreTxt.setText(""); stateTxt.setText(""); stateTxt.visible = false; // Set tomato to creepy and move to center tomato.setCreepy(); tomato.x = 1024; tomato.y = 1366; // Make tomato's face black-eyed (simulate by overlaying two black ellipses for eyes) if (!tomato.leftEye) { tomato.leftEye = LK.getAsset('foodRock', { anchorX: 0.5, anchorY: 0.5, x: -70, y: -180, scaleX: 0.7, scaleY: 1.1 }); tomato.rightEye = LK.getAsset('foodRock', { anchorX: 0.5, anchorY: 0.5, x: 70, y: -180, scaleX: 0.7, scaleY: 1.1 }); tomato.addChild(tomato.leftEye); tomato.addChild(tomato.rightEye); } tomato.leftEye.visible = true; tomato.rightEye.visible = true; // Hide table, plate, utensils if (table) table.visible = false; if (plate) plate.visible = false; for (var i = 0; i < utensils.length; ++i) { if (utensils[i]) utensils[i].visible = false; } // Remove all GUI overlays and text, just the tomato staring messageTxt.visible = false; scoreTxt.visible = false; stateTxt.visible = false; } // --- GAME INIT --- setupScene(); startGame(); // --- GAME EVENTS --- game.update = function () { // No per-frame logic needed for this game }; game.down = function (x, y, obj) { // No drag, but allow food selection // (handled by Food.down) }; game.move = function (x, y, obj) { // No drag }; game.up = function (x, y, obj) { // No drag }; // --- RESET ON GAME OVER --- LK.on('gameover', function () { // Reset haunted state if not jumpscare if (!isJumpscare) { storage.creepy = false; } }); // --- WIN HANDLER --- LK.on('youwin', function () { storage.creepy = false; }); // --- MUSIC --- LK.playMusic('bgm', { loop: true });
===================================================================
--- original.js
+++ change.js
@@ -191,10 +191,27 @@
isGood: false,
isCreepy: true
}];
// --- HAUNTED STATE ---
+// Track number of haunted loads and reset after 5
if (storage.creepy) {
- isHaunted = true;
+ // Use storage to persist load count
+ if (typeof storage.hauntLoads === "undefined") {
+ storage.hauntLoads = 1;
+ } else {
+ storage.hauntLoads += 1;
+ }
+ if (storage.hauntLoads >= 5) {
+ // Reset haunted state and load count, return to normal game
+ storage.creepy = false;
+ storage.hauntLoads = 0;
+ isHaunted = false;
+ } else {
+ isHaunted = true;
+ }
+} else {
+ // Reset hauntLoads if not haunted
+ storage.hauntLoads = 0;
}
// --- SETUP SCENE ---
function setupScene() {
// Table
Modern App Store icon, high definition, square with rounded corners, for a game titled "Feed the Tomato: The Hungry Return" and with the description "Help a tomato eat by choosing the right foods. Too many mistakes turn it creepy, leading to a jumpscare and a haunting return.". No text on icon!
Apple. In-Game asset. 2d. High contrast. No shadows
bratery. In-Game asset. 2d. High contrast. No shadows
Bread. In-Game asset. 2d. High contrast. No shadows
cheese. In-Game asset. 2d. High contrast. No shadows
Bug. In-Game asset. 2d. High contrast. No shadows
Egg. In-Game asset. 2d. High contrast. No shadows
Eyeball. In-Game asset. 2d. High contrast. No shadows
Fingertip. In-Game asset. 2d. High contrast. No shadows
A real heart. In-Game asset. 2d. High contrast. No shadows
Rock. In-Game asset. 2d. High contrast. No shadows
Shoe. In-Game asset. 2d. High contrast. No shadows
Tooth. In-Game asset. 2d. High contrast. No shadows
Plate. In-Game asset. 2d. High contrast. No shadows
Soap. In-Game asset. 2d. High contrast. No shadows
Fork. In-Game asset. 2d. High contrast. No shadows
Carrot. In-Game asset. 2d. High contrast. No shadows
Worm. In-Game asset. 2d. High contrast. No shadows
tomato with eyes. In-Game asset. 2d. High contrast. No shadows
Error. In-Game asset. 2d. High contrast. No shadows