User prompt
Eqquiped pet class delete
User prompt
Equip bug fixed aynı oetten 1 defadan cıkartırsa takılabilir ama aynı pet cıkartılıesan yine 2 tane takılabilir Birtane daha cıkarsın 3 tane takılabilir
User prompt
Eyerki aynı petten bir daha takmak istiyorsan aynı petten 2 tane takmak istiyorsan aynı petten 1 tane daha çıkartmak zorundasın bir tane pet çıktıda aynı petten 3 tane taka massın 2 tane takmadığın bir daha o petten takmak istiyorsan o petten bir daha çıkarmak zorundasın
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of null (reading 'destroy')' in or related to this line: 'shopOverlay.destroy();' Line Number: 256
User prompt
Eyer 1 tane pet equip olduğunda geldi score pet score ekleniyor aynı petten birdaha cıkarsın ve equip takılırsa yine o petı score eklensin yani aynı petten 3 tane takılabilir ve ve 3 pettin verdiği score tıklamabasına gelen score eklensin
User prompt
Her dog equip lendine tıklama basına gelen score +1 artsın
User prompt
1 tane doğ kuşanıldımda equip oldunda 2 score gelsin tıklamabasına 2 dog kuşanıldında tıklama basına 3 score gelsin 3 dog kuşanıldında equip oldunda tıklama basına 4 score gelsin
User prompt
Add pet lerin verdiği score bizim tıkladımjz başa gelen score eklensin tıkladımız 1 score geliyor ve eyer üstüne bir pet takılırsa 1 score üstüne o score eklensin
User prompt
Oyuna her gidinde oyun sıfırlansın her şey yeniden olsun
User prompt
Bug fixed pet tıklama basına gelen score bug fixed
User prompt
3 adet dog equip lendşnde tıklama basına 3 score gelsin
User prompt
1 tane dog takılınca tıklaa basına 1 puan versin 2 tane dog equip oldunda 3 puan versin 3 tane dog kuşanıldında equio oldunda 4 puan versin 1 tane kedi 2 puan versin 2 tane kedi 4 puan versin 3 kedi 6 puan versin 1 yılan 5 puan versin 2 yılan 10 puan versin 3 yılan 15 puan versin tıklama basına
User prompt
En fazla 3 tane pet takılabilir ve 3 tane ort takılınca 3 petye kaç score veriyorsa okadar score versin
User prompt
Please fix the bug: 'Uncaught TypeError: setTimeout is not a function' in or related to this line: 'setTimeout(function () {' Line Number: 234
User prompt
Shop tıkladımızda gelen siyah arayüze bir egg ekle egg altında 100 Score yazsın ve egg beyaz olsun egg tıkladında eyer 100 paran varsa satın alsın satın aldında yukarıdan ekrana egg düşsün ve ekranın ortasına gelince dursun egg 3 defa tıklıylaım 1 defa tıklayınca egg çatlasın 2 defa daha çok 3 defa nerdese heryer çatlasın ve en son bideha tıkladında yumurta çatlasın ve içinde yüzde 10 ihtimalle yılan yüzde 30 ihtimalle cat yüzde 60 ihtimalle köpek çıksın köpek özellikleri köpek almak için tak ak için Shop altındaki hemen invertory tıkladında sol üste dog eklenecek dog tıkladında üstünde equip yazacakken ona tıkladında köpek kuşatıldı ve artık her tıkladında 2 puan gelecek bu dog tıklama başına verdi puan 1 dir aynı şekilde diyer hayvanlarda equip ile tıklarsanız invertory den cat tıklama basına verdi puan 2 yılan tıklama basına verdi puan 5 tir eyerki hayvanları peşlerinden kuşatma istemiyorsan köpek tıkladında equip yazısının altındadır unequip yazısı cıkacak ona bastın kuşnaılmadı yazacak ve oeti şuşanmadım yani tıklama basına veren puan size gelmeyecektir ama puan istiyorsa üstüne tıkladında çıkan equip yazısına bakalım ve kullanıldı yazsın ve o hayvan kaç puan veriyorsa okadar tıklama basına puan gelsin ↪💡 Consider importing and using the following plugins: @upit/tween.v1, @upit/storage.v1
User prompt
Please fix the bug: 'Uncaught LK.Game can only be initialized once' in or related to this line: 'shopOverlay = new LK.Game({' Line Number: 87
User prompt
Simdi sağ üste Shop ekle Shop açmak için üstüne tıklıyalım ve ekrana siyah bir arayüz çıksın geri kapatmak için Shop bidaha üstüne basalım
Code edit (1 edits merged)
Please save this source code
User prompt
Tap to Score
Initial prompt
Bana oyun oluştur ekrana her tıkladında herhangi bir yere üsteki Score 1 score eklensin
/**** * 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);
}
}
}
};