Code edit (7 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
User prompt
there is no music sound
Code edit (11 edits merged)
Please save this source code
User prompt
Add background image
Code edit (1 edits merged)
Please save this source code
User prompt
remove unlimited money feature from settings screen
User prompt
Make the settings screen open centered on the main screen.
User prompt
The buttons below should be in a single horizontal row. and there should be space between them.
/**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/**** 
* Classes
****/ 
var BitcoinParticle = Container.expand(function () {
	var self = Container.call(this);
	var particle = self.attachAsset('bitcoinIcon', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.startY = 0;
	self.targetY = 0;
	self.animate = function (startY, targetY) {
		self.y = startY;
		self.startY = startY;
		self.targetY = targetY;
		tween(self, {
			y: targetY,
			alpha: 0
		}, {
			duration: 2000,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				self.destroy();
			}
		});
	};
	return self;
});
var MiningRig = Container.expand(function (rigType) {
	var self = Container.call(this);
	// Rig properties based on type
	var rigStats = {
		basic: {
			hashRate: 0.01,
			powerCost: 0.5,
			price: 2500
		},
		advanced: {
			hashRate: 0.4,
			powerCost: 1.5,
			price: 1500
		},
		professional: {
			hashRate: 2.25,
			powerCost: 5.0,
			price: 7500
		}
	};
	self.rigType = rigType || 'basic';
	self.stats = rigStats[self.rigType];
	self.lastMineTime = Date.now();
	var rigGraphics = self.attachAsset('miningRig', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Add visual indicator for rig type
	if (self.rigType === 'advanced') {
		rigGraphics.tint = 0x8e44ad;
	} else if (self.rigType === 'professional') {
		rigGraphics.tint = 0xe67e22;
	}
	// Mining animation
	self.animate = function () {
		tween(rigGraphics, {
			scaleX: 1.1,
			scaleY: 1.1
		}, {
			duration: 500,
			easing: tween.easeInOut,
			onFinish: function onFinish() {
				tween(rigGraphics, {
					scaleX: 1.0,
					scaleY: 1.0
				}, {
					duration: 500,
					easing: tween.easeInOut
				});
			}
		});
	};
	self.update = function () {
		var currentTime = Date.now();
		if (currentTime - self.lastMineTime >= 10000) {
			// Mine every 10 seconds
			self.lastMineTime = currentTime;
			self.animate();
			// Generate bitcoin based on hash rate with prestige multiplier
			var prestigeMultiplier = Math.pow(1.2, prestigePoints);
			bitcoin += self.stats.hashRate * prestigeMultiplier;
			// Power usage is calculated globally, not per rig
			// Play mining sound occasionally
			if (Math.random() < 0.1 && settings.effectsEnabled) {
				LK.getSound('mining').play();
			}
		}
	};
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x1a1a1a
});
/**** 
* Game Code
****/ 
// Add background image
var backgroundImage = LK.getAsset('background', {
	anchorX: 0,
	anchorY: 0
});
backgroundImage.x = 0;
backgroundImage.y = 0;
game.addChild(backgroundImage);
// Game state variables
var bitcoin = storage.bitcoin || 0;
var cash = storage.cash || 1000;
var miningRigs = [];
var powerCapacity = storage.powerCapacity || 10;
var coolingCapacity = storage.coolingCapacity || 10;
var powerUsage = 0;
var bitcoinPrice = 45000 + Math.random() * 10000; // Starting price between 45k-55k
var lastPriceUpdate = Date.now();
var prestigePoints = storage.prestigePoints || 0;
var showingPrestige = false;
// UI Elements
var bitcoinDisplay = new Text2('₿ 0.00000', {
	size: 50,
	fill: 0xF39C12
});
bitcoinDisplay.anchor.set(0, 0);
bitcoinDisplay.x = 150;
bitcoinDisplay.y = 50;
LK.gui.topLeft.addChild(bitcoinDisplay);
var cashDisplay = new Text2('$ 1,000', {
	size: 50,
	fill: 0x27AE60
});
cashDisplay.anchor.set(0, 0);
cashDisplay.x = 150;
cashDisplay.y = 120;
LK.gui.topLeft.addChild(cashDisplay);
var priceDisplay = new Text2('BTC: $45,000', {
	size: 40,
	fill: 0xFFFFFF
});
priceDisplay.anchor.set(1, 0);
LK.gui.topRight.addChild(priceDisplay);
var powerDisplay = new Text2('Power: 0/10', {
	size: 35,
	fill: 0xE74C3C
});
powerDisplay.anchor.set(0.5, 0);
powerDisplay.y = 50;
LK.gui.top.addChild(powerDisplay);
// Power meter visual
var powerMeterBg = LK.getAsset('powerMeter', {
	anchorX: 0.5,
	anchorY: 0.5
});
powerMeterBg.tint = 0x34495e;
powerMeterBg.x = 1024;
powerMeterBg.y = 150;
game.addChild(powerMeterBg);
var powerMeterFill = LK.getAsset('powerMeter', {
	anchorX: 0,
	anchorY: 0.5,
	scaleX: 0
});
powerMeterFill.x = powerMeterBg.x - powerMeterBg.width / 2;
powerMeterFill.y = powerMeterBg.y;
game.addChild(powerMeterFill);
// Upgrade buttons
var rigUpgradeButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 1.5,
	scaleY: 1.5
});
rigUpgradeButton.x = 300;
rigUpgradeButton.y = 2600;
game.addChild(rigUpgradeButton);
var rigUpgradeText = new Text2('Buy Mining Rig - $100', {
	size: 50,
	fill: 0xFFFFFF
});
rigUpgradeText.anchor.set(0.5, 0.5);
rigUpgradeText.x = rigUpgradeButton.x;
rigUpgradeText.y = rigUpgradeButton.y;
game.addChild(rigUpgradeText);
var powerUpgradeButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 1.5,
	scaleY: 1.5
});
powerUpgradeButton.x = 850;
powerUpgradeButton.y = 2600;
game.addChild(powerUpgradeButton);
var powerUpgradeText = new Text2('Upgrade Power - $200', {
	size: 50,
	fill: 0xFFFFFF
});
powerUpgradeText.anchor.set(0.5, 0.5);
powerUpgradeText.x = powerUpgradeButton.x;
powerUpgradeText.y = powerUpgradeButton.y;
game.addChild(powerUpgradeText);
var sellButton = LK.getAsset('sellButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 1.5,
	scaleY: 1.5
});
sellButton.x = 1300;
sellButton.y = 2600;
game.addChild(sellButton);
var sellButtonText = new Text2(' SELL ', {
	size: 50,
	fill: 0xFFFFFF
});
sellButtonText.anchor.set(0.5, 0.5);
sellButtonText.x = sellButton.x;
sellButtonText.y = sellButton.y;
game.addChild(sellButtonText);
// Mining rig types and costs - only basic rigs available
var rigTypes = ['basic'];
var currentRigType = 0;
// Starting mining rigs
if (storage.rigCount === undefined) {
	var startingRig = new MiningRig('basic');
	startingRig.x = 400;
	startingRig.y = 400;
	game.addChild(startingRig);
	miningRigs.push(startingRig);
	storage.rigCount = 1;
	storage.rigTypes = ['basic'];
} else {
	// Restore saved rigs
	var savedRigTypes = storage.rigTypes || [];
	for (var i = 0; i < storage.rigCount; i++) {
		var rigType = savedRigTypes[i] || 'basic';
		var rig = new MiningRig(rigType);
		rig.x = 400 + i % 10 * 140;
		rig.y = 400 + Math.floor(i / 10) * 120;
		game.addChild(rig);
		miningRigs.push(rig);
	}
}
// Number formatting utility
function formatNumber(num) {
	if (num < 1000) {
		return num.toFixed(0);
	} else if (num < 1000000) {
		return (num / 1000).toFixed(1) + 'K';
	} else if (num < 1000000000) {
		return (num / 1000000).toFixed(1) + 'M';
	} else if (num < 1000000000000) {
		return (num / 1000000000).toFixed(1) + 'B';
	} else if (num < 1000000000000000) {
		return (num / 1000000000000).toFixed(1) + 'T';
	} else if (num < 1000000000000000000) {
		return (num / 1000000000000000).toFixed(1) + 'Qa';
	} else {
		return (num / 1000000000000000000).toFixed(1) + 'Qi';
	}
}
// Utility functions
function updateUI() {
	bitcoinDisplay.setText(texts[settings.language].bitcoin + ' ' + bitcoin.toFixed(5));
	cashDisplay.setText(texts[settings.language].cash + ' ' + formatNumber(cash));
	priceDisplay.setText(texts[settings.language].btcPrice + formatNumber(bitcoinPrice));
	powerDisplay.setText(texts[settings.language].power + powerUsage.toFixed(1) + '/' + powerCapacity);
	// Update power meter
	var powerRatio = Math.min(powerUsage / powerCapacity, 1);
	powerMeterFill.scaleX = powerRatio;
	if (powerRatio > 0.9) {
		powerMeterFill.tint = 0xe74c3c; // Red when near capacity
	} else if (powerRatio > 0.7) {
		powerMeterFill.tint = 0xf39c12; // Orange when high
	} else {
		powerMeterFill.tint = 0x27ae60; // Green when safe
	}
	// Update upgrade button costs - only basic rigs
	var rigType = 'basic';
	var baseCost = 2500;
	var rigCost = baseCost * Math.pow(1.3, Math.floor(miningRigs.length / 3));
	var rigName = 'Basic';
	rigUpgradeText.setText(texts[settings.language].buyRig + rigName + texts[settings.language].rig + formatNumber(rigCost));
	var powerCost = 500 * Math.pow(1.5, (powerCapacity - 10) / 1);
	powerUpgradeText.setText(texts[settings.language].upgradePower + formatNumber(powerCost));
}
function spawnBitcoinParticle() {
	if (Math.random() < 0.002) {
		// 0.2% chance per frame when mining
		var particle = new BitcoinParticle();
		particle.x = 400 + Math.random() * 800;
		particle.animate(300, 150);
		game.addChild(particle);
	}
}
// Function to calculate total power requirement
function calculateTotalPowerUsage() {
	var totalPower = 0;
	for (var i = 0; i < miningRigs.length; i++) {
		totalPower += miningRigs[i].stats.powerCost;
	}
	return totalPower;
}
// Settings state
var settings = storage.settings || {
	musicEnabled: true,
	effectsEnabled: true,
	language: 'en'
};
var showingSettings = false;
// Admin state
var adminMode = false;
var showingAdmin = false;
var unlimitedMoney = false;
// Language texts
var texts = {
	en: {
		bitcoin: '₿',
		cash: '$',
		btcPrice: 'BTC: $',
		power: 'Power: ',
		buyRig: 'Buy ',
		rig: ' Rig - $',
		upgradePower: 'Upgrade Power - $',
		sellBitcoin: 'Sell Bitcoin',
		settings: 'Settings',
		music: 'Music',
		effects: 'Effects',
		language: 'Language',
		reset: 'Reset Game',
		on: 'ON',
		off: 'OFF',
		english: 'English',
		turkish: 'Turkish',
		close: 'Close'
	},
	tr: {
		bitcoin: '₿',
		cash: '$',
		btcPrice: 'BTC: $',
		power: 'Güç: ',
		buyRig: 'Al ',
		rig: ' Cihaz - $',
		upgradePower: 'Güç Yükselt - $',
		sellBitcoin: 'Bitcoin Sat',
		settings: 'Ayarlar',
		music: 'Müzik',
		effects: 'Efektler',
		language: 'Dil',
		reset: 'Oyunu Sıfırla',
		on: 'AÇIK',
		off: 'KAPALI',
		english: 'İngilizce',
		turkish: 'Türkçe',
		close: 'Kapat'
	}
};
// Settings button
var settingsButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 1.5,
	scaleY: 1.5
});
settingsButton.interactive = true;
settingsButton.x = 1800;
settingsButton.y = 2600;
game.addChild(settingsButton);
var settingsButtonText = new Text2(texts[settings.language].settings, {
	size: 50,
	fill: 0xFFFFFF
});
settingsButtonText.anchor.set(0.5, 0.5);
settingsButtonText.x = settingsButton.x;
settingsButtonText.y = settingsButton.y;
game.addChild(settingsButtonText);
// Admin button (hidden by default)
var adminButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 1.5,
	scaleY: 1.5
});
adminButton.interactive = true;
adminButton.tint = 0xFF0000;
adminButton.x = 1224;
adminButton.y = 500;
adminButton.visible = adminMode;
game.addChild(adminButton);
var adminButtonText = new Text2('ADMIN', {
	size: 30,
	fill: 0xFFFFFF
});
adminButtonText.anchor.set(0.5, 0.5);
adminButtonText.x = adminButton.x;
adminButtonText.y = adminButton.y;
adminButtonText.visible = adminMode;
game.addChild(adminButtonText);
// Settings panel
var settingsPanel = new Container();
settingsPanel.visible = false;
var panelBg = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 6,
	scaleY: 10
});
panelBg.tint = 0x2c3e50;
panelBg.x = 0;
panelBg.y = 0;
settingsPanel.x = 2048 / 2;
settingsPanel.y = 2732 / 2;
settingsPanel.addChild(panelBg);
// Music toggle
var musicToggle = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.2
});
musicToggle.interactive = true;
musicToggle.x = 0;
musicToggle.y = -266;
settingsPanel.addChild(musicToggle);
var musicText = new Text2(texts[settings.language].music + ': ' + (settings.musicEnabled ? texts[settings.language].on : texts[settings.language].off), {
	size: 60,
	fill: 0xFFFFFF
});
musicText.anchor.set(0.5, 0.5);
musicText.x = musicToggle.x;
musicText.y = musicToggle.y;
settingsPanel.addChild(musicText);
// Effects toggle
var effectsToggle = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.2
});
effectsToggle.interactive = true;
effectsToggle.x = 0;
effectsToggle.y = -116;
settingsPanel.addChild(effectsToggle);
var effectsText = new Text2(texts[settings.language].effects + ': ' + (settings.effectsEnabled ? texts[settings.language].on : texts[settings.language].off), {
	size: 60,
	fill: 0xFFFFFF
});
effectsText.anchor.set(0.5, 0.5);
effectsText.x = effectsToggle.x;
effectsText.y = effectsToggle.y;
settingsPanel.addChild(effectsText);
// Language toggle
var languageToggle = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.2
});
languageToggle.interactive = true;
languageToggle.x = 0;
languageToggle.y = 34;
settingsPanel.addChild(languageToggle);
var languageText = new Text2(texts[settings.language].language + ': ' + (settings.language === 'en' ? texts[settings.language].english : texts[settings.language].turkish), {
	size: 60,
	fill: 0xFFFFFF
});
languageText.anchor.set(0.5, 0.5);
languageText.x = languageToggle.x;
languageText.y = languageToggle.y;
settingsPanel.addChild(languageText);
// Reset button
var resetButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.2
});
resetButton.interactive = true;
resetButton.tint = 0xe74c3c;
resetButton.x = 0;
resetButton.y = 184;
settingsPanel.addChild(resetButton);
var resetText = new Text2(texts[settings.language].reset, {
	size: 60,
	fill: 0xFFFFFF
});
resetText.anchor.set(0.5, 0.5);
resetText.x = resetButton.x;
resetText.y = resetButton.y;
settingsPanel.addChild(resetText);
// Reset button
var resetButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.2
});
resetButton.interactive = true;
resetButton.tint = 0xe74c3c;
resetButton.x = 0;
resetButton.y = 184;
settingsPanel.addChild(resetButton);
var resetText = new Text2(texts[settings.language].reset, {
	size: 60,
	fill: 0xFFFFFF
});
resetText.anchor.set(0.5, 0.5);
resetText.x = resetButton.x;
resetText.y = resetButton.y;
settingsPanel.addChild(resetText);
// Close button
var closeButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.2,
	scaleY: 1.2
});
closeButton.interactive = true;
closeButton.x = 0;
closeButton.y = 484;
settingsPanel.addChild(closeButton);
var closeText = new Text2(texts[settings.language].close, {
	size: 60,
	fill: 0xFFFFFF
});
closeText.anchor.set(0.5, 0.5);
closeText.x = closeButton.x;
closeText.y = closeButton.y;
settingsPanel.addChild(closeText);
LK.gui.addChild(settingsPanel);
// Prestige panel
var prestigePanel = new Container();
prestigePanel.visible = false;
var prestigePanelBg = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 6,
	scaleY: 8
});
prestigePanelBg.tint = 0x8e44ad;
prestigePanelBg.x = 0;
prestigePanelBg.y = 0;
prestigePanel.x = 1024;
prestigePanel.y = 1366;
prestigePanel.addChild(prestigePanelBg);
// Prestige title
var prestigeTitle = new Text2('PRESTIGE AVAILABLE!', {
	size: 80,
	fill: 0xFFFFFF
});
prestigeTitle.anchor.set(0.5, 0.5);
prestigeTitle.x = 0;
prestigeTitle.y = -250;
prestigePanel.addChild(prestigeTitle);
// Prestige info
var prestigeInfo = new Text2('You have reached 100 rigs!\nPrestige to reset progress\nand gain permanent bonuses', {
	size: 50,
	fill: 0xFFFFFF
});
prestigeInfo.anchor.set(0.5, 0.5);
prestigeInfo.x = 0;
prestigeInfo.y = -100;
prestigePanel.addChild(prestigeInfo);
// Current prestige points display
var currentPrestigeText = new Text2('Current Prestige Points: ' + prestigePoints, {
	size: 45,
	fill: 0xF39C12
});
currentPrestigeText.anchor.set(0.5, 0.5);
currentPrestigeText.x = 0;
currentPrestigeText.y = 0;
prestigePanel.addChild(currentPrestigeText);
// Prestige multiplier display
var multiplierText = new Text2('Current Multiplier: ' + Math.pow(1.2, prestigePoints).toFixed(2) + 'x', {
	size: 45,
	fill: 0x27AE60
});
multiplierText.anchor.set(0.5, 0.5);
multiplierText.x = 0;
multiplierText.y = 70;
prestigePanel.addChild(multiplierText);
// Prestige button
var prestigeButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.5
});
prestigeButton.interactive = true;
prestigeButton.tint = 0x8e44ad;
prestigeButton.x = 0;
prestigeButton.y = 180;
prestigePanel.addChild(prestigeButton);
var prestigeButtonText = new Text2('PRESTIGE (+1 Point)', {
	size: 55,
	fill: 0xFFFFFF
});
prestigeButtonText.anchor.set(0.5, 0.5);
prestigeButtonText.x = prestigeButton.x;
prestigeButtonText.y = prestigeButton.y;
prestigePanel.addChild(prestigeButtonText);
LK.gui.addChild(prestigePanel);
// Admin panel
var adminPanel = new Container();
adminPanel.visible = false;
var adminPanelBg = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 6,
	scaleY: 6
});
adminPanelBg.tint = 0x2c3e50;
adminPanelBg.x = 0;
adminPanelBg.y = 0;
adminPanel.x = 1024;
adminPanel.y = 1366;
adminPanel.addChild(adminPanelBg);
// Admin title
var adminTitle = new Text2('ADMIN PANEL', {
	size: 80,
	fill: 0xFF0000
});
adminTitle.anchor.set(0.5, 0.5);
adminTitle.x = 0;
adminTitle.y = -200;
adminPanel.addChild(adminTitle);
// Unlimited money toggle
var unlimitedMoneyToggle = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.2
});
unlimitedMoneyToggle.interactive = true;
unlimitedMoneyToggle.x = 0;
unlimitedMoneyToggle.y = -50;
adminPanel.addChild(unlimitedMoneyToggle);
var unlimitedMoneyText = new Text2('Unlimited Money: ' + (unlimitedMoney ? 'ON' : 'OFF'), {
	size: 50,
	fill: 0xFFFFFF
});
unlimitedMoneyText.anchor.set(0.5, 0.5);
unlimitedMoneyText.x = unlimitedMoneyToggle.x;
unlimitedMoneyText.y = unlimitedMoneyToggle.y;
adminPanel.addChild(unlimitedMoneyText);
// Admin close button
var adminCloseButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.2,
	scaleY: 1.2
});
adminCloseButton.interactive = true;
adminCloseButton.x = 0;
adminCloseButton.y = 100;
adminPanel.addChild(adminCloseButton);
var adminCloseText = new Text2('Close', {
	size: 60,
	fill: 0xFFFFFF
});
adminCloseText.anchor.set(0.5, 0.5);
adminCloseText.x = adminCloseButton.x;
adminCloseText.y = adminCloseButton.y;
adminPanel.addChild(adminCloseText);
LK.gui.addChild(adminPanel);
// Function to update language texts
function updateLanguageTexts() {
	settingsButtonText.setText(texts[settings.language].settings);
	musicText.setText(texts[settings.language].music + ': ' + (settings.musicEnabled ? texts[settings.language].on : texts[settings.language].off));
	effectsText.setText(texts[settings.language].effects + ': ' + (settings.effectsEnabled ? texts[settings.language].on : texts[settings.language].off));
	languageText.setText(texts[settings.language].language + ': ' + (settings.language === 'en' ? texts[settings.language].english : texts[settings.language].turkish));
	resetText.setText(texts[settings.language].reset);
	closeText.setText(texts[settings.language].close);
	sellButtonText.setText(texts[settings.language].sellBitcoin);
}
// Settings button handler
settingsButton.down = function (x, y, obj) {
	showingSettings = !showingSettings;
	settingsPanel.visible = showingSettings;
	if (settings.effectsEnabled) {
		LK.effects.flashObject(settingsButton, 0x3498db, 300);
	}
};
// Music toggle handler
musicToggle.down = function (x, y, obj) {
	settings.musicEnabled = !settings.musicEnabled;
	storage.settings = settings;
	updateLanguageTexts();
	// Control music playback based on setting
	if (settings.musicEnabled) {
		LK.playMusic('Music');
	} else {
		LK.stopMusic();
	}
	if (settings.effectsEnabled) {
		LK.effects.flashObject(musicToggle, 0x27ae60, 300);
	}
};
// Effects toggle handler
effectsToggle.down = function (x, y, obj) {
	settings.effectsEnabled = !settings.effectsEnabled;
	storage.settings = settings;
	updateLanguageTexts();
	LK.effects.flashObject(effectsToggle, 0x27ae60, 300);
};
// Language toggle handler
languageToggle.down = function (x, y, obj) {
	settings.language = settings.language === 'en' ? 'tr' : 'en';
	storage.settings = settings;
	updateLanguageTexts();
	if (settings.effectsEnabled) {
		LK.effects.flashObject(languageToggle, 0x27ae60, 300);
	}
};
// Reset button handler
resetButton.down = function (x, y, obj) {
	// Clear all storage
	storage.bitcoin = 0;
	storage.cash = 1000;
	storage.powerCapacity = 10;
	delete storage.rigCount;
	delete storage.rigTypes;
	storage.settings = {
		musicEnabled: true,
		effectsEnabled: true,
		language: 'en'
	};
	if (settings.effectsEnabled) {
		LK.effects.flashObject(resetButton, 0xe74c3c, 500);
	}
	// Show game over to restart
	LK.setTimeout(function () {
		LK.showGameOver();
	}, 600);
};
// Close button handler
closeButton.down = function (x, y, obj) {
	showingSettings = false;
	settingsPanel.visible = false;
	if (settings.effectsEnabled) {
		LK.effects.flashObject(closeButton, 0x95a5a6, 300);
	}
};
// Prestige button handler
prestigeButton.down = function (x, y, obj) {
	prestigePoints += 1;
	storage.prestigePoints = prestigePoints;
	// Reset game state
	bitcoin = 0;
	cash = 1000;
	powerCapacity = 10;
	// Clear all rigs
	for (var i = 0; i < miningRigs.length; i++) {
		miningRigs[i].destroy();
	}
	miningRigs = [];
	// Reset storage
	storage.bitcoin = 0;
	storage.cash = 1000;
	storage.powerCapacity = 10;
	storage.rigCount = 0;
	storage.rigTypes = [];
	// Hide prestige panel
	showingPrestige = false;
	prestigePanel.visible = false;
	if (settings.effectsEnabled) {
		LK.effects.flashObject(prestigeButton, 0x8e44ad, 500);
	}
	// Create starting rig
	var startingRig = new MiningRig('basic');
	startingRig.x = 400;
	startingRig.y = 400;
	game.addChild(startingRig);
	miningRigs.push(startingRig);
	storage.rigCount = 1;
	storage.rigTypes = ['basic'];
};
// Admin button handler
adminButton.down = function (x, y, obj) {
	showingAdmin = !showingAdmin;
	adminPanel.visible = showingAdmin;
	if (settings.effectsEnabled) {
		LK.effects.flashObject(adminButton, 0xFF0000, 300);
	}
};
// Unlimited money toggle handler
unlimitedMoneyToggle.down = function (x, y, obj) {
	unlimitedMoney = !unlimitedMoney;
	unlimitedMoneyText.setText('Unlimited Money: ' + (unlimitedMoney ? 'ON' : 'OFF'));
	if (settings.effectsEnabled) {
		LK.effects.flashObject(unlimitedMoneyToggle, 0x27ae60, 300);
	}
};
// Admin close button handler
adminCloseButton.down = function (x, y, obj) {
	showingAdmin = false;
	adminPanel.visible = false;
	if (settings.effectsEnabled) {
		LK.effects.flashObject(adminCloseButton, 0x95a5a6, 300);
	}
};
// Admin mode activation (secret tap sequence on bitcoin display)
var adminTapCount = 0;
var lastAdminTap = 0;
bitcoinDisplay.interactive = true;
bitcoinDisplay.down = function (x, y, obj) {
	var currentTime = Date.now();
	if (currentTime - lastAdminTap < 1000) {
		adminTapCount++;
		if (adminTapCount >= 5) {
			adminMode = true;
			adminButton.visible = true;
			adminButtonText.visible = true;
			adminTapCount = 0;
			if (settings.effectsEnabled) {
				LK.effects.flashObject(bitcoinDisplay, 0xFF0000, 500);
			}
		}
	} else {
		adminTapCount = 1;
	}
	lastAdminTap = currentTime;
};
// Event handlers
rigUpgradeButton.down = function (x, y, obj) {
	var rigType = 'basic';
	var baseCost = 2500;
	var rigCost = baseCost * Math.pow(1.3, Math.floor(miningRigs.length / 3));
	var powerRequired = 0.5;
	var currentTotalPower = calculateTotalPowerUsage();
	if ((cash >= rigCost || unlimitedMoney) && currentTotalPower + powerRequired <= powerCapacity && miningRigs.length < 100) {
		if (!unlimitedMoney) {
			cash -= rigCost;
		} else {
			cash = Math.max(cash, 999999999); // Ensure cash stays high in unlimited mode
		}
		var newRig = new MiningRig(rigType);
		newRig.x = 400 + miningRigs.length % 10 * 140;
		newRig.y = 400 + Math.floor(miningRigs.length / 10) * 120;
		game.addChild(newRig);
		miningRigs.push(newRig);
		// Save rig types
		if (!storage.rigTypes) {
			storage.rigTypes = [];
		}
		storage.rigTypes.push(rigType);
		storage.rigCount = miningRigs.length;
		if (settings.effectsEnabled) {
			LK.getSound('purchase').play();
			// Flash effect
			LK.effects.flashObject(rigUpgradeButton, 0x27ae60, 300);
		}
	}
};
powerUpgradeButton.down = function (x, y, obj) {
	var powerCost = 500 * Math.pow(1.5, (powerCapacity - 10) / 1);
	if ((cash >= powerCost || unlimitedMoney) && powerCapacity < 50) {
		if (!unlimitedMoney) {
			cash -= powerCost;
		} else {
			cash = Math.max(cash, 999999999); // Ensure cash stays high in unlimited mode
		}
		powerCapacity += 1;
		storage.powerCapacity = powerCapacity;
		if (settings.effectsEnabled) {
			LK.getSound('purchase').play();
			// Flash effect
			LK.effects.flashObject(powerUpgradeButton, 0x27ae60, 300);
		}
	}
};
sellButton.down = function (x, y, obj) {
	if (bitcoin >= 0.01) {
		var sellAmount = bitcoin;
		var earnings = sellAmount * bitcoinPrice;
		cash += earnings;
		bitcoin = 0;
		if (settings.effectsEnabled) {
			LK.getSound('coin').play();
			// Flash effect
			LK.effects.flashObject(sellButton, 0xf39c12, 500);
		}
		// Show earnings popup
		var earningsText = new Text2('+$' + formatNumber(earnings), {
			size: 60,
			fill: 0xF39C12
		});
		earningsText.anchor.set(0.5, 0.5);
		earningsText.x = sellButton.x;
		earningsText.y = sellButton.y - 100;
		game.addChild(earningsText);
		tween(earningsText, {
			y: earningsText.y - 100,
			alpha: 0
		}, {
			duration: 2000,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				earningsText.destroy();
			}
		});
	}
};
// Start playing background music
if (settings.musicEnabled) {
	LK.playMusic('Music');
}
game.update = function () {
	powerUsage = calculateTotalPowerUsage(); // Calculate total power usage from all rigs
	// Update bitcoin price periodically
	if (Date.now() - lastPriceUpdate > 5000) {
		// Every 5 seconds
		lastPriceUpdate = Date.now();
		var priceChange = (Math.random() - 0.5) * 0.1; // ±5% change
		bitcoinPrice = Math.max(10000, bitcoinPrice * (1 + priceChange));
	}
	// Spawn bitcoin particles when mining
	if (miningRigs.length > 0) {
		spawnBitcoinParticle();
	}
	// Check for prestige availability
	if (miningRigs.length >= 100 && !showingPrestige) {
		showingPrestige = true;
		prestigePanel.visible = true;
		// Update prestige panel text
		currentPrestigeText.setText('Current Prestige Points: ' + prestigePoints);
		multiplierText.setText('Current Multiplier: ' + Math.pow(1.2, prestigePoints).toFixed(2) + 'x');
	}
	updateUI();
	// Save progress periodically
	if (LK.ticks % 300 === 0) {
		// Every 5 seconds
		storage.bitcoin = bitcoin;
		storage.cash = cash;
		storage.powerCapacity = powerCapacity;
		storage.rigCount = miningRigs.length;
		// Save rig types
		var rigTypesToSave = [];
		for (var i = 0; i < miningRigs.length; i++) {
			rigTypesToSave.push(miningRigs[i].rigType);
		}
		storage.rigTypes = rigTypesToSave;
	}
}; ===================================================================
--- original.js
+++ change.js
@@ -202,9 +202,9 @@
 	anchorY: 0.5,
 	scaleX: 1.5,
 	scaleY: 1.5
 });
-powerUpgradeButton.x = 900;
+powerUpgradeButton.x = 850;
 powerUpgradeButton.y = 2600;
 game.addChild(powerUpgradeButton);
 var powerUpgradeText = new Text2('Upgrade Power - $200', {
 	size: 50,
@@ -222,9 +222,9 @@
 });
 sellButton.x = 1300;
 sellButton.y = 2600;
 game.addChild(sellButton);
-var sellButtonText = new Text2('.', {
+var sellButtonText = new Text2(' SELL ', {
 	size: 50,
 	fill: 0xFFFFFF
 });
 sellButtonText.anchor.set(0.5, 0.5);