User prompt
Mango Juice Machine= +5 customers +5 Rich Customers +3 67Kid Customers, also make a interaction with the customers and the mango juice machine βͺπ‘ Consider importing and using the following plugins: @upit/tween.v1
User prompt
Lower its position in restaurant and put the mango juice machine button to the page 2 in item shop
User prompt
It costs 450K$ and its position in restaurant is very bottom right corner
User prompt
Add βMango Juice Machineβ to the Shop panel after player buys the upgrade 2
User prompt
george droyd= +5 customers +2 rich customers +2 67kid customers
User prompt
add a button named "George Droyd" to animatronics shop panel, it adds an animatronic named "George Droyd" to the stage. it costs 500K$, also make an image asset for the George Droyd animatronic
User prompt
delete all buttons in animatronics shop panel
User prompt
also remove everything when the animatronics shop panel is opened, when its closed make everything comeback again
User prompt
keep the position of animatronics shop panel stable after the zoom
User prompt
when player buys the stage in shop, it unlocks a new button called animatronics shop. it has animatronics in it, make a menu panel for that also.
User prompt
make some customers come to watch stage, and add 67kid as customer βͺπ‘ Consider importing and using the following plugins: @upit/tween.v1
User prompt
add 67kid image asset
User prompt
stage= +3 customers +1 Rich Customer +1 67kid customer
User prompt
upper with the chairs also dont collide it with the chairs
User prompt
upper with the chairs
User prompt
put it way over top with the chairs
User prompt
the stage's position is way over top in restaurant
User prompt
add stage button in shop, it adds a stage to the resaurant, it costs 200000$ and its position in restaurant is on top middle. the stage has 5 seats on front of it. the button is in page 2 in shop
User prompt
keep the position of admin button and shop button stable at my screen after the zoom keep the position of admin password panel, inf money button and shop panel stable at my screen after the zoom I cant click the buttons now fix it, also fix the cancel button on admin password panel βͺπ‘ Consider importing and using the following plugins: @upit/tween.v1
User prompt
I cant click the buttons now fix it, also fix the cancel button on admin password panel
User prompt
keep the position of admin password panel, inf money button and shop panel stable at my screen after the zoom βͺπ‘ Consider importing and using the following plugins: @upit/tween.v1
User prompt
keep the position of admin button and shop button stable at my screen after the zoom βͺπ‘ Consider importing and using the following plugins: @upit/tween.v1
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of null (reading 'setText')' in or related to this line: 'passwordInputText.setText(displayText);' Line Number: 1146
User prompt
still not fixed βͺπ‘ Consider importing and using the following plugins: @upit/tween.v1
User prompt
zoom out the screen with the admin button, shop button, shop panel and inf money button βͺπ‘ Consider importing and using the following plugins: @upit/tween.v1
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Chairs = Container.expand(function () {
var self = Container.call(this);
var chairsGraphics = self.attachAsset('chairs', {
anchorX: 0.5,
anchorY: 0.5
});
self.qualityBonus = 1.5;
return self;
});
var Chef = Container.expand(function () {
var self = Container.call(this);
var chefGraphics = self.attachAsset('chef', {
anchorX: 0.5,
anchorY: 0.5
});
self.efficiencyBonus = 2;
return self;
});
var Customer = Container.expand(function () {
var self = Container.call(this);
var customerGraphics = self.attachAsset('customer', {
anchorX: 0.5,
anchorY: 0.5
});
self.satisfaction = 1;
self.timeInRestaurant = 0;
self.maxTime = 300; // 5 seconds at 60fps
self.hasEaten = false;
self.currentTable = null;
self.update = function () {
self.timeInRestaurant++;
// Try to sit at a table if not already seated
if (!self.currentTable && self.timeInRestaurant > 30) {
for (var i = 0; i < tables.length; i++) {
var table = tables[i];
if (!table.occupied) {
self.currentTable = table;
table.occupied = true;
// Add food to table immediately when customer sits
if (!table.food) {
table.food = table.addChild(LK.getAsset('food', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: -30
}));
// Make food appear with a small scale animation
table.food.scaleX = 0;
table.food.scaleY = 0;
tween(table.food, {
scaleX: 1,
scaleY: 1
}, {
duration: 500
});
}
// Move customer to table with tween animation
tween(self, {
x: table.x,
y: table.y + 100
}, {
duration: 1000
});
break;
}
}
}
if (!self.hasEaten && self.timeInRestaurant > 60 && self.currentTable) {
// Customer eats and pays (only when seated)
var payment = Math.floor(10 * (restaurantQuality || 1) * (self.satisfaction || 1));
// Ensure payment is a valid number
if (isNaN(payment) || payment < 0) {
payment = 10;
}
// Check if this is a fancy customer (has gold tint) and reduce payment
if (self.tint === 0xFFD700) {
payment = Math.floor(payment * 0.6); // Fancy customers pay 60% of normal amount
}
money = (money || 0) + payment;
// Ensure money is always a valid number
if (isNaN(money)) {
money = 50; // Reset to starting amount if NaN
}
moneyTxt.setText('$' + money);
self.hasEaten = true;
// Customer satisfaction affects tip
if (Math.random() < (restaurantQuality || 1) / 10) {
var tip = Math.floor(payment * 0.5);
// Ensure tip is valid
if (isNaN(tip) || tip < 0) {
tip = 0;
}
// Reduce tip for fancy customers too
if (self.tint === 0xFFD700) {
tip = Math.floor(tip * 0.6);
}
money = (money || 0) + tip;
// Ensure money is always a valid number
if (isNaN(money)) {
money = 50; // Reset to starting amount if NaN
}
moneyTxt.setText('$' + money);
}
}
if (self.timeInRestaurant > self.maxTime && !self.isLeaving) {
// Mark customer as leaving to prevent multiple leave animations
self.isLeaving = true;
// Customer leaves and frees up table
if (self.currentTable) {
self.currentTable.occupied = false;
// Remove food from table
if (self.currentTable.food) {
self.currentTable.food.destroy();
self.currentTable.food = null;
}
}
// Animate customer leaving the restaurant
tween(self, {
x: -200,
// Move off screen to the left
alpha: 0.5 // Fade out slightly
}, {
duration: 1500,
onFinish: function onFinish() {
// Remove from customers array and destroy after animation
for (var i = customers.length - 1; i >= 0; i--) {
if (customers[i] === self) {
customers.splice(i, 1);
break;
}
}
self.destroy();
}
});
}
};
return self;
});
var Decoration = Container.expand(function () {
var self = Container.call(this);
var decorationGraphics = self.attachAsset('decoration', {
anchorX: 0.5,
anchorY: 0.5
});
self.qualityBonus = 1;
return self;
});
var GameMachine = Container.expand(function () {
var self = Container.call(this);
var machineGraphics = self.attachAsset('gameMachine', {
anchorX: 0.5,
anchorY: 0.5
});
self.qualityBonus = 3;
return self;
});
var Kid67Customer = Container.expand(function () {
var self = Container.call(this);
var customerGraphics = self.attachAsset('67kid', {
anchorX: 0.5,
anchorY: 0.5
});
self.satisfaction = 0.67; // 67% of normal satisfaction
self.timeInRestaurant = 0;
self.maxTime = 450; // Kids stay longer
self.hasEaten = false;
self.currentTable = null;
self.watchingStage = false;
self.stageWatchTime = 0;
self.update = function () {
self.timeInRestaurant++;
// Check if there's a stage to watch and customer hasn't sat at table yet
if (!self.currentTable && !self.watchingStage && stages.length > 0 && self.timeInRestaurant > 60) {
var stage = stages[0];
var distanceToStage = Math.sqrt((self.x - stage.x) * (self.x - stage.x) + (self.y - stage.y) * (self.y - stage.y));
// 40% chance to go watch the stage instead of sitting at table
if (Math.random() < 0.4) {
self.watchingStage = true;
// Move to watch stage
tween(self, {
x: stage.x + (Math.random() - 0.5) * 300,
y: stage.y + 150
}, {
duration: 1500
});
}
}
// If watching stage, stay for a while before leaving or finding table
if (self.watchingStage) {
self.stageWatchTime++;
// Watch stage for 3-5 seconds before deciding to leave or find table
if (self.stageWatchTime > 180 + Math.random() * 120) {
self.watchingStage = false;
// 60% chance to find table after watching, 40% chance to leave
if (Math.random() < 0.6 && !self.currentTable) {
// Try to find a table after watching stage
for (var i = 0; i < tables.length; i++) {
var table = tables[i];
if (!table.occupied) {
self.currentTable = table;
table.occupied = true;
// Add food to table
if (!table.food) {
table.food = table.addChild(LK.getAsset('food', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: -30
}));
table.food.scaleX = 0;
table.food.scaleY = 0;
tween(table.food, {
scaleX: 1,
scaleY: 1
}, {
duration: 500
});
}
// Move to table
tween(self, {
x: table.x,
y: table.y + 100
}, {
duration: 1000
});
break;
}
}
}
}
}
// Try to sit at a table if not watching stage and not already seated
if (!self.currentTable && !self.watchingStage && self.timeInRestaurant > 30) {
for (var i = 0; i < tables.length; i++) {
var table = tables[i];
if (!table.occupied) {
self.currentTable = table;
table.occupied = true;
// Add food to table immediately when customer sits
if (!table.food) {
table.food = table.addChild(LK.getAsset('food', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: -30
}));
table.food.scaleX = 0;
table.food.scaleY = 0;
tween(table.food, {
scaleX: 1,
scaleY: 1
}, {
duration: 500
});
}
// Move customer to table
tween(self, {
x: table.x,
y: table.y + 100
}, {
duration: 1000
});
break;
}
}
}
if (!self.hasEaten && self.timeInRestaurant > 60 && self.currentTable) {
// Customer eats and pays (67% of normal payment)
var payment = Math.floor(10 * (restaurantQuality || 1) * (self.satisfaction || 1));
if (isNaN(payment) || payment < 0) {
payment = 6; // 67% of base 10
}
money = (money || 0) + payment;
if (isNaN(money)) {
money = 50;
}
moneyTxt.setText('$' + money);
self.hasEaten = true;
// Reduced tip chance for kid customers
if (Math.random() < (restaurantQuality || 1) / 15) {
var tip = Math.floor(payment * 0.3);
if (isNaN(tip) || tip < 0) {
tip = 0;
}
money = (money || 0) + tip;
if (isNaN(money)) {
money = 50;
}
moneyTxt.setText('$' + money);
}
}
if (self.timeInRestaurant > self.maxTime && !self.isLeaving) {
self.isLeaving = true;
// Free up table
if (self.currentTable) {
self.currentTable.occupied = false;
if (self.currentTable.food) {
self.currentTable.food.destroy();
self.currentTable.food = null;
}
}
// Leave restaurant
tween(self, {
x: -200,
alpha: 0.5
}, {
duration: 1500,
onFinish: function onFinish() {
for (var i = customers.length - 1; i >= 0; i--) {
if (customers[i] === self) {
customers.splice(i, 1);
break;
}
}
self.destroy();
}
});
}
};
return self;
});
var KitchenUpgrade = Container.expand(function () {
var self = Container.call(this);
var kitchenGraphics = self.attachAsset('kitchenUpgrade', {
anchorX: 0.5,
anchorY: 0.5
});
self.qualityBonus = 3;
return self;
});
var LightingKit = Container.expand(function () {
var self = Container.call(this);
var lightingGraphics = self.attachAsset('lightingKit', {
anchorX: 0.5,
anchorY: 0.5
});
self.qualityBonus = 2;
return self;
});
var SoundSystem = Container.expand(function () {
var self = Container.call(this);
var soundGraphics = self.attachAsset('soundSystem', {
anchorX: 0.5,
anchorY: 0.5
});
self.qualityBonus = 2.5;
return self;
});
var Stage = Container.expand(function () {
var self = Container.call(this);
var stageGraphics = self.attachAsset('stage', {
anchorX: 0.5,
anchorY: 0.5
});
self.qualityBonus = 3;
return self;
});
var Table = Container.expand(function (type) {
var self = Container.call(this);
var tableGraphics = self.attachAsset(type || 'table', {
anchorX: 0.5,
anchorY: 0.5
});
self.occupied = false;
self.qualityBonus = type === 'fancyTable' ? 2 : 1;
self.food = null;
return self;
});
var VipSection = Container.expand(function () {
var self = Container.call(this);
var vipGraphics = self.attachAsset('vipSection', {
anchorX: 0.5,
anchorY: 0.5
});
self.qualityBonus = 4;
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x90EE90
});
/****
* Game Code
****/
var money = 50;
var restaurantQuality = 1;
var customers = [];
var tables = [];
var gameMachines = [];
var decorations = [];
var chairs = [];
var soundSystems = [];
var lightingKits = [];
var vipSections = [];
var kitchenUpgrades = [];
var chefs = [];
var stages = [];
var stagePurchased = false;
var animatronicsShopUnlocked = false;
var shopOpen = false;
var animatronicsShopOpen = false;
var animatronicsShopPanel = null;
var animatronicsShopButtons = [];
var lastCustomerSpawn = 0;
var upgrade1Purchased = false;
var tablesPurchased = 0;
var chairsPurchased = false;
var soundPurchased = false;
var vipPurchased = false;
var kitchenPurchased = false;
var currentShopPage = 1;
var baseCustomerSpawn = 2;
var fancyCustomerSpawn = 0;
var basketballPurchased = false;
// Create restaurant background
var restaurant = game.addChild(LK.getAsset('restaurant', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1366
}));
// Create restaurant walls for outline
var leftWall = game.addChild(LK.getAsset('wall', {
anchorX: 0.5,
anchorY: 0.5,
x: 154,
y: 1366
}));
var rightWall = game.addChild(LK.getAsset('wall', {
anchorX: 0.5,
anchorY: 0.5,
x: 1894,
y: 1366
}));
var topWall = game.addChild(LK.getAsset('wall', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 796,
width: 1800,
height: 60
}));
var bottomWall = game.addChild(LK.getAsset('wall', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1936,
width: 1800,
height: 60
}));
// Create initial tables with better spacing
var table1 = new Table();
table1.x = 600;
table1.y = 1100;
game.addChild(table1);
tables.push(table1);
var table2 = new Table();
table2.x = 1400;
table2.y = 1100;
game.addChild(table2);
tables.push(table2);
// Money display
var moneyTxt = new Text2('$' + money, {
size: 60,
fill: 0x000000
});
moneyTxt.anchor.set(0, 0);
moneyTxt.x = 150;
moneyTxt.y = 50;
LK.gui.topLeft.addChild(moneyTxt);
// Upgrade 1 button on top of restaurant
var upgrade1Btn = game.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 700
}));
var upgrade1BtnTxt = new Text2('UPGRADE 1 - $300', {
size: 30,
fill: 0xFFFFFF
});
upgrade1BtnTxt.anchor.set(0.5, 0.5);
upgrade1Btn.addChild(upgrade1BtnTxt);
upgrade1Btn.down = function (x, y, obj) {
if (money >= 300) {
money -= 300;
moneyTxt.setText('$' + money);
// Make restaurant bigger
tween(restaurant, {
scaleX: 1.5,
scaleY: 1.5
}, {
duration: 1000
});
// Calculate precise wall positions for 1.5x scaled restaurant
// Restaurant center is at (1024, 1366), scaled restaurant will be 2700x1800
var scaledWidth = 1800 * 1.5; // 2700
var scaledHeight = 1200 * 1.5; // 1800
var centerX = 1024;
var centerY = 1366;
// Left wall: center - half scaled width - wall thickness/2
var leftWallX = centerX - scaledWidth / 2 - 30;
// Right wall: center + half scaled width + wall thickness/2
var rightWallX = centerX + scaledWidth / 2 + 30;
// Top wall: center - half scaled height - wall thickness/2
var topWallY = centerY - scaledHeight / 2 - 30;
// Bottom wall: center + half scaled height + wall thickness/2
var bottomWallY = centerY + scaledHeight / 2 + 30;
// Improve wall positioning and scaling for perfect alignment
tween(leftWall, {
scaleX: 1.5,
scaleY: 1.5,
x: leftWallX
}, {
duration: 1000
});
tween(rightWall, {
scaleX: 1.5,
scaleY: 1.5,
x: rightWallX
}, {
duration: 1000
});
tween(topWall, {
scaleX: 1.5,
scaleY: 1.5,
y: topWallY
}, {
duration: 1000
});
tween(bottomWall, {
scaleX: 1.5,
scaleY: 1.5,
y: bottomWallY
}, {
duration: 1000,
onFinish: function onFinish() {
// Remove the upgrade button after animation completes
upgrade1Btn.destroy();
}
});
upgrade1Purchased = true;
console.log("Restaurant upgraded!");
// Create upgrade 2 button after upgrade 1 is purchased
var upgrade2Btn = game.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 700
}));
var upgrade2BtnTxt = new Text2('UPGRADE 2 - $250000', {
size: 30,
fill: 0xFFFFFF
});
upgrade2BtnTxt.anchor.set(0.5, 0.5);
upgrade2Btn.addChild(upgrade2BtnTxt);
upgrade2Btn.down = function (x, y, obj) {
if (money >= 250000) {
money -= 250000;
moneyTxt.setText('$' + money);
// Make restaurant even bigger (2x scale total)
tween(restaurant, {
scaleX: 2,
scaleY: 2
}, {
duration: 1000
});
// Zoom out the camera by scaling the entire game
tween(game, {
scaleX: 0.7,
scaleY: 0.7
}, {
duration: 1000
});
// Keep admin button and shop button in stable screen positions
// Scale them inversely to maintain their apparent size and adjust positions
tween(adminBtn, {
scaleX: 1.43,
// 1/0.7 to counteract game zoom
scaleY: 1.43,
x: 1900 / 0.7,
// Adjust position for zoom
y: 2600 / 0.7
}, {
duration: 1000
});
tween(shopBtn, {
scaleX: 1.43,
// 1/0.7 to counteract game zoom
scaleY: 1.43,
x: 1900 / 0.7,
// Adjust position for zoom
y: 150 / 0.7
}, {
duration: 1000
});
// Scale shop panel to maintain proper visibility and position
if (shopPanel && shopPanel.parent) {
tween(shopPanel, {
scaleX: 1.43,
scaleY: 1.43,
x: 1024 / 0.7,
y: 1366 / 0.7
}, {
duration: 1000
});
}
// Update wall positions for 2x scaled restaurant
var scaledWidth = 1800 * 2; // 3600
var scaledHeight = 1200 * 2; // 2400
var centerX = 1024;
var centerY = 1366;
var leftWallX = centerX - scaledWidth / 2 - 30;
var rightWallX = centerX + scaledWidth / 2 + 30;
var topWallY = centerY - scaledHeight / 2 - 30;
var bottomWallY = centerY + scaledHeight / 2 + 30;
// Scale walls to match restaurant
tween(leftWall, {
scaleX: 2,
scaleY: 2,
x: leftWallX
}, {
duration: 1000
});
tween(rightWall, {
scaleX: 2,
scaleY: 2,
x: rightWallX
}, {
duration: 1000
});
tween(topWall, {
scaleX: 2,
scaleY: 2,
y: topWallY
}, {
duration: 1000
});
tween(bottomWall, {
scaleX: 2,
scaleY: 2,
y: bottomWallY
}, {
duration: 1000,
onFinish: function onFinish() {
// Remove the upgrade 2 button after animation completes
upgrade2Btn.destroy();
}
});
console.log("Restaurant upgraded to level 2!");
} else {
console.log("Not enough money - need $250000");
}
};
} else {
console.log("Not enough money - need $300");
}
};
// Shop button
var shopBtn = game.addChild(LK.getAsset('shopButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 1900,
y: 150
}));
var shopBtnTxt = new Text2('SHOP', {
size: 40,
fill: 0xFFFFFF
});
shopBtnTxt.anchor.set(0.5, 0.5);
shopBtn.addChild(shopBtnTxt);
shopBtn.down = function (x, y, obj) {
if (!shopOpen) {
openShop();
}
};
// Shop panel (initially hidden) - full screen coverage
var shopPanel = game.addChild(LK.getAsset('shopPanel', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1366,
width: 2048,
height: 2732
}));
shopPanel.visible = false;
// Create animatronics shop panel (initially hidden)
var animatronicsShopPanel = game.addChild(LK.getAsset('shopPanel', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1366,
width: 2048,
height: 2732,
color: 0x2F1B69
}));
animatronicsShopPanel.visible = false;
// Shop items - Page 1
var shopItems = [{
name: 'Premium Chairs',
price: 75,
type: 'chairs'
}, {
name: 'Sound System',
price: 250,
type: 'sound'
}, {
name: 'VIP Section',
price: 400,
type: 'vip'
}, {
name: 'Kitchen Upgrade',
price: 300,
type: 'kitchen'
}];
// Shop items - Page 2
var shopItems2 = [{
name: 'Basketball Machine',
price: 100000,
type: 'basketball'
}, {
name: 'Stage',
price: 200000,
type: 'stage'
}];
var shopButtons = [];
function createShopButtons() {
// Determine which items to show based on current page
var currentShopItems;
if (currentShopPage === 1) {
// Add More Tables to shop items if upgrade 1 is purchased
currentShopItems = shopItems.slice(); // Copy the base shop items
if (upgrade1Purchased) {
// Insert More Tables before Give Money button (which is last)
currentShopItems.splice(currentShopItems.length - 1, 0, {
name: 'More Tables',
price: 150,
type: 'tables'
});
}
} else {
currentShopItems = shopItems2.slice(); // Page 2 items
}
for (var i = 0; i < currentShopItems.length; i++) {
var item = currentShopItems[i];
var btn = shopPanel.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: -300 + i * 150
}));
var btnTxt = new Text2(item.name + ' - $' + item.price, {
size: 30,
fill: 0xFFFFFF
});
btnTxt.anchor.set(0.5, 0.5);
btn.addChild(btnTxt);
btn.itemType = item.type;
btn.itemPrice = item.price;
btn.itemName = item.name;
// Use closure to capture the correct item values
// Check if item is already purchased and disable button
var isAlreadyPurchased = false;
if (item.type === 'chairs' && chairsPurchased) {
isAlreadyPurchased = true;
} else if (item.type === 'sound' && soundPurchased) {
isAlreadyPurchased = true;
} else if (item.type === 'vip' && vipPurchased) {
isAlreadyPurchased = true;
} else if (item.type === 'kitchen' && kitchenPurchased) {
isAlreadyPurchased = true;
} else if (item.type === 'tables' && tablesPurchased >= 5) {
isAlreadyPurchased = true;
} else if (item.type === 'basketball' && basketballPurchased) {
isAlreadyPurchased = true;
} else if (item.type === 'stage' && stagePurchased) {
isAlreadyPurchased = true;
}
if (isAlreadyPurchased) {
btnTxt.text = 'PURCHASED';
btn.alpha = 0.5;
btn.down = null;
} else {
btn.down = function (itemType, itemPrice) {
return function (x, y, obj) {
purchaseItem(itemType, itemPrice);
};
}(item.type, item.price);
}
shopButtons.push(btn);
}
// Navigation buttons
if (currentShopPage === 1) {
// Next page button - only show if upgrade 1 is purchased
if (upgrade1Purchased) {
var nextPageBtn = shopPanel.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 200,
y: 600,
color: 0x4169E1
}));
var nextPageTxt = new Text2('NEXT PAGE', {
size: 30,
fill: 0xFFFFFF
});
nextPageTxt.anchor.set(0.5, 0.5);
nextPageBtn.addChild(nextPageTxt);
nextPageBtn.down = function (x, y, obj) {
currentShopPage = 2;
// Clear existing shop buttons
for (var i = 0; i < shopButtons.length; i++) {
shopButtons[i].destroy();
}
shopButtons = [];
// Recreate shop buttons for page 2
createShopButtons();
};
shopButtons.push(nextPageBtn);
}
} else {
// Previous page button
var prevPageBtn = shopPanel.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: -200,
y: 600,
color: 0x4169E1
}));
var prevPageTxt = new Text2('PREV PAGE', {
size: 30,
fill: 0xFFFFFF
});
prevPageTxt.anchor.set(0.5, 0.5);
prevPageBtn.addChild(prevPageTxt);
prevPageBtn.down = function (x, y, obj) {
currentShopPage = 1;
// Clear existing shop buttons
for (var i = 0; i < shopButtons.length; i++) {
shopButtons[i].destroy();
}
shopButtons = [];
// Recreate shop buttons for page 1
createShopButtons();
};
shopButtons.push(prevPageBtn);
}
// Close shop button
var closeBtn = shopPanel.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: 700,
color: 0xFF6B6B
}));
var closeTxt = new Text2('CLOSE', {
size: 40,
fill: 0xFFFFFF
});
closeTxt.anchor.set(0.5, 0.5);
closeBtn.addChild(closeTxt);
closeBtn.down = function (x, y, obj) {
closeShop();
};
shopButtons.push(closeBtn);
}
function openShop() {
// Clear existing shop buttons
for (var i = 0; i < shopButtons.length; i++) {
shopButtons[i].destroy();
}
shopButtons = [];
// Recreate shop buttons with current upgrade status
createShopButtons();
shopOpen = true;
shopPanel.visible = true;
// Hide all game elements
restaurant.visible = false;
leftWall.visible = false;
rightWall.visible = false;
topWall.visible = false;
bottomWall.visible = false;
shopBtn.visible = false;
for (var i = 0; i < tables.length; i++) {
tables[i].visible = false;
}
for (var i = 0; i < customers.length; i++) {
customers[i].visible = false;
}
for (var i = 0; i < gameMachines.length; i++) {
gameMachines[i].visible = false;
}
for (var i = 0; i < decorations.length; i++) {
decorations[i].visible = false;
}
for (var i = 0; i < chairs.length; i++) {
chairs[i].visible = false;
}
for (var i = 0; i < soundSystems.length; i++) {
soundSystems[i].visible = false;
}
for (var i = 0; i < lightingKits.length; i++) {
lightingKits[i].visible = false;
}
for (var i = 0; i < vipSections.length; i++) {
vipSections[i].visible = false;
}
for (var i = 0; i < kitchenUpgrades.length; i++) {
kitchenUpgrades[i].visible = false;
}
for (var i = 0; i < chefs.length; i++) {
chefs[i].visible = false;
}
for (var i = 0; i < stages.length; i++) {
stages[i].visible = false;
}
if (upgrade1Btn && upgrade1Btn.parent) {
upgrade1Btn.visible = false;
}
tween(shopPanel, {
alpha: 1
}, {
duration: 300
});
}
function closeShop() {
shopOpen = false;
tween(shopPanel, {
alpha: 0
}, {
duration: 300,
onFinish: function onFinish() {
shopPanel.visible = false;
// Show all game elements when shop closes
restaurant.visible = true;
leftWall.visible = true;
rightWall.visible = true;
topWall.visible = true;
bottomWall.visible = true;
shopBtn.visible = true;
for (var i = 0; i < tables.length; i++) {
tables[i].visible = true;
}
for (var i = 0; i < customers.length; i++) {
customers[i].visible = true;
}
for (var i = 0; i < gameMachines.length; i++) {
gameMachines[i].visible = true;
}
for (var i = 0; i < decorations.length; i++) {
decorations[i].visible = true;
}
for (var i = 0; i < chairs.length; i++) {
chairs[i].visible = true;
}
for (var i = 0; i < soundSystems.length; i++) {
soundSystems[i].visible = true;
}
for (var i = 0; i < lightingKits.length; i++) {
lightingKits[i].visible = true;
}
for (var i = 0; i < vipSections.length; i++) {
vipSections[i].visible = true;
}
for (var i = 0; i < kitchenUpgrades.length; i++) {
kitchenUpgrades[i].visible = true;
}
for (var i = 0; i < chefs.length; i++) {
chefs[i].visible = true;
}
for (var i = 0; i < stages.length; i++) {
stages[i].visible = true;
}
if (upgrade1Btn && upgrade1Btn.parent) {
upgrade1Btn.visible = true;
}
}
});
}
function purchaseItem(type, price) {
// Check if item is already purchased (except for lighting, money, and tables)
if (type === 'chairs' && chairsPurchased) {
console.log("Chairs already purchased!");
return;
}
if (type === 'sound' && soundPurchased) {
console.log("Sound system already purchased!");
return;
}
if (type === 'vip' && vipPurchased) {
console.log("VIP section already purchased!");
return;
}
if (type === 'kitchen' && kitchenPurchased) {
console.log("Kitchen upgrade already purchased!");
return;
}
if (type === 'basketball' && basketballPurchased) {
console.log("Basketball machine already purchased!");
return;
}
if (type === 'stage' && stagePurchased) {
console.log("Stage already purchased!");
return;
}
if (money >= price) {
money = (money || 0) - price;
// Ensure money doesn't become NaN
if (isNaN(money)) {
money = 0;
}
moneyTxt.setText('$' + money);
LK.getSound('purchase').play();
if (type === 'chairs') {
var newChairs = new Chairs();
newChairs.x = 300 + chairs.length * 200;
newChairs.y = 1700;
game.addChild(newChairs);
chairs.push(newChairs);
restaurantQuality += 0.7;
chairsPurchased = true;
fancyCustomerSpawn += 1;
} else if (type === 'sound') {
var newSoundSystem = new SoundSystem();
newSoundSystem.x = 300 + soundSystems.length * 200;
newSoundSystem.y = 850;
game.addChild(newSoundSystem);
soundSystems.push(newSoundSystem);
restaurantQuality += 1.2;
soundPurchased = true;
baseCustomerSpawn += 1;
} else if (type === 'lighting') {
var newLighting = new LightingKit();
newLighting.x = 600 + lightingKits.length * 300;
newLighting.y = 950;
game.addChild(newLighting);
lightingKits.push(newLighting);
restaurantQuality += 1;
// Add lighting effect
LK.effects.flashObject(newLighting, 0xFFFF00, 2000);
} else if (type === 'vip') {
var newVip = new VipSection();
newVip.x = 1600;
newVip.y = 1600;
game.addChild(newVip);
vipSections.push(newVip);
restaurantQuality += 2;
// Add VIP chair next to the VIP section with proper spacing
var vipChair = new Chairs();
vipChair.x = 1300;
vipChair.y = 1500;
game.addChild(vipChair);
chairs.push(vipChair);
vipPurchased = true;
fancyCustomerSpawn += 2;
} else if (type === 'kitchen') {
var newKitchen = new KitchenUpgrade();
newKitchen.x = 1024;
newKitchen.y = 1000;
game.addChild(newKitchen);
kitchenUpgrades.push(newKitchen);
restaurantQuality += 1.5;
// Add chef automatically with kitchen upgrade
var newChef = new Chef();
newChef.x = 1024 + chefs.length * 150;
newChef.y = 1100;
game.addChild(newChef);
chefs.push(newChef);
restaurantQuality += 1.0;
kitchenPurchased = true;
baseCustomerSpawn += 1;
} else if (type === 'tables') {
if (tablesPurchased < 5) {
var newTable = new Table();
newTable.x = 400 + (tables.length - 2) * 350;
newTable.y = 1350;
game.addChild(newTable);
tables.push(newTable);
restaurantQuality += 0.5;
tablesPurchased++;
baseCustomerSpawn += 1;
}
} else if (type === 'basketball') {
var basketballMachine = game.addChild(LK.getAsset('basketballMachine', {
anchorX: 0.5,
anchorY: 0.5,
x: 300,
y: 2000,
scaleX: 1.0,
scaleY: 1.0
}));
basketballMachine.lastPlayerTime = 0;
basketballMachine.playersNearby = [];
basketballMachine.tint = 0xFFFFFF; // Initialize white tint for flash effects
restaurantQuality += 1.5;
basketballPurchased = true;
// Store reference for later use
basketballMachine.customersBonus = 2;
gameMachines.push(basketballMachine);
} else if (type === 'stage') {
var newStage = new Stage();
newStage.x = 1024;
newStage.y = 650;
game.addChild(newStage);
stages.push(newStage);
restaurantQuality += 2;
stagePurchased = true;
// Create 5 seats in front of the stage with more spacing to avoid collision
for (var seatIndex = 0; seatIndex < 5; seatIndex++) {
var stageSeat = new Chairs();
stageSeat.x = 524 + seatIndex * 200;
stageSeat.y = 780;
game.addChild(stageSeat);
chairs.push(stageSeat);
}
// Stage bonuses: +3 customers, +1 rich customer, +1 67kid customer
baseCustomerSpawn += 3;
fancyCustomerSpawn += 1;
// Add special 67kid customer type spawn bonus
if (!window.kidCustomerSpawn) window.kidCustomerSpawn = 0;
window.kidCustomerSpawn += 1;
// Unlock animatronics shop
animatronicsShopUnlocked = true;
// Create animatronics shop button next to regular shop button
var animatronicsBtn = game.addChild(LK.getAsset('shopButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 1900,
y: 250,
color: 0x8A2BE2
}));
var animatronicsBtnTxt = new Text2('ANIMATRONICS', {
size: 30,
fill: 0xFFFFFF
});
animatronicsBtnTxt.anchor.set(0.5, 0.5);
animatronicsBtn.addChild(animatronicsBtnTxt);
// Check if game is zoomed and adjust button accordingly
if (game.scaleX && game.scaleX <= 0.7) {
animatronicsBtn.scaleX = 1.43;
animatronicsBtn.scaleY = 1.43;
animatronicsBtn.x = 1900 / 0.7;
animatronicsBtn.y = 250 / 0.7;
}
animatronicsBtn.down = function (x, y, obj) {
if (!animatronicsShopOpen) {
openAnimatronicsShop();
}
};
}
// Update button text to show "PURCHASED" for all items except lighting and tables (which can be bought multiple times)
if (type !== 'lighting' && type !== 'tables') {
for (var i = 0; i < shopButtons.length; i++) {
var btn = shopButtons[i];
if (btn.itemType === type) {
var btnText = btn.children[0]; // Get the text child
btnText.text = 'PURCHASED';
btn.alpha = 0.5; // Make button look disabled
btn.down = null; // Remove click handler
break;
}
}
} else if (type === 'tables' && tablesPurchased >= 5) {
// Handle tables purchase limit
for (var i = 0; i < shopButtons.length; i++) {
var btn = shopButtons[i];
if (btn.itemType === 'tables') {
var btnText = btn.children[0];
btnText.text = 'PURCHASED';
btn.alpha = 0.5;
btn.down = null;
break;
}
}
} else if (type === 'lighting') {
// For lighting, temporarily show feedback on the button
for (var i = 0; i < shopButtons.length; i++) {
var btn = shopButtons[i];
if (btn.itemType === 'lighting') {
var btnText = btn.children[0];
var originalText = btnText.text;
btnText.text = 'ADDED!';
LK.setTimeout(function () {
btnText.text = originalText;
}, 1000);
break;
}
}
}
// Don't close shop immediately - let player continue shopping
console.log("Item purchased successfully!");
} else {
console.log("Not enough money for " + type + " - need $" + price);
}
}
// Animatronics shop items
var animatronicsItems = [{
name: 'Security Bear',
price: 500000,
type: 'securityBear',
description: 'Reduces customer complaints'
}, {
name: 'Dancing Chicken',
price: 750000,
type: 'dancingChicken',
description: 'Attracts more customers'
}, {
name: 'Music Box Puppet',
price: 1000000,
type: 'musicBoxPuppet',
description: 'Increases customer satisfaction'
}, {
name: 'Golden Freddy',
price: 2000000,
type: 'goldenFreddy',
description: 'Ultimate entertainment boost'
}];
var animatronicsPurchased = {
securityBear: false,
dancingChicken: false,
musicBoxPuppet: false,
goldenFreddy: false
};
function openAnimatronicsShop() {
// Clear existing animatronics shop buttons
for (var i = 0; i < animatronicsShopButtons.length; i++) {
animatronicsShopButtons[i].destroy();
}
animatronicsShopButtons = [];
// Check if game is zoomed and adjust panel accordingly
if (game.scaleX && game.scaleX <= 0.7) {
animatronicsShopPanel.scaleX = 1.43;
animatronicsShopPanel.scaleY = 1.43;
animatronicsShopPanel.x = 1024 / 0.7;
animatronicsShopPanel.y = 1366 / 0.7;
} else {
animatronicsShopPanel.scaleX = 1;
animatronicsShopPanel.scaleY = 1;
animatronicsShopPanel.x = 1024;
animatronicsShopPanel.y = 1366;
}
// Create animatronics shop title
var titleText = animatronicsShopPanel.addChild(new Text2('ANIMATRONICS SHOP', {
size: 60,
fill: 0xFFFFFF
}));
titleText.anchor.set(0.5, 0.5);
titleText.x = 0;
titleText.y = -600;
animatronicsShopButtons.push(titleText);
// Create item buttons
for (var i = 0; i < animatronicsItems.length; i++) {
var item = animatronicsItems[i];
var btn = animatronicsShopPanel.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: -400 + i * 150,
width: 600,
height: 100,
color: 0x4A148C
}));
var btnTxt = new Text2(item.name + ' - $' + item.price, {
size: 28,
fill: 0xFFFFFF
});
btnTxt.anchor.set(0.5, 0.3);
btn.addChild(btnTxt);
var descTxt = new Text2(item.description, {
size: 20,
fill: 0xCCCCCC
});
descTxt.anchor.set(0.5, 0.7);
btn.addChild(descTxt);
btn.itemType = item.type;
btn.itemPrice = item.price;
// Check if already purchased
if (animatronicsPurchased[item.type]) {
btnTxt.text = 'PURCHASED';
btn.alpha = 0.5;
btn.down = null;
} else {
btn.down = function (itemType, itemPrice) {
return function (x, y, obj) {
purchaseAnimatronic(itemType, itemPrice);
};
}(item.type, item.price);
}
animatronicsShopButtons.push(btn);
}
// Close button
var closeBtn = animatronicsShopPanel.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: 600,
color: 0xFF6B6B
}));
var closeTxt = new Text2('CLOSE', {
size: 40,
fill: 0xFFFFFF
});
closeTxt.anchor.set(0.5, 0.5);
closeBtn.addChild(closeTxt);
closeBtn.down = function (x, y, obj) {
closeAnimatronicsShop();
};
animatronicsShopButtons.push(closeBtn);
animatronicsShopOpen = true;
animatronicsShopPanel.visible = true;
// Hide all game elements
restaurant.visible = false;
leftWall.visible = false;
rightWall.visible = false;
topWall.visible = false;
bottomWall.visible = false;
shopBtn.visible = false;
for (var i = 0; i < tables.length; i++) {
tables[i].visible = false;
}
for (var i = 0; i < customers.length; i++) {
customers[i].visible = false;
}
for (var i = 0; i < gameMachines.length; i++) {
gameMachines[i].visible = false;
}
for (var i = 0; i < decorations.length; i++) {
decorations[i].visible = false;
}
for (var i = 0; i < chairs.length; i++) {
chairs[i].visible = false;
}
for (var i = 0; i < soundSystems.length; i++) {
soundSystems[i].visible = false;
}
for (var i = 0; i < lightingKits.length; i++) {
lightingKits[i].visible = false;
}
for (var i = 0; i < vipSections.length; i++) {
vipSections[i].visible = false;
}
for (var i = 0; i < kitchenUpgrades.length; i++) {
kitchenUpgrades[i].visible = false;
}
for (var i = 0; i < chefs.length; i++) {
chefs[i].visible = false;
}
for (var i = 0; i < stages.length; i++) {
stages[i].visible = false;
}
if (upgrade1Btn && upgrade1Btn.parent) {
upgrade1Btn.visible = false;
}
tween(animatronicsShopPanel, {
alpha: 1
}, {
duration: 300
});
}
function closeAnimatronicsShop() {
animatronicsShopOpen = false;
tween(animatronicsShopPanel, {
alpha: 0
}, {
duration: 300,
onFinish: function onFinish() {
animatronicsShopPanel.visible = false;
// Show all game elements
restaurant.visible = true;
leftWall.visible = true;
rightWall.visible = true;
topWall.visible = true;
bottomWall.visible = true;
shopBtn.visible = true;
for (var i = 0; i < tables.length; i++) {
tables[i].visible = true;
}
for (var i = 0; i < customers.length; i++) {
customers[i].visible = true;
}
for (var i = 0; i < gameMachines.length; i++) {
gameMachines[i].visible = true;
}
for (var i = 0; i < decorations.length; i++) {
decorations[i].visible = true;
}
for (var i = 0; i < chairs.length; i++) {
chairs[i].visible = true;
}
for (var i = 0; i < soundSystems.length; i++) {
soundSystems[i].visible = true;
}
for (var i = 0; i < lightingKits.length; i++) {
lightingKits[i].visible = true;
}
for (var i = 0; i < vipSections.length; i++) {
vipSections[i].visible = true;
}
for (var i = 0; i < kitchenUpgrades.length; i++) {
kitchenUpgrades[i].visible = true;
}
for (var i = 0; i < chefs.length; i++) {
chefs[i].visible = true;
}
for (var i = 0; i < stages.length; i++) {
stages[i].visible = true;
}
if (upgrade1Btn && upgrade1Btn.parent) {
upgrade1Btn.visible = true;
}
}
});
}
function purchaseAnimatronic(type, price) {
if (animatronicsPurchased[type]) {
console.log("Animatronic already purchased!");
return;
}
if (money >= price) {
money -= price;
moneyTxt.setText('$' + money);
LK.getSound('purchase').play();
animatronicsPurchased[type] = true;
// Apply animatronic effects
if (type === 'securityBear') {
restaurantQuality += 1.5;
baseCustomerSpawn += 1;
} else if (type === 'dancingChicken') {
restaurantQuality += 2;
baseCustomerSpawn += 2;
fancyCustomerSpawn += 1;
} else if (type === 'musicBoxPuppet') {
restaurantQuality += 2.5;
baseCustomerSpawn += 1;
if (!window.kidCustomerSpawn) window.kidCustomerSpawn = 0;
window.kidCustomerSpawn += 2;
} else if (type === 'goldenFreddy') {
restaurantQuality += 5;
baseCustomerSpawn += 3;
fancyCustomerSpawn += 2;
if (!window.kidCustomerSpawn) window.kidCustomerSpawn = 0;
window.kidCustomerSpawn += 1;
}
// Update button to show purchased
for (var i = 0; i < animatronicsShopButtons.length; i++) {
var btn = animatronicsShopButtons[i];
if (btn.itemType === type) {
var btnText = btn.children[0];
btnText.text = 'PURCHASED';
btn.alpha = 0.5;
btn.down = null;
break;
}
}
console.log("Animatronic purchased successfully!");
} else {
console.log("Not enough money for " + type + " - need $" + price);
}
}
function spawnCustomer() {
var totalCustomerLimit = baseCustomerSpawn + fancyCustomerSpawn;
var maxCustomers = Math.floor(restaurantQuality * 2) + totalCustomerLimit;
// Spawn multiple customers based on upgrade bonuses
var customersToSpawn = 1;
if (baseCustomerSpawn > 2) {
customersToSpawn += Math.floor((baseCustomerSpawn - 2) * 0.5); // Extra customers from regular upgrades
}
if (fancyCustomerSpawn > 0) {
customersToSpawn += Math.floor(fancyCustomerSpawn * 0.3); // Extra customers from fancy upgrades
}
for (var spawn = 0; spawn < customersToSpawn && customers.length < maxCustomers; spawn++) {
var customer = new Customer();
customer.x = -100 - spawn * 50; // Stagger spawn positions
customer.y = 1400 + Math.random() * 200;
customer.satisfaction = Math.min(restaurantQuality / 5, 2);
// Determine customer type based on spawn bonuses
var fancyChance = fancyCustomerSpawn > 0 ? Math.min(0.3 + fancyCustomerSpawn * 0.1, 0.7) : 0;
var kidChance = window.kidCustomerSpawn > 0 ? Math.min(0.2 + window.kidCustomerSpawn * 0.1, 0.5) : 0;
// Replace regular customer with Kid67Customer if it should be a kid
if (window.kidCustomerSpawn > 0 && Math.random() < kidChance) {
// Remove the regular customer and create a Kid67Customer instead
game.removeChild(customer);
customers.pop(); // Remove from array since we just added it
customer = new Kid67Customer();
customer.x = -100 - spawn * 50;
customer.y = 1400 + Math.random() * 200;
customer.satisfaction = Math.min(restaurantQuality / 5, 2) * 0.67; // 67% satisfaction
game.addChild(customer);
customers.push(customer);
} else if (fancyCustomerSpawn > 0 && Math.random() < fancyChance) {
customer.satisfaction *= 1.5; // Fancy customers have higher satisfaction
customer.tint = 0xFFD700; // Gold tint for fancy customers
}
game.addChild(customer);
customers.push(customer);
LK.getSound('customerEnter').play();
// Move customer into restaurant with slight delay for each spawn
LK.setTimeout(function (customerRef) {
return function () {
tween(customerRef, {
x: 200 + Math.random() * 1600
}, {
duration: 2000
});
};
}(customer), spawn * 200); // 200ms delay between each customer
}
}
createShopButtons();
// Admin button in right bottom corner
var adminBtn = game.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 1900,
y: 2600,
color: 0xFF4500
}));
var adminBtnTxt = new Text2('ADMIN', {
size: 30,
fill: 0xFFFFFF
});
adminBtnTxt.anchor.set(0.5, 0.5);
adminBtn.addChild(adminBtnTxt);
// Password input system variables
var passwordPanel = null;
var passwordInput = "";
var passwordInputText = null;
adminBtn.down = function (x, y, obj) {
showPasswordPrompt();
};
function showPasswordPrompt() {
// Create password panel
passwordPanel = game.addChild(LK.getAsset('shopPanel', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1366,
width: 800,
height: 400,
color: 0x000000
}));
passwordPanel.tint = 0x000000;
// Check if game is zoomed out and apply inverse zoom to maintain stable position
if (game.scaleX && game.scaleX <= 0.7) {
passwordPanel.scaleX = 1.43;
// 1/0.7 to counteract game zoom
passwordPanel.scaleY = 1.43;
passwordPanel.x = 1024 / 0.7;
// Adjust position for zoom
passwordPanel.y = 1366 / 0.7;
}
// Password title
var passwordTitle = passwordPanel.addChild(new Text2('Enter Admin Password', {
size: 40,
fill: 0xFFFFFF
}));
passwordTitle.anchor.set(0.5, 0.5);
passwordTitle.x = 0;
passwordTitle.y = -120;
// Password display
passwordInputText = passwordPanel.addChild(new Text2('', {
size: 50,
fill: 0xFFFFFF
}));
passwordInputText.anchor.set(0.5, 0.5);
passwordInputText.x = 0;
passwordInputText.y = -40;
// Number buttons (0-9)
var numberButtons = [];
for (var i = 0; i <= 9; i++) {
var numBtn = passwordPanel.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: -200 + i % 5 * 100,
y: 20 + Math.floor(i / 5) * 80,
width: 80,
height: 60,
color: 0x3498DB
}));
var numTxt = new Text2(i.toString(), {
size: 30,
fill: 0xFFFFFF
});
numTxt.anchor.set(0.5, 0.5);
numBtn.addChild(numTxt);
// Use closure to capture number value
numBtn.down = function (num) {
return function (x, y, obj) {
if (passwordInput.length < 10) {
passwordInput += num.toString();
updatePasswordDisplay();
}
};
}(i);
numberButtons.push(numBtn);
}
// Clear button
var clearBtn = passwordPanel.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: -150,
y: 160,
width: 100,
height: 60,
color: 0xE74C3C
}));
var clearTxt = new Text2('CLEAR', {
size: 25,
fill: 0xFFFFFF
});
clearTxt.anchor.set(0.5, 0.5);
clearBtn.addChild(clearTxt);
clearBtn.down = function (x, y, obj) {
passwordInput = "";
updatePasswordDisplay();
};
// Submit button
var submitBtn = passwordPanel.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: 160,
width: 100,
height: 60,
color: 0x27AE60
}));
var submitTxt = new Text2('ENTER', {
size: 25,
fill: 0xFFFFFF
});
submitTxt.anchor.set(0.5, 0.5);
submitBtn.addChild(submitTxt);
submitBtn.down = function (x, y, obj) {
if (passwordInput === "973451") {
console.log("Admin access granted!");
// Add admin functionality here
hidePasswordPrompt();
showInfiniteMoneyButton();
} else if (passwordInput) {
console.log("Incorrect password");
hidePasswordPrompt();
} else {
console.log("No password entered");
}
};
// Cancel button
var cancelBtn = passwordPanel.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 150,
y: 160,
width: 100,
height: 60,
color: 0x95A5A6
}));
var cancelTxt = new Text2('CANCEL', {
size: 25,
fill: 0xFFFFFF
});
cancelTxt.anchor.set(0.5, 0.5);
cancelBtn.addChild(cancelTxt);
cancelBtn.down = function (x, y, obj) {
console.log("Password prompt cancelled");
hidePasswordPrompt();
};
}
function updatePasswordDisplay() {
var displayText = "";
for (var i = 0; i < passwordInput.length; i++) {
displayText += "*";
}
if (passwordInputText) {
passwordInputText.setText(displayText);
}
}
function hidePasswordPrompt() {
if (passwordPanel) {
passwordPanel.destroy();
passwordPanel = null;
passwordInput = "";
passwordInputText = null;
}
}
function showInfiniteMoneyButton() {
// Create infinite money button at the very bottom of screen
var infMoneyBtn = game.addChild(LK.getAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: game.scaleX && game.scaleX <= 0.7 ? 1024 / 0.7 : 1024,
y: game.scaleX && game.scaleX <= 0.7 ? 2680 / 0.7 : 2680,
width: 300,
height: 60,
color: 0xFFD700,
scaleX: game.scaleX && game.scaleX <= 0.7 ? 1.43 : 1,
scaleY: game.scaleX && game.scaleX <= 0.7 ? 1.43 : 1
}));
var infMoneyTxt = new Text2('INF MONEY', {
size: 30,
fill: 0x000000
});
infMoneyTxt.anchor.set(0.5, 0.5);
infMoneyBtn.addChild(infMoneyTxt);
infMoneyBtn.down = function (x, y, obj) {
money = 999000000;
moneyTxt.setText('$' + money);
console.log("Infinite money activated!");
};
}
// Play background music
LK.playMusic('backgroundMusic');
game.update = function () {
// Spawn customers based on restaurant quality and upgrades
var baseSpawnRate = Math.max(300 - restaurantQuality * 20, 240);
var upgradeSpawnBonus = (baseCustomerSpawn - 2) * 30 + fancyCustomerSpawn * 20; // Faster spawn for each upgrade
var finalSpawnRate = Math.max(baseSpawnRate - upgradeSpawnBonus, 120); // Minimum 120 ticks (2 seconds)
if (LK.ticks - lastCustomerSpawn > finalSpawnRate) {
spawnCustomer();
lastCustomerSpawn = LK.ticks;
}
// Update customer satisfaction based on restaurant items
for (var i = 0; i < customers.length; i++) {
var customer = customers[i];
var nearbyQuality = 1;
// Check proximity to tables
for (var j = 0; j < tables.length; j++) {
var table = tables[j];
var distance = Math.sqrt((customer.x - table.x) * (customer.x - table.x) + (customer.y - table.y) * (customer.y - table.y));
if (distance < 300) {
nearbyQuality += table.qualityBonus * 0.1;
}
}
// Check proximity to game machines
for (var k = 0; k < gameMachines.length; k++) {
var machine = gameMachines[k];
var distance = Math.sqrt((customer.x - machine.x) * (customer.x - machine.x) + (customer.y - machine.y) * (customer.y - machine.y));
if (distance < 400) {
nearbyQuality += machine.qualityBonus * 0.1;
// Basketball machine specific interaction
if (machine.customersBonus && distance < 200 && Math.random() < 0.05) {
// Mark customer as playing to prevent multiple interactions
if (!customer.isPlaying) {
customer.isPlaying = true;
// Move customer closer to machine
tween(customer, {
x: machine.x + 50,
y: machine.y + 80
}, {
duration: 800,
onFinish: function onFinish() {
// Customer plays basketball - bounce animation
tween(customer, {
scaleX: 1.3,
scaleY: 0.8,
y: customer.y - 20
}, {
duration: 200,
easing: tween.easeOut,
onFinish: function onFinish() {
// Bounce back down
tween(customer, {
scaleX: 1.1,
scaleY: 1.1,
y: customer.y + 20
}, {
duration: 200,
easing: tween.bounceOut,
onFinish: function onFinish() {
// Flash machine to show successful shot
tween(machine, {
tint: 0x00FF00
}, {
duration: 300,
onFinish: function onFinish() {
tween(machine, {
tint: 0xFFFFFF
}, {
duration: 300
});
}
});
// Return customer to normal size
tween(customer, {
scaleX: 1,
scaleY: 1
}, {
duration: 300,
onFinish: function onFinish() {
customer.isPlaying = false;
// Move customer away from machine
tween(customer, {
x: customer.x + Math.random() * 200 - 100,
y: customer.y + Math.random() * 100 - 50
}, {
duration: 1000
});
}
});
}
});
}
});
}
});
// Add bonus customers when someone plays
if (LK.ticks - machine.lastPlayerTime > 600) {
machine.lastPlayerTime = LK.ticks;
baseCustomerSpawn += machine.customersBonus;
LK.setTimeout(function () {
baseCustomerSpawn -= machine.customersBonus;
}, 3000);
}
// Give extra money for basketball interaction
money += 5;
moneyTxt.setText('$' + money);
// Play basketball sound effect
LK.getSound('customerEnter').play();
}
}
}
}
customer.satisfaction = Math.min(customer.satisfaction * nearbyQuality, 3);
// Add stage watching behavior for regular customers
if (stages.length > 0 && !customer.currentTable && !customer.watchingStage) {
var stage = stages[0];
var distanceToStage = Math.sqrt((customer.x - stage.x) * (customer.x - stage.x) + (customer.y - stage.y) * (customer.y - stage.y));
// 20% chance for regular customers to watch stage
if (Math.random() < 0.02 && customer.timeInRestaurant > 120) {
customer.watchingStage = true;
customer.stageWatchTime = 0;
// Move to watch stage
tween(customer, {
x: stage.x + (Math.random() - 0.5) * 400,
y: stage.y + 180
}, {
duration: 2000
});
}
}
// Handle stage watching for regular customers
if (customer.watchingStage && !customer.currentTable) {
customer.stageWatchTime = (customer.stageWatchTime || 0) + 1;
// Watch for 2-4 seconds then find table
if (customer.stageWatchTime > 120 + Math.random() * 120) {
customer.watchingStage = false;
// Try to find table after watching
for (var j = 0; j < tables.length; j++) {
var table = tables[j];
if (!table.occupied) {
customer.currentTable = table;
table.occupied = true;
if (!table.food) {
table.food = table.addChild(LK.getAsset('food', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: -30
}));
table.food.scaleX = 0;
table.food.scaleY = 0;
tween(table.food, {
scaleX: 1,
scaleY: 1
}, {
duration: 500
});
}
tween(customer, {
x: table.x,
y: table.y + 100
}, {
duration: 1000
});
break;
}
}
}
}
}
}; ===================================================================
--- original.js
+++ change.js
@@ -1319,9 +1319,9 @@
};
animatronicsShopButtons.push(closeBtn);
animatronicsShopOpen = true;
animatronicsShopPanel.visible = true;
- // Hide game elements
+ // Hide all game elements
restaurant.visible = false;
leftWall.visible = false;
rightWall.visible = false;
topWall.visible = false;
@@ -1332,11 +1332,38 @@
}
for (var i = 0; i < customers.length; i++) {
customers[i].visible = false;
}
+ for (var i = 0; i < gameMachines.length; i++) {
+ gameMachines[i].visible = false;
+ }
+ for (var i = 0; i < decorations.length; i++) {
+ decorations[i].visible = false;
+ }
+ for (var i = 0; i < chairs.length; i++) {
+ chairs[i].visible = false;
+ }
+ for (var i = 0; i < soundSystems.length; i++) {
+ soundSystems[i].visible = false;
+ }
+ for (var i = 0; i < lightingKits.length; i++) {
+ lightingKits[i].visible = false;
+ }
+ for (var i = 0; i < vipSections.length; i++) {
+ vipSections[i].visible = false;
+ }
+ for (var i = 0; i < kitchenUpgrades.length; i++) {
+ kitchenUpgrades[i].visible = false;
+ }
+ for (var i = 0; i < chefs.length; i++) {
+ chefs[i].visible = false;
+ }
for (var i = 0; i < stages.length; i++) {
stages[i].visible = false;
}
+ if (upgrade1Btn && upgrade1Btn.parent) {
+ upgrade1Btn.visible = false;
+ }
tween(animatronicsShopPanel, {
alpha: 1
}, {
duration: 300
@@ -1349,9 +1376,9 @@
}, {
duration: 300,
onFinish: function onFinish() {
animatronicsShopPanel.visible = false;
- // Show game elements
+ // Show all game elements
restaurant.visible = true;
leftWall.visible = true;
rightWall.visible = true;
topWall.visible = true;
@@ -1362,11 +1389,38 @@
}
for (var i = 0; i < customers.length; i++) {
customers[i].visible = true;
}
+ for (var i = 0; i < gameMachines.length; i++) {
+ gameMachines[i].visible = true;
+ }
+ for (var i = 0; i < decorations.length; i++) {
+ decorations[i].visible = true;
+ }
+ for (var i = 0; i < chairs.length; i++) {
+ chairs[i].visible = true;
+ }
+ for (var i = 0; i < soundSystems.length; i++) {
+ soundSystems[i].visible = true;
+ }
+ for (var i = 0; i < lightingKits.length; i++) {
+ lightingKits[i].visible = true;
+ }
+ for (var i = 0; i < vipSections.length; i++) {
+ vipSections[i].visible = true;
+ }
+ for (var i = 0; i < kitchenUpgrades.length; i++) {
+ kitchenUpgrades[i].visible = true;
+ }
+ for (var i = 0; i < chefs.length; i++) {
+ chefs[i].visible = true;
+ }
for (var i = 0; i < stages.length; i++) {
stages[i].visible = true;
}
+ if (upgrade1Btn && upgrade1Btn.parent) {
+ upgrade1Btn.visible = true;
+ }
}
});
}
function purchaseAnimatronic(type, price) {