/**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/**** 
* Classes
****/ 
var Pet = Container.expand(function (petType, rarity, bonusPerTap, dropChance) {
	var self = Container.call(this);
	self.petType = petType;
	self.rarity = rarity;
	self.bonusPerTap = bonusPerTap;
	self.dropChance = dropChance;
	// Create pet sprite
	var petSprite = self.attachAsset(petType, {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Scale for enhanced mode
	if (ultraRealisticMode) {
		petSprite.scaleX = 1.2;
		petSprite.scaleY = 1.2;
	}
	// Animate pet entrance
	self.animateEntrance = function () {
		if (ultraRealisticMode) {
			// Start from small and grow
			petSprite.scaleX = 0.1;
			petSprite.scaleY = 0.1;
			petSprite.alpha = 0;
			// Animate growth and fade in
			tween(petSprite, {
				scaleX: 1.2,
				scaleY: 1.2,
				alpha: 1
			}, {
				duration: 1000,
				easing: tween.bounceOut
			});
			// Add spinning effect
			tween(petSprite, {
				rotation: Math.PI * 2
			}, {
				duration: 1500,
				easing: tween.easeOut
			});
		}
	};
	// Show pet info
	self.showInfo = function () {
		var infoBg = LK.getAsset('petInfoBg', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		infoBg.x = 2048 / 2;
		infoBg.y = 2732 / 2;
		game.addChild(infoBg);
		// Pet name
		var nameText = new Text2(self.petType.toUpperCase(), {
			size: 80,
			fill: 0xFFD700
		});
		nameText.anchor.set(0.5, 0.5);
		nameText.x = 2048 / 2;
		nameText.y = 2732 / 2 - 150;
		game.addChild(nameText);
		// Bonus info
		var bonusText = new Text2('Score per tap: +' + self.bonusPerTap, {
			size: 60,
			fill: 0xFFFFFF
		});
		bonusText.anchor.set(0.5, 0.5);
		bonusText.x = 2048 / 2;
		bonusText.y = 2732 / 2 - 50;
		game.addChild(bonusText);
		// Rarity info
		var rarityText = new Text2('Rarity: ' + self.rarity, {
			size: 60,
			fill: 0x00FF00
		});
		rarityText.anchor.set(0.5, 0.5);
		rarityText.x = 2048 / 2;
		rarityText.y = 2732 / 2 + 50;
		game.addChild(rarityText);
		// Drop chance info
		var chanceText = new Text2('Drop chance: ' + (self.dropChance * 100).toFixed(2) + '%', {
			size: 60,
			fill: 0xFF6B6B
		});
		chanceText.anchor.set(0.5, 0.5);
		chanceText.x = 2048 / 2;
		chanceText.y = 2732 / 2 + 150;
		game.addChild(chanceText);
		// Auto-hide after 3 seconds
		LK.setTimeout(function () {
			infoBg.destroy();
			nameText.destroy();
			bonusText.destroy();
			rarityText.destroy();
			chanceText.destroy();
		}, 3000);
	};
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x2c3e50 // Dark blue-gray background
});
/**** 
* Game Code
****/ 
// Reset all storage on game start
// Enhanced egg assets for 120 fps ultra-realistic mode
// Enhanced cracked egg assets for 120 fps mode
// Ultra-realistic environment assets for 120 fps mode
storage.currentMultiplier = 1;
storage.inventory = [];
storage.equippedAnimals = [];
// Global game variables
var currentMultiplier = 1;
var inventory = [];
var isInventoryOpen = false;
var inventoryOverlay = null;
var equippedAnimals = [];
var maxEquippedPets = 3;
var fallingEgg = null;
var eggClickCount = 0;
var deleteMode = false;
var selectedDeleteAnimalType = null;
// Graphics settings variables
var graphicsMode = 60; // 30, 60, 90, 120 fps
var isMenuOpen = false;
var menuOverlay = null;
var ultraRealisticMode = false;
// Rain system variables
var rainDrops = [];
var isRaining = false;
var rainTimer = 0;
var rainDuration = 300000; // 5 minutes in milliseconds
var rainInterval = 600000; // 10 minutes in milliseconds
var nextRainTime = 0;
// Clock system variables (20x faster than real time)
var gameTime = 0; // Game time in milliseconds
var clockDisplay = null;
var sunElement = null;
var moonElement = null;
var isDayTime = true;
var skyTint = 0xffffff;
// Function to get enhanced egg asset based on graphics mode
function getEnhancedEggAsset(baseAssetName, anchorSettings) {
	var assetName = baseAssetName;
	if (ultraRealisticMode && graphicsMode === 120) {
		assetName = baseAssetName + 'Ultra';
	}
	return LK.getAsset(assetName, {});
}
// Reset score to 0 on game start
LK.setScore(0);
// Initialize score display
var scoreTxt = new Text2('0', {
	size: 120,
	fill: 0xFFFFFF
});
// Set score text properties
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Position score text with some padding from top
scoreTxt.y = 100;
// Create menu button in top-left (avoiding the platform menu icon area)
var menuBtn = new Container();
var menuBg = LK.getAsset('menuButton', {
	anchorX: 0.5,
	anchorY: 0.5
});
menuBtn.addChild(menuBg);
// Add hamburger lines
var line1 = LK.getAsset('menuLine', {
	anchorX: 0.5,
	anchorY: 0.5
});
line1.y = -15;
menuBtn.addChild(line1);
var line2 = LK.getAsset('menuLine', {
	anchorX: 0.5,
	anchorY: 0.5
});
menuBtn.addChild(line2);
var line3 = LK.getAsset('menuLine', {
	anchorX: 0.5,
	anchorY: 0.5
});
line3.y = 15;
menuBtn.addChild(line3);
// Position menu button at top-right with safe padding
menuBtn.x = 2048 - 150;
menuBtn.y = 150;
game.addChild(menuBtn);
// Add ultra-realistic environment for 120 fps mode
var environmentElements = [];
function createUltraRealisticEnvironment() {
	if (ultraRealisticMode && graphicsMode === 120) {
		// Animation functions removed with campfire
		// Pine tree creation removed
		// Normal tree creation removed
		// Center log removed for cleaner environment
		// Stone paths removed for cleaner environment
		// Campfire removed for cleaner environment
		// Create clock display
		clockDisplay = new Text2('12:00', {
			size: 60,
			fill: 0xffffff
		});
		clockDisplay.anchor.set(0.5, 0);
		clockDisplay.x = 2048 / 2;
		clockDisplay.y = 50;
		game.addChild(clockDisplay);
		// Sun and moon elements removed for 120 fps mode
		sunElement = null;
		moonElement = null;
		// Initialize rain system
		nextRainTime = Date.now() + rainInterval;
	}
}
// Rain creation function
function createRainDrop() {
	if (!ultraRealisticMode || graphicsMode !== 120) {
		return;
	}
	var rainDrop = LK.getAsset('rainDrop', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	rainDrop.x = Math.random() * 2048;
	rainDrop.y = -50;
	rainDrop.speed = 8 + Math.random() * 4;
	rainDrop.lastY = rainDrop.y;
	game.addChild(rainDrop);
	rainDrops.push(rainDrop);
}
// Rain splash effect function
function createRainSplash(x, y) {
	if (!ultraRealisticMode || graphicsMode !== 120) {
		return;
	}
	var splash = LK.getAsset('rainSplash', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	splash.x = x;
	splash.y = y;
	splash.alpha = 0.8;
	splash.scaleX = 0.5;
	splash.scaleY = 0.5;
	game.addChild(splash);
	// Animate splash with shock wave effect
	tween(splash, {
		scaleX: 3,
		scaleY: 3,
		alpha: 0
	}, {
		duration: 400,
		easing: tween.easeOut,
		onFinish: function onFinish() {
			splash.destroy();
		}
	});
}
// Update clock display
function updateClock() {
	if (!ultraRealisticMode || graphicsMode !== 120 || !clockDisplay) {
		return;
	}
	// Game time runs 20x faster than real time
	var currentTime = Date.now();
	gameTime += (currentTime - (gameTime > 0 ? gameTime : currentTime)) * 20;
	// Calculate hours and minutes (12-hour format)
	var totalMinutes = Math.floor(gameTime / 60000) % (24 * 60);
	var hours = Math.floor(totalMinutes / 60) % 24;
	var minutes = totalMinutes % 60;
	var displayHours = hours % 12;
	if (displayHours === 0) {
		displayHours = 12;
	}
	var timeString = displayHours.toString().padStart(2, '0') + ':' + minutes.toString().padStart(2, '0');
	clockDisplay.setText(timeString);
	// Day/night cycle removed for 120 fps mode
	isDayTime = hours >= 6 && hours < 18;
}
// Add tap instruction text
var instructionTxt = new Text2('Tap anywhere to score!', {
	size: 60,
	fill: 0xBDC3C7
});
instructionTxt.anchor.set(0.5, 0.5);
instructionTxt.x = 2048 / 2;
instructionTxt.y = 2732 / 2;
game.addChild(instructionTxt);
// Initialize ultra-realistic environment
createUltraRealisticEnvironment();
// Handle tap events on the game area
game.down = function (x, y, obj) {
	// Calculate pet bonus based on equipped animal quantities
	var petBonus = 0;
	// Count each animal type
	var dogCount = 0;
	var catCount = 0;
	var snakeCount = 0;
	var goldenDogCount = 0;
	var goldenCatCount = 0;
	var goldenSnakeCount = 0;
	var dinosaurCount = 0;
	var bearCount = 0;
	var beeCount = 0;
	var goldenDinosaurCount = 0;
	var goldenBearCount = 0;
	var goldenBeeCount = 0;
	var trexCount = 0;
	var velectorCount = 0;
	var titanaBullCount = 0;
	var goldenTrexCount = 0;
	var goldenVelectorCount = 0;
	var goldenTitanaBullCount = 0;
	var ironManCount = 0;
	var captainAmericaCount = 0;
	var spidermanCount = 0;
	var goldenIronManCount = 0;
	var goldenCaptainAmericaCount = 0;
	var goldenSpidermanCount = 0;
	var kingCount = 0;
	var knightCount = 0;
	var humanCount = 0;
	var goldenKingCount = 0;
	var goldenKnightCount = 0;
	var goldenHumanCount = 0;
	var earthCount = 0;
	var moonCount = 0;
	var meteorCount = 0;
	var sunCount = 0;
	var jupiterCount = 0;
	var neptuneCount = 0;
	var goldenEarthCount = 0;
	var goldenMoonCount = 0;
	var goldenMeteorCount = 0;
	var goldenSunCount = 0;
	var goldenJupiterCount = 0;
	var goldenNeptuneCount = 0;
	var andromedaGalaxyCount = 0;
	var normalGalaxyCount = 0;
	var milkyWayGalaxyCount = 0;
	var goldenAndromedaGalaxyCount = 0;
	var goldenNormalGalaxyCount = 0;
	var goldenMilkyWayGalaxyCount = 0;
	for (var j = 0; j < equippedAnimals.length; j++) {
		if (equippedAnimals[j] === 'dog') {
			dogCount++;
		} else if (equippedAnimals[j] === 'cat') {
			catCount++;
		} else if (equippedAnimals[j] === 'snake') {
			snakeCount++;
		} else if (equippedAnimals[j] === 'goldenDog') {
			goldenDogCount++;
		} else if (equippedAnimals[j] === 'goldenCat') {
			goldenCatCount++;
		} else if (equippedAnimals[j] === 'goldenSnake') {
			goldenSnakeCount++;
		} else if (equippedAnimals[j] === 'dinosaur') {
			dinosaurCount++;
		} else if (equippedAnimals[j] === 'bear') {
			bearCount++;
		} else if (equippedAnimals[j] === 'bee') {
			beeCount++;
		} else if (equippedAnimals[j] === 'goldenDinosaur') {
			goldenDinosaurCount++;
		} else if (equippedAnimals[j] === 'goldenBear') {
			goldenBearCount++;
		} else if (equippedAnimals[j] === 'goldenBee') {
			goldenBeeCount++;
		} else if (equippedAnimals[j] === 'trex') {
			trexCount++;
		} else if (equippedAnimals[j] === 'velector') {
			velectorCount++;
		} else if (equippedAnimals[j] === 'titanaBull') {
			titanaBullCount++;
		} else if (equippedAnimals[j] === 'goldenTrex') {
			goldenTrexCount++;
		} else if (equippedAnimals[j] === 'goldenVelector') {
			goldenVelectorCount++;
		} else if (equippedAnimals[j] === 'goldenTitanaBull') {
			goldenTitanaBullCount++;
		} else if (equippedAnimals[j] === 'ironMan') {
			ironManCount++;
		} else if (equippedAnimals[j] === 'captainAmerica') {
			captainAmericaCount++;
		} else if (equippedAnimals[j] === 'spiderman') {
			spidermanCount++;
		} else if (equippedAnimals[j] === 'goldenIronMan') {
			goldenIronManCount++;
		} else if (equippedAnimals[j] === 'goldenCaptainAmerica') {
			goldenCaptainAmericaCount++;
		} else if (equippedAnimals[j] === 'goldenSpiderman') {
			goldenSpidermanCount++;
		} else if (equippedAnimals[j] === 'king') {
			kingCount++;
		} else if (equippedAnimals[j] === 'knight') {
			knightCount++;
		} else if (equippedAnimals[j] === 'human') {
			humanCount++;
		} else if (equippedAnimals[j] === 'goldenKing') {
			goldenKingCount++;
		} else if (equippedAnimals[j] === 'goldenKnight') {
			goldenKnightCount++;
		} else if (equippedAnimals[j] === 'goldenHuman') {
			goldenHumanCount++;
		} else if (equippedAnimals[j] === 'earth') {
			earthCount++;
		} else if (equippedAnimals[j] === 'moon') {
			moonCount++;
		} else if (equippedAnimals[j] === 'meteor') {
			meteorCount++;
		} else if (equippedAnimals[j] === 'sun') {
			sunCount++;
		} else if (equippedAnimals[j] === 'jupiter') {
			jupiterCount++;
		} else if (equippedAnimals[j] === 'neptune') {
			neptuneCount++;
		} else if (equippedAnimals[j] === 'goldenEarth') {
			goldenEarthCount++;
		} else if (equippedAnimals[j] === 'goldenMoon') {
			goldenMoonCount++;
		} else if (equippedAnimals[j] === 'goldenMeteor') {
			goldenMeteorCount++;
		} else if (equippedAnimals[j] === 'goldenSun') {
			goldenSunCount++;
		} else if (equippedAnimals[j] === 'goldenJupiter') {
			goldenJupiterCount++;
		} else if (equippedAnimals[j] === 'goldenNeptune') {
			goldenNeptuneCount++;
		} else if (equippedAnimals[j] === 'andromedaGalaxy') {
			andromedaGalaxyCount++;
		} else if (equippedAnimals[j] === 'normalGalaxy') {
			normalGalaxyCount++;
		} else if (equippedAnimals[j] === 'milkyWayGalaxy') {
			milkyWayGalaxyCount++;
		} else if (equippedAnimals[j] === 'goldenAndromedaGalaxy') {
			goldenAndromedaGalaxyCount++;
		} else if (equippedAnimals[j] === 'goldenNormalGalaxy') {
			goldenNormalGalaxyCount++;
		} else if (equippedAnimals[j] === 'goldenMilkyWayGalaxy') {
			goldenMilkyWayGalaxyCount++;
		}
	}
	// Each dog gives +1 bonus per tap
	petBonus += dogCount;
	// Cats: 1 cat = +2, 2 cats = +4, 3 cats = +6 (total bonus)
	if (catCount === 1) {
		petBonus += 2;
	} else if (catCount === 2) {
		petBonus += 4;
	} else if (catCount === 3) {
		petBonus += 6;
	}
	// Snakes: 1 snake = +5, 2 snakes = +10, 3 snakes = +15 (total bonus)
	if (snakeCount === 1) {
		petBonus += 5;
	} else if (snakeCount === 2) {
		petBonus += 10;
	} else if (snakeCount === 3) {
		petBonus += 15;
	}
	// Golden pets bonuses
	// Golden dogs: 1 = +3, 2 = +6, 3 = +9 per tap
	if (goldenDogCount === 1) {
		petBonus += 3;
	} else if (goldenDogCount === 2) {
		petBonus += 6;
	} else if (goldenDogCount === 3) {
		petBonus += 9;
	}
	// Golden cats: 1 = +6, 2 = +12, 3 = +18 per tap
	if (goldenCatCount === 1) {
		petBonus += 6;
	} else if (goldenCatCount === 2) {
		petBonus += 12;
	} else if (goldenCatCount === 3) {
		petBonus += 18;
	}
	// Golden snakes: 1 = +10, 2 = +20, 3 = +30 per tap
	if (goldenSnakeCount === 1) {
		petBonus += 10;
	} else if (goldenSnakeCount === 2) {
		petBonus += 20;
	} else if (goldenSnakeCount === 3) {
		petBonus += 30;
	}
	// Green egg pets bonuses
	// Dinosaurs: 1 = +30, 2 = +60, 3 = +90 per tap
	if (dinosaurCount === 1) {
		petBonus += 30;
	} else if (dinosaurCount === 2) {
		petBonus += 60;
	} else if (dinosaurCount === 3) {
		petBonus += 90;
	}
	// Bears: 1 = +20, 2 = +40, 3 = +60 per tap
	if (bearCount === 1) {
		petBonus += 20;
	} else if (bearCount === 2) {
		petBonus += 40;
	} else if (bearCount === 3) {
		petBonus += 60;
	}
	// Bees: 1 = +10, 2 = +20, 3 = +30 per tap
	if (beeCount === 1) {
		petBonus += 10;
	} else if (beeCount === 2) {
		petBonus += 20;
	} else if (beeCount === 3) {
		petBonus += 30;
	}
	// Golden green egg pets bonuses (2x multiplier)
	// Golden dinosaurs: 1 = +60, 2 = +120, 3 = +180 per tap
	if (goldenDinosaurCount === 1) {
		petBonus += 60;
	} else if (goldenDinosaurCount === 2) {
		petBonus += 120;
	} else if (goldenDinosaurCount === 3) {
		petBonus += 180;
	}
	// Golden bears: 1 = +40, 2 = +80, 3 = +120 per tap
	if (goldenBearCount === 1) {
		petBonus += 40;
	} else if (goldenBearCount === 2) {
		petBonus += 80;
	} else if (goldenBearCount === 3) {
		petBonus += 120;
	}
	// Golden bees: 1 = +20, 2 = +40, 3 = +60 per tap
	if (goldenBeeCount === 1) {
		petBonus += 20;
	} else if (goldenBeeCount === 2) {
		petBonus += 40;
	} else if (goldenBeeCount === 3) {
		petBonus += 60;
	}
	// Red egg pets bonuses
	// T-rex: 1 = +100, 2 = +200, 3 = +300 per tap
	if (trexCount === 1) {
		petBonus += 100;
	} else if (trexCount === 2) {
		petBonus += 200;
	} else if (trexCount === 3) {
		petBonus += 300;
	}
	// Velector: 1 = +80, 2 = +160, 3 = +240 per tap
	if (velectorCount === 1) {
		petBonus += 80;
	} else if (velectorCount === 2) {
		petBonus += 160;
	} else if (velectorCount === 3) {
		petBonus += 240;
	}
	// Titana Bull: 1 = +50, 2 = +100, 3 = +150 per tap
	if (titanaBullCount === 1) {
		petBonus += 50;
	} else if (titanaBullCount === 2) {
		petBonus += 100;
	} else if (titanaBullCount === 3) {
		petBonus += 150;
	}
	// Golden red egg pets bonuses
	// Golden T-rex: 1 = +200, 2 = +400, 3 = +600 per tap
	if (goldenTrexCount === 1) {
		petBonus += 200;
	} else if (goldenTrexCount === 2) {
		petBonus += 400;
	} else if (goldenTrexCount === 3) {
		petBonus += 600;
	}
	// Golden Velector: 1 = +160, 2 = +320, 3 = +480 per tap
	if (goldenVelectorCount === 1) {
		petBonus += 160;
	} else if (goldenVelectorCount === 2) {
		petBonus += 320;
	} else if (goldenVelectorCount === 3) {
		petBonus += 480;
	}
	// Golden Titana Bull: 1 = +100, 2 = +200, 3 = +300 per tap
	if (goldenTitanaBullCount === 1) {
		petBonus += 100;
	} else if (goldenTitanaBullCount === 2) {
		petBonus += 200;
	} else if (goldenTitanaBullCount === 3) {
		petBonus += 300;
	}
	// Purple egg pets bonuses
	// Iron Man: 1 = +500, 2 = +1000, 3 = +1500 per tap
	if (ironManCount === 1) {
		petBonus += 500;
	} else if (ironManCount === 2) {
		petBonus += 1000;
	} else if (ironManCount === 3) {
		petBonus += 1500;
	}
	// Captain America: 1 = +300, 2 = +600, 3 = +900 per tap
	if (captainAmericaCount === 1) {
		petBonus += 300;
	} else if (captainAmericaCount === 2) {
		petBonus += 600;
	} else if (captainAmericaCount === 3) {
		petBonus += 900;
	}
	// Spiderman: 1 = +250, 2 = +500, 3 = +750 per tap
	if (spidermanCount === 1) {
		petBonus += 250;
	} else if (spidermanCount === 2) {
		petBonus += 500;
	} else if (spidermanCount === 3) {
		petBonus += 750;
	}
	// Golden purple egg pets bonuses (2x multiplier)
	// Golden Iron Man: 1 = +1000, 2 = +2000, 3 = +3000 per tap
	if (goldenIronManCount === 1) {
		petBonus += 1000;
	} else if (goldenIronManCount === 2) {
		petBonus += 2000;
	} else if (goldenIronManCount === 3) {
		petBonus += 3000;
	}
	// Golden Captain America: 1 = +600, 2 = +1200, 3 = +1800 per tap
	if (goldenCaptainAmericaCount === 1) {
		petBonus += 600;
	} else if (goldenCaptainAmericaCount === 2) {
		petBonus += 1200;
	} else if (goldenCaptainAmericaCount === 3) {
		petBonus += 1800;
	}
	// Golden Spiderman: 1 = +500, 2 = +1000, 3 = +1500 per tap
	if (goldenSpidermanCount === 1) {
		petBonus += 500;
	} else if (goldenSpidermanCount === 2) {
		petBonus += 1000;
	} else if (goldenSpidermanCount === 3) {
		petBonus += 1500;
	}
	// White egg pets bonuses
	// King: 1 = +10000, 2 = +20000, 3 = +30000 per tap
	if (kingCount === 1) {
		petBonus += 10000;
	} else if (kingCount === 2) {
		petBonus += 20000;
	} else if (kingCount === 3) {
		petBonus += 30000;
	}
	// Knight: 1 = +5000, 2 = +10000, 3 = +15000 per tap
	if (knightCount === 1) {
		petBonus += 5000;
	} else if (knightCount === 2) {
		petBonus += 10000;
	} else if (knightCount === 3) {
		petBonus += 15000;
	}
	// Human: 1 = +2500, 2 = +5000, 3 = +7500 per tap
	if (humanCount === 1) {
		petBonus += 2500;
	} else if (humanCount === 2) {
		petBonus += 5000;
	} else if (humanCount === 3) {
		petBonus += 7500;
	}
	// Golden white egg pets bonuses (2x multiplier)
	// Golden King: 1 = +20000, 2 = +40000, 3 = +60000 per tap
	if (goldenKingCount === 1) {
		petBonus += 20000;
	} else if (goldenKingCount === 2) {
		petBonus += 40000;
	} else if (goldenKingCount === 3) {
		petBonus += 60000;
	}
	// Golden Knight: 1 = +10000, 2 = +20000, 3 = +30000 per tap
	if (goldenKnightCount === 1) {
		petBonus += 10000;
	} else if (goldenKnightCount === 2) {
		petBonus += 20000;
	} else if (goldenKnightCount === 3) {
		petBonus += 30000;
	}
	// Golden Human: 1 = +5000, 2 = +10000, 3 = +15000 per tap
	if (goldenHumanCount === 1) {
		petBonus += 5000;
	} else if (goldenHumanCount === 2) {
		petBonus += 10000;
	} else if (goldenHumanCount === 3) {
		petBonus += 15000;
	}
	// Space egg pets bonuses
	// Earth: 1 = +100000, 2 = +200000, 3 = +300000 per tap
	if (earthCount === 1) {
		petBonus += 100000;
	} else if (earthCount === 2) {
		petBonus += 200000;
	} else if (earthCount === 3) {
		petBonus += 300000;
	}
	// Moon: 1 = +50000, 2 = +100000, 3 = +150000 per tap
	if (moonCount === 1) {
		petBonus += 50000;
	} else if (moonCount === 2) {
		petBonus += 100000;
	} else if (moonCount === 3) {
		petBonus += 150000;
	}
	// Meteor: 1 = +25000, 2 = +50000, 3 = +75000 per tap
	if (meteorCount === 1) {
		petBonus += 25000;
	} else if (meteorCount === 2) {
		petBonus += 50000;
	} else if (meteorCount === 3) {
		petBonus += 75000;
	}
	// Sun: 1 = +500000, 2 = +1000000, 3 = +1500000 per tap
	if (sunCount === 1) {
		petBonus += 500000;
	} else if (sunCount === 2) {
		petBonus += 1000000;
	} else if (sunCount === 3) {
		petBonus += 1500000;
	}
	// Jupiter: 1 = +250000, 2 = +500000, 3 = +750000 per tap
	if (jupiterCount === 1) {
		petBonus += 250000;
	} else if (jupiterCount === 2) {
		petBonus += 500000;
	} else if (jupiterCount === 3) {
		petBonus += 750000;
	}
	// Neptune: 1 = +200000, 2 = +400000, 3 = +600000 per tap
	if (neptuneCount === 1) {
		petBonus += 200000;
	} else if (neptuneCount === 2) {
		petBonus += 400000;
	} else if (neptuneCount === 3) {
		petBonus += 600000;
	}
	// Golden space egg pets bonuses (2x multiplier)
	// Golden Earth: 1 = +200000, 2 = +400000, 3 = +600000 per tap
	if (goldenEarthCount === 1) {
		petBonus += 200000;
	} else if (goldenEarthCount === 2) {
		petBonus += 400000;
	} else if (goldenEarthCount === 3) {
		petBonus += 600000;
	}
	// Golden Moon: 1 = +100000, 2 = +200000, 3 = +300000 per tap
	if (goldenMoonCount === 1) {
		petBonus += 100000;
	} else if (goldenMoonCount === 2) {
		petBonus += 200000;
	} else if (goldenMoonCount === 3) {
		petBonus += 300000;
	}
	// Golden Meteor: 1 = +50000, 2 = +100000, 3 = +150000 per tap
	if (goldenMeteorCount === 1) {
		petBonus += 50000;
	} else if (goldenMeteorCount === 2) {
		petBonus += 100000;
	} else if (goldenMeteorCount === 3) {
		petBonus += 150000;
	}
	// Golden Sun: 1 = +1000000, 2 = +2000000, 3 = +3000000 per tap
	if (goldenSunCount === 1) {
		petBonus += 1000000;
	} else if (goldenSunCount === 2) {
		petBonus += 2000000;
	} else if (goldenSunCount === 3) {
		petBonus += 3000000;
	}
	// Golden Jupiter: 1 = +500000, 2 = +1000000, 3 = +1500000 per tap
	if (goldenJupiterCount === 1) {
		petBonus += 500000;
	} else if (goldenJupiterCount === 2) {
		petBonus += 1000000;
	} else if (goldenJupiterCount === 3) {
		petBonus += 1500000;
	}
	// Golden Neptune: 1 = +400000, 2 = +800000, 3 = +1200000 per tap
	if (goldenNeptuneCount === 1) {
		petBonus += 400000;
	} else if (goldenNeptuneCount === 2) {
		petBonus += 800000;
	} else if (goldenNeptuneCount === 3) {
		petBonus += 1200000;
	}
	// Galaxy egg pets bonuses
	// Andromeda Galaxy: 1 = +5000000, 2 = +10000000, 3 = +15000000 per tap
	if (andromedaGalaxyCount === 1) {
		petBonus += 5000000;
	} else if (andromedaGalaxyCount === 2) {
		petBonus += 10000000;
	} else if (andromedaGalaxyCount === 3) {
		petBonus += 15000000;
	}
	// Normal Galaxy: 1 = +10000000, 2 = +20000000, 3 = +30000000 per tap
	if (normalGalaxyCount === 1) {
		petBonus += 10000000;
	} else if (normalGalaxyCount === 2) {
		petBonus += 20000000;
	} else if (normalGalaxyCount === 3) {
		petBonus += 30000000;
	}
	// Milky Way Galaxy: 1 = +20000000, 2 = +40000000, 3 = +60000000 per tap
	if (milkyWayGalaxyCount === 1) {
		petBonus += 20000000;
	} else if (milkyWayGalaxyCount === 2) {
		petBonus += 40000000;
	} else if (milkyWayGalaxyCount === 3) {
		petBonus += 60000000;
	}
	// Golden galaxy egg pets bonuses (2x multiplier)
	// Golden Andromeda Galaxy: 1 = +10000000, 2 = +20000000, 3 = +30000000 per tap
	if (goldenAndromedaGalaxyCount === 1) {
		petBonus += 10000000;
	} else if (goldenAndromedaGalaxyCount === 2) {
		petBonus += 20000000;
	} else if (goldenAndromedaGalaxyCount === 3) {
		petBonus += 30000000;
	}
	// Golden Normal Galaxy: 1 = +20000000, 2 = +40000000, 3 = +60000000 per tap
	if (goldenNormalGalaxyCount === 1) {
		petBonus += 20000000;
	} else if (goldenNormalGalaxyCount === 2) {
		petBonus += 40000000;
	} else if (goldenNormalGalaxyCount === 3) {
		petBonus += 60000000;
	}
	// Golden Milky Way Galaxy: 1 = +40000000, 2 = +80000000, 3 = +120000000 per tap
	if (goldenMilkyWayGalaxyCount === 1) {
		petBonus += 40000000;
	} else if (goldenMilkyWayGalaxyCount === 2) {
		petBonus += 80000000;
	} else if (goldenMilkyWayGalaxyCount === 3) {
		petBonus += 120000000;
	}
	// Base tap score is always 1, plus calculated pet bonus
	var totalScore = 1 + petBonus;
	LK.setScore(LK.getScore() + totalScore);
	// Update score display
	scoreTxt.setText(LK.getScore().toString());
	// Create visual feedback at tap location showing total points gained
	var feedbackText = '+' + totalScore.toString();
	var tapFeedback = new Text2(feedbackText, {
		size: ultraRealisticMode ? 120 : 80,
		fill: ultraRealisticMode ? 0xFFD700 : 0x27AE60
	});
	tapFeedback.anchor.set(0.5, 0.5);
	tapFeedback.x = x;
	tapFeedback.y = y;
	tapFeedback.alpha = 1;
	game.addChild(tapFeedback);
	// Enhanced animation for ultra-realistic mode
	if (ultraRealisticMode) {
		// Create enhanced circular shock wave with multiple layers
		var shockWave = LK.getAsset('shockWave', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		shockWave.x = x;
		shockWave.y = y;
		shockWave.alpha = 0.9;
		shockWave.scaleX = 0.5;
		shockWave.scaleY = 0.5;
		game.addChild(shockWave);
		// Create secondary shock wave for depth
		var shockWave2 = LK.getAsset('shockWave', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		shockWave2.x = x;
		shockWave2.y = y;
		shockWave2.alpha = 0.6;
		shockWave2.scaleX = 0.3;
		shockWave2.scaleY = 0.3;
		shockWave2.tint = 0xFFD700;
		game.addChild(shockWave2);
		// Animate primary shock wave
		tween(shockWave, {
			scaleX: 12,
			scaleY: 12,
			alpha: 0
		}, {
			duration: 1200,
			easing: tween.easeOut
		});
		// Animate secondary shock wave with delay
		tween(shockWave2, {
			scaleX: 15,
			scaleY: 15,
			alpha: 0
		}, {
			duration: 1500,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				shockWave.destroy();
				shockWave2.destroy();
			}
		});
		// Create enhanced "+1" text that appears on screen
		var plusOneScreenText = new Text2('+1', {
			size: 150,
			fill: 0xFFD700
		});
		plusOneScreenText.anchor.set(0.5, 0.5);
		plusOneScreenText.x = x;
		plusOneScreenText.y = y - 100;
		plusOneScreenText.alpha = 0;
		game.addChild(plusOneScreenText);
		// Animate "+1" text with scale and float effect
		tween(plusOneScreenText, {
			alpha: 1,
			scaleX: 2.0,
			scaleY: 2.0
		}, {
			duration: 200,
			easing: tween.bounceOut
		});
		// Float "+1" text upward and fade out
		tween(plusOneScreenText, {
			y: y - 300,
			alpha: 0,
			scaleX: 1.5,
			scaleY: 1.5
		}, {
			duration: 1200,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				plusOneScreenText.destroy();
			}
		});
		// Create enhanced score text with glow above score that shows the full score gained
		var plusOneText = new Text2('+' + totalScore, {
			size: 120,
			fill: 0xFFD700
		});
		plusOneText.anchor.set(0.5, 0.5);
		plusOneText.x = scoreTxt.x;
		plusOneText.y = scoreTxt.y + 80;
		plusOneText.alpha = 0;
		LK.gui.top.addChild(plusOneText);
		// Animate score text with bounce and glow
		tween(plusOneText, {
			alpha: 1,
			scaleX: 1.5,
			scaleY: 1.5
		}, {
			duration: 300,
			easing: tween.bounceOut
		});
		// Move score text toward main score
		tween(plusOneText, {
			y: scoreTxt.y - 80,
			alpha: 0,
			scaleX: 0.8,
			scaleY: 0.8
		}, {
			duration: 1800,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				plusOneText.destroy();
			}
		});
		// Enhanced tap feedback with particle effect
		tween(tapFeedback, {
			scaleX: 2.5,
			scaleY: 2.5,
			alpha: 0.8
		}, {
			duration: 250,
			easing: tween.bounceOut
		});
		// Create particle burst effect
		for (var particleIndex = 0; particleIndex < 8; particleIndex++) {
			var particle = new Text2('★', {
				size: 40,
				fill: 0xFFD700
			});
			particle.anchor.set(0.5, 0.5);
			particle.x = x;
			particle.y = y;
			particle.alpha = 0.8;
			game.addChild(particle);
			var angle = particleIndex / 8 * Math.PI * 2;
			var distance = 200 + Math.random() * 100;
			tween(particle, {
				x: x + Math.cos(angle) * distance,
				y: y + Math.sin(angle) * distance,
				alpha: 0,
				scaleX: 0.3,
				scaleY: 0.3,
				rotation: Math.PI
			}, {
				duration: 1000 + Math.random() * 500,
				easing: tween.easeOut,
				onFinish: function onFinish() {
					particle.destroy();
				}
			});
		}
		// Enhanced floating animation with complex path
		tween(tapFeedback, {
			y: y - 300,
			x: x + (Math.random() - 0.5) * 150,
			rotation: Math.PI / 3,
			alpha: 0
		}, {
			duration: 2000,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				tapFeedback.destroy();
			}
		});
	} else if (graphicsMode === 90) {
		// Enhanced 90 fps mode animation with detailed and realistic effects
		// Create enhanced glow effect with multiple phases
		tween(tapFeedback, {
			scaleX: 2.0,
			scaleY: 2.0,
			alpha: 0.9
		}, {
			duration: 150,
			easing: tween.easeOut
		});
		// Create floating animation with enhanced rotation and movement
		tween(tapFeedback, {
			y: y - 250,
			x: x + (Math.random() - 0.5) * 100,
			rotation: Math.PI / 3,
			alpha: 0,
			scaleX: 0.5,
			scaleY: 0.5
		}, {
			duration: 1800,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				tapFeedback.destroy();
			}
		});
		// Create realistic bounce effect with shadow simulation
		LK.setTimeout(function () {
			tween(tapFeedback, {
				scaleX: 1.2,
				scaleY: 1.2
			}, {
				duration: 200,
				easing: tween.bounceOut
			});
		}, 150);
		// Add realistic color transition for enhanced visual appeal
		LK.setTimeout(function () {
			tween(tapFeedback, {
				tint: 0xFFD700
			}, {
				duration: 300,
				easing: tween.easeInOut
			});
		}, 300);
		// Create secondary glow burst effect
		var secondaryGlow = new Text2('+' + totalScore.toString(), {
			size: 100,
			fill: 0xFFFFFF,
			alpha: 0.6
		});
		secondaryGlow.anchor.set(0.5, 0.5);
		secondaryGlow.x = x;
		secondaryGlow.y = y;
		game.addChild(secondaryGlow);
		// Animate secondary glow with different trajectory
		tween(secondaryGlow, {
			y: y - 180,
			x: x + (Math.random() - 0.5) * 80,
			scaleX: 1.8,
			scaleY: 1.8,
			alpha: 0,
			rotation: -Math.PI / 4
		}, {
			duration: 1600,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				secondaryGlow.destroy();
			}
		});
	} else {
		// Standard animation for 30 and 60 fps
		var startY = y;
		var animationDuration = graphicsMode === 30 ? 1200 : 800;
		var startTime = Date.now();
		var _animateCallback = function animateCallback() {
			var elapsed = Date.now() - startTime;
			var progress = elapsed / animationDuration;
			if (progress >= 1) {
				tapFeedback.destroy();
				return;
			}
			// Move text upward and fade out
			tapFeedback.y = startY - progress * 100;
			tapFeedback.alpha = 1 - progress;
			var frameDelay = graphicsMode === 30 ? 33 : 16;
			LK.setTimeout(_animateCallback, frameDelay);
		};
		_animateCallback();
	}
	// Hide instruction text after first tap
	if (LK.getScore() === 1) {
		instructionTxt.alpha = 0;
	}
};
// Add Shop button
var shopBtn = new Text2('Shop', {
	size: 80,
	fill: 0xFFFFFF
});
shopBtn.anchor.set(1, 0);
LK.gui.topRight.addChild(shopBtn);
shopBtn.x = -20; // Small padding from right edge
shopBtn.y = 20; // Small padding from top
// Shop interface state
var isShopOpen = false;
var shopOverlay = null;
// Handle shop button tap
shopBtn.down = function (x, y, obj) {
	if (!isShopOpen) {
		// Open shop - create black overlay using Container
		shopOverlay = new Container();
		// Create black background shape for overlay
		var shopBackground = LK.getAsset('shopBg', {
			width: 2048,
			height: 2732,
			color: 0x000000,
			shape: 'box'
		});
		shopOverlay.addChild(shopBackground);
		shopOverlay.x = 0;
		shopOverlay.y = 0;
		// NORMAL EGGS SECTION
		// Normal eggs data
		var normalEggs = [{
			asset: 'egg',
			price: '1000 Score',
			color: 0xFFFFFF
		}, {
			asset: 'greenEgg',
			price: '15000 Score',
			color: 0x00ff00
		}, {
			asset: 'redEgg',
			price: '50000 Score',
			color: 0xff0000
		}, {
			asset: 'purpleEgg',
			price: '1250000 Score',
			color: 0x800080
		}, {
			asset: 'whiteEgg',
			price: '10M',
			color: 0xffffff
		}, {
			asset: 'spaceEgg',
			price: '100M',
			color: 0x4169e1
		}, {
			asset: 'space2Egg',
			price: '200M',
			color: 0x8a2be2
		}, {
			asset: 'galaxyEgg',
			price: '500M',
			color: 0x800080
		}];
		// Golden eggs data
		var goldenEggs = [{
			asset: 'goldenEgg',
			price: '10000 Score',
			color: 0xFFD700
		}, {
			asset: 'goldenGreenEgg',
			price: '30000 Score',
			color: 0x90ee90
		}, {
			asset: 'goldenRedEgg',
			price: '100000 Score',
			color: 0xff6600
		}, {
			asset: 'goldenPurpleEgg',
			price: '2500000 Score',
			color: 0xdaa520
		}, {
			asset: 'goldenWhiteEgg',
			price: '20M',
			color: 0xffd700
		}, {
			asset: 'goldenSpaceEgg',
			price: '200M',
			color: 0xffd700
		}, {
			asset: 'goldenSpace2Egg',
			price: '400M',
			color: 0xffd700
		}, {
			asset: 'goldenGalaxyEgg',
			price: '1B',
			color: 0xffd700
		}];
		// Display normal eggs section
		var normalEggItems = [];
		var startY = 600;
		var eggSpacing = 300;
		var rowSpacing = 300;
		var maxEggsPerRow = 5;
		for (var i = 0; i < normalEggs.length; i++) {
			var row = Math.floor(i / maxEggsPerRow);
			var col = i % maxEggsPerRow;
			var startX = (2048 - (Math.min(normalEggs.length - row * maxEggsPerRow, maxEggsPerRow) - 1) * eggSpacing) / 2;
			var eggX = startX + col * eggSpacing;
			var eggY = startY + row * rowSpacing;
			var eggItem = LK.getAsset(normalEggs[i].asset, {
				anchorX: 0.5,
				anchorY: 0.5
			});
			eggItem.x = eggX;
			eggItem.y = eggY;
			shopOverlay.addChild(eggItem);
			normalEggItems.push(eggItem);
			var eggPriceText = new Text2(normalEggs[i].price, {
				size: 50,
				fill: normalEggs[i].color
			});
			eggPriceText.anchor.set(0.5, 0);
			eggPriceText.x = eggX;
			eggPriceText.y = eggY + 120;
			shopOverlay.addChild(eggPriceText);
		}
		// Display golden eggs section
		var goldenEggItems = [];
		var goldenStartY = startY + Math.ceil(normalEggs.length / maxEggsPerRow) * rowSpacing + 300;
		for (var i = 0; i < goldenEggs.length; i++) {
			var row = Math.floor(i / maxEggsPerRow);
			var col = i % maxEggsPerRow;
			var startX = (2048 - (Math.min(goldenEggs.length - row * maxEggsPerRow, maxEggsPerRow) - 1) * eggSpacing) / 2;
			var eggX = startX + col * eggSpacing;
			var eggY = goldenStartY + row * rowSpacing;
			var goldenEggItem = LK.getAsset(goldenEggs[i].asset, {
				anchorX: 0.5,
				anchorY: 0.5
			});
			goldenEggItem.x = eggX;
			goldenEggItem.y = eggY;
			shopOverlay.addChild(goldenEggItem);
			goldenEggItems.push(goldenEggItem);
			var goldenEggPriceText = new Text2(goldenEggs[i].price, {
				size: 50,
				fill: goldenEggs[i].color
			});
			goldenEggPriceText.anchor.set(0.5, 0);
			goldenEggPriceText.x = eggX;
			goldenEggPriceText.y = eggY + 120;
			shopOverlay.addChild(goldenEggPriceText);
		}
		// Add inventory button
		var inventoryBtnY = goldenStartY + Math.ceil(goldenEggs.length / maxEggsPerRow) * rowSpacing + 100;
		var inventoryBtn = new Text2('Inventory', {
			size: 80,
			fill: 0xFFFFFF
		});
		inventoryBtn.anchor.set(0.5, 0);
		inventoryBtn.x = 2048 * 2 / 3;
		inventoryBtn.y = inventoryBtnY;
		shopOverlay.addChild(inventoryBtn);
		// Store references for purchase handlers
		var eggItem = normalEggItems[0];
		var greenEggItem = normalEggItems[1];
		var redEggItem = normalEggItems[2];
		var purpleEggItem = normalEggItems[3];
		var whiteEggItem = normalEggItems[4];
		var goldenEggItem = goldenEggItems[0];
		var goldenGreenEggItem = goldenEggItems[1];
		var goldenRedEggItem = goldenEggItems[2];
		var goldenPurpleEggItem = goldenEggItems[3];
		var goldenWhiteEggItem = goldenEggItems[4];
		var spaceEggItem = normalEggItems[5];
		var space2EggItem = normalEggItems[6];
		var goldenSpaceEggItem = goldenEggItems[5];
		var goldenSpace2EggItem = goldenEggItems[6];
		var galaxyEggItem = normalEggItems[7];
		var goldenGalaxyEggItem = goldenEggItems[7];
		// Handle egg purchase
		eggItem.down = function () {
			if (LK.getScore() >= 1000) {
				LK.setScore(LK.getScore() - 1000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling egg
				fallingEgg = getEnhancedEggAsset('egg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling with enhanced graphics
				if (ultraRealisticMode) {
					// Ultra-realistic falling with enhanced wobble and scaling effects
					tween(fallingEgg, {
						y: 2732 / 2,
						rotation: Math.PI / 6,
						scaleX: 1.1,
						scaleY: 1.1
					}, {
						duration: 1400,
						easing: tween.bounceOut
					});
					// Enhanced side-to-side wobble with rotation
					tween(fallingEgg, {
						x: 2048 / 2 + 80
					}, {
						duration: 700,
						easing: tween.easeInOut
					});
					LK.setTimeout(function () {
						tween(fallingEgg, {
							x: 2048 / 2 - 80,
							rotation: -Math.PI / 6
						}, {
							duration: 700,
							easing: tween.easeInOut
						});
					}, 700);
					// Add pulsing effect
					tween(fallingEgg, {
						alpha: 0.8
					}, {
						duration: 350,
						easing: tween.easeInOut
					});
					LK.setTimeout(function () {
						tween(fallingEgg, {
							alpha: 1
						}, {
							duration: 350,
							easing: tween.easeInOut
						});
					}, 350);
				} else {
					var fallDuration = graphicsMode === 30 ? 1500 : graphicsMode === 60 ? 1000 : 800;
					tween(fallingEgg, {
						y: 2732 / 2
					}, {
						duration: fallDuration
					});
				}
				// Handle egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = getEnhancedEggAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						// Enhanced cracking animation for 120 fps
						if (ultraRealisticMode) {
							// Add intense shake effect with multiple phases
							tween(crackedEgg1, {
								rotation: Math.PI / 12,
								scaleX: 1.05,
								scaleY: 1.05
							}, {
								duration: 80,
								easing: tween.easeInOut
							});
							LK.setTimeout(function () {
								tween(crackedEgg1, {
									rotation: -Math.PI / 12,
									scaleX: 0.95,
									scaleY: 0.95
								}, {
									duration: 80,
									easing: tween.easeInOut
								});
							}, 80);
							LK.setTimeout(function () {
								tween(crackedEgg1, {
									rotation: Math.PI / 20,
									scaleX: 1.02,
									scaleY: 1.02
								}, {
									duration: 80,
									easing: tween.easeInOut
								});
							}, 160);
							LK.setTimeout(function () {
								tween(crackedEgg1, {
									rotation: 0,
									scaleX: 1,
									scaleY: 1
								}, {
									duration: 120,
									easing: tween.easeInOut
								});
							}, 240);
						}
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = getEnhancedEggAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						// Enhanced cracking animation for 120 fps
						if (ultraRealisticMode) {
							// Add more intense shake and scaling
							tween(crackedEgg2, {
								rotation: Math.PI / 12,
								scaleX: 1.05,
								scaleY: 1.05
							}, {
								duration: 150,
								easing: tween.easeInOut
							});
							LK.setTimeout(function () {
								tween(crackedEgg2, {
									rotation: -Math.PI / 12,
									scaleX: 0.95,
									scaleY: 0.95
								}, {
									duration: 150,
									easing: tween.easeInOut
								});
							}, 150);
							LK.setTimeout(function () {
								tween(crackedEgg2, {
									rotation: 0,
									scaleX: 1,
									scaleY: 1
								}, {
									duration: 150,
									easing: tween.easeInOut
								});
							}, 300);
						}
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = getEnhancedEggAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						// Enhanced final crack animation for 120 fps
						if (ultraRealisticMode) {
							// Add violent shake and pulsing
							tween(crackedEgg3, {
								rotation: Math.PI / 8,
								scaleX: 1.1,
								scaleY: 1.1,
								alpha: 0.7
							}, {
								duration: 200,
								easing: tween.easeInOut
							});
							LK.setTimeout(function () {
								tween(crackedEgg3, {
									rotation: -Math.PI / 8,
									scaleX: 0.9,
									scaleY: 0.9,
									alpha: 1
								}, {
									duration: 200,
									easing: tween.easeInOut
								});
							}, 200);
							LK.setTimeout(function () {
								tween(crackedEgg3, {
									rotation: 0,
									scaleX: 1,
									scaleY: 1
								}, {
									duration: 200,
									easing: tween.easeInOut
								});
							}, 400);
						}
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Enhanced hatching animation for ultra-realistic mode
						if (ultraRealisticMode) {
							// Create spectacular light burst effect
							var lightBurst = new Container();
							for (var lightIndex = 0; lightIndex < 16; lightIndex++) {
								var lightRay = LK.getAsset('lightRay', {
									anchorX: 0.5,
									anchorY: 0.5
								});
								lightRay.rotation = lightIndex * Math.PI / 8;
								lightRay.alpha = 0.8;
								lightBurst.addChild(lightRay);
							}
							// Add golden secondary rays
							for (var lightIndex = 0; lightIndex < 12; lightIndex++) {
								var coloredRay = LK.getAsset('goldenLightRay', {
									anchorX: 0.5,
									anchorY: 0.5
								});
								coloredRay.rotation = lightIndex * Math.PI / 6 + Math.PI / 12;
								coloredRay.alpha = 0.9;
								lightBurst.addChild(coloredRay);
							}
							lightBurst.x = fallingEgg.x;
							lightBurst.y = fallingEgg.y;
							lightBurst.alpha = 0;
							lightBurst.scaleX = 0.5;
							lightBurst.scaleY = 0.5;
							game.addChild(lightBurst);
							// Multi-phase light burst animation
							tween(lightBurst, {
								alpha: 1,
								scaleX: 5,
								scaleY: 5,
								rotation: Math.PI / 3
							}, {
								duration: 500,
								easing: tween.easeOut
							});
							// Secondary expansion phase
							LK.setTimeout(function () {
								tween(lightBurst, {
									alpha: 0.3,
									scaleX: 8,
									scaleY: 8,
									rotation: Math.PI
								}, {
									duration: 800,
									easing: tween.easeOut
								});
							}, 500);
							// Final fade phase
							LK.setTimeout(function () {
								tween(lightBurst, {
									alpha: 0,
									scaleX: 12,
									scaleY: 12,
									rotation: Math.PI * 1.5
								}, {
									duration: 700,
									easing: tween.easeIn,
									onFinish: function onFinish() {
										lightBurst.destroy();
									}
								});
							}, 1300);
						}
						// Hatch the egg
						// Get list of animals that have less than 3 in inventory
						var availableAnimals = [];
						var animalTypes = ['dog', 'cat', 'snake'];
						for (var typeIndex = 0; typeIndex < animalTypes.length; typeIndex++) {
							var animalType = animalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableAnimals.push(animalType);
							}
						}
						var animal;
						if (availableAnimals.length > 0) {
							// Choose randomly from available animals
							var randomIndex = Math.floor(Math.random() * availableAnimals.length);
							animal = availableAnimals[randomIndex];
							// Add to inventory
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All animal types have 3 in inventory, show message and don't give new pet
							animal = null;
							var allPetsText = new Text2('All pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allPetsText.anchor.set(0.5, 0.5);
							allPetsText.x = 2048 / 2;
							allPetsText.y = 1500;
							game.addChild(allPetsText);
							LK.setTimeout(function () {
								allPetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							// Create enhanced pet with detailed info
							var petData = {
								'dog': {
									rarity: 'Common',
									bonus: 1,
									dropChance: 0.6
								},
								'cat': {
									rarity: 'Common',
									bonus: 2,
									dropChance: 0.3
								},
								'snake': {
									rarity: 'Uncommon',
									bonus: 5,
									dropChance: 0.1
								},
								'goldenDog': {
									rarity: 'Rare',
									bonus: 3,
									dropChance: 0.6
								},
								'goldenCat': {
									rarity: 'Rare',
									bonus: 6,
									dropChance: 0.3
								},
								'goldenSnake': {
									rarity: 'Epic',
									bonus: 10,
									dropChance: 0.1
								}
							};
							var currentPetData = petData[animal] || {
								rarity: 'Unknown',
								bonus: 1,
								dropChance: 0.01
							};
							var newPet = new Pet(animal, currentPetData.rarity, currentPetData.bonus, currentPetData.dropChance);
							newPet.x = fallingEgg.x;
							newPet.y = fallingEgg.y;
							game.addChild(newPet);
							// Enhanced pet entrance animation
							newPet.animateEntrance();
							// Move pet towards screen center
							tween(newPet, {
								x: 2048 / 2,
								y: 2732 / 2 - 200,
								scaleX: 1.8,
								scaleY: 1.8
							}, {
								duration: 1500,
								easing: tween.easeOut
							});
							// Show pet information after arrival
							LK.setTimeout(function () {
								newPet.showInfo();
							}, 1800);
							// Remove pet after showing info
							LK.setTimeout(function () {
								newPet.destroy();
							}, 5000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle green egg purchase
		greenEggItem.down = function () {
			if (LK.getScore() >= 15000) {
				LK.setScore(LK.getScore() - 15000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling green egg
				fallingEgg = LK.getAsset('greenEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle green egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the green egg with special probabilities
						var availableGreenAnimals = [];
						var greenAnimalTypes = ['dinosaur', 'bear', 'bee'];
						for (var typeIndex = 0; typeIndex < greenAnimalTypes.length; typeIndex++) {
							var animalType = greenAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableGreenAnimals.push(animalType);
							}
						}
						var animal;
						if (availableGreenAnimals.length > 0) {
							// Special probability distribution for green eggs with Lucky Boost effect
							var random = Math.random();
							var selectedAnimal;
							var dinosaurChance = 0.05;
							var bearChance = 0.2;
							var beeChance = 1.0;
							if (random < dinosaurChance) {
								selectedAnimal = 'dinosaur';
							} else if (random < bearChance) {
								selectedAnimal = 'bear';
							} else {
								selectedAnimal = 'bee';
							}
							// Check if selected animal is available
							if (availableGreenAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableGreenAnimals.length);
								animal = availableGreenAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All green animal types have 3 in inventory
							animal = null;
							var allGreenPetsText = new Text2('All green pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allGreenPetsText.anchor.set(0.5, 0.5);
							allGreenPetsText.x = 2048 / 2;
							allGreenPetsText.y = 1500;
							game.addChild(allGreenPetsText);
							LK.setTimeout(function () {
								allGreenPetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle golden green egg purchase
		goldenGreenEggItem.down = function () {
			if (LK.getScore() >= 30000) {
				LK.setScore(LK.getScore() - 30000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling golden green egg
				fallingEgg = LK.getAsset('goldenGreenEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle golden green egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the golden green egg with special probabilities
						var availableGoldenGreenAnimals = [];
						var goldenGreenAnimalTypes = ['goldenDinosaur', 'goldenBear', 'goldenBee'];
						for (var typeIndex = 0; typeIndex < goldenGreenAnimalTypes.length; typeIndex++) {
							var animalType = goldenGreenAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableGoldenGreenAnimals.push(animalType);
							}
						}
						var animal;
						if (availableGoldenGreenAnimals.length > 0) {
							// Special probability distribution for golden green eggs (same as green)
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.05) {
								selectedAnimal = 'goldenDinosaur'; // 5% chance
							} else if (random < 0.2) {
								selectedAnimal = 'goldenBear'; // 15% chance
							} else {
								selectedAnimal = 'goldenBee'; // 80% chance
							}
							// Check if selected animal is available
							if (availableGoldenGreenAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableGoldenGreenAnimals.length);
								animal = availableGoldenGreenAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All golden green animal types have 3 in inventory
							animal = null;
							var allGoldenGreenPetsText = new Text2('All golden green pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allGoldenGreenPetsText.anchor.set(0.5, 0.5);
							allGoldenGreenPetsText.x = 2048 / 2;
							allGoldenGreenPetsText.y = 1500;
							game.addChild(allGoldenGreenPetsText);
							LK.setTimeout(function () {
								allGoldenGreenPetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle red egg purchase
		redEggItem.down = function () {
			if (LK.getScore() >= 50000) {
				LK.setScore(LK.getScore() - 50000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling red egg
				fallingEgg = LK.getAsset('redEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle red egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the red egg with special probabilities
						var availableRedAnimals = [];
						var redAnimalTypes = ['trex', 'velector', 'titanaBull'];
						for (var typeIndex = 0; typeIndex < redAnimalTypes.length; typeIndex++) {
							var animalType = redAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableRedAnimals.push(animalType);
							}
						}
						var animal;
						if (availableRedAnimals.length > 0) {
							// Special probability distribution for red eggs
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.05) {
								selectedAnimal = 'trex'; // 5% chance
							} else if (random < 0.3) {
								selectedAnimal = 'velector'; // 25% chance
							} else {
								selectedAnimal = 'titanaBull'; // 70% chance
							}
							// Check if selected animal is available
							if (availableRedAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableRedAnimals.length);
								animal = availableRedAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All red animal types have 3 in inventory
							animal = null;
							var allRedPetsText = new Text2('All red pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allRedPetsText.anchor.set(0.5, 0.5);
							allRedPetsText.x = 2048 / 2;
							allRedPetsText.y = 1500;
							game.addChild(allRedPetsText);
							LK.setTimeout(function () {
								allRedPetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle golden red egg purchase
		goldenRedEggItem.down = function () {
			if (LK.getScore() >= 100000) {
				LK.setScore(LK.getScore() - 100000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling golden red egg
				fallingEgg = LK.getAsset('goldenRedEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle golden red egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the golden red egg with special probabilities
						var availableGoldenRedAnimals = [];
						var goldenRedAnimalTypes = ['goldenTrex', 'goldenVelector', 'goldenTitanaBull'];
						for (var typeIndex = 0; typeIndex < goldenRedAnimalTypes.length; typeIndex++) {
							var animalType = goldenRedAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableGoldenRedAnimals.push(animalType);
							}
						}
						var animal;
						if (availableGoldenRedAnimals.length > 0) {
							// Special probability distribution for golden red eggs (same as red)
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.05) {
								selectedAnimal = 'goldenTrex'; // 5% chance
							} else if (random < 0.3) {
								selectedAnimal = 'goldenVelector'; // 25% chance
							} else {
								selectedAnimal = 'goldenTitanaBull'; // 70% chance
							}
							// Check if selected animal is available
							if (availableGoldenRedAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableGoldenRedAnimals.length);
								animal = availableGoldenRedAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All golden red animal types have 3 in inventory
							animal = null;
							var allGoldenRedPetsText = new Text2('All golden red pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allGoldenRedPetsText.anchor.set(0.5, 0.5);
							allGoldenRedPetsText.x = 2048 / 2;
							allGoldenRedPetsText.y = 1500;
							game.addChild(allGoldenRedPetsText);
							LK.setTimeout(function () {
								allGoldenRedPetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle purple egg purchase
		purpleEggItem.down = function () {
			if (LK.getScore() >= 1250000) {
				LK.setScore(LK.getScore() - 1250000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling purple egg
				fallingEgg = LK.getAsset('purpleEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle purple egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the purple egg with special probabilities
						var availablePurpleAnimals = [];
						var purpleAnimalTypes = ['ironMan', 'captainAmerica', 'spiderman'];
						for (var typeIndex = 0; typeIndex < purpleAnimalTypes.length; typeIndex++) {
							var animalType = purpleAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availablePurpleAnimals.push(animalType);
							}
						}
						var animal;
						if (availablePurpleAnimals.length > 0) {
							// Special probability distribution for purple eggs
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.01) {
								selectedAnimal = 'ironMan'; // 1% chance
							} else if (random < 0.15) {
								selectedAnimal = 'captainAmerica'; // 14% chance
							} else {
								selectedAnimal = 'spiderman'; // 85% chance
							}
							// Check if selected animal is available
							if (availablePurpleAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availablePurpleAnimals.length);
								animal = availablePurpleAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All purple animal types have 3 in inventory
							animal = null;
							var allPurplePetsText = new Text2('All purple pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allPurplePetsText.anchor.set(0.5, 0.5);
							allPurplePetsText.x = 2048 / 2;
							allPurplePetsText.y = 1500;
							game.addChild(allPurplePetsText);
							LK.setTimeout(function () {
								allPurplePetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle golden purple egg purchase
		goldenPurpleEggItem.down = function () {
			if (LK.getScore() >= 2500000) {
				LK.setScore(LK.getScore() - 2500000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling golden purple egg
				fallingEgg = LK.getAsset('goldenPurpleEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle golden purple egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the golden purple egg with special probabilities
						var availableGoldenPurpleAnimals = [];
						var goldenPurpleAnimalTypes = ['goldenIronMan', 'goldenCaptainAmerica', 'goldenSpiderman'];
						for (var typeIndex = 0; typeIndex < goldenPurpleAnimalTypes.length; typeIndex++) {
							var animalType = goldenPurpleAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableGoldenPurpleAnimals.push(animalType);
							}
						}
						var animal;
						if (availableGoldenPurpleAnimals.length > 0) {
							// Special probability distribution for golden purple eggs (same as purple)
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.01) {
								selectedAnimal = 'goldenIronMan'; // 1% chance
							} else if (random < 0.15) {
								selectedAnimal = 'goldenCaptainAmerica'; // 14% chance
							} else {
								selectedAnimal = 'goldenSpiderman'; // 85% chance
							}
							// Check if selected animal is available
							if (availableGoldenPurpleAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableGoldenPurpleAnimals.length);
								animal = availableGoldenPurpleAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All golden purple animal types have 3 in inventory
							animal = null;
							var allGoldenPurplePetsText = new Text2('All golden purple pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allGoldenPurplePetsText.anchor.set(0.5, 0.5);
							allGoldenPurplePetsText.x = 2048 / 2;
							allGoldenPurplePetsText.y = 1500;
							game.addChild(allGoldenPurplePetsText);
							LK.setTimeout(function () {
								allGoldenPurplePetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle white egg purchase
		whiteEggItem.down = function () {
			if (LK.getScore() >= 10000000) {
				LK.setScore(LK.getScore() - 10000000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling white egg
				fallingEgg = LK.getAsset('whiteEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle white egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the white egg with special probabilities
						var availableWhiteAnimals = [];
						var whiteAnimalTypes = ['king', 'knight', 'human'];
						for (var typeIndex = 0; typeIndex < whiteAnimalTypes.length; typeIndex++) {
							var animalType = whiteAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableWhiteAnimals.push(animalType);
							}
						}
						var animal;
						if (availableWhiteAnimals.length > 0) {
							// Special probability distribution for white eggs
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.005) {
								selectedAnimal = 'king'; // 0.5% chance
							} else if (random < 0.055) {
								selectedAnimal = 'knight'; // 5% chance
							} else {
								selectedAnimal = 'human'; // 94.5% chance
							}
							// Check if selected animal is available
							if (availableWhiteAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableWhiteAnimals.length);
								animal = availableWhiteAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All white animal types have 3 in inventory
							animal = null;
							var allWhitePetsText = new Text2('All white pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allWhitePetsText.anchor.set(0.5, 0.5);
							allWhitePetsText.x = 2048 / 2;
							allWhitePetsText.y = 1500;
							game.addChild(allWhitePetsText);
							LK.setTimeout(function () {
								allWhitePetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle golden white egg purchase
		goldenWhiteEggItem.down = function () {
			if (LK.getScore() >= 20000000) {
				LK.setScore(LK.getScore() - 20000000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling golden white egg
				fallingEgg = LK.getAsset('goldenWhiteEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle golden white egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the golden white egg with special probabilities
						var availableGoldenWhiteAnimals = [];
						var goldenWhiteAnimalTypes = ['goldenKing', 'goldenKnight', 'goldenHuman'];
						for (var typeIndex = 0; typeIndex < goldenWhiteAnimalTypes.length; typeIndex++) {
							var animalType = goldenWhiteAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableGoldenWhiteAnimals.push(animalType);
							}
						}
						var animal;
						if (availableGoldenWhiteAnimals.length > 0) {
							// Special probability distribution for golden white eggs (same as white)
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.005) {
								selectedAnimal = 'goldenKing'; // 0.5% chance
							} else if (random < 0.055) {
								selectedAnimal = 'goldenKnight'; // 5% chance
							} else {
								selectedAnimal = 'goldenHuman'; // 94.5% chance
							}
							// Check if selected animal is available
							if (availableGoldenWhiteAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableGoldenWhiteAnimals.length);
								animal = availableGoldenWhiteAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All golden white animal types have 3 in inventory
							animal = null;
							var allGoldenWhitePetsText = new Text2('All golden white pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allGoldenWhitePetsText.anchor.set(0.5, 0.5);
							allGoldenWhitePetsText.x = 2048 / 2;
							allGoldenWhitePetsText.y = 1500;
							game.addChild(allGoldenWhitePetsText);
							LK.setTimeout(function () {
								allGoldenWhitePetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle golden egg purchase
		goldenEggItem.down = function () {
			if (LK.getScore() >= 10000) {
				LK.setScore(LK.getScore() - 10000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling golden egg
				fallingEgg = LK.getAsset('goldenEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle golden egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the golden egg with special probabilities
						var availableGoldenAnimals = [];
						var goldenAnimalTypes = ['goldenDog', 'goldenCat', 'goldenSnake'];
						for (var typeIndex = 0; typeIndex < goldenAnimalTypes.length; typeIndex++) {
							var animalType = goldenAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableGoldenAnimals.push(animalType);
							}
						}
						var animal;
						if (availableGoldenAnimals.length > 0) {
							// Special probability distribution for golden eggs
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.6) {
								selectedAnimal = 'goldenDog'; // 60% chance
							} else if (random < 0.9) {
								selectedAnimal = 'goldenCat'; // 30% chance
							} else {
								selectedAnimal = 'goldenSnake'; // 10% chance
							}
							// Check if selected animal is available
							if (availableGoldenAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableGoldenAnimals.length);
								animal = availableGoldenAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All golden animal types have 3 in inventory
							animal = null;
							var allGoldenPetsText = new Text2('All golden pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allGoldenPetsText.anchor.set(0.5, 0.5);
							allGoldenPetsText.x = 2048 / 2;
							allGoldenPetsText.y = 1500;
							game.addChild(allGoldenPetsText);
							LK.setTimeout(function () {
								allGoldenPetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle space egg purchase
		spaceEggItem.down = function () {
			if (LK.getScore() >= 100000000) {
				LK.setScore(LK.getScore() - 100000000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling space egg
				fallingEgg = LK.getAsset('spaceEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle space egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the space egg with special probabilities
						var availableSpaceAnimals = [];
						var spaceAnimalTypes = ['earth', 'moon', 'meteor'];
						for (var typeIndex = 0; typeIndex < spaceAnimalTypes.length; typeIndex++) {
							var animalType = spaceAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableSpaceAnimals.push(animalType);
							}
						}
						var animal;
						if (availableSpaceAnimals.length > 0) {
							// Special probability distribution for space eggs
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.001) {
								selectedAnimal = 'earth'; // 0.1% chance
							} else if (random < 0.011) {
								selectedAnimal = 'moon'; // 1% chance
							} else {
								selectedAnimal = 'meteor'; // 98.9% chance
							}
							// Check if selected animal is available
							if (availableSpaceAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableSpaceAnimals.length);
								animal = availableSpaceAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All space animal types have 3 in inventory
							animal = null;
							var allSpacePetsText = new Text2('All space pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allSpacePetsText.anchor.set(0.5, 0.5);
							allSpacePetsText.x = 2048 / 2;
							allSpacePetsText.y = 1500;
							game.addChild(allSpacePetsText);
							LK.setTimeout(function () {
								allSpacePetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle space2 egg purchase
		space2EggItem.down = function () {
			if (LK.getScore() >= 200000000) {
				LK.setScore(LK.getScore() - 200000000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling space2 egg
				fallingEgg = LK.getAsset('space2Egg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle space2 egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the space2 egg with special probabilities
						var availableSpace2Animals = [];
						var space2AnimalTypes = ['sun', 'jupiter', 'neptune'];
						for (var typeIndex = 0; typeIndex < space2AnimalTypes.length; typeIndex++) {
							var animalType = space2AnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableSpace2Animals.push(animalType);
							}
						}
						var animal;
						if (availableSpace2Animals.length > 0) {
							// Special probability distribution for space2 eggs
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.0001) {
								selectedAnimal = 'sun'; // 0.01% chance
							} else if (random < 0.0011) {
								selectedAnimal = 'jupiter'; // 0.1% chance
							} else {
								selectedAnimal = 'neptune'; // 99.9% chance
							}
							// Check if selected animal is available
							if (availableSpace2Animals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableSpace2Animals.length);
								animal = availableSpace2Animals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All space2 animal types have 3 in inventory
							animal = null;
							var allSpace2PetsText = new Text2('All space2 pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allSpace2PetsText.anchor.set(0.5, 0.5);
							allSpace2PetsText.x = 2048 / 2;
							allSpace2PetsText.y = 1500;
							game.addChild(allSpace2PetsText);
							LK.setTimeout(function () {
								allSpace2PetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle golden space egg purchase
		goldenSpaceEggItem.down = function () {
			if (LK.getScore() >= 200000000) {
				LK.setScore(LK.getScore() - 200000000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling golden space egg
				fallingEgg = LK.getAsset('goldenSpaceEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle golden space egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the golden space egg with special probabilities
						var availableGoldenSpaceAnimals = [];
						var goldenSpaceAnimalTypes = ['goldenEarth', 'goldenMoon', 'goldenMeteor'];
						for (var typeIndex = 0; typeIndex < goldenSpaceAnimalTypes.length; typeIndex++) {
							var animalType = goldenSpaceAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableGoldenSpaceAnimals.push(animalType);
							}
						}
						var animal;
						if (availableGoldenSpaceAnimals.length > 0) {
							// Special probability distribution for golden space eggs (same as space)
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.001) {
								selectedAnimal = 'goldenEarth'; // 0.1% chance
							} else if (random < 0.011) {
								selectedAnimal = 'goldenMoon'; // 1% chance
							} else {
								selectedAnimal = 'goldenMeteor'; // 98.9% chance
							}
							// Check if selected animal is available
							if (availableGoldenSpaceAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableGoldenSpaceAnimals.length);
								animal = availableGoldenSpaceAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All golden space animal types have 3 in inventory
							animal = null;
							var allGoldenSpacePetsText = new Text2('All golden space pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allGoldenSpacePetsText.anchor.set(0.5, 0.5);
							allGoldenSpacePetsText.x = 2048 / 2;
							allGoldenSpacePetsText.y = 1500;
							game.addChild(allGoldenSpacePetsText);
							LK.setTimeout(function () {
								allGoldenSpacePetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle golden space2 egg purchase
		goldenSpace2EggItem.down = function () {
			if (LK.getScore() >= 400000000) {
				LK.setScore(LK.getScore() - 400000000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling golden space2 egg
				fallingEgg = LK.getAsset('goldenSpace2Egg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle golden space2 egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the golden space2 egg with special probabilities
						var availableGoldenSpace2Animals = [];
						var goldenSpace2AnimalTypes = ['goldenSun', 'goldenJupiter', 'goldenNeptune'];
						for (var typeIndex = 0; typeIndex < goldenSpace2AnimalTypes.length; typeIndex++) {
							var animalType = goldenSpace2AnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableGoldenSpace2Animals.push(animalType);
							}
						}
						var animal;
						if (availableGoldenSpace2Animals.length > 0) {
							// Special probability distribution for golden space2 eggs (same as space2)
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.0001) {
								selectedAnimal = 'goldenSun'; // 0.01% chance
							} else if (random < 0.0011) {
								selectedAnimal = 'goldenJupiter'; // 0.1% chance
							} else {
								selectedAnimal = 'goldenNeptune'; // 99.9% chance
							}
							// Check if selected animal is available
							if (availableGoldenSpace2Animals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableGoldenSpace2Animals.length);
								animal = availableGoldenSpace2Animals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All golden space2 animal types have 3 in inventory
							animal = null;
							var allGoldenSpace2PetsText = new Text2('All golden space2 pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allGoldenSpace2PetsText.anchor.set(0.5, 0.5);
							allGoldenSpace2PetsText.x = 2048 / 2;
							allGoldenSpace2PetsText.y = 1500;
							game.addChild(allGoldenSpace2PetsText);
							LK.setTimeout(function () {
								allGoldenSpace2PetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle galaxy egg purchase
		galaxyEggItem.down = function () {
			if (LK.getScore() >= 500000000) {
				LK.setScore(LK.getScore() - 500000000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling galaxy egg
				fallingEgg = LK.getAsset('galaxyEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle galaxy egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the galaxy egg with special probabilities
						var availableGalaxyAnimals = [];
						var galaxyAnimalTypes = ['andromedaGalaxy', 'normalGalaxy', 'milkyWayGalaxy'];
						for (var typeIndex = 0; typeIndex < galaxyAnimalTypes.length; typeIndex++) {
							var animalType = galaxyAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableGalaxyAnimals.push(animalType);
							}
						}
						var animal;
						if (availableGalaxyAnimals.length > 0) {
							// Special probability distribution for galaxy eggs
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.009) {
								selectedAnimal = 'milkyWayGalaxy'; // 0.9% chance
							} else if (random < 0.199) {
								selectedAnimal = 'normalGalaxy'; // 19% chance
							} else {
								selectedAnimal = 'andromedaGalaxy'; // 80.1% chance
							}
							// Check if selected animal is available
							if (availableGalaxyAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableGalaxyAnimals.length);
								animal = availableGalaxyAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All galaxy animal types have 3 in inventory
							animal = null;
							var allGalaxyPetsText = new Text2('All galaxy pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allGalaxyPetsText.anchor.set(0.5, 0.5);
							allGalaxyPetsText.x = 2048 / 2;
							allGalaxyPetsText.y = 1500;
							game.addChild(allGalaxyPetsText);
							LK.setTimeout(function () {
								allGalaxyPetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle golden galaxy egg purchase
		goldenGalaxyEggItem.down = function () {
			if (LK.getScore() >= 1000000000) {
				LK.setScore(LK.getScore() - 1000000000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling golden galaxy egg
				fallingEgg = LK.getAsset('goldenGalaxyEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle golden galaxy egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the golden galaxy egg with special probabilities
						var availableGoldenGalaxyAnimals = [];
						var goldenGalaxyAnimalTypes = ['goldenAndromedaGalaxy', 'goldenNormalGalaxy', 'goldenMilkyWayGalaxy'];
						for (var typeIndex = 0; typeIndex < goldenGalaxyAnimalTypes.length; typeIndex++) {
							var animalType = goldenGalaxyAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableGoldenGalaxyAnimals.push(animalType);
							}
						}
						var animal;
						if (availableGoldenGalaxyAnimals.length > 0) {
							// Special probability distribution for golden galaxy eggs (same as galaxy)
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.009) {
								selectedAnimal = 'goldenMilkyWayGalaxy'; // 0.9% chance
							} else if (random < 0.199) {
								selectedAnimal = 'goldenNormalGalaxy'; // 19% chance
							} else {
								selectedAnimal = 'goldenAndromedaGalaxy'; // 80.1% chance
							}
							// Check if selected animal is available
							if (availableGoldenGalaxyAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableGoldenGalaxyAnimals.length);
								animal = availableGoldenGalaxyAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All golden galaxy animal types have 3 in inventory
							animal = null;
							var allGoldenGalaxyPetsText = new Text2('All golden galaxy pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allGoldenGalaxyPetsText.anchor.set(0.5, 0.5);
							allGoldenGalaxyPetsText.x = 2048 / 2;
							allGoldenGalaxyPetsText.y = 1500;
							game.addChild(allGoldenGalaxyPetsText);
							LK.setTimeout(function () {
								allGoldenGalaxyPetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle inventory button
		inventoryBtn.down = function () {
			if (!isInventoryOpen) {
				// Close shop first
				if (shopOverlay) {
					shopOverlay.destroy();
				}
				shopOverlay = null;
				isShopOpen = false;
				// Open inventory
				isInventoryOpen = true;
				inventoryOverlay = new Container();
				var invBackground = LK.getAsset('shopBg', {
					width: 2048,
					height: 2732,
					color: 0x000000,
					shape: 'box'
				});
				inventoryOverlay.addChild(invBackground);
				game.addChild(inventoryOverlay);
				// Display inventory items by unique pet types
				var yPos = 300;
				var uniqueTypes = [];
				var animalTypes = ['dog', 'cat', 'snake', 'goldenDog', 'goldenCat', 'goldenSnake', 'dinosaur', 'bear', 'bee', 'goldenDinosaur', 'goldenBear', 'goldenBee', 'trex', 'velector', 'titanaBull', 'goldenTrex', 'goldenVelector', 'goldenTitanaBull', 'ironMan', 'captainAmerica', 'spiderman', 'goldenIronMan', 'goldenCaptainAmerica', 'goldenSpiderman', 'king', 'knight', 'human', 'goldenKing', 'goldenKnight', 'goldenHuman', 'earth', 'moon', 'meteor', 'sun', 'jupiter', 'neptune', 'goldenEarth', 'goldenMoon', 'goldenMeteor', 'goldenSun', 'goldenJupiter', 'goldenNeptune', 'andromedaGalaxy', 'normalGalaxy', 'milkyWayGalaxy', 'goldenAndromedaGalaxy', 'goldenNormalGalaxy', 'goldenMilkyWayGalaxy'];
				for (var typeIndex = 0; typeIndex < animalTypes.length; typeIndex++) {
					var animalType = animalTypes[typeIndex];
					var countInInventory = 0;
					for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
						if (inventory[invIndex] === animalType) {
							countInInventory++;
						}
					}
					if (countInInventory > 0) {
						uniqueTypes.push({
							type: animalType,
							count: countInInventory
						});
					}
				}
				for (var i = 0; i < uniqueTypes.length; i++) {
					var petData = uniqueTypes[i];
					var animalItem = LK.getAsset(petData.type, {
						anchorX: 0.5,
						anchorY: 0.5
					});
					animalItem.x = 300;
					animalItem.y = yPos;
					animalItem.animalType = petData.type;
					animalItem.inventoryIndex = i;
					inventoryOverlay.addChild(animalItem);
					// Handle pet deletion when in delete mode
					animalItem.down = function () {
						if (deleteMode && selectedDeleteAnimalType === this.animalType) {
							// Delete the pet
							// Remove one instance of this pet from inventory
							for (var removeIndex = 0; removeIndex < inventory.length; removeIndex++) {
								if (inventory[removeIndex] === this.animalType) {
									inventory.splice(removeIndex, 1);
									break;
								}
							}
							storage.inventory = inventory;
							// Also remove from equipped animals if it was equipped
							for (var removeIndex = equippedAnimals.length - 1; removeIndex >= 0; removeIndex--) {
								if (equippedAnimals[removeIndex] === this.animalType) {
									equippedAnimals.splice(removeIndex, 1);
									break;
								}
							}
							// Recalculate pet bonus after removing
							var petBonus = 0;
							// Count each animal type
							var dogCount = 0;
							var catCount = 0;
							var snakeCount = 0;
							for (var j = 0; j < equippedAnimals.length; j++) {
								if (equippedAnimals[j] === 'dog') {
									dogCount++;
								} else if (equippedAnimals[j] === 'cat') {
									catCount++;
								} else if (equippedAnimals[j] === 'snake') {
									snakeCount++;
								}
							}
							// Each dog gives +1 bonus per tap
							petBonus += dogCount;
							// Cats: 1 cat = +2, 2 cats = +4, 3 cats = +6 (total bonus)
							if (catCount === 1) {
								petBonus += 2;
							} else if (catCount === 2) {
								petBonus += 4;
							} else if (catCount === 3) {
								petBonus += 6;
							}
							// Snakes: 1 snake = +5, 2 snakes = +10, 3 snakes = +15 (total bonus)
							if (snakeCount === 1) {
								petBonus += 5;
							} else if (snakeCount === 2) {
								petBonus += 10;
							} else if (snakeCount === 3) {
								petBonus += 15;
							}
							// Store as multiplier format (base 1 + bonus)
							currentMultiplier = 1 + petBonus;
							storage.equippedAnimals = equippedAnimals;
							storage.currentMultiplier = currentMultiplier;
							// Exit delete mode
							deleteMode = false;
							selectedDeleteAnimalType = null;
							// Close and reopen inventory to refresh display
							inventoryOverlay.destroy();
							inventoryOverlay = null;
							isInventoryOpen = false;
							// Reopen inventory to show updated counts
							inventoryBtn.down();
						}
					};
					// Count how many of this type are equipped
					var equippedCount = 0;
					for (var k = 0; k < equippedAnimals.length; k++) {
						if (equippedAnimals[k] === petData.type) {
							equippedCount++;
						}
					}
					// Add equip button
					var equipBtn = new Text2('Equip', {
						size: 50,
						fill: 0xFFFFFF
					});
					equipBtn.anchor.set(0.5, 0.5);
					equipBtn.x = 550;
					equipBtn.y = yPos;
					equipBtn.animalType = inventory[i];
					equipBtn.inventoryIndex = i;
					inventoryOverlay.addChild(equipBtn);
					// Add unequip button
					var unequipBtn = new Text2('Unequip', {
						size: 50,
						fill: 0xFF6B6B
					});
					unequipBtn.anchor.set(0.5, 0.5);
					unequipBtn.x = 700;
					unequipBtn.y = yPos;
					unequipBtn.animalType = inventory[i];
					unequipBtn.inventoryIndex = i;
					inventoryOverlay.addChild(unequipBtn);
					// Add delete button
					var deleteBtn = new Text2('Delete', {
						size: 50,
						fill: 0xFF0000
					});
					deleteBtn.anchor.set(0.5, 0.5);
					deleteBtn.x = 850;
					deleteBtn.y = yPos;
					deleteBtn.animalType = inventory[i];
					deleteBtn.inventoryIndex = i;
					inventoryOverlay.addChild(deleteBtn);
					// Add count display
					var countText = new Text2('Owned: ' + petData.count + ' | Equipped: ' + equippedCount, {
						size: 40,
						fill: 0xFFFFFF
					});
					countText.anchor.set(0.5, 0.5);
					countText.x = 1000;
					countText.y = yPos;
					inventoryOverlay.addChild(countText);
					// Handle delete functionality
					deleteBtn.down = function () {
						if (!deleteMode) {
							// First press - enter delete mode
							deleteMode = true;
							selectedDeleteAnimalType = this.animalType;
							// Show message to click on pet
							var deleteInstructionText = new Text2('Click on the pet to delete it', {
								size: 40,
								fill: 0xff0000
							});
							deleteInstructionText.anchor.set(0.5, 0.5);
							deleteInstructionText.x = 2048 / 2;
							deleteInstructionText.y = 2500;
							inventoryOverlay.addChild(deleteInstructionText);
							// Auto-hide instruction after 3 seconds
							LK.setTimeout(function () {
								if (deleteInstructionText && deleteInstructionText.parent) {
									deleteInstructionText.destroy();
								}
							}, 3000);
						} else if (deleteMode && selectedDeleteAnimalType === this.animalType) {
							// Second press on same delete button - cancel delete mode
							deleteMode = false;
							selectedDeleteAnimalType = null;
						}
					};
					// Handle unequip functionality
					unequipBtn.down = function () {
						// Find and remove one instance of this pet type from equipped animals
						for (var removeIndex = 0; removeIndex < equippedAnimals.length; removeIndex++) {
							if (equippedAnimals[removeIndex] === this.animalType) {
								equippedAnimals.splice(removeIndex, 1);
								break;
							}
						}
						// Recalculate pet bonus after unequipping
						var petBonus = 0;
						// Count each animal type
						var dogCount = 0;
						var catCount = 0;
						var snakeCount = 0;
						for (var j = 0; j < equippedAnimals.length; j++) {
							if (equippedAnimals[j] === 'dog') {
								dogCount++;
							} else if (equippedAnimals[j] === 'cat') {
								catCount++;
							} else if (equippedAnimals[j] === 'snake') {
								snakeCount++;
							}
						}
						// Each dog gives +1 bonus per tap
						petBonus += dogCount;
						// Cats: 1 cat = +2, 2 cats = +4, 3 cats = +6 (total bonus)
						if (catCount === 1) {
							petBonus += 2;
						} else if (catCount === 2) {
							petBonus += 4;
						} else if (catCount === 3) {
							petBonus += 6;
						}
						// Snakes: 1 snake = +5, 2 snakes = +10, 3 snakes = +15 (total bonus)
						if (snakeCount === 1) {
							petBonus += 5;
						} else if (snakeCount === 2) {
							petBonus += 10;
						} else if (snakeCount === 3) {
							petBonus += 15;
						}
						// Store as multiplier format (base 1 + bonus)
						currentMultiplier = 1 + petBonus;
						storage.equippedAnimals = equippedAnimals;
						storage.currentMultiplier = currentMultiplier;
						// Close and reopen inventory to refresh display
						inventoryOverlay.destroy();
						inventoryOverlay = null;
						isInventoryOpen = false;
						// Reopen inventory to show updated counts
						inventoryBtn.down();
					};
					equipBtn.down = function () {
						// Count how many of this pet type are in inventory
						var inventoryCount = 0;
						for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
							if (inventory[invIndex] === this.animalType) {
								inventoryCount++;
							}
						}
						// Count how many of this pet type are already equipped
						var equippedCount = 0;
						for (var checkIndex = 0; checkIndex < equippedAnimals.length; checkIndex++) {
							if (equippedAnimals[checkIndex] === this.animalType) {
								equippedCount++;
							}
						}
						// Check if we have this pet available in inventory to equip
						if (equippedCount >= inventoryCount) {
							var noPetText = new Text2('Need more pets to equip!', {
								size: 40,
								fill: 0xff0000
							});
							noPetText.anchor.set(0.5, 0.5);
							noPetText.x = this.x;
							noPetText.y = this.y - 50;
							inventoryOverlay.addChild(noPetText);
							LK.setTimeout(function () {
								noPetText.destroy();
							}, 1500);
							return;
						}
						// Check if we can equip more pets (total limit of 3)
						if (equippedAnimals.length < maxEquippedPets) {
							// Equip this pet
							equippedAnimals.push(this.animalType);
						} else {
							// Show message that max pets reached
							var maxText = new Text2('Max 3 pets total!', {
								size: 40,
								fill: 0xff0000
							});
							maxText.anchor.set(0.5, 0.5);
							maxText.x = this.x;
							maxText.y = this.y - 50;
							inventoryOverlay.addChild(maxText);
							LK.setTimeout(function () {
								maxText.destroy();
							}, 1500);
							return;
						}
						// Calculate pet bonus based on equipped animal quantities
						var petBonus = 0;
						// Count each animal type
						var dogCount = 0;
						var catCount = 0;
						var snakeCount = 0;
						for (var j = 0; j < equippedAnimals.length; j++) {
							if (equippedAnimals[j] === 'dog') {
								dogCount++;
							} else if (equippedAnimals[j] === 'cat') {
								catCount++;
							} else if (equippedAnimals[j] === 'snake') {
								snakeCount++;
							}
						}
						// Each dog gives +1 bonus per tap
						petBonus += dogCount;
						// Cats: 1 cat = +2, 2 cats = +4, 3 cats = +6 (total bonus)
						if (catCount === 1) {
							petBonus += 2;
						} else if (catCount === 2) {
							petBonus += 4;
						} else if (catCount === 3) {
							petBonus += 6;
						}
						// Snakes: 1 snake = +5, 2 snakes = +10, 3 snakes = +15 (total bonus)
						if (snakeCount === 1) {
							petBonus += 5;
						} else if (snakeCount === 2) {
							petBonus += 10;
						} else if (snakeCount === 3) {
							petBonus += 15;
						}
						// Store as multiplier format (base 1 + bonus)
						currentMultiplier = 1 + petBonus;
						storage.equippedAnimals = equippedAnimals;
						storage.currentMultiplier = currentMultiplier;
						// Close and reopen inventory to refresh display
						inventoryOverlay.destroy();
						inventoryOverlay = null;
						isInventoryOpen = false;
						// Reopen inventory to show updated counts
						inventoryBtn.down();
					};
					yPos += 200;
				}
				// Add close inventory button
				var closeInvBtn = new Text2('Close', {
					size: 80,
					fill: 0xFFFFFF
				});
				closeInvBtn.anchor.set(0.5, 0.5);
				closeInvBtn.x = 2048 / 2;
				closeInvBtn.y = 2400;
				inventoryOverlay.addChild(closeInvBtn);
				closeInvBtn.down = function () {
					// Reset delete mode when closing inventory
					deleteMode = false;
					selectedDeleteAnimalType = null;
					inventoryOverlay.destroy();
					inventoryOverlay = null;
					isInventoryOpen = false;
				};
			}
		};
		// Add shop overlay to main game
		game.addChild(shopOverlay);
		isShopOpen = true;
	} else {
		// Close shop - remove overlay
		if (shopOverlay) {
			shopOverlay.destroy();
			shopOverlay = null;
		}
		isShopOpen = false;
	}
};
// Handle menu button tap
menuBtn.down = function () {
	if (!isMenuOpen) {
		// Function to clean up environment elements
		var cleanupEnvironment = function cleanupEnvironment() {
			for (var i = 0; i < environmentElements.length; i++) {
				if (environmentElements[i] && environmentElements[i].parent) {
					environmentElements[i].destroy();
				}
			}
			environmentElements = [];
		};
		// Open menu
		isMenuOpen = true;
		menuOverlay = new Container();
		// Create menu background
		var menuBg = LK.getAsset('shopBg', {
			width: 2048,
			height: 2732,
			color: 0x000000,
			shape: 'box'
		});
		menuOverlay.addChild(menuBg);
		// Graphics title
		var graphicsTitle = new Text2('Graphics Settings', {
			size: 100,
			fill: 0xFFFFFF
		});
		graphicsTitle.anchor.set(0.5, 0.5);
		graphicsTitle.x = 2048 / 2;
		graphicsTitle.y = 400;
		menuOverlay.addChild(graphicsTitle);
		// FPS options
		var fpsOptions = [30, 60, 90, 120];
		var fpsLabels = ['30 FPS - Basic', '60 FPS - Normal', '90 FPS - High Quality', '120 FPS - Ultra'];
		var startY = 600;
		for (var i = 0; i < fpsOptions.length; i++) {
			var fps = fpsOptions[i];
			var label = fpsLabels[i];
			var isSelected = fps === graphicsMode;
			var fpsBtn = new Text2(label, {
				size: 70,
				fill: isSelected ? 0x00ff00 : 0xffffff
			});
			fpsBtn.anchor.set(0.5, 0.5);
			fpsBtn.x = 2048 / 2;
			fpsBtn.y = startY + i * 150;
			fpsBtn.fpsValue = fps;
			menuOverlay.addChild(fpsBtn);
			fpsBtn.down = function () {
				graphicsMode = this.fpsValue;
				if (this.fpsValue === 120) {
					ultraRealisticMode = true;
				} else {
					ultraRealisticMode = false;
				}
				// Clean up existing environment and recreate
				cleanupEnvironment();
				createUltraRealisticEnvironment();
				// Close and reopen menu to refresh
				menuOverlay.destroy();
				isMenuOpen = false;
				menuBtn.down();
			};
		}
		// Close button
		var closeBtn = new Text2('Close', {
			size: 80,
			fill: 0xFFFFFF
		});
		closeBtn.anchor.set(0.5, 0.5);
		closeBtn.x = 2048 / 2;
		closeBtn.y = 1400;
		menuOverlay.addChild(closeBtn);
		closeBtn.down = function () {
			menuOverlay.destroy();
			menuOverlay = null;
			isMenuOpen = false;
		};
		game.addChild(menuOverlay);
	} else {
		// Close menu
		if (menuOverlay) {
			menuOverlay.destroy();
			menuOverlay = null;
		}
		isMenuOpen = false;
	}
};
// Update score display on game start
game.update = function () {
	// Keep score text updated (in case it changes from other sources)
	scoreTxt.setText(LK.getScore().toString());
	// Update rain system for 120 fps mode
	if (ultraRealisticMode && graphicsMode === 120) {
		var currentTime = Date.now();
		// Update clock
		updateClock();
		// Check if it's time to start raining
		if (!isRaining && currentTime >= nextRainTime) {
			isRaining = true;
			rainTimer = currentTime + rainDuration;
		}
		// Check if rain should stop
		if (isRaining && currentTime >= rainTimer) {
			isRaining = false;
			nextRainTime = currentTime + rainInterval;
		}
		// Create rain drops when raining
		if (isRaining && Math.random() < 0.3) {
			createRainDrop();
		}
		// Update rain drops
		for (var i = rainDrops.length - 1; i >= 0; i--) {
			var drop = rainDrops[i];
			drop.lastY = drop.y;
			drop.y += drop.speed;
			// Check if drop hits ground
			if (drop.lastY <= 2732 && drop.y > 2732) {
				// Create splash effect
				createRainSplash(drop.x, 2732);
				// Remove drop
				drop.destroy();
				rainDrops.splice(i, 1);
			} else if (drop.y > 2800) {
				// Remove drops that went too far off screen
				drop.destroy();
				rainDrops.splice(i, 1);
			}
		}
	}
}; /**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/**** 
* Classes
****/ 
var Pet = Container.expand(function (petType, rarity, bonusPerTap, dropChance) {
	var self = Container.call(this);
	self.petType = petType;
	self.rarity = rarity;
	self.bonusPerTap = bonusPerTap;
	self.dropChance = dropChance;
	// Create pet sprite
	var petSprite = self.attachAsset(petType, {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Scale for enhanced mode
	if (ultraRealisticMode) {
		petSprite.scaleX = 1.2;
		petSprite.scaleY = 1.2;
	}
	// Animate pet entrance
	self.animateEntrance = function () {
		if (ultraRealisticMode) {
			// Start from small and grow
			petSprite.scaleX = 0.1;
			petSprite.scaleY = 0.1;
			petSprite.alpha = 0;
			// Animate growth and fade in
			tween(petSprite, {
				scaleX: 1.2,
				scaleY: 1.2,
				alpha: 1
			}, {
				duration: 1000,
				easing: tween.bounceOut
			});
			// Add spinning effect
			tween(petSprite, {
				rotation: Math.PI * 2
			}, {
				duration: 1500,
				easing: tween.easeOut
			});
		}
	};
	// Show pet info
	self.showInfo = function () {
		var infoBg = LK.getAsset('petInfoBg', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		infoBg.x = 2048 / 2;
		infoBg.y = 2732 / 2;
		game.addChild(infoBg);
		// Pet name
		var nameText = new Text2(self.petType.toUpperCase(), {
			size: 80,
			fill: 0xFFD700
		});
		nameText.anchor.set(0.5, 0.5);
		nameText.x = 2048 / 2;
		nameText.y = 2732 / 2 - 150;
		game.addChild(nameText);
		// Bonus info
		var bonusText = new Text2('Score per tap: +' + self.bonusPerTap, {
			size: 60,
			fill: 0xFFFFFF
		});
		bonusText.anchor.set(0.5, 0.5);
		bonusText.x = 2048 / 2;
		bonusText.y = 2732 / 2 - 50;
		game.addChild(bonusText);
		// Rarity info
		var rarityText = new Text2('Rarity: ' + self.rarity, {
			size: 60,
			fill: 0x00FF00
		});
		rarityText.anchor.set(0.5, 0.5);
		rarityText.x = 2048 / 2;
		rarityText.y = 2732 / 2 + 50;
		game.addChild(rarityText);
		// Drop chance info
		var chanceText = new Text2('Drop chance: ' + (self.dropChance * 100).toFixed(2) + '%', {
			size: 60,
			fill: 0xFF6B6B
		});
		chanceText.anchor.set(0.5, 0.5);
		chanceText.x = 2048 / 2;
		chanceText.y = 2732 / 2 + 150;
		game.addChild(chanceText);
		// Auto-hide after 3 seconds
		LK.setTimeout(function () {
			infoBg.destroy();
			nameText.destroy();
			bonusText.destroy();
			rarityText.destroy();
			chanceText.destroy();
		}, 3000);
	};
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x2c3e50 // Dark blue-gray background
});
/**** 
* Game Code
****/ 
// Reset all storage on game start
// Enhanced egg assets for 120 fps ultra-realistic mode
// Enhanced cracked egg assets for 120 fps mode
// Ultra-realistic environment assets for 120 fps mode
storage.currentMultiplier = 1;
storage.inventory = [];
storage.equippedAnimals = [];
// Global game variables
var currentMultiplier = 1;
var inventory = [];
var isInventoryOpen = false;
var inventoryOverlay = null;
var equippedAnimals = [];
var maxEquippedPets = 3;
var fallingEgg = null;
var eggClickCount = 0;
var deleteMode = false;
var selectedDeleteAnimalType = null;
// Graphics settings variables
var graphicsMode = 60; // 30, 60, 90, 120 fps
var isMenuOpen = false;
var menuOverlay = null;
var ultraRealisticMode = false;
// Rain system variables
var rainDrops = [];
var isRaining = false;
var rainTimer = 0;
var rainDuration = 300000; // 5 minutes in milliseconds
var rainInterval = 600000; // 10 minutes in milliseconds
var nextRainTime = 0;
// Clock system variables (20x faster than real time)
var gameTime = 0; // Game time in milliseconds
var clockDisplay = null;
var sunElement = null;
var moonElement = null;
var isDayTime = true;
var skyTint = 0xffffff;
// Function to get enhanced egg asset based on graphics mode
function getEnhancedEggAsset(baseAssetName, anchorSettings) {
	var assetName = baseAssetName;
	if (ultraRealisticMode && graphicsMode === 120) {
		assetName = baseAssetName + 'Ultra';
	}
	return LK.getAsset(assetName, {});
}
// Reset score to 0 on game start
LK.setScore(0);
// Initialize score display
var scoreTxt = new Text2('0', {
	size: 120,
	fill: 0xFFFFFF
});
// Set score text properties
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Position score text with some padding from top
scoreTxt.y = 100;
// Create menu button in top-left (avoiding the platform menu icon area)
var menuBtn = new Container();
var menuBg = LK.getAsset('menuButton', {
	anchorX: 0.5,
	anchorY: 0.5
});
menuBtn.addChild(menuBg);
// Add hamburger lines
var line1 = LK.getAsset('menuLine', {
	anchorX: 0.5,
	anchorY: 0.5
});
line1.y = -15;
menuBtn.addChild(line1);
var line2 = LK.getAsset('menuLine', {
	anchorX: 0.5,
	anchorY: 0.5
});
menuBtn.addChild(line2);
var line3 = LK.getAsset('menuLine', {
	anchorX: 0.5,
	anchorY: 0.5
});
line3.y = 15;
menuBtn.addChild(line3);
// Position menu button at top-right with safe padding
menuBtn.x = 2048 - 150;
menuBtn.y = 150;
game.addChild(menuBtn);
// Add ultra-realistic environment for 120 fps mode
var environmentElements = [];
function createUltraRealisticEnvironment() {
	if (ultraRealisticMode && graphicsMode === 120) {
		// Animation functions removed with campfire
		// Pine tree creation removed
		// Normal tree creation removed
		// Center log removed for cleaner environment
		// Stone paths removed for cleaner environment
		// Campfire removed for cleaner environment
		// Create clock display
		clockDisplay = new Text2('12:00', {
			size: 60,
			fill: 0xffffff
		});
		clockDisplay.anchor.set(0.5, 0);
		clockDisplay.x = 2048 / 2;
		clockDisplay.y = 50;
		game.addChild(clockDisplay);
		// Sun and moon elements removed for 120 fps mode
		sunElement = null;
		moonElement = null;
		// Initialize rain system
		nextRainTime = Date.now() + rainInterval;
	}
}
// Rain creation function
function createRainDrop() {
	if (!ultraRealisticMode || graphicsMode !== 120) {
		return;
	}
	var rainDrop = LK.getAsset('rainDrop', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	rainDrop.x = Math.random() * 2048;
	rainDrop.y = -50;
	rainDrop.speed = 8 + Math.random() * 4;
	rainDrop.lastY = rainDrop.y;
	game.addChild(rainDrop);
	rainDrops.push(rainDrop);
}
// Rain splash effect function
function createRainSplash(x, y) {
	if (!ultraRealisticMode || graphicsMode !== 120) {
		return;
	}
	var splash = LK.getAsset('rainSplash', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	splash.x = x;
	splash.y = y;
	splash.alpha = 0.8;
	splash.scaleX = 0.5;
	splash.scaleY = 0.5;
	game.addChild(splash);
	// Animate splash with shock wave effect
	tween(splash, {
		scaleX: 3,
		scaleY: 3,
		alpha: 0
	}, {
		duration: 400,
		easing: tween.easeOut,
		onFinish: function onFinish() {
			splash.destroy();
		}
	});
}
// Update clock display
function updateClock() {
	if (!ultraRealisticMode || graphicsMode !== 120 || !clockDisplay) {
		return;
	}
	// Game time runs 20x faster than real time
	var currentTime = Date.now();
	gameTime += (currentTime - (gameTime > 0 ? gameTime : currentTime)) * 20;
	// Calculate hours and minutes (12-hour format)
	var totalMinutes = Math.floor(gameTime / 60000) % (24 * 60);
	var hours = Math.floor(totalMinutes / 60) % 24;
	var minutes = totalMinutes % 60;
	var displayHours = hours % 12;
	if (displayHours === 0) {
		displayHours = 12;
	}
	var timeString = displayHours.toString().padStart(2, '0') + ':' + minutes.toString().padStart(2, '0');
	clockDisplay.setText(timeString);
	// Day/night cycle removed for 120 fps mode
	isDayTime = hours >= 6 && hours < 18;
}
// Add tap instruction text
var instructionTxt = new Text2('Tap anywhere to score!', {
	size: 60,
	fill: 0xBDC3C7
});
instructionTxt.anchor.set(0.5, 0.5);
instructionTxt.x = 2048 / 2;
instructionTxt.y = 2732 / 2;
game.addChild(instructionTxt);
// Initialize ultra-realistic environment
createUltraRealisticEnvironment();
// Handle tap events on the game area
game.down = function (x, y, obj) {
	// Calculate pet bonus based on equipped animal quantities
	var petBonus = 0;
	// Count each animal type
	var dogCount = 0;
	var catCount = 0;
	var snakeCount = 0;
	var goldenDogCount = 0;
	var goldenCatCount = 0;
	var goldenSnakeCount = 0;
	var dinosaurCount = 0;
	var bearCount = 0;
	var beeCount = 0;
	var goldenDinosaurCount = 0;
	var goldenBearCount = 0;
	var goldenBeeCount = 0;
	var trexCount = 0;
	var velectorCount = 0;
	var titanaBullCount = 0;
	var goldenTrexCount = 0;
	var goldenVelectorCount = 0;
	var goldenTitanaBullCount = 0;
	var ironManCount = 0;
	var captainAmericaCount = 0;
	var spidermanCount = 0;
	var goldenIronManCount = 0;
	var goldenCaptainAmericaCount = 0;
	var goldenSpidermanCount = 0;
	var kingCount = 0;
	var knightCount = 0;
	var humanCount = 0;
	var goldenKingCount = 0;
	var goldenKnightCount = 0;
	var goldenHumanCount = 0;
	var earthCount = 0;
	var moonCount = 0;
	var meteorCount = 0;
	var sunCount = 0;
	var jupiterCount = 0;
	var neptuneCount = 0;
	var goldenEarthCount = 0;
	var goldenMoonCount = 0;
	var goldenMeteorCount = 0;
	var goldenSunCount = 0;
	var goldenJupiterCount = 0;
	var goldenNeptuneCount = 0;
	var andromedaGalaxyCount = 0;
	var normalGalaxyCount = 0;
	var milkyWayGalaxyCount = 0;
	var goldenAndromedaGalaxyCount = 0;
	var goldenNormalGalaxyCount = 0;
	var goldenMilkyWayGalaxyCount = 0;
	for (var j = 0; j < equippedAnimals.length; j++) {
		if (equippedAnimals[j] === 'dog') {
			dogCount++;
		} else if (equippedAnimals[j] === 'cat') {
			catCount++;
		} else if (equippedAnimals[j] === 'snake') {
			snakeCount++;
		} else if (equippedAnimals[j] === 'goldenDog') {
			goldenDogCount++;
		} else if (equippedAnimals[j] === 'goldenCat') {
			goldenCatCount++;
		} else if (equippedAnimals[j] === 'goldenSnake') {
			goldenSnakeCount++;
		} else if (equippedAnimals[j] === 'dinosaur') {
			dinosaurCount++;
		} else if (equippedAnimals[j] === 'bear') {
			bearCount++;
		} else if (equippedAnimals[j] === 'bee') {
			beeCount++;
		} else if (equippedAnimals[j] === 'goldenDinosaur') {
			goldenDinosaurCount++;
		} else if (equippedAnimals[j] === 'goldenBear') {
			goldenBearCount++;
		} else if (equippedAnimals[j] === 'goldenBee') {
			goldenBeeCount++;
		} else if (equippedAnimals[j] === 'trex') {
			trexCount++;
		} else if (equippedAnimals[j] === 'velector') {
			velectorCount++;
		} else if (equippedAnimals[j] === 'titanaBull') {
			titanaBullCount++;
		} else if (equippedAnimals[j] === 'goldenTrex') {
			goldenTrexCount++;
		} else if (equippedAnimals[j] === 'goldenVelector') {
			goldenVelectorCount++;
		} else if (equippedAnimals[j] === 'goldenTitanaBull') {
			goldenTitanaBullCount++;
		} else if (equippedAnimals[j] === 'ironMan') {
			ironManCount++;
		} else if (equippedAnimals[j] === 'captainAmerica') {
			captainAmericaCount++;
		} else if (equippedAnimals[j] === 'spiderman') {
			spidermanCount++;
		} else if (equippedAnimals[j] === 'goldenIronMan') {
			goldenIronManCount++;
		} else if (equippedAnimals[j] === 'goldenCaptainAmerica') {
			goldenCaptainAmericaCount++;
		} else if (equippedAnimals[j] === 'goldenSpiderman') {
			goldenSpidermanCount++;
		} else if (equippedAnimals[j] === 'king') {
			kingCount++;
		} else if (equippedAnimals[j] === 'knight') {
			knightCount++;
		} else if (equippedAnimals[j] === 'human') {
			humanCount++;
		} else if (equippedAnimals[j] === 'goldenKing') {
			goldenKingCount++;
		} else if (equippedAnimals[j] === 'goldenKnight') {
			goldenKnightCount++;
		} else if (equippedAnimals[j] === 'goldenHuman') {
			goldenHumanCount++;
		} else if (equippedAnimals[j] === 'earth') {
			earthCount++;
		} else if (equippedAnimals[j] === 'moon') {
			moonCount++;
		} else if (equippedAnimals[j] === 'meteor') {
			meteorCount++;
		} else if (equippedAnimals[j] === 'sun') {
			sunCount++;
		} else if (equippedAnimals[j] === 'jupiter') {
			jupiterCount++;
		} else if (equippedAnimals[j] === 'neptune') {
			neptuneCount++;
		} else if (equippedAnimals[j] === 'goldenEarth') {
			goldenEarthCount++;
		} else if (equippedAnimals[j] === 'goldenMoon') {
			goldenMoonCount++;
		} else if (equippedAnimals[j] === 'goldenMeteor') {
			goldenMeteorCount++;
		} else if (equippedAnimals[j] === 'goldenSun') {
			goldenSunCount++;
		} else if (equippedAnimals[j] === 'goldenJupiter') {
			goldenJupiterCount++;
		} else if (equippedAnimals[j] === 'goldenNeptune') {
			goldenNeptuneCount++;
		} else if (equippedAnimals[j] === 'andromedaGalaxy') {
			andromedaGalaxyCount++;
		} else if (equippedAnimals[j] === 'normalGalaxy') {
			normalGalaxyCount++;
		} else if (equippedAnimals[j] === 'milkyWayGalaxy') {
			milkyWayGalaxyCount++;
		} else if (equippedAnimals[j] === 'goldenAndromedaGalaxy') {
			goldenAndromedaGalaxyCount++;
		} else if (equippedAnimals[j] === 'goldenNormalGalaxy') {
			goldenNormalGalaxyCount++;
		} else if (equippedAnimals[j] === 'goldenMilkyWayGalaxy') {
			goldenMilkyWayGalaxyCount++;
		}
	}
	// Each dog gives +1 bonus per tap
	petBonus += dogCount;
	// Cats: 1 cat = +2, 2 cats = +4, 3 cats = +6 (total bonus)
	if (catCount === 1) {
		petBonus += 2;
	} else if (catCount === 2) {
		petBonus += 4;
	} else if (catCount === 3) {
		petBonus += 6;
	}
	// Snakes: 1 snake = +5, 2 snakes = +10, 3 snakes = +15 (total bonus)
	if (snakeCount === 1) {
		petBonus += 5;
	} else if (snakeCount === 2) {
		petBonus += 10;
	} else if (snakeCount === 3) {
		petBonus += 15;
	}
	// Golden pets bonuses
	// Golden dogs: 1 = +3, 2 = +6, 3 = +9 per tap
	if (goldenDogCount === 1) {
		petBonus += 3;
	} else if (goldenDogCount === 2) {
		petBonus += 6;
	} else if (goldenDogCount === 3) {
		petBonus += 9;
	}
	// Golden cats: 1 = +6, 2 = +12, 3 = +18 per tap
	if (goldenCatCount === 1) {
		petBonus += 6;
	} else if (goldenCatCount === 2) {
		petBonus += 12;
	} else if (goldenCatCount === 3) {
		petBonus += 18;
	}
	// Golden snakes: 1 = +10, 2 = +20, 3 = +30 per tap
	if (goldenSnakeCount === 1) {
		petBonus += 10;
	} else if (goldenSnakeCount === 2) {
		petBonus += 20;
	} else if (goldenSnakeCount === 3) {
		petBonus += 30;
	}
	// Green egg pets bonuses
	// Dinosaurs: 1 = +30, 2 = +60, 3 = +90 per tap
	if (dinosaurCount === 1) {
		petBonus += 30;
	} else if (dinosaurCount === 2) {
		petBonus += 60;
	} else if (dinosaurCount === 3) {
		petBonus += 90;
	}
	// Bears: 1 = +20, 2 = +40, 3 = +60 per tap
	if (bearCount === 1) {
		petBonus += 20;
	} else if (bearCount === 2) {
		petBonus += 40;
	} else if (bearCount === 3) {
		petBonus += 60;
	}
	// Bees: 1 = +10, 2 = +20, 3 = +30 per tap
	if (beeCount === 1) {
		petBonus += 10;
	} else if (beeCount === 2) {
		petBonus += 20;
	} else if (beeCount === 3) {
		petBonus += 30;
	}
	// Golden green egg pets bonuses (2x multiplier)
	// Golden dinosaurs: 1 = +60, 2 = +120, 3 = +180 per tap
	if (goldenDinosaurCount === 1) {
		petBonus += 60;
	} else if (goldenDinosaurCount === 2) {
		petBonus += 120;
	} else if (goldenDinosaurCount === 3) {
		petBonus += 180;
	}
	// Golden bears: 1 = +40, 2 = +80, 3 = +120 per tap
	if (goldenBearCount === 1) {
		petBonus += 40;
	} else if (goldenBearCount === 2) {
		petBonus += 80;
	} else if (goldenBearCount === 3) {
		petBonus += 120;
	}
	// Golden bees: 1 = +20, 2 = +40, 3 = +60 per tap
	if (goldenBeeCount === 1) {
		petBonus += 20;
	} else if (goldenBeeCount === 2) {
		petBonus += 40;
	} else if (goldenBeeCount === 3) {
		petBonus += 60;
	}
	// Red egg pets bonuses
	// T-rex: 1 = +100, 2 = +200, 3 = +300 per tap
	if (trexCount === 1) {
		petBonus += 100;
	} else if (trexCount === 2) {
		petBonus += 200;
	} else if (trexCount === 3) {
		petBonus += 300;
	}
	// Velector: 1 = +80, 2 = +160, 3 = +240 per tap
	if (velectorCount === 1) {
		petBonus += 80;
	} else if (velectorCount === 2) {
		petBonus += 160;
	} else if (velectorCount === 3) {
		petBonus += 240;
	}
	// Titana Bull: 1 = +50, 2 = +100, 3 = +150 per tap
	if (titanaBullCount === 1) {
		petBonus += 50;
	} else if (titanaBullCount === 2) {
		petBonus += 100;
	} else if (titanaBullCount === 3) {
		petBonus += 150;
	}
	// Golden red egg pets bonuses
	// Golden T-rex: 1 = +200, 2 = +400, 3 = +600 per tap
	if (goldenTrexCount === 1) {
		petBonus += 200;
	} else if (goldenTrexCount === 2) {
		petBonus += 400;
	} else if (goldenTrexCount === 3) {
		petBonus += 600;
	}
	// Golden Velector: 1 = +160, 2 = +320, 3 = +480 per tap
	if (goldenVelectorCount === 1) {
		petBonus += 160;
	} else if (goldenVelectorCount === 2) {
		petBonus += 320;
	} else if (goldenVelectorCount === 3) {
		petBonus += 480;
	}
	// Golden Titana Bull: 1 = +100, 2 = +200, 3 = +300 per tap
	if (goldenTitanaBullCount === 1) {
		petBonus += 100;
	} else if (goldenTitanaBullCount === 2) {
		petBonus += 200;
	} else if (goldenTitanaBullCount === 3) {
		petBonus += 300;
	}
	// Purple egg pets bonuses
	// Iron Man: 1 = +500, 2 = +1000, 3 = +1500 per tap
	if (ironManCount === 1) {
		petBonus += 500;
	} else if (ironManCount === 2) {
		petBonus += 1000;
	} else if (ironManCount === 3) {
		petBonus += 1500;
	}
	// Captain America: 1 = +300, 2 = +600, 3 = +900 per tap
	if (captainAmericaCount === 1) {
		petBonus += 300;
	} else if (captainAmericaCount === 2) {
		petBonus += 600;
	} else if (captainAmericaCount === 3) {
		petBonus += 900;
	}
	// Spiderman: 1 = +250, 2 = +500, 3 = +750 per tap
	if (spidermanCount === 1) {
		petBonus += 250;
	} else if (spidermanCount === 2) {
		petBonus += 500;
	} else if (spidermanCount === 3) {
		petBonus += 750;
	}
	// Golden purple egg pets bonuses (2x multiplier)
	// Golden Iron Man: 1 = +1000, 2 = +2000, 3 = +3000 per tap
	if (goldenIronManCount === 1) {
		petBonus += 1000;
	} else if (goldenIronManCount === 2) {
		petBonus += 2000;
	} else if (goldenIronManCount === 3) {
		petBonus += 3000;
	}
	// Golden Captain America: 1 = +600, 2 = +1200, 3 = +1800 per tap
	if (goldenCaptainAmericaCount === 1) {
		petBonus += 600;
	} else if (goldenCaptainAmericaCount === 2) {
		petBonus += 1200;
	} else if (goldenCaptainAmericaCount === 3) {
		petBonus += 1800;
	}
	// Golden Spiderman: 1 = +500, 2 = +1000, 3 = +1500 per tap
	if (goldenSpidermanCount === 1) {
		petBonus += 500;
	} else if (goldenSpidermanCount === 2) {
		petBonus += 1000;
	} else if (goldenSpidermanCount === 3) {
		petBonus += 1500;
	}
	// White egg pets bonuses
	// King: 1 = +10000, 2 = +20000, 3 = +30000 per tap
	if (kingCount === 1) {
		petBonus += 10000;
	} else if (kingCount === 2) {
		petBonus += 20000;
	} else if (kingCount === 3) {
		petBonus += 30000;
	}
	// Knight: 1 = +5000, 2 = +10000, 3 = +15000 per tap
	if (knightCount === 1) {
		petBonus += 5000;
	} else if (knightCount === 2) {
		petBonus += 10000;
	} else if (knightCount === 3) {
		petBonus += 15000;
	}
	// Human: 1 = +2500, 2 = +5000, 3 = +7500 per tap
	if (humanCount === 1) {
		petBonus += 2500;
	} else if (humanCount === 2) {
		petBonus += 5000;
	} else if (humanCount === 3) {
		petBonus += 7500;
	}
	// Golden white egg pets bonuses (2x multiplier)
	// Golden King: 1 = +20000, 2 = +40000, 3 = +60000 per tap
	if (goldenKingCount === 1) {
		petBonus += 20000;
	} else if (goldenKingCount === 2) {
		petBonus += 40000;
	} else if (goldenKingCount === 3) {
		petBonus += 60000;
	}
	// Golden Knight: 1 = +10000, 2 = +20000, 3 = +30000 per tap
	if (goldenKnightCount === 1) {
		petBonus += 10000;
	} else if (goldenKnightCount === 2) {
		petBonus += 20000;
	} else if (goldenKnightCount === 3) {
		petBonus += 30000;
	}
	// Golden Human: 1 = +5000, 2 = +10000, 3 = +15000 per tap
	if (goldenHumanCount === 1) {
		petBonus += 5000;
	} else if (goldenHumanCount === 2) {
		petBonus += 10000;
	} else if (goldenHumanCount === 3) {
		petBonus += 15000;
	}
	// Space egg pets bonuses
	// Earth: 1 = +100000, 2 = +200000, 3 = +300000 per tap
	if (earthCount === 1) {
		petBonus += 100000;
	} else if (earthCount === 2) {
		petBonus += 200000;
	} else if (earthCount === 3) {
		petBonus += 300000;
	}
	// Moon: 1 = +50000, 2 = +100000, 3 = +150000 per tap
	if (moonCount === 1) {
		petBonus += 50000;
	} else if (moonCount === 2) {
		petBonus += 100000;
	} else if (moonCount === 3) {
		petBonus += 150000;
	}
	// Meteor: 1 = +25000, 2 = +50000, 3 = +75000 per tap
	if (meteorCount === 1) {
		petBonus += 25000;
	} else if (meteorCount === 2) {
		petBonus += 50000;
	} else if (meteorCount === 3) {
		petBonus += 75000;
	}
	// Sun: 1 = +500000, 2 = +1000000, 3 = +1500000 per tap
	if (sunCount === 1) {
		petBonus += 500000;
	} else if (sunCount === 2) {
		petBonus += 1000000;
	} else if (sunCount === 3) {
		petBonus += 1500000;
	}
	// Jupiter: 1 = +250000, 2 = +500000, 3 = +750000 per tap
	if (jupiterCount === 1) {
		petBonus += 250000;
	} else if (jupiterCount === 2) {
		petBonus += 500000;
	} else if (jupiterCount === 3) {
		petBonus += 750000;
	}
	// Neptune: 1 = +200000, 2 = +400000, 3 = +600000 per tap
	if (neptuneCount === 1) {
		petBonus += 200000;
	} else if (neptuneCount === 2) {
		petBonus += 400000;
	} else if (neptuneCount === 3) {
		petBonus += 600000;
	}
	// Golden space egg pets bonuses (2x multiplier)
	// Golden Earth: 1 = +200000, 2 = +400000, 3 = +600000 per tap
	if (goldenEarthCount === 1) {
		petBonus += 200000;
	} else if (goldenEarthCount === 2) {
		petBonus += 400000;
	} else if (goldenEarthCount === 3) {
		petBonus += 600000;
	}
	// Golden Moon: 1 = +100000, 2 = +200000, 3 = +300000 per tap
	if (goldenMoonCount === 1) {
		petBonus += 100000;
	} else if (goldenMoonCount === 2) {
		petBonus += 200000;
	} else if (goldenMoonCount === 3) {
		petBonus += 300000;
	}
	// Golden Meteor: 1 = +50000, 2 = +100000, 3 = +150000 per tap
	if (goldenMeteorCount === 1) {
		petBonus += 50000;
	} else if (goldenMeteorCount === 2) {
		petBonus += 100000;
	} else if (goldenMeteorCount === 3) {
		petBonus += 150000;
	}
	// Golden Sun: 1 = +1000000, 2 = +2000000, 3 = +3000000 per tap
	if (goldenSunCount === 1) {
		petBonus += 1000000;
	} else if (goldenSunCount === 2) {
		petBonus += 2000000;
	} else if (goldenSunCount === 3) {
		petBonus += 3000000;
	}
	// Golden Jupiter: 1 = +500000, 2 = +1000000, 3 = +1500000 per tap
	if (goldenJupiterCount === 1) {
		petBonus += 500000;
	} else if (goldenJupiterCount === 2) {
		petBonus += 1000000;
	} else if (goldenJupiterCount === 3) {
		petBonus += 1500000;
	}
	// Golden Neptune: 1 = +400000, 2 = +800000, 3 = +1200000 per tap
	if (goldenNeptuneCount === 1) {
		petBonus += 400000;
	} else if (goldenNeptuneCount === 2) {
		petBonus += 800000;
	} else if (goldenNeptuneCount === 3) {
		petBonus += 1200000;
	}
	// Galaxy egg pets bonuses
	// Andromeda Galaxy: 1 = +5000000, 2 = +10000000, 3 = +15000000 per tap
	if (andromedaGalaxyCount === 1) {
		petBonus += 5000000;
	} else if (andromedaGalaxyCount === 2) {
		petBonus += 10000000;
	} else if (andromedaGalaxyCount === 3) {
		petBonus += 15000000;
	}
	// Normal Galaxy: 1 = +10000000, 2 = +20000000, 3 = +30000000 per tap
	if (normalGalaxyCount === 1) {
		petBonus += 10000000;
	} else if (normalGalaxyCount === 2) {
		petBonus += 20000000;
	} else if (normalGalaxyCount === 3) {
		petBonus += 30000000;
	}
	// Milky Way Galaxy: 1 = +20000000, 2 = +40000000, 3 = +60000000 per tap
	if (milkyWayGalaxyCount === 1) {
		petBonus += 20000000;
	} else if (milkyWayGalaxyCount === 2) {
		petBonus += 40000000;
	} else if (milkyWayGalaxyCount === 3) {
		petBonus += 60000000;
	}
	// Golden galaxy egg pets bonuses (2x multiplier)
	// Golden Andromeda Galaxy: 1 = +10000000, 2 = +20000000, 3 = +30000000 per tap
	if (goldenAndromedaGalaxyCount === 1) {
		petBonus += 10000000;
	} else if (goldenAndromedaGalaxyCount === 2) {
		petBonus += 20000000;
	} else if (goldenAndromedaGalaxyCount === 3) {
		petBonus += 30000000;
	}
	// Golden Normal Galaxy: 1 = +20000000, 2 = +40000000, 3 = +60000000 per tap
	if (goldenNormalGalaxyCount === 1) {
		petBonus += 20000000;
	} else if (goldenNormalGalaxyCount === 2) {
		petBonus += 40000000;
	} else if (goldenNormalGalaxyCount === 3) {
		petBonus += 60000000;
	}
	// Golden Milky Way Galaxy: 1 = +40000000, 2 = +80000000, 3 = +120000000 per tap
	if (goldenMilkyWayGalaxyCount === 1) {
		petBonus += 40000000;
	} else if (goldenMilkyWayGalaxyCount === 2) {
		petBonus += 80000000;
	} else if (goldenMilkyWayGalaxyCount === 3) {
		petBonus += 120000000;
	}
	// Base tap score is always 1, plus calculated pet bonus
	var totalScore = 1 + petBonus;
	LK.setScore(LK.getScore() + totalScore);
	// Update score display
	scoreTxt.setText(LK.getScore().toString());
	// Create visual feedback at tap location showing total points gained
	var feedbackText = '+' + totalScore.toString();
	var tapFeedback = new Text2(feedbackText, {
		size: ultraRealisticMode ? 120 : 80,
		fill: ultraRealisticMode ? 0xFFD700 : 0x27AE60
	});
	tapFeedback.anchor.set(0.5, 0.5);
	tapFeedback.x = x;
	tapFeedback.y = y;
	tapFeedback.alpha = 1;
	game.addChild(tapFeedback);
	// Enhanced animation for ultra-realistic mode
	if (ultraRealisticMode) {
		// Create enhanced circular shock wave with multiple layers
		var shockWave = LK.getAsset('shockWave', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		shockWave.x = x;
		shockWave.y = y;
		shockWave.alpha = 0.9;
		shockWave.scaleX = 0.5;
		shockWave.scaleY = 0.5;
		game.addChild(shockWave);
		// Create secondary shock wave for depth
		var shockWave2 = LK.getAsset('shockWave', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		shockWave2.x = x;
		shockWave2.y = y;
		shockWave2.alpha = 0.6;
		shockWave2.scaleX = 0.3;
		shockWave2.scaleY = 0.3;
		shockWave2.tint = 0xFFD700;
		game.addChild(shockWave2);
		// Animate primary shock wave
		tween(shockWave, {
			scaleX: 12,
			scaleY: 12,
			alpha: 0
		}, {
			duration: 1200,
			easing: tween.easeOut
		});
		// Animate secondary shock wave with delay
		tween(shockWave2, {
			scaleX: 15,
			scaleY: 15,
			alpha: 0
		}, {
			duration: 1500,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				shockWave.destroy();
				shockWave2.destroy();
			}
		});
		// Create enhanced "+1" text that appears on screen
		var plusOneScreenText = new Text2('+1', {
			size: 150,
			fill: 0xFFD700
		});
		plusOneScreenText.anchor.set(0.5, 0.5);
		plusOneScreenText.x = x;
		plusOneScreenText.y = y - 100;
		plusOneScreenText.alpha = 0;
		game.addChild(plusOneScreenText);
		// Animate "+1" text with scale and float effect
		tween(plusOneScreenText, {
			alpha: 1,
			scaleX: 2.0,
			scaleY: 2.0
		}, {
			duration: 200,
			easing: tween.bounceOut
		});
		// Float "+1" text upward and fade out
		tween(plusOneScreenText, {
			y: y - 300,
			alpha: 0,
			scaleX: 1.5,
			scaleY: 1.5
		}, {
			duration: 1200,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				plusOneScreenText.destroy();
			}
		});
		// Create enhanced score text with glow above score that shows the full score gained
		var plusOneText = new Text2('+' + totalScore, {
			size: 120,
			fill: 0xFFD700
		});
		plusOneText.anchor.set(0.5, 0.5);
		plusOneText.x = scoreTxt.x;
		plusOneText.y = scoreTxt.y + 80;
		plusOneText.alpha = 0;
		LK.gui.top.addChild(plusOneText);
		// Animate score text with bounce and glow
		tween(plusOneText, {
			alpha: 1,
			scaleX: 1.5,
			scaleY: 1.5
		}, {
			duration: 300,
			easing: tween.bounceOut
		});
		// Move score text toward main score
		tween(plusOneText, {
			y: scoreTxt.y - 80,
			alpha: 0,
			scaleX: 0.8,
			scaleY: 0.8
		}, {
			duration: 1800,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				plusOneText.destroy();
			}
		});
		// Enhanced tap feedback with particle effect
		tween(tapFeedback, {
			scaleX: 2.5,
			scaleY: 2.5,
			alpha: 0.8
		}, {
			duration: 250,
			easing: tween.bounceOut
		});
		// Create particle burst effect
		for (var particleIndex = 0; particleIndex < 8; particleIndex++) {
			var particle = new Text2('★', {
				size: 40,
				fill: 0xFFD700
			});
			particle.anchor.set(0.5, 0.5);
			particle.x = x;
			particle.y = y;
			particle.alpha = 0.8;
			game.addChild(particle);
			var angle = particleIndex / 8 * Math.PI * 2;
			var distance = 200 + Math.random() * 100;
			tween(particle, {
				x: x + Math.cos(angle) * distance,
				y: y + Math.sin(angle) * distance,
				alpha: 0,
				scaleX: 0.3,
				scaleY: 0.3,
				rotation: Math.PI
			}, {
				duration: 1000 + Math.random() * 500,
				easing: tween.easeOut,
				onFinish: function onFinish() {
					particle.destroy();
				}
			});
		}
		// Enhanced floating animation with complex path
		tween(tapFeedback, {
			y: y - 300,
			x: x + (Math.random() - 0.5) * 150,
			rotation: Math.PI / 3,
			alpha: 0
		}, {
			duration: 2000,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				tapFeedback.destroy();
			}
		});
	} else if (graphicsMode === 90) {
		// Enhanced 90 fps mode animation with detailed and realistic effects
		// Create enhanced glow effect with multiple phases
		tween(tapFeedback, {
			scaleX: 2.0,
			scaleY: 2.0,
			alpha: 0.9
		}, {
			duration: 150,
			easing: tween.easeOut
		});
		// Create floating animation with enhanced rotation and movement
		tween(tapFeedback, {
			y: y - 250,
			x: x + (Math.random() - 0.5) * 100,
			rotation: Math.PI / 3,
			alpha: 0,
			scaleX: 0.5,
			scaleY: 0.5
		}, {
			duration: 1800,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				tapFeedback.destroy();
			}
		});
		// Create realistic bounce effect with shadow simulation
		LK.setTimeout(function () {
			tween(tapFeedback, {
				scaleX: 1.2,
				scaleY: 1.2
			}, {
				duration: 200,
				easing: tween.bounceOut
			});
		}, 150);
		// Add realistic color transition for enhanced visual appeal
		LK.setTimeout(function () {
			tween(tapFeedback, {
				tint: 0xFFD700
			}, {
				duration: 300,
				easing: tween.easeInOut
			});
		}, 300);
		// Create secondary glow burst effect
		var secondaryGlow = new Text2('+' + totalScore.toString(), {
			size: 100,
			fill: 0xFFFFFF,
			alpha: 0.6
		});
		secondaryGlow.anchor.set(0.5, 0.5);
		secondaryGlow.x = x;
		secondaryGlow.y = y;
		game.addChild(secondaryGlow);
		// Animate secondary glow with different trajectory
		tween(secondaryGlow, {
			y: y - 180,
			x: x + (Math.random() - 0.5) * 80,
			scaleX: 1.8,
			scaleY: 1.8,
			alpha: 0,
			rotation: -Math.PI / 4
		}, {
			duration: 1600,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				secondaryGlow.destroy();
			}
		});
	} else {
		// Standard animation for 30 and 60 fps
		var startY = y;
		var animationDuration = graphicsMode === 30 ? 1200 : 800;
		var startTime = Date.now();
		var _animateCallback = function animateCallback() {
			var elapsed = Date.now() - startTime;
			var progress = elapsed / animationDuration;
			if (progress >= 1) {
				tapFeedback.destroy();
				return;
			}
			// Move text upward and fade out
			tapFeedback.y = startY - progress * 100;
			tapFeedback.alpha = 1 - progress;
			var frameDelay = graphicsMode === 30 ? 33 : 16;
			LK.setTimeout(_animateCallback, frameDelay);
		};
		_animateCallback();
	}
	// Hide instruction text after first tap
	if (LK.getScore() === 1) {
		instructionTxt.alpha = 0;
	}
};
// Add Shop button
var shopBtn = new Text2('Shop', {
	size: 80,
	fill: 0xFFFFFF
});
shopBtn.anchor.set(1, 0);
LK.gui.topRight.addChild(shopBtn);
shopBtn.x = -20; // Small padding from right edge
shopBtn.y = 20; // Small padding from top
// Shop interface state
var isShopOpen = false;
var shopOverlay = null;
// Handle shop button tap
shopBtn.down = function (x, y, obj) {
	if (!isShopOpen) {
		// Open shop - create black overlay using Container
		shopOverlay = new Container();
		// Create black background shape for overlay
		var shopBackground = LK.getAsset('shopBg', {
			width: 2048,
			height: 2732,
			color: 0x000000,
			shape: 'box'
		});
		shopOverlay.addChild(shopBackground);
		shopOverlay.x = 0;
		shopOverlay.y = 0;
		// NORMAL EGGS SECTION
		// Normal eggs data
		var normalEggs = [{
			asset: 'egg',
			price: '1000 Score',
			color: 0xFFFFFF
		}, {
			asset: 'greenEgg',
			price: '15000 Score',
			color: 0x00ff00
		}, {
			asset: 'redEgg',
			price: '50000 Score',
			color: 0xff0000
		}, {
			asset: 'purpleEgg',
			price: '1250000 Score',
			color: 0x800080
		}, {
			asset: 'whiteEgg',
			price: '10M',
			color: 0xffffff
		}, {
			asset: 'spaceEgg',
			price: '100M',
			color: 0x4169e1
		}, {
			asset: 'space2Egg',
			price: '200M',
			color: 0x8a2be2
		}, {
			asset: 'galaxyEgg',
			price: '500M',
			color: 0x800080
		}];
		// Golden eggs data
		var goldenEggs = [{
			asset: 'goldenEgg',
			price: '10000 Score',
			color: 0xFFD700
		}, {
			asset: 'goldenGreenEgg',
			price: '30000 Score',
			color: 0x90ee90
		}, {
			asset: 'goldenRedEgg',
			price: '100000 Score',
			color: 0xff6600
		}, {
			asset: 'goldenPurpleEgg',
			price: '2500000 Score',
			color: 0xdaa520
		}, {
			asset: 'goldenWhiteEgg',
			price: '20M',
			color: 0xffd700
		}, {
			asset: 'goldenSpaceEgg',
			price: '200M',
			color: 0xffd700
		}, {
			asset: 'goldenSpace2Egg',
			price: '400M',
			color: 0xffd700
		}, {
			asset: 'goldenGalaxyEgg',
			price: '1B',
			color: 0xffd700
		}];
		// Display normal eggs section
		var normalEggItems = [];
		var startY = 600;
		var eggSpacing = 300;
		var rowSpacing = 300;
		var maxEggsPerRow = 5;
		for (var i = 0; i < normalEggs.length; i++) {
			var row = Math.floor(i / maxEggsPerRow);
			var col = i % maxEggsPerRow;
			var startX = (2048 - (Math.min(normalEggs.length - row * maxEggsPerRow, maxEggsPerRow) - 1) * eggSpacing) / 2;
			var eggX = startX + col * eggSpacing;
			var eggY = startY + row * rowSpacing;
			var eggItem = LK.getAsset(normalEggs[i].asset, {
				anchorX: 0.5,
				anchorY: 0.5
			});
			eggItem.x = eggX;
			eggItem.y = eggY;
			shopOverlay.addChild(eggItem);
			normalEggItems.push(eggItem);
			var eggPriceText = new Text2(normalEggs[i].price, {
				size: 50,
				fill: normalEggs[i].color
			});
			eggPriceText.anchor.set(0.5, 0);
			eggPriceText.x = eggX;
			eggPriceText.y = eggY + 120;
			shopOverlay.addChild(eggPriceText);
		}
		// Display golden eggs section
		var goldenEggItems = [];
		var goldenStartY = startY + Math.ceil(normalEggs.length / maxEggsPerRow) * rowSpacing + 300;
		for (var i = 0; i < goldenEggs.length; i++) {
			var row = Math.floor(i / maxEggsPerRow);
			var col = i % maxEggsPerRow;
			var startX = (2048 - (Math.min(goldenEggs.length - row * maxEggsPerRow, maxEggsPerRow) - 1) * eggSpacing) / 2;
			var eggX = startX + col * eggSpacing;
			var eggY = goldenStartY + row * rowSpacing;
			var goldenEggItem = LK.getAsset(goldenEggs[i].asset, {
				anchorX: 0.5,
				anchorY: 0.5
			});
			goldenEggItem.x = eggX;
			goldenEggItem.y = eggY;
			shopOverlay.addChild(goldenEggItem);
			goldenEggItems.push(goldenEggItem);
			var goldenEggPriceText = new Text2(goldenEggs[i].price, {
				size: 50,
				fill: goldenEggs[i].color
			});
			goldenEggPriceText.anchor.set(0.5, 0);
			goldenEggPriceText.x = eggX;
			goldenEggPriceText.y = eggY + 120;
			shopOverlay.addChild(goldenEggPriceText);
		}
		// Add inventory button
		var inventoryBtnY = goldenStartY + Math.ceil(goldenEggs.length / maxEggsPerRow) * rowSpacing + 100;
		var inventoryBtn = new Text2('Inventory', {
			size: 80,
			fill: 0xFFFFFF
		});
		inventoryBtn.anchor.set(0.5, 0);
		inventoryBtn.x = 2048 * 2 / 3;
		inventoryBtn.y = inventoryBtnY;
		shopOverlay.addChild(inventoryBtn);
		// Store references for purchase handlers
		var eggItem = normalEggItems[0];
		var greenEggItem = normalEggItems[1];
		var redEggItem = normalEggItems[2];
		var purpleEggItem = normalEggItems[3];
		var whiteEggItem = normalEggItems[4];
		var goldenEggItem = goldenEggItems[0];
		var goldenGreenEggItem = goldenEggItems[1];
		var goldenRedEggItem = goldenEggItems[2];
		var goldenPurpleEggItem = goldenEggItems[3];
		var goldenWhiteEggItem = goldenEggItems[4];
		var spaceEggItem = normalEggItems[5];
		var space2EggItem = normalEggItems[6];
		var goldenSpaceEggItem = goldenEggItems[5];
		var goldenSpace2EggItem = goldenEggItems[6];
		var galaxyEggItem = normalEggItems[7];
		var goldenGalaxyEggItem = goldenEggItems[7];
		// Handle egg purchase
		eggItem.down = function () {
			if (LK.getScore() >= 1000) {
				LK.setScore(LK.getScore() - 1000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling egg
				fallingEgg = getEnhancedEggAsset('egg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling with enhanced graphics
				if (ultraRealisticMode) {
					// Ultra-realistic falling with enhanced wobble and scaling effects
					tween(fallingEgg, {
						y: 2732 / 2,
						rotation: Math.PI / 6,
						scaleX: 1.1,
						scaleY: 1.1
					}, {
						duration: 1400,
						easing: tween.bounceOut
					});
					// Enhanced side-to-side wobble with rotation
					tween(fallingEgg, {
						x: 2048 / 2 + 80
					}, {
						duration: 700,
						easing: tween.easeInOut
					});
					LK.setTimeout(function () {
						tween(fallingEgg, {
							x: 2048 / 2 - 80,
							rotation: -Math.PI / 6
						}, {
							duration: 700,
							easing: tween.easeInOut
						});
					}, 700);
					// Add pulsing effect
					tween(fallingEgg, {
						alpha: 0.8
					}, {
						duration: 350,
						easing: tween.easeInOut
					});
					LK.setTimeout(function () {
						tween(fallingEgg, {
							alpha: 1
						}, {
							duration: 350,
							easing: tween.easeInOut
						});
					}, 350);
				} else {
					var fallDuration = graphicsMode === 30 ? 1500 : graphicsMode === 60 ? 1000 : 800;
					tween(fallingEgg, {
						y: 2732 / 2
					}, {
						duration: fallDuration
					});
				}
				// Handle egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = getEnhancedEggAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						// Enhanced cracking animation for 120 fps
						if (ultraRealisticMode) {
							// Add intense shake effect with multiple phases
							tween(crackedEgg1, {
								rotation: Math.PI / 12,
								scaleX: 1.05,
								scaleY: 1.05
							}, {
								duration: 80,
								easing: tween.easeInOut
							});
							LK.setTimeout(function () {
								tween(crackedEgg1, {
									rotation: -Math.PI / 12,
									scaleX: 0.95,
									scaleY: 0.95
								}, {
									duration: 80,
									easing: tween.easeInOut
								});
							}, 80);
							LK.setTimeout(function () {
								tween(crackedEgg1, {
									rotation: Math.PI / 20,
									scaleX: 1.02,
									scaleY: 1.02
								}, {
									duration: 80,
									easing: tween.easeInOut
								});
							}, 160);
							LK.setTimeout(function () {
								tween(crackedEgg1, {
									rotation: 0,
									scaleX: 1,
									scaleY: 1
								}, {
									duration: 120,
									easing: tween.easeInOut
								});
							}, 240);
						}
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = getEnhancedEggAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						// Enhanced cracking animation for 120 fps
						if (ultraRealisticMode) {
							// Add more intense shake and scaling
							tween(crackedEgg2, {
								rotation: Math.PI / 12,
								scaleX: 1.05,
								scaleY: 1.05
							}, {
								duration: 150,
								easing: tween.easeInOut
							});
							LK.setTimeout(function () {
								tween(crackedEgg2, {
									rotation: -Math.PI / 12,
									scaleX: 0.95,
									scaleY: 0.95
								}, {
									duration: 150,
									easing: tween.easeInOut
								});
							}, 150);
							LK.setTimeout(function () {
								tween(crackedEgg2, {
									rotation: 0,
									scaleX: 1,
									scaleY: 1
								}, {
									duration: 150,
									easing: tween.easeInOut
								});
							}, 300);
						}
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = getEnhancedEggAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						// Enhanced final crack animation for 120 fps
						if (ultraRealisticMode) {
							// Add violent shake and pulsing
							tween(crackedEgg3, {
								rotation: Math.PI / 8,
								scaleX: 1.1,
								scaleY: 1.1,
								alpha: 0.7
							}, {
								duration: 200,
								easing: tween.easeInOut
							});
							LK.setTimeout(function () {
								tween(crackedEgg3, {
									rotation: -Math.PI / 8,
									scaleX: 0.9,
									scaleY: 0.9,
									alpha: 1
								}, {
									duration: 200,
									easing: tween.easeInOut
								});
							}, 200);
							LK.setTimeout(function () {
								tween(crackedEgg3, {
									rotation: 0,
									scaleX: 1,
									scaleY: 1
								}, {
									duration: 200,
									easing: tween.easeInOut
								});
							}, 400);
						}
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Enhanced hatching animation for ultra-realistic mode
						if (ultraRealisticMode) {
							// Create spectacular light burst effect
							var lightBurst = new Container();
							for (var lightIndex = 0; lightIndex < 16; lightIndex++) {
								var lightRay = LK.getAsset('lightRay', {
									anchorX: 0.5,
									anchorY: 0.5
								});
								lightRay.rotation = lightIndex * Math.PI / 8;
								lightRay.alpha = 0.8;
								lightBurst.addChild(lightRay);
							}
							// Add golden secondary rays
							for (var lightIndex = 0; lightIndex < 12; lightIndex++) {
								var coloredRay = LK.getAsset('goldenLightRay', {
									anchorX: 0.5,
									anchorY: 0.5
								});
								coloredRay.rotation = lightIndex * Math.PI / 6 + Math.PI / 12;
								coloredRay.alpha = 0.9;
								lightBurst.addChild(coloredRay);
							}
							lightBurst.x = fallingEgg.x;
							lightBurst.y = fallingEgg.y;
							lightBurst.alpha = 0;
							lightBurst.scaleX = 0.5;
							lightBurst.scaleY = 0.5;
							game.addChild(lightBurst);
							// Multi-phase light burst animation
							tween(lightBurst, {
								alpha: 1,
								scaleX: 5,
								scaleY: 5,
								rotation: Math.PI / 3
							}, {
								duration: 500,
								easing: tween.easeOut
							});
							// Secondary expansion phase
							LK.setTimeout(function () {
								tween(lightBurst, {
									alpha: 0.3,
									scaleX: 8,
									scaleY: 8,
									rotation: Math.PI
								}, {
									duration: 800,
									easing: tween.easeOut
								});
							}, 500);
							// Final fade phase
							LK.setTimeout(function () {
								tween(lightBurst, {
									alpha: 0,
									scaleX: 12,
									scaleY: 12,
									rotation: Math.PI * 1.5
								}, {
									duration: 700,
									easing: tween.easeIn,
									onFinish: function onFinish() {
										lightBurst.destroy();
									}
								});
							}, 1300);
						}
						// Hatch the egg
						// Get list of animals that have less than 3 in inventory
						var availableAnimals = [];
						var animalTypes = ['dog', 'cat', 'snake'];
						for (var typeIndex = 0; typeIndex < animalTypes.length; typeIndex++) {
							var animalType = animalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableAnimals.push(animalType);
							}
						}
						var animal;
						if (availableAnimals.length > 0) {
							// Choose randomly from available animals
							var randomIndex = Math.floor(Math.random() * availableAnimals.length);
							animal = availableAnimals[randomIndex];
							// Add to inventory
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All animal types have 3 in inventory, show message and don't give new pet
							animal = null;
							var allPetsText = new Text2('All pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allPetsText.anchor.set(0.5, 0.5);
							allPetsText.x = 2048 / 2;
							allPetsText.y = 1500;
							game.addChild(allPetsText);
							LK.setTimeout(function () {
								allPetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							// Create enhanced pet with detailed info
							var petData = {
								'dog': {
									rarity: 'Common',
									bonus: 1,
									dropChance: 0.6
								},
								'cat': {
									rarity: 'Common',
									bonus: 2,
									dropChance: 0.3
								},
								'snake': {
									rarity: 'Uncommon',
									bonus: 5,
									dropChance: 0.1
								},
								'goldenDog': {
									rarity: 'Rare',
									bonus: 3,
									dropChance: 0.6
								},
								'goldenCat': {
									rarity: 'Rare',
									bonus: 6,
									dropChance: 0.3
								},
								'goldenSnake': {
									rarity: 'Epic',
									bonus: 10,
									dropChance: 0.1
								}
							};
							var currentPetData = petData[animal] || {
								rarity: 'Unknown',
								bonus: 1,
								dropChance: 0.01
							};
							var newPet = new Pet(animal, currentPetData.rarity, currentPetData.bonus, currentPetData.dropChance);
							newPet.x = fallingEgg.x;
							newPet.y = fallingEgg.y;
							game.addChild(newPet);
							// Enhanced pet entrance animation
							newPet.animateEntrance();
							// Move pet towards screen center
							tween(newPet, {
								x: 2048 / 2,
								y: 2732 / 2 - 200,
								scaleX: 1.8,
								scaleY: 1.8
							}, {
								duration: 1500,
								easing: tween.easeOut
							});
							// Show pet information after arrival
							LK.setTimeout(function () {
								newPet.showInfo();
							}, 1800);
							// Remove pet after showing info
							LK.setTimeout(function () {
								newPet.destroy();
							}, 5000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle green egg purchase
		greenEggItem.down = function () {
			if (LK.getScore() >= 15000) {
				LK.setScore(LK.getScore() - 15000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling green egg
				fallingEgg = LK.getAsset('greenEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle green egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the green egg with special probabilities
						var availableGreenAnimals = [];
						var greenAnimalTypes = ['dinosaur', 'bear', 'bee'];
						for (var typeIndex = 0; typeIndex < greenAnimalTypes.length; typeIndex++) {
							var animalType = greenAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableGreenAnimals.push(animalType);
							}
						}
						var animal;
						if (availableGreenAnimals.length > 0) {
							// Special probability distribution for green eggs with Lucky Boost effect
							var random = Math.random();
							var selectedAnimal;
							var dinosaurChance = 0.05;
							var bearChance = 0.2;
							var beeChance = 1.0;
							if (random < dinosaurChance) {
								selectedAnimal = 'dinosaur';
							} else if (random < bearChance) {
								selectedAnimal = 'bear';
							} else {
								selectedAnimal = 'bee';
							}
							// Check if selected animal is available
							if (availableGreenAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableGreenAnimals.length);
								animal = availableGreenAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All green animal types have 3 in inventory
							animal = null;
							var allGreenPetsText = new Text2('All green pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allGreenPetsText.anchor.set(0.5, 0.5);
							allGreenPetsText.x = 2048 / 2;
							allGreenPetsText.y = 1500;
							game.addChild(allGreenPetsText);
							LK.setTimeout(function () {
								allGreenPetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle golden green egg purchase
		goldenGreenEggItem.down = function () {
			if (LK.getScore() >= 30000) {
				LK.setScore(LK.getScore() - 30000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling golden green egg
				fallingEgg = LK.getAsset('goldenGreenEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle golden green egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the golden green egg with special probabilities
						var availableGoldenGreenAnimals = [];
						var goldenGreenAnimalTypes = ['goldenDinosaur', 'goldenBear', 'goldenBee'];
						for (var typeIndex = 0; typeIndex < goldenGreenAnimalTypes.length; typeIndex++) {
							var animalType = goldenGreenAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableGoldenGreenAnimals.push(animalType);
							}
						}
						var animal;
						if (availableGoldenGreenAnimals.length > 0) {
							// Special probability distribution for golden green eggs (same as green)
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.05) {
								selectedAnimal = 'goldenDinosaur'; // 5% chance
							} else if (random < 0.2) {
								selectedAnimal = 'goldenBear'; // 15% chance
							} else {
								selectedAnimal = 'goldenBee'; // 80% chance
							}
							// Check if selected animal is available
							if (availableGoldenGreenAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableGoldenGreenAnimals.length);
								animal = availableGoldenGreenAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All golden green animal types have 3 in inventory
							animal = null;
							var allGoldenGreenPetsText = new Text2('All golden green pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allGoldenGreenPetsText.anchor.set(0.5, 0.5);
							allGoldenGreenPetsText.x = 2048 / 2;
							allGoldenGreenPetsText.y = 1500;
							game.addChild(allGoldenGreenPetsText);
							LK.setTimeout(function () {
								allGoldenGreenPetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle red egg purchase
		redEggItem.down = function () {
			if (LK.getScore() >= 50000) {
				LK.setScore(LK.getScore() - 50000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling red egg
				fallingEgg = LK.getAsset('redEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle red egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the red egg with special probabilities
						var availableRedAnimals = [];
						var redAnimalTypes = ['trex', 'velector', 'titanaBull'];
						for (var typeIndex = 0; typeIndex < redAnimalTypes.length; typeIndex++) {
							var animalType = redAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableRedAnimals.push(animalType);
							}
						}
						var animal;
						if (availableRedAnimals.length > 0) {
							// Special probability distribution for red eggs
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.05) {
								selectedAnimal = 'trex'; // 5% chance
							} else if (random < 0.3) {
								selectedAnimal = 'velector'; // 25% chance
							} else {
								selectedAnimal = 'titanaBull'; // 70% chance
							}
							// Check if selected animal is available
							if (availableRedAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableRedAnimals.length);
								animal = availableRedAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All red animal types have 3 in inventory
							animal = null;
							var allRedPetsText = new Text2('All red pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allRedPetsText.anchor.set(0.5, 0.5);
							allRedPetsText.x = 2048 / 2;
							allRedPetsText.y = 1500;
							game.addChild(allRedPetsText);
							LK.setTimeout(function () {
								allRedPetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle golden red egg purchase
		goldenRedEggItem.down = function () {
			if (LK.getScore() >= 100000) {
				LK.setScore(LK.getScore() - 100000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling golden red egg
				fallingEgg = LK.getAsset('goldenRedEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle golden red egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the golden red egg with special probabilities
						var availableGoldenRedAnimals = [];
						var goldenRedAnimalTypes = ['goldenTrex', 'goldenVelector', 'goldenTitanaBull'];
						for (var typeIndex = 0; typeIndex < goldenRedAnimalTypes.length; typeIndex++) {
							var animalType = goldenRedAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableGoldenRedAnimals.push(animalType);
							}
						}
						var animal;
						if (availableGoldenRedAnimals.length > 0) {
							// Special probability distribution for golden red eggs (same as red)
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.05) {
								selectedAnimal = 'goldenTrex'; // 5% chance
							} else if (random < 0.3) {
								selectedAnimal = 'goldenVelector'; // 25% chance
							} else {
								selectedAnimal = 'goldenTitanaBull'; // 70% chance
							}
							// Check if selected animal is available
							if (availableGoldenRedAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableGoldenRedAnimals.length);
								animal = availableGoldenRedAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All golden red animal types have 3 in inventory
							animal = null;
							var allGoldenRedPetsText = new Text2('All golden red pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allGoldenRedPetsText.anchor.set(0.5, 0.5);
							allGoldenRedPetsText.x = 2048 / 2;
							allGoldenRedPetsText.y = 1500;
							game.addChild(allGoldenRedPetsText);
							LK.setTimeout(function () {
								allGoldenRedPetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle purple egg purchase
		purpleEggItem.down = function () {
			if (LK.getScore() >= 1250000) {
				LK.setScore(LK.getScore() - 1250000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling purple egg
				fallingEgg = LK.getAsset('purpleEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle purple egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the purple egg with special probabilities
						var availablePurpleAnimals = [];
						var purpleAnimalTypes = ['ironMan', 'captainAmerica', 'spiderman'];
						for (var typeIndex = 0; typeIndex < purpleAnimalTypes.length; typeIndex++) {
							var animalType = purpleAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availablePurpleAnimals.push(animalType);
							}
						}
						var animal;
						if (availablePurpleAnimals.length > 0) {
							// Special probability distribution for purple eggs
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.01) {
								selectedAnimal = 'ironMan'; // 1% chance
							} else if (random < 0.15) {
								selectedAnimal = 'captainAmerica'; // 14% chance
							} else {
								selectedAnimal = 'spiderman'; // 85% chance
							}
							// Check if selected animal is available
							if (availablePurpleAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availablePurpleAnimals.length);
								animal = availablePurpleAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All purple animal types have 3 in inventory
							animal = null;
							var allPurplePetsText = new Text2('All purple pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allPurplePetsText.anchor.set(0.5, 0.5);
							allPurplePetsText.x = 2048 / 2;
							allPurplePetsText.y = 1500;
							game.addChild(allPurplePetsText);
							LK.setTimeout(function () {
								allPurplePetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle golden purple egg purchase
		goldenPurpleEggItem.down = function () {
			if (LK.getScore() >= 2500000) {
				LK.setScore(LK.getScore() - 2500000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling golden purple egg
				fallingEgg = LK.getAsset('goldenPurpleEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle golden purple egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the golden purple egg with special probabilities
						var availableGoldenPurpleAnimals = [];
						var goldenPurpleAnimalTypes = ['goldenIronMan', 'goldenCaptainAmerica', 'goldenSpiderman'];
						for (var typeIndex = 0; typeIndex < goldenPurpleAnimalTypes.length; typeIndex++) {
							var animalType = goldenPurpleAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableGoldenPurpleAnimals.push(animalType);
							}
						}
						var animal;
						if (availableGoldenPurpleAnimals.length > 0) {
							// Special probability distribution for golden purple eggs (same as purple)
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.01) {
								selectedAnimal = 'goldenIronMan'; // 1% chance
							} else if (random < 0.15) {
								selectedAnimal = 'goldenCaptainAmerica'; // 14% chance
							} else {
								selectedAnimal = 'goldenSpiderman'; // 85% chance
							}
							// Check if selected animal is available
							if (availableGoldenPurpleAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableGoldenPurpleAnimals.length);
								animal = availableGoldenPurpleAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All golden purple animal types have 3 in inventory
							animal = null;
							var allGoldenPurplePetsText = new Text2('All golden purple pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allGoldenPurplePetsText.anchor.set(0.5, 0.5);
							allGoldenPurplePetsText.x = 2048 / 2;
							allGoldenPurplePetsText.y = 1500;
							game.addChild(allGoldenPurplePetsText);
							LK.setTimeout(function () {
								allGoldenPurplePetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle white egg purchase
		whiteEggItem.down = function () {
			if (LK.getScore() >= 10000000) {
				LK.setScore(LK.getScore() - 10000000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling white egg
				fallingEgg = LK.getAsset('whiteEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle white egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the white egg with special probabilities
						var availableWhiteAnimals = [];
						var whiteAnimalTypes = ['king', 'knight', 'human'];
						for (var typeIndex = 0; typeIndex < whiteAnimalTypes.length; typeIndex++) {
							var animalType = whiteAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableWhiteAnimals.push(animalType);
							}
						}
						var animal;
						if (availableWhiteAnimals.length > 0) {
							// Special probability distribution for white eggs
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.005) {
								selectedAnimal = 'king'; // 0.5% chance
							} else if (random < 0.055) {
								selectedAnimal = 'knight'; // 5% chance
							} else {
								selectedAnimal = 'human'; // 94.5% chance
							}
							// Check if selected animal is available
							if (availableWhiteAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableWhiteAnimals.length);
								animal = availableWhiteAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All white animal types have 3 in inventory
							animal = null;
							var allWhitePetsText = new Text2('All white pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allWhitePetsText.anchor.set(0.5, 0.5);
							allWhitePetsText.x = 2048 / 2;
							allWhitePetsText.y = 1500;
							game.addChild(allWhitePetsText);
							LK.setTimeout(function () {
								allWhitePetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle golden white egg purchase
		goldenWhiteEggItem.down = function () {
			if (LK.getScore() >= 20000000) {
				LK.setScore(LK.getScore() - 20000000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling golden white egg
				fallingEgg = LK.getAsset('goldenWhiteEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle golden white egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the golden white egg with special probabilities
						var availableGoldenWhiteAnimals = [];
						var goldenWhiteAnimalTypes = ['goldenKing', 'goldenKnight', 'goldenHuman'];
						for (var typeIndex = 0; typeIndex < goldenWhiteAnimalTypes.length; typeIndex++) {
							var animalType = goldenWhiteAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableGoldenWhiteAnimals.push(animalType);
							}
						}
						var animal;
						if (availableGoldenWhiteAnimals.length > 0) {
							// Special probability distribution for golden white eggs (same as white)
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.005) {
								selectedAnimal = 'goldenKing'; // 0.5% chance
							} else if (random < 0.055) {
								selectedAnimal = 'goldenKnight'; // 5% chance
							} else {
								selectedAnimal = 'goldenHuman'; // 94.5% chance
							}
							// Check if selected animal is available
							if (availableGoldenWhiteAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableGoldenWhiteAnimals.length);
								animal = availableGoldenWhiteAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All golden white animal types have 3 in inventory
							animal = null;
							var allGoldenWhitePetsText = new Text2('All golden white pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allGoldenWhitePetsText.anchor.set(0.5, 0.5);
							allGoldenWhitePetsText.x = 2048 / 2;
							allGoldenWhitePetsText.y = 1500;
							game.addChild(allGoldenWhitePetsText);
							LK.setTimeout(function () {
								allGoldenWhitePetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle golden egg purchase
		goldenEggItem.down = function () {
			if (LK.getScore() >= 10000) {
				LK.setScore(LK.getScore() - 10000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling golden egg
				fallingEgg = LK.getAsset('goldenEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle golden egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the golden egg with special probabilities
						var availableGoldenAnimals = [];
						var goldenAnimalTypes = ['goldenDog', 'goldenCat', 'goldenSnake'];
						for (var typeIndex = 0; typeIndex < goldenAnimalTypes.length; typeIndex++) {
							var animalType = goldenAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableGoldenAnimals.push(animalType);
							}
						}
						var animal;
						if (availableGoldenAnimals.length > 0) {
							// Special probability distribution for golden eggs
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.6) {
								selectedAnimal = 'goldenDog'; // 60% chance
							} else if (random < 0.9) {
								selectedAnimal = 'goldenCat'; // 30% chance
							} else {
								selectedAnimal = 'goldenSnake'; // 10% chance
							}
							// Check if selected animal is available
							if (availableGoldenAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableGoldenAnimals.length);
								animal = availableGoldenAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All golden animal types have 3 in inventory
							animal = null;
							var allGoldenPetsText = new Text2('All golden pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allGoldenPetsText.anchor.set(0.5, 0.5);
							allGoldenPetsText.x = 2048 / 2;
							allGoldenPetsText.y = 1500;
							game.addChild(allGoldenPetsText);
							LK.setTimeout(function () {
								allGoldenPetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle space egg purchase
		spaceEggItem.down = function () {
			if (LK.getScore() >= 100000000) {
				LK.setScore(LK.getScore() - 100000000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling space egg
				fallingEgg = LK.getAsset('spaceEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle space egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the space egg with special probabilities
						var availableSpaceAnimals = [];
						var spaceAnimalTypes = ['earth', 'moon', 'meteor'];
						for (var typeIndex = 0; typeIndex < spaceAnimalTypes.length; typeIndex++) {
							var animalType = spaceAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableSpaceAnimals.push(animalType);
							}
						}
						var animal;
						if (availableSpaceAnimals.length > 0) {
							// Special probability distribution for space eggs
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.001) {
								selectedAnimal = 'earth'; // 0.1% chance
							} else if (random < 0.011) {
								selectedAnimal = 'moon'; // 1% chance
							} else {
								selectedAnimal = 'meteor'; // 98.9% chance
							}
							// Check if selected animal is available
							if (availableSpaceAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableSpaceAnimals.length);
								animal = availableSpaceAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All space animal types have 3 in inventory
							animal = null;
							var allSpacePetsText = new Text2('All space pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allSpacePetsText.anchor.set(0.5, 0.5);
							allSpacePetsText.x = 2048 / 2;
							allSpacePetsText.y = 1500;
							game.addChild(allSpacePetsText);
							LK.setTimeout(function () {
								allSpacePetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle space2 egg purchase
		space2EggItem.down = function () {
			if (LK.getScore() >= 200000000) {
				LK.setScore(LK.getScore() - 200000000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling space2 egg
				fallingEgg = LK.getAsset('space2Egg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle space2 egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the space2 egg with special probabilities
						var availableSpace2Animals = [];
						var space2AnimalTypes = ['sun', 'jupiter', 'neptune'];
						for (var typeIndex = 0; typeIndex < space2AnimalTypes.length; typeIndex++) {
							var animalType = space2AnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableSpace2Animals.push(animalType);
							}
						}
						var animal;
						if (availableSpace2Animals.length > 0) {
							// Special probability distribution for space2 eggs
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.0001) {
								selectedAnimal = 'sun'; // 0.01% chance
							} else if (random < 0.0011) {
								selectedAnimal = 'jupiter'; // 0.1% chance
							} else {
								selectedAnimal = 'neptune'; // 99.9% chance
							}
							// Check if selected animal is available
							if (availableSpace2Animals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableSpace2Animals.length);
								animal = availableSpace2Animals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All space2 animal types have 3 in inventory
							animal = null;
							var allSpace2PetsText = new Text2('All space2 pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allSpace2PetsText.anchor.set(0.5, 0.5);
							allSpace2PetsText.x = 2048 / 2;
							allSpace2PetsText.y = 1500;
							game.addChild(allSpace2PetsText);
							LK.setTimeout(function () {
								allSpace2PetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle golden space egg purchase
		goldenSpaceEggItem.down = function () {
			if (LK.getScore() >= 200000000) {
				LK.setScore(LK.getScore() - 200000000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling golden space egg
				fallingEgg = LK.getAsset('goldenSpaceEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle golden space egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the golden space egg with special probabilities
						var availableGoldenSpaceAnimals = [];
						var goldenSpaceAnimalTypes = ['goldenEarth', 'goldenMoon', 'goldenMeteor'];
						for (var typeIndex = 0; typeIndex < goldenSpaceAnimalTypes.length; typeIndex++) {
							var animalType = goldenSpaceAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableGoldenSpaceAnimals.push(animalType);
							}
						}
						var animal;
						if (availableGoldenSpaceAnimals.length > 0) {
							// Special probability distribution for golden space eggs (same as space)
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.001) {
								selectedAnimal = 'goldenEarth'; // 0.1% chance
							} else if (random < 0.011) {
								selectedAnimal = 'goldenMoon'; // 1% chance
							} else {
								selectedAnimal = 'goldenMeteor'; // 98.9% chance
							}
							// Check if selected animal is available
							if (availableGoldenSpaceAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableGoldenSpaceAnimals.length);
								animal = availableGoldenSpaceAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All golden space animal types have 3 in inventory
							animal = null;
							var allGoldenSpacePetsText = new Text2('All golden space pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allGoldenSpacePetsText.anchor.set(0.5, 0.5);
							allGoldenSpacePetsText.x = 2048 / 2;
							allGoldenSpacePetsText.y = 1500;
							game.addChild(allGoldenSpacePetsText);
							LK.setTimeout(function () {
								allGoldenSpacePetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle golden space2 egg purchase
		goldenSpace2EggItem.down = function () {
			if (LK.getScore() >= 400000000) {
				LK.setScore(LK.getScore() - 400000000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling golden space2 egg
				fallingEgg = LK.getAsset('goldenSpace2Egg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle golden space2 egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the golden space2 egg with special probabilities
						var availableGoldenSpace2Animals = [];
						var goldenSpace2AnimalTypes = ['goldenSun', 'goldenJupiter', 'goldenNeptune'];
						for (var typeIndex = 0; typeIndex < goldenSpace2AnimalTypes.length; typeIndex++) {
							var animalType = goldenSpace2AnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableGoldenSpace2Animals.push(animalType);
							}
						}
						var animal;
						if (availableGoldenSpace2Animals.length > 0) {
							// Special probability distribution for golden space2 eggs (same as space2)
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.0001) {
								selectedAnimal = 'goldenSun'; // 0.01% chance
							} else if (random < 0.0011) {
								selectedAnimal = 'goldenJupiter'; // 0.1% chance
							} else {
								selectedAnimal = 'goldenNeptune'; // 99.9% chance
							}
							// Check if selected animal is available
							if (availableGoldenSpace2Animals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableGoldenSpace2Animals.length);
								animal = availableGoldenSpace2Animals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All golden space2 animal types have 3 in inventory
							animal = null;
							var allGoldenSpace2PetsText = new Text2('All golden space2 pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allGoldenSpace2PetsText.anchor.set(0.5, 0.5);
							allGoldenSpace2PetsText.x = 2048 / 2;
							allGoldenSpace2PetsText.y = 1500;
							game.addChild(allGoldenSpace2PetsText);
							LK.setTimeout(function () {
								allGoldenSpace2PetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle galaxy egg purchase
		galaxyEggItem.down = function () {
			if (LK.getScore() >= 500000000) {
				LK.setScore(LK.getScore() - 500000000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling galaxy egg
				fallingEgg = LK.getAsset('galaxyEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle galaxy egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the galaxy egg with special probabilities
						var availableGalaxyAnimals = [];
						var galaxyAnimalTypes = ['andromedaGalaxy', 'normalGalaxy', 'milkyWayGalaxy'];
						for (var typeIndex = 0; typeIndex < galaxyAnimalTypes.length; typeIndex++) {
							var animalType = galaxyAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableGalaxyAnimals.push(animalType);
							}
						}
						var animal;
						if (availableGalaxyAnimals.length > 0) {
							// Special probability distribution for galaxy eggs
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.009) {
								selectedAnimal = 'milkyWayGalaxy'; // 0.9% chance
							} else if (random < 0.199) {
								selectedAnimal = 'normalGalaxy'; // 19% chance
							} else {
								selectedAnimal = 'andromedaGalaxy'; // 80.1% chance
							}
							// Check if selected animal is available
							if (availableGalaxyAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableGalaxyAnimals.length);
								animal = availableGalaxyAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All galaxy animal types have 3 in inventory
							animal = null;
							var allGalaxyPetsText = new Text2('All galaxy pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allGalaxyPetsText.anchor.set(0.5, 0.5);
							allGalaxyPetsText.x = 2048 / 2;
							allGalaxyPetsText.y = 1500;
							game.addChild(allGalaxyPetsText);
							LK.setTimeout(function () {
								allGalaxyPetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle golden galaxy egg purchase
		goldenGalaxyEggItem.down = function () {
			if (LK.getScore() >= 1000000000) {
				LK.setScore(LK.getScore() - 1000000000);
				scoreTxt.setText(LK.getScore().toString());
				// Close shop
				shopOverlay.destroy();
				shopOverlay = null;
				isShopOpen = false;
				// Create falling golden galaxy egg
				fallingEgg = LK.getAsset('goldenGalaxyEgg', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				fallingEgg.x = 2048 / 2;
				fallingEgg.y = -200;
				eggClickCount = 0;
				game.addChild(fallingEgg);
				// Animate egg falling
				tween(fallingEgg, {
					y: 2732 / 2
				}, {
					duration: 1000
				});
				// Handle golden galaxy egg clicking
				fallingEgg.down = function () {
					eggClickCount++;
					if (eggClickCount === 1) {
						// First crack
						var crackedEgg1 = LK.getAsset('crackedEgg1', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg1.x = fallingEgg.x;
						crackedEgg1.y = fallingEgg.y;
						game.addChild(crackedEgg1);
						fallingEgg.destroy();
						fallingEgg = crackedEgg1;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 2) {
						// Second crack
						var crackedEgg2 = LK.getAsset('crackedEgg2', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg2.x = fallingEgg.x;
						crackedEgg2.y = fallingEgg.y;
						game.addChild(crackedEgg2);
						fallingEgg.destroy();
						fallingEgg = crackedEgg2;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 3) {
						// Third crack - almost fully cracked
						var crackedEgg3 = LK.getAsset('crackedEgg3', {
							anchorX: 0.5,
							anchorY: 0.5
						});
						crackedEgg3.x = fallingEgg.x;
						crackedEgg3.y = fallingEgg.y;
						game.addChild(crackedEgg3);
						fallingEgg.destroy();
						fallingEgg = crackedEgg3;
						fallingEgg.down = arguments.callee;
					} else if (eggClickCount === 4) {
						// Hatch the golden galaxy egg with special probabilities
						var availableGoldenGalaxyAnimals = [];
						var goldenGalaxyAnimalTypes = ['goldenAndromedaGalaxy', 'goldenNormalGalaxy', 'goldenMilkyWayGalaxy'];
						for (var typeIndex = 0; typeIndex < goldenGalaxyAnimalTypes.length; typeIndex++) {
							var animalType = goldenGalaxyAnimalTypes[typeIndex];
							var countInInventory = 0;
							for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
								if (inventory[invIndex] === animalType) {
									countInInventory++;
								}
							}
							if (countInInventory < 3) {
								availableGoldenGalaxyAnimals.push(animalType);
							}
						}
						var animal;
						if (availableGoldenGalaxyAnimals.length > 0) {
							// Special probability distribution for golden galaxy eggs (same as galaxy)
							var random = Math.random();
							var selectedAnimal;
							if (random < 0.009) {
								selectedAnimal = 'goldenMilkyWayGalaxy'; // 0.9% chance
							} else if (random < 0.199) {
								selectedAnimal = 'goldenNormalGalaxy'; // 19% chance
							} else {
								selectedAnimal = 'goldenAndromedaGalaxy'; // 80.1% chance
							}
							// Check if selected animal is available
							if (availableGoldenGalaxyAnimals.indexOf(selectedAnimal) !== -1) {
								animal = selectedAnimal;
							} else {
								// If selected animal is not available, choose randomly from available
								var randomIndex = Math.floor(Math.random() * availableGoldenGalaxyAnimals.length);
								animal = availableGoldenGalaxyAnimals[randomIndex];
							}
							inventory.push(animal);
							storage.inventory = inventory;
						} else {
							// All golden galaxy animal types have 3 in inventory
							animal = null;
							var allGoldenGalaxyPetsText = new Text2('All golden galaxy pets maxed out!', {
								size: 60,
								fill: 0xff0000
							});
							allGoldenGalaxyPetsText.anchor.set(0.5, 0.5);
							allGoldenGalaxyPetsText.x = 2048 / 2;
							allGoldenGalaxyPetsText.y = 1500;
							game.addChild(allGoldenGalaxyPetsText);
							LK.setTimeout(function () {
								allGoldenGalaxyPetsText.destroy();
							}, 2000);
						}
						// Only show hatched animal if we got a new pet
						if (animal) {
							var animalSprite = LK.getAsset(animal, {
								anchorX: 0.5,
								anchorY: 0.5
							});
							animalSprite.x = fallingEgg.x;
							animalSprite.y = fallingEgg.y;
							game.addChild(animalSprite);
							// Remove animal after showing
							LK.setTimeout(function () {
								animalSprite.destroy();
							}, 2000);
						}
						// Remove egg
						fallingEgg.destroy();
						fallingEgg = null;
					}
				};
			}
		};
		// Handle inventory button
		inventoryBtn.down = function () {
			if (!isInventoryOpen) {
				// Close shop first
				if (shopOverlay) {
					shopOverlay.destroy();
				}
				shopOverlay = null;
				isShopOpen = false;
				// Open inventory
				isInventoryOpen = true;
				inventoryOverlay = new Container();
				var invBackground = LK.getAsset('shopBg', {
					width: 2048,
					height: 2732,
					color: 0x000000,
					shape: 'box'
				});
				inventoryOverlay.addChild(invBackground);
				game.addChild(inventoryOverlay);
				// Display inventory items by unique pet types
				var yPos = 300;
				var uniqueTypes = [];
				var animalTypes = ['dog', 'cat', 'snake', 'goldenDog', 'goldenCat', 'goldenSnake', 'dinosaur', 'bear', 'bee', 'goldenDinosaur', 'goldenBear', 'goldenBee', 'trex', 'velector', 'titanaBull', 'goldenTrex', 'goldenVelector', 'goldenTitanaBull', 'ironMan', 'captainAmerica', 'spiderman', 'goldenIronMan', 'goldenCaptainAmerica', 'goldenSpiderman', 'king', 'knight', 'human', 'goldenKing', 'goldenKnight', 'goldenHuman', 'earth', 'moon', 'meteor', 'sun', 'jupiter', 'neptune', 'goldenEarth', 'goldenMoon', 'goldenMeteor', 'goldenSun', 'goldenJupiter', 'goldenNeptune', 'andromedaGalaxy', 'normalGalaxy', 'milkyWayGalaxy', 'goldenAndromedaGalaxy', 'goldenNormalGalaxy', 'goldenMilkyWayGalaxy'];
				for (var typeIndex = 0; typeIndex < animalTypes.length; typeIndex++) {
					var animalType = animalTypes[typeIndex];
					var countInInventory = 0;
					for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
						if (inventory[invIndex] === animalType) {
							countInInventory++;
						}
					}
					if (countInInventory > 0) {
						uniqueTypes.push({
							type: animalType,
							count: countInInventory
						});
					}
				}
				for (var i = 0; i < uniqueTypes.length; i++) {
					var petData = uniqueTypes[i];
					var animalItem = LK.getAsset(petData.type, {
						anchorX: 0.5,
						anchorY: 0.5
					});
					animalItem.x = 300;
					animalItem.y = yPos;
					animalItem.animalType = petData.type;
					animalItem.inventoryIndex = i;
					inventoryOverlay.addChild(animalItem);
					// Handle pet deletion when in delete mode
					animalItem.down = function () {
						if (deleteMode && selectedDeleteAnimalType === this.animalType) {
							// Delete the pet
							// Remove one instance of this pet from inventory
							for (var removeIndex = 0; removeIndex < inventory.length; removeIndex++) {
								if (inventory[removeIndex] === this.animalType) {
									inventory.splice(removeIndex, 1);
									break;
								}
							}
							storage.inventory = inventory;
							// Also remove from equipped animals if it was equipped
							for (var removeIndex = equippedAnimals.length - 1; removeIndex >= 0; removeIndex--) {
								if (equippedAnimals[removeIndex] === this.animalType) {
									equippedAnimals.splice(removeIndex, 1);
									break;
								}
							}
							// Recalculate pet bonus after removing
							var petBonus = 0;
							// Count each animal type
							var dogCount = 0;
							var catCount = 0;
							var snakeCount = 0;
							for (var j = 0; j < equippedAnimals.length; j++) {
								if (equippedAnimals[j] === 'dog') {
									dogCount++;
								} else if (equippedAnimals[j] === 'cat') {
									catCount++;
								} else if (equippedAnimals[j] === 'snake') {
									snakeCount++;
								}
							}
							// Each dog gives +1 bonus per tap
							petBonus += dogCount;
							// Cats: 1 cat = +2, 2 cats = +4, 3 cats = +6 (total bonus)
							if (catCount === 1) {
								petBonus += 2;
							} else if (catCount === 2) {
								petBonus += 4;
							} else if (catCount === 3) {
								petBonus += 6;
							}
							// Snakes: 1 snake = +5, 2 snakes = +10, 3 snakes = +15 (total bonus)
							if (snakeCount === 1) {
								petBonus += 5;
							} else if (snakeCount === 2) {
								petBonus += 10;
							} else if (snakeCount === 3) {
								petBonus += 15;
							}
							// Store as multiplier format (base 1 + bonus)
							currentMultiplier = 1 + petBonus;
							storage.equippedAnimals = equippedAnimals;
							storage.currentMultiplier = currentMultiplier;
							// Exit delete mode
							deleteMode = false;
							selectedDeleteAnimalType = null;
							// Close and reopen inventory to refresh display
							inventoryOverlay.destroy();
							inventoryOverlay = null;
							isInventoryOpen = false;
							// Reopen inventory to show updated counts
							inventoryBtn.down();
						}
					};
					// Count how many of this type are equipped
					var equippedCount = 0;
					for (var k = 0; k < equippedAnimals.length; k++) {
						if (equippedAnimals[k] === petData.type) {
							equippedCount++;
						}
					}
					// Add equip button
					var equipBtn = new Text2('Equip', {
						size: 50,
						fill: 0xFFFFFF
					});
					equipBtn.anchor.set(0.5, 0.5);
					equipBtn.x = 550;
					equipBtn.y = yPos;
					equipBtn.animalType = inventory[i];
					equipBtn.inventoryIndex = i;
					inventoryOverlay.addChild(equipBtn);
					// Add unequip button
					var unequipBtn = new Text2('Unequip', {
						size: 50,
						fill: 0xFF6B6B
					});
					unequipBtn.anchor.set(0.5, 0.5);
					unequipBtn.x = 700;
					unequipBtn.y = yPos;
					unequipBtn.animalType = inventory[i];
					unequipBtn.inventoryIndex = i;
					inventoryOverlay.addChild(unequipBtn);
					// Add delete button
					var deleteBtn = new Text2('Delete', {
						size: 50,
						fill: 0xFF0000
					});
					deleteBtn.anchor.set(0.5, 0.5);
					deleteBtn.x = 850;
					deleteBtn.y = yPos;
					deleteBtn.animalType = inventory[i];
					deleteBtn.inventoryIndex = i;
					inventoryOverlay.addChild(deleteBtn);
					// Add count display
					var countText = new Text2('Owned: ' + petData.count + ' | Equipped: ' + equippedCount, {
						size: 40,
						fill: 0xFFFFFF
					});
					countText.anchor.set(0.5, 0.5);
					countText.x = 1000;
					countText.y = yPos;
					inventoryOverlay.addChild(countText);
					// Handle delete functionality
					deleteBtn.down = function () {
						if (!deleteMode) {
							// First press - enter delete mode
							deleteMode = true;
							selectedDeleteAnimalType = this.animalType;
							// Show message to click on pet
							var deleteInstructionText = new Text2('Click on the pet to delete it', {
								size: 40,
								fill: 0xff0000
							});
							deleteInstructionText.anchor.set(0.5, 0.5);
							deleteInstructionText.x = 2048 / 2;
							deleteInstructionText.y = 2500;
							inventoryOverlay.addChild(deleteInstructionText);
							// Auto-hide instruction after 3 seconds
							LK.setTimeout(function () {
								if (deleteInstructionText && deleteInstructionText.parent) {
									deleteInstructionText.destroy();
								}
							}, 3000);
						} else if (deleteMode && selectedDeleteAnimalType === this.animalType) {
							// Second press on same delete button - cancel delete mode
							deleteMode = false;
							selectedDeleteAnimalType = null;
						}
					};
					// Handle unequip functionality
					unequipBtn.down = function () {
						// Find and remove one instance of this pet type from equipped animals
						for (var removeIndex = 0; removeIndex < equippedAnimals.length; removeIndex++) {
							if (equippedAnimals[removeIndex] === this.animalType) {
								equippedAnimals.splice(removeIndex, 1);
								break;
							}
						}
						// Recalculate pet bonus after unequipping
						var petBonus = 0;
						// Count each animal type
						var dogCount = 0;
						var catCount = 0;
						var snakeCount = 0;
						for (var j = 0; j < equippedAnimals.length; j++) {
							if (equippedAnimals[j] === 'dog') {
								dogCount++;
							} else if (equippedAnimals[j] === 'cat') {
								catCount++;
							} else if (equippedAnimals[j] === 'snake') {
								snakeCount++;
							}
						}
						// Each dog gives +1 bonus per tap
						petBonus += dogCount;
						// Cats: 1 cat = +2, 2 cats = +4, 3 cats = +6 (total bonus)
						if (catCount === 1) {
							petBonus += 2;
						} else if (catCount === 2) {
							petBonus += 4;
						} else if (catCount === 3) {
							petBonus += 6;
						}
						// Snakes: 1 snake = +5, 2 snakes = +10, 3 snakes = +15 (total bonus)
						if (snakeCount === 1) {
							petBonus += 5;
						} else if (snakeCount === 2) {
							petBonus += 10;
						} else if (snakeCount === 3) {
							petBonus += 15;
						}
						// Store as multiplier format (base 1 + bonus)
						currentMultiplier = 1 + petBonus;
						storage.equippedAnimals = equippedAnimals;
						storage.currentMultiplier = currentMultiplier;
						// Close and reopen inventory to refresh display
						inventoryOverlay.destroy();
						inventoryOverlay = null;
						isInventoryOpen = false;
						// Reopen inventory to show updated counts
						inventoryBtn.down();
					};
					equipBtn.down = function () {
						// Count how many of this pet type are in inventory
						var inventoryCount = 0;
						for (var invIndex = 0; invIndex < inventory.length; invIndex++) {
							if (inventory[invIndex] === this.animalType) {
								inventoryCount++;
							}
						}
						// Count how many of this pet type are already equipped
						var equippedCount = 0;
						for (var checkIndex = 0; checkIndex < equippedAnimals.length; checkIndex++) {
							if (equippedAnimals[checkIndex] === this.animalType) {
								equippedCount++;
							}
						}
						// Check if we have this pet available in inventory to equip
						if (equippedCount >= inventoryCount) {
							var noPetText = new Text2('Need more pets to equip!', {
								size: 40,
								fill: 0xff0000
							});
							noPetText.anchor.set(0.5, 0.5);
							noPetText.x = this.x;
							noPetText.y = this.y - 50;
							inventoryOverlay.addChild(noPetText);
							LK.setTimeout(function () {
								noPetText.destroy();
							}, 1500);
							return;
						}
						// Check if we can equip more pets (total limit of 3)
						if (equippedAnimals.length < maxEquippedPets) {
							// Equip this pet
							equippedAnimals.push(this.animalType);
						} else {
							// Show message that max pets reached
							var maxText = new Text2('Max 3 pets total!', {
								size: 40,
								fill: 0xff0000
							});
							maxText.anchor.set(0.5, 0.5);
							maxText.x = this.x;
							maxText.y = this.y - 50;
							inventoryOverlay.addChild(maxText);
							LK.setTimeout(function () {
								maxText.destroy();
							}, 1500);
							return;
						}
						// Calculate pet bonus based on equipped animal quantities
						var petBonus = 0;
						// Count each animal type
						var dogCount = 0;
						var catCount = 0;
						var snakeCount = 0;
						for (var j = 0; j < equippedAnimals.length; j++) {
							if (equippedAnimals[j] === 'dog') {
								dogCount++;
							} else if (equippedAnimals[j] === 'cat') {
								catCount++;
							} else if (equippedAnimals[j] === 'snake') {
								snakeCount++;
							}
						}
						// Each dog gives +1 bonus per tap
						petBonus += dogCount;
						// Cats: 1 cat = +2, 2 cats = +4, 3 cats = +6 (total bonus)
						if (catCount === 1) {
							petBonus += 2;
						} else if (catCount === 2) {
							petBonus += 4;
						} else if (catCount === 3) {
							petBonus += 6;
						}
						// Snakes: 1 snake = +5, 2 snakes = +10, 3 snakes = +15 (total bonus)
						if (snakeCount === 1) {
							petBonus += 5;
						} else if (snakeCount === 2) {
							petBonus += 10;
						} else if (snakeCount === 3) {
							petBonus += 15;
						}
						// Store as multiplier format (base 1 + bonus)
						currentMultiplier = 1 + petBonus;
						storage.equippedAnimals = equippedAnimals;
						storage.currentMultiplier = currentMultiplier;
						// Close and reopen inventory to refresh display
						inventoryOverlay.destroy();
						inventoryOverlay = null;
						isInventoryOpen = false;
						// Reopen inventory to show updated counts
						inventoryBtn.down();
					};
					yPos += 200;
				}
				// Add close inventory button
				var closeInvBtn = new Text2('Close', {
					size: 80,
					fill: 0xFFFFFF
				});
				closeInvBtn.anchor.set(0.5, 0.5);
				closeInvBtn.x = 2048 / 2;
				closeInvBtn.y = 2400;
				inventoryOverlay.addChild(closeInvBtn);
				closeInvBtn.down = function () {
					// Reset delete mode when closing inventory
					deleteMode = false;
					selectedDeleteAnimalType = null;
					inventoryOverlay.destroy();
					inventoryOverlay = null;
					isInventoryOpen = false;
				};
			}
		};
		// Add shop overlay to main game
		game.addChild(shopOverlay);
		isShopOpen = true;
	} else {
		// Close shop - remove overlay
		if (shopOverlay) {
			shopOverlay.destroy();
			shopOverlay = null;
		}
		isShopOpen = false;
	}
};
// Handle menu button tap
menuBtn.down = function () {
	if (!isMenuOpen) {
		// Function to clean up environment elements
		var cleanupEnvironment = function cleanupEnvironment() {
			for (var i = 0; i < environmentElements.length; i++) {
				if (environmentElements[i] && environmentElements[i].parent) {
					environmentElements[i].destroy();
				}
			}
			environmentElements = [];
		};
		// Open menu
		isMenuOpen = true;
		menuOverlay = new Container();
		// Create menu background
		var menuBg = LK.getAsset('shopBg', {
			width: 2048,
			height: 2732,
			color: 0x000000,
			shape: 'box'
		});
		menuOverlay.addChild(menuBg);
		// Graphics title
		var graphicsTitle = new Text2('Graphics Settings', {
			size: 100,
			fill: 0xFFFFFF
		});
		graphicsTitle.anchor.set(0.5, 0.5);
		graphicsTitle.x = 2048 / 2;
		graphicsTitle.y = 400;
		menuOverlay.addChild(graphicsTitle);
		// FPS options
		var fpsOptions = [30, 60, 90, 120];
		var fpsLabels = ['30 FPS - Basic', '60 FPS - Normal', '90 FPS - High Quality', '120 FPS - Ultra'];
		var startY = 600;
		for (var i = 0; i < fpsOptions.length; i++) {
			var fps = fpsOptions[i];
			var label = fpsLabels[i];
			var isSelected = fps === graphicsMode;
			var fpsBtn = new Text2(label, {
				size: 70,
				fill: isSelected ? 0x00ff00 : 0xffffff
			});
			fpsBtn.anchor.set(0.5, 0.5);
			fpsBtn.x = 2048 / 2;
			fpsBtn.y = startY + i * 150;
			fpsBtn.fpsValue = fps;
			menuOverlay.addChild(fpsBtn);
			fpsBtn.down = function () {
				graphicsMode = this.fpsValue;
				if (this.fpsValue === 120) {
					ultraRealisticMode = true;
				} else {
					ultraRealisticMode = false;
				}
				// Clean up existing environment and recreate
				cleanupEnvironment();
				createUltraRealisticEnvironment();
				// Close and reopen menu to refresh
				menuOverlay.destroy();
				isMenuOpen = false;
				menuBtn.down();
			};
		}
		// Close button
		var closeBtn = new Text2('Close', {
			size: 80,
			fill: 0xFFFFFF
		});
		closeBtn.anchor.set(0.5, 0.5);
		closeBtn.x = 2048 / 2;
		closeBtn.y = 1400;
		menuOverlay.addChild(closeBtn);
		closeBtn.down = function () {
			menuOverlay.destroy();
			menuOverlay = null;
			isMenuOpen = false;
		};
		game.addChild(menuOverlay);
	} else {
		// Close menu
		if (menuOverlay) {
			menuOverlay.destroy();
			menuOverlay = null;
		}
		isMenuOpen = false;
	}
};
// Update score display on game start
game.update = function () {
	// Keep score text updated (in case it changes from other sources)
	scoreTxt.setText(LK.getScore().toString());
	// Update rain system for 120 fps mode
	if (ultraRealisticMode && graphicsMode === 120) {
		var currentTime = Date.now();
		// Update clock
		updateClock();
		// Check if it's time to start raining
		if (!isRaining && currentTime >= nextRainTime) {
			isRaining = true;
			rainTimer = currentTime + rainDuration;
		}
		// Check if rain should stop
		if (isRaining && currentTime >= rainTimer) {
			isRaining = false;
			nextRainTime = currentTime + rainInterval;
		}
		// Create rain drops when raining
		if (isRaining && Math.random() < 0.3) {
			createRainDrop();
		}
		// Update rain drops
		for (var i = rainDrops.length - 1; i >= 0; i--) {
			var drop = rainDrops[i];
			drop.lastY = drop.y;
			drop.y += drop.speed;
			// Check if drop hits ground
			if (drop.lastY <= 2732 && drop.y > 2732) {
				// Create splash effect
				createRainSplash(drop.x, 2732);
				// Remove drop
				drop.destroy();
				rainDrops.splice(i, 1);
			} else if (drop.y > 2800) {
				// Remove drops that went too far off screen
				drop.destroy();
				rainDrops.splice(i, 1);
			}
		}
	}
};