Code edit (5 edits merged)
Please save this source code
User prompt
сделай так что бы по redCrystalIngot можно было кликать, если в счетчике growth rate имеется 9000 и больше
User prompt
сделай так что бы по greenCrystalIngot можно было кликать, если в счетчике growth rate имеется 3000 и больше
Code edit (12 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot set properties of undefined (setting 'y')' in or related to this line: 'greenAxesText.y = axeInStockText.y + 50; // Align with 'Axe in stock' text' Line Number: 1318
User prompt
теперь выровни их счетчики
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot set properties of undefined (setting 'y')' in or related to this line: 'axeInStockText.y = 2732 / 2 + 400; // Align with 'Swords in stock' text' Line Number: 1301
User prompt
выровни надписи sword in stock и axe in stock что были по одному значению Y
Code edit (1 edits merged)
Please save this source code
Code edit (9 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'visible')' in or related to this line: 'gameScreen.visible = true;' Line Number: 493
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'visible')' in or related to this line: 'gameScreen.visible = true;' Line Number: 493
Code edit (3 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught TypeError: clearInterval is not a function' in or related to this line: 'clearInterval(newgameclearInterval[i]);' Line Number: 1549
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Timeout.tick error: Math.floor10 is not a function' in or related to this line: 'storage.lastgametime = Math.floor10(Date.now() / 100);' Line Number: 1669
User prompt
Please fix the bug: 'Math.floor10 is not a function' in or related to this line: 'if (seconds * 60 * 5 > Math.floor10(Date.now())) {' Line Number: 1644
User prompt
Please fix the bug: 'Math.floor10 is not a function' in or related to this line: 'var seconds = Math.floor10(Date.now());' Line Number: 1642
Code edit (5 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught ReferenceError: shopScreen is not defined' in or related to this line: 'var shopBackground = shopScreen.attachAsset('shopbackground', {' Line Number: 668
Code edit (2 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught ReferenceError: greenAxesText is not defined' in or related to this line: 'greenAxesText.setText('0');' Line Number: 1037
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
User prompt
когда нажимают automineredcristall убирать mineRedCristallText
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1", { forgingSkill: 0, growthRate: 0, blueCristallScore: 0, greenCrystalIngotScore: 0, blueSwords: 0, greenAxes: 0, redCrystalTwoHandedSwords: 0, blueswordsclick: 0, greenAxeClicks: 0, redCrystalTwoHandedSwordClicks: 0, autominebluecristallClicked: false, autominegreencristallClicked: false, autogrowthRateClicked: false, multiclickupgrade: false, theBlacksmithsApprentice: false }); /**** * Classes ****/ // Create a new class for the anvil object var Anvil = Container.expand(function () { var self = Container.call(this); // Attach 'anvil' asset to the 'Anvil' object var anvilGraphics = self.attachAsset('anvil', { anchorX: 0.5, anchorY: 0.5, alpha: 0.0 // Make the anvil fully transparent }); // Initialize the click counter self.clickCounter = storage.forgingSkill; // Make the 'Anvil' object interactive self.interactive = true; // Define the 'down' event handler self.down = function (x, y, obj) { // Increment the click counter self.clickCounter++; // Add a 5% chance for a multi-click event to increase forging skill by 5 var shans = 0.02; if (storage.multiclickupgrade) { shans += 0.02; } if (Math.random() < 0.02) { self.clickCounter += 5; // Create a new asset at the center of the screen var newAsset = game.addChild(LK.getAsset('multyclick', { anchorX: 0.5, anchorY: 0.5 })); // Position the new asset at the center of the screen newAsset.x = 2048 / 2; newAsset.y = 2732 / 2; // Animate the scaling of the new asset tween(newAsset, { scaleX: 2, scaleY: 2 }, { duration: 500, easing: tween.easeInOut, onFinish: function onFinish() { newAsset.destroy(); // Remove the asset after the animation } }); } // Update the text object with the click counter and label counterText.setText('Forging skill: ' + self.clickCounter); // Persist the click counter storage.forgingSkill = self.clickCounter; // Change the color of the counter text based on the click counter if (self.clickCounter >= 1000 && self.clickCounter < 2000) { counterText.tint = 0x00FF00; // Green } else if (self.clickCounter >= 2000 && self.clickCounter < 15000) { counterText.tint = 0x0000FF; // Blue } else if (self.clickCounter >= 15000 && self.clickCounter < 30000) { counterText.tint = 0x800080; // Purple } else if (self.clickCounter >= 30000) { counterText.tint = 0xcc7c04; // Purple } }; }); // Create a new class for the BlueCristal object var BlueCristal = Container.expand(function () { var self = Container.call(this); // Attach 'blueCristal' asset to the 'BlueCristal' object var blueCristalGraphics = self.attachAsset('blueCristal', { anchorX: 0.5, anchorY: 0.5, interactive: true // Make the blueCristal interactive }); // Define the 'down' event handler for blueCristal self.down = function (x, y, obj) { // Increment the score by 1 blueCristallScore += 1100; LK.setScore(blueCristallScore); storage.blueCristallScore = blueCristallScore; // Update the score text scoreTxt.setText('Blue Cristall: ' + LK.getScore()); scoreTxt.visible = true; // Ensure the score text remains visible }; }); // Create a new class for the BlueCrystalIngot object var BlueCrystalIngot = Container.expand(function () { var self = Container.call(this); // Attach 'blueCrystalIngot' asset to the 'BlueCrystalIngot' object var blueCrystalIngotGraphics = self.attachAsset('blueCrystalIngot', { anchorX: 0.5, anchorY: 0.5, interactive: true // Make the blueCrystalIngot interactive }); // Define the 'down' event handler for blueCrystalIngot self.down = function (x, y, obj) { // Logic for what happens when the blueCrystalIngot is clicked if (blueCristallScore >= 100) { blueCrystalIngotScore += 1; //{y.1} storage.growthRate += 10; // Increment growth rate by 10 growthRateText.setText('Growth rate: ' + storage.growthRate); // Update the growth rate display blueCrystalIngotScoreTxt.setText('BlueCrystalIngot: ' + blueCrystalIngotScore); //{y.2} storage.blueCrystalIngotScore = blueCrystalIngotScore; blueCristallScore -= 100; if (blueCristallScore < 0) { blueCristallScore = 0; } storage.blueCristallScore = blueCristallScore; // Persist the decrement LK.setScore(blueCristallScore); scoreTxt.setText('Blue Cristall: ' + LK.getScore()); } }; }); // Create a new class for the Door object var Door = Container.expand(function () { var self = Container.call(this); // Attach 'Door' asset to the 'Door' object var doorGraphics = self.attachAsset('Door', { anchorX: 0.5, anchorY: 0.5 }); // Make the 'Door' object interactive self.interactive = true; // Define the 'down' event handler self.down = function (x, y, obj) { LK.getSound('doors').play(); // Remove the existing hammer hammer.destroy(); // Create a new screen game.magicNursery = game.addChild(new Container()); // Attach 'magicNurseryBackground' asset to the 'magicNursery' object var magicNurseryBackground = game.magicNursery.attachAsset('magicNurseryBackground', { anchorX: 0.5, anchorY: 0.5, interactive: false, // Disable interactivity to prevent blurring on click scaleX: 2, // Double the size horizontally scaleY: 2 // Double the size vertically }); // Recreate the hammer asset magicNurseryBackground.x = 2048 / 2; magicNurseryBackground.y = 2732 / 2; // Attach 'ForgeOfMatter' asset to the 'magicNursery' object var forgeOfMatter = game.magicNursery.attachAsset('ForgeOfMatter', { anchorX: 0.5, anchorY: 0.5, interactive: true, scaleX: 3, // Increase the size horizontally scaleY: 3, // Increase the size vertically alpha: 0.0 // Make the ForgeOfMatter fully transparent }); // Create and add a new instance of the BlueCrystalIngot class var blueCrystalIngot = game.magicNursery.addChild(new BlueCrystalIngot()); //{P.1} // Position the blueCrystalIngot asset in the bottom-left corner blueCrystalIngot.x = 200 + blueCrystalIngot.width / 2; blueCrystalIngot.y = 2500 - blueCrystalIngot.height / 2; // Create and add a new instance of the RedCrystalIngot class var redCrystalIngot = game.magicNursery.addChild(new RedCrystalIngot()); // Center the redCrystalIngot asset in the magicNursery screen redCrystalIngot.x = 1300 / 2; redCrystalIngot.y = 4930 / 2; // Create and add a new instance of the GreenCrystalIngot class var greenCrystalIngotInstance = game.magicNursery.addChild(new GreenCrystalIngot()); // Position the greenCrystalIngotInstance asset to the right of the blueCrystalIngot asset greenCrystalIngotInstance.x = blueCrystalIngot.x + blueCrystalIngot.width + greenCrystalIngotInstance.width / 2 + 40; greenCrystalIngotInstance.y = blueCrystalIngot.y; // Initialize the click counter for ForgeOfMatter forgeOfMatter.clickCounter = 0; // Initialize the growth rate click counter from the global growthRateCounter forgeOfMatter.clickCounter = growthRateCounter; growthRateText.setText('Growth rate: ' + forgeOfMatter.clickCounter); // Center the growthRate asset in the magicNursery screen var growthRate = game.magicNursery.addChild(LK.getAsset('growthRate', { anchorX: 0.5, anchorY: 0.5 })); growthRate.x = 700; growthRate.y = 1450; // Define the 'down' event handler for ForgeOfMatter forgeOfMatter.down = function (x, y, obj) { // Increment the click counter forgeOfMatter.clickCounter++; // Update the text object with the click counter and label growthRateText.setText('Growth rate: ' + forgeOfMatter.clickCounter); // Persist the click counter to the global growthRateCounter growthRateCounter = forgeOfMatter.clickCounter; storage.growthRate = growthRateCounter; }; forgeOfMatter.x = 1100 / 1.5; forgeOfMatter.y = 2000 / 1.5; // Add a new counter to the ForgeOfMatter object growthRateText.setText('Growth rate: ' + forgeOfMatter.clickCounter); growthRateText.visible = true; // Hide the game screen gameScreen.visible = false; // Show the forging skill counter when transitioning to magicNursery counterText.visible = true; // Hide the map when switching to the magic nursery screen map.visible = false; // Add a new object 'Door2' var door2 = game.magicNursery.addChild(new Door2()); // Position 'Door2' to the right, between the center and the edge of the screen door2.x = 2048 * 0.75; door2.y = 2732 * 0.9; hammer = game.addChild(LK.getAsset('hammer', { anchorX: 0.5, anchorY: 0.5, scaleX: -1 })); }; }); // Create a new class for the Door2 object var Door2 = Container.expand(function () { var self = Container.call(this); // Attach 'Door' asset to the 'Door2' object var doorGraphics = self.attachAsset('Door', { anchorX: 0.5, anchorY: 0.5 }); // Make the 'Door2' object interactive self.interactive = true; // Define the 'down' event handler self.down = function (x, y, obj) { LK.getSound('doors').play(); // Remove the existing hammer hammer.destroy(); // Show the Anvil screen gameScreen.visible = true; // Show the map only on the anvil screen map.visible = true; // Show the counter display counterText.visible = true; // Hide the Magic Nursery screen game.magicNursery.visible = false; // Show the Growth rate counter when transitioning to anvil growthRateText.visible = true; // Recreate the hammer asset hammer = game.addChild(LK.getAsset('hammer', { anchorX: 0.5, anchorY: 0.5, scaleX: -1 })); }; }); // Create a new class for the GreenAxe object var GreenAxe = Container.expand(function () { var self = Container.call(this); // Attach 'axeOfGreenCrystalsRecipe' asset to the 'GreenAxe' object var greenAxeGraphics = self.attachAsset('axeOfGreenCrystalsRecipe', { anchorX: 0.5, anchorY: 0.5, interactive: true // Make the greenAxe interactive }); // Define the 'down' event handler for greenAxe self.down = function (x, y, obj) { if (storage.forgingSkill >= 10000 && storage.greenCrystalIngotScore >= 150) { greenAxeClicks += 1000; } if (greenAxeClicks >= 3000) { greenAxeClicks = 0; storage.greenAxes += 1; // Increment the green axes count in storage greenAxesText.setText(storage.greenAxes.toString()); } greenAxeClicksText.setText('(current ' + greenAxeClicks + ')'); storage.greenAxeClicks = greenAxeClicks; }; }); // Create a new class for the GreenCristal object var GreenCristal = Container.expand(function () { var self = Container.call(this); // Attach 'greenCristal' asset to the 'GreenCristal' object var greenCristalGraphics = self.attachAsset('greenCristal', { anchorX: 0.5, anchorY: 0.5, interactive: true // Make the greenCristal interactive }); // Define the 'down' event handler for greenCristal self.down = function (x, y, obj) { // Increment the score by 1 greenCristallScore += 1000; LK.setScore(greenCristallScore); storage.greenCristallScore = greenCristallScore; // Update the score text greenScoreTxt.setText('Green Cristall: ' + greenCristallScore); greenScoreTxt.visible = true; // Ensure the score text remains visible }; }); // Create a new class for the GreenCrystalIngot object var GreenCrystalIngot = Container.expand(function () { var self = Container.call(this); // Attach 'greenCrystalIngot' asset to the 'GreenCrystalIngot' object var greenCrystalIngotGraphics = self.attachAsset('greenCrystalIngot', { anchorX: 0.5, anchorY: 0.5, interactive: true // Make the greenCrystalIngot interactive }); // Define the 'down' event handler for greenCrystalIngot self.down = function (x, y, obj) { if (greenCristallScore >= 100) { storage.growthRate += 10; // Increment growth rate by 10 growthRateText.setText('Growth rate: ' + storage.growthRate); // Update the growth rate display // Increment the GreenCrystalIngot score by 1 greenCrystalIngotScore += 1; greenCrystalIngotScoreTxt.setText('GreenCrystalIngot: ' + greenCrystalIngotScore); storage.greenCrystalIngotScore = greenCrystalIngotScore; // Decrement the GreenCristal score by 100 greenCristallScore -= 100; if (greenCristallScore < 0) { greenCristallScore = 0; } storage.greenCristallScore = greenCristallScore; // Persist the decrement greenScoreTxt.setText('Green Cristall: ' + greenCristallScore); } }; }); // Create a new class for the RecipesScreen object var RecipesScreen = Container.expand(function () { var self = Container.call(this); // Attach 'recipesout' asset to the 'RecipesScreen' object var recipesOutGraphics = self.attachAsset('recipesout', { anchorX: 0.5, anchorY: 0.5 }); // Center the 'recipesout' asset on the screen recipesOutGraphics.x = 2048 / 2; recipesOutGraphics.y = 2732 / 2 + 1100; // Make the 'recipesout' asset interactive recipesOutGraphics.interactive = true; // Define the 'down' event handler for recipesOutGraphics recipesOutGraphics.down = function (x, y, obj) { LK.getSound('booksaudio').play(); // Hide the 'recipesout' asset recipesOutGraphics.visible = false; // Transition to the 'gameScreen' gameScreen.visible = true; // Make the map visible after transitioning to the recipesout screen map.visible = true; // Hide the current recipes screen self.visible = false; }; }); // Create a new class for the RedCristal object var RedCristal = Container.expand(function () { var self = Container.call(this); // Attach 'redCristal' asset to the 'RedCristal' object var redCristalGraphics = self.attachAsset('redCristal', { anchorX: 0.5, anchorY: 0.5, interactive: true // Make the redCristal interactive }); // Define the 'down' event handler for redCristal self.down = function (x, y, obj) { // Increment the score by 1 redCristallScore += 1000; LK.setScore(redCristallScore); storage.redCristallScore = redCristallScore; // Update the score text redScoreTxt.setText('Red Cristall: ' + redCristallScore); redScoreTxt.visible = true; // Ensure the score text remains visible }; }); // Create a new class for the RedCrystalIngot object var RedCrystalIngot = Container.expand(function () { var self = Container.call(this); // Attach 'redCristalIngot' asset to the 'RedCrystalIngot' object var redCrystalIngotGraphics = self.attachAsset('redCristalIngot', { anchorX: 0.5, anchorY: 0.5, interactive: true // Make the redCrystalIngot interactive }); // Define the 'down' event handler for redCrystalIngot self.down = function (x, y, obj) { // Decrement the RedCristal score by 100 if (redCristallScore >= 100) { // Increment the RedCrystalIngot score by 1 redCrystalIngotScore += 1; storage.growthRate += 20; // Increment growth rate by 20 growthRateText.setText('Growth rate: ' + storage.growthRate); // Update the growth rate display redCrystalIngotScoreTxt.setText('RedCrystalIngot: ' + redCrystalIngotScore); storage.redCrystalIngotScore = redCrystalIngotScore; redCristallScore -= 100; storage.redCristallScore = redCristallScore; // Persist the decrement redScoreTxt.setText('Red Cristall: ' + redCristallScore); } }; }); var RedCrystalTwoHandedSword = Container.expand(function () { var self = Container.call(this); // Attach 'redcrystaltwo-handedswordrecipe' asset to the 'RedCrystalTwoHandedSword' object var redCrystalTwoHandedSwordGraphics = self.attachAsset('redcrystaltwo-handedswordrecipe', { anchorX: 0.5, anchorY: 0.5, interactive: true // Make the redCrystalTwoHandedSword interactive }); // Define the 'down' event handler for redCrystalTwoHandedSword self.down = function (x, y, obj) { if (storage.forgingSkill >= 20000 && storage.redCrystalIngotScore >= 250) { redCrystalTwoHandedSwordClicks += 1; redCrystalTwoHandedSwordClicksText.setText('(current ' + redCrystalTwoHandedSwordClicks + ')'); if (redCrystalTwoHandedSwordClicks >= 10000) { redCrystalTwoHandedSwordClicks = 0; storage.redCrystalTwoHandedSwords += 1; // Increment the red crystal two-handed swords count in storage redCrystalTwoHandedSwordsText.setText(storage.redCrystalTwoHandedSwords.toString()); } } if (redCrystalTwoHandedSwordClicks >= 10000) { redCrystalTwoHandedSwordClicks = 0; storage.redCrystalTwoHandedSwords += 250; // Increment the red crystal two-handed swords count in storage redCrystalTwoHandedSwordsText.setText(storage.redCrystalTwoHandedSwords.toString()); } redCrystalTwoHandedSwordClicksText.setText('(current ' + redCrystalTwoHandedSwordClicks + ')'); storage.redCrystalTwoHandedSwordClicks = redCrystalTwoHandedSwordClicks; }; }); /**** * Initialize Game ****/ // Create a new text object to display the click counter var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ //{0.1} var goldScore = storage.goldScore || 0; var goldScoreTxt = new Text2('Gold: ' + goldScore, { size: 50, fill: 0xFFFFFF }); goldScoreTxt.anchor.set(0, 0); goldScoreTxt.y = 0; if (typeof counterText !== 'undefined') { goldScoreTxt.x = counterText.width + 10; // Position to the right of the Forging skill counter } else { goldScoreTxt.x = 550; // Default position if counterText is undefined } LK.gui.topLeft.addChild(goldScoreTxt); var redCrystalIngotScore = storage.redCrystalIngotScore || 0; var redCrystalIngotScoreTxt = new Text2('RedCrystalIngot: ' + redCrystalIngotScore, { size: 50, fill: 0xFFFFFF }); redCrystalIngotScoreTxt.anchor.set(1, 0); redCrystalIngotScoreTxt.y = 100; // Position below the GreenCrystalIngot score LK.gui.topRight.addChild(redCrystalIngotScoreTxt); //{0.1} // Removed the 'current underfiend' text from the screen var mineInsideBackground; var blueCristallScore = storage.blueCristallScore || 0; var autominebluecristallClicked = storage.autominebluecristallClicked; var autominegreencristallClicked = storage.autominegreencristallClicked; var autominegreencristallClicked = storage.autominegreencristallClicked; var automineredcristallClicked = storage.automineredcristallClicked; var autogrowthRateClicked = storage.autogrowthRateClicked; var scoreTxt = new Text2('Blue Cristall: ' + blueCristallScore, { size: 50, fill: 0xFFFFFF }); scoreTxt.anchor.set(0, 0); scoreTxt.y = 100; // Move the score text 100 pixels down LK.gui.topLeft.addChild(scoreTxt); var greenCristallScore = storage.greenCristallScore || 0; var greenScoreTxt = new Text2('Green Cristall: ' + greenCristallScore, { size: 50, fill: 0xFFFFFF }); greenScoreTxt.anchor.set(0, 0); greenScoreTxt.y = 150; // Position below the Blue Cristall score LK.gui.topLeft.addChild(greenScoreTxt); var greenCrystalIngotScore = storage.greenCrystalIngotScore || 0; var greenCrystalIngotScoreTxt = new Text2('GreenCrystalIngot: ' + greenCrystalIngotScore, { size: 50, fill: 0xFFFFFF }); greenCrystalIngotScoreTxt.anchor.set(1, 0); greenCrystalIngotScoreTxt.y = 50; // Position below the BlueCrystalIngot score LK.gui.topRight.addChild(greenCrystalIngotScoreTxt); var blueCristal; // Define blueCristal in the global scope to fix the reference error var greenCristal; // Define greenCristal in the global scope to fix the reference error var redCristal; // Define redCristal in the global scope to fix the reference error var blueCrystalIngotScore = storage.blueCrystalIngotScore || 0; //{1Z.1} var blueSwordsText = new Text2(storage.blueSwords.toString(), { size: 50, fill: 0x000000 // Black color }); blueSwordsText.anchor.set(0.5, 0.5); blueSwordsText.x = 1248 / 2; blueSwordsText.y = 2732 / 2 + 450; // Position below the 'Swords in stock' text LK.gui.topLeft.addChild(blueSwordsText); var redCristallScore = storage.redCristallScore || 0; var blueCrystalIngotScoreTxt = new Text2('BlueCrystalIngot: ' + blueCrystalIngotScore, { size: 50, fill: 0xFFFFFF }); blueCrystalIngotScoreTxt.anchor.set(1, 0); blueCrystalIngotScoreTxt.y = 0; LK.gui.topRight.addChild(blueCrystalIngotScoreTxt); var redScoreTxt = new Text2('Red Cristall: ' + redCristallScore, { size: 50, fill: 0xFFFFFF }); redScoreTxt.anchor.set(0, 0); redScoreTxt.y = 200; // Position below the Green Cristall score LK.gui.topLeft.addChild(redScoreTxt); var map = game.addChild(LK.getAsset('Map', { anchorX: 0.5, anchorY: 0.5 })); map.x = 400; map.y = 2450; map.visible = false; // Initialize the map as invisible // Make the map interactive map.interactive = true; // Define the 'down' event handler for the map map.down = function (x, y, obj) { // Hide the map asset when transitioning to the map screen LK.getSound('mapaudio').play(); map.visible = false; // Hide the mineInsideBackground if it exists if (mineInsideBackground) { mineInsideBackground.visible = false; mineInsideBackground.destroy(); // Ensure it is completely removed } if (redCristal) { redCristal.visible = false; //{1Z.1} redCristal.destroy(); // Ensure it is completely removed } //{1Z.3} if (blueCristal) { blueCristal.visible = false; //{1X.1} blueCristal.destroy(); // Ensure it is completely removed } //{1X.3} if (greenCristal) { greenCristal.visible = false; //{1Y.1} greenCristal.destroy(); // Ensure it is completely removed } //{1Y.3} var mapScreen = game.addChild(new Container()); // Attach 'mapbackground' asset to the mapScreen var mapBackground = mapScreen.attachAsset('mapbackground', { anchorX: 0.5, //{1h.1} anchorY: 0.5, //{1h.2} interactive: false // Ensure mapbackground does not block cursor interaction }); //{1h.3} // Add 'citymap' asset to the center of the screen var cityMap = mapScreen.attachAsset('citymap', { anchorX: 0.5, anchorY: 0.5, interactive: true // Make the 'citymap' asset interactive }); cityMap.x = -250; cityMap.y = 160; // Define the 'down' event handler for cityMap cityMap.down = function (x, y, obj) { // Create a new screen without background var isolatedScreen = game.addChild(new Container()); // Hide the current map screen mapScreen.visible = false; // Add 'citybackground' asset to the center of the isolatedScreen var cityBackground = isolatedScreen.attachAsset('citybackground', { anchorX: 0.5, anchorY: 0.5 }); cityBackground.x = 0; cityBackground.y = 0; // Add 'map' asset to the isolatedScreen var mapAsset = isolatedScreen.attachAsset('Map', { anchorX: 0.5, anchorY: 0.5, interactive: true // Make the 'map' asset interactive }); mapAsset.x = -650; mapAsset.y = 1100; // Define the 'down' event handler for mapAsset mapAsset.down = function (x, y, obj) { // Transition back to the citymap screen isolatedScreen.visible = false; // Hide the current isolated screen mapScreen.visible = true; // Show the citymap screen cityBackground.visible = false; // Ensure citybackground is hidden }; // Add 'shop' asset to the center of the isolatedScreen var shop = isolatedScreen.attachAsset('shop', { anchorX: 0.5, anchorY: 0.5, interactive: true // Make the 'shop' asset interactive }); shop.x = 490; shop.y = -100; // Define the 'down' event handler for shop shop.down = function (x, y, obj) { LK.getSound('shopin').play(); // Create a new screen without background var shopScreen = game.addChild(new Container()); // Hide the current isolated screen isolatedScreen.visible = false; // Position the shopScreen at the center shopScreen.x = 2048 / 2; shopScreen.y = 2732 / 2; // Add 'new tools' asset to the center of the shopScreen var newTools = shopScreen.attachAsset('newTools', { anchorX: 0.5, anchorY: 0.5 }); newTools.x = -650; newTools.y = 1100; newTools.interactive = true; // Make the newTools asset interactive newTools.down = function (x, y, obj) { // Create a new isolated screen without a background var isolatedScreen = game.addChild(new Container()); // Attach 'newToolsBackground' asset to the isolatedScreen var newToolsBackground = isolatedScreen.attachAsset('newToolsBackground', { anchorX: 0.5, anchorY: 0.5 }); newToolsBackground.x = 0; newToolsBackground.y = 0; if (!storage.theBlacksmithsApprentice) { // Attach 'Theblacksmithsapprentice' asset to the center of the isolatedScreen var theBlacksmithsApprentice = isolatedScreen.attachAsset('Theblacksmithsapprentice', { anchorX: 0.5, //{4C.1} anchorY: 0.5, //{4C.2} interactive: true // Make the Theblacksmithsapprentice interactive }); //{4C.3} theBlacksmithsApprentice.x = 400; theBlacksmithsApprentice.y = 200; theBlacksmithsApprentice.clicked = storage.theBlacksmithsApprentice; // Define the 'down' event handler for theBlacksmithsApprentice theBlacksmithsApprentice.down = function (x, y, obj) { // Increment forgingSkill by 1 every second if (goldScore >= 1500 && !theBlacksmithsApprentice.clicked) { goldScore -= 1500; goldScoreTxt.setText('Gold: ' + goldScore); storage.goldScore = goldScore; theBlacksmithsApprentice.clicked = true; var intervalId = LK.setInterval(function () { storage.forgingSkill += 1; counterText.setText('Forging skill: ' + storage.forgingSkill); }, 1000); // Store the intervalId in the theBlacksmithsApprentice object for potential future use theBlacksmithsApprentice.intervalId = intervalId; storage.theBlacksmithsApprentice = true; } }; // Add text "The blacksmith's apprentice +1" below the Theblacksmithsapprentice asset var apprenticeText = new Text2("The blacksmith's \napprentice +1", { size: 50, fill: 0x030303 }); apprenticeText.anchor.set(0.5, 0.5); apprenticeText.x = theBlacksmithsApprentice.x; apprenticeText.y = theBlacksmithsApprentice.y + 170; // Position below the Theblacksmithsapprentice asset isolatedScreen.addChild(apprenticeText); // Add text "1500G" below the 'The blacksmith's apprentice +1' text var apprenticeCostText = new Text2('1500G', { size: 50, fill: 0x030303 }); apprenticeCostText.anchor.set(0.5, 0.5); apprenticeCostText.x = apprenticeText.x; apprenticeCostText.y = apprenticeText.y + 70; // Position below the 'The blacksmith's apprentice +1' text isolatedScreen.addChild(apprenticeCostText); } // Attach 'newToolsout' asset to the center of the isolatedScreen var newToolsOut = isolatedScreen.attachAsset('newToolsout', { anchorX: 0.5, anchorY: 0.5 }); newToolsOut.x = 0; newToolsOut.y = 1200; newToolsOut.interactive = true; // Make the newToolsOut asset interactive//{4F.1} if (!storage.autominebluecristallClicked) { // Attach 'autominebluecristall' asset to the center of the isolatedScreen var autominebluecristall = isolatedScreen.attachAsset('autominebluecristall', { anchorX: 0.5, //{4F.2} anchorY: 0.5, //{4F.3} interactive: true // Make the autominebluecristall interactive }); //{4F.4} autominebluecristall.x = -400; autominebluecristall.y = -600; autominebluecristall.clicked = storage.autominebluecristallClicked; // Define the 'down' event handler for autominebluecristall autominebluecristall.down = function (x, y, obj) { // Increment blueCristallScore by 1 every second if (goldScore >= 500 && !autominebluecristall.clicked) { autominebluecristall.clicked = true; goldScore -= 500; goldScoreTxt.setText('Gold: ' + goldScore); storage.goldScore = goldScore; var intervalId = LK.setInterval(function () { blueCristallScore += 1; LK.setScore(blueCristallScore); storage.blueCristallScore = blueCristallScore; scoreTxt.setText('Blue Cristall: ' + LK.getScore()); }, 1000); // Store the intervalId in the autominebluecristall object for potential future use autominebluecristall.intervalId = intervalId; storage.autominebluecristallClicked = true; // Persist the click state } }; // Add text "Mine Blue Cristall +1" below the autominebluecristall asset var mineBlueCristallText = new Text2('Mine Blue Cristall +1', { size: 50, fill: 0x030303 }); mineBlueCristallText.anchor.set(0.5, 0.5); mineBlueCristallText.x = autominebluecristall.x; mineBlueCristallText.y = autominebluecristall.y + 150; // Position below the autominebluecristall asset isolatedScreen.addChild(mineBlueCristallText); // Add text "500G" below the 'Mine Blue Cristall +1' text var mineBlueCristallCostText = new Text2('500G', { size: 50, //{58.1} fill: 0x030303 //{58.2} }); //{58.3} mineBlueCristallCostText.anchor.set(0.5, 0.5); mineBlueCristallCostText.x = mineBlueCristallText.x; mineBlueCristallCostText.y = mineBlueCristallText.y + 50; // Position below the 'Mine Blue Cristall +1' text isolatedScreen.addChild(mineBlueCristallCostText); } if (!storage.autominegreencristallClicked) { // Attach 'autominegreencristall' asset to the center of the isolatedScreen var autominegreencristall = isolatedScreen.attachAsset('autominegreencristall', { anchorX: 0.5, anchorY: 0.5, interactive: true // Make the autominegreencristall interactive }); autominegreencristall.x = -400; autominegreencristall.y = -200; // Define the 'down' event handler for autominegreencristall autominegreencristall.clicked = storage.autominegreencristallClicked; autominegreencristall.down = function (x, y, obj) { // Increment greenCristallScore by 1 every second if (goldScore >= 1000 && !autominegreencristall.clicked) { autominegreencristall.clicked = true; goldScore -= 1000; goldScoreTxt.setText('Gold: ' + goldScore); storage.goldScore = goldScore; var intervalId = LK.setInterval(function () { greenCristallScore += 1; storage.greenCristallScore = greenCristallScore; greenScoreTxt.setText('Green Cristall: ' + greenCristallScore); }, 1000); // Store the intervalId in the autominegreencristall object for potential future use autominegreencristall.intervalId = intervalId; storage.autominegreencristallClicked = true; // Persist the click state } }; // Add text "Mine Green Cristall +1" below the autominegreencristall asset var mineGreenCristallText = new Text2('Mine Green Cristall +1', { size: 50, fill: 0x030303 }); mineGreenCristallText.anchor.set(0.5, 0.5); mineGreenCristallText.x = autominegreencristall.x; mineGreenCristallText.y = autominegreencristall.y + 150; // Lower the position below the autominegreencristall asset isolatedScreen.addChild(mineGreenCristallText); // Add text "1000G" below the 'Mine Green Cristall +1' text var mineGreenCristallCostText = new Text2('1000G', { size: 50, //{5c.1} fill: 0x030303 //{5c.2} }); //{5c.3} mineGreenCristallCostText.anchor.set(0.5, 0.5); mineGreenCristallCostText.x = mineGreenCristallText.x; mineGreenCristallCostText.y = mineGreenCristallText.y + 50; // Position below the 'Mine Green Cristall +1' text isolatedScreen.addChild(mineGreenCristallCostText); } if (!storage.automineredcristallClicked) { // Attach 'automineredcristall' asset to the center of the isolatedScreen var automineredcristall = isolatedScreen.attachAsset('automineredcristall', { anchorX: 0.5, anchorY: 0.5, interactive: true // Make the automineredcristall interactive }); automineredcristall.x = -400; automineredcristall.y = 200; // Define the 'down' event handler for automineredcristall automineredcristall.down = function (x, y, obj) { // Increment redCristallScore by 1 every second if (goldScore >= 2000 && !automineredcristall.clicked) { automineredcristall.clicked = true; goldScore -= 2000; goldScoreTxt.setText('Gold: ' + goldScore); storage.goldScore = goldScore; var intervalId = LK.setInterval(function () { redCristallScore += 1; storage.redCristallScore = redCristallScore; redScoreTxt.setText('Red Cristall: ' + redCristallScore); }, 1000); // Store the intervalId in the automineredcristall object for potential future use automineredcristall.intervalId = intervalId; storage.automineredcristallClicked = true; // Persist the click state mineRedCristallText.visible = false; // Hide the mineRedCristallText } }; // Add text "Mine Red Cristall +1" below the automineredcristall asset var mineRedCristallText = new Text2('Mine Red Cristall +1', { size: 50, fill: 0x030303 }); mineRedCristallText.anchor.set(0.5, 0.5); mineRedCristallText.x = automineredcristall.x; mineRedCristallText.y = automineredcristall.y + 140; // Position below the automineredcristall asset isolatedScreen.addChild(mineRedCristallText); // Add text "2000G" below the 'Mine Red Cristall +1' text var mineRedCristallCostText = new Text2('2000G', { size: 50, //{55.1} fill: 0x030303 //{55.2} }); //{55.3} mineRedCristallCostText.anchor.set(0.5, 0.5); mineRedCristallCostText.x = mineRedCristallText.x; mineRedCristallCostText.y = mineRedCristallText.y + 50; // Position below the 'Mine Red Cristall +1' text isolatedScreen.addChild(mineRedCristallCostText); } if (!storage.multiclickupgrade) { // Attach 'multiclickupgrade' asset to the center of the isolatedScreen var multiclickupgrade = isolatedScreen.attachAsset('multiclickupgrade', { anchorX: 0.5, anchorY: 0.5, interactive: true // Make the multiclickupgrade interactive }); multiclickupgrade.x = 400; multiclickupgrade.y = -200; // Define the 'down' event handler for multiclickupgrade multiclickupgrade.down = function (x, y, obj) { // Deduct 700 gold when clicked if (goldScore >= 700 && !storage.multiclickupgrade) { goldScore -= 700; goldScoreTxt.setText('Gold: ' + goldScore); storage.goldScore = goldScore; storage.multiclickupgrade = true; } }; // Add text "Increased chance of successful forging +5%" below the multiclickupgrade asset var increasedChanceText = new Text2('Increased chance of \nsuccessful forging +5%', { size: 50, fill: 0x030303 }); increasedChanceText.anchor.set(0.5, 0.5); increasedChanceText.x = multiclickupgrade.x; increasedChanceText.y = multiclickupgrade.y + 170; // Position below the multiclickupgrade asset isolatedScreen.addChild(increasedChanceText); // Add text "700G" below the 'Increased chance of successful forging +5%' text var increasedChanceCostText = new Text2('700G', { size: 50, //{4Z.1} fill: 0x030303 //{4Z.2} }); //{4Z.3} increasedChanceCostText.anchor.set(0.5, 0.5); increasedChanceCostText.x = increasedChanceText.x; increasedChanceCostText.y = increasedChanceText.y + 70; // Position below the 'Increased chance of successful forging +5%' text isolatedScreen.addChild(increasedChanceCostText); } if (!storage.autogrowthRateClicked) { // Attach 'autogrowthRate' asset to the center of the isolatedScreen var autogrowthRate = isolatedScreen.attachAsset('autogrowthRate', { anchorX: 0.5, anchorY: 0.5, interactive: true // Make the autogrowthRate interactive }); autogrowthRate.x = 400; autogrowthRate.y = -600; autogrowthRate.clicked = storage.autogrowthRateClicked; // Define the 'down' event handler for autogrowthRate autogrowthRate.down = function (x, y, obj) { // Increment growthRateCounter by 1 every second if (goldScore >= 2000 && !autogrowthRate.clicked) { autogrowthRate.clicked = true; goldScore -= 2000; goldScoreTxt.setText('Gold: ' + goldScore); storage.goldScore = goldScore; var intervalId = LK.setInterval(function () { growthRateCounter += 1; growthRateText.setText('Growth rate: ' + growthRateCounter); storage.growthRate = growthRateCounter; }, 1000); // Store the intervalId in the autogrowthRate object for potential future use autogrowthRate.intervalId = intervalId; storage.autogrowthRateClicked = true; // Persist the click state } }; // Add text "Automatic melting +1" below the autogrowthRate asset var automaticMeltingText = new Text2('Automatic melting +1', { size: 50, fill: 0x030303 }); automaticMeltingText.anchor.set(0.5, 0.5); automaticMeltingText.x = autogrowthRate.x; automaticMeltingText.y = autogrowthRate.y + 150; // Position below the autogrowthRate asset isolatedScreen.addChild(automaticMeltingText); // Add text "2000G" below the 'Automatic melting +1' text var automaticMeltingCostText = new Text2('2000G', { size: 50, fill: 0x030303 }); automaticMeltingCostText.anchor.set(0.5, 0.5); automaticMeltingCostText.x = automaticMeltingText.x; automaticMeltingCostText.y = automaticMeltingText.y + 50; // Position below the 'Automatic melting +1' text isolatedScreen.addChild(automaticMeltingCostText); } newToolsOut.down = function (x, y, obj) { LK.getSound('booksaudio').play(); // Transition to the newTools screen isolatedScreen.visible = false; // Hide the current isolated screen shopScreen.visible = true; // Show the newTools screen }; // Hide the current shop screen shopScreen.visible = false; // Position the isolatedScreen at the center isolatedScreen.x = 2048 / 2; isolatedScreen.y = 2732 / 2; }; // Add 'new buildings' asset to the center of the shopScreen var newBuildings = shopScreen.attachAsset('sellweapons', { anchorX: 0.5, anchorY: 0.5, interactive: true // Make the 'sellweapons' asset interactive }); // Define the 'down' event handler for sellweapons newBuildings.down = function (x, y, obj) { console.log("Sell weapons asset clicked at", x, y); // Reset 'Swords in stock' counter and add +100 to Gold for each sword goldScore += storage.blueSwords * 100; storage.blueSwords = 0; blueSwordsText.setText(storage.blueSwords.toString()); goldScoreTxt.setText('Gold: ' + goldScore); storage.goldScore = goldScore; }; newBuildings.x = 0; newBuildings.y = 1100; // Add 'shopout' asset to the shopScreen var shopBackground = shopScreen.attachAsset('shopbackground', { anchorX: 0.5, anchorY: 0.5 }); shopBackground.x = 0; shopBackground.y = 0; // Add 'shopout' asset to the shopScreen var shopOut = shopScreen.attachAsset('shopout', { anchorX: 0.5, anchorY: 0.5, interactive: true // Make the 'shopout' asset interactive }); shopOut.x = 650; shopOut.y = 1100; // Define the 'down' event handler for shopOut shopOut.down = function (x, y, obj) { LK.getSound('doors').play(); shopScreen.visible = false; // Hide the current shop screen mapBackground.visible = false; // Ensure the mapbackground asset is hidden mapScreen.visible = true; // Show the citymap screen isolatedScreen.visible = true; // Ensure the isolated screen is visible }; }; // Position the isolatedScreen at the center isolatedScreen.x = 2048 / 2; isolatedScreen.y = 2732 / 2; }; // Attach 'anvilmap' asset to the mapScreen on the top layer var anvilMap = mapScreen.attachAsset('anvilmap', { anchorX: 0.5, anchorY: 0.5, interactive: true }); // Attach 'mine' asset to the mapScreen on the top layer var mine = mapScreen.attachAsset('mine', { anchorX: 0.5, anchorY: 0.5, interactive: true }); mine.x -= 150; // Move the mine asset 150 pixels to the left mine.y -= 150; // Move the mine asset 150 pixels higher // Make mine interactive and define the 'down' event handler mine.down = function (x, y, obj) { // Create a new screen for the mine var mineScreen = game.addChild(new Container()); // Make the map visible after transitioning to the mine screen map.visible = true; // Hide the current map screen mapScreen.visible = false; // Disable the active background background.visible = false; // Attach 'mineinsidebackground' asset to the mineScreen on the bottom layer mineInsideBackground = mineScreen.attachAsset('mineinsidebackground', { anchorX: 0.5, anchorY: 0.5, interactive: false, zIndex: -1 // Ensure it is on the bottom layer }); // Create and add a new instance of the RedCristal class redCristal = mineScreen.addChild(new RedCristal()); // Position the redCristal asset redCristal.x -= 510; // Move 100 pixels to the left redCristal.y += 490; // Move 100 pixels lower // Create and add a new instance of the GreenCristal class greenCristal = mineScreen.addChild(new GreenCristal()); // Position the greenCristal asset greenCristal.x -= -510; // Move 100 pixels to the left greenCristal.y += 10; // Move 100 pixels lower // Create and add a new instance of the BlueCristal class blueCristal = mineScreen.addChild(new BlueCristal()); // Position the blueCristal asset blueCristal.x += 490; // Move 100 pixels to the right blueCristal.y += -60; // Move 100 pixels lower // Position the blueCristal asset blueCristal.x -= 410; // Move 100 pixels to the left blueCristal.y -= 310; // Move 100 pixels lower // Position the mineScreen at the center mineScreen.x = 2048 / 2; //{1E.1} mineScreen.y = 2732 / 2; //{1E.2} }; // Make anvilMap interactive and define the 'down' event handler anvilMap.down = function (x, y, obj) { // Show the Anvil screen gameScreen.visible = true; // Make the map visible after transitioning to the anvil map map.visible = true; // Attach 'gameScreenBackground' asset to the 'gameScreen' object gameScreenBackground = gameScreen.attachAsset('gameScreenBackground', { anchorX: 0.5, anchorY: 0.5 }); // Attach 'recipes' asset to the 'gameScreenBackground' object var recipes = gameScreenBackground.attachAsset('recipes', { anchorX: 0.5, anchorY: 0.5 }); // Center the 'recipes' asset on the gameScreenBackground recipes.x = gameScreenBackground.width / 2 - 1050; //{3u.1} recipes.y = gameScreenBackground.height / 2 + 150; //{3v.1} // Hide the mineinsidebackground when exiting the mine screen if (mineInsideBackground) { mineInsideBackground.visible = false; mineInsideBackground.destroy(); // Ensure it is completely removed } if (mineInsideBackground) { mineInsideBackground.visible = false; mineInsideBackground.destroy(); // Ensure it is completely removed } if (blueCristal) { blueCristal.visible = false; //{1X.1} blueCristal.destroy(); // Ensure it is completely removed } //{1X.3} if (greenCristal) { greenCristal.visible = false; //{1Y.1} greenCristal.destroy(); // Ensure it is completely removed } //{1Y.3} if (redCristal) { redCristal.visible = false; //{1Z.1} redCristal.destroy(); // Ensure it is completely removed } //{1Z.3} // Hide the map screen mapScreen.visible = false; // Show the counter display counterText.visible = true; // Show the Growth rate counter when transitioning to anvilmap growthRateText.visible = true; }; // Hide the current game screen gameScreen.visible = false; // Disable the active background background.visible = false; // Attach a new background or asset to the mapScreen if needed // Example: mapScreen.attachAsset('newBackground', { anchorX: 0.5, anchorY: 0.5 }); // Position the mapScreen at the center mapScreen.x = 2048 / 2; mapScreen.y = 2732 / 2; }; var growthRateText; var growthRateCounter = storage.growthRate; // Initialize growth rate counter from storage var background = game.addChild(new Container()); background.width = 2048; background.height = 2732; background.x = 2048 / 2; background.y = 2732 / 2; var backgroundGraphics = background.attachAsset('background', { anchorX: 0.5, anchorY: 0.5 }); var gameScreen = new Container(); //{1h.1} var newGame = game.addChild(new Container()); newGame.x = 2650 / 2 + 100; //{3d.1} newGame.y = 2680 * 4.2 / 5; //{3d.1} // Attach 'title' asset to the start screen var title = game.addChild(LK.getAsset('title', { anchorX: 0.5, anchorY: 0.5 })); title.x = 2048 / 2; title.y = 3200 / 5; // Attach 'newGameText' asset to the 'New Game' object var newGameText = newGame.attachAsset('newGameText', { anchorX: 0.5, anchorY: 0.5, stroke: 0xFFFFFF, // White color strokeThickness: 5 // 5px thickness }); // Attach 'continueText' asset to the game object var continueText = game.addChild(LK.getAsset('continueText', { anchorX: 0.5, anchorY: 0.5 })); continueText.x = newGame.x - newGame.width - 500; // Increase the distance between newGame and continueText continueText.y = newGame.y; // Align vertically with newGame continueText.interactive = true; continueText.down = function (x, y, obj) { startgame(); }; var blueswordsclick = storage.blueswordsclick; var greenAxeClicks = storage.greenAxeClicks; var redCrystalTwoHandedSwordClicks = storage.redCrystalTwoHandedSwordClicks; console.log(redCrystalTwoHandedSwordClicks); function startgame() { hammer.destroy(); // Create a new game screen gameScreen = game.addChild(new Container()); gameScreen.x = 2048 / 2; gameScreen.y = 2732 / 2; // Attach 'gameScreenBackground' asset to the 'gameScreen' object gameScreenBackground = gameScreen.attachAsset('gameScreenBackground', { anchorX: 0.5, anchorY: 0.5 }); // Attach 'recipes' asset to the 'gameScreenBackground' object var recipes = gameScreenBackground.attachAsset('recipes', { anchorX: 0.5, anchorY: 0.5, interactive: true // Make the recipes asset interactive }); // Remove 'continueText' asset when transitioning to new game // Define the 'down' event handler for recipes recipes.down = function (x, y, obj) { LK.getSound('booksaudio').play(); // Create a new screen for the recipes var recipesScreen = game.addChild(new RecipesScreen()); map.visible = false; // Hide the map asset after transitioning to the recipes screen // Add 'recipesbackground' asset to the center of the screen var recipesBackground = recipesScreen.attachAsset('recipesbackground', { anchorX: 0.5, anchorY: 0.5 }); recipesBackground.x = 2048 / 2; recipesBackground.y = 2932 / 2; // Add 'bluecrystalswordrecipe' asset to the center of the screen var bluecrystalswordrecipe = recipesScreen.attachAsset('bluecrystalswordrecipe', { anchorX: 0.5, anchorY: 0.5 }); bluecrystalswordrecipe.x = 1248 / 2; bluecrystalswordrecipe.y = 2132 / 2; bluecrystalswordrecipe.down = function () { if (storage.forgingSkill >= 2000 && storage.blueCrystalIngotScore >= 100) { blueswordsclick += 100; } if (blueswordsclick >= 1000) { blueswordsclick = 0; storage.blueSwords += 1; // Increment the blue swords count in storage blueSwordsText.setText(storage.blueSwords.toString()); if (blueCrystalIngotScore >= 100) { blueCrystalIngotScore -= 100; // Deduct 100 from blueCrystalIngotScore storage.blueCrystalIngotScore = blueCrystalIngotScore; // Persist the decrement blueCrystalIngotScoreTxt.setText('BlueCrystalIngot: ' + blueCrystalIngotScore); } } blueCrystalSwordClicks.setText('(current ' + blueswordsclick + ')'); storage.blueswordsclick = blueswordsclick; }; // Add 'Swords in stock' text asset to the center of the screen var swordsInStockText = new Text2('Swords in stock', { size: 50, fill: 0x000000 // Black color }); swordsInStockText.anchor.set(0.5, 0.5); swordsInStockText.x = 1248 / 2; swordsInStockText.y = 2732 / 2 + 400; recipesScreen.addChild(swordsInStockText); // Display the number of blue swords in stock var blueSwordsText = new Text2(storage.blueSwords.toString(), { size: 50, fill: 0x000000 // Black color }); blueSwordsText.anchor.set(0.5, 0.5); blueSwordsText.x = 1248 / 2; blueSwordsText.y = swordsInStockText.y + 50; // Position below the 'Swords in stock' text recipesScreen.addChild(blueSwordsText); // Add 'Axe of Green Crystals recipe' asset to the center of the screen var axeOfGreenCrystalsRecipe = recipesScreen.attachAsset('axeOfGreenCrystalsRecipe', { anchorX: 0.5, anchorY: 0.5 }); axeOfGreenCrystalsRecipe.x = 2848 / 2; axeOfGreenCrystalsRecipe.y = 2132 / 2; axeOfGreenCrystalsRecipe.down = function () { if (storage.forgingSkill >= 10000 && storage.greenCrystalIngotScore >= 150) { greenAxeClicks += 100; } if (greenAxeClicks >= 3000) { greenAxeClicks = 0; storage.greenAxes += 1; // Increment the green axes count in storage greenAxesText.setText(storage.greenAxes.toString()); if (greenCrystalIngotScore >= 150) { greenCrystalIngotScore -= 150; // Deduct 150 from greenCrystalIngotScore storage.greenCrystalIngotScore = greenCrystalIngotScore; // Persist the decrement greenCrystalIngotScoreTxt.setText('GreenCrystalIngot: ' + greenCrystalIngotScore); } } greenAxeClicksText.setText('(current ' + greenAxeClicks + ')'); storage.greenAxeClicks = greenAxeClicks; }; // Add 'Axe in stock' text asset to the center of the screen var axeInStockText = new Text2('Axe in stock', { size: 50, fill: 0x000000 // Black color }); axeInStockText.anchor.set(0.5, 0.5); axeInStockText.x = 2848 / 2; axeInStockText.y = swordsInStockText.y + 50; // Position below the 'Swords in stock' text recipesScreen.addChild(axeInStockText); // Display the number of green axes in stock var greenAxesText = new Text2(storage.greenAxes.toString(), { size: 50, fill: 0x000000 // Black color }); greenAxesText.anchor.set(0.5, 0.5); greenAxesText.x = 2848 / 2; greenAxesText.y = swordsInStockText.y + 100; // Position below the 'Swords in stock' text recipesScreen.addChild(greenAxesText); // Add 'Green Axe clicks' text asset to the center of the screen var greenAxeClicksText = new Text2('(current ' + greenAxeClicks + ')', { size: 50, fill: 0x000000, alpha: 0.5 // Set transparency }); greenAxeClicksText.anchor.set(0.5, 0.5); greenAxeClicksText.x = 2848 / 2 - 150; greenAxeClicksText.y = 2732 / 2 + 330; recipesScreen.addChild(greenAxeClicksText); // Add 'Blue crystal sword description' text asset to the center of the screen var blueCrystalSwordDescription = new Text2('"Blue Crystal Sword"\n Forging Skill 2k.\n 100 blue crystal ingots +\n 1000 clicks on the recipe', { size: 50, fill: 0x000000, alpha: 0.5 // Set transparency }); blueCrystalSwordDescription.anchor.set(0.5, 0.5); blueCrystalSwordDescription.x = 1248 / 2; blueCrystalSwordDescription.y = 2732 / 2 + 200; recipesScreen.addChild(blueCrystalSwordDescription); var blueCrystalSwordClicks = new Text2('(current ' + blueswordsclick + ')', { size: 50, fill: 0x000000, alpha: 0.5 // Set transparency }); blueCrystalSwordClicks.anchor.set(0.5, 0.5); blueCrystalSwordClicks.x = 1248 / 2 - 150; blueCrystalSwordClicks.y = 2732 / 2 + 330; recipesScreen.addChild(blueCrystalSwordClicks); // Add 'axeOfGreenCrystals description' text asset to the center of the screen var axeOfGreenCrystalsDescription = new Text2('"Axe of Green Crystals"\n Forging Skill 10k.\n 150 green crystal ingots +\n 3000 clicks on the anvil', { size: 50, fill: 0x000000, alpha: 0.5 // Set transparency }); axeOfGreenCrystalsDescription.anchor.set(0.5, 0.5); axeOfGreenCrystalsDescription.x = 2890 / 2; axeOfGreenCrystalsDescription.y = 2732 / 2 + 200; recipesScreen.addChild(axeOfGreenCrystalsDescription); // Add 'recipesnext' asset to the center of the screen var recipesNext = recipesScreen.attachAsset('recipesnext', { anchorX: 0.5, anchorY: 0.5 //{4F.1} }); //{4G.1} recipesNext.x = 3248 / 2; recipesNext.y = 5000 / 2; // Make the 'recipesnext' asset interactive recipesNext.interactive = true; // Define the 'down' event handler for recipesNext recipesNext.down = function (x, y, obj) { // Create a new screen for the next section var nextScreen = game.addChild(new Container()); // Remove the current background recipesScreen.visible = false; // Add 'recipesnextbackgr1' asset to the center of the screen var recipesNextBackgr1 = nextScreen.attachAsset('recipesnextbackgr1', { anchorX: 0.5, anchorY: 0.5 }); recipesNextBackgr1.x = 2048 / 2; recipesNextBackgr1.y = 2732 / 2; // Add 'recipesprev' asset to the center of the screen var recipesPrev = nextScreen.attachAsset('recipesprev', { anchorX: 0.5, anchorY: 0.5, interactive: true // Make the 'recipesprev' asset interactive }); recipesPrev.x = 888 / 2; recipesPrev.y = 5000 / 2; // Define the 'down' event handler for recipesPrev recipesPrev.down = function (x, y, obj) { // Transition back to the recipes screen nextScreen.visible = false; // Hide the current screen recipesScreen.visible = true; // Show the recipes screen }; // Add 'recipesnext2' asset to the center of the screen var recipesNext2 = nextScreen.attachAsset('recipesnext2', { anchorX: 0.5, anchorY: 0.5 }); recipesNext2.x = 3248 / 2; recipesNext2.y = 5000 / 2; // Add 'redcrystaltwo-handedswordrecipe' asset to the center of the screen var redCrystalTwoHandedSwordRecipe = nextScreen.attachAsset('redcrystaltwo-handedswordrecipe', { anchorX: 0.5, anchorY: 0.5 }); redCrystalTwoHandedSwordRecipe.x = 1248 / 2; redCrystalTwoHandedSwordRecipe.y = 2132 / 2; redCrystalTwoHandedSwordRecipe.down = function () { if (storage.forgingSkill >= 20000 && storage.redCrystalIngotScore >= 250) { redCrystalTwoHandedSwordClicks += 1; } if (redCrystalTwoHandedSwordClicks >= 10000) { redCrystalTwoHandedSwordClicks = 0; storage.redCrystalTwoHandedSwords += 1; // Increment the red crystal two-handed swords count in storage redCrystalTwoHandedSwordsText.setText(storage.redCrystalTwoHandedSwords.toString()); } redCrystalTwoHandedSwordClicksText.setText('(current ' + redCrystalTwoHandedSwordClicks + ')'); storage.redCrystalTwoHandedSwordClicks = redCrystalTwoHandedSwordClicks; }; // Add 'Red Crystal Two-Handed Sword in stock' text asset to the center of the screen var redCrystalTwoHandedSwordsText = new Text2(storage.redCrystalTwoHandedSwords.toString(), { size: 50, fill: 0x000000 // Black color }); redCrystalTwoHandedSwordsText.anchor.set(0.5, 0.5); redCrystalTwoHandedSwordsText.x = 1248 / 2; var redCrystalTwoHandedSwordDescription = new Text2('"Redcrystaltwo-\n handedswordrecipe"\n Forging Skill 20k.\n 250 red crystal ingots +\n 10000 clicks on the anvil', { size: 50, fill: 0x000000 // Black color }); redCrystalTwoHandedSwordDescription.anchor.set(0.5, 0.5); redCrystalTwoHandedSwordDescription.x = 1248 / 2; redCrystalTwoHandedSwordDescription.y = 2732 / 2 + 100; nextScreen.addChild(redCrystalTwoHandedSwordDescription); // Add 'Two-hand Swords in stock' text asset to the center of the screen var twoHandSwordsInStockText = new Text2('Two-hand Swords in stock', { size: 50, fill: 0x000000 // Black color }); twoHandSwordsInStockText.anchor.set(0.5, 0.5); twoHandSwordsInStockText.x = 1248 / 2; twoHandSwordsInStockText.y = redCrystalTwoHandedSwordDescription.y + 200; // Position below the description nextScreen.addChild(twoHandSwordsInStockText); redCrystalTwoHandedSwordsText.y = redCrystalTwoHandedSwordDescription.y + 300; // Position further below the description nextScreen.addChild(redCrystalTwoHandedSwordsText); // Add a new text box with black text under the 'redcrystaltwo-handedswordrecipe' asset var redCrystalTwoHandedSwordClicksText = new Text2('(current ' + redCrystalTwoHandedSwordClicks + ')', { size: 50, fill: 0x000000, alpha: 0.5 }); redCrystalTwoHandedSwordClicksText.anchor.set(0.5, 0.5); redCrystalTwoHandedSwordClicksText.x = 1248 / 2 - 150; redCrystalTwoHandedSwordClicksText.y = 2732 / 2 + 330; nextScreen.addChild(redCrystalTwoHandedSwordClicksText); }; // Hide the current game screen gameScreen.visible = false; }; // Center the 'recipes' asset on the gameScreenBackground recipes.x = gameScreenBackground.width / 2 - 1050; //{3u.1} recipes.y = gameScreenBackground.height / 2 + 150; //{3v.1} // Make the map visible when 'New Game' is clicked map.visible = true; // Hide the main menu newGame.visible = false; continueText.visible = false; // Disable the background background.visible = false; // Create a new instance of the Anvil class var anvil = gameScreen.addChild(new Anvil()); // Initialize the anvil click counter from storage anvil.clickCounter = storage.forgingSkill; counterText.setText('Forging skill: ' + anvil.clickCounter); // Position 'The anvil' at the location of the anvil on the gameScreenBackground anvil.x = gameScreenBackground.x - -20; // Adjust x-coordinate based on the anvil's position on the background anvil.y = gameScreenBackground.y + 500; // Adjust y-coordinate based on the anvil's position on the background // Add a new object 'Magic Nursery' var magicNursery = gameScreen.addChild(new Door()); // Position 'Magic Nursery' to the left and up magicNursery.x = 2048 / 4; magicNursery.y = 2732 / 2.5; hammer = game.addChild(LK.getAsset('hammer', { anchorX: 0.5, anchorY: 0.5, scaleX: -1 })); } // Make the 'New Game' object clickable newGame.interactive = true; newGame.down = function (x, y, obj) { // Reset all saved data storage.forgingSkill = 10000; storage.growthRate = 0; storage.blueCrystalIngotScore = 0; storage.greenCrystalIngotScore = 0; storage.redCristallScore = 0; storage.redCrystalIngotScore = 0; storage.greenCristallScore = 0; storage.greenCrystalIngotScore = 0; storage.blueSwords = 0; // Reset current variables redCrystalIngotScore = 0; blueCristallScore = 0; greenCristallScore = 0; greenCrystalIngotScore = 0; blueCrystalIngotScore = 0; redCristallScore = 0; growthRateCounter = 0; growthRateText.setText('Growth rate: ' + storage.growthRate); counterText.setText('Forging skill: ' + storage.forgingSkill); scoreTxt.setText('Blue Cristall: ' + blueCristallScore); greenScoreTxt.setText('Green Cristall: ' + greenCristallScore); redScoreTxt.setText('Red Cristall: ' + redCristallScore); blueCrystalIngotScoreTxt.setText('BlueCrystalIngot: ' + storage.blueCrystalIngotScore); greenCrystalIngotScoreTxt.setText('GreenCrystalIngot: ' + storage.greenCrystalIngotScore); redCrystalIngotScoreTxt.setText('RedCrystalIngot: ' + storage.redCristallScore); startgame(); }; // Create a new text object to display the click counter var counterText = new Text2('Forging skill: ' + storage.forgingSkill, { size: 50, fill: 0xFFFFFF }); // Position the text object at the top right corner of the screen counterText.anchor.set(0, 0); LK.gui.topLeft.addChild(counterText); counterText.y = 0; counterText.x = 0; growthRateText = new Text2('Growth rate: ' + growthRateCounter, { size: 50, fill: 0xFFFFFF }); growthRateText.anchor.set(0, 0); LK.gui.topLeft.addChild(growthRateText); growthRateText.y = counterText.height - 6; // Move the growth rate text 2 pixels higher growthRateText.x = 0; // Initialize hammer asset var hammer; hammer = game.addChild(LK.getAsset('hammer', { anchorX: 0.5, anchorY: 0.5, scaleX: -1 })); // Function to make the hammer follow the mouse/touch position function updateHammerPosition(x, y) { if (hammer) { hammer.x = x; hammer.y = y; } } if (autominebluecristallClicked) { var intervalId = LK.setInterval(function () { blueCristallScore += 1; LK.setScore(blueCristallScore); storage.blueCristallScore = blueCristallScore; scoreTxt.setText('Blue Cristall: ' + LK.getScore()); }, 1000); } if (autominegreencristallClicked) { var intervalId = LK.setInterval(function () { greenCristallScore += 1; storage.greenCristallScore = greenCristallScore; greenScoreTxt.setText('Green Cristall: ' + greenCristallScore); }, 1000); } if (automineredcristallClicked) { var intervalId = LK.setInterval(function () { redCristallScore += 1; storage.redCristallScore = redCristallScore; redScoreTxt.setText('Red Cristall: ' + redCristallScore); }, 1000); } if (autogrowthRateClicked) { var intervalId = LK.setInterval(function () { growthRateCounter += 1; growthRateText.setText('Growth rate: ' + growthRateCounter); storage.growthRate = growthRateCounter; }, 1000); } if (storage.theBlacksmithsApprentice) { var intervalId = LK.setInterval(function () { storage.forgingSkill += 1; counterText.setText('Forging skill: ' + storage.forgingSkill); }, 1000); } // Make the cursor follow the mouse/touch position game.move = function (x, y, obj) { updateHammerPosition(x, y); }; // Animate cursor rotation on click game.down = function (x, y, obj) { LK.getSound('hammer').play(); tween(hammer, { rotation: -Math.PI / 2 }, { duration: 125, easing: tween.easeInOut, onFinish: function onFinish() { // Create stars around the hammer for 0.25 seconds for (var i = 0; i < 5; i++) { var star = game.addChild(LK.getAsset('star', { anchorX: 0.5, anchorY: 0.5 })); star.x = hammer.x - hammer.width / 2 + Math.random() * 100 - 25; star.y = hammer.y + hammer.height / 2 + Math.random() * 100 - 25; (function (star) { // Make the star move upwards star.update = function () { star.y -= 5; // Move the star upwards by 5 pixels per frame if (star.x < hammer.x) { star.x += 2; // Move the star slightly to the right if on the left side of the hammer } else { star.x -= 2; // Move the star slightly to the left if on the right side of the hammer } }; LK.setTimeout(function () { star.destroy(); }, 250); })(star); } tween(hammer, { rotation: 0 }, { duration: 125, easing: tween.easeInOut }); } }); };
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
forgingSkill: 0,
growthRate: 0,
blueCristallScore: 0,
greenCrystalIngotScore: 0,
blueSwords: 0,
greenAxes: 0,
redCrystalTwoHandedSwords: 0,
blueswordsclick: 0,
greenAxeClicks: 0,
redCrystalTwoHandedSwordClicks: 0,
autominebluecristallClicked: false,
autominegreencristallClicked: false,
autogrowthRateClicked: false,
multiclickupgrade: false,
theBlacksmithsApprentice: false
});
/****
* Classes
****/
// Create a new class for the anvil object
var Anvil = Container.expand(function () {
var self = Container.call(this);
// Attach 'anvil' asset to the 'Anvil' object
var anvilGraphics = self.attachAsset('anvil', {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0.0 // Make the anvil fully transparent
});
// Initialize the click counter
self.clickCounter = storage.forgingSkill;
// Make the 'Anvil' object interactive
self.interactive = true;
// Define the 'down' event handler
self.down = function (x, y, obj) {
// Increment the click counter
self.clickCounter++;
// Add a 5% chance for a multi-click event to increase forging skill by 5
var shans = 0.02;
if (storage.multiclickupgrade) {
shans += 0.02;
}
if (Math.random() < 0.02) {
self.clickCounter += 5;
// Create a new asset at the center of the screen
var newAsset = game.addChild(LK.getAsset('multyclick', {
anchorX: 0.5,
anchorY: 0.5
}));
// Position the new asset at the center of the screen
newAsset.x = 2048 / 2;
newAsset.y = 2732 / 2;
// Animate the scaling of the new asset
tween(newAsset, {
scaleX: 2,
scaleY: 2
}, {
duration: 500,
easing: tween.easeInOut,
onFinish: function onFinish() {
newAsset.destroy(); // Remove the asset after the animation
}
});
}
// Update the text object with the click counter and label
counterText.setText('Forging skill: ' + self.clickCounter);
// Persist the click counter
storage.forgingSkill = self.clickCounter;
// Change the color of the counter text based on the click counter
if (self.clickCounter >= 1000 && self.clickCounter < 2000) {
counterText.tint = 0x00FF00; // Green
} else if (self.clickCounter >= 2000 && self.clickCounter < 15000) {
counterText.tint = 0x0000FF; // Blue
} else if (self.clickCounter >= 15000 && self.clickCounter < 30000) {
counterText.tint = 0x800080; // Purple
} else if (self.clickCounter >= 30000) {
counterText.tint = 0xcc7c04; // Purple
}
};
});
// Create a new class for the BlueCristal object
var BlueCristal = Container.expand(function () {
var self = Container.call(this);
// Attach 'blueCristal' asset to the 'BlueCristal' object
var blueCristalGraphics = self.attachAsset('blueCristal', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true // Make the blueCristal interactive
});
// Define the 'down' event handler for blueCristal
self.down = function (x, y, obj) {
// Increment the score by 1
blueCristallScore += 1100;
LK.setScore(blueCristallScore);
storage.blueCristallScore = blueCristallScore;
// Update the score text
scoreTxt.setText('Blue Cristall: ' + LK.getScore());
scoreTxt.visible = true; // Ensure the score text remains visible
};
});
// Create a new class for the BlueCrystalIngot object
var BlueCrystalIngot = Container.expand(function () {
var self = Container.call(this);
// Attach 'blueCrystalIngot' asset to the 'BlueCrystalIngot' object
var blueCrystalIngotGraphics = self.attachAsset('blueCrystalIngot', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true // Make the blueCrystalIngot interactive
});
// Define the 'down' event handler for blueCrystalIngot
self.down = function (x, y, obj) {
// Logic for what happens when the blueCrystalIngot is clicked
if (blueCristallScore >= 100) {
blueCrystalIngotScore += 1; //{y.1}
storage.growthRate += 10; // Increment growth rate by 10
growthRateText.setText('Growth rate: ' + storage.growthRate); // Update the growth rate display
blueCrystalIngotScoreTxt.setText('BlueCrystalIngot: ' + blueCrystalIngotScore); //{y.2}
storage.blueCrystalIngotScore = blueCrystalIngotScore;
blueCristallScore -= 100;
if (blueCristallScore < 0) {
blueCristallScore = 0;
}
storage.blueCristallScore = blueCristallScore; // Persist the decrement
LK.setScore(blueCristallScore);
scoreTxt.setText('Blue Cristall: ' + LK.getScore());
}
};
});
// Create a new class for the Door object
var Door = Container.expand(function () {
var self = Container.call(this);
// Attach 'Door' asset to the 'Door' object
var doorGraphics = self.attachAsset('Door', {
anchorX: 0.5,
anchorY: 0.5
});
// Make the 'Door' object interactive
self.interactive = true;
// Define the 'down' event handler
self.down = function (x, y, obj) {
LK.getSound('doors').play();
// Remove the existing hammer
hammer.destroy();
// Create a new screen
game.magicNursery = game.addChild(new Container());
// Attach 'magicNurseryBackground' asset to the 'magicNursery' object
var magicNurseryBackground = game.magicNursery.attachAsset('magicNurseryBackground', {
anchorX: 0.5,
anchorY: 0.5,
interactive: false,
// Disable interactivity to prevent blurring on click
scaleX: 2,
// Double the size horizontally
scaleY: 2 // Double the size vertically
});
// Recreate the hammer asset
magicNurseryBackground.x = 2048 / 2;
magicNurseryBackground.y = 2732 / 2;
// Attach 'ForgeOfMatter' asset to the 'magicNursery' object
var forgeOfMatter = game.magicNursery.attachAsset('ForgeOfMatter', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true,
scaleX: 3,
// Increase the size horizontally
scaleY: 3,
// Increase the size vertically
alpha: 0.0 // Make the ForgeOfMatter fully transparent
});
// Create and add a new instance of the BlueCrystalIngot class
var blueCrystalIngot = game.magicNursery.addChild(new BlueCrystalIngot()); //{P.1}
// Position the blueCrystalIngot asset in the bottom-left corner
blueCrystalIngot.x = 200 + blueCrystalIngot.width / 2;
blueCrystalIngot.y = 2500 - blueCrystalIngot.height / 2;
// Create and add a new instance of the RedCrystalIngot class
var redCrystalIngot = game.magicNursery.addChild(new RedCrystalIngot());
// Center the redCrystalIngot asset in the magicNursery screen
redCrystalIngot.x = 1300 / 2;
redCrystalIngot.y = 4930 / 2;
// Create and add a new instance of the GreenCrystalIngot class
var greenCrystalIngotInstance = game.magicNursery.addChild(new GreenCrystalIngot());
// Position the greenCrystalIngotInstance asset to the right of the blueCrystalIngot asset
greenCrystalIngotInstance.x = blueCrystalIngot.x + blueCrystalIngot.width + greenCrystalIngotInstance.width / 2 + 40;
greenCrystalIngotInstance.y = blueCrystalIngot.y;
// Initialize the click counter for ForgeOfMatter
forgeOfMatter.clickCounter = 0;
// Initialize the growth rate click counter from the global growthRateCounter
forgeOfMatter.clickCounter = growthRateCounter;
growthRateText.setText('Growth rate: ' + forgeOfMatter.clickCounter);
// Center the growthRate asset in the magicNursery screen
var growthRate = game.magicNursery.addChild(LK.getAsset('growthRate', {
anchorX: 0.5,
anchorY: 0.5
}));
growthRate.x = 700;
growthRate.y = 1450;
// Define the 'down' event handler for ForgeOfMatter
forgeOfMatter.down = function (x, y, obj) {
// Increment the click counter
forgeOfMatter.clickCounter++;
// Update the text object with the click counter and label
growthRateText.setText('Growth rate: ' + forgeOfMatter.clickCounter);
// Persist the click counter to the global growthRateCounter
growthRateCounter = forgeOfMatter.clickCounter;
storage.growthRate = growthRateCounter;
};
forgeOfMatter.x = 1100 / 1.5;
forgeOfMatter.y = 2000 / 1.5;
// Add a new counter to the ForgeOfMatter object
growthRateText.setText('Growth rate: ' + forgeOfMatter.clickCounter);
growthRateText.visible = true;
// Hide the game screen
gameScreen.visible = false;
// Show the forging skill counter when transitioning to magicNursery
counterText.visible = true;
// Hide the map when switching to the magic nursery screen
map.visible = false;
// Add a new object 'Door2'
var door2 = game.magicNursery.addChild(new Door2());
// Position 'Door2' to the right, between the center and the edge of the screen
door2.x = 2048 * 0.75;
door2.y = 2732 * 0.9;
hammer = game.addChild(LK.getAsset('hammer', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: -1
}));
};
});
// Create a new class for the Door2 object
var Door2 = Container.expand(function () {
var self = Container.call(this);
// Attach 'Door' asset to the 'Door2' object
var doorGraphics = self.attachAsset('Door', {
anchorX: 0.5,
anchorY: 0.5
});
// Make the 'Door2' object interactive
self.interactive = true;
// Define the 'down' event handler
self.down = function (x, y, obj) {
LK.getSound('doors').play();
// Remove the existing hammer
hammer.destroy();
// Show the Anvil screen
gameScreen.visible = true;
// Show the map only on the anvil screen
map.visible = true;
// Show the counter display
counterText.visible = true;
// Hide the Magic Nursery screen
game.magicNursery.visible = false;
// Show the Growth rate counter when transitioning to anvil
growthRateText.visible = true;
// Recreate the hammer asset
hammer = game.addChild(LK.getAsset('hammer', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: -1
}));
};
});
// Create a new class for the GreenAxe object
var GreenAxe = Container.expand(function () {
var self = Container.call(this);
// Attach 'axeOfGreenCrystalsRecipe' asset to the 'GreenAxe' object
var greenAxeGraphics = self.attachAsset('axeOfGreenCrystalsRecipe', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true // Make the greenAxe interactive
});
// Define the 'down' event handler for greenAxe
self.down = function (x, y, obj) {
if (storage.forgingSkill >= 10000 && storage.greenCrystalIngotScore >= 150) {
greenAxeClicks += 1000;
}
if (greenAxeClicks >= 3000) {
greenAxeClicks = 0;
storage.greenAxes += 1; // Increment the green axes count in storage
greenAxesText.setText(storage.greenAxes.toString());
}
greenAxeClicksText.setText('(current ' + greenAxeClicks + ')');
storage.greenAxeClicks = greenAxeClicks;
};
});
// Create a new class for the GreenCristal object
var GreenCristal = Container.expand(function () {
var self = Container.call(this);
// Attach 'greenCristal' asset to the 'GreenCristal' object
var greenCristalGraphics = self.attachAsset('greenCristal', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true // Make the greenCristal interactive
});
// Define the 'down' event handler for greenCristal
self.down = function (x, y, obj) {
// Increment the score by 1
greenCristallScore += 1000;
LK.setScore(greenCristallScore);
storage.greenCristallScore = greenCristallScore;
// Update the score text
greenScoreTxt.setText('Green Cristall: ' + greenCristallScore);
greenScoreTxt.visible = true; // Ensure the score text remains visible
};
});
// Create a new class for the GreenCrystalIngot object
var GreenCrystalIngot = Container.expand(function () {
var self = Container.call(this);
// Attach 'greenCrystalIngot' asset to the 'GreenCrystalIngot' object
var greenCrystalIngotGraphics = self.attachAsset('greenCrystalIngot', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true // Make the greenCrystalIngot interactive
});
// Define the 'down' event handler for greenCrystalIngot
self.down = function (x, y, obj) {
if (greenCristallScore >= 100) {
storage.growthRate += 10; // Increment growth rate by 10
growthRateText.setText('Growth rate: ' + storage.growthRate); // Update the growth rate display
// Increment the GreenCrystalIngot score by 1
greenCrystalIngotScore += 1;
greenCrystalIngotScoreTxt.setText('GreenCrystalIngot: ' + greenCrystalIngotScore);
storage.greenCrystalIngotScore = greenCrystalIngotScore;
// Decrement the GreenCristal score by 100
greenCristallScore -= 100;
if (greenCristallScore < 0) {
greenCristallScore = 0;
}
storage.greenCristallScore = greenCristallScore; // Persist the decrement
greenScoreTxt.setText('Green Cristall: ' + greenCristallScore);
}
};
});
// Create a new class for the RecipesScreen object
var RecipesScreen = Container.expand(function () {
var self = Container.call(this);
// Attach 'recipesout' asset to the 'RecipesScreen' object
var recipesOutGraphics = self.attachAsset('recipesout', {
anchorX: 0.5,
anchorY: 0.5
});
// Center the 'recipesout' asset on the screen
recipesOutGraphics.x = 2048 / 2;
recipesOutGraphics.y = 2732 / 2 + 1100;
// Make the 'recipesout' asset interactive
recipesOutGraphics.interactive = true;
// Define the 'down' event handler for recipesOutGraphics
recipesOutGraphics.down = function (x, y, obj) {
LK.getSound('booksaudio').play();
// Hide the 'recipesout' asset
recipesOutGraphics.visible = false;
// Transition to the 'gameScreen'
gameScreen.visible = true;
// Make the map visible after transitioning to the recipesout screen
map.visible = true;
// Hide the current recipes screen
self.visible = false;
};
});
// Create a new class for the RedCristal object
var RedCristal = Container.expand(function () {
var self = Container.call(this);
// Attach 'redCristal' asset to the 'RedCristal' object
var redCristalGraphics = self.attachAsset('redCristal', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true // Make the redCristal interactive
});
// Define the 'down' event handler for redCristal
self.down = function (x, y, obj) {
// Increment the score by 1
redCristallScore += 1000;
LK.setScore(redCristallScore);
storage.redCristallScore = redCristallScore;
// Update the score text
redScoreTxt.setText('Red Cristall: ' + redCristallScore);
redScoreTxt.visible = true; // Ensure the score text remains visible
};
});
// Create a new class for the RedCrystalIngot object
var RedCrystalIngot = Container.expand(function () {
var self = Container.call(this);
// Attach 'redCristalIngot' asset to the 'RedCrystalIngot' object
var redCrystalIngotGraphics = self.attachAsset('redCristalIngot', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true // Make the redCrystalIngot interactive
});
// Define the 'down' event handler for redCrystalIngot
self.down = function (x, y, obj) {
// Decrement the RedCristal score by 100
if (redCristallScore >= 100) {
// Increment the RedCrystalIngot score by 1
redCrystalIngotScore += 1;
storage.growthRate += 20; // Increment growth rate by 20
growthRateText.setText('Growth rate: ' + storage.growthRate); // Update the growth rate display
redCrystalIngotScoreTxt.setText('RedCrystalIngot: ' + redCrystalIngotScore);
storage.redCrystalIngotScore = redCrystalIngotScore;
redCristallScore -= 100;
storage.redCristallScore = redCristallScore; // Persist the decrement
redScoreTxt.setText('Red Cristall: ' + redCristallScore);
}
};
});
var RedCrystalTwoHandedSword = Container.expand(function () {
var self = Container.call(this);
// Attach 'redcrystaltwo-handedswordrecipe' asset to the 'RedCrystalTwoHandedSword' object
var redCrystalTwoHandedSwordGraphics = self.attachAsset('redcrystaltwo-handedswordrecipe', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true // Make the redCrystalTwoHandedSword interactive
});
// Define the 'down' event handler for redCrystalTwoHandedSword
self.down = function (x, y, obj) {
if (storage.forgingSkill >= 20000 && storage.redCrystalIngotScore >= 250) {
redCrystalTwoHandedSwordClicks += 1;
redCrystalTwoHandedSwordClicksText.setText('(current ' + redCrystalTwoHandedSwordClicks + ')');
if (redCrystalTwoHandedSwordClicks >= 10000) {
redCrystalTwoHandedSwordClicks = 0;
storage.redCrystalTwoHandedSwords += 1; // Increment the red crystal two-handed swords count in storage
redCrystalTwoHandedSwordsText.setText(storage.redCrystalTwoHandedSwords.toString());
}
}
if (redCrystalTwoHandedSwordClicks >= 10000) {
redCrystalTwoHandedSwordClicks = 0;
storage.redCrystalTwoHandedSwords += 250; // Increment the red crystal two-handed swords count in storage
redCrystalTwoHandedSwordsText.setText(storage.redCrystalTwoHandedSwords.toString());
}
redCrystalTwoHandedSwordClicksText.setText('(current ' + redCrystalTwoHandedSwordClicks + ')');
storage.redCrystalTwoHandedSwordClicks = redCrystalTwoHandedSwordClicks;
};
});
/****
* Initialize Game
****/
// Create a new text object to display the click counter
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
//{0.1}
var goldScore = storage.goldScore || 0;
var goldScoreTxt = new Text2('Gold: ' + goldScore, {
size: 50,
fill: 0xFFFFFF
});
goldScoreTxt.anchor.set(0, 0);
goldScoreTxt.y = 0;
if (typeof counterText !== 'undefined') {
goldScoreTxt.x = counterText.width + 10; // Position to the right of the Forging skill counter
} else {
goldScoreTxt.x = 550; // Default position if counterText is undefined
}
LK.gui.topLeft.addChild(goldScoreTxt);
var redCrystalIngotScore = storage.redCrystalIngotScore || 0;
var redCrystalIngotScoreTxt = new Text2('RedCrystalIngot: ' + redCrystalIngotScore, {
size: 50,
fill: 0xFFFFFF
});
redCrystalIngotScoreTxt.anchor.set(1, 0);
redCrystalIngotScoreTxt.y = 100; // Position below the GreenCrystalIngot score
LK.gui.topRight.addChild(redCrystalIngotScoreTxt);
//{0.1}
// Removed the 'current underfiend' text from the screen
var mineInsideBackground;
var blueCristallScore = storage.blueCristallScore || 0;
var autominebluecristallClicked = storage.autominebluecristallClicked;
var autominegreencristallClicked = storage.autominegreencristallClicked;
var autominegreencristallClicked = storage.autominegreencristallClicked;
var automineredcristallClicked = storage.automineredcristallClicked;
var autogrowthRateClicked = storage.autogrowthRateClicked;
var scoreTxt = new Text2('Blue Cristall: ' + blueCristallScore, {
size: 50,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0, 0);
scoreTxt.y = 100; // Move the score text 100 pixels down
LK.gui.topLeft.addChild(scoreTxt);
var greenCristallScore = storage.greenCristallScore || 0;
var greenScoreTxt = new Text2('Green Cristall: ' + greenCristallScore, {
size: 50,
fill: 0xFFFFFF
});
greenScoreTxt.anchor.set(0, 0);
greenScoreTxt.y = 150; // Position below the Blue Cristall score
LK.gui.topLeft.addChild(greenScoreTxt);
var greenCrystalIngotScore = storage.greenCrystalIngotScore || 0;
var greenCrystalIngotScoreTxt = new Text2('GreenCrystalIngot: ' + greenCrystalIngotScore, {
size: 50,
fill: 0xFFFFFF
});
greenCrystalIngotScoreTxt.anchor.set(1, 0);
greenCrystalIngotScoreTxt.y = 50; // Position below the BlueCrystalIngot score
LK.gui.topRight.addChild(greenCrystalIngotScoreTxt);
var blueCristal; // Define blueCristal in the global scope to fix the reference error
var greenCristal; // Define greenCristal in the global scope to fix the reference error
var redCristal; // Define redCristal in the global scope to fix the reference error
var blueCrystalIngotScore = storage.blueCrystalIngotScore || 0; //{1Z.1}
var blueSwordsText = new Text2(storage.blueSwords.toString(), {
size: 50,
fill: 0x000000 // Black color
});
blueSwordsText.anchor.set(0.5, 0.5);
blueSwordsText.x = 1248 / 2;
blueSwordsText.y = 2732 / 2 + 450; // Position below the 'Swords in stock' text
LK.gui.topLeft.addChild(blueSwordsText);
var redCristallScore = storage.redCristallScore || 0;
var blueCrystalIngotScoreTxt = new Text2('BlueCrystalIngot: ' + blueCrystalIngotScore, {
size: 50,
fill: 0xFFFFFF
});
blueCrystalIngotScoreTxt.anchor.set(1, 0);
blueCrystalIngotScoreTxt.y = 0;
LK.gui.topRight.addChild(blueCrystalIngotScoreTxt);
var redScoreTxt = new Text2('Red Cristall: ' + redCristallScore, {
size: 50,
fill: 0xFFFFFF
});
redScoreTxt.anchor.set(0, 0);
redScoreTxt.y = 200; // Position below the Green Cristall score
LK.gui.topLeft.addChild(redScoreTxt);
var map = game.addChild(LK.getAsset('Map', {
anchorX: 0.5,
anchorY: 0.5
}));
map.x = 400;
map.y = 2450;
map.visible = false; // Initialize the map as invisible
// Make the map interactive
map.interactive = true;
// Define the 'down' event handler for the map
map.down = function (x, y, obj) {
// Hide the map asset when transitioning to the map screen
LK.getSound('mapaudio').play();
map.visible = false;
// Hide the mineInsideBackground if it exists
if (mineInsideBackground) {
mineInsideBackground.visible = false;
mineInsideBackground.destroy(); // Ensure it is completely removed
}
if (redCristal) {
redCristal.visible = false; //{1Z.1}
redCristal.destroy(); // Ensure it is completely removed
} //{1Z.3}
if (blueCristal) {
blueCristal.visible = false; //{1X.1}
blueCristal.destroy(); // Ensure it is completely removed
} //{1X.3}
if (greenCristal) {
greenCristal.visible = false; //{1Y.1}
greenCristal.destroy(); // Ensure it is completely removed
} //{1Y.3}
var mapScreen = game.addChild(new Container());
// Attach 'mapbackground' asset to the mapScreen
var mapBackground = mapScreen.attachAsset('mapbackground', {
anchorX: 0.5,
//{1h.1}
anchorY: 0.5,
//{1h.2}
interactive: false // Ensure mapbackground does not block cursor interaction
}); //{1h.3}
// Add 'citymap' asset to the center of the screen
var cityMap = mapScreen.attachAsset('citymap', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true // Make the 'citymap' asset interactive
});
cityMap.x = -250;
cityMap.y = 160;
// Define the 'down' event handler for cityMap
cityMap.down = function (x, y, obj) {
// Create a new screen without background
var isolatedScreen = game.addChild(new Container());
// Hide the current map screen
mapScreen.visible = false;
// Add 'citybackground' asset to the center of the isolatedScreen
var cityBackground = isolatedScreen.attachAsset('citybackground', {
anchorX: 0.5,
anchorY: 0.5
});
cityBackground.x = 0;
cityBackground.y = 0;
// Add 'map' asset to the isolatedScreen
var mapAsset = isolatedScreen.attachAsset('Map', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true // Make the 'map' asset interactive
});
mapAsset.x = -650;
mapAsset.y = 1100;
// Define the 'down' event handler for mapAsset
mapAsset.down = function (x, y, obj) {
// Transition back to the citymap screen
isolatedScreen.visible = false; // Hide the current isolated screen
mapScreen.visible = true; // Show the citymap screen
cityBackground.visible = false; // Ensure citybackground is hidden
};
// Add 'shop' asset to the center of the isolatedScreen
var shop = isolatedScreen.attachAsset('shop', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true // Make the 'shop' asset interactive
});
shop.x = 490;
shop.y = -100;
// Define the 'down' event handler for shop
shop.down = function (x, y, obj) {
LK.getSound('shopin').play();
// Create a new screen without background
var shopScreen = game.addChild(new Container());
// Hide the current isolated screen
isolatedScreen.visible = false;
// Position the shopScreen at the center
shopScreen.x = 2048 / 2;
shopScreen.y = 2732 / 2;
// Add 'new tools' asset to the center of the shopScreen
var newTools = shopScreen.attachAsset('newTools', {
anchorX: 0.5,
anchorY: 0.5
});
newTools.x = -650;
newTools.y = 1100;
newTools.interactive = true; // Make the newTools asset interactive
newTools.down = function (x, y, obj) {
// Create a new isolated screen without a background
var isolatedScreen = game.addChild(new Container());
// Attach 'newToolsBackground' asset to the isolatedScreen
var newToolsBackground = isolatedScreen.attachAsset('newToolsBackground', {
anchorX: 0.5,
anchorY: 0.5
});
newToolsBackground.x = 0;
newToolsBackground.y = 0;
if (!storage.theBlacksmithsApprentice) {
// Attach 'Theblacksmithsapprentice' asset to the center of the isolatedScreen
var theBlacksmithsApprentice = isolatedScreen.attachAsset('Theblacksmithsapprentice', {
anchorX: 0.5,
//{4C.1}
anchorY: 0.5,
//{4C.2}
interactive: true // Make the Theblacksmithsapprentice interactive
}); //{4C.3}
theBlacksmithsApprentice.x = 400;
theBlacksmithsApprentice.y = 200;
theBlacksmithsApprentice.clicked = storage.theBlacksmithsApprentice;
// Define the 'down' event handler for theBlacksmithsApprentice
theBlacksmithsApprentice.down = function (x, y, obj) {
// Increment forgingSkill by 1 every second
if (goldScore >= 1500 && !theBlacksmithsApprentice.clicked) {
goldScore -= 1500;
goldScoreTxt.setText('Gold: ' + goldScore);
storage.goldScore = goldScore;
theBlacksmithsApprentice.clicked = true;
var intervalId = LK.setInterval(function () {
storage.forgingSkill += 1;
counterText.setText('Forging skill: ' + storage.forgingSkill);
}, 1000);
// Store the intervalId in the theBlacksmithsApprentice object for potential future use
theBlacksmithsApprentice.intervalId = intervalId;
storage.theBlacksmithsApprentice = true;
}
};
// Add text "The blacksmith's apprentice +1" below the Theblacksmithsapprentice asset
var apprenticeText = new Text2("The blacksmith's \napprentice +1", {
size: 50,
fill: 0x030303
});
apprenticeText.anchor.set(0.5, 0.5);
apprenticeText.x = theBlacksmithsApprentice.x;
apprenticeText.y = theBlacksmithsApprentice.y + 170; // Position below the Theblacksmithsapprentice asset
isolatedScreen.addChild(apprenticeText);
// Add text "1500G" below the 'The blacksmith's apprentice +1' text
var apprenticeCostText = new Text2('1500G', {
size: 50,
fill: 0x030303
});
apprenticeCostText.anchor.set(0.5, 0.5);
apprenticeCostText.x = apprenticeText.x;
apprenticeCostText.y = apprenticeText.y + 70; // Position below the 'The blacksmith's apprentice +1' text
isolatedScreen.addChild(apprenticeCostText);
}
// Attach 'newToolsout' asset to the center of the isolatedScreen
var newToolsOut = isolatedScreen.attachAsset('newToolsout', {
anchorX: 0.5,
anchorY: 0.5
});
newToolsOut.x = 0;
newToolsOut.y = 1200;
newToolsOut.interactive = true; // Make the newToolsOut asset interactive//{4F.1}
if (!storage.autominebluecristallClicked) {
// Attach 'autominebluecristall' asset to the center of the isolatedScreen
var autominebluecristall = isolatedScreen.attachAsset('autominebluecristall', {
anchorX: 0.5,
//{4F.2}
anchorY: 0.5,
//{4F.3}
interactive: true // Make the autominebluecristall interactive
}); //{4F.4}
autominebluecristall.x = -400;
autominebluecristall.y = -600;
autominebluecristall.clicked = storage.autominebluecristallClicked;
// Define the 'down' event handler for autominebluecristall
autominebluecristall.down = function (x, y, obj) {
// Increment blueCristallScore by 1 every second
if (goldScore >= 500 && !autominebluecristall.clicked) {
autominebluecristall.clicked = true;
goldScore -= 500;
goldScoreTxt.setText('Gold: ' + goldScore);
storage.goldScore = goldScore;
var intervalId = LK.setInterval(function () {
blueCristallScore += 1;
LK.setScore(blueCristallScore);
storage.blueCristallScore = blueCristallScore;
scoreTxt.setText('Blue Cristall: ' + LK.getScore());
}, 1000);
// Store the intervalId in the autominebluecristall object for potential future use
autominebluecristall.intervalId = intervalId;
storage.autominebluecristallClicked = true; // Persist the click state
}
};
// Add text "Mine Blue Cristall +1" below the autominebluecristall asset
var mineBlueCristallText = new Text2('Mine Blue Cristall +1', {
size: 50,
fill: 0x030303
});
mineBlueCristallText.anchor.set(0.5, 0.5);
mineBlueCristallText.x = autominebluecristall.x;
mineBlueCristallText.y = autominebluecristall.y + 150; // Position below the autominebluecristall asset
isolatedScreen.addChild(mineBlueCristallText);
// Add text "500G" below the 'Mine Blue Cristall +1' text
var mineBlueCristallCostText = new Text2('500G', {
size: 50,
//{58.1}
fill: 0x030303 //{58.2}
}); //{58.3}
mineBlueCristallCostText.anchor.set(0.5, 0.5);
mineBlueCristallCostText.x = mineBlueCristallText.x;
mineBlueCristallCostText.y = mineBlueCristallText.y + 50; // Position below the 'Mine Blue Cristall +1' text
isolatedScreen.addChild(mineBlueCristallCostText);
}
if (!storage.autominegreencristallClicked) {
// Attach 'autominegreencristall' asset to the center of the isolatedScreen
var autominegreencristall = isolatedScreen.attachAsset('autominegreencristall', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true // Make the autominegreencristall interactive
});
autominegreencristall.x = -400;
autominegreencristall.y = -200;
// Define the 'down' event handler for autominegreencristall
autominegreencristall.clicked = storage.autominegreencristallClicked;
autominegreencristall.down = function (x, y, obj) {
// Increment greenCristallScore by 1 every second
if (goldScore >= 1000 && !autominegreencristall.clicked) {
autominegreencristall.clicked = true;
goldScore -= 1000;
goldScoreTxt.setText('Gold: ' + goldScore);
storage.goldScore = goldScore;
var intervalId = LK.setInterval(function () {
greenCristallScore += 1;
storage.greenCristallScore = greenCristallScore;
greenScoreTxt.setText('Green Cristall: ' + greenCristallScore);
}, 1000);
// Store the intervalId in the autominegreencristall object for potential future use
autominegreencristall.intervalId = intervalId;
storage.autominegreencristallClicked = true; // Persist the click state
}
};
// Add text "Mine Green Cristall +1" below the autominegreencristall asset
var mineGreenCristallText = new Text2('Mine Green Cristall +1', {
size: 50,
fill: 0x030303
});
mineGreenCristallText.anchor.set(0.5, 0.5);
mineGreenCristallText.x = autominegreencristall.x;
mineGreenCristallText.y = autominegreencristall.y + 150; // Lower the position below the autominegreencristall asset
isolatedScreen.addChild(mineGreenCristallText);
// Add text "1000G" below the 'Mine Green Cristall +1' text
var mineGreenCristallCostText = new Text2('1000G', {
size: 50,
//{5c.1}
fill: 0x030303 //{5c.2}
}); //{5c.3}
mineGreenCristallCostText.anchor.set(0.5, 0.5);
mineGreenCristallCostText.x = mineGreenCristallText.x;
mineGreenCristallCostText.y = mineGreenCristallText.y + 50; // Position below the 'Mine Green Cristall +1' text
isolatedScreen.addChild(mineGreenCristallCostText);
}
if (!storage.automineredcristallClicked) {
// Attach 'automineredcristall' asset to the center of the isolatedScreen
var automineredcristall = isolatedScreen.attachAsset('automineredcristall', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true // Make the automineredcristall interactive
});
automineredcristall.x = -400;
automineredcristall.y = 200;
// Define the 'down' event handler for automineredcristall
automineredcristall.down = function (x, y, obj) {
// Increment redCristallScore by 1 every second
if (goldScore >= 2000 && !automineredcristall.clicked) {
automineredcristall.clicked = true;
goldScore -= 2000;
goldScoreTxt.setText('Gold: ' + goldScore);
storage.goldScore = goldScore;
var intervalId = LK.setInterval(function () {
redCristallScore += 1;
storage.redCristallScore = redCristallScore;
redScoreTxt.setText('Red Cristall: ' + redCristallScore);
}, 1000);
// Store the intervalId in the automineredcristall object for potential future use
automineredcristall.intervalId = intervalId;
storage.automineredcristallClicked = true; // Persist the click state
mineRedCristallText.visible = false; // Hide the mineRedCristallText
}
};
// Add text "Mine Red Cristall +1" below the automineredcristall asset
var mineRedCristallText = new Text2('Mine Red Cristall +1', {
size: 50,
fill: 0x030303
});
mineRedCristallText.anchor.set(0.5, 0.5);
mineRedCristallText.x = automineredcristall.x;
mineRedCristallText.y = automineredcristall.y + 140; // Position below the automineredcristall asset
isolatedScreen.addChild(mineRedCristallText);
// Add text "2000G" below the 'Mine Red Cristall +1' text
var mineRedCristallCostText = new Text2('2000G', {
size: 50,
//{55.1}
fill: 0x030303 //{55.2}
}); //{55.3}
mineRedCristallCostText.anchor.set(0.5, 0.5);
mineRedCristallCostText.x = mineRedCristallText.x;
mineRedCristallCostText.y = mineRedCristallText.y + 50; // Position below the 'Mine Red Cristall +1' text
isolatedScreen.addChild(mineRedCristallCostText);
}
if (!storage.multiclickupgrade) {
// Attach 'multiclickupgrade' asset to the center of the isolatedScreen
var multiclickupgrade = isolatedScreen.attachAsset('multiclickupgrade', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true // Make the multiclickupgrade interactive
});
multiclickupgrade.x = 400;
multiclickupgrade.y = -200;
// Define the 'down' event handler for multiclickupgrade
multiclickupgrade.down = function (x, y, obj) {
// Deduct 700 gold when clicked
if (goldScore >= 700 && !storage.multiclickupgrade) {
goldScore -= 700;
goldScoreTxt.setText('Gold: ' + goldScore);
storage.goldScore = goldScore;
storage.multiclickupgrade = true;
}
};
// Add text "Increased chance of successful forging +5%" below the multiclickupgrade asset
var increasedChanceText = new Text2('Increased chance of \nsuccessful forging +5%', {
size: 50,
fill: 0x030303
});
increasedChanceText.anchor.set(0.5, 0.5);
increasedChanceText.x = multiclickupgrade.x;
increasedChanceText.y = multiclickupgrade.y + 170; // Position below the multiclickupgrade asset
isolatedScreen.addChild(increasedChanceText);
// Add text "700G" below the 'Increased chance of successful forging +5%' text
var increasedChanceCostText = new Text2('700G', {
size: 50,
//{4Z.1}
fill: 0x030303 //{4Z.2}
}); //{4Z.3}
increasedChanceCostText.anchor.set(0.5, 0.5);
increasedChanceCostText.x = increasedChanceText.x;
increasedChanceCostText.y = increasedChanceText.y + 70; // Position below the 'Increased chance of successful forging +5%' text
isolatedScreen.addChild(increasedChanceCostText);
}
if (!storage.autogrowthRateClicked) {
// Attach 'autogrowthRate' asset to the center of the isolatedScreen
var autogrowthRate = isolatedScreen.attachAsset('autogrowthRate', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true // Make the autogrowthRate interactive
});
autogrowthRate.x = 400;
autogrowthRate.y = -600;
autogrowthRate.clicked = storage.autogrowthRateClicked;
// Define the 'down' event handler for autogrowthRate
autogrowthRate.down = function (x, y, obj) {
// Increment growthRateCounter by 1 every second
if (goldScore >= 2000 && !autogrowthRate.clicked) {
autogrowthRate.clicked = true;
goldScore -= 2000;
goldScoreTxt.setText('Gold: ' + goldScore);
storage.goldScore = goldScore;
var intervalId = LK.setInterval(function () {
growthRateCounter += 1;
growthRateText.setText('Growth rate: ' + growthRateCounter);
storage.growthRate = growthRateCounter;
}, 1000);
// Store the intervalId in the autogrowthRate object for potential future use
autogrowthRate.intervalId = intervalId;
storage.autogrowthRateClicked = true; // Persist the click state
}
};
// Add text "Automatic melting +1" below the autogrowthRate asset
var automaticMeltingText = new Text2('Automatic melting +1', {
size: 50,
fill: 0x030303
});
automaticMeltingText.anchor.set(0.5, 0.5);
automaticMeltingText.x = autogrowthRate.x;
automaticMeltingText.y = autogrowthRate.y + 150; // Position below the autogrowthRate asset
isolatedScreen.addChild(automaticMeltingText);
// Add text "2000G" below the 'Automatic melting +1' text
var automaticMeltingCostText = new Text2('2000G', {
size: 50,
fill: 0x030303
});
automaticMeltingCostText.anchor.set(0.5, 0.5);
automaticMeltingCostText.x = automaticMeltingText.x;
automaticMeltingCostText.y = automaticMeltingText.y + 50; // Position below the 'Automatic melting +1' text
isolatedScreen.addChild(automaticMeltingCostText);
}
newToolsOut.down = function (x, y, obj) {
LK.getSound('booksaudio').play();
// Transition to the newTools screen
isolatedScreen.visible = false; // Hide the current isolated screen
shopScreen.visible = true; // Show the newTools screen
};
// Hide the current shop screen
shopScreen.visible = false;
// Position the isolatedScreen at the center
isolatedScreen.x = 2048 / 2;
isolatedScreen.y = 2732 / 2;
};
// Add 'new buildings' asset to the center of the shopScreen
var newBuildings = shopScreen.attachAsset('sellweapons', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true // Make the 'sellweapons' asset interactive
});
// Define the 'down' event handler for sellweapons
newBuildings.down = function (x, y, obj) {
console.log("Sell weapons asset clicked at", x, y);
// Reset 'Swords in stock' counter and add +100 to Gold for each sword
goldScore += storage.blueSwords * 100;
storage.blueSwords = 0;
blueSwordsText.setText(storage.blueSwords.toString());
goldScoreTxt.setText('Gold: ' + goldScore);
storage.goldScore = goldScore;
};
newBuildings.x = 0;
newBuildings.y = 1100;
// Add 'shopout' asset to the shopScreen
var shopBackground = shopScreen.attachAsset('shopbackground', {
anchorX: 0.5,
anchorY: 0.5
});
shopBackground.x = 0;
shopBackground.y = 0;
// Add 'shopout' asset to the shopScreen
var shopOut = shopScreen.attachAsset('shopout', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true // Make the 'shopout' asset interactive
});
shopOut.x = 650;
shopOut.y = 1100;
// Define the 'down' event handler for shopOut
shopOut.down = function (x, y, obj) {
LK.getSound('doors').play();
shopScreen.visible = false; // Hide the current shop screen
mapBackground.visible = false; // Ensure the mapbackground asset is hidden
mapScreen.visible = true; // Show the citymap screen
isolatedScreen.visible = true; // Ensure the isolated screen is visible
};
};
// Position the isolatedScreen at the center
isolatedScreen.x = 2048 / 2;
isolatedScreen.y = 2732 / 2;
};
// Attach 'anvilmap' asset to the mapScreen on the top layer
var anvilMap = mapScreen.attachAsset('anvilmap', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true
});
// Attach 'mine' asset to the mapScreen on the top layer
var mine = mapScreen.attachAsset('mine', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true
});
mine.x -= 150; // Move the mine asset 150 pixels to the left
mine.y -= 150; // Move the mine asset 150 pixels higher
// Make mine interactive and define the 'down' event handler
mine.down = function (x, y, obj) {
// Create a new screen for the mine
var mineScreen = game.addChild(new Container());
// Make the map visible after transitioning to the mine screen
map.visible = true;
// Hide the current map screen
mapScreen.visible = false;
// Disable the active background
background.visible = false;
// Attach 'mineinsidebackground' asset to the mineScreen on the bottom layer
mineInsideBackground = mineScreen.attachAsset('mineinsidebackground', {
anchorX: 0.5,
anchorY: 0.5,
interactive: false,
zIndex: -1 // Ensure it is on the bottom layer
});
// Create and add a new instance of the RedCristal class
redCristal = mineScreen.addChild(new RedCristal());
// Position the redCristal asset
redCristal.x -= 510; // Move 100 pixels to the left
redCristal.y += 490; // Move 100 pixels lower
// Create and add a new instance of the GreenCristal class
greenCristal = mineScreen.addChild(new GreenCristal());
// Position the greenCristal asset
greenCristal.x -= -510; // Move 100 pixels to the left
greenCristal.y += 10; // Move 100 pixels lower
// Create and add a new instance of the BlueCristal class
blueCristal = mineScreen.addChild(new BlueCristal());
// Position the blueCristal asset
blueCristal.x += 490; // Move 100 pixels to the right
blueCristal.y += -60; // Move 100 pixels lower
// Position the blueCristal asset
blueCristal.x -= 410; // Move 100 pixels to the left
blueCristal.y -= 310; // Move 100 pixels lower
// Position the mineScreen at the center
mineScreen.x = 2048 / 2; //{1E.1}
mineScreen.y = 2732 / 2; //{1E.2}
};
// Make anvilMap interactive and define the 'down' event handler
anvilMap.down = function (x, y, obj) {
// Show the Anvil screen
gameScreen.visible = true;
// Make the map visible after transitioning to the anvil map
map.visible = true;
// Attach 'gameScreenBackground' asset to the 'gameScreen' object
gameScreenBackground = gameScreen.attachAsset('gameScreenBackground', {
anchorX: 0.5,
anchorY: 0.5
});
// Attach 'recipes' asset to the 'gameScreenBackground' object
var recipes = gameScreenBackground.attachAsset('recipes', {
anchorX: 0.5,
anchorY: 0.5
});
// Center the 'recipes' asset on the gameScreenBackground
recipes.x = gameScreenBackground.width / 2 - 1050; //{3u.1}
recipes.y = gameScreenBackground.height / 2 + 150; //{3v.1}
// Hide the mineinsidebackground when exiting the mine screen
if (mineInsideBackground) {
mineInsideBackground.visible = false;
mineInsideBackground.destroy(); // Ensure it is completely removed
}
if (mineInsideBackground) {
mineInsideBackground.visible = false;
mineInsideBackground.destroy(); // Ensure it is completely removed
}
if (blueCristal) {
blueCristal.visible = false; //{1X.1}
blueCristal.destroy(); // Ensure it is completely removed
} //{1X.3}
if (greenCristal) {
greenCristal.visible = false; //{1Y.1}
greenCristal.destroy(); // Ensure it is completely removed
} //{1Y.3}
if (redCristal) {
redCristal.visible = false; //{1Z.1}
redCristal.destroy(); // Ensure it is completely removed
} //{1Z.3}
// Hide the map screen
mapScreen.visible = false;
// Show the counter display
counterText.visible = true;
// Show the Growth rate counter when transitioning to anvilmap
growthRateText.visible = true;
};
// Hide the current game screen
gameScreen.visible = false;
// Disable the active background
background.visible = false;
// Attach a new background or asset to the mapScreen if needed
// Example: mapScreen.attachAsset('newBackground', { anchorX: 0.5, anchorY: 0.5 });
// Position the mapScreen at the center
mapScreen.x = 2048 / 2;
mapScreen.y = 2732 / 2;
};
var growthRateText;
var growthRateCounter = storage.growthRate; // Initialize growth rate counter from storage
var background = game.addChild(new Container());
background.width = 2048;
background.height = 2732;
background.x = 2048 / 2;
background.y = 2732 / 2;
var backgroundGraphics = background.attachAsset('background', {
anchorX: 0.5,
anchorY: 0.5
});
var gameScreen = new Container(); //{1h.1}
var newGame = game.addChild(new Container());
newGame.x = 2650 / 2 + 100; //{3d.1}
newGame.y = 2680 * 4.2 / 5; //{3d.1}
// Attach 'title' asset to the start screen
var title = game.addChild(LK.getAsset('title', {
anchorX: 0.5,
anchorY: 0.5
}));
title.x = 2048 / 2;
title.y = 3200 / 5;
// Attach 'newGameText' asset to the 'New Game' object
var newGameText = newGame.attachAsset('newGameText', {
anchorX: 0.5,
anchorY: 0.5,
stroke: 0xFFFFFF,
// White color
strokeThickness: 5 // 5px thickness
});
// Attach 'continueText' asset to the game object
var continueText = game.addChild(LK.getAsset('continueText', {
anchorX: 0.5,
anchorY: 0.5
}));
continueText.x = newGame.x - newGame.width - 500; // Increase the distance between newGame and continueText
continueText.y = newGame.y; // Align vertically with newGame
continueText.interactive = true;
continueText.down = function (x, y, obj) {
startgame();
};
var blueswordsclick = storage.blueswordsclick;
var greenAxeClicks = storage.greenAxeClicks;
var redCrystalTwoHandedSwordClicks = storage.redCrystalTwoHandedSwordClicks;
console.log(redCrystalTwoHandedSwordClicks);
function startgame() {
hammer.destroy();
// Create a new game screen
gameScreen = game.addChild(new Container());
gameScreen.x = 2048 / 2;
gameScreen.y = 2732 / 2;
// Attach 'gameScreenBackground' asset to the 'gameScreen' object
gameScreenBackground = gameScreen.attachAsset('gameScreenBackground', {
anchorX: 0.5,
anchorY: 0.5
});
// Attach 'recipes' asset to the 'gameScreenBackground' object
var recipes = gameScreenBackground.attachAsset('recipes', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true // Make the recipes asset interactive
});
// Remove 'continueText' asset when transitioning to new game
// Define the 'down' event handler for recipes
recipes.down = function (x, y, obj) {
LK.getSound('booksaudio').play();
// Create a new screen for the recipes
var recipesScreen = game.addChild(new RecipesScreen());
map.visible = false; // Hide the map asset after transitioning to the recipes screen
// Add 'recipesbackground' asset to the center of the screen
var recipesBackground = recipesScreen.attachAsset('recipesbackground', {
anchorX: 0.5,
anchorY: 0.5
});
recipesBackground.x = 2048 / 2;
recipesBackground.y = 2932 / 2;
// Add 'bluecrystalswordrecipe' asset to the center of the screen
var bluecrystalswordrecipe = recipesScreen.attachAsset('bluecrystalswordrecipe', {
anchorX: 0.5,
anchorY: 0.5
});
bluecrystalswordrecipe.x = 1248 / 2;
bluecrystalswordrecipe.y = 2132 / 2;
bluecrystalswordrecipe.down = function () {
if (storage.forgingSkill >= 2000 && storage.blueCrystalIngotScore >= 100) {
blueswordsclick += 100;
}
if (blueswordsclick >= 1000) {
blueswordsclick = 0;
storage.blueSwords += 1; // Increment the blue swords count in storage
blueSwordsText.setText(storage.blueSwords.toString());
if (blueCrystalIngotScore >= 100) {
blueCrystalIngotScore -= 100; // Deduct 100 from blueCrystalIngotScore
storage.blueCrystalIngotScore = blueCrystalIngotScore; // Persist the decrement
blueCrystalIngotScoreTxt.setText('BlueCrystalIngot: ' + blueCrystalIngotScore);
}
}
blueCrystalSwordClicks.setText('(current ' + blueswordsclick + ')');
storage.blueswordsclick = blueswordsclick;
};
// Add 'Swords in stock' text asset to the center of the screen
var swordsInStockText = new Text2('Swords in stock', {
size: 50,
fill: 0x000000 // Black color
});
swordsInStockText.anchor.set(0.5, 0.5);
swordsInStockText.x = 1248 / 2;
swordsInStockText.y = 2732 / 2 + 400;
recipesScreen.addChild(swordsInStockText);
// Display the number of blue swords in stock
var blueSwordsText = new Text2(storage.blueSwords.toString(), {
size: 50,
fill: 0x000000 // Black color
});
blueSwordsText.anchor.set(0.5, 0.5);
blueSwordsText.x = 1248 / 2;
blueSwordsText.y = swordsInStockText.y + 50; // Position below the 'Swords in stock' text
recipesScreen.addChild(blueSwordsText);
// Add 'Axe of Green Crystals recipe' asset to the center of the screen
var axeOfGreenCrystalsRecipe = recipesScreen.attachAsset('axeOfGreenCrystalsRecipe', {
anchorX: 0.5,
anchorY: 0.5
});
axeOfGreenCrystalsRecipe.x = 2848 / 2;
axeOfGreenCrystalsRecipe.y = 2132 / 2;
axeOfGreenCrystalsRecipe.down = function () {
if (storage.forgingSkill >= 10000 && storage.greenCrystalIngotScore >= 150) {
greenAxeClicks += 100;
}
if (greenAxeClicks >= 3000) {
greenAxeClicks = 0;
storage.greenAxes += 1; // Increment the green axes count in storage
greenAxesText.setText(storage.greenAxes.toString());
if (greenCrystalIngotScore >= 150) {
greenCrystalIngotScore -= 150; // Deduct 150 from greenCrystalIngotScore
storage.greenCrystalIngotScore = greenCrystalIngotScore; // Persist the decrement
greenCrystalIngotScoreTxt.setText('GreenCrystalIngot: ' + greenCrystalIngotScore);
}
}
greenAxeClicksText.setText('(current ' + greenAxeClicks + ')');
storage.greenAxeClicks = greenAxeClicks;
};
// Add 'Axe in stock' text asset to the center of the screen
var axeInStockText = new Text2('Axe in stock', {
size: 50,
fill: 0x000000 // Black color
});
axeInStockText.anchor.set(0.5, 0.5);
axeInStockText.x = 2848 / 2;
axeInStockText.y = swordsInStockText.y + 50; // Position below the 'Swords in stock' text
recipesScreen.addChild(axeInStockText);
// Display the number of green axes in stock
var greenAxesText = new Text2(storage.greenAxes.toString(), {
size: 50,
fill: 0x000000 // Black color
});
greenAxesText.anchor.set(0.5, 0.5);
greenAxesText.x = 2848 / 2;
greenAxesText.y = swordsInStockText.y + 100; // Position below the 'Swords in stock' text
recipesScreen.addChild(greenAxesText);
// Add 'Green Axe clicks' text asset to the center of the screen
var greenAxeClicksText = new Text2('(current ' + greenAxeClicks + ')', {
size: 50,
fill: 0x000000,
alpha: 0.5 // Set transparency
});
greenAxeClicksText.anchor.set(0.5, 0.5);
greenAxeClicksText.x = 2848 / 2 - 150;
greenAxeClicksText.y = 2732 / 2 + 330;
recipesScreen.addChild(greenAxeClicksText);
// Add 'Blue crystal sword description' text asset to the center of the screen
var blueCrystalSwordDescription = new Text2('"Blue Crystal Sword"\n Forging Skill 2k.\n 100 blue crystal ingots +\n 1000 clicks on the recipe', {
size: 50,
fill: 0x000000,
alpha: 0.5 // Set transparency
});
blueCrystalSwordDescription.anchor.set(0.5, 0.5);
blueCrystalSwordDescription.x = 1248 / 2;
blueCrystalSwordDescription.y = 2732 / 2 + 200;
recipesScreen.addChild(blueCrystalSwordDescription);
var blueCrystalSwordClicks = new Text2('(current ' + blueswordsclick + ')', {
size: 50,
fill: 0x000000,
alpha: 0.5 // Set transparency
});
blueCrystalSwordClicks.anchor.set(0.5, 0.5);
blueCrystalSwordClicks.x = 1248 / 2 - 150;
blueCrystalSwordClicks.y = 2732 / 2 + 330;
recipesScreen.addChild(blueCrystalSwordClicks);
// Add 'axeOfGreenCrystals description' text asset to the center of the screen
var axeOfGreenCrystalsDescription = new Text2('"Axe of Green Crystals"\n Forging Skill 10k.\n 150 green crystal ingots +\n 3000 clicks on the anvil', {
size: 50,
fill: 0x000000,
alpha: 0.5 // Set transparency
});
axeOfGreenCrystalsDescription.anchor.set(0.5, 0.5);
axeOfGreenCrystalsDescription.x = 2890 / 2;
axeOfGreenCrystalsDescription.y = 2732 / 2 + 200;
recipesScreen.addChild(axeOfGreenCrystalsDescription);
// Add 'recipesnext' asset to the center of the screen
var recipesNext = recipesScreen.attachAsset('recipesnext', {
anchorX: 0.5,
anchorY: 0.5 //{4F.1}
}); //{4G.1}
recipesNext.x = 3248 / 2;
recipesNext.y = 5000 / 2;
// Make the 'recipesnext' asset interactive
recipesNext.interactive = true;
// Define the 'down' event handler for recipesNext
recipesNext.down = function (x, y, obj) {
// Create a new screen for the next section
var nextScreen = game.addChild(new Container());
// Remove the current background
recipesScreen.visible = false;
// Add 'recipesnextbackgr1' asset to the center of the screen
var recipesNextBackgr1 = nextScreen.attachAsset('recipesnextbackgr1', {
anchorX: 0.5,
anchorY: 0.5
});
recipesNextBackgr1.x = 2048 / 2;
recipesNextBackgr1.y = 2732 / 2;
// Add 'recipesprev' asset to the center of the screen
var recipesPrev = nextScreen.attachAsset('recipesprev', {
anchorX: 0.5,
anchorY: 0.5,
interactive: true // Make the 'recipesprev' asset interactive
});
recipesPrev.x = 888 / 2;
recipesPrev.y = 5000 / 2;
// Define the 'down' event handler for recipesPrev
recipesPrev.down = function (x, y, obj) {
// Transition back to the recipes screen
nextScreen.visible = false; // Hide the current screen
recipesScreen.visible = true; // Show the recipes screen
};
// Add 'recipesnext2' asset to the center of the screen
var recipesNext2 = nextScreen.attachAsset('recipesnext2', {
anchorX: 0.5,
anchorY: 0.5
});
recipesNext2.x = 3248 / 2;
recipesNext2.y = 5000 / 2;
// Add 'redcrystaltwo-handedswordrecipe' asset to the center of the screen
var redCrystalTwoHandedSwordRecipe = nextScreen.attachAsset('redcrystaltwo-handedswordrecipe', {
anchorX: 0.5,
anchorY: 0.5
});
redCrystalTwoHandedSwordRecipe.x = 1248 / 2;
redCrystalTwoHandedSwordRecipe.y = 2132 / 2;
redCrystalTwoHandedSwordRecipe.down = function () {
if (storage.forgingSkill >= 20000 && storage.redCrystalIngotScore >= 250) {
redCrystalTwoHandedSwordClicks += 1;
}
if (redCrystalTwoHandedSwordClicks >= 10000) {
redCrystalTwoHandedSwordClicks = 0;
storage.redCrystalTwoHandedSwords += 1; // Increment the red crystal two-handed swords count in storage
redCrystalTwoHandedSwordsText.setText(storage.redCrystalTwoHandedSwords.toString());
}
redCrystalTwoHandedSwordClicksText.setText('(current ' + redCrystalTwoHandedSwordClicks + ')');
storage.redCrystalTwoHandedSwordClicks = redCrystalTwoHandedSwordClicks;
};
// Add 'Red Crystal Two-Handed Sword in stock' text asset to the center of the screen
var redCrystalTwoHandedSwordsText = new Text2(storage.redCrystalTwoHandedSwords.toString(), {
size: 50,
fill: 0x000000 // Black color
});
redCrystalTwoHandedSwordsText.anchor.set(0.5, 0.5);
redCrystalTwoHandedSwordsText.x = 1248 / 2;
var redCrystalTwoHandedSwordDescription = new Text2('"Redcrystaltwo-\n handedswordrecipe"\n Forging Skill 20k.\n 250 red crystal ingots +\n 10000 clicks on the anvil', {
size: 50,
fill: 0x000000 // Black color
});
redCrystalTwoHandedSwordDescription.anchor.set(0.5, 0.5);
redCrystalTwoHandedSwordDescription.x = 1248 / 2;
redCrystalTwoHandedSwordDescription.y = 2732 / 2 + 100;
nextScreen.addChild(redCrystalTwoHandedSwordDescription);
// Add 'Two-hand Swords in stock' text asset to the center of the screen
var twoHandSwordsInStockText = new Text2('Two-hand Swords in stock', {
size: 50,
fill: 0x000000 // Black color
});
twoHandSwordsInStockText.anchor.set(0.5, 0.5);
twoHandSwordsInStockText.x = 1248 / 2;
twoHandSwordsInStockText.y = redCrystalTwoHandedSwordDescription.y + 200; // Position below the description
nextScreen.addChild(twoHandSwordsInStockText);
redCrystalTwoHandedSwordsText.y = redCrystalTwoHandedSwordDescription.y + 300; // Position further below the description
nextScreen.addChild(redCrystalTwoHandedSwordsText);
// Add a new text box with black text under the 'redcrystaltwo-handedswordrecipe' asset
var redCrystalTwoHandedSwordClicksText = new Text2('(current ' + redCrystalTwoHandedSwordClicks + ')', {
size: 50,
fill: 0x000000,
alpha: 0.5
});
redCrystalTwoHandedSwordClicksText.anchor.set(0.5, 0.5);
redCrystalTwoHandedSwordClicksText.x = 1248 / 2 - 150;
redCrystalTwoHandedSwordClicksText.y = 2732 / 2 + 330;
nextScreen.addChild(redCrystalTwoHandedSwordClicksText);
};
// Hide the current game screen
gameScreen.visible = false;
};
// Center the 'recipes' asset on the gameScreenBackground
recipes.x = gameScreenBackground.width / 2 - 1050; //{3u.1}
recipes.y = gameScreenBackground.height / 2 + 150; //{3v.1}
// Make the map visible when 'New Game' is clicked
map.visible = true;
// Hide the main menu
newGame.visible = false;
continueText.visible = false;
// Disable the background
background.visible = false;
// Create a new instance of the Anvil class
var anvil = gameScreen.addChild(new Anvil());
// Initialize the anvil click counter from storage
anvil.clickCounter = storage.forgingSkill;
counterText.setText('Forging skill: ' + anvil.clickCounter);
// Position 'The anvil' at the location of the anvil on the gameScreenBackground
anvil.x = gameScreenBackground.x - -20; // Adjust x-coordinate based on the anvil's position on the background
anvil.y = gameScreenBackground.y + 500; // Adjust y-coordinate based on the anvil's position on the background
// Add a new object 'Magic Nursery'
var magicNursery = gameScreen.addChild(new Door());
// Position 'Magic Nursery' to the left and up
magicNursery.x = 2048 / 4;
magicNursery.y = 2732 / 2.5;
hammer = game.addChild(LK.getAsset('hammer', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: -1
}));
}
// Make the 'New Game' object clickable
newGame.interactive = true;
newGame.down = function (x, y, obj) {
// Reset all saved data
storage.forgingSkill = 10000;
storage.growthRate = 0;
storage.blueCrystalIngotScore = 0;
storage.greenCrystalIngotScore = 0;
storage.redCristallScore = 0;
storage.redCrystalIngotScore = 0;
storage.greenCristallScore = 0;
storage.greenCrystalIngotScore = 0;
storage.blueSwords = 0;
// Reset current variables
redCrystalIngotScore = 0;
blueCristallScore = 0;
greenCristallScore = 0;
greenCrystalIngotScore = 0;
blueCrystalIngotScore = 0;
redCristallScore = 0;
growthRateCounter = 0;
growthRateText.setText('Growth rate: ' + storage.growthRate);
counterText.setText('Forging skill: ' + storage.forgingSkill);
scoreTxt.setText('Blue Cristall: ' + blueCristallScore);
greenScoreTxt.setText('Green Cristall: ' + greenCristallScore);
redScoreTxt.setText('Red Cristall: ' + redCristallScore);
blueCrystalIngotScoreTxt.setText('BlueCrystalIngot: ' + storage.blueCrystalIngotScore);
greenCrystalIngotScoreTxt.setText('GreenCrystalIngot: ' + storage.greenCrystalIngotScore);
redCrystalIngotScoreTxt.setText('RedCrystalIngot: ' + storage.redCristallScore);
startgame();
};
// Create a new text object to display the click counter
var counterText = new Text2('Forging skill: ' + storage.forgingSkill, {
size: 50,
fill: 0xFFFFFF
});
// Position the text object at the top right corner of the screen
counterText.anchor.set(0, 0);
LK.gui.topLeft.addChild(counterText);
counterText.y = 0;
counterText.x = 0;
growthRateText = new Text2('Growth rate: ' + growthRateCounter, {
size: 50,
fill: 0xFFFFFF
});
growthRateText.anchor.set(0, 0);
LK.gui.topLeft.addChild(growthRateText);
growthRateText.y = counterText.height - 6; // Move the growth rate text 2 pixels higher
growthRateText.x = 0;
// Initialize hammer asset
var hammer;
hammer = game.addChild(LK.getAsset('hammer', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: -1
}));
// Function to make the hammer follow the mouse/touch position
function updateHammerPosition(x, y) {
if (hammer) {
hammer.x = x;
hammer.y = y;
}
}
if (autominebluecristallClicked) {
var intervalId = LK.setInterval(function () {
blueCristallScore += 1;
LK.setScore(blueCristallScore);
storage.blueCristallScore = blueCristallScore;
scoreTxt.setText('Blue Cristall: ' + LK.getScore());
}, 1000);
}
if (autominegreencristallClicked) {
var intervalId = LK.setInterval(function () {
greenCristallScore += 1;
storage.greenCristallScore = greenCristallScore;
greenScoreTxt.setText('Green Cristall: ' + greenCristallScore);
}, 1000);
}
if (automineredcristallClicked) {
var intervalId = LK.setInterval(function () {
redCristallScore += 1;
storage.redCristallScore = redCristallScore;
redScoreTxt.setText('Red Cristall: ' + redCristallScore);
}, 1000);
}
if (autogrowthRateClicked) {
var intervalId = LK.setInterval(function () {
growthRateCounter += 1;
growthRateText.setText('Growth rate: ' + growthRateCounter);
storage.growthRate = growthRateCounter;
}, 1000);
}
if (storage.theBlacksmithsApprentice) {
var intervalId = LK.setInterval(function () {
storage.forgingSkill += 1;
counterText.setText('Forging skill: ' + storage.forgingSkill);
}, 1000);
}
// Make the cursor follow the mouse/touch position
game.move = function (x, y, obj) {
updateHammerPosition(x, y);
};
// Animate cursor rotation on click
game.down = function (x, y, obj) {
LK.getSound('hammer').play();
tween(hammer, {
rotation: -Math.PI / 2
}, {
duration: 125,
easing: tween.easeInOut,
onFinish: function onFinish() {
// Create stars around the hammer for 0.25 seconds
for (var i = 0; i < 5; i++) {
var star = game.addChild(LK.getAsset('star', {
anchorX: 0.5,
anchorY: 0.5
}));
star.x = hammer.x - hammer.width / 2 + Math.random() * 100 - 25;
star.y = hammer.y + hammer.height / 2 + Math.random() * 100 - 25;
(function (star) {
// Make the star move upwards
star.update = function () {
star.y -= 5; // Move the star upwards by 5 pixels per frame
if (star.x < hammer.x) {
star.x += 2; // Move the star slightly to the right if on the left side of the hammer
} else {
star.x -= 2; // Move the star slightly to the left if on the right side of the hammer
}
};
LK.setTimeout(function () {
star.destroy();
}, 250);
})(star);
}
tween(hammer, {
rotation: 0
}, {
duration: 125,
easing: tween.easeInOut
});
}
});
};