User prompt
make the bisnesses go to the bottem
User prompt
make the upgrads go to the old position
User prompt
make the text that says the bisnesses go to the bottem
User prompt
make the text for upgrades go to the bottrm
User prompt
put all upgrades at the bottem
User prompt
when the game resets make all states 0
User prompt
make the game also reset when u reset reload the game or u are new
User prompt
make the game reset when u leave
User prompt
make the upgrades more expensive and make the more expensive upgrade way more expenncive
User prompt
make all upgrades bisness upgrads
User prompt
make the auto Eff upgrade bisness upgrade
User prompt
make way more business upgrades
User prompt
make the structures
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'getCurrentCost')' in or related to this line: 'var cost = business.getCurrentCost();' Line Number: 251
Code edit (1 edits merged)
Please save this source code
User prompt
Tap Empire: Build Your Business
Initial prompt
make a tycoon
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var Business = Container.expand(function (type, baseCost, baseIncome) { var self = Container.call(this); self.type = type; self.baseCost = baseCost; self.baseIncome = baseIncome; self.level = 0; self.owned = false; self.hasManager = false; self.managerCost = baseCost * 10; self.upgradeCost = baseCost; self.lastEarning = 0; var icon = self.attachAsset('businessIcon', { anchorX: 0.5, anchorY: 0.5 }); var nameText = new Text2(type, { size: 30, fill: 0xFFFFFF }); nameText.anchor.set(0, 0.5); nameText.x = 50; nameText.y = 0; self.addChild(nameText); var levelText = new Text2('Level: 0', { size: 24, fill: 0xCCCCCC }); levelText.anchor.set(0, 0.5); levelText.x = 50; levelText.y = 25; self.addChild(levelText); var incomeText = new Text2('$0/tap', { size: 20, fill: 0x00FF00 }); incomeText.anchor.set(0, 0.5); incomeText.x = 50; incomeText.y = -25; self.addChild(incomeText); self.updateDisplay = function () { levelText.setText('Level: ' + self.level); var income = self.getCurrentIncome(); incomeText.setText('$' + formatNumber(income) + '/tap'); if (self.hasManager) { icon.tint = 0x00ff00; } else if (self.owned) { icon.tint = 0xffffff; } else { icon.tint = 0x666666; } }; self.getCurrentIncome = function () { if (!self.owned) return 0; return self.baseIncome * Math.pow(1.5, self.level); }; self.getCurrentCost = function () { return Math.floor(self.baseCost * Math.pow(1.15, self.level)); }; self.canAfford = function (money) { return money >= self.getCurrentCost(); }; self.purchase = function () { if (!self.owned) { self.owned = true; self.level = 1; } else { self.level++; } self.upgradeCost = self.getCurrentCost(); self.updateDisplay(); }; self.hireManager = function () { self.hasManager = true; self.updateDisplay(); }; self.canAffordManager = function (money) { return money >= self.managerCost && !self.hasManager && self.owned; }; self.autoEarn = function () { if (self.hasManager && self.owned) { var income = self.getCurrentIncome(); self.lastEarning = income; return income; } return 0; }; self.updateDisplay(); return self; }); var Structure = Container.expand(function (businessType, businessIndex) { var self = Container.call(this); self.businessType = businessType; self.businessIndex = businessIndex; self.structureAssets = []; // Foundation for all structures var foundation = self.attachAsset('foundation', { anchorX: 0.5, anchorY: 1 }); foundation.y = 0; self.structureAssets.push(foundation); // Main structure based on business type var structureAssetName = getStructureAssetName(businessType); var mainStructure = self.attachAsset(structureAssetName, { anchorX: 0.5, anchorY: 1 }); mainStructure.y = -20; self.structureAssets.push(mainStructure); // Initially hidden self.alpha = 0.3; self.scaleX = 0.5; self.scaleY = 0.5; self.updateStructure = function (business) { if (!business.owned) { self.alpha = 0.3; self.scaleX = 0.5; self.scaleY = 0.5; } else { self.alpha = 1.0; var scale = Math.min(1.0 + (business.level - 1) * 0.1, 2.0); self.scaleX = scale; self.scaleY = scale; // Change color based on manager status if (business.hasManager) { mainStructure.tint = 0x00ff00; // Green when managed } else { mainStructure.tint = 0xffffff; // White when owned but not managed } } }; function getStructureAssetName(businessType) { switch (businessType) { case 'Lemonade Stand': return 'lemonadeStand'; case 'Food Truck': return 'foodTruck'; case 'Restaurant': return 'restaurant'; case 'Tech Startup': return 'techStartup'; default: return 'lemonadeStand'; } } return self; }); var TapButton = Container.expand(function () { var self = Container.call(this); var button = self.attachAsset('tapButton', { anchorX: 0.5, anchorY: 0.5 }); var buttonText = new Text2('TAP TO EARN!', { size: 40, fill: 0xFFFFFF }); buttonText.anchor.set(0.5, 0.5); self.addChild(buttonText); self.down = function (x, y, obj) { tween(button, { scaleX: 0.9, scaleY: 0.9 }, { duration: 100 }); tween(button, { scaleX: 1.1, scaleY: 1.1 }, { duration: 100, onFinish: function onFinish() { tween(button, { scaleX: 1, scaleY: 1 }, { duration: 100 }); } }); var totalIncome = calculateTapIncome(); addMoney(totalIncome); LK.getSound('tap').play(); showFloatingText('+$' + formatNumber(totalIncome), self.x, self.y - 50); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x1a1a1a }); /**** * Game Code ****/ // Game state variables var money = storage.money || 0; var totalEarned = storage.totalEarned || 0; var prestigeLevel = storage.prestigeLevel || 0; var prestigeMultiplier = 1 + prestigeLevel * 0.5; // Business definitions var businessTypes = [{ name: 'Lemonade Stand', cost: 10, income: 1 }, { name: 'Food Truck', cost: 100, income: 5 }, { name: 'Restaurant', cost: 1000, income: 25 }, { name: 'Tech Startup', cost: 10000, income: 100 }]; var businesses = []; var structures = []; var floatingTexts = []; // UI Elements var moneyText = new Text2('$0', { size: 60, fill: 0x00FF00 }); moneyText.anchor.set(0.5, 0); LK.gui.top.addChild(moneyText); var totalEarnedText = new Text2('Total: $0', { size: 30, fill: 0xFFFF00 }); totalEarnedText.anchor.set(0.5, 0); totalEarnedText.y = 80; LK.gui.top.addChild(totalEarnedText); var prestigeText = new Text2('Prestige Level: 0', { size: 25, fill: 0xFF00FF }); prestigeText.anchor.set(1, 0); LK.gui.topRight.addChild(prestigeText); // Create tap button var tapButton = game.addChild(new TapButton()); tapButton.x = 1024; tapButton.y = 400; // Create businesses for (var i = 0; i < businessTypes.length; i++) { var businessData = businessTypes[i]; var business = new Business(businessData.name, businessData.cost, businessData.income); business.x = 200; business.y = 600 + i * 120; businesses.push(business); game.addChild(business); // Load saved state var savedBusiness = storage['business_' + i]; if (savedBusiness) { business.level = savedBusiness.level || 0; business.owned = savedBusiness.owned || false; business.hasManager = savedBusiness.hasManager || false; business.updateDisplay(); } } // Create visual structures for the cityscape for (var i = 0; i < businessTypes.length; i++) { var businessData = businessTypes[i]; var structure = new Structure(businessData.name, i); structure.x = 1200 + i * 150; structure.y = 1000; structures.push(structure); game.addChild(structure); // Initialize structure display structure.updateStructure(businesses[i]); } // Create upgrade buttons var upgradeButtons = []; for (var i = 0; i < businesses.length; i++) { var upgradeButton = LK.getAsset('upgradeButton', { anchorX: 0.5, anchorY: 0.5 }); upgradeButton.x = 600; upgradeButton.y = 600 + i * 120; upgradeButton.businessIndex = i; game.addChild(upgradeButton); upgradeButtons.push(upgradeButton); var upgradeText = new Text2('Buy', { size: 24, fill: 0xFFFFFF }); upgradeText.anchor.set(0.5, 0.5); upgradeButton.addChild(upgradeText); upgradeButton.costText = upgradeText; upgradeButton.down = function (x, y, obj) { var business = businesses[this.businessIndex]; var cost = business.getCurrentCost(); if (money >= cost) { money -= cost; var wasFirstPurchase = !business.owned; business.purchase(); LK.getSound('purchase').play(); updateUI(); // Animate structure growth if (wasFirstPurchase) { var structure = structures[this.businessIndex]; tween(structure, { scaleX: structure.scaleX * 1.2, scaleY: structure.scaleY * 1.2 }, { duration: 200, onFinish: function onFinish() { tween(structure, { scaleX: structure.scaleX / 1.2, scaleY: structure.scaleY / 1.2 }, { duration: 200 }); } }); } } }; } // Create manager buttons var managerButtons = []; for (var i = 0; i < businesses.length; i++) { var managerButton = LK.getAsset('managerButton', { anchorX: 0.5, anchorY: 0.5 }); managerButton.x = 800; managerButton.y = 600 + i * 120; managerButton.businessIndex = i; game.addChild(managerButton); managerButtons.push(managerButton); var managerText = new Text2('Manager', { size: 20, fill: 0xFFFFFF }); managerText.anchor.set(0.5, 0.5); managerButton.addChild(managerText); managerButton.costText = managerText; managerButton.down = function (x, y, obj) { var business = businesses[this.businessIndex]; if (business.canAffordManager(money)) { money -= business.managerCost; business.hireManager(); LK.getSound('purchase').play(); updateUI(); } }; } // Create prestige button var prestigeButton = LK.getAsset('prestigeButton', { anchorX: 0.5, anchorY: 0.5 }); prestigeButton.x = 1024; prestigeButton.y = 1200; game.addChild(prestigeButton); var prestigeButtonText = new Text2('PRESTIGE', { size: 30, fill: 0xFFFFFF }); prestigeButtonText.anchor.set(0.5, 0.5); prestigeButton.addChild(prestigeButtonText); prestigeButton.down = function (x, y, obj) { if (totalEarned >= 100000) { prestige(); } }; // Game functions function calculateTapIncome() { var income = 0; for (var i = 0; i < businesses.length; i++) { if (businesses[i].owned) { income += businesses[i].getCurrentIncome(); } } return Math.max(1, Math.floor(income * prestigeMultiplier)); } function addMoney(amount) { money += amount; totalEarned += amount; updateUI(); } function formatNumber(num) { if (num >= 1000000000) { return (num / 1000000000).toFixed(1) + 'B'; } else if (num >= 1000000) { return (num / 1000000).toFixed(1) + 'M'; } else if (num >= 1000) { return (num / 1000).toFixed(1) + 'K'; } return num.toString(); } function updateUI() { moneyText.setText('$' + formatNumber(money)); totalEarnedText.setText('Total: $' + formatNumber(totalEarned)); prestigeText.setText('Prestige Level: ' + prestigeLevel); // Update business displays for (var i = 0; i < businesses.length; i++) { businesses[i].updateDisplay(); } // Update structure visuals for (var i = 0; i < structures.length; i++) { structures[i].updateStructure(businesses[i]); } // Update upgrade button texts for (var i = 0; i < upgradeButtons.length; i++) { var business = businesses[i]; var cost = business.getCurrentCost(); var canAfford = business.canAfford(money); if (!business.owned) { upgradeButtons[i].costText.setText('Buy $' + formatNumber(cost)); } else { upgradeButtons[i].costText.setText('Upgrade $' + formatNumber(cost)); } upgradeButtons[i].alpha = canAfford ? 1.0 : 0.5; } // Update manager button texts for (var i = 0; i < managerButtons.length; i++) { var business = businesses[i]; var canAfford = business.canAffordManager(money); if (business.hasManager) { managerButtons[i].costText.setText('Hired'); managerButtons[i].alpha = 0.3; } else if (business.owned) { managerButtons[i].costText.setText('$' + formatNumber(business.managerCost)); managerButtons[i].alpha = canAfford ? 1.0 : 0.5; } else { managerButtons[i].costText.setText('Locked'); managerButtons[i].alpha = 0.3; } } // Update prestige button prestigeButton.alpha = totalEarned >= 100000 ? 1.0 : 0.5; } function showFloatingText(text, x, y) { var floatingText = new Text2(text, { size: 36, fill: 0x00FF00 }); floatingText.anchor.set(0.5, 0.5); floatingText.x = x + (Math.random() - 0.5) * 100; floatingText.y = y; game.addChild(floatingText); floatingTexts.push(floatingText); tween(floatingText, { y: y - 100, alpha: 0 }, { duration: 1500, onFinish: function onFinish() { floatingText.destroy(); var index = floatingTexts.indexOf(floatingText); if (index > -1) { floatingTexts.splice(index, 1); } } }); } function prestige() { prestigeLevel++; prestigeMultiplier = 1 + prestigeLevel * 0.5; // Reset game state money = 0; totalEarned = 0; for (var i = 0; i < businesses.length; i++) { businesses[i].level = 0; businesses[i].owned = false; businesses[i].hasManager = false; businesses[i].updateDisplay(); } // Reset structure visuals for (var i = 0; i < structures.length; i++) { structures[i].updateStructure(businesses[i]); } LK.getSound('unlock').play(); showFloatingText('PRESTIGE +' + prestigeLevel + '!', 1024, 600); updateUI(); saveGame(); } function saveGame() { storage.money = money; storage.totalEarned = totalEarned; storage.prestigeLevel = prestigeLevel; for (var i = 0; i < businesses.length; i++) { storage['business_' + i] = { level: businesses[i].level, owned: businesses[i].owned, hasManager: businesses[i].hasManager }; } } // Auto-save timer var autoSaveTimer = LK.setInterval(function () { saveGame(); }, 5000); // Manager auto-earning timer var managerTimer = LK.setInterval(function () { var totalAutoIncome = 0; for (var i = 0; i < businesses.length; i++) { totalAutoIncome += businesses[i].autoEarn(); } if (totalAutoIncome > 0) { totalAutoIncome = Math.floor(totalAutoIncome * prestigeMultiplier); addMoney(totalAutoIncome); } }, 1000); // Initialize UI updateUI(); game.update = function () { // Clean up destroyed floating texts for (var i = floatingTexts.length - 1; i >= 0; i--) { if (floatingTexts[i].destroyed) { floatingTexts.splice(i, 1); } } };
===================================================================
--- original.js
+++ change.js
@@ -95,8 +95,66 @@
};
self.updateDisplay();
return self;
});
+var Structure = Container.expand(function (businessType, businessIndex) {
+ var self = Container.call(this);
+ self.businessType = businessType;
+ self.businessIndex = businessIndex;
+ self.structureAssets = [];
+ // Foundation for all structures
+ var foundation = self.attachAsset('foundation', {
+ anchorX: 0.5,
+ anchorY: 1
+ });
+ foundation.y = 0;
+ self.structureAssets.push(foundation);
+ // Main structure based on business type
+ var structureAssetName = getStructureAssetName(businessType);
+ var mainStructure = self.attachAsset(structureAssetName, {
+ anchorX: 0.5,
+ anchorY: 1
+ });
+ mainStructure.y = -20;
+ self.structureAssets.push(mainStructure);
+ // Initially hidden
+ self.alpha = 0.3;
+ self.scaleX = 0.5;
+ self.scaleY = 0.5;
+ self.updateStructure = function (business) {
+ if (!business.owned) {
+ self.alpha = 0.3;
+ self.scaleX = 0.5;
+ self.scaleY = 0.5;
+ } else {
+ self.alpha = 1.0;
+ var scale = Math.min(1.0 + (business.level - 1) * 0.1, 2.0);
+ self.scaleX = scale;
+ self.scaleY = scale;
+ // Change color based on manager status
+ if (business.hasManager) {
+ mainStructure.tint = 0x00ff00; // Green when managed
+ } else {
+ mainStructure.tint = 0xffffff; // White when owned but not managed
+ }
+ }
+ };
+ function getStructureAssetName(businessType) {
+ switch (businessType) {
+ case 'Lemonade Stand':
+ return 'lemonadeStand';
+ case 'Food Truck':
+ return 'foodTruck';
+ case 'Restaurant':
+ return 'restaurant';
+ case 'Tech Startup':
+ return 'techStartup';
+ default:
+ return 'lemonadeStand';
+ }
+ }
+ return self;
+});
var TapButton = Container.expand(function () {
var self = Container.call(this);
var button = self.attachAsset('tapButton', {
anchorX: 0.5,
@@ -170,8 +228,9 @@
cost: 10000,
income: 100
}];
var businesses = [];
+var structures = [];
var floatingTexts = [];
// UI Elements
var moneyText = new Text2('$0', {
size: 60,
@@ -212,8 +271,19 @@
business.hasManager = savedBusiness.hasManager || false;
business.updateDisplay();
}
}
+// Create visual structures for the cityscape
+for (var i = 0; i < businessTypes.length; i++) {
+ var businessData = businessTypes[i];
+ var structure = new Structure(businessData.name, i);
+ structure.x = 1200 + i * 150;
+ structure.y = 1000;
+ structures.push(structure);
+ game.addChild(structure);
+ // Initialize structure display
+ structure.updateStructure(businesses[i]);
+}
// Create upgrade buttons
var upgradeButtons = [];
for (var i = 0; i < businesses.length; i++) {
var upgradeButton = LK.getAsset('upgradeButton', {
@@ -236,11 +306,30 @@
var business = businesses[this.businessIndex];
var cost = business.getCurrentCost();
if (money >= cost) {
money -= cost;
+ var wasFirstPurchase = !business.owned;
business.purchase();
LK.getSound('purchase').play();
updateUI();
+ // Animate structure growth
+ if (wasFirstPurchase) {
+ var structure = structures[this.businessIndex];
+ tween(structure, {
+ scaleX: structure.scaleX * 1.2,
+ scaleY: structure.scaleY * 1.2
+ }, {
+ duration: 200,
+ onFinish: function onFinish() {
+ tween(structure, {
+ scaleX: structure.scaleX / 1.2,
+ scaleY: structure.scaleY / 1.2
+ }, {
+ duration: 200
+ });
+ }
+ });
+ }
}
};
}
// Create manager buttons
@@ -323,8 +412,12 @@
// Update business displays
for (var i = 0; i < businesses.length; i++) {
businesses[i].updateDisplay();
}
+ // Update structure visuals
+ for (var i = 0; i < structures.length; i++) {
+ structures[i].updateStructure(businesses[i]);
+ }
// Update upgrade button texts
for (var i = 0; i < upgradeButtons.length; i++) {
var business = businesses[i];
var cost = business.getCurrentCost();
@@ -389,8 +482,12 @@
businesses[i].owned = false;
businesses[i].hasManager = false;
businesses[i].updateDisplay();
}
+ // Reset structure visuals
+ for (var i = 0; i < structures.length; i++) {
+ structures[i].updateStructure(businesses[i]);
+ }
LK.getSound('unlock').play();
showFloatingText('PRESTIGE +' + prestigeLevel + '!', 1024, 600);
updateUI();
saveGame();