User prompt
Upgrade paneli daha genişlet ve per click artıma buttonu altına per click çapını eklettir ilk 1.5 ile başlasın ve güzel çapana atışı olsun 25 tierden oluşsun ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Per click upgrade fiyat yükleme 10 ile başlamasın 25 ile başlasın ve her 1 tier arttığında *1.5 artsın ve her 10 ve katında *1.7 artsın ve her 25 ve katında *1.85 arttır ve 100 ve katlarında *2 artıs
User prompt
Atık scrap sell küsüratlı bölme de yapabilsin ve cash texttede küsürat gösterilsin
User prompt
Sürüm textti Pre_Alpha 4 yap
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'settingsButton.x = 900;' Line Number: 384
User prompt
Upgrade panel genişlet ve Upgrade açma button sell button click button Settings butonları panelin altında kalsın
User prompt
Tüm değerlerin küsüratlı görünmesini sağlar fiyat textti dahil olanak üzere magnet textti
User prompt
Per click upgrade tier 400 den 800 e çıkar
User prompt
Scrap da aynı işlemi uygula
User prompt
İşlemi uygula
User prompt
Per click artışı her yükseltmede ×1.25 kadar artsın 10 ve 10 fazlasında 1.30 ile çalışsın 25 ve katlarında 1.35 ile çarpışın 100 ve katlarında 1.5 ile çalışsın per click ve fiyat 1.5 10 ve katı da 1.65 25 ve katına 1.75 100 ve katında 2 ile çapışsın
User prompt
Per click upgrade yapıdında 2 ve 2 katları ile çarpılırsın daha çeşitli per click ve fiyat artışı olsun
User prompt
Sürüm textti Pre_Alpha 3 olarak deşiştir
User prompt
Save system paneldeki 4 delete butonuna da silemk istiyormusunuz yes no diye sorsun no denirse silme yes denirse sil ve silinsin mi diye sorulan panelde arkadaki save load delete click button scrap sell upgrade Settings buttonarına tıklanamasın
User prompt
Save system panel açıkken click button scrap sell upgrade ve settings açma buttonlarıda tıklanamaz olsun
User prompt
Eyer upgrade panel açılsa settings panel açma buttonu da tıklanmaz olsun be settings panelde açıkken, save system panel ve hard reset panelindeki yes no sorarken click button sell button upgrade button ve settings açma butonları tıklanamza yap
User prompt
Sayı kısacası parante içi olan harler ilk 4 harf olsun yani (K) (M) (B) (T) a-z ve A-Z parantezsiz olsun
User prompt
Upgrade paneldeki per click yükselmesini 200 den 400 e çıkar ve tier 400 e kadar buttonun tıklanabilirliğini düzenle
User prompt
Upgrade panel açıkken scrap sell ve click buttonu tıklanamaz yap
User prompt
Textlerin her 1 sv bir güncellemesini ve xp verilme şansını yükselt ve per click upgrade yapılınca xp verilmesini sağla
User prompt
Sürüm textti Pre_Alpha 2 olarak değiştir
User prompt
Save system paneldeki delete buttoan basılınca empety yazsın ve her 1 sn 1 durumu kaydet delete yapılıp oyundan çık gir yapıldığında eski veri kayıtlı verileri gösteriyor bunu önlemek için delete buttona basınca verilerini silinsin ve enpety olanca eski veriyi yüklemesin ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Click button tıklayınca xp verem şansını düzenle ve xp 1 vermesini sağla ve xp texttin doğru şekilde gösterilmesini sağla
User prompt
Hard resete buttona tıklayınca veriler sıfırlansın mı diye sor yes no diye sor yes derse sıfırla no derse sıfırlama ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Save sistem ve hard reset button arasını aç ve settings penlide genişlet ve upgrade paneline genişlet
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var ClickButton = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('clickButton', {
anchorX: 0.5,
anchorY: 0.5
});
self.down = function (x, y, obj) {
// Check if upgrade panel is open - if so, disable interaction
if (upgradePanel && upgradePanel.visible) {
return;
}
// Check if settings panel is open - if so, disable interaction
if (settingsPanel && settingsPanel.visible) {
return;
}
// Check if save panel is open - if so, disable interaction
if (savePanel && savePanel.visible) {
return;
}
// Check if any confirmation dialog is showing
if (game.children.some(function (child) {
return child instanceof ConfirmationDialog;
})) {
return;
}
// Visual feedback
tween(graphics, {
scaleX: 0.9,
scaleY: 0.9
}, {
duration: 100
});
tween(graphics, {
scaleX: 1.1,
scaleY: 1.1
}, {
duration: 100,
onFinish: function onFinish() {
tween(graphics, {
scaleX: 1,
scaleY: 1
}, {
duration: 100
});
}
});
// Generate scrap
scrap += perClickValue;
totalClicks++;
// Chance for rewards (5% for magnet, 3% for XP)
if (Math.random() < 0.05) {
createMagnetReward();
}
if (Math.random() < 0.15) {
createXPReward();
}
updateUI();
LK.getSound('click').play();
};
return self;
});
var ConfirmationDialog = Container.expand(function (message, onYes, onNo) {
var self = Container.call(this);
// Dialog background
var dialogBg = LK.getAsset('upgradeButton', {
anchorX: 0,
anchorY: 0,
scaleX: 3.0,
scaleY: 3.0
});
dialogBg.tint = 0x222222;
self.addChild(dialogBg);
// Message text
var messageText = new Text2(message, {
size: 60,
fill: 0xFFFFFF
});
messageText.anchor.set(0.5, 0.5);
messageText.x = 600;
messageText.y = 150;
self.addChild(messageText);
// Yes button
var yesButton = new Text2('YES', {
size: 70,
fill: 0x00FF00
});
yesButton.anchor.set(0.5, 0.5);
yesButton.x = 400;
yesButton.y = 250;
self.addChild(yesButton);
// No button
var noButton = new Text2('NO', {
size: 70,
fill: 0xFF0000
});
noButton.anchor.set(0.5, 0.5);
noButton.x = 800;
noButton.y = 250;
self.addChild(noButton);
yesButton.down = function (x, y, obj) {
if (onYes) onYes();
self.destroy();
};
noButton.down = function (x, y, obj) {
if (onNo) onNo();
self.destroy();
};
return self;
});
var FloatingReward = Container.expand(function (type) {
var self = Container.call(this);
var assetName = type === 'magnet' ? 'magnetReward' : 'xpReward';
var graphics = self.attachAsset(assetName, {
anchorX: 0.5,
anchorY: 0.5
});
// Add text to show reward type and value
var rewardText = new Text2('', {
size: 40,
fill: 0xFFFFFF
});
rewardText.anchor.set(0.5, 0.5);
rewardText.y = 60; // Position below the icon
self.addChild(rewardText);
if (type === 'magnet') {
rewardText.setText('MAGNET\n+' + formatNumber(perClickValue * 5));
} else {
rewardText.setText('XP\n+1');
}
self.rewardType = type;
self.lifetime = 0;
self.update = function () {
self.lifetime++;
self.y -= 2; // Float upward
var alphaValue = Math.max(0, 1 - self.lifetime / 120); // Fade out over 2 seconds
self.alpha = alphaValue;
rewardText.alpha = alphaValue; // Make text fade with the reward
// Update text to match current perClickValue for magnet rewards
if (self.rewardType === 'magnet') {
rewardText.setText('MAGNET\n+' + formatNumber(perClickValue * 5));
}
if (self.lifetime > 120) {
self.destroy();
var index = floatingRewards.indexOf(self);
if (index > -1) {
floatingRewards.splice(index, 1);
}
}
};
self.down = function (x, y, obj) {
if (self.rewardType === 'magnet') {
scrap += perClickValue * 5; // Magnet gives 5x click value
magnet++; // Increase magnet count
} else {
xp += 1;
checkLevelUp();
}
LK.getSound('reward').play();
updateUI();
self.destroy();
var index = floatingRewards.indexOf(self);
if (index > -1) {
floatingRewards.splice(index, 1);
}
};
return self;
});
var SavePanel = Container.expand(function () {
var self = Container.call(this);
// Panel background - sized to fit 4 slots properly
var panelBg = LK.getAsset('upgradeButton', {
anchorX: 0,
anchorY: 0,
scaleX: 4.0,
scaleY: 8.0
});
panelBg.tint = 0x222222;
self.addChild(panelBg);
// Title
var titleText = new Text2('SAVE SYSTEM', {
size: 80,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0);
titleText.x = 800;
titleText.y = 50;
self.addChild(titleText);
// Create 4 save slots vertically stacked
for (var i = 0; i < 4; i++) {
createSaveSlot(self, i, 50, 150 + i * 200);
}
return self;
});
var SellButton = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('sellButton', {
anchorX: 0.5,
anchorY: 0.5
});
self.down = function (x, y, obj) {
// Check if upgrade panel is open - if so, disable interaction
if (upgradePanel && upgradePanel.visible) {
return;
}
// Check if settings panel is open - if so, disable interaction
if (settingsPanel && settingsPanel.visible) {
return;
}
// Check if save panel is open - if so, disable interaction
if (savePanel && savePanel.visible) {
return;
}
// Check if any confirmation dialog is showing
if (game.children.some(function (child) {
return child instanceof ConfirmationDialog;
})) {
return;
}
if (scrap >= 2) {
var sellAmount = Math.floor(scrap);
var cashEarned = Math.floor(sellAmount * 0.5);
cash += cashEarned;
scrap = Math.random(); // Leave 0-1 scrap remaining
// Visual feedback
tween(graphics, {
scaleX: 0.9,
scaleY: 0.9
}, {
duration: 150
});
tween(graphics, {
scaleX: 1,
scaleY: 1
}, {
duration: 150
});
updateUI();
LK.getSound('sell').play();
}
};
return self;
});
var UpgradeButton = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('upgradeButton', {
anchorX: 0.5,
anchorY: 0.5
});
self.down = function (x, y, obj) {
// Check if settings panel is open - if so, disable interaction
if (settingsPanel && settingsPanel.visible) {
return;
}
// Check if save panel is open - if so, disable interaction
if (savePanel && savePanel.visible) {
return;
}
// Check if any confirmation dialog is showing
if (game.children.some(function (child) {
return child instanceof ConfirmationDialog;
})) {
return;
}
var upgradeCost = getUpgradeCost();
if (cash >= upgradeCost && upgradeTier < 400) {
cash -= upgradeCost;
upgradeTier++;
perClickValue = getPerClickValue();
// Give XP for upgrading
xp += 5;
checkLevelUp();
// Visual feedback
tween(graphics, {
scaleX: 0.95,
scaleY: 0.95
}, {
duration: 100
});
tween(graphics, {
scaleX: 1,
scaleY: 1
}, {
duration: 100
});
updateUI();
LK.getSound('upgrade').play();
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a1a1a
});
/****
* Game Code
****/
// Game variables - load from storage with defaults
var scrap = storage.scrap || 0;
var cash = storage.cash || 0;
var totalClicks = storage.totalClicks || 0;
var upgradeTier = storage.upgradeTier || 0;
var svLevel = storage.svLevel || 0;
var xp = storage.xp || 0;
var magnet = storage.magnet || 0;
var perClickValue = getPerClickValue();
var floatingRewards = [];
// Game elements
var clickButton = game.addChild(new ClickButton());
clickButton.x = 1024;
clickButton.y = 1200;
// Upgrade panel
var upgradePanel = new Container();
upgradePanel.x = 1024 - 700; // Center horizontally
upgradePanel.y = 1366 - 300; // Center vertically
upgradePanel.visible = false;
game.addChild(upgradePanel);
// Upgrade panel background
var upgradePanelBg = LK.getAsset('upgradeButton', {
anchorX: 0,
anchorY: 0,
scaleX: 3.5,
scaleY: 6.0
});
upgradePanelBg.tint = 0x333333;
upgradePanel.addChild(upgradePanelBg);
// Close button for upgrade panel
var upgradeCloseButton = new Text2('✕', {
size: 100,
fill: 0xFF0000
});
upgradeCloseButton.anchor.set(0.5, 0.5);
upgradeCloseButton.x = 1300;
upgradeCloseButton.y = 80;
upgradePanel.addChild(upgradeCloseButton);
upgradeCloseButton.down = function (x, y, obj) {
upgradePanel.visible = false;
};
var upgradeButton = upgradePanel.addChild(new UpgradeButton());
upgradeButton.x = 700;
upgradeButton.y = 300;
var sellButton = game.addChild(new SellButton());
sellButton.x = 1024;
sellButton.y = 1650;
// UI Text elements
var scrapText = new Text2('Scrap: 0', {
size: 80,
fill: 0xFFFFFF
});
scrapText.anchor.set(0.5, 0);
scrapText.x = 1024;
scrapText.y = 400;
game.addChild(scrapText);
var cashText = new Text2('Cash: $0', {
size: 70,
fill: 0x00FF00
});
cashText.anchor.set(0.5, 0);
cashText.x = 1024;
cashText.y = 480;
game.addChild(cashText);
var levelText = new Text2('SV Level: 0', {
size: 75,
fill: 0xFFFF00
});
levelText.anchor.set(0.5, 0);
levelText.x = 1024;
levelText.y = 560;
game.addChild(levelText);
var xpText = new Text2('XP: 0/100', {
size: 65,
fill: 0xFF00FF
});
xpText.anchor.set(0.5, 0);
xpText.x = 1024;
xpText.y = 640;
game.addChild(xpText);
var clickValueText = new Text2('Per Click: 1', {
size: 70,
fill: 0x00FFFF
});
clickValueText.anchor.set(0.5, 0);
clickValueText.x = 1024;
clickValueText.y = 720;
game.addChild(clickValueText);
var upgradeText = new Text2('Upgrade (Tier 0): $10', {
size: 60,
fill: 0xFFFFFF
});
upgradeText.anchor.set(0.5, 0.5);
upgradeText.x = 700;
upgradeText.y = 300;
upgradePanel.addChild(upgradeText);
var sellText = new Text2('Sell Scrap', {
size: 55,
fill: 0xFFFFFF
});
sellText.anchor.set(0.5, 0.5);
sellText.x = 1024;
sellText.y = 1650;
game.addChild(sellText);
// Upgrade panel button
var upgradePanelButton = new Text2('UPGRADES', {
size: 50,
fill: 0x4CAF50
});
upgradePanelButton.anchor.set(0.5, 0.5);
upgradePanelButton.x = 1024;
upgradePanelButton.y = 1800;
game.addChild(upgradePanelButton);
upgradePanelButton.down = function (x, y, obj) {
// Check if settings panel is open - if so, disable interaction
if (settingsPanel && settingsPanel.visible) {
return;
}
// Check if save panel is open - if so, disable interaction
if (savePanel && savePanel.visible) {
return;
}
// Check if any confirmation dialog is showing
if (game.children.some(function (child) {
return child instanceof ConfirmationDialog;
})) {
return;
}
upgradePanel.visible = !upgradePanel.visible;
};
var totalClicksText = new Text2('Total Clicks: 0', {
size: 60,
fill: 0xCCCCCC
});
totalClicksText.anchor.set(0.5, 0);
totalClicksText.x = 1024;
totalClicksText.y = 800;
game.addChild(totalClicksText);
var magnetText = new Text2('Magnet: 0', {
size: 60,
fill: 0xFFD700
});
magnetText.anchor.set(0.5, 0);
magnetText.x = 1024;
magnetText.y = 880;
game.addChild(magnetText);
var versionText = new Text2('Pre_Alpha 3', {
size: 80,
fill: 0x888888
});
versionText.anchor.set(1, 1);
versionText.x = 2048 - 20;
versionText.y = 2732 - 20;
game.addChild(versionText);
// Save panel
var savePanel = new SavePanel();
savePanel.x = 1024 - 800; // Center horizontally
savePanel.y = 1366 - 400; // Center vertically
savePanel.visible = false;
game.addChild(savePanel);
// Close button for save panel
var saveCloseButton = new Text2('✕', {
size: 100,
fill: 0xFF0000
});
saveCloseButton.anchor.set(0.5, 0.5);
saveCloseButton.x = 1500;
saveCloseButton.y = 80;
savePanel.addChild(saveCloseButton);
saveCloseButton.down = function (x, y, obj) {
savePanel.visible = false;
};
// Settings panel
var settingsPanel = new Container();
settingsPanel.x = 1024 - 700; // Center horizontally (half of scaled width)
settingsPanel.y = 1366 - 240; // Center vertically (half of scaled height)
settingsPanel.visible = false;
game.addChild(settingsPanel);
// Settings panel background
var settingsBg = LK.getAsset('upgradeButton', {
anchorX: 0,
anchorY: 0,
scaleX: 3.5,
scaleY: 5.0
});
settingsBg.tint = 0x444444;
settingsPanel.addChild(settingsBg);
// Settings button
var settingsButton = new Text2('⚙️', {
size: 100,
fill: 0xFFFFFF
});
settingsButton.anchor.set(0, 1);
settingsButton.x = 80;
settingsButton.y = 2732 - 120;
game.addChild(settingsButton);
settingsButton.down = function (x, y, obj) {
// Check if upgrade panel is open - if so, disable interaction
if (upgradePanel && upgradePanel.visible) {
return;
}
// Check if save panel is open - if so, disable interaction
if (savePanel && savePanel.visible) {
return;
}
// Check if any confirmation dialog is showing
if (game.children.some(function (child) {
return child instanceof ConfirmationDialog;
})) {
return;
}
settingsPanel.visible = !settingsPanel.visible;
};
// Save panel button inside settings panel
var savePanelButton = new Text2('SAVE SYSTEM', {
size: 60,
fill: 0x00FFFF
});
savePanelButton.anchor.set(0.5, 0.5);
savePanelButton.x = 700;
savePanelButton.y = 160;
settingsPanel.addChild(savePanelButton);
savePanelButton.down = function (x, y, obj) {
settingsPanel.visible = false; // Close settings panel
savePanel.visible = !savePanel.visible;
};
// Hard reset button inside settings panel
var hardResetButton = new Text2('HARD RESET', {
size: 70,
fill: 0xFF0000
});
hardResetButton.anchor.set(0.5, 0.5);
hardResetButton.x = 700;
hardResetButton.y = 350;
settingsPanel.addChild(hardResetButton);
hardResetButton.down = function (x, y, obj) {
// Create confirmation dialog
var confirmDialog = new ConfirmationDialog('Reset all data?', function () {
// Yes - perform hard reset
scrap = 0;
cash = 0;
totalClicks = 0;
upgradeTier = 0;
svLevel = 0;
xp = 0;
magnet = 0;
perClickValue = getPerClickValue();
// Clear storage
storage.scrap = 0;
storage.cash = 0;
storage.totalClicks = 0;
storage.upgradeTier = 0;
storage.svLevel = 0;
storage.xp = 0;
storage.magnet = 0;
// Update UI
updateUI();
// Flash effect
LK.effects.flashScreen(0xff0000, 1000);
// Hide settings panel after reset
settingsPanel.visible = false;
}, function () {
// No - do nothing
});
// Position dialog in center of screen
confirmDialog.x = 1024 - 600;
confirmDialog.y = 1366 - 180;
game.addChild(confirmDialog);
};
// Helper functions
function formatNumber(num) {
if (num < 1000) {
return Math.floor(num).toString();
}
if (num < 1000000) {
return (num / 1000).toFixed(2).replace(/\.?0+$/, '') + '(K)';
}
if (num < 1000000000) {
return (num / 1000000).toFixed(2).replace(/\.?0+$/, '') + '(M)';
}
if (num < 1000000000000) {
return (num / 1000000000).toFixed(2).replace(/\.?0+$/, '') + '(B)';
}
if (num < 1000000000000000) {
return (num / 1000000000000).toFixed(2).replace(/\.?0+$/, '') + '(T)';
}
// For numbers >= 1e15, use letters a-z then A-Z
var exponent = Math.floor(Math.log10(num));
var letterIndex = Math.floor((exponent - 15) / 3);
var mantissa = num / Math.pow(10, 15 + letterIndex * 3);
var letter;
if (letterIndex < 26) {
letter = String.fromCharCode(97 + letterIndex); // a-z
} else if (letterIndex < 52) {
letter = String.fromCharCode(65 + letterIndex - 26); // A-Z
} else {
// Scientific notation for very large numbers
return (num / Math.pow(10, Math.floor(Math.log10(num)))).toFixed(2) + ' E' + Math.floor(Math.log10(num));
}
return mantissa.toFixed(2).replace(/\.?0+$/, '') + letter;
}
function getPerClickValue() {
var baseValue = 1;
for (var i = 1; i <= upgradeTier; i++) {
var multiplier;
if (i % 100 === 0) {
multiplier = 1.5; // Every 100th tier
} else if (i % 25 === 0) {
multiplier = 1.35; // Every 25th tier (but not 100th)
} else if (i % 10 === 0) {
multiplier = 1.30; // Every 10th tier (but not 25th or 100th)
} else {
multiplier = 1.25; // All other tiers
}
baseValue *= multiplier;
}
return baseValue;
}
function getUpgradeCost() {
var baseCost = 10;
for (var i = 1; i <= upgradeTier; i++) {
var multiplier;
if (i % 100 === 0) {
multiplier = 2.0; // Every 100th tier
} else if (i % 25 === 0) {
multiplier = 1.75; // Every 25th tier (but not 100th)
} else if (i % 10 === 0) {
multiplier = 1.65; // Every 10th tier (but not 25th or 100th)
} else {
multiplier = 1.5; // All other tiers
}
baseCost *= multiplier;
}
return Math.floor(baseCost);
}
function getXPRequired() {
return 100 + svLevel * 50;
}
function checkLevelUp() {
var xpRequired = getXPRequired();
if (xp >= xpRequired) {
xp -= xpRequired;
svLevel++;
// Flash effect for level up
LK.effects.flashScreen(0xffff00, 500);
}
}
function createMagnetReward() {
var reward = game.addChild(new FloatingReward('magnet'));
reward.x = 1024 + (Math.random() - 0.5) * 600;
reward.y = 1400;
floatingRewards.push(reward);
}
function createXPReward() {
var reward = game.addChild(new FloatingReward('xp'));
reward.x = 1024 + (Math.random() - 0.5) * 600;
reward.y = 1400;
floatingRewards.push(reward);
}
function updateUI() {
scrapText.setText('Scrap: ' + formatNumber(Math.floor(scrap)));
cashText.setText('Cash: $' + formatNumber(cash));
levelText.setText('SV Level: ' + formatNumber(svLevel));
xpText.setText('XP: ' + formatNumber(xp) + '/' + formatNumber(getXPRequired()));
// Show decimal values for per-click instead of rounded integers
if (perClickValue < 1000) {
clickValueText.setText('Per Click: ' + perClickValue.toFixed(2));
} else {
clickValueText.setText('Per Click: ' + formatNumber(perClickValue));
}
totalClicksText.setText('Total Clicks: ' + formatNumber(totalClicks));
magnetText.setText('Magnet: ' + formatNumber(magnet));
if (upgradeTier < 400) {
upgradeText.setText('Upgrade (Tier ' + upgradeTier + '): $' + formatNumber(getUpgradeCost()));
upgradeText.fill = cash >= getUpgradeCost() ? "#00ff00" : "#ff0000";
} else {
upgradeText.setText('MAX TIER REACHED');
upgradeText.fill = "#ffff00";
}
// Save game state
storage.scrap = scrap;
storage.cash = cash;
storage.totalClicks = totalClicks;
storage.upgradeTier = upgradeTier;
storage.svLevel = svLevel;
storage.xp = xp;
storage.magnet = magnet;
}
// Initial UI update
updateUI();
// Auto-save timer
var autoSaveTimer = 0;
// UI update timer
var uiUpdateTimer = 0;
game.update = function () {
// Update floating rewards
for (var i = floatingRewards.length - 1; i >= 0; i--) {
var reward = floatingRewards[i];
if (reward.update) {
reward.update();
}
}
// Update UI every second (60 ticks)
uiUpdateTimer++;
if (uiUpdateTimer >= 60) {
uiUpdateTimer = 0;
updateUI();
}
// Auto-save every second (60 ticks)
autoSaveTimer++;
if (autoSaveTimer >= 60) {
autoSaveTimer = 0;
// Save current game state
storage.scrap = scrap;
storage.cash = cash;
storage.totalClicks = totalClicks;
storage.upgradeTier = upgradeTier;
storage.svLevel = svLevel;
storage.xp = xp;
storage.magnet = magnet;
}
};
function createSaveSlot(parent, slotIndex, x, y) {
var slotContainer = new Container();
slotContainer.x = x;
slotContainer.y = y;
parent.addChild(slotContainer);
// Slot background
var slotBg = LK.getAsset('upgradeButton', {
anchorX: 0,
anchorY: 0,
scaleX: 3.6,
scaleY: 1.8
});
slotBg.tint = 0x333333;
slotContainer.addChild(slotBg);
// Slot title
var slotTitle = new Text2('SLOT ' + (slotIndex + 1), {
size: 50,
fill: 0xFFFFFF
});
slotTitle.anchor.set(0, 0);
slotTitle.x = 20;
slotTitle.y = 20;
slotContainer.addChild(slotTitle);
// Save info text
var saveInfo = new Text2('Empty', {
size: 35,
fill: 0xCCCCCC
});
saveInfo.anchor.set(0, 0);
saveInfo.x = 20;
saveInfo.y = 70;
slotContainer.addChild(saveInfo);
// Save button
var saveBtn = new Text2('SAVE', {
size: 40,
fill: 0x00FF00
});
saveBtn.anchor.set(0.5, 0.5);
saveBtn.x = 350;
saveBtn.y = 60;
slotContainer.addChild(saveBtn);
// Load button
var loadBtn = new Text2('LOAD', {
size: 40,
fill: 0x0080FF
});
loadBtn.anchor.set(0.5, 0.5);
loadBtn.x = 550;
loadBtn.y = 60;
slotContainer.addChild(loadBtn);
// Delete button
var deleteBtn = new Text2('DELETE', {
size: 40,
fill: 0xFF0000
});
deleteBtn.anchor.set(0.5, 0.5);
deleteBtn.x = 800;
deleteBtn.y = 60;
slotContainer.addChild(deleteBtn);
// Update slot display
function updateSlotDisplay() {
var saveKey = 'save_slot_' + slotIndex;
var saveData = storage[saveKey];
if (saveData && saveData !== null) {
saveInfo.setText('SV Lvl: ' + formatNumber(saveData.svLevel || 0) + '\nCash: $' + formatNumber(saveData.cash || 0));
saveInfo.fill = 0xFFFFFF;
loadBtn.fill = 0x0080FF;
} else {
saveInfo.setText('Empty');
saveInfo.fill = 0xCCCCCC;
loadBtn.fill = 0x555555;
}
}
// Save button functionality
saveBtn.down = function (x, y, obj) {
// Check if any confirmation dialog is showing
if (game.children.some(function (child) {
return child instanceof ConfirmationDialog;
})) {
return;
}
var saveKey = 'save_slot_' + slotIndex;
var saveData = {
scrap: scrap.toString(),
cash: cash.toString(),
totalClicks: totalClicks.toString(),
upgradeTier: upgradeTier,
svLevel: svLevel,
xp: xp.toString(),
magnet: magnet.toString()
};
storage[saveKey] = saveData;
updateSlotDisplay();
LK.effects.flashScreen(0x00FF00, 300);
};
// Load button functionality
loadBtn.down = function (x, y, obj) {
// Check if any confirmation dialog is showing
if (game.children.some(function (child) {
return child instanceof ConfirmationDialog;
})) {
return;
}
var saveKey = 'save_slot_' + slotIndex;
var saveData = storage[saveKey];
if (saveData && saveData !== null) {
scrap = parseFloat(saveData.scrap) || 0;
cash = parseFloat(saveData.cash) || 0;
totalClicks = parseFloat(saveData.totalClicks) || 0;
upgradeTier = saveData.upgradeTier || 0;
svLevel = saveData.svLevel || 0;
xp = parseFloat(saveData.xp) || 0;
magnet = parseFloat(saveData.magnet) || 0;
perClickValue = getPerClickValue();
updateUI();
LK.effects.flashScreen(0x0080FF, 300);
}
};
// Delete button functionality
deleteBtn.down = function (x, y, obj) {
// Check if any confirmation dialog is showing
if (game.children.some(function (child) {
return child instanceof ConfirmationDialog;
})) {
return;
}
var saveKey = 'save_slot_' + slotIndex;
var saveData = storage[saveKey];
// Only show confirmation if there's actually data to delete
if (saveData && saveData !== null) {
// Create confirmation dialog
var confirmDialog = new ConfirmationDialog('Delete save data?', function () {
// Yes - delete the save data
storage[saveKey] = null;
// Force update the display to show Empty
saveInfo.setText('Empty');
saveInfo.fill = 0xCCCCCC;
loadBtn.fill = 0x555555;
updateSlotDisplay();
LK.effects.flashScreen(0xFF0000, 300);
}, function () {
// No - do nothing
});
// Position dialog in center of screen
confirmDialog.x = 1024 - 600;
confirmDialog.y = 1366 - 180;
game.addChild(confirmDialog);
}
};
// Initial display update
updateSlotDisplay();
} ===================================================================
--- original.js
+++ change.js
@@ -671,9 +671,14 @@
scrapText.setText('Scrap: ' + formatNumber(Math.floor(scrap)));
cashText.setText('Cash: $' + formatNumber(cash));
levelText.setText('SV Level: ' + formatNumber(svLevel));
xpText.setText('XP: ' + formatNumber(xp) + '/' + formatNumber(getXPRequired()));
- clickValueText.setText('Per Click: ' + formatNumber(perClickValue));
+ // Show decimal values for per-click instead of rounded integers
+ if (perClickValue < 1000) {
+ clickValueText.setText('Per Click: ' + perClickValue.toFixed(2));
+ } else {
+ clickValueText.setText('Per Click: ' + formatNumber(perClickValue));
+ }
totalClicksText.setText('Total Clicks: ' + formatNumber(totalClicks));
magnetText.setText('Magnet: ' + formatNumber(magnet));
if (upgradeTier < 400) {
upgradeText.setText('Upgrade (Tier ' + upgradeTier + '): $' + formatNumber(getUpgradeCost()));