Code edit (1 edits merged)
Please save this source code
User prompt
допиши текст к ассету multiclickupgrade "Increased chance of successful forging +5%"
Code edit (1 edits merged)
Please save this source code
User prompt
добавь новый ассет multiclickupgrade после перехода в newTools по центру
Code edit (2 edits merged)
Please save this source code
User prompt
допиши текст к ассету autogrowthRate "Automatic melting +1"
Code edit (3 edits merged)
Please save this source code
User prompt
добавь новый ассет autogrowthRate после перехода в newTools по центру
Code edit (5 edits merged)
Please save this source code
User prompt
допиши текст к ассету automineredcristall "Mine Red Cristall +1"
Code edit (1 edits merged)
Please save this source code
User prompt
добавь новый ассет automineredcristall после перехода в newTools по центру
Code edit (2 edits merged)
Please save this source code
User prompt
опусти текст ниже
Code edit (1 edits merged)
Please save this source code
User prompt
допиши текст к ассету autominegreencristall "Mine Green Cristall +1"
Code edit (2 edits merged)
Please save this source code
User prompt
добавь новый ассет autominegreencristall после перехода в newTools по центру
Code edit (4 edits merged)
Please save this source code
User prompt
допиши текст к ассету autominebluecristall "Mine Blue Cristall +1"
Code edit (3 edits merged)
Please save this source code
User prompt
добавь новый ассет automineredcristall после перехода в newTools по центру
User prompt
по клику по newToolsout нас должно переносить в newTools
User prompt
после перехода отображается только shopbackground, без других ассетов исправь ошибки
User prompt
сделай newToolsouut кликабельным, по клику нас должно переносить в магазин
/**** * 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 }); /**** * 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 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 >= 100 && self.clickCounter < 200) { counterText.tint = 0x00FF00; // Green } else if (self.clickCounter >= 200 && self.clickCounter < 300) { counterText.tint = 0x0000FF; // Blue } else if (self.clickCounter >= 300) { counterText.tint = 0x800080; // 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.forgingSkill += 100; // Increment forging skill by 100 counterText.setText('Forging skill: ' + storage.forgingSkill); // Update the forging skill 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) { // 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: 2, // Double the size horizontally scaleY: 2 // Double the size vertically }); // 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 GreenCristalIngot class var greenCristalIngot = game.magicNursery.addChild(LK.getAsset('greenCristalIngot', { anchorX: 0.5, anchorY: 0.5 })); // Position the greenCristalIngot asset to the right of the blueCrystalIngot asset greenCristalIngot.x = blueCrystalIngot.x + blueCrystalIngot.width + greenCristalIngot.width / 2 + 40; //{Y.1} greenCristalIngot.y = blueCrystalIngot.y; // 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 = 2048 / 2 - 100; growthRate.y = 2732 / 2; // 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) { // 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 >= 500) { 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 + ')'); }; }); // 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 += 1; 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) { // 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) { // 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 += 1; 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; 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 >= 1000) { 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 + ')'); }; }); /**** * Initialize Game ****/ // Create a new text object to display the click counter var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ 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} var mineInsideBackground; var blueCristallScore = storage.blueCristallScore || 0; 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 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) { // 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; // 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} // Attach 'autominebluecristall' asset to the center of the isolatedScreen var autominebluecristall = isolatedScreen.attachAsset('autominebluecristall', { anchorX: 0.5, //{4F.2} anchorY: 0.5 //{4F.3} }); //{4F.4} autominebluecristall.x = -400; autominebluecristall.y = -500; // Attach 'autominegreencristall' asset to the center of the isolatedScreen var autominegreencristall = isolatedScreen.attachAsset('autominegreencristall', { anchorX: 0.5, anchorY: 0.5 }); autominegreencristall.x = -400; autominegreencristall.y = -100; // 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 + 120; // Position below the autominebluecristall asset isolatedScreen.addChild(mineBlueCristallText); // 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); newToolsOut.down = function (x, y, obj) { // 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) { 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 += 90; // 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 += -40; // Move 100 pixels to the right blueCristal.y += 150; // 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 = 2048 / 2; newGame.y = 2680 * 4.2 / 5; //{3d.1} // 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 - 150; // Position continueText 150 pixels to the left of newGame continueText.y = newGame.y; // Align vertically with newGame continueText.interactive = true; continueText.down = function (x, y, obj) { startgame(); }; var blueswordsclick = 0; var greenAxeClicks = 0; // Initialize greenAxeClicks variable var redCrystalTwoHandedSwordClicks = 0; // Initialize redCrystalTwoHandedSwordClicks variable 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) { // 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()); } blueCrystalSwordClicks.setText('(current ' + 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 >= 500) { greenAxeClicks += 1; } if (greenAxeClicks >= 3000) { greenAxeClicks = 0; storage.greenAxes += 1; // Increment the green axes count in storage greenAxesText.setText(storage.greenAxes.toString()); } greenAxeClicksText.setText('(current ' + 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 500 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 >= 1000) { 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 + ')'); }; // 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 1000 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 }; // 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; 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; } } // 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 }); } }); };
===================================================================
--- original.js
+++ change.js
@@ -646,9 +646,9 @@
fill: 0x030303
});
mineGreenCristallText.anchor.set(0.5, 0.5);
mineGreenCristallText.x = autominegreencristall.x;
- mineGreenCristallText.y = autominegreencristall.y + 130; // Position below the autominegreencristall asset
+ mineGreenCristallText.y = autominegreencristall.y + 150; // Lower the position below the autominegreencristall asset
isolatedScreen.addChild(mineGreenCristallText);
newToolsOut.down = function (x, y, obj) {
// Transition to the newTools screen
isolatedScreen.visible = false; // Hide the current isolated screen