Code edit (13 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'color')' in or related to this line: 'quest = new Text2(' QUEST\n' + questtext, {' Line Number: 596
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'text')' in or related to this line: 'var questtext = helparray[storage.help].text;' Line Number: 590
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'coords')' in or related to this line: 'helpObj.x = helparray[storage.help].coords[0];' Line Number: 516
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught ReferenceError: redCrystalTwoHandedSwordsText is not defined' in or related to this line: 'redCrystalTwoHandedSwordsText.setText('0'); // Предполагается, что redCrystalTwoHandedSwordsText определён глобально' Line Number: 1293
User prompt
Please fix the bug: 'Uncaught ReferenceError: greenAxesText is not defined' in or related to this line: 'greenAxesText.setText('0'); // Предполагается, что greenAxesText определён глобально' Line Number: 1281
Code edit (1 edits merged)
Please save this source code
User prompt
анимацию goldstore тоже добавь в это условие
Code edit (1 edits merged)
Please save this source code
User prompt
добавь это условие к sellweapons (if (storage.blueSwords > 0 || storage.greenAxes > 0 || storage.redCrystalTwoHandedSwords > 0) { LK.getSound('gold').play(); for (var i = 0; i < 5; i++) {/* анимация монет */} })
Code edit (3 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'setText')' in or related to this line: 'blueSwordsText.setText('0');' Line Number: 1267
Code edit (15 edits merged)
Please save this source code
User prompt
применяй ассет goldstore при прибавлении в счетчик gold, он должен вылетать из ассета sellweapons вверх в количестве 5ти штук
User prompt
применяй sound 'gold' при добавлении в счетчик gold
User prompt
исправь ошибку, при нажатии на sellweapons, swords in stock обнуляется, но gold не добавляется
User prompt
Please fix the bug: 'Uncaught ReferenceError: blueSwordsText is not defined' in or related to this line: 'blueSwordsText.setText(storage.blueSwords.toString());' Line Number: 1264
User prompt
при клике по sellweapons не начислелось gold
Code edit (1 edits merged)
Please save this source code
Code edit (19 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught TypeError: quest.destroy is not a function' in or related to this line: 'quest.destroy();' Line Number: 288
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1", { forgingSkill: 0, growthRate: 0, blueCrystallScore: 0, greenCrystalIngotScore: 0, blueSwords: 0, greenAxes: 0, redCrystalTwoHandedSwords: 0, blueswordsclick: 0, greenAxeClicks: 0, redCrystalTwoHandedSwordClicks: 0, automineblueCrystallClicked: false, autominegreenCrystallClicked: false, autogrowthRateClicked: false, multiclickupgrade: false, theBlacksmithsApprentice: false, automineredCrystallClicked: false, lastgametime: 0, help: 0, goldScore: 0, greenCrystallScore: 0, redCrystallScore: 0, redCrystalIngotScore: 0 }); /**** * Classes ****/ var Anvil = Container.expand(function () { var self = Container.call(this); var anvilGraphics = self.attachAsset('anvil', { anchorX: 0.6, anchorY: 0.6, alpha: 0.0 }); self.clickCounter = storage.forgingSkill; self.interactive = true; self.down = function (x, y, obj) { self.clickCounter++; var shans = 0.02; if (storage.multiclickupgrade) { shans += 0.02; } if (Math.random() < shans) { self.clickCounter += 5; var newAsset = game.addChild(LK.getAsset('multyclick', { anchorX: 0.5, anchorY: 0.5 })); newAsset.x = 2048 / 2; newAsset.y = 2732 / 2; tween(newAsset, { scaleX: 2, scaleY: 2 }, { duration: 500, easing: tween.easeInOut, onFinish: function onFinish() { newAsset.destroy(); } }); } counterText.setText('Forging skill: ' + self.clickCounter); storage.forgingSkill = self.clickCounter; if (self.clickCounter >= 1000 && self.clickCounter < 2000) { counterText.tint = 0x00FF00; } else if (self.clickCounter >= 2000 && self.clickCounter < 15000) { counterText.tint = 0x0000FF; } else if (self.clickCounter >= 15000 && self.clickCounter < 30000) { counterText.tint = 0x800080; } else if (self.clickCounter >= 30000) { counterText.tint = 0xcc7c04; } if (storage.forgingSkill >= 100 && storage.help == 1) { if (quest && typeof quest.destroy === 'function') { quest.destroy(); } quest = false; setHelp(1); } }; }); var BlueCristal = Container.expand(function () { var self = Container.call(this); var blueCristalGraphics = self.attachAsset('blueCristal', { anchorX: 0.5, anchorY: 0.5, interactive: true }); self.down = function (x, y, obj) { blueCrystallScore += 1; if (blueCrystallScore >= 100 && storage.help == 6) { if (quest && typeof quest.destroy === 'function') { quest.destroy(); } quest = false; storage.help = 7; setHelp(7); } LK.setScore(blueCrystallScore); storage.blueCrystallScore = blueCrystallScore; scoreTxt.setText('Blue Crystall: ' + LK.getScore()); scoreTxt.visible = true; }; }); var BlueCrystalIngot = Container.expand(function () { var self = Container.call(this); var blueCrystalIngotGraphics = self.attachAsset('blueCrystalIngot', { anchorX: 0.5, anchorY: 0.5, interactive: true }); self.down = function (x, y, obj) { if (blueCrystallScore >= 10) { blueCrystalIngotScore += 1; storage.growthRate += 10; growthRateText.setText('Growth rate: ' + storage.growthRate); blueCrystalIngotScoreTxt.setText('BlueCrystalIngot: ' + blueCrystalIngotScore); storage.blueCrystalIngotScore = blueCrystalIngotScore; blueCrystallScore -= 10; if (blueCrystallScore < 0) { blueCrystallScore = 0; } storage.blueCrystallScore = blueCrystallScore; LK.setScore(blueCrystallScore); scoreTxt.setText('Blue Crystall: ' + LK.getScore()); if (blueCrystalIngotScore >= 10 && storage.help == 9) { if (quest && typeof quest.destroy === 'function') { quest.destroy(); } quest = false; storage.help = 10; setHelp(10); } } }; }); var BlueCrystalSword = Container.expand(function () { var self = Container.call(this); var blueCrystalSwordGraphics = self.attachAsset('bluecrystalswordrecipe', { anchorX: 0.5, anchorY: 0.5, interactive: true }); self.down = function (x, y, obj) { if (storage.forgingSkill >= 100 && storage.blueCrystalIngotScore >= 10) { storage.blueswordsclick += 1; if (storage.blueswordsclick >= 100) { storage.blueswordsclick = 0; storage.blueSwords += 1; blueSwordsText.setText(storage.blueSwords.toString()); storage.forgingSkill += 100; counterText.setText('Forging skill: ' + storage.forgingSkill); storage.blueCrystalIngotScore -= 10; blueCrystalIngotScore = storage.blueCrystalIngotScore; blueCrystalIngotScoreTxt.setText('BlueCrystalIngot: ' + blueCrystalIngotScore); if (storage.blueSwords >= 1 && storage.help == 11) { if (quest && typeof quest.destroy === 'function') { quest.destroy(); } quest = false; storage.help = 12; setHelp(12); } } blueCrystalSwordClicks.setText('(current ' + storage.blueswordsclick + ')'); } }; }); var Door = Container.expand(function () { var self = Container.call(this); var doorGraphics = self.attachAsset('Door', { anchorX: 0.5, anchorY: 0.5 }); self.interactive = true; self.down = function (x, y, obj) { if (storage.help == 2 || storage.help == 8) { if (quest && typeof quest.destroy === 'function') { quest.destroy(); } quest = false; } LK.getSound('doors').play(); hammer.destroy(); game.magicNursery = game.addChild(new Container()); var magicNurseryBackground = game.magicNursery.attachAsset('magicNurseryBackground', { anchorX: 0.5, anchorY: 0.5, interactive: false, scaleX: 2, scaleY: 2 }); magicNurseryBackground.x = 2048 / 2; magicNurseryBackground.y = 2732 / 2; var forgeOfMatter = game.magicNursery.attachAsset('growthRate', { anchorX: 0.5, anchorY: 0.5, interactive: true, scaleX: 3, scaleY: 3, alpha: 0.0 }); var blueCrystalIngot = game.magicNursery.addChild(new BlueCrystalIngot()); blueCrystalIngot.x = 200 + blueCrystalIngot.width / 2; blueCrystalIngot.y = 2500 - blueCrystalIngot.height / 2; var redCrystalIngot = game.magicNursery.addChild(new RedCrystalIngot()); redCrystalIngot.x = 1300 / 2 + 350; redCrystalIngot.y = 4820 / 2; var greenCrystalIngotInstance = game.magicNursery.addChild(new GreenCrystalIngot()); greenCrystalIngotInstance.x = blueCrystalIngot.x + blueCrystalIngot.width + greenCrystalIngotInstance.width / 2 + 40; greenCrystalIngotInstance.y = blueCrystalIngot.y; var growthRate = game.magicNursery.addChild(LK.getAsset('growthRate', { anchorX: 0.7, anchorY: 0.7 })); growthRate.x = 780; growthRate.y = 1500; forgeOfMatter.down = function (x, y, obj) { storage.growthRate++; growthRateText.setText('Growth rate: ' + storage.growthRate); if (storage.growthRate >= 50 && storage.help == 3) { if (quest && typeof quest.destroy === 'function') { quest.destroy(); } quest = false; storage.help = 4; setHelp(4); } }; forgeOfMatter.x = 1100 / 1.5; forgeOfMatter.y = 2000 / 1.5; gameScreen.visible = false; counterText.visible = true; map.visible = false; var door2 = game.magicNursery.addChild(new Door2()); door2.x = 2048 * 0.75; door2.y = 2732 * 0.9; setHelp(2); setHelp(8); hammer = game.addChild(LK.getAsset('hammer', { anchorX: 0.5, anchorY: 0.5, scaleX: -1 })); }; }); var Door2 = Container.expand(function () { var self = Container.call(this); var doorGraphics = self.attachAsset('Door', { anchorX: 0.5, anchorY: 0.5 }); self.interactive = true; self.down = function (x, y, obj) { LK.getSound('doors').play(); hammer.destroy(); gameScreen.visible = true; map.visible = true; counterText.visible = true; game.magicNursery.visible = false; growthRateText.visible = true; setHelp(0); setHelp(1); setHelp(3); setHelp(9); hammer = game.addChild(LK.getAsset('hammer', { anchorX: 0.5, anchorY: 0.5, scaleX: -1 })); }; }); var GreenAxe = Container.expand(function () { var self = Container.call(this); var greenAxeGraphics = self.attachAsset('axeOfGreenCrystalsRecipe', { anchorX: 0.5, anchorY: 0.5, interactive: true }); self.down = function (x, y, obj) { if (storage.forgingSkill >= 4000 && storage.greenCrystalIngotScore >= 15) { greenAxeClicks += 1; if (greenAxeClicks >= 150) { greenAxeClicks = 0; storage.greenAxes += 1; greenAxesText.setText(storage.greenAxes.toString()); storage.forgingSkill += 150; counterText.setText('Forging skill: ' + storage.forgingSkill); storage.greenCrystalIngotScore -= 15; greenCrystalIngotScore = storage.greenCrystalIngotScore; greenCrystalIngotScoreTxt.setText('GreenCrystalIngot: ' + greenCrystalIngotScore); } greenAxeClicksText.setText('(current ' + greenAxeClicks + ')'); storage.greenAxeClicks = greenAxeClicks; } }; }); var GreenCristal = Container.expand(function () { var self = Container.call(this); var greenCristalGraphics = self.attachAsset('greenCristal', { anchorX: 0.5, anchorY: 0.5, interactive: true }); self.down = function (x, y, obj) { greenCrystallScore += 1; LK.setScore(greenCrystallScore); storage.greenCrystallScore = greenCrystallScore; greenScoreTxt.setText('Green Crystall: ' + greenCrystallScore); greenScoreTxt.visible = true; }; }); var GreenCrystalIngot = Container.expand(function () { var self = Container.call(this); var greenCrystalIngotGraphics = self.attachAsset('greenCrystalIngot', { anchorX: 0.5, anchorY: 0.5, interactive: true }); self.down = function (x, y, obj) { if (storage.growthRate >= 3000 && greenCrystallScore >= 15) { storage.growthRate += 10; growthRateText.setText('Growth rate: ' + storage.growthRate); greenCrystalIngotScore += 1; greenCrystalIngotScoreTxt.setText('GreenCrystalIngot: ' + greenCrystalIngotScore); storage.greenCrystalIngotScore = greenCrystalIngotScore; greenCrystallScore -= 15; if (greenCrystallScore < 0) { greenCrystallScore = 0; } storage.greenCrystallScore = greenCrystallScore; greenScoreTxt.setText('Green Crystall: ' + greenCrystallScore); } }; }); var Help = Container.expand(function () { var self = Container.call(this); var helpGraphics = self.attachAsset('help', { anchorX: 0.5, anchorY: 0.5, interactive: true }); self.down = function (x, y, obj) {}; }); var RedCristal = Container.expand(function () { var self = Container.call(this); var redCristalGraphics = self.attachAsset('redCristal', { anchorX: 0.5, anchorY: 0.5, interactive: true }); self.down = function (x, y, obj) { redCrystallScore += 1; LK.setScore(redCrystallScore); storage.redCrystallScore = redCrystallScore; redScoreTxt.setText('Red Crystall: ' + redCrystallScore); redScoreTxt.visible = true; }; }); var RedCrystalIngot = Container.expand(function () { var self = Container.call(this); var redCrystalIngotGraphics = self.attachAsset('redCristalIngot', { anchorX: 0.5, anchorY: 0.5, interactive: true }); self.down = function (x, y, obj) { if (storage.growthRate >= 9000 && redCrystallScore >= 20) { storage.growthRate += 20; growthRateText.setText('Growth rate: ' + storage.growthRate); redCrystalIngotScore += 1; redCrystalIngotScoreTxt.setText('RedCrystalIngot: ' + redCrystalIngotScore); storage.redCrystalIngotScore = redCrystalIngotScore; redCrystallScore -= 20; if (redCrystallScore < 0) { redCrystallScore = 0; } storage.redCrystallScore = redCrystallScore; redScoreTxt.setText('Red Crystall: ' + redCrystallScore); } }; }); var RedCrystalTwoHandedSword = Container.expand(function () { var self = Container.call(this); var redCrystalTwoHandedSwordGraphics = self.attachAsset('redcrystaltwo-handedswordrecipe', { anchorX: 0.5, anchorY: 0.5, interactive: true }); self.down = function (x, y, obj) { if (storage.forgingSkill >= 10000 && storage.redCrystalIngotScore >= 75) { redCrystalTwoHandedSwordClicks += 1; if (redCrystalTwoHandedSwordClicks >= 200) { redCrystalTwoHandedSwordClicks = 0; storage.redCrystalTwoHandedSwords += 1; redCrystalTwoHandedSwordsText.setText(storage.redCrystalTwoHandedSwords.toString()); storage.forgingSkill += 210; counterText.setText('Forging skill: ' + storage.forgingSkill); storage.redCrystalIngotScore -= 75; redCrystalIngotScore = storage.redCrystalIngotScore; redCrystalIngotScoreTxt.setText('RedCrystalIngot: ' + redCrystalIngotScore); } redCrystalTwoHandedSwordClicksText.setText('(current ' + redCrystalTwoHandedSwordClicks + ')'); storage.redCrystalTwoHandedSwordClicks = redCrystalTwoHandedSwordClicks; } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ var helpObj = false; var helpText = false; var substrate = false; var quest = false; function setHelp(idhelp) { if (idhelp < storage.help && helpObj) { helpObj.destroy(); substrate.destroy(); helpText.destroy(); } if (storage.help == idhelp && !quest) { if (helpObj) { helpObj.destroy(); substrate.destroy(); helpText.destroy(); } helpObj = new Help(); helpObj.x = helparray[storage.help].coords[0]; helpObj.y = helparray[storage.help].coords[1]; helpText = new Text2(helparray[storage.help].text, { size: 50, fill: helparray[storage.help].color }); if (helparray[storage.help].coords[0] < 2048 / 2) { helpText.x = helparray[storage.help].coords[0] + helpObj.width / 2 + 10; } else { helpText.x = helparray[storage.help].coords[0] - helpObj.width / 2 - 10 - helpText.width; } if (helparray[storage.help].coords[1] < 2732 / 2) { helpText.y = helparray[storage.help].coords[1] + helpObj.height / 2 + 10; } else { helpText.y = helparray[storage.help].coords[1] - helpObj.height / 2 - 10; } var questtext = helparray[storage.help].text; if (typeof helparray[storage.help].quest != 'undefined') { questtext = helparray[storage.help].quest; } quest = new Text2(' QUEST\n' + questtext, { size: 50, fill: helparray[storage.help].color }); quest.x = 625; quest.y = 100; game.addChild(quest); substrate = game.attachAsset('substrate', { anchorX: 0.5, anchorY: 0.5, alpha: helparray[storage.help].substrate.alfa }); substrate.x = helpText.x + helpText.width / 2; substrate.y = helpText.y + helpText.height / 2; substrate.width = helpText.width; substrate.height = helparray[storage.help].substrate.height; game.addChild(helpObj); var _animateHelp = function animateHelp(helpObj) { tween(helpObj, { scaleX: 0.5, scaleY: 0.5 }, { duration: 1500, easing: tween.easeInOut, onFinish: function onFinish() { tween(helpObj, { scaleX: 1, scaleY: 1 }, { duration: 1500, easing: tween.easeInOut, onFinish: function onFinish() { _animateHelp(helpObj); } }); } }); }; _animateHelp(helpObj); game.addChild(substrate); game.addChild(helpText); helpObj.down = function (x, y, obj) { storage.help++; helpObj.destroy(); substrate.destroy(); helpText.destroy(); if (storage.help <= 14) { setHelp(storage.help); } }; return helpObj; } } function setquest() { if (storage.help > 1 && !quest) { var questtext = helparray[storage.help].text; if (typeof helparray[storage.help].quest != 'undefined') { questtext = helparray[storage.help].quest; } quest = new Text2(' QUEST\n' + questtext, { size: 50, fill: helparray[storage.help].color }); quest.x = 625; quest.y = 100; game.addChild(quest); } } var helparray = [{ 'coords': [850, 2732 / 2 + 450], 'text': 'Click on the anvil to improve \nyour Forging skill by 100!', 'color': 'white', 'substrate': { 'alfa': 0.5, 'height': 110 } }, { 'coords': [2048 * 0.75, 2732 * 0.9], 'text': 'Now go to the foundry!', 'color': 'white', 'substrate': { 'alfa': 0.5, 'height': 55 } }, { 'coords': [720, 2732 / 2 + 100], 'text': 'Click on the foundry and raise the \nGrowth rate to 50!\nThen go out to the forge!', 'color': 'white', 'substrate': { 'alfa': 0.5, 'height': 110 } }, { 'coords': [390, 2732 - 300], 'text': 'This is a map you can use to \ntravel the world!', 'color': 'white', 'substrate': { 'alfa': 0.5, 'height': 110 } }, { 'coords': [885, 1220], 'text': 'Go to the crystal mine\n for resources!', 'color': 'white', 'substrate': { 'alfa': 0.5, 'height': 55 } }, { 'coords': [1100, 1000], 'text': 'There are three types of \ncrystals growing in \nthe mine, now we need to \nget 100 blue crystals to forge \nour first sword!', 'color': 'white', 'substrate': { 'alfa': 0.6, 'height': 275 } }, { 'coords': [1030, 1350], 'text': 'Go back to the forge!', 'color': 'white', 'substrate': { 'alfa': 0.5, 'height': 55 } }, { 'coords': [2048 * 0.75, 2732 * 0.9], 'text': "It's time to melt the crystals!", 'color': 'white', 'substrate': { 'alfa': 0.5, 'height': 55 } }, { 'coords': [310, 2732 - 320], 'text': "Click to melt the crystals! \npay attention to the counters on top! \nMelting crystals increases your Growth rate! \nCome back to the forge when you've smelted \n10 blue crystalingots.", 'color': 'white', 'substrate': { 'alfa': 0.5, 'height': 275 } }, { 'coords': [980, 2732 - 300], 'text': "This is your blacksmith's book!", 'color': 'white', 'substrate': { 'alfa': 0.5, 'height': 55 } }, { 'coords': [630, 1050], 'text': 'Follow the recipe and click on the sword to forge it! \nThen explore other recipes and return to the map!', 'color': 'white', 'substrate': { 'alfa': 0.5, 'height': 110 } }, { 'coords': [780, 1500], 'text': "Let's go to the city to sell our sword! \nThe main thing is not to get lost on the way!", 'color': 'white', 'substrate': { 'alfa': 0.5, 'height': 110 } }, { 'coords': [1500, 1300], 'text': "Wow, you're already here! Come to the store!", 'color': 'white', 'substrate': { 'alfa': 0.5, 'height': 55 } }, { 'coords': [1028, 2732 - 280], 'text': "Click here and you will \nsell all forged weapons! \nConvenient, isn't it!? \nYou'll find something else \ninteresting to wear in the store.", 'color': 'white', 'substrate': { 'alfa': 0.5, 'height': 275 } }, { 'coords': [1024, 1800], 'text': "Improve your skills! Forge \ndifferent weapons! become the most \nfamous blacksmith in these parts, \nand the richest of course!", 'color': 'white', 'substrate': { 'alfa': 0.5, 'height': 220 } }]; var goldScore = storage.goldScore || 0; var goldScoreTxt = new Text2('Gold: ' + goldScore, { size: 50, fill: 0xFFFFFF }); goldScoreTxt.anchor.set(0, 0); goldScoreTxt.y = 0; goldScoreTxt.x = 550; 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; LK.gui.topRight.addChild(redCrystalIngotScoreTxt); var redCrystalTwoHandedSwordsText = new Text2(storage.redCrystalTwoHandedSwords.toString(), { size: 50, fill: 0x000000 }); redCrystalTwoHandedSwordsText.anchor.set(0.5, 0.5); redCrystalTwoHandedSwordsText.x = 1248 / 2; redCrystalTwoHandedSwordsText.y = 2732 / 2 + 300; LK.gui.topLeft.addChild(redCrystalTwoHandedSwordsText); var greenAxesText = new Text2(storage.greenAxes.toString(), { size: 50, fill: 0x000000 }); greenAxesText.anchor.set(0.5, 0.5); greenAxesText.x = 2848 / 2; greenAxesText.y = 2732 / 2 + 480; LK.gui.topLeft.addChild(greenAxesText); var blueSwordsText = new Text2(storage.blueSwords.toString(), { size: 50, fill: 0x000000 }); blueSwordsText.anchor.set(0.5, 0.5); blueSwordsText.x = 1248 / 2; blueSwordsText.y = 2732 / 2 + 480; LK.gui.topLeft.addChild(blueSwordsText); var mineInsideBackground; var blueCrystallScore = storage.blueCrystallScore || 0; var automineblueCrystallClicked = storage.automineblueCrystallClicked; var autominegreenCrystallClicked = storage.autominegreenCrystallClicked; var automineredCrystallClicked = storage.automineredCrystallClicked; var autogrowthRateClicked = storage.autogrowthRateClicked; var scoreTxt = new Text2('Blue Crystall: ' + blueCrystallScore, { size: 50, fill: 0xFFFFFF }); scoreTxt.anchor.set(0, 0); scoreTxt.y = 100; LK.gui.topLeft.addChild(scoreTxt); var greenCrystallScore = storage.greenCrystallScore || 0; var greenScoreTxt = new Text2('Green Crystall: ' + greenCrystallScore, { size: 50, fill: 0xFFFFFF }); greenScoreTxt.anchor.set(0, 0); greenScoreTxt.y = 150; 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; LK.gui.topRight.addChild(greenCrystalIngotScoreTxt); var blueCristal; var greenCristal; var redCristal; var blueCrystalIngotScore = storage.blueCrystalIngotScore || 0; var redCrystallScore = storage.redCrystallScore || 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 Crystall: ' + redCrystallScore, { size: 50, fill: 0xFFFFFF }); redScoreTxt.anchor.set(0, 0); redScoreTxt.y = 200; 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; map.interactive = true; map.down = function (x, y, obj) { setHelp(-1); hammer.destroy(); if (storage.forgingSkill >= 10 && storage.help == 4) { if (quest && typeof quest.destroy === 'function') { quest.destroy(); } quest = false; storage.help = 5; setHelp(5); } LK.getSound('mapaudio').play(); map.visible = false; if (mineInsideBackground) { mineInsideBackground.visible = false; mineInsideBackground.destroy(); } if (redCristal) { redCristal.visible = false; redCristal.destroy(); } if (blueCristal) { blueCristal.visible = false; blueCristal.destroy(); } if (greenCristal) { greenCristal.visible = false; greenCristal.destroy(); } var mapScreen = game.addChild(new Container()); var mapBackground = mapScreen.attachAsset('mapbackground', { anchorX: 0.5, anchorY: 0.5, interactive: false }); var cityMap = mapScreen.attachAsset('citymap', { anchorX: 0.5, anchorY: 0.5, interactive: true }); cityMap.x = -250; cityMap.y = 160; cityMap.down = function (x, y, obj) { hammer.destroy(); setHelp(-1); var isolatedScreen = game.addChild(new Container()); mapScreen.visible = false; var cityBackground = isolatedScreen.attachAsset('citybackground', { anchorX: 0.5, anchorY: 0.5 }); cityBackground.x = 0; cityBackground.y = 0; var mapAsset = isolatedScreen.attachAsset('Map', { anchorX: 0.5, anchorY: 0.5, interactive: true }); mapAsset.x = -650; mapAsset.y = 1100; mapAsset.down = function (x, y, obj) { isolatedScreen.visible = false; mapScreen.visible = true; cityBackground.visible = false; mapBackground.visible = true; }; var shop = isolatedScreen.attachAsset('shop', { anchorX: 0.5, anchorY: 0.5, interactive: true }); shop.x = 490; shop.y = -20; setHelp(12); shop.down = function (x, y, obj) { hammer.destroy(); LK.getSound('shopin').play(); var shopScreen = game.addChild(new Container()); isolatedScreen.visible = false; shopScreen.x = 2048 / 2; shopScreen.y = 2732 / 2; var newTools = shopScreen.attachAsset('newTools', { anchorX: 0.5, anchorY: 0.5 }); newTools.x = -650; newTools.y = 1100; newTools.interactive = true; newTools.down = function (x, y, obj) { hammer.destroy(); setHelp(-1); var isolatedScreen = game.addChild(new Container()); var newToolsBackground = isolatedScreen.attachAsset('newToolsBackground', { anchorX: 0.5, anchorY: 0.5 }); newToolsBackground.x = 0; newToolsBackground.y = 0; if (!storage.theBlacksmithsApprentice) { var theBlacksmithsApprentice = isolatedScreen.attachAsset('Theblacksmithsapprentice', { anchorX: 0.5, anchorY: 0.5, interactive: true }); theBlacksmithsApprentice.x = 400; theBlacksmithsApprentice.y = 200; theBlacksmithsApprentice.clicked = storage.theBlacksmithsApprentice; theBlacksmithsApprentice.down = function (x, y, obj) { 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); theBlacksmithsApprentice.intervalId = intervalId; storage.theBlacksmithsApprentice = true; theBlacksmithsApprentice.visible = false; apprenticeText.visible = false; apprenticeCostText.visible = false; } }; 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; isolatedScreen.addChild(apprenticeText); 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; isolatedScreen.addChild(apprenticeCostText); } var newToolsOut = isolatedScreen.attachAsset('newToolsout', { anchorX: 0.5, anchorY: 0.5 }); newToolsOut.x = 0; newToolsOut.y = 1100; newToolsOut.interactive = true; if (!storage.automineblueCrystallClicked) { var automineblueCrystall = isolatedScreen.attachAsset('automineblueCrystall', { anchorX: 0.5, anchorY: 0.5, interactive: true }); automineblueCrystall.x = -400; automineblueCrystall.y = -600; automineblueCrystall.clicked = storage.automineblueCrystallClicked; automineblueCrystall.down = function (x, y, obj) { if (goldScore >= 500 && !automineblueCrystall.clicked) { automineblueCrystall.clicked = true; goldScore -= 500; goldScoreTxt.setText('Gold: ' + goldScore); storage.goldScore = goldScore; var intervalId = LK.setInterval(function () { blueCrystallScore += 1; LK.setScore(blueCrystallScore); storage.blueCrystallScore = blueCrystallScore; scoreTxt.setText('Blue Crystall: ' + LK.getScore()); }, 1000); automineblueCrystall.intervalId = intervalId; storage.automineblueCrystallClicked = true; automineblueCrystall.visible = false; mineBlueCrystallText.visible = false; mineBlueCrystallCostText.visible = false; } }; var mineBlueCrystallText = new Text2('Mine Blue Crystall +1', { size: 50, fill: 0x030303 }); mineBlueCrystallText.anchor.set(0.5, 0.5); mineBlueCrystallText.x = automineblueCrystall.x; mineBlueCrystallText.y = automineblueCrystall.y + 150; isolatedScreen.addChild(mineBlueCrystallText); var mineBlueCrystallCostText = new Text2('500G', { size: 50, fill: 0x030303 }); mineBlueCrystallCostText.anchor.set(0.5, 0.5); mineBlueCrystallCostText.x = mineBlueCrystallText.x; mineBlueCrystallCostText.y = mineBlueCrystallText.y + 50; isolatedScreen.addChild(mineBlueCrystallCostText); } if (!storage.autominegreenCrystallClicked) { var autominegreenCrystall = isolatedScreen.attachAsset('autominegreenCrystall', { anchorX: 0.5, anchorY: 0.5, interactive: true }); autominegreenCrystall.x = -400; autominegreenCrystall.y = -200; autominegreenCrystall.clicked = storage.autominegreenCrystallClicked; autominegreenCrystall.down = function (x, y, obj) { if (goldScore >= 1000 && !autominegreenCrystall.clicked) { autominegreenCrystall.clicked = true; goldScore -= 1000; goldScoreTxt.setText('Gold: ' + goldScore); storage.goldScore = goldScore; var intervalId = LK.setInterval(function () { greenCrystallScore += 1; storage.greenCrystallScore = greenCrystallScore; greenScoreTxt.setText('Green Crystall: ' + greenCrystallScore); }, 1000); autominegreenCrystall.intervalId = intervalId; storage.autominegreenCrystallClicked = true; autominegreenCrystall.visible = false; mineGreenCrystallText.visible = false; mineGreenCrystallCostText.visible = false; } }; var mineGreenCrystallText = new Text2('Mine Green Crystall +1', { size: 50, fill: 0x030303 }); mineGreenCrystallText.anchor.set(0.5, 0.5); mineGreenCrystallText.x = autominegreenCrystall.x; mineGreenCrystallText.y = autominegreenCrystall.y + 150; isolatedScreen.addChild(mineGreenCrystallText); var mineGreenCrystallCostText = new Text2('1000G', { size: 50, fill: 0x030303 }); mineGreenCrystallCostText.anchor.set(0.5, 0.5); mineGreenCrystallCostText.x = mineGreenCrystallText.x; mineGreenCrystallCostText.y = mineGreenCrystallText.y + 50; isolatedScreen.addChild(mineGreenCrystallCostText); } if (!storage.automineredCrystallClicked) { var automineredCrystall = isolatedScreen.attachAsset('automineredCrystall', { anchorX: 0.5, anchorY: 0.5, interactive: true }); automineredCrystall.x = -400; automineredCrystall.y = 200; automineredCrystall.clicked = storage.automineredCrystallClicked; automineredCrystall.down = function (x, y, obj) { if (goldScore >= 2000 && !automineredCrystall.clicked) { automineredCrystall.clicked = true; goldScore -= 2000; goldScoreTxt.setText('Gold: ' + goldScore); storage.goldScore = goldScore; var intervalId = LK.setInterval(function () { redCrystallScore += 1; storage.redCrystallScore = redCrystallScore; redScoreTxt.setText('Red Crystall: ' + redCrystallScore); }, 1000); automineredCrystall.intervalId = intervalId; storage.automineredCrystallClicked = true; automineredCrystall.visible = false; mineRedCrystallText.visible = false; mineRedCrystallCostText.visible = false; } }; var mineRedCrystallText = new Text2('Mine Red Crystall +1', { size: 50, fill: 0x030303 }); mineRedCrystallText.anchor.set(0.5, 0.5); mineRedCrystallText.x = automineredCrystall.x; mineRedCrystallText.y = automineredCrystall.y + 140; isolatedScreen.addChild(mineRedCrystallText); var mineRedCrystallCostText = new Text2('2000G', { size: 50, fill: 0x030303 }); mineRedCrystallCostText.anchor.set(0.5, 0.5); mineRedCrystallCostText.x = mineRedCrystallText.x; mineRedCrystallCostText.y = mineRedCrystallText.y + 50; isolatedScreen.addChild(mineRedCrystallCostText); } if (!storage.multiclickupgrade) { var multiclickupgrade = isolatedScreen.attachAsset('multiclickupgrade', { anchorX: 0.5, anchorY: 0.5, interactive: true }); multiclickupgrade.x = 400; multiclickupgrade.y = -200; multiclickupgrade.down = function (x, y, obj) { if (goldScore >= 700 && !storage.multiclickupgrade) { goldScore -= 700; goldScoreTxt.setText('Gold: ' + goldScore); storage.goldScore = goldScore; storage.multiclickupgrade = true; multiclickupgrade.visible = false; increasedChanceText.visible = false; increasedChanceCostText.visible = false; } }; 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; isolatedScreen.addChild(increasedChanceText); var increasedChanceCostText = new Text2('700G', { size: 50, fill: 0x030303 }); increasedChanceCostText.anchor.set(0.5, 0.5); increasedChanceCostText.x = increasedChanceText.x; increasedChanceCostText.y = increasedChanceText.y + 70; isolatedScreen.addChild(increasedChanceCostText); } if (!storage.autogrowthRateClicked) { var autogrowthRate = isolatedScreen.attachAsset('autogrowthRate', { anchorX: 0.5, anchorY: 0.5, interactive: true }); autogrowthRate.x = 400; autogrowthRate.y = -600; autogrowthRate.clicked = storage.autogrowthRateClicked; autogrowthRate.down = function (x, y, obj) { 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); autogrowthRate.intervalId = intervalId; storage.autogrowthRateClicked = true; autogrowthRate.visible = false; automaticMeltingText.visible = false; automaticMeltingCostText.visible = false; } }; 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; isolatedScreen.addChild(automaticMeltingText); 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; isolatedScreen.addChild(automaticMeltingCostText); } newToolsOut.down = function (x, y, obj) { LK.getSound('booksaudio').play(); isolatedScreen.visible = false; shopScreen.visible = true; }; shopScreen.visible = false; isolatedScreen.x = 2048 / 2; isolatedScreen.y = 2732 / 2; hammer = game.addChild(LK.getAsset('hammer', { anchorX: 0.5, anchorY: 0.5, scaleX: -1 })); }; var shopBackground = shopScreen.attachAsset('shopbackground', { anchorX: 0.5, anchorY: 0.5 }); shopBackground.x = 0; shopBackground.y = 0; var newBuildings = shopScreen.attachAsset('sellweapons', { anchorX: 0.5, anchorY: 0.5, interactive: true }); newBuildings.down = function (x, y, obj) { var initialBlueSwords = storage.blueSwords; var initialGreenAxes = storage.greenAxes; var initialRedTwoHandedSwords = storage.redCrystalTwoHandedSwords; goldScore += storage.blueSwords * 50; storage.blueSwords = 0; blueSwordsText.setText('0'); goldScore += storage.greenAxes * 150; storage.greenAxes = 0; greenAxesText.setText('0'); goldScore += storage.redCrystalTwoHandedSwords * 600; storage.redCrystalTwoHandedSwords = 0; redCrystalTwoHandedSwordsText.setText('0'); goldScoreTxt.setText('Gold: ' + goldScore); storage.goldScore = goldScore; if (initialBlueSwords > 0 || initialGreenAxes > 0 || initialRedTwoHandedSwords > 0) { LK.getSound('gold').play(); for (var i = 0; i < 5; i++) { var goldAsset = game.addChild(LK.getAsset('goldstore', { anchorX: 0.5, anchorY: 0.5 })); goldAsset.x = shopScreen.x + newBuildings.x + (Math.random() * 50 - 25); goldAsset.y = shopScreen.y + newBuildings.y; (function (goldAsset) { var speed = 3 + Math.random() * 3; goldAsset.update = function () { goldAsset.y -= speed; }; LK.setTimeout(function () { goldAsset.destroy(); }, 1000); })(goldAsset); } if (storage.help == 13) { if (quest && typeof quest.destroy === 'function') { quest.destroy(); } quest = false; storage.help = 14; setHelp(14); } } }; newBuildings.x = 0; newBuildings.y = 1100; var shopOut = shopScreen.attachAsset('shopout', { anchorX: 0.5, anchorY: 0.5, interactive: true }); shopOut.x = 650; shopOut.y = 1100; shopOut.down = function (x, y, obj) { setHelp(14); LK.getSound('doors').play(); shopScreen.visible = false; mapBackground.visible = false; mapScreen.visible = true; isolatedScreen.visible = true; }; setHelp(13); hammer = game.addChild(LK.getAsset('hammer', { anchorX: 0.5, anchorY: 0.5, scaleX: -1 })); }; isolatedScreen.x = 2048 / 2; isolatedScreen.y = 2732 / 2; hammer = game.addChild(LK.getAsset('hammer', { anchorX: 0.5, anchorY: 0.5, scaleX: -1 })); }; var anvilMap = mapScreen.attachAsset('anvilmap', { anchorX: 0.5, anchorY: 0.5, interactive: true }); var mine = mapScreen.attachAsset('mine', { anchorX: 0.5, anchorY: 0.5, interactive: true }); mine.x -= 150; mine.y -= 150; mine.down = function (x, y, obj) { if (storage.help == 5) { if (quest && typeof quest.destroy === 'function') { quest.destroy(); } quest = false; storage.help = 6; setHelp(6); } hammer.destroy(); setHelp(-1); var mineScreen = game.addChild(new Container()); map.visible = true; mapScreen.visible = false; background.visible = false; mineInsideBackground = mineScreen.attachAsset('mineinsidebackground', { anchorX: 0.5, anchorY: 0.5, interactive: false, zIndex: -1 }); setHelp(5); redCristal = mineScreen.addChild(new RedCristal()); redCristal.x -= 510; redCristal.y += 490; greenCristal = mineScreen.addChild(new GreenCristal()); greenCristal.x -= -510; greenCristal.y += 10; blueCristal = mineScreen.addChild(new BlueCristal()); blueCristal.x += 490; blueCristal.y += -60; blueCristal.x -= 410; blueCristal.y -= 310; mineScreen.x = 2048 / 2; mineScreen.y = 2732 / 2; hammer = game.addChild(LK.getAsset('hammer', { anchorX: 0.5, anchorY: 0.5, scaleX: -1 })); }; anvilMap.down = function (x, y, obj) { if (storage.help == 7) { if (quest && typeof quest.destroy === 'function') { quest.destroy(); } quest = false; storage.help = 8; setHelp(8); } setHelp(-1); gameScreen.visible = true; map.visible = true; gameScreenBackground = gameScreen.attachAsset('gameScreenBackground', { anchorX: 0.5, anchorY: 0.5 }); setHelp(0); setHelp(1); setHelp(7); setHelp(10); var recipes = gameScreenBackground.attachAsset('recipes', { anchorX: 0.5, anchorY: 0.5 }); recipes.x = gameScreenBackground.width / 2 - 1050; recipes.y = gameScreenBackground.height / 2 + 150; if (mineInsideBackground) { mineInsideBackground.visible = false; mineInsideBackground.destroy(); } if (blueCristal) { blueCristal.visible = false; blueCristal.destroy(); } if (greenCristal) { greenCristal.visible = false; greenCristal.destroy(); } if (redCristal) { redCristal.visible = false; redCristal.destroy(); } mapScreen.visible = false; counterText.visible = true; growthRateText.visible = true; }; setHelp(-1); gameScreen.visible = false; background.visible = false; mapScreen.x = 2048 / 2; mapScreen.y = 2732 / 2; setHelp(3); setHelp(4); setHelp(6); setHelp(11); hammer = game.addChild(LK.getAsset('hammer', { anchorX: 0.5, anchorY: 0.5, scaleX: -1 })); }; var growthRateText; var growthRateCounter = storage.growthRate; 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 = game.addChild(new Container()); var newGame = game.addChild(new Container()); newGame.x = 2650 / 2 + 100; newGame.y = 2680 * 4.2 / 5; var title = game.addChild(LK.getAsset('title', { anchorX: 0.5, anchorY: 0.5 })); title.x = 2048 / 2; title.y = 3200 / 5; var newGameText = newGame.attachAsset('newGameText', { anchorX: 0.5, anchorY: 0.5, stroke: 0xFFFFFF, strokeThickness: 5 }); var continueText = game.addChild(LK.getAsset('continueText', { anchorX: 0.5, anchorY: 0.5 })); continueText.x = newGame.x - newGame.width - 500; continueText.y = newGame.y; continueText.interactive = true; continueText.down = function (x, y, obj) { startgame(); }; var greenAxeClicks = storage.greenAxeClicks; var redCrystalTwoHandedSwordClicks = storage.redCrystalTwoHandedSwordClicks; function startgame() { setquest(); title.destroy(); hammer.destroy(); gameScreen = game.addChild(new Container()); gameScreen.x = 2048 / 2; gameScreen.y = 2732 / 2; gameScreenBackground = gameScreen.attachAsset('gameScreenBackground', { anchorX: 0.5, anchorY: 0.5 }); var recipes = gameScreenBackground.attachAsset('recipes', { anchorX: 0.5, anchorY: 0.5, interactive: true }); recipes.down = function (x, y, obj) { setHelp(-1); hammer.destroy(); LK.getSound('booksaudio').play(); var recipesScreen = game.addChild(new Container()); map.visible = false; var recipesBackground = recipesScreen.attachAsset('recipesbackground', { anchorX: 0.5, anchorY: 0.5 }); recipesBackground.x = 2048 / 2; recipesBackground.y = 2732 / 2; var blueCrystalSword = recipesScreen.addChild(new BlueCrystalSword()); blueCrystalSword.x = 1248 / 2; blueCrystalSword.y = 2132 / 2; setHelp(10); var swordsInStockText = new Text2('Swords in stock', { size: 50, fill: 0x000000 }); swordsInStockText.anchor.set(0.5, 0.5); swordsInStockText.x = 1248 / 2; swordsInStockText.y = 2732 / 2 + 400; var axeInStockText = new Text2('Axe in stock', { size: 50, fill: 0x000000 }); axeInStockText.anchor.set(0.5, 0.5); axeInStockText.x = 2848 / 2; axeInStockText.y = 2732 / 2 + 400; recipesScreen.addChild(axeInStockText); recipesScreen.addChild(swordsInStockText); blueSwordsText.x = 1248 / 2; blueSwordsText.y = swordsInStockText.y + 80; recipesScreen.addChild(blueSwordsText); var greenAxe = recipesScreen.addChild(new GreenAxe()); greenAxe.x = 2848 / 2; greenAxe.y = 2132 / 2; greenAxesText.x = 2848 / 2; greenAxesText.y = swordsInStockText.y + 80; recipesScreen.addChild(greenAxesText); var greenAxeClicksText = new Text2('(current ' + greenAxeClicks + ')', { size: 50, fill: 0x000000, alpha: 0.5 }); greenAxeClicksText.anchor.set(0.5, 0.5); greenAxeClicksText.x = 2848 / 2 - 150; greenAxeClicksText.y = 2732 / 2 + 330; recipesScreen.addChild(greenAxeClicksText); var blueCrystalSwordDescription = new Text2('"Blue Crystal Sword"\n Forging Skill 100.\n 10 blue crystal ingots +\n 100 clicks on the recipe', { size: 50, fill: 0x000000, alpha: 0.5 }); blueCrystalSwordDescription.anchor.set(0.5, 0.5); blueCrystalSwordDescription.x = 1248 / 2; blueCrystalSwordDescription.y = 2732 / 2 + 200; recipesScreen.addChild(blueCrystalSwordDescription); var blueCrystalSwordClicks = new Text2('(current ' + storage.blueswordsclick + ')', { size: 50, fill: 0x000000, alpha: 0.5 }); blueCrystalSwordClicks.anchor.set(0.5, 0.5); blueCrystalSwordClicks.x = 1248 / 2 - 150; blueCrystalSwordClicks.y = 2732 / 2 + 330; recipesScreen.addChild(blueCrystalSwordClicks); var axeOfGreenCrystalsDescription = new Text2('"Axe of Green Crystals"\n Forging Skill 4k.\n 15 green crystal ingots +\n 150 clicks on the recipe', { size: 50, fill: 0x000000, alpha: 0.5 }); axeOfGreenCrystalsDescription.anchor.set(0.5, 0.5); axeOfGreenCrystalsDescription.x = 2848 / 2; axeOfGreenCrystalsDescription.y = 2732 / 2 + 200; recipesScreen.addChild(axeOfGreenCrystalsDescription); var recipesNext = recipesScreen.attachAsset('recipesnext', { anchorX: 0.5, anchorY: 0.5, interactive: true }); recipesNext.x = 3248 / 2; recipesNext.y = 5000 / 2; recipesNext.down = function (x, y, obj) { var nextScreen = game.addChild(new Container()); LK.getSound('paper').play(); recipesScreen.visible = false; var recipesNextBackgr1 = nextScreen.attachAsset('recipesnextbackgr1', { anchorX: 0.5, anchorY: 0.5 }); recipesNextBackgr1.x = 2048 / 2; recipesNextBackgr1.y = 2732 / 2; hammer.destroy(); var recipesPrev = nextScreen.attachAsset('recipesprev', { anchorX: 0.5, anchorY: 0.5, interactive: true }); recipesPrev.x = 888 / 2; recipesPrev.y = 5000 / 2; recipesPrev.down = function (x, y, obj) { LK.getSound('paper').play(); nextScreen.visible = false; recipesScreen.visible = true; }; var blueingotrecipe = nextScreen.attachAsset('blueingotrecipe', { anchorX: 0.5, anchorY: 0.5 }); blueingotrecipe.x = 1450; blueingotrecipe.y = 750; var blueIngotRecipeText = new Text2('"BlueCrystalIngot"\n Growth rate 100.\n 10 Blue Crystal', { size: 50, fill: 0x000000 }); blueIngotRecipeText.anchor.set(0.5, 0.5); blueIngotRecipeText.x = blueingotrecipe.x; blueIngotRecipeText.y = blueingotrecipe.y + 150; nextScreen.addChild(blueIngotRecipeText); var greeningotrecipe = nextScreen.attachAsset('greeningotrecipe', { anchorX: 0.5, anchorY: 0.5 }); greeningotrecipe.x = 1450; greeningotrecipe.y = 1150; var greeningotrecipeText = new Text2('"Greeningotrecipe"\n Growth rate 2000.\n 10 Green Crystal', { size: 50, fill: 0x000000 }); greeningotrecipeText.anchor.set(0.5, 0.5); greeningotrecipeText.x = greeningotrecipe.x; greeningotrecipeText.y = greeningotrecipe.y + 160; nextScreen.addChild(greeningotrecipeText); var redingotrecipe = nextScreen.attachAsset('redingotrecipe', { anchorX: 0.5, anchorY: 0.5 }); redingotrecipe.x = 1450; redingotrecipe.y = 1500; var redingotrecipeText = new Text2('"Redingotrecipe"\n Growth rate 7000.\n 10 Red Crystal', { size: 50, fill: 0x000000 }); redingotrecipeText.anchor.set(0.5, 0.5); redingotrecipeText.x = redingotrecipe.x; redingotrecipeText.y = redingotrecipe.y + 150; nextScreen.addChild(redingotrecipeText); var redCrystalTwoHandedSword = nextScreen.addChild(new RedCrystalTwoHandedSword()); redCrystalTwoHandedSword.x = 1248 / 2; redCrystalTwoHandedSword.y = 2132 / 2; var twoHandSwordsInStockText = new Text2('Two-hand Swords in stock', { size: 50, fill: 0x000000 }); twoHandSwordsInStockText.anchor.set(0.5, 0.5); twoHandSwordsInStockText.x = 1248 / 2; twoHandSwordsInStockText.y = 2732 / 2 + 400; nextScreen.addChild(twoHandSwordsInStockText); redCrystalTwoHandedSwordsText.x = 1248 / 2; redCrystalTwoHandedSwordsText.y = twoHandSwordsInStockText.y + 80; nextScreen.addChild(redCrystalTwoHandedSwordsText); var redCrystalTwoHandedSwordDescription = new Text2('"Redcrystaltwo-\n handedswordrecipe"\n Forging Skill 10k.\n 75 red crystal ingots +\n 200 clicks on the anvil', { size: 50, fill: 0x000000 }); redCrystalTwoHandedSwordDescription.anchor.set(0.5, 0.5); redCrystalTwoHandedSwordDescription.x = 1248 / 2; redCrystalTwoHandedSwordDescription.y = 2732 / 2 + 200; nextScreen.addChild(redCrystalTwoHandedSwordDescription); var redCrystalTwoHandedSwordClicksText = new Text2('(current ' + redCrystalTwoHandedSwordClicks + ')', { size: 50, fill: 0x000000, alpha: 0.5 }); redCrystalTwoHandedSwordClicksText.anchor.set(0.5, 0.5); redCrystalTwoHandedSwordClicksText.x = 1248 / 2 - 135; redCrystalTwoHandedSwordClicksText.y = 2732 / 2 + 330; nextScreen.addChild(redCrystalTwoHandedSwordClicksText); hammer = game.addChild(LK.getAsset('hammer', { anchorX: 0.5, anchorY: 0.5, scaleX: -1 })); }; var recipesOutGraphics = recipesScreen.attachAsset('recipesout', { anchorX: 0.5, anchorY: 0.5, interactive: true }); recipesOutGraphics.x = 2048 / 2; recipesOutGraphics.y = 2732 / 2 + 1100; recipesOutGraphics.down = function (x, y, obj) { recipesOutGraphics.visible = false; gameScreen.visible = true; map.visible = true; recipesScreen.visible = false; setHelp(0); setHelp(1); setHelp(3); setHelp(7); if (storage.blueSwords >= 1 && storage.help == 11) { setHelp(11); } }; gameScreen.visible = false; }; recipes.x = gameScreenBackground.width / 2 - 1050; recipes.y = gameScreenBackground.height / 2 + 150; map.visible = true; newGame.visible = false; continueText.visible = false; background.visible = false; var anvil = gameScreen.addChild(new Anvil()); anvil.clickCounter = storage.forgingSkill; counterText.setText('Forging skill: ' + anvil.clickCounter); anvil.x = gameScreenBackground.x - 100; anvil.y = gameScreenBackground.y + 500; var magicNursery = gameScreen.addChild(new Door()); magicNursery.x = 2048 / 4; magicNursery.y = 2732 / 2.5; setHelp(0); setHelp(1); setHelp(3); setHelp(7); setHelp(9); hammer = game.addChild(LK.getAsset('hammer', { anchorX: 0.5, anchorY: 0.5, scaleX: -1 })); } newGame.interactive = true; newGame.down = function (x, y, obj) { if (newgameclearInterval.length > 0) { for (var i = 0; i < newgameclearInterval.length; i++) { LK.clearInterval(newgameclearInterval[i]); } } storage.automineblueCrystallClicked = false; storage.autominegreenCrystallClicked = false; storage.automineredCrystallClicked = false; storage.autogrowthRateClicked = false; storage.theBlacksmithsApprentice = false; storage.multiclickupgrade = false; storage.help = 0; storage.forgingSkill = 0; storage.growthRate = 0; storage.blueCrystalIngotScore = 0; storage.blueCrystallScore = 0; storage.greenCrystalIngotScore = 0; storage.redCrystallScore = 0; storage.redCrystalIngotScore = 0; storage.greenCrystallScore = 0; storage.blueSwords = 0; storage.goldScore = 0; storage.blueswordsclick = 0; storage.greenAxeClicks = 0; storage.redCrystalTwoHandedSwordClicks = 0; redCrystalIngotScore = 0; blueCrystallScore = 0; greenCrystallScore = 0; greenCrystalIngotScore = 0; blueCrystalIngotScore = 0; redCrystallScore = 0; growthRateCounter = 0; goldScore = 0; growthRateText.setText('Growth rate: ' + storage.growthRate); counterText.setText('Forging skill: ' + storage.forgingSkill); scoreTxt.setText('Blue Crystall: ' + blueCrystallScore); greenScoreTxt.setText('Green Crystall: ' + greenCrystallScore); redScoreTxt.setText('Red Crystall: ' + redCrystallScore); blueCrystalIngotScoreTxt.setText('BlueCrystalIngot: ' + storage.blueCrystalIngotScore); greenCrystalIngotScoreTxt.setText('GreenCrystalIngot: ' + storage.greenCrystalIngotScore); redCrystalIngotScoreTxt.setText('RedCrystalIngot: ' + storage.redCrystallScore); goldScoreTxt.setText('Gold: ' + goldScore); startgame(); }; var counterText = new Text2('Forging skill: ' + storage.forgingSkill, { size: 50, fill: 0xFFFFFF }); 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; growthRateText.x = 0; var hammer = game.addChild(LK.getAsset('hammer', { anchorX: 0.5, anchorY: 0.5, scaleX: -1 })); function updateHammerPosition(x, y) { if (hammer) { hammer.x = x; hammer.y = y; } } var newgameclearInterval = []; if (automineblueCrystallClicked) { var intervalId = LK.setInterval(function () { blueCrystallScore += 1; LK.setScore(blueCrystallScore); storage.blueCrystallScore = blueCrystallScore; scoreTxt.setText('Blue Crystall: ' + LK.getScore()); }, 1000); newgameclearInterval.push(intervalId); } if (autominegreenCrystallClicked) { var intervalId = LK.setInterval(function () { greenCrystallScore += 1; storage.greenCrystallScore = greenCrystallScore; greenScoreTxt.setText('Green Crystall: ' + greenCrystallScore); }, 1000); newgameclearInterval.push(intervalId); } if (automineredCrystallClicked) { var intervalId = LK.setInterval(function () { redCrystallScore += 1; storage.redCrystallScore = redCrystallScore; redScoreTxt.setText('Red Crystall: ' + redCrystallScore); }, 1000); newgameclearInterval.push(intervalId); } if (autogrowthRateClicked) { var intervalId = LK.setInterval(function () { growthRateCounter += 1; growthRateText.setText('Growth rate: ' + growthRateCounter); storage.growthRate = growthRateCounter; }, 1000); newgameclearInterval.push(intervalId); } if (storage.theBlacksmithsApprentice) { var intervalId = LK.setInterval(function () { storage.forgingSkill += 1; counterText.setText('Forging skill: ' + storage.forgingSkill); }, 1000); newgameclearInterval.push(intervalId); } var seconds = Math.floor(Date.now() / 1000) - storage.lastgametime; if (seconds * 60 * 5 > 18000) { seconds = 18000; } if (seconds > 0) { if (storage.automineblueCrystallClicked) { blueCrystallScore += seconds; storage.blueCrystallScore += seconds; } if (storage.autominegreenCrystallClicked) { greenCrystallScore += seconds; storage.greenCrystallScore += seconds; } if (storage.automineredCrystallClicked) { redCrystallScore += seconds; storage.redCrystallScore += seconds; } if (storage.autogrowthRateClicked) { growthRateCounter += seconds; storage.growthRate += seconds; } if (storage.theBlacksmithsApprentice) { storage.forgingSkill += seconds; } } var intervalId = LK.setInterval(function () { storage.lastgametime = Math.floor(Date.now() / 1000); }, 1000); game.move = function (x, y, obj) { updateHammerPosition(x, y); }; game.down = function (x, y, obj) { LK.getSound('hammer').play(); tween(hammer, { rotation: -Math.PI / 2 }, { duration: 125, easing: tween.easeInOut, onFinish: function onFinish() { 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) { star.update = function () { star.y -= 5; if (star.x < hammer.x) { star.x += 2; } else { star.x -= 2; } }; LK.setTimeout(function () { star.destroy(); }, 250); })(star); } tween(hammer, { rotation: 0 }, { duration: 125, easing: tween.easeInOut }); } }); };
===================================================================
--- original.js
+++ change.js
@@ -19,71 +19,62 @@
multiclickupgrade: false,
theBlacksmithsApprentice: false,
automineredCrystallClicked: false,
lastgametime: 0,
- help: 0
+ help: 0,
+ goldScore: 0,
+ greenCrystallScore: 0,
+ redCrystallScore: 0,
+ redCrystalIngotScore: 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.6,
anchorY: 0.6,
- alpha: 0.0 // Make the anvil fully transparent
+ alpha: 0.0
});
- // 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) {
+ if (Math.random() < shans) {
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
+ newAsset.destroy();
}
});
}
- // 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
+ counterText.tint = 0x00FF00;
} else if (self.clickCounter >= 2000 && self.clickCounter < 15000) {
- counterText.tint = 0x0000FF; // Blue
+ counterText.tint = 0x0000FF;
} else if (self.clickCounter >= 15000 && self.clickCounter < 30000) {
- counterText.tint = 0x800080; // Purple
+ counterText.tint = 0x800080;
} else if (self.clickCounter >= 30000) {
- counterText.tint = 0xcc7c04; // Purple
+ counterText.tint = 0xcc7c04;
}
if (storage.forgingSkill >= 100 && storage.help == 1) {
if (quest && typeof quest.destroy === 'function') {
quest.destroy();
@@ -92,35 +83,31 @@
setHelp(1);
}
};
});
-// 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
+ interactive: true
});
- // Define the 'down' event handler for blueCristal
self.down = function (x, y, obj) {
- // Increment the score by 1
blueCrystallScore += 1;
if (blueCrystallScore >= 100 && storage.help == 6) {
if (quest && typeof quest.destroy === 'function') {
quest.destroy();
}
quest = false;
+ storage.help = 7;
+ setHelp(7);
}
LK.setScore(blueCrystallScore);
storage.blueCrystallScore = blueCrystallScore;
- // Update the score text
scoreTxt.setText('Blue Crystall: ' + LK.getScore());
- scoreTxt.visible = true; // Ensure the score text remains visible
+ scoreTxt.visible = true;
};
});
-// Create a new class for the BlueCrystalIngot object
var BlueCrystalIngot = Container.expand(function () {
var self = Container.call(this);
var blueCrystalIngotGraphics = self.attachAsset('blueCrystalIngot', {
anchorX: 0.5,
@@ -140,119 +127,118 @@
}
storage.blueCrystallScore = blueCrystallScore;
LK.setScore(blueCrystallScore);
scoreTxt.setText('Blue Crystall: ' + LK.getScore());
- // Проверка завершения квеста 9
if (blueCrystalIngotScore >= 10 && storage.help == 9) {
if (quest && typeof quest.destroy === 'function') {
- quest.destroy(); // Уничтожаем квест 9
+ quest.destroy();
}
quest = false;
- storage.help = 10; // Явно устанавливаем шаг 10
- setHelp(10); // Вызываем подсказку 10
+ storage.help = 10;
+ setHelp(10);
}
}
};
});
-// Create a new class for the Door object
+var BlueCrystalSword = Container.expand(function () {
+ var self = Container.call(this);
+ var blueCrystalSwordGraphics = self.attachAsset('bluecrystalswordrecipe', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ interactive: true
+ });
+ self.down = function (x, y, obj) {
+ if (storage.forgingSkill >= 100 && storage.blueCrystalIngotScore >= 10) {
+ storage.blueswordsclick += 1;
+ if (storage.blueswordsclick >= 100) {
+ storage.blueswordsclick = 0;
+ storage.blueSwords += 1;
+ blueSwordsText.setText(storage.blueSwords.toString());
+ storage.forgingSkill += 100;
+ counterText.setText('Forging skill: ' + storage.forgingSkill);
+ storage.blueCrystalIngotScore -= 10;
+ blueCrystalIngotScore = storage.blueCrystalIngotScore;
+ blueCrystalIngotScoreTxt.setText('BlueCrystalIngot: ' + blueCrystalIngotScore);
+ if (storage.blueSwords >= 1 && storage.help == 11) {
+ if (quest && typeof quest.destroy === 'function') {
+ quest.destroy();
+ }
+ quest = false;
+ storage.help = 12;
+ setHelp(12);
+ }
+ }
+ blueCrystalSwordClicks.setText('(current ' + storage.blueswordsclick + ')');
+ }
+ };
+});
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) {
- if (storage.help == 2) {
+ if (storage.help == 2 || storage.help == 8) {
if (quest && typeof quest.destroy === 'function') {
quest.destroy();
}
quest = false;
}
- if (storage.help == 8) {
- if (quest && typeof quest.destroy === 'function') {
- quest.destroy();
- }
- quest = false;
- }
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
+ scaleY: 2
});
- // 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', {
+ var forgeOfMatter = game.magicNursery.attachAsset('growthRate', {
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
+ alpha: 0.0
});
- // 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
+ var blueCrystalIngot = game.magicNursery.addChild(new BlueCrystalIngot());
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 + 350; // Move the redCristalIngot asset 100 pixels to the right
+ redCrystalIngot.x = 1300 / 2 + 350;
redCrystalIngot.y = 4820 / 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;
- // Center the growthRate asset in the magicNursery screen
var growthRate = game.magicNursery.addChild(LK.getAsset('growthRate', {
anchorX: 0.7,
anchorY: 0.7
}));
growthRate.x = 780;
growthRate.y = 1500;
- // Define the 'down' event handler for ForgeOfMatter
forgeOfMatter.down = function (x, y, obj) {
- // Increment the click counter
storage.growthRate++;
- // Update the text object with the click counter and label
growthRateText.setText('Growth rate: ' + storage.growthRate);
if (storage.growthRate >= 50 && storage.help == 3) {
if (quest && typeof quest.destroy === 'function') {
quest.destroy();
}
quest = false;
+ storage.help = 4;
+ setHelp(4);
}
};
forgeOfMatter.x = 1100 / 1.5;
forgeOfMatter.y = 2000 / 1.5;
- // 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;
setHelp(2);
setHelp(8);
@@ -262,89 +248,93 @@
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;
setHelp(0);
setHelp(1);
setHelp(3);
setHelp(9);
- // Recreate the hammer asset
hammer = game.addChild(LK.getAsset('hammer', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: -1
}));
};
});
-// Create a new class for the GreenCristal object
+var GreenAxe = Container.expand(function () {
+ var self = Container.call(this);
+ var greenAxeGraphics = self.attachAsset('axeOfGreenCrystalsRecipe', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ interactive: true
+ });
+ self.down = function (x, y, obj) {
+ if (storage.forgingSkill >= 4000 && storage.greenCrystalIngotScore >= 15) {
+ greenAxeClicks += 1;
+ if (greenAxeClicks >= 150) {
+ greenAxeClicks = 0;
+ storage.greenAxes += 1;
+ greenAxesText.setText(storage.greenAxes.toString());
+ storage.forgingSkill += 150;
+ counterText.setText('Forging skill: ' + storage.forgingSkill);
+ storage.greenCrystalIngotScore -= 15;
+ greenCrystalIngotScore = storage.greenCrystalIngotScore;
+ greenCrystalIngotScoreTxt.setText('GreenCrystalIngot: ' + greenCrystalIngotScore);
+ }
+ greenAxeClicksText.setText('(current ' + greenAxeClicks + ')');
+ storage.greenAxeClicks = greenAxeClicks;
+ }
+ };
+});
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
+ interactive: true
});
- // Define the 'down' event handler for greenCristal
self.down = function (x, y, obj) {
- // Increment the score by 1
greenCrystallScore += 1;
LK.setScore(greenCrystallScore);
storage.greenCrystallScore = greenCrystallScore;
- // Update the score text
greenScoreTxt.setText('Green Crystall: ' + greenCrystallScore);
- greenScoreTxt.visible = true; // Ensure the score text remains visible
+ greenScoreTxt.visible = true;
};
});
-// 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
+ interactive: true
});
- // Define the 'down' event handler for greenCrystalIngot
self.down = function (x, y, obj) {
if (storage.growthRate >= 3000 && greenCrystallScore >= 15) {
- 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
+ storage.growthRate += 10;
+ growthRateText.setText('Growth rate: ' + storage.growthRate);
greenCrystalIngotScore += 1;
greenCrystalIngotScoreTxt.setText('GreenCrystalIngot: ' + greenCrystalIngotScore);
storage.greenCrystalIngotScore = greenCrystalIngotScore;
- // Decrement the GreenCristal score by 100
greenCrystallScore -= 15;
if (greenCrystallScore < 0) {
greenCrystallScore = 0;
}
- storage.greenCrystallScore = greenCrystallScore; // Persist the decrement
+ storage.greenCrystallScore = greenCrystallScore;
greenScoreTxt.setText('Green Crystall: ' + greenCrystallScore);
}
};
});
@@ -356,79 +346,82 @@
interactive: true
});
self.down = function (x, y, obj) {};
});
-// Create a new class for the RecipesScreen object
-var RecipesScreen = Container.expand(function () {
- var self = Container.call(this);
-});
-// 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
+ interactive: true
});
- // Define the 'down' event handler for redCristal
self.down = function (x, y, obj) {
- // Increment the score by 1
redCrystallScore += 1;
LK.setScore(redCrystallScore);
storage.redCrystallScore = redCrystallScore;
- // Update the score text
redScoreTxt.setText('Red Crystall: ' + redCrystallScore);
- redScoreTxt.visible = true; // Ensure the score text remains visible
+ redScoreTxt.visible = true;
};
});
-// 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
+ interactive: true
});
- // Define the 'down' event handler for redCrystalIngot
self.down = function (x, y, obj) {
- // Decrement the RedCristal score by 100
if (storage.growthRate >= 9000 && redCrystallScore >= 20) {
- // Increment the RedCrystalIngot score by 1
+ storage.growthRate += 20;
+ growthRateText.setText('Growth rate: ' + storage.growthRate);
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;
redCrystallScore -= 20;
- storage.redCrystallScore = redCrystallScore; // Persist the decrement
+ if (redCrystallScore < 0) {
+ redCrystallScore = 0;
+ }
+ storage.redCrystallScore = redCrystallScore;
redScoreTxt.setText('Red Crystall: ' + redCrystallScore);
}
};
});
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
+ interactive: true
});
+ self.down = function (x, y, obj) {
+ if (storage.forgingSkill >= 10000 && storage.redCrystalIngotScore >= 75) {
+ redCrystalTwoHandedSwordClicks += 1;
+ if (redCrystalTwoHandedSwordClicks >= 200) {
+ redCrystalTwoHandedSwordClicks = 0;
+ storage.redCrystalTwoHandedSwords += 1;
+ redCrystalTwoHandedSwordsText.setText(storage.redCrystalTwoHandedSwords.toString());
+ storage.forgingSkill += 210;
+ counterText.setText('Forging skill: ' + storage.forgingSkill);
+ storage.redCrystalIngotScore -= 75;
+ redCrystalIngotScore = storage.redCrystalIngotScore;
+ redCrystalIngotScoreTxt.setText('RedCrystalIngot: ' + redCrystalIngotScore);
+ }
+ 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 helpObj = false;
var helpText = false;
var substrate = false;
var quest = false;
@@ -510,8 +503,11 @@
storage.help++;
helpObj.destroy();
substrate.destroy();
helpText.destroy();
+ if (storage.help <= 14) {
+ setHelp(storage.help);
+ }
};
return helpObj;
}
}
@@ -597,9 +593,8 @@
}, {
'coords': [310, 2732 - 320],
'text': "Click to melt the crystals! \npay attention to the counters on top! \nMelting crystals increases your Growth rate! \nCome back to the forge when you've smelted \n10 blue crystalingots.",
'color': 'white',
- //'quest': 'go 10 crystal',
'substrate': {
'alfa': 0.5,
'height': 275
}
@@ -658,83 +653,75 @@
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
-}
+goldScoreTxt.x = 550;
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
+redCrystalIngotScoreTxt.y = 100;
LK.gui.topRight.addChild(redCrystalIngotScoreTxt);
-//{0.1}
var redCrystalTwoHandedSwordsText = new Text2(storage.redCrystalTwoHandedSwords.toString(), {
size: 50,
- fill: 0x000000 // Black color
+ fill: 0x000000
});
redCrystalTwoHandedSwordsText.anchor.set(0.5, 0.5);
redCrystalTwoHandedSwordsText.x = 1248 / 2;
-redCrystalTwoHandedSwordsText.y = 2732 / 2 + 300; // Position below the 'Two-hand Swords in stock' text
+redCrystalTwoHandedSwordsText.y = 2732 / 2 + 300;
LK.gui.topLeft.addChild(redCrystalTwoHandedSwordsText);
-// Define greenAxesText globally to fix the reference error
var greenAxesText = new Text2(storage.greenAxes.toString(), {
size: 50,
- fill: 0x000000 // Black color
+ fill: 0x000000
});
greenAxesText.anchor.set(0.5, 0.5);
greenAxesText.x = 2848 / 2;
-greenAxesText.y = 2732 / 2 + 480; // Position below the 'Axe in stock' text
+greenAxesText.y = 2732 / 2 + 480;
LK.gui.topLeft.addChild(greenAxesText);
-// Removed the 'current underfiend' text from the screen
var blueSwordsText = new Text2(storage.blueSwords.toString(), {
size: 50,
- fill: 0x000000 // Black color
+ fill: 0x000000
});
blueSwordsText.anchor.set(0.5, 0.5);
blueSwordsText.x = 1248 / 2;
-blueSwordsText.y = 2732 / 2 + 480; // Position below the 'Swords in stock' text
+blueSwordsText.y = 2732 / 2 + 480;
LK.gui.topLeft.addChild(blueSwordsText);
var mineInsideBackground;
var blueCrystallScore = storage.blueCrystallScore || 0;
var automineblueCrystallClicked = storage.automineblueCrystallClicked;
var autominegreenCrystallClicked = storage.autominegreenCrystallClicked;
-var autominegreenCrystallClicked = storage.autominegreenCrystallClicked;
var automineredCrystallClicked = storage.automineredCrystallClicked;
var autogrowthRateClicked = storage.autogrowthRateClicked;
var scoreTxt = new Text2('Blue Crystall: ' + blueCrystallScore, {
size: 50,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0, 0);
-scoreTxt.y = 100; // Move the score text 100 pixels down
+scoreTxt.y = 100;
LK.gui.topLeft.addChild(scoreTxt);
var greenCrystallScore = storage.greenCrystallScore || 0;
var greenScoreTxt = new Text2('Green Crystall: ' + greenCrystallScore, {
size: 50,
fill: 0xFFFFFF
});
greenScoreTxt.anchor.set(0, 0);
-greenScoreTxt.y = 150; // Position below the Blue Crystall score
+greenScoreTxt.y = 150;
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
+greenCrystalIngotScoreTxt.y = 50;
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 blueCristal;
+var greenCristal;
+var redCristal;
+var blueCrystalIngotScore = storage.blueCrystalIngotScore || 0;
var redCrystallScore = storage.redCrystallScore || 0;
var blueCrystalIngotScoreTxt = new Text2('BlueCrystalIngot: ' + blueCrystalIngotScore, {
size: 50,
fill: 0xFFFFFF
@@ -746,152 +733,126 @@
size: 50,
fill: 0xFFFFFF
});
redScoreTxt.anchor.set(0, 0);
-redScoreTxt.y = 200; // Position below the Green Crystall score
+redScoreTxt.y = 200;
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.visible = false;
map.interactive = true;
-// Define the 'down' event handler for the map
map.down = function (x, y, obj) {
setHelp(-1);
hammer.destroy();
if (storage.forgingSkill >= 10 && storage.help == 4) {
if (quest && typeof quest.destroy === 'function') {
quest.destroy();
}
quest = false;
+ storage.help = 5;
+ setHelp(5);
}
- // 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
+ mineInsideBackground.destroy();
}
if (redCristal) {
- redCristal.visible = false; //{1Z.1}
- redCristal.destroy(); // Ensure it is completely removed
- } //{1Z.3}
+ redCristal.visible = false;
+ redCristal.destroy();
+ }
if (blueCristal) {
- blueCristal.visible = false; //{1X.1}
- blueCristal.destroy(); // Ensure it is completely removed
- } //{1X.3}
+ blueCristal.visible = false;
+ blueCristal.destroy();
+ }
if (greenCristal) {
- greenCristal.visible = false; //{1Y.1}
- greenCristal.destroy(); // Ensure it is completely removed
- } //{1Y.3}
+ greenCristal.visible = false;
+ greenCristal.destroy();
+ }
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
+ interactive: false
+ });
var cityMap = mapScreen.attachAsset('citymap', {
anchorX: 0.5,
anchorY: 0.5,
- interactive: true // Make the 'citymap' asset interactive
+ interactive: true
});
cityMap.x = -250;
cityMap.y = 160;
- // Define the 'down' event handler for cityMap
cityMap.down = function (x, y, obj) {
hammer.destroy();
setHelp(-1);
- // 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
+ interactive: true
});
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
+ isolatedScreen.visible = false;
+ mapScreen.visible = true;
+ cityBackground.visible = false;
mapBackground.visible = true;
};
- // 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
+ interactive: true
});
shop.x = 490;
shop.y = -20;
setHelp(12);
- // Define the 'down' event handler for shop
shop.down = function (x, y, obj) {
hammer.destroy();
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.interactive = true;
newTools.down = function (x, y, obj) {
hammer.destroy();
setHelp(-1);
- // 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}
+ interactive: true
+ });
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;
@@ -899,58 +860,49 @@
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;
theBlacksmithsApprentice.visible = false;
apprenticeText.visible = false;
apprenticeCostText.visible = false;
}
};
- // 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
+ apprenticeText.y = theBlacksmithsApprentice.y + 170;
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
+ apprenticeCostText.y = apprenticeText.y + 70;
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 = 1100;
- newToolsOut.interactive = true; // Make the newToolsOut asset interactive//{4F.1}
+ newToolsOut.interactive = true;
if (!storage.automineblueCrystallClicked) {
- // Attach 'automineblueCrystall' asset to the center of the isolatedScreen
var automineblueCrystall = isolatedScreen.attachAsset('automineblueCrystall', {
anchorX: 0.5,
- //{4F.2}
anchorY: 0.5,
- //{4F.3}
- interactive: true // Make the automineblueCrystall interactive
- }); //{4F.4}
+ interactive: true
+ });
automineblueCrystall.x = -400;
automineblueCrystall.y = -600;
automineblueCrystall.clicked = storage.automineblueCrystallClicked;
- // Define the 'down' event handler for automineblueCrystall
automineblueCrystall.down = function (x, y, obj) {
- // Increment blueCrystallScore by 1 every second
if (goldScore >= 500 && !automineblueCrystall.clicked) {
automineblueCrystall.clicked = true;
goldScore -= 500;
goldScoreTxt.setText('Gold: ' + goldScore);
@@ -960,49 +912,42 @@
LK.setScore(blueCrystallScore);
storage.blueCrystallScore = blueCrystallScore;
scoreTxt.setText('Blue Crystall: ' + LK.getScore());
}, 1000);
- // Store the intervalId in the automineblueCrystall object for potential future use
automineblueCrystall.intervalId = intervalId;
- storage.automineblueCrystallClicked = true; // Persist the click state
+ storage.automineblueCrystallClicked = true;
automineblueCrystall.visible = false;
mineBlueCrystallText.visible = false;
mineBlueCrystallCostText.visible = false;
}
};
- // Add text "Mine Blue Crystall +1" below the automineblueCrystall asset
var mineBlueCrystallText = new Text2('Mine Blue Crystall +1', {
size: 50,
fill: 0x030303
});
mineBlueCrystallText.anchor.set(0.5, 0.5);
mineBlueCrystallText.x = automineblueCrystall.x;
- mineBlueCrystallText.y = automineblueCrystall.y + 150; // Position below the automineblueCrystall asset
+ mineBlueCrystallText.y = automineblueCrystall.y + 150;
isolatedScreen.addChild(mineBlueCrystallText);
- // Add text "500G" below the 'Mine Blue Crystall +1' text
var mineBlueCrystallCostText = new Text2('500G', {
size: 50,
- //{58.1}
- fill: 0x030303 //{58.2}
- }); //{58.3}
+ fill: 0x030303
+ });
mineBlueCrystallCostText.anchor.set(0.5, 0.5);
mineBlueCrystallCostText.x = mineBlueCrystallText.x;
- mineBlueCrystallCostText.y = mineBlueCrystallText.y + 50; // Position below the 'Mine Blue Crystall +1' text
+ mineBlueCrystallCostText.y = mineBlueCrystallText.y + 50;
isolatedScreen.addChild(mineBlueCrystallCostText);
}
if (!storage.autominegreenCrystallClicked) {
- // Attach 'autominegreenCrystall' asset to the center of the isolatedScreen
var autominegreenCrystall = isolatedScreen.attachAsset('autominegreenCrystall', {
anchorX: 0.5,
anchorY: 0.5,
- interactive: true // Make the autominegreenCrystall interactive
+ interactive: true
});
autominegreenCrystall.x = -400;
autominegreenCrystall.y = -200;
- // Define the 'down' event handler for autominegreenCrystall
autominegreenCrystall.clicked = storage.autominegreenCrystallClicked;
autominegreenCrystall.down = function (x, y, obj) {
- // Increment greenCrystallScore by 1 every second
if (goldScore >= 1000 && !autominegreenCrystall.clicked) {
autominegreenCrystall.clicked = true;
goldScore -= 1000;
goldScoreTxt.setText('Gold: ' + goldScore);
@@ -1011,48 +956,42 @@
greenCrystallScore += 1;
storage.greenCrystallScore = greenCrystallScore;
greenScoreTxt.setText('Green Crystall: ' + greenCrystallScore);
}, 1000);
- // Store the intervalId in the autominegreenCrystall object for potential future use
autominegreenCrystall.intervalId = intervalId;
- storage.autominegreenCrystallClicked = true; // Persist the click state
+ storage.autominegreenCrystallClicked = true;
autominegreenCrystall.visible = false;
mineGreenCrystallText.visible = false;
mineGreenCrystallCostText.visible = false;
}
};
- // Add text "Mine Green Crystall +1" below the autominegreenCrystall asset
var mineGreenCrystallText = new Text2('Mine Green Crystall +1', {
size: 50,
fill: 0x030303
});
mineGreenCrystallText.anchor.set(0.5, 0.5);
mineGreenCrystallText.x = autominegreenCrystall.x;
- mineGreenCrystallText.y = autominegreenCrystall.y + 150; // Lower the position below the autominegreenCrystall asset
+ mineGreenCrystallText.y = autominegreenCrystall.y + 150;
isolatedScreen.addChild(mineGreenCrystallText);
- // Add text "1000G" below the 'Mine Green Crystall +1' text
var mineGreenCrystallCostText = new Text2('1000G', {
size: 50,
- //{5c.1}
- fill: 0x030303 //{5c.2}
- }); //{5c.3}
+ fill: 0x030303
+ });
mineGreenCrystallCostText.anchor.set(0.5, 0.5);
mineGreenCrystallCostText.x = mineGreenCrystallText.x;
- mineGreenCrystallCostText.y = mineGreenCrystallText.y + 50; // Position below the 'Mine Green Crystall +1' text
+ mineGreenCrystallCostText.y = mineGreenCrystallText.y + 50;
isolatedScreen.addChild(mineGreenCrystallCostText);
}
if (!storage.automineredCrystallClicked) {
- // Attach 'automineredCrystall' asset to the center of the isolatedScreen
var automineredCrystall = isolatedScreen.attachAsset('automineredCrystall', {
anchorX: 0.5,
anchorY: 0.5,
- interactive: true // Make the automineredCrystall interactive
+ interactive: true
});
automineredCrystall.x = -400;
automineredCrystall.y = 200;
- // Define the 'down' event handler for automineredCrystall
+ automineredCrystall.clicked = storage.automineredCrystallClicked;
automineredCrystall.down = function (x, y, obj) {
- // Increment redCrystallScore by 1 every second
if (goldScore >= 2000 && !automineredCrystall.clicked) {
automineredCrystall.clicked = true;
goldScore -= 2000;
goldScoreTxt.setText('Gold: ' + goldScore);
@@ -1061,48 +1000,41 @@
redCrystallScore += 1;
storage.redCrystallScore = redCrystallScore;
redScoreTxt.setText('Red Crystall: ' + redCrystallScore);
}, 1000);
- // Store the intervalId in the automineredCrystall object for potential future use
automineredCrystall.intervalId = intervalId;
- storage.automineredCrystallClicked = true; // Persist the click state
+ storage.automineredCrystallClicked = true;
automineredCrystall.visible = false;
mineRedCrystallText.visible = false;
mineRedCrystallCostText.visible = false;
}
};
- // Add text "Mine Red Crystall +1" below the automineredCrystall asset
var mineRedCrystallText = new Text2('Mine Red Crystall +1', {
size: 50,
fill: 0x030303
});
mineRedCrystallText.anchor.set(0.5, 0.5);
mineRedCrystallText.x = automineredCrystall.x;
- mineRedCrystallText.y = automineredCrystall.y + 140; // Position below the automineredCrystall asset
+ mineRedCrystallText.y = automineredCrystall.y + 140;
isolatedScreen.addChild(mineRedCrystallText);
- // Add text "2000G" below the 'Mine Red Crystall +1' text
var mineRedCrystallCostText = new Text2('2000G', {
size: 50,
- //{55.1}
- fill: 0x030303 //{55.2}
- }); //{55.3}
+ fill: 0x030303
+ });
mineRedCrystallCostText.anchor.set(0.5, 0.5);
mineRedCrystallCostText.x = mineRedCrystallText.x;
- mineRedCrystallCostText.y = mineRedCrystallText.y + 50; // Position below the 'Mine Red Crystall +1' text
+ mineRedCrystallCostText.y = mineRedCrystallText.y + 50;
isolatedScreen.addChild(mineRedCrystallCostText);
}
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
+ interactive: true
});
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;
@@ -1111,41 +1043,35 @@
increasedChanceText.visible = false;
increasedChanceCostText.visible = false;
}
};
- // 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
+ increasedChanceText.y = multiclickupgrade.y + 170;
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}
+ fill: 0x030303
+ });
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
+ increasedChanceCostText.y = increasedChanceText.y + 70;
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
+ interactive: true
});
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);
@@ -1154,275 +1080,235 @@
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
+ storage.autogrowthRateClicked = true;
autogrowthRate.visible = false;
automaticMeltingText.visible = false;
automaticMeltingCostText.visible = false;
}
};
- // 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
+ automaticMeltingText.y = autogrowthRate.y + 150;
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
+ automaticMeltingCostText.y = automaticMeltingText.y + 50;
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
+ isolatedScreen.visible = false;
+ shopScreen.visible = true;
};
- // Hide the current shop screen
shopScreen.visible = false;
- // Position the isolatedScreen at the center
isolatedScreen.x = 2048 / 2;
isolatedScreen.y = 2732 / 2;
hammer = game.addChild(LK.getAsset('hammer', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: -1
}));
};
- // Add 'shopout' asset to the shopScreen
var shopBackground = shopScreen.attachAsset('shopbackground', {
anchorX: 0.5,
anchorY: 0.5
});
shopBackground.x = 0;
shopBackground.y = 0;
- // 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
+ interactive: true
});
- // Define the 'down' event handler for sellweapons
newBuildings.down = function (x, y, obj) {
- console.log("Sell weapons asset clicked at", x, y);
- // Сохраняем начальные значения для проверки условия
var initialBlueSwords = storage.blueSwords;
var initialGreenAxes = storage.greenAxes;
var initialRedTwoHandedSwords = storage.redCrystalTwoHandedSwords;
- // Увеличиваем золото и обнуляем запасы оружия
goldScore += storage.blueSwords * 50;
storage.blueSwords = 0;
blueSwordsText.setText('0');
goldScore += storage.greenAxes * 150;
storage.greenAxes = 0;
- greenAxesText.setText('0'); // Предполагается, что greenAxesText определён глобально
+ greenAxesText.setText('0');
goldScore += storage.redCrystalTwoHandedSwords * 600;
storage.redCrystalTwoHandedSwords = 0;
- redCrystalTwoHandedSwordsText.setText('0'); // Предполагается, что redCrystalTwoHandedSwordsText определён глобально
+ redCrystalTwoHandedSwordsText.setText('0');
goldScoreTxt.setText('Gold: ' + goldScore);
storage.goldScore = goldScore;
- // Проверяем наличие оружия до обнуления и запускаем звук с анимацией
if (initialBlueSwords > 0 || initialGreenAxes > 0 || initialRedTwoHandedSwords > 0) {
LK.getSound('gold').play();
- // Создаём 5 монет, летящих вверх
for (var i = 0; i < 5; i++) {
var goldAsset = game.addChild(LK.getAsset('goldstore', {
anchorX: 0.5,
anchorY: 0.5
}));
- goldAsset.x = shopScreen.x + newBuildings.x + (Math.random() * 50 - 25); // Случайное смещение по X
+ goldAsset.x = shopScreen.x + newBuildings.x + (Math.random() * 50 - 25);
goldAsset.y = shopScreen.y + newBuildings.y;
(function (goldAsset) {
- var speed = 3 + Math.random() * 3; // Случайная скорость от 3 до 6
+ var speed = 3 + Math.random() * 3;
goldAsset.update = function () {
goldAsset.y -= speed;
};
LK.setTimeout(function () {
goldAsset.destroy();
}, 1000);
})(goldAsset);
}
+ if (storage.help == 13) {
+ if (quest && typeof quest.destroy === 'function') {
+ quest.destroy();
+ }
+ quest = false;
+ storage.help = 14;
+ setHelp(14);
+ }
}
};
newBuildings.x = 0;
newBuildings.y = 1100;
- // Add 'shopout' asset to the shopScreen
var shopOut = shopScreen.attachAsset('shopout', {
anchorX: 0.5,
anchorY: 0.5,
- interactive: true // Make the 'shopout' asset interactive
+ interactive: true
});
shopOut.x = 650;
shopOut.y = 1100;
- // Define the 'down' event handler for shopOut
shopOut.down = function (x, y, obj) {
setHelp(14);
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
+ shopScreen.visible = false;
+ mapBackground.visible = false;
+ mapScreen.visible = true;
+ isolatedScreen.visible = true;
};
setHelp(13);
hammer = game.addChild(LK.getAsset('hammer', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: -1
}));
};
- // Position the isolatedScreen at the center
isolatedScreen.x = 2048 / 2;
isolatedScreen.y = 2732 / 2;
hammer = game.addChild(LK.getAsset('hammer', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: -1
}));
};
- // 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.x -= 150;
+ mine.y -= 150;
mine.down = function (x, y, obj) {
if (storage.help == 5) {
if (quest && typeof quest.destroy === 'function') {
quest.destroy();
}
quest = false;
+ storage.help = 6;
+ setHelp(6);
}
hammer.destroy();
setHelp(-1);
- // 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
+ zIndex: -1
});
setHelp(5);
- // 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
+ redCristal.x -= 510;
+ redCristal.y += 490;
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
+ greenCristal.x -= -510;
+ greenCristal.y += 10;
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}
+ blueCristal.x += 490;
+ blueCristal.y += -60;
+ blueCristal.x -= 410;
+ blueCristal.y -= 310;
+ mineScreen.x = 2048 / 2;
+ mineScreen.y = 2732 / 2;
hammer = game.addChild(LK.getAsset('hammer', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: -1
}));
};
- // Make anvilMap interactive and define the 'down' event handler
anvilMap.down = function (x, y, obj) {
if (storage.help == 7) {
if (quest && typeof quest.destroy === 'function') {
quest.destroy();
}
quest = false;
+ storage.help = 8;
+ setHelp(8);
}
setHelp(-1);
- // 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
});
setHelp(0);
setHelp(1);
setHelp(7);
setHelp(10);
- // 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
+ recipes.x = gameScreenBackground.width / 2 - 1050;
+ recipes.y = gameScreenBackground.height / 2 + 150;
if (mineInsideBackground) {
mineInsideBackground.visible = false;
- mineInsideBackground.destroy(); // Ensure it is completely removed
+ mineInsideBackground.destroy();
}
- 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}
+ blueCristal.visible = false;
+ blueCristal.destroy();
+ }
if (greenCristal) {
- greenCristal.visible = false; //{1Y.1}
- greenCristal.destroy(); // Ensure it is completely removed
- } //{1Y.3}
+ greenCristal.visible = false;
+ greenCristal.destroy();
+ }
if (redCristal) {
- redCristal.visible = false; //{1Z.1}
- redCristal.destroy(); // Ensure it is completely removed
- } //{1Z.3}
- // Hide the map screen
+ redCristal.visible = false;
+ redCristal.destroy();
+ }
mapScreen.visible = false;
- // Show the counter display
counterText.visible = true;
- // Show the Growth rate counter when transitioning to anvilmap
growthRateText.visible = true;
};
setHelp(-1);
- // 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;
setHelp(3);
setHelp(4);
@@ -1434,9 +1320,9 @@
scaleX: -1
}));
};
var growthRateText;
-var growthRateCounter = storage.growthRate; // Initialize growth rate counter from storage
+var growthRateCounter = storage.growthRate;
var background = game.addChild(new Container());
background.width = 2048;
background.height = 2732;
background.x = 2048 / 2;
@@ -1444,34 +1330,30 @@
var backgroundGraphics = background.attachAsset('background', {
anchorX: 0.5,
anchorY: 0.5
});
-var gameScreen = game.addChild(new Container()); //{1h.1}
+var gameScreen = game.addChild(new Container());
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
+newGame.x = 2650 / 2 + 100;
+newGame.y = 2680 * 4.2 / 5;
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
+ strokeThickness: 5
});
-// 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.x = newGame.x - newGame.width - 500;
+continueText.y = newGame.y;
continueText.interactive = true;
continueText.down = function (x, y, obj) {
startgame();
};
@@ -1480,383 +1362,240 @@
function startgame() {
setquest();
title.destroy();
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
+ interactive: true
});
- // Remove 'continueText' asset when transitioning to new game
- // Define the 'down' event handler for recipes
recipes.down = function (x, y, obj) {
setHelp(-1);
hammer.destroy();
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 recipesScreen = game.addChild(new Container());
+ map.visible = false;
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 >= 100 && storage.blueCrystalIngotScore >= 10) {
- storage.blueswordsclick += 1;
- }
- if (storage.blueswordsclick >= 100) {
- storage.blueswordsclick = 0;
- storage.blueSwords += 1; // Увеличение количества мечей
- blueSwordsText.setText(storage.blueSwords.toString());
- storage.forgingSkill += 100; // Добавление опыта кузнечного дела
- counterText.setText('Forging skill: ' + storage.forgingSkill);
- if (storage.blueCrystalIngotScore >= 10) {
- // Убедимся, что хватает ингота
- storage.blueCrystalIngotScore -= 10; // Отнимаем 10, но теперь в `storage`
- blueCrystalIngotScore = storage.blueCrystalIngotScore; // Обновляем локальную переменную
- blueCrystalIngotScoreTxt.setText('BlueCrystalIngot: ' + blueCrystalIngotScore);
- }
- }
- blueCrystalSwordClicks.setText('(current ' + storage.blueswordsclick + ')');
- };
+ recipesBackground.y = 2732 / 2;
+ var blueCrystalSword = recipesScreen.addChild(new BlueCrystalSword());
+ blueCrystalSword.x = 1248 / 2;
+ blueCrystalSword.y = 2132 / 2;
setHelp(10);
- // 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
+ fill: 0x000000
});
swordsInStockText.anchor.set(0.5, 0.5);
swordsInStockText.x = 1248 / 2;
swordsInStockText.y = 2732 / 2 + 400;
var axeInStockText = new Text2('Axe in stock', {
size: 50,
- fill: 0x000000 // Black color
+ fill: 0x000000
});
axeInStockText.anchor.set(0.5, 0.5);
axeInStockText.x = 2848 / 2;
- axeInStockText.y = 2732 / 2 + 400; // Align with 'Swords in stock' text
+ axeInStockText.y = 2732 / 2 + 400;
recipesScreen.addChild(axeInStockText);
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 + 80; // Position below the 'Swords in stock' text
+ blueSwordsText.y = swordsInStockText.y + 80;
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 >= 4000 && storage.greenCrystalIngotScore >= 15) {
- greenAxeClicks += 1;
- }
- if (greenAxeClicks >= 150) {
- greenAxeClicks = 0;
- storage.greenAxes += 1; // Увеличиваем количество зелёных топоров в хранилище
- greenAxesText.setText(storage.greenAxes.toString());
- storage.forgingSkill += 150; // Добавляем 150 к навыку ковки
- counterText.setText('Forging skill: ' + storage.forgingSkill); // Обновляем отображение навыка ковки
- if (storage.greenCrystalIngotScore >= 15) {
- storage.greenCrystalIngotScore -= 15; // Вычитаем 15 из greenCrystalIngotScore
- greenCrystalIngotScore = storage.greenCrystalIngotScore; // Сохраняем новое значение в хранилище
- 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;
- 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);
+ var greenAxe = recipesScreen.addChild(new GreenAxe());
+ greenAxe.x = 2848 / 2;
+ greenAxe.y = 2132 / 2;
greenAxesText.x = 2848 / 2;
- greenAxesText.y = swordsInStockText.y + 80; // Position below the 'Swords in stock' text
+ greenAxesText.y = swordsInStockText.y + 80;
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
+ alpha: 0.5
});
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 100.\n 10 blue crystal ingots +\n 100 clicks on the recipe', {
size: 50,
fill: 0x000000,
- alpha: 0.5 // Set transparency
+ alpha: 0.5
});
blueCrystalSwordDescription.anchor.set(0.5, 0.5);
blueCrystalSwordDescription.x = 1248 / 2;
blueCrystalSwordDescription.y = 2732 / 2 + 200;
recipesScreen.addChild(blueCrystalSwordDescription);
var blueCrystalSwordClicks = new Text2('(current ' + storage.blueswordsclick + ')', {
size: 50,
fill: 0x000000,
- alpha: 0.5 // Set transparency
+ alpha: 0.5
});
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 4k.\n 15 green crystal ingots +\n 150 clicks on the recipe', {
size: 50,
fill: 0x000000,
- alpha: 0.5 // Set transparency
+ alpha: 0.5
});
axeOfGreenCrystalsDescription.anchor.set(0.5, 0.5);
- axeOfGreenCrystalsDescription.x = 2890 / 2;
+ axeOfGreenCrystalsDescription.x = 2848 / 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}
+ anchorY: 0.5,
+ interactive: true
+ });
recipesNext.x = 3248 / 2;
recipesNext.y = 5000 / 2;
- // Make the 'recipesnext' asset interactive
- recipesNext.interactive = true;
- hammer = game.addChild(LK.getAsset('hammer', {
- anchorX: 0.5,
- anchorY: 0.5,
- scaleX: -1
- }));
- // 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());
LK.getSound('paper').play();
- // 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;
- // Remove the existing hammer
hammer.destroy();
- // 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
+ interactive: true
});
recipesPrev.x = 888 / 2;
recipesPrev.y = 5000 / 2;
- // Define the 'down' event handler for recipesPrev
recipesPrev.down = function (x, y, obj) {
LK.getSound('paper').play();
- // Transition back to the recipes screen
- nextScreen.visible = false; // Hide the current screen
- recipesScreen.visible = true; // Show the recipes screen
+ nextScreen.visible = false;
+ recipesScreen.visible = true;
};
- // Add 'blueingotrecipe' asset to the center of the screen
var blueingotrecipe = nextScreen.attachAsset('blueingotrecipe', {
anchorX: 0.5,
anchorY: 0.5
});
blueingotrecipe.x = 1450;
blueingotrecipe.y = 750;
- // Add text under the 'blueingotrecipe' asset
var blueIngotRecipeText = new Text2('"BlueCrystalIngot"\n Growth rate 100.\n 10 Blue Crystal', {
size: 50,
- fill: 0x000000 // Black color
+ fill: 0x000000
});
blueIngotRecipeText.anchor.set(0.5, 0.5);
blueIngotRecipeText.x = blueingotrecipe.x;
- blueIngotRecipeText.y = blueingotrecipe.y + 150; // Position below the 'blueingotrecipe' asset
+ blueIngotRecipeText.y = blueingotrecipe.y + 150;
nextScreen.addChild(blueIngotRecipeText);
- // Add 'greeningotrecipe' asset to the center of the screen
var greeningotrecipe = nextScreen.attachAsset('greeningotrecipe', {
anchorX: 0.5,
anchorY: 0.5
});
greeningotrecipe.x = 1450;
greeningotrecipe.y = 1150;
- // Add text under the 'greeningotrecipe' asset
var greeningotrecipeText = new Text2('"Greeningotrecipe"\n Growth rate 2000.\n 10 Green Crystal', {
size: 50,
- fill: 0x000000 // Black color
+ fill: 0x000000
});
greeningotrecipeText.anchor.set(0.5, 0.5);
greeningotrecipeText.x = greeningotrecipe.x;
- greeningotrecipeText.y = greeningotrecipe.y + 160; // Position below the 'greeningotrecipe' asset
+ greeningotrecipeText.y = greeningotrecipe.y + 160;
nextScreen.addChild(greeningotrecipeText);
- // Add 'redingotrecipe' asset to the center of the screen
var redingotrecipe = nextScreen.attachAsset('redingotrecipe', {
anchorX: 0.5,
anchorY: 0.5
});
redingotrecipe.x = 1450;
redingotrecipe.y = 1500;
- // Add text under the 'redingotrecipe' asset
- var redingotrecipeText = new Text2('"Redingotrecipe"\n Growth rate 7000.\n 10 Green Crystal', {
+ var redingotrecipeText = new Text2('"Redingotrecipe"\n Growth rate 7000.\n 10 Red Crystal', {
size: 50,
- fill: 0x000000 // Black color
+ fill: 0x000000
});
redingotrecipeText.anchor.set(0.5, 0.5);
redingotrecipeText.x = redingotrecipe.x;
- redingotrecipeText.y = redingotrecipe.y + 150; // Position below the 'redingotrecipe' asset
+ redingotrecipeText.y = redingotrecipe.y + 150;
nextScreen.addChild(redingotrecipeText);
- // 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 >= 10000 && storage.redCrystalIngotScore >= 75) {
- redCrystalTwoHandedSwordClicks += 1;
- }
- if (redCrystalTwoHandedSwordClicks >= 200) {
- redCrystalTwoHandedSwordClicks = 0;
- storage.redCrystalTwoHandedSwords += 1; // Увеличение количества мечей в storage
- redCrystalTwoHandedSwordsText.setText(storage.redCrystalTwoHandedSwords.toString());
- storage.forgingSkill += 210; // Добавление опыта кузнечного дела
- counterText.setText('Forging skill: ' + storage.forgingSkill);
- storage.redCrystalIngotScore -= 75; // Вычитаем 75 инготов из storage
- redCrystalIngotScore = storage.redCrystalIngotScore; // Обновляем локальную переменную
- redCrystalIngotScoreTxt.setText('RedCrystalIngot: ' + redCrystalIngotScore); // Обновляем отображение
- }
- 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(), {
+ var redCrystalTwoHandedSword = nextScreen.addChild(new RedCrystalTwoHandedSword());
+ redCrystalTwoHandedSword.x = 1248 / 2;
+ redCrystalTwoHandedSword.y = 2132 / 2;
+ var twoHandSwordsInStockText = new Text2('Two-hand Swords in stock', {
size: 50,
- fill: 0x000000 // Black color
+ fill: 0x000000
});
- redCrystalTwoHandedSwordsText.anchor.set(0.5, 0.5);
+ twoHandSwordsInStockText.anchor.set(0.5, 0.5);
+ twoHandSwordsInStockText.x = 1248 / 2;
+ twoHandSwordsInStockText.y = 2732 / 2 + 400;
+ nextScreen.addChild(twoHandSwordsInStockText);
redCrystalTwoHandedSwordsText.x = 1248 / 2;
+ redCrystalTwoHandedSwordsText.y = twoHandSwordsInStockText.y + 80;
+ nextScreen.addChild(redCrystalTwoHandedSwordsText);
var redCrystalTwoHandedSwordDescription = new Text2('"Redcrystaltwo-\n handedswordrecipe"\n Forging Skill 10k.\n 75 red crystal ingots +\n 200 clicks on the anvil', {
size: 50,
- fill: 0x000000 // Black color
+ fill: 0x000000
});
redCrystalTwoHandedSwordDescription.anchor.set(0.5, 0.5);
redCrystalTwoHandedSwordDescription.x = 1248 / 2;
- redCrystalTwoHandedSwordDescription.y = 2732 / 2 + 100;
+ redCrystalTwoHandedSwordDescription.y = 2732 / 2 + 200;
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 + 250; // 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 - 135;
- redCrystalTwoHandedSwordClicksText.y = 2732 / 2 + 260;
+ redCrystalTwoHandedSwordClicksText.y = 2732 / 2 + 330;
nextScreen.addChild(redCrystalTwoHandedSwordClicksText);
hammer = game.addChild(LK.getAsset('hammer', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: -1
}));
};
- // Attach 'recipesout' asset to the 'RecipesScreen' object
var recipesOutGraphics = recipesScreen.attachAsset('recipesout', {
anchorX: 0.5,
- anchorY: 0.5
+ anchorY: 0.5,
+ interactive: true
});
- // Center the 'recipesout' asset on the screen
recipesOutGraphics.x = 2048 / 2;
recipesOutGraphics.y = 2732 / 2 + 1100;
- // Make the 'recipesout' asset interactive
- recipesOutGraphics.interactive = true;
- LK.getSound('paper').play();
- // 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
recipesScreen.visible = false;
setHelp(0);
setHelp(1);
setHelp(3);
setHelp(7);
+ if (storage.blueSwords >= 1 && storage.help == 11) {
+ setHelp(11);
+ }
};
- // 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
+ recipes.x = gameScreenBackground.width / 2 - 1050;
+ recipes.y = gameScreenBackground.height / 2 + 150;
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 - 100; // Adjust x-coordinate based on the anvil's position on the background
+ anvil.x = gameScreenBackground.x - 100;
anvil.y = gameScreenBackground.y + 500;
- // 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;
setHelp(0);
setHelp(1);
@@ -1868,9 +1607,8 @@
anchorY: 0.5,
scaleX: -1
}));
}
-// Make the 'New Game' object clickable
newGame.interactive = true;
newGame.down = function (x, y, obj) {
if (newgameclearInterval.length > 0) {
for (var i = 0; i < newgameclearInterval.length; i++) {
@@ -1883,24 +1621,21 @@
storage.autogrowthRateClicked = false;
storage.theBlacksmithsApprentice = false;
storage.multiclickupgrade = false;
storage.help = 0;
- // Reset all saved data
storage.forgingSkill = 0;
storage.growthRate = 0;
storage.blueCrystalIngotScore = 0;
storage.blueCrystallScore = 0;
storage.greenCrystalIngotScore = 0;
storage.redCrystallScore = 0;
storage.redCrystalIngotScore = 0;
storage.greenCrystallScore = 0;
- storage.greenCrystalIngotScore = 0;
storage.blueSwords = 0;
storage.goldScore = 0;
storage.blueswordsclick = 0;
storage.greenAxeClicks = 0;
storage.redCrystalTwoHandedSwordClicks = 0;
- // Reset current variables
redCrystalIngotScore = 0;
blueCrystallScore = 0;
greenCrystallScore = 0;
greenCrystalIngotScore = 0;
@@ -1918,14 +1653,12 @@
redCrystalIngotScoreTxt.setText('RedCrystalIngot: ' + storage.redCrystallScore);
goldScoreTxt.setText('Gold: ' + goldScore);
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;
@@ -1934,18 +1667,15 @@
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.y = counterText.height - 6;
growthRateText.x = 0;
-// Initialize hammer asset
-var hammer;
-hammer = game.addChild(LK.getAsset('hammer', {
+var 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;
@@ -1991,10 +1721,9 @@
counterText.setText('Forging skill: ' + storage.forgingSkill);
}, 1000);
newgameclearInterval.push(intervalId);
}
-var seconds = Math.floor(Date.now() / 1000);
-seconds = seconds - storage.lastgametime;
+var seconds = Math.floor(Date.now() / 1000) - storage.lastgametime;
if (seconds * 60 * 5 > 18000) {
seconds = 18000;
}
if (seconds > 0) {
@@ -2020,37 +1749,33 @@
}
var intervalId = LK.setInterval(function () {
storage.lastgametime = Math.floor(Date.now() / 1000);
}, 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
+ star.y -= 5;
if (star.x < hammer.x) {
- star.x += 2; // Move the star slightly to the right if on the left side of the hammer
+ star.x += 2;
} else {
- star.x -= 2; // Move the star slightly to the left if on the right side of the hammer
+ star.x -= 2;
}
};
LK.setTimeout(function () {
star.destroy();