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();