User prompt
Change the name of the 3st stand to motor yıkama
User prompt
Change the name of the 2st stand to kwzx10r
User prompt
Change the name of the 1st stand to hawli doruk
User prompt
reset
User prompt
son eklentiyi kaldır
User prompt
game a resetü
User prompt
Change the name of the 1st stand to kwzx10r
User prompt
son eklentiyi kaldır
User prompt
Change the name of the 1st stand to candy stand
Initial prompt
Copy Idle Tycoon: Capitalist Clicker
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
money: 0,
businesses: {},
lastTick: 0
});
/****
* Classes
****/
// Business class: represents a single business row
var Business = Container.expand(function () {
var self = Container.call(this);
// Properties (set after creation)
self.bizId = null;
self.bizData = null;
self.index = 0;
// UI elements
var icon = null;
var nameTxt = null;
var levelTxt = null;
var costTxt = null;
var profitTxt = null;
var timerBar = null;
var upgradeBtn = null;
var managerBtn = null;
// State
self.timer = 0; // ms left for current run
self.running = false;
// Setup method (called after creation)
self.setup = function (bizId, bizData, index) {
self.bizId = bizId;
self.bizData = bizData;
self.index = index;
// Icon
icon = self.attachAsset(bizData.asset, {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: 0
});
// Name
nameTxt = new Text2(bizData.name, {
size: 48,
fill: "#222",
font: "'GillSans-Bold', Impact, 'Arial Black', Tahoma"
});
nameTxt.anchor.set(0, 0.5);
nameTxt.x = 140;
nameTxt.y = 0;
self.addChild(nameTxt);
// Level
levelTxt = new Text2("Lvl 0", {
size: 40,
fill: "#444",
font: "'GillSans-Bold', Impact, 'Arial Black', Tahoma"
});
levelTxt.anchor.set(0, 0.5);
levelTxt.x = 140;
levelTxt.y = 50;
self.addChild(levelTxt);
// Cost
costTxt = new Text2("Buy: $0", {
size: 36,
fill: "#666",
font: "'GillSans-Bold', Impact, 'Arial Black', Tahoma"
});
costTxt.anchor.set(0, 0.5);
costTxt.x = 140;
costTxt.y = -50;
self.addChild(costTxt);
// Profit
profitTxt = new Text2("+$0", {
size: 48,
fill: 0x008000,
font: "'GillSans-Bold', Impact, 'Arial Black', Tahoma"
});
profitTxt.anchor.set(1, 0.5);
profitTxt.x = 900;
profitTxt.y = 0;
self.addChild(profitTxt);
// Timer bar background (shows total progress area)
var timerBarBg = self.attachAsset('slider_sprite', {
anchorX: 0,
anchorY: 0.5,
x: 140,
y: 80,
width: 320,
height: 24,
// match new thinner asset height for best appearance
tint: 0x000000 // transparent black
});
timerBarBg.alpha = 0.5;
self.addChild(timerBarBg);
// Timer bar (progress fill)
timerBar = self.attachAsset('slider_sprite', {
anchorX: 0,
anchorY: 0.5,
x: 140,
y: 80,
width: 0,
height: 24 // match new thinner asset height for best appearance
});
timerBar.alpha = 0.5;
// Upgrade button
upgradeBtn = self.attachAsset('upgrade_btn', {
anchorX: 0.5,
anchorY: 0.5,
x: 1100,
y: 0
});
upgradeBtn.interactive = true;
upgradeBtn.down = function (x, y, obj) {
if (self.down) self.down(x, y, upgradeBtn);
};
// Removed upgradeTxt label
// (Auto/manager button removed)
// Event listeners
self.down = function (x, y, obj) {
// If tap on icon, start business if unlocked
if (self.isUnlocked() && !self.isAuto() && self.timer <= 0) {
self.startRun();
}
// If tap on upgrade button
if (self.isUnlocked() && obj === upgradeBtn && upgradeBtn.alpha >= 1) {
self.tryUpgrade();
}
// (Auto/manager button tap logic removed)
// If tap anywhere on the business row and not unlocked, allow buying
if (!self.isUnlocked()) {
self.tryUpgrade();
}
};
// Update UI
self.refresh();
};
// Is business unlocked?
self.isUnlocked = function () {
return businesses[self.bizId].level > 0;
};
// Is manager hired?
self.isAuto = function () {
return businesses[self.bizId].manager;
};
// Start a run (manual or auto)
self.startRun = function () {
if (!self.isUnlocked()) return;
if (self.timer > 0) return;
self.timer = self.getDuration();
self.running = true;
};
// Try to buy/upgrade
self.tryUpgrade = function () {
// Calculate how many upgrades we can afford with the current multiplier
var maxUpgrades = typeof upgradeMultiplier !== "undefined" ? upgradeMultiplier : 1;
var bought = 0;
for (var i = 0; i < maxUpgrades; ++i) {
var cost = self.getCost();
if (money >= cost && upgradeBtn.alpha >= 1) {
money -= cost;
businesses[self.bizId].level += 1;
bought++;
} else {
break;
}
}
if (bought > 0) {
self.refresh();
updateMoneyUI();
saveGame();
}
};
// Try to hire manager
self.tryHireManager = function () {
var mCost = self.getManagerCost();
if (money >= mCost && !self.isAuto()) {
money -= mCost;
businesses[self.bizId].manager = true;
self.refresh();
updateMoneyUI();
saveGame();
}
};
// Get current cost to buy/upgrade
self.getCost = function () {
var lvl = businesses[self.bizId].level;
return Math.floor(self.bizData.baseCost * Math.pow(self.bizData.costMult, lvl));
};
// Get current profit
self.getProfit = function () {
var lvl = businesses[self.bizId].level;
if (lvl === 0) return 0;
return Math.floor(self.bizData.baseProfit * lvl * Math.pow(1.07, lvl - 1));
};
// Get duration (ms)
self.getDuration = function () {
return self.bizData.baseTime;
};
// Get manager cost
self.getManagerCost = function () {
return self.bizData.managerCost;
};
// Update UI
self.refresh = function () {
var lvl = businesses[self.bizId].level;
var unlocked = lvl > 0;
var profit = self.getProfit();
var cost = self.getCost();
var mCost = self.getManagerCost();
levelTxt.setText("Lvl " + lvl);
costTxt.setText(unlocked ? "Upgrade: $" + formatNum(cost) : "Buy: $" + formatNum(cost));
profitTxt.setText("+$" + formatNum(profit));
profitTxt.alpha = unlocked ? 1 : 0.3;
levelTxt.alpha = unlocked ? 1 : 0.3;
icon.alpha = unlocked ? 1 : 0.3;
// Timer bar
timerBar.width = 320 * (self.timer > 0 ? 1 - self.timer / self.getDuration() : 0);
// Upgrade button
upgradeBtn.alpha = money >= cost ? 1 : 0.5;
// (Auto/manager button UI refresh removed)
};
// Update per tick
self.update = function () {
if (!self.isUnlocked()) {
self.refresh();
return;
}
// Auto-run if manager or level > 1
if ((self.isAuto() || businesses[self.bizId].level > 1) && self.timer <= 0) {
self.startRun();
// Ensure running is set so update continues ticking
self.running = true;
}
// Progress timer
if (self.timer > 0) {
self.timer -= 1000 / 60;
if (self.timer <= 0) {
self.timer = 0;
// Award profit
var profit = self.getProfit();
money += profit;
updateMoneyUI();
saveGame();
self.refresh();
// Money particle effect: spawn several particles at the top center
if (typeof moneyParticles !== "undefined") {
var particleCount = Math.min(10, 2 + Math.floor(profit / 10));
for (var i = 0; i < particleCount; ++i) {
var p = new MoneyParticle();
// Spawn at random X across the top of the screen
p.x = 100 + Math.random() * (2048 - 200); // avoid extreme edges
p.y = 120 + Math.random() * 40;
if (typeof game !== "undefined") game.addChild(p);
moneyParticles.push(p);
}
}
// If auto, start again next frame
}
self.refresh();
}
};
return self;
});
// MoneyParticle class: represents a single falling money particle
var MoneyParticle = Container.expand(function () {
var self = Container.call(this);
// Use the 'money_bg' asset as a simple money particle (could be replaced with a coin image if available)
var particle = self.attachAsset('money_bg', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.7,
scaleY: 0.7,
x: 0,
y: 0,
alpha: 0.7 // set transparency for money particle image
});
// Removed dollar text from MoneyParticle
// Give each particle a random burst direction and distance
var burstAngle = Math.random() * Math.PI * 2;
var burstDistance = 80 + Math.random() * 40;
self.vx = Math.cos(burstAngle) * burstDistance / 40;
self.vy = Math.sin(burstAngle) * burstDistance / 40 + 2;
// Add random rotation to the particle
var startRotation = Math.random() * Math.PI * 2;
self.rotation = startRotation;
// Add random delay before burst
self._burstStarted = false;
self._burstDelay = Math.random() * 300; // up to 300ms delay
self._burstTimer = 0;
self._burstLife = 40 + Math.floor(Math.random() * 20);
self._fadeStarted = false;
// Overwrite update to handle movement, fade, and cleanup
self.update = function () {
if (!self._burstStarted) {
self._burstTimer += 1000 / 60;
if (self._burstTimer >= self._burstDelay) {
self._burstStarted = true;
// Start fade out tween after burst starts
tween(self, {
alpha: 0
}, {
duration: self._burstLife * 32,
easing: tween.linear
});
// Animate rotation to a new random value during the burst
var endRotation = startRotation + (Math.random() - 0.5) * Math.PI * 2;
tween(self, {
rotation: endRotation
}, {
duration: self._burstLife * 16,
easing: tween.linear
});
} else {
return;
}
}
self.x += self.vx;
self.y += self.vy;
self._burstLife--;
if (self._burstLife <= 0) {
if (self.parent) self.parent.removeChild(self);
if (typeof moneyParticles !== "undefined") {
var idx = moneyParticles.indexOf(self);
if (idx !== -1) moneyParticles.splice(idx, 1);
}
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87ceeb // Changed to a sky blue color
});
/****
* Game Code
****/
// --- Game Data ---
// Business icons (simple colored boxes for MVP)
// Reference for business row background
// Reference: To change the slider sprite, update the asset below with your own image id and dimensions.
var businessList = [{
id: 'lemon',
name: 'kwzx10r',
asset: 'biz_lemon',
baseCost: 4,
costMult: 1.07,
baseProfit: 1,
baseTime: 1000,
managerCost: 100
}, {
id: 'newspaper',
name: 'Newspaper Delivery',
asset: 'biz_newspaper',
baseCost: 60,
costMult: 1.15,
baseProfit: 8,
baseTime: 3000,
managerCost: 500
}, {
id: 'carwash',
name: 'Car Wash',
asset: 'biz_carwash',
baseCost: 720,
costMult: 1.14,
baseProfit: 64,
baseTime: 6000,
managerCost: 3000
}, {
id: 'pizza',
name: 'Pizza Delivery',
asset: 'biz_pizza',
baseCost: 8640,
costMult: 1.13,
baseProfit: 576,
baseTime: 12000,
managerCost: 10000
}, {
id: 'movie',
name: 'Movie Studio',
asset: 'biz_movie',
baseCost: 103680,
costMult: 1.12,
baseProfit: 5184,
baseTime: 24000,
managerCost: 100000
}, {
id: 'bank',
name: 'Bank',
asset: 'biz_bank',
baseCost: 1244160,
costMult: 1.11,
baseProfit: 46656,
baseTime: 48000,
managerCost: 500000
}, {
id: 'oil',
name: 'Oil Company',
asset: 'biz_oil',
baseCost: 14929920,
costMult: 1.10,
baseProfit: 419904,
baseTime: 96000,
managerCost: 1200000
},
// New business types
{
id: 'icecream',
name: 'Ice Cream Truck',
asset: 'biz_lemon',
// Use lemon asset as placeholder, update with new asset if available
baseCost: 20000000,
costMult: 1.09,
baseProfit: 800000,
baseTime: 120000,
managerCost: 2500000
}];
// --- State ---
var money = 0;
var businesses = {};
var businessObjs = [];
var lastTick = 0;
// --- Money Particle System ---
var moneyParticles = [];
// --- UI Elements ---
var moneyTxt = null;
var tapBtn = null;
var tapBtnTxt = null;
// --- Utility Functions ---
function formatNum(n) {
if (n < 1000) return "" + n;
var units = ['K', 'M', 'B', 'T', 'Qa', 'Qi', 'Sx', 'Sp', 'Oc', 'No', 'Dc'];
var u = -1;
while (n >= 1000 && u < units.length - 1) {
n /= 1000;
u++;
}
return n.toFixed(2) + units[u];
}
function updateMoneyUI() {
moneyTxt.setText("$" + formatNum(money));
}
// --- Save/Load ---
function saveGame() {
storage.money = money;
storage.businesses = {};
for (var i = 0; i < businessList.length; ++i) {
var id = businessList[i].id;
storage.businesses[id + "_level"] = businesses[id].level;
storage.businesses[id + "_manager"] = businesses[id].manager;
}
storage.lastTick = Date.now();
}
function loadGame() {
money = storage.money || 0;
businesses = {};
for (var i = 0; i < businessList.length; ++i) {
var id = businessList[i].id;
// Start with 1 lemonade stand
businesses[id] = {
level: id === 'lemon' ? 1 : 0,
manager: false
};
if (storage.businesses) {
if (typeof storage.businesses[id + "_level"] !== "undefined") {
businesses[id].level = storage.businesses[id + "_level"];
}
if (typeof storage.businesses[id + "_manager"] !== "undefined") {
businesses[id].manager = !!storage.businesses[id + "_manager"];
}
}
}
lastTick = storage.lastTick || Date.now();
}
// --- Offline Progress ---
function applyOfflineEarnings() {
var now = Date.now();
var dt = now - lastTick;
if (dt < 1000) return;
var total = 0;
for (var i = 0; i < businessList.length; ++i) {
var biz = businessList[i];
var b = businesses[biz.id];
if (b.level > 0 && b.manager) {
var cycles = Math.floor(dt / biz.baseTime);
var profit = Math.floor(biz.baseProfit * b.level * Math.pow(1.07, b.level - 1));
total += cycles * profit;
}
}
if (total > 0) {
money += total;
updateMoneyUI();
}
}
// --- Game Setup ---
// Add background image behind all game elements
var bgImage = LK.getAsset('bg_main', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2,
scaleX: 1,
scaleY: 1
});
game.addChild(bgImage);
// (Removed bottom overlay image that hid overflowing businesses)
// No overlay is added, so businesses can overflow the screen as needed.
function setupUI() {
// Add total money text to the top center of the GUI
moneyTxt = new Text2("$0", {
size: 90,
fill: "#222",
font: "'GillSans-Bold', Impact, 'Arial Black', Tahoma"
});
moneyTxt.anchor.set(0.5, 0);
moneyTxt.y = 40; // Move the money text a little bit down from the top
LK.gui.top.addChild(moneyTxt);
// Update the money text with the current money value
updateMoneyUI = function updateMoneyUI() {
if (moneyTxt) {
moneyTxt.setText("$" + formatNum(money));
}
};
// Tap button (big, bottom right)
tapBtn = LK.getAsset('tap_btn', {
anchorX: 1,
anchorY: 1,
// bottom right of the screen
x: 2048 - 80,
y: 2732 - 80,
scaleX: 1.5,
scaleY: 1.5
});
tapBtn.interactive = true;
// Removed tapBtnTxt label
tapBtn.down = function (x, y, obj) {
if (game.down) game.down(x, y, tapBtn);
};
game.addChild(tapBtn); // Move to front after all other addChild calls
tapBtn.zIndex = 9999; // Defensive: ensure it's on top if zIndex is supported
// Business rows
// Slideable area for businesses
// ... later in setupUI:
var businessScrollArea = new Container();
businessScrollArea.x = 0;
businessScrollArea.y = 0;
game.addChild(businessScrollArea);
// (Removed mask area and mask logic so businesses can overflow the screen)
var startY = 500;
var gapY = 260; // Further increased gap for even more space between businesses
for (var i = 0; i < businessList.length; ++i) {
var biz = businessList[i];
// Add background image for business row
var bizRowBg = LK.getAsset('biz_row_bg', {
anchorX: 0,
anchorY: 0.5,
x: 20,
// squish more to the left
y: startY + i * gapY,
scaleX: 0.7,
// squish width to 70%
scaleY: 1
});
bizRowBg.alpha = 0.5; // Set transparency for business row background
businessScrollArea.addChild(bizRowBg);
// Create business row on top of background
var bizObj = new Business();
bizObj.setup(biz.id, biz, i);
bizObj.x = 200;
bizObj.y = startY + i * gapY;
businessScrollArea.addChild(bizObj);
businessObjs.push(bizObj);
}
// --- Slide/scroll logic for businessScrollArea ---
var scrollY = 0;
var scrollStartY = 0;
var scrollTouchStartY = 0;
var isScrolling = false;
var minScrollY = Math.min(0, 2732 - (startY + businessList.length * gapY + 200));
var maxScrollY = 0;
// Touch/mouse down on scroll area
game.down = function (origDown) {
return function (x, y, obj) {
// If tap is inside the business area (not tapBtn), start scroll
if (y > startY - gapY && y < 2732 - 400 && obj !== tapBtn) {
isScrolling = true;
scrollTouchStartY = y;
scrollStartY = scrollY;
}
// Pass through to original tap logic (for tapBtn, etc)
if (typeof origDown === "function") origDown(x, y, obj);
};
}(game.down);
// Touch/mouse move
game.move = function (x, y, obj) {
if (isScrolling) {
var dy = y - scrollTouchStartY;
scrollY = scrollStartY + dy;
// Clamp scroll
if (scrollY > maxScrollY) scrollY = maxScrollY;
if (scrollY < minScrollY) scrollY = minScrollY;
businessScrollArea.y = scrollY;
}
};
// Touch/mouse up
game.up = function (x, y, obj) {
isScrolling = false;
};
}
// (Removed code that added bottomOverlay in front of everything)
// No overlay is added, so businesses can overflow the screen as needed.
// --- Upgrade Multiplier Buttons ---
var upgradeMultipliers = [1, 10, 100];
var upgradeMultiplier = 1; // Default to x1
var upgradeBtns = [];
var upgradeBtnLabels = ["x1", "x10", "x100"];
var btnStartY = 700;
var btnGapY = 180;
for (var i = 0; i < upgradeMultipliers.length; ++i) {
var btn = LK.getAsset('manager_btn', {
anchorX: 1,
anchorY: 0.5,
x: 2048 - 60,
y: btnStartY + i * btnGapY,
width: 220,
height: 120
});
btn.interactive = true;
// Add label
var btnTxt = new Text2(upgradeBtnLabels[i], {
size: 60,
fill: "#fff",
font: "'GillSans-Bold', Impact, 'Arial Black', Tahoma"
});
btnTxt.anchor.set(0.5, 0.5);
btnTxt.x = btn.width / 2;
btnTxt.y = btn.height / 2;
btn.addChild(btnTxt);
// Highlight selected
btn.alpha = i === 0 ? 1 : 0.6;
// Closure for index
(function (idx, btnRef) {
btn.down = function (x, y, obj) {
upgradeMultiplier = upgradeMultipliers[idx];
// Update button alphas for selection
for (var j = 0; j < upgradeBtns.length; ++j) {
upgradeBtns[j].alpha = j === idx ? 1 : 0.6;
}
};
})(i, btn);
LK.gui.right.addChild(btn);
upgradeBtns.push(btn);
}
// --- Tap Handler ---
game.down = function (x, y, obj) {
// Tap on tapBtn
if (obj === tapBtn || obj === tapBtnTxt) {
var tapVal = 1 + Math.floor(businesses['lemon'].level / 10);
money += tapVal;
updateMoneyUI();
saveGame();
// Money particle effect: spawn several particles at the top center
var particleCount = Math.min(10, 2 + Math.floor(tapVal / 5));
for (var i = 0; i < particleCount; ++i) {
var p = new MoneyParticle();
// Spawn at random X across the top of the screen
p.x = 100 + Math.random() * (2048 - 200); // avoid extreme edges
p.y = 120 + Math.random() * 40;
game.addChild(p);
moneyParticles.push(p);
}
// Animate tapBtn
tween(tapBtn, {
scaleX: 1.3,
scaleY: 1.3
}, {
duration: 80,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(tapBtn, {
scaleX: 1.5,
scaleY: 1.5
}, {
duration: 80,
easing: tween.easeIn
});
}
});
}
};
// --- Game Update ---
game.update = function () {
// Update all businesses
for (var i = 0; i < businessObjs.length; ++i) {
if (!businessObjs[i]) {
continue;
}
var bizObj = businessObjs[i];
if (typeof bizObj.update === "function") {
bizObj.update();
}
// (Removed mask/unmask logic so businesses can overflow the screen)
}
// Update and animate money particles
for (var i = moneyParticles.length - 1; i >= 0; --i) {
moneyParticles[i].update();
}
};
// --- Init ---
loadGame();
applyOfflineEarnings();
setupUI();
updateMoneyUI();
// --- Save every 5 seconds ---
LK.setInterval(function () {
saveGame();
}, 5000);
;
// --- Game Reset ---
function resetGame() {
// Reset money and businesses
money = 0;
businesses = {};
for (var i = 0; i < businessList.length; ++i) {
var id = businessList[i].id;
businesses[id] = {
level: id === 'lemon' ? 1 : 0,
manager: false
};
}
// Remove all business objects from the scroll area
for (var i = 0; i < businessObjs.length; ++i) {
if (businessObjs[i] && businessObjs[i].parent) {
businessObjs[i].parent.removeChild(businessObjs[i]);
}
}
businessObjs = [];
// Remove all money particles
for (var i = moneyParticles.length - 1; i >= 0; --i) {
if (moneyParticles[i] && moneyParticles[i].parent) {
moneyParticles[i].parent.removeChild(moneyParticles[i]);
}
moneyParticles.splice(i, 1);
}
// Re-setup UI and update
setupUI();
updateMoneyUI();
saveGame();
} ===================================================================
--- original.js
+++ change.js
@@ -419,18 +419,8 @@
costMult: 1.09,
baseProfit: 800000,
baseTime: 120000,
managerCost: 2500000
-}, {
- id: 'themepark',
- name: 'Theme Park',
- asset: 'biz_movie',
- // Use movie asset as placeholder, update with new asset if available
- baseCost: 50000000,
- costMult: 1.08,
- baseProfit: 2000000,
- baseTime: 180000,
- managerCost: 10000000
}];
// --- State ---
var money = 0;
var businesses = {};
pizza store. In-Game asset. 2d. High contrast. No shadows
movie theater. In-Game asset. 2d. High contrast. No shadows
bank. In-Game asset. 2d. High contrast. No shadows
oil company. In-Game asset. 2d. High contrast. No shadows
a sunny place where the mountains are sweet. In-Game asset. 2d. High contrast. No shadows
dollar paper is sweet In-Game asset. 2d. High contrast. No shadows
button when clicked earn gold is sweeti. money logo should look like candy. In-Game asset. 2d. High contrast. No shadows
button upgrade level of business is sweetie In-Game asset. 2d. High contrast. No shadows
engine wash photo. In-Game asset. 2d. High contrast. No shadows