User prompt
make different files for background and buttons
User prompt
Show the costs of generators we can't afford to buy
User prompt
Move the 2x click power and auto click buttons a little lower
User prompt
Let the cost of 2x click power be 1.9 times the previous cost
User prompt
Let the cost of 2x click power be 1.4 times the previous cost
User prompt
generator efficiency not working
User prompt
Add 1x 5x 10x 100x and all buttons where we can make multiple improvements. When 1x is selected, it upgrades once, when 5x is selected, it upgrades 5 times, when 10x is selected, it upgrades 10 times, when 100x is selected, it upgrades 100 times and when All is selected, it upgrades with all the money we have.
User prompt
Increase the space between the factory and the office
User prompt
increase margin on upgrades
User prompt
Increase the spaces between the elevations a little more
User prompt
make a different image for newly added upgrades
User prompt
Add things to the game that we can upgrade, such as factories, workers, and machines.
User prompt
After purchasing the following upgrades, do not write purchased. Write the next upgrade cost.
User prompt
Set the following upgrades to be available for multiple purchases
User prompt
2x click power sold for 3x the price every time purchased
User prompt
Make background
Code edit (1 edits merged)
Please save this source code
User prompt
Tap Empire Tycoon
Initial prompt
### Core Game Concept The game will start with a simple premise: players tap a central element (e.g., a gold coin, a product, an energy core) on the main screen to earn the primary in-game currency. This earned currency will then be used to unlock new features, upgrade existing production mechanisms, and ultimately establish powerful automatic income streams, allowing players to reach ever-larger numbers. The game's theme can be versatile – from building a rich empire (e.g., "Idle Factory Tycoon," "Gold Mine Empire") to managing a superhero team or a bustling supermarket. --- ### Key Features & Mechanics 1. **Tapping Mechanic (Clicker):** * **Central Tap Element:** A prominent, easily tappable object on the main screen that represents the primary income source. * **Direct Currency Gain:** Each tap should generate a specific amount of the main currency. * **Tap Power Upgrades:** Implement upgrades that significantly increase the currency earned per tap. * **Visual & Audio Feedback:** Taps should provide clear visual (e.g., coin animation, number pop-ups, effects) and audio feedback for a satisfying experience. 2. **Passive Income/Production Mechanic (Idle/Incremental):** * **Automatic Generators:** Players use earned currency to purchase and upgrade various automatic income/production sources (e.g., workers, machines, automated collectors, passive income buildings). * **Continuous Generation:** These automatic sources should continuously generate currency at set intervals or rates, even without active tapping. * **Offline Earnings:** The game *must* continue to accumulate passive income for a specified duration or amount even when the app is closed. Players should be able to collect these accumulated earnings upon returning to the game. 3. **Upgrade System:** * **Tap-Specific Upgrades:** Upgrades that directly enhance the amount of currency gained per tap. * **Passive Income Upgrades:** Upgrades that improve the efficiency of existing automatic income sources (e.g., faster production, increased output per unit) or unlock entirely new, more powerful automatic generators. * **Global Upgrades:** Upgrades that provide overarching bonuses, affecting all income sources or specific categories (e.g., "%5 more income from all sources," "double tap income for 10 seconds"). * **Tiered Unlocks:** Upgrades should unlock progressively as players reach certain currency thresholds or achieve specific milestones, offering strategic choices on what to prioritize. 4. **Progression & Reset System:** * **Milestone Unlocks:** Reaching specific currency milestones or upgrade levels should unlock new game areas, production chains, or advanced features. * **Prestige/Rebirth System (Highly Recommended):** A core long-term retention mechanic. Players should be able to "reset" their progress at a certain point (e.g., reaching a very high currency amount) to gain a special **"hard currency"** or **permanent bonuses**. This allows for exponential long-term growth and replayability, making subsequent playthroughs faster and more powerful. 5. **Economic Balancing:** * The game's economy must be meticulously balanced to ensure players always feel a sense of progression and are motivated to reach the next upgrade. The income curve should feel satisfyingly exponential. --- ### Art Style & User Interface (UI/UX) * **Art Style:** A clean, clear, and appealing art style consistent with the chosen theme. It should be easily readable and performant on mobile devices. Can be cartoonish, minimalist, or semi-realistic, but prioritize clarity and player engagement. * **UI/UX:** An intuitive, uncluttered, and highly responsive user interface. Easy one-tap access to all critical elements like upgrades, statistics, current income, and any special features. Buttons should be large and easy to tap. --- ### Technical Requirements * **Platform:** iOS and Android compatibility. * **Game Engine:** Unity (preferred for its efficiency in mobile development and rapid prototyping). * **Data Storage:** A robust system for saving player progress locally and potentially to the cloud to prevent data loss. --- ### Monetization Model * **In-App Purchases (IAP):** * **Premium Currency:** Sales of a premium currency that can be used for instant upgrades, resource packs, or special bundles. * **Boosters:** Temporary buffs (e.g., "2x income for 1 hour," "double offline earnings for 24 hours"). * **Cosmetic Items:** (If applicable to the theme) Visual customizations that do not affect gameplay balance. * **"No Ads" Purchase:** An option to remove all non-rewarded ads. * **Rewarded Video Ads:** Optional ads that players can watch for direct bonuses (e.g., instant resource boosts, extra offline earnings, temporary power-ups). --- ### Deliverables * A concise Game Design Document (GDD) outlining core features, upgrade trees, and economy. * All necessary art assets (tap elements, upgrade icons, background elements, UI components). * A fully functional, stable, and optimized game build for both iOS and Android. ---
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var Generator = Container.expand(function (type, baseCost, baseIncome) { var self = Container.call(this); self.type = type; self.baseCost = baseCost; self.baseIncome = baseIncome; self.level = 0; self.lastIncomeTime = Date.now(); // Create visual representation var visual = self.attachAsset(type, { anchorX: 0.5, anchorY: 0.5 }); // Add level text self.levelText = new Text2('Lv.0', { size: 40, fill: 0xFFFFFF }); self.levelText.anchor.set(0.5, 0); self.levelText.x = 0; self.levelText.y = visual.height / 2 + 10; self.addChild(self.levelText); self.getCost = function () { return Math.floor(self.baseCost * Math.pow(1.15, self.level)); }; self.getIncome = function () { return self.baseIncome * self.level; }; self.upgrade = function () { self.level++; self.levelText.setText('Lv.' + self.level); LK.getSound('upgrade').play(); }; self.generateIncome = function () { if (self.level > 0) { var now = Date.now(); var timeDiff = (now - self.lastIncomeTime) / 1000; // Convert to seconds var income = self.getIncome() * timeDiff; self.lastIncomeTime = now; return income; } return 0; }; return self; }); var UpgradeButton = Container.expand(function (text, cost, onPurchase, isRepeatable) { var self = Container.call(this); self.cost = cost; self.onPurchase = onPurchase; self.purchased = false; self.isRepeatable = isRepeatable || false; self.baseText = text; // Background var bg = LK.getAsset('box', { width: 400, height: 80, color: 0x2E8B57, shape: 'box', anchorX: 0.5, anchorY: 0.5 }); self.addChild(bg); // Text self.buttonText = new Text2(text + ' - $' + formatNumber(cost), { size: 35, fill: 0xFFFFFF }); self.buttonText.anchor.set(0.5, 0.5); self.addChild(self.buttonText); self.down = function (x, y, obj) { if (!self.purchased && currency >= self.cost) { currency -= self.cost; if (self.isRepeatable) { self.onPurchase(); } else { self.purchased = true; self.onPurchase(); self.buttonText.setText(self.baseText + ' - PURCHASED'); bg.tint = 0x666666; } LK.getSound('purchase').play(); updateUI(); } }; self.updateAffordability = function () { if (!self.purchased) { if (currency >= self.cost) { bg.tint = 0x2E8B57; // Green - affordable } else { bg.tint = 0x8B0000; // Dark red - not affordable } } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x1E1E1E }); /**** * Game Code ****/ // Create gradient background for business empire theme var backgroundGradient = LK.getAsset('box', { width: 2048, height: 2732, color: 0x1a1a2e, shape: 'box', anchorX: 0, anchorY: 0, x: 0, y: 0 }); game.addChild(backgroundGradient); // Add subtle pattern overlay var patternOverlay = LK.getAsset('box', { width: 2048, height: 2732, color: 0x16213e, shape: 'box', anchorX: 0, anchorY: 0, x: 0, y: 0 }); patternOverlay.alpha = 0.3; game.addChild(patternOverlay); // Add golden accent elements for empire feel var topAccent = LK.getAsset('box', { width: 2048, height: 8, color: 0xFFD700, shape: 'box', anchorX: 0, anchorY: 0, x: 0, y: 0 }); game.addChild(topAccent); var bottomAccent = LK.getAsset('box', { width: 2048, height: 8, color: 0xFFD700, shape: 'box', anchorX: 0, anchorY: 0, x: 0, y: 2724 }); game.addChild(bottomAccent); // Game state variables var currency = storage.currency || 0; var tapPower = storage.tapPower || 1; var totalEarned = storage.totalEarned || 0; var prestigePoints = storage.prestigePoints || 0; var tapUpgradePurchases = storage.tapUpgradePurchases || 0; // Generators var generators = []; var factoryGen, workerGen, machineGen; // UI elements var currencyText, tapPowerText, prestigeText; var goldCoin; var upgradeButtons = []; // Initialize main gold coin goldCoin = game.attachAsset('goldCoin', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 800 }); // Coin tap effect goldCoin.down = function (x, y, obj) { // Add currency var earnAmount = tapPower * (1 + prestigePoints * 0.1); currency += earnAmount; totalEarned += earnAmount; // Visual feedback tween(goldCoin, { scaleX: 1.2, scaleY: 1.2 }, { duration: 100, onFinish: function onFinish() { tween(goldCoin, { scaleX: 1, scaleY: 1 }, { duration: 100 }); } }); // Show floating text showFloatingText('+$' + formatNumber(earnAmount), goldCoin.x, goldCoin.y - 50); LK.getSound('coinTap').play(); updateUI(); saveGame(); }; // Initialize generators factoryGen = new Generator('factory', 100, 1); factoryGen.x = 300; factoryGen.y = 1400; game.addChild(factoryGen); generators.push(factoryGen); workerGen = new Generator('worker', 1000, 10); workerGen.x = 1024; workerGen.y = 1400; game.addChild(workerGen); generators.push(workerGen); machineGen = new Generator('machine', 10000, 100); machineGen.x = 1748; machineGen.y = 1400; game.addChild(machineGen); generators.push(machineGen); // Add new generator types var officeGen = new Generator('office', 100000, 1000); // Use unique office asset officeGen.x = 300; officeGen.y = 1600; game.addChild(officeGen); generators.push(officeGen); var labGen = new Generator('laboratory', 1000000, 10000); // Use unique laboratory asset labGen.x = 1024; labGen.y = 1600; game.addChild(labGen); generators.push(labGen); var hqGen = new Generator('headquarters', 10000000, 100000); // Use unique headquarters asset hqGen.x = 1748; hqGen.y = 1600; game.addChild(hqGen); generators.push(hqGen); // Load generator levels from storage factoryGen.level = storage.factoryLevel || 0; workerGen.level = storage.workerLevel || 0; machineGen.level = storage.machineLevel || 0; officeGen.level = storage.officeLevel || 0; labGen.level = storage.labLevel || 0; hqGen.level = storage.hqLevel || 0; // Update generator visuals generators.forEach(function (gen) { gen.levelText.setText('Lv.' + gen.level); gen.lastIncomeTime = Date.now(); }); // Generator purchase handlers factoryGen.down = function (x, y, obj) { var cost = factoryGen.getCost(); if (currency >= cost) { currency -= cost; factoryGen.upgrade(); updateUI(); saveGame(); } }; workerGen.down = function (x, y, obj) { var cost = workerGen.getCost(); if (currency >= cost) { currency -= cost; workerGen.upgrade(); updateUI(); saveGame(); } }; machineGen.down = function (x, y, obj) { var cost = machineGen.getCost(); if (currency >= cost) { currency -= cost; machineGen.upgrade(); updateUI(); saveGame(); } }; officeGen.down = function (x, y, obj) { var cost = officeGen.getCost(); if (currency >= cost) { currency -= cost; officeGen.upgrade(); updateUI(); saveGame(); } }; labGen.down = function (x, y, obj) { var cost = labGen.getCost(); if (currency >= cost) { currency -= cost; labGen.upgrade(); updateUI(); saveGame(); } }; hqGen.down = function (x, y, obj) { var cost = hqGen.getCost(); if (currency >= cost) { currency -= cost; hqGen.upgrade(); updateUI(); saveGame(); } }; // UI Setup currencyText = new Text2('$0', { size: 80, fill: 0xFFD700 }); currencyText.anchor.set(0.5, 0); LK.gui.top.addChild(currencyText); currencyText.y = 50; tapPowerText = new Text2('Tap Power: $1', { size: 50, fill: 0xFFFFFF }); tapPowerText.anchor.set(0, 0); tapPowerText.x = 50; tapPowerText.y = 200; game.addChild(tapPowerText); prestigeText = new Text2('Prestige Points: 0', { size: 40, fill: 0xFF69B4 }); prestigeText.anchor.set(1, 0); prestigeText.x = 1998; prestigeText.y = 200; game.addChild(prestigeText); // Generator info texts var factoryInfoText = new Text2('Factory\nCost: $100\nIncome: $1/s', { size: 35, fill: 0xFFFFFF }); factoryInfoText.anchor.set(0.5, 1); factoryInfoText.x = 300; factoryInfoText.y = 1320; game.addChild(factoryInfoText); var workerInfoText = new Text2('Worker\nCost: $1K\nIncome: $10/s', { size: 35, fill: 0xFFFFFF }); workerInfoText.anchor.set(0.5, 1); workerInfoText.x = 1024; workerInfoText.y = 1320; game.addChild(workerInfoText); var machineInfoText = new Text2('Machine\nCost: $10K\nIncome: $100/s', { size: 35, fill: 0xFFFFFF }); machineInfoText.anchor.set(0.5, 1); machineInfoText.x = 1748; machineInfoText.y = 1320; game.addChild(machineInfoText); var officeInfoText = new Text2('Office\nCost: $100K\nIncome: $1K/s', { size: 35, fill: 0xFFFFFF }); officeInfoText.anchor.set(0.5, 1); officeInfoText.x = 300; officeInfoText.y = 1520; game.addChild(officeInfoText); var labInfoText = new Text2('Laboratory\nCost: $1M\nIncome: $10K/s', { size: 35, fill: 0xFFFFFF }); labInfoText.anchor.set(0.5, 1); labInfoText.x = 1024; labInfoText.y = 1520; game.addChild(labInfoText); var hqInfoText = new Text2('Headquarters\nCost: $10M\nIncome: $100K/s', { size: 35, fill: 0xFFFFFF }); hqInfoText.anchor.set(0.5, 1); hqInfoText.x = 1748; hqInfoText.y = 1520; game.addChild(hqInfoText); // Upgrade buttons function getTapUpgradeCost() { return 500 * Math.pow(3, tapUpgradePurchases); } var tapUpgradeBtn = new UpgradeButton('2x Tap Power', getTapUpgradeCost(), function () { tapPower *= 2; tapUpgradePurchases++; // Update button cost and text for next purchase tapUpgradeBtn.cost = getTapUpgradeCost(); tapUpgradeBtn.buttonText.setText('2x Tap Power - $' + formatNumber(tapUpgradeBtn.cost)); var bg = tapUpgradeBtn.children[0]; bg.tint = 0x2E8B57; updateUI(); saveGame(); }, true); tapUpgradeBtn.x = 1024; tapUpgradeBtn.y = 1800; game.addChild(tapUpgradeBtn); upgradeButtons.push(tapUpgradeBtn); // Auto tap upgrade tracking var autoTapUpgradePurchases = storage.autoTapUpgradePurchases || 0; var autoTapRate = storage.autoTapRate || 0; function getAutoTapUpgradeCost() { return 2000 * Math.pow(3, autoTapUpgradePurchases); } var autoTapBtn = new UpgradeButton('Auto Tap (+1/s)', getAutoTapUpgradeCost(), function () { autoTapEnabled = true; autoTapRate++; autoTapUpgradePurchases++; // Update button cost and text for next purchase autoTapBtn.cost = getAutoTapUpgradeCost(); autoTapBtn.buttonText.setText('Auto Tap (+1/s) - $' + formatNumber(autoTapBtn.cost)); var bg = autoTapBtn.children[0]; bg.tint = 0x2E8B57; updateUI(); saveGame(); }, true); autoTapBtn.x = 1024; autoTapBtn.y = 1900; game.addChild(autoTapBtn); upgradeButtons.push(autoTapBtn); // Global multiplier upgrades var globalMultiplierUpgrades = storage.globalMultiplierUpgrades || 0; function getGlobalMultiplierCost() { return 50000 * Math.pow(5, globalMultiplierUpgrades); } var globalMultiplierBtn = new UpgradeButton('2x All Income', getGlobalMultiplierCost(), function () { globalMultiplierUpgrades++; globalMultiplierBtn.cost = getGlobalMultiplierCost(); globalMultiplierBtn.buttonText.setText('2x All Income - $' + formatNumber(globalMultiplierBtn.cost)); var bg = globalMultiplierBtn.children[0]; bg.tint = 0x2E8B57; updateUI(); saveGame(); }, true); globalMultiplierBtn.x = 512; globalMultiplierBtn.y = 2000; game.addChild(globalMultiplierBtn); upgradeButtons.push(globalMultiplierBtn); // Efficiency upgrades var efficiencyUpgrades = storage.efficiencyUpgrades || 0; function getEfficiencyUpgradeCost() { return 25000 * Math.pow(4, efficiencyUpgrades); } var efficiencyBtn = new UpgradeButton('Generator Efficiency', getEfficiencyUpgradeCost(), function () { efficiencyUpgrades++; efficiencyBtn.cost = getEfficiencyUpgradeCost(); efficiencyBtn.buttonText.setText('Generator Efficiency - $' + formatNumber(efficiencyBtn.cost)); var bg = efficiencyBtn.children[0]; bg.tint = 0x2E8B57; updateUI(); saveGame(); }, true); efficiencyBtn.x = 1536; efficiencyBtn.y = 2000; game.addChild(efficiencyBtn); upgradeButtons.push(efficiencyBtn); // Prestige button var prestigeBtn = new UpgradeButton('PRESTIGE (+1 PP)', 1000000, function () { prestige(); }); prestigeBtn.x = 1024; prestigeBtn.y = 2000; game.addChild(prestigeBtn); // Auto tap var autoTapEnabled = storage.autoTapEnabled || false; var autoTapTimer = 0; // Floating text system var floatingTexts = []; function showFloatingText(text, x, y) { var floatingText = new Text2(text, { size: 60, fill: 0xFFD700 }); floatingText.anchor.set(0.5, 0.5); floatingText.x = x; floatingText.y = y; floatingText.alpha = 1; 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 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 Math.floor(num).toString(); } function updateUI() { currencyText.setText('$' + formatNumber(currency)); tapPowerText.setText('Tap Power: $' + formatNumber(tapPower)); prestigeText.setText('Prestige Points: ' + prestigePoints); // Update generator info factoryInfoText.setText('Factory (Lv.' + factoryGen.level + ')\nCost: $' + formatNumber(factoryGen.getCost()) + '\nIncome: $' + formatNumber(factoryGen.getIncome()) + '/s'); workerInfoText.setText('Worker (Lv.' + workerGen.level + ')\nCost: $' + formatNumber(workerGen.getCost()) + '\nIncome: $' + formatNumber(workerGen.getIncome()) + '/s'); machineInfoText.setText('Machine (Lv.' + machineGen.level + ')\nCost: $' + formatNumber(machineGen.getCost()) + '\nIncome: $' + formatNumber(machineGen.getIncome()) + '/s'); officeInfoText.setText('Office (Lv.' + officeGen.level + ')\nCost: $' + formatNumber(officeGen.getCost()) + '\nIncome: $' + formatNumber(officeGen.getIncome()) + '/s'); labInfoText.setText('Laboratory (Lv.' + labGen.level + ')\nCost: $' + formatNumber(labGen.getCost()) + '\nIncome: $' + formatNumber(labGen.getIncome()) + '/s'); hqInfoText.setText('Headquarters (Lv.' + hqGen.level + ')\nCost: $' + formatNumber(hqGen.getCost()) + '\nIncome: $' + formatNumber(hqGen.getIncome()) + '/s'); // Update upgrade button affordability upgradeButtons.forEach(function (btn) { btn.updateAffordability(); }); // Update prestige button if (totalEarned >= 1000000) { prestigeBtn.updateAffordability(); } } function saveGame() { storage.currency = currency; storage.tapPower = tapPower; storage.totalEarned = totalEarned; storage.prestigePoints = prestigePoints; storage.factoryLevel = factoryGen.level; storage.workerLevel = workerGen.level; storage.machineLevel = machineGen.level; storage.officeLevel = officeGen.level; storage.labLevel = labGen.level; storage.hqLevel = hqGen.level; storage.autoTapEnabled = autoTapEnabled; storage.tapUpgradePurchases = tapUpgradePurchases; storage.autoTapUpgradePurchases = autoTapUpgradePurchases; storage.autoTapRate = autoTapRate; storage.globalMultiplierUpgrades = globalMultiplierUpgrades; storage.efficiencyUpgrades = efficiencyUpgrades; } function prestige() { if (totalEarned >= 1000000) { prestigePoints++; currency = 0; tapPower = 1; totalEarned = 0; tapUpgradePurchases = 0; autoTapUpgradePurchases = 0; autoTapRate = 0; globalMultiplierUpgrades = 0; efficiencyUpgrades = 0; // Reset generators generators.forEach(function (gen) { gen.level = 0; gen.levelText.setText('Lv.0'); }); // Reset upgrades upgradeButtons.forEach(function (btn) { btn.purchased = false; if (btn === tapUpgradeBtn) { btn.cost = getTapUpgradeCost(); btn.buttonText.setText('2x Tap Power - $' + formatNumber(btn.cost)); } else if (btn === autoTapBtn) { btn.cost = getAutoTapUpgradeCost(); btn.buttonText.setText('Auto Tap (+1/s) - $' + formatNumber(btn.cost)); } else if (!btn.isRepeatable) { btn.buttonText.setText(btn.baseText + ' - $' + formatNumber(btn.cost)); } }); autoTapEnabled = false; updateUI(); saveGame(); showFloatingText('PRESTIGE! +1 PP', 1024, 1366); } } // Handle offline earnings var lastSaveTime = storage.lastSaveTime || Date.now(); var offlineTime = (Date.now() - lastSaveTime) / 1000; // seconds if (offlineTime > 60) { // Only if offline for more than 1 minute var offlineEarnings = 0; generators.forEach(function (gen) { offlineEarnings += gen.getIncome() * Math.min(offlineTime, 3600); // Cap at 1 hour }); if (offlineEarnings > 0) { currency += offlineEarnings; totalEarned += offlineEarnings; showFloatingText('Offline Earnings: +$' + formatNumber(offlineEarnings), 1024, 600); } } // Initial UI update updateUI(); // Game loop game.update = function () { // Generate passive income generators.forEach(function (gen) { var income = gen.generateIncome(); if (income > 0) { // Apply global multipliers and efficiency bonuses var globalMultiplier = Math.pow(2, globalMultiplierUpgrades); var efficiencyMultiplier = 1 + efficiencyUpgrades * 0.25; var prestigeMultiplier = 1 + prestigePoints * 0.1; var finalIncome = income * globalMultiplier * efficiencyMultiplier * prestigeMultiplier; currency += finalIncome; totalEarned += finalIncome; } }); // Auto tap if (autoTapEnabled && autoTapRate > 0) { autoTapTimer++; if (autoTapTimer >= Math.floor(60 / autoTapRate)) { // Frequency based on auto tap rate var earnAmount = tapPower * (1 + prestigePoints * 0.1); currency += earnAmount; totalEarned += earnAmount; autoTapTimer = 0; } } // Update UI every 30 frames (twice per second) if (LK.ticks % 30 === 0) { updateUI(); } // Save game every 5 seconds if (LK.ticks % 300 === 0) { storage.lastSaveTime = Date.now(); saveGame(); } };
===================================================================
--- original.js
+++ change.js
@@ -336,49 +336,49 @@
fill: 0xFFFFFF
});
factoryInfoText.anchor.set(0.5, 1);
factoryInfoText.x = 300;
-factoryInfoText.y = 1350;
+factoryInfoText.y = 1320;
game.addChild(factoryInfoText);
var workerInfoText = new Text2('Worker\nCost: $1K\nIncome: $10/s', {
size: 35,
fill: 0xFFFFFF
});
workerInfoText.anchor.set(0.5, 1);
workerInfoText.x = 1024;
-workerInfoText.y = 1350;
+workerInfoText.y = 1320;
game.addChild(workerInfoText);
var machineInfoText = new Text2('Machine\nCost: $10K\nIncome: $100/s', {
size: 35,
fill: 0xFFFFFF
});
machineInfoText.anchor.set(0.5, 1);
machineInfoText.x = 1748;
-machineInfoText.y = 1350;
+machineInfoText.y = 1320;
game.addChild(machineInfoText);
var officeInfoText = new Text2('Office\nCost: $100K\nIncome: $1K/s', {
size: 35,
fill: 0xFFFFFF
});
officeInfoText.anchor.set(0.5, 1);
officeInfoText.x = 300;
-officeInfoText.y = 1550;
+officeInfoText.y = 1520;
game.addChild(officeInfoText);
var labInfoText = new Text2('Laboratory\nCost: $1M\nIncome: $10K/s', {
size: 35,
fill: 0xFFFFFF
});
labInfoText.anchor.set(0.5, 1);
labInfoText.x = 1024;
-labInfoText.y = 1550;
+labInfoText.y = 1520;
game.addChild(labInfoText);
var hqInfoText = new Text2('Headquarters\nCost: $10M\nIncome: $100K/s', {
size: 35,
fill: 0xFFFFFF
});
hqInfoText.anchor.set(0.5, 1);
hqInfoText.x = 1748;
-hqInfoText.y = 1550;
+hqInfoText.y = 1520;
game.addChild(hqInfoText);
// Upgrade buttons
function getTapUpgradeCost() {
return 500 * Math.pow(3, tapUpgradePurchases);
Coin. In-Game asset. 2d. High contrast. No shadows
Factory. In-Game asset. 2d. High contrast. No shadows
Worker. In-Game asset. 2d. High contrast. No shadows
Machine. In-Game asset. 2d. High contrast. No shadows
Headquarters. In-Game asset. 2d. High contrast. No shadows
Laboratuvar. In-Game asset. 2d. High contrast. No shadows
Ofis. In-Game asset. 2d. High contrast. No shadows
Luxury car. In-Game asset. 2d. High contrast. No shadows