User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'addChild')' in or related to this line: 'var hint = gameScreen.addChild(LK.getAsset('hint', {' Line Number: 486
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'addChild')' in or related to this line: 'var hint = gameScreen.addChild(LK.getAsset('hint', {' Line Number: 486
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'addChild')' in or related to this line: 'var hint = gameScreen.addChild(LK.getAsset('hint', {' Line Number: 486
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'addChild')' in or related to this line: 'var hint = gameScreen.addChild(LK.getAsset('hint', {' Line Number: 486
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'addChild')' in or related to this line: 'var hint = gameScreen.addChild(LK.getAsset('hint', {' Line Number: 486
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'addChild')' in or related to this line: 'var hint = gameScreen.addChild(LK.getAsset('hint', {' Line Number: 486
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'addChild')' in or related to this line: 'var hint = gameScreen.addChild(LK.getAsset('hint', {' Line Number: 486
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'addChild')' in or related to this line: 'var hint = gameScreen.addChild(LK.getAsset('hint', {' Line Number: 486
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'addChild')' in or related to this line: 'var hint = gameScreen.addChild(LK.getAsset('hint', {' Line Number: 486
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'addChild')' in or related to this line: 'var hint = gameScreen.addChild(LK.getAsset('hint', {' Line Number: 486
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'addChild')' in or related to this line: 'var hint = gameScreen.addChild(LK.getAsset('hint', {' Line Number: 486
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'addChild')' in or related to this line: 'var hint = gameScreen.addChild(LK.getAsset('hint', {' Line Number: 486
User prompt
выводи ассет hint на экран anvil
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'blueSwordsText is not defined' in or related to this line: 'var blueSword = screens.recipesScreen.addChild(new CraftableItem('bluecrystalswordrecipe', 2000, 10, 1000, 'blueCrystalIngotScore', 'blueSwords', 'blueswordsclick', blueSwordsText));' Line Number: 948
User prompt
Please fix the bug: 'greenAxesText is not defined' in or related to this line: 'var greenAxe = screens.recipesScreen.addChild(new CraftableItem('axeOfGreenCrystalsRecipe', 10000, 25, 3000, 'greenCrystalIngotScore', 'greenAxes', 'greenAxeClicks', greenAxesText));' Line Number: 959
User prompt
Please fix the bug: 'blueSwordsText is not defined' in or related to this line: 'var blueSword = screens.recipesScreen.addChild(new CraftableItem('bluecrystalswordrecipe', 2000, 10, 1000, 'blueCrystalIngotScore', 'blueSwords', 'blueswordsclick', blueSwordsText));' Line Number: 948
Code edit (6 edits merged)
Please save this source code
User prompt
нужно сократить количество кода не потеряв в функционале
Code edit (1 edits merged)
Please save this source code
Code edit (9 edits merged)
Please save this source code
User prompt
сделай окно с текстом после нажаnия на кнопку new game "This is your forge, hit the anvil and develop skills, mine crystals in the cave, melt them into ingots and craft weapons. Sell it in the city." желтого цвета. это сообщение должно исчезнуть по колику и больше не показываться
User prompt
Please fix the bug: 'Timeout.tick error: anvil is not defined' in or related to this line: 'if (anvil) {' Line Number: 517
User prompt
Please fix the bug: 'Timeout.tick error: anvil is not defined' in or related to this line: 'if (anvil) {' Line Number: 517
User prompt
Please fix the bug: 'Timeout.tick error: Cannot read properties of null (reading 'x')' in or related to this line: 'anvilStar.x = anvil.x;' Line Number: 518
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1", { forgingSkill: 0, growthRate: 0, goldScore: 0, blueCristallScore: 0, greenCristallScore: 0, redCristallScore: 0, blueCrystalIngotScore: 0, greenCrystalIngotScore: 0, redCrystalIngotScore: 0, blueSwords: 0, greenAxes: 0, redCrystalTwoHandedSwords: 0, blueswordsclick: 0, greenAxeClicks: 0, redCrystalTwoHandedSwordClicks: 0, autominebluecristallClicked: false, autominegreencristallClicked: false, automineredcristallClicked: false, autogrowthRateClicked: false, multiclickupgrade: false, theBlacksmithsApprentice: false, lastgametime: 0 }); /**** * Classes ****/ var Anvil = Container.expand(function () { var self = Container.call(this); self.attachAsset('anvil', { anchorX: 0.5, anchorY: 0.5, alpha: 0.0, interactive: true }); self.clickCounter = storage.forgingSkill; self.down = function () { self.clickCounter++; if (Math.random() < (storage.multiclickupgrade ? 0.04 : 0.02)) { self.clickCounter += 5; var multi = game.addChild(LK.getAsset('multyclick', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 })); tween(multi, { scaleX: 2, scaleY: 2 }, { duration: 500, easing: tween.easeInOut, onFinish: function onFinish() { return multi.destroy(); } }); } storage.forgingSkill = self.clickCounter; counterText.setText('Forging skill: ' + self.clickCounter); var tints = [[1000, 0x00FF00], [2000, 0x0000FF], [15000, 0x800080], [30000, 0xcc7c04]]; for (var _i = 0, _tints = tints; _i < _tints.length; _i++) { var _tints$_i = _slicedToArray(_tints[_i], 2), threshold = _tints$_i[0], color = _tints$_i[1]; if (self.clickCounter >= threshold) { counterText.tint = color; } } }; }); var CraftableItem = Container.expand(function (recipeAsset, skillReq, ingotReq, clicksReq, ingotKey, itemKey, clicksKey, stockText) { var self = Container.call(this); self.attachAsset(recipeAsset, { anchorX: 0.5, anchorY: 0.5, interactive: true }); self.down = function () { if (storage.forgingSkill >= skillReq && storage[ingotKey] >= ingotReq) { storage[clicksKey] = (storage[clicksKey] || 0) + 100; if (storage[clicksKey] >= clicksReq) { storage[clicksKey] = 0; storage[itemKey] += 1; storage[ingotKey] -= ingotReq; stockText.setText(storage[itemKey].toString()); } } }; }); var Crystal = Container.expand(function (color, scoreKey, scoreText) { var self = Container.call(this); self.attachAsset(color + 'Cristal', { anchorX: 0.5, anchorY: 0.5, interactive: true }); self.down = function () { storage[scoreKey] = (storage[scoreKey] || 0) + 1; scoreText.setText("".concat(color, " Cristall: ").concat(storage[scoreKey])); }; }); var CrystalIngot = Container.expand(function (color, crystalKey, ingotKey, growthReq, growthInc, crystalCost, scoreText) { var self = Container.call(this); self.attachAsset(color + 'CrystalIngot', { anchorX: 0.5, anchorY: 0.5, interactive: true }); self.down = function () { if (storage.growthRate >= growthReq && storage[crystalKey] >= crystalCost) { storage[ingotKey] = (storage[ingotKey] || 0) + 1; storage[crystalKey] -= crystalCost; storage.growthRate += growthInc; growthRateText.setText('Growth rate: ' + storage.growthRate); scoreText.setText("".concat(color, "CrystalIngot: ").concat(storage[ingotKey])); } }; }); /**** * Initialize Game ****/ /**** * Game Setup ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) { return _arrayLikeToArray(r, a); } var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) { n[e] = r[e]; } return n; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) { return; } f = !1; } else { for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0) { ; } } } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) { return; } } finally { if (o) { throw n; } } } return a; } } function _arrayWithHoles(r) { if (Array.isArray(r)) { return r; } } var assets = [{ type: 'shape', name: 'Gold', width: 100, height: 100, color: 0xba3e24, shape: 'box' }, { type: 'shape', name: 'anvil', width: 480, height: 300, color: 0x90b8f4, shape: 'box' }, { type: 'shape', name: 'anvilstar', width: 100, height: 100, color: 0x9eec73, shape: 'box' }, { type: 'image', name: 'Door', width: 300, height: 300, id: '6794cd7686e5290db4ef0f61' }, { type: 'image', name: 'Map', width: 300, height: 300, id: '67960d5478a5ca831e38e79f' }, { type: 'image', name: 'Theblacksmithsapprentice', width: 250, height: 250, id: '67b872b7f35062e15c95627b' }, { type: 'image', name: 'anvilmap', width: 100, height: 100, id: '6796204778a5ca831e38e7db' }, { type: 'image', name: 'autogrowthRate', width: 360, height: 300, id: '67b4c3c752a1da49713d524a' }, { type: 'image', name: 'autominebluecristall', width: 250, height: 250, id: '67b4bd8952a1da49713d51e5' }, { type: 'image', name: 'autominegreencristall', width: 250, height: 250, id: '67b4be1152a1da49713d51fa' }, { type: 'image', name: 'automineredcristall', width: 250, height: 250, id: '67b4ba73345af481077a5a3a' }, { type: 'image', name: 'axeOfGreenCrystalsRecipe', width: 300, height: 500, id: '67991a67090093ccb7744bb4' }, { type: 'image', name: 'background', width: 2000, height: 2000, id: '67b07ea12e29576e5caf3b79' }, { type: 'image', name: 'blueCristal', width: 300, height: 300, id: '67b89f3ddacac0208c8f6e0e' }, { type: 'image', name: 'blueCrystalIngot', width: 100, height: 80, id: '67966dd1690fa8a090669322' }, { type: 'image', name: 'bluecrystalswordrecipe', width: 400, height: 400, id: '67991043090093ccb7744b1a', flipX: 1, flipY: 1, orientation: 3 }, { type: 'image', name: 'blueingotrecipe', width: 200, height: 150, id: '67bf46c527fc48d849e4e932' }, { type: 'image', name: 'citybackground', width: 2000, height: 2000, id: '67a0d50d52a2e35ca0eb5c70' }, { type: 'image', name: 'citymap', width: 150, height: 150, id: '679f607e55b87b3a41d5d55a' }, { type: 'image', name: 'continueText', width: 300, height: 370, id: '67b060fe2e29576e5caf3af2' }, { type: 'image', name: 'gameScreenBackground', width: 2000, height: 1900, id: '67b8ba062d0daaf579fc58d0' }, { type: 'image', name: 'greenCristal', width: 300, height: 300, id: '67b8a0c4dacac0208c8f6e47' }, { type: 'image', name: 'greenCrystalIngot', width: 110, height: 90, id: '67967631690fa8a090669346' }, { type: 'image', name: 'greeningotrecipe', width: 200, height: 190.48, id: '67967631690fa8a090669346' }, { type: 'image', name: 'growthRate', width: 300, height: 300, id: '67b8aa3cdacac0208c8f6ea0' }, { type: 'image', name: 'hammer', width: 150, height: 150, id: '6794cebe86e5290db4ef0f74' }, { type: 'image', name: 'magicNurseryBackground', width: 1000, height: 1000, id: '67965c40690fa8a090669227' }, { type: 'image', name: 'mapbackground', width: 1900, height: 1900, id: '67960c7078a5ca831e38e78c' }, { type: 'image', name: 'mine', width: 80, height: 100, id: '6796224378a5ca831e38e807' }, { type: 'image', name: 'mineinsidebackground', width: 1850, height: 1850, id: '679625c578a5ca831e38e821' }, { type: 'image', name: 'multiclickupgrade', width: 280, height: 280, id: '67b4d29752a1da49713d526e' }, { type: 'image', name: 'multyclick', width: 200, height: 200, id: '67a38faeec1e8c186c4e68aa' }, { type: 'image', name: 'newGameText', width: 300, height: 400, id: '67b0610c2e29576e5caf3af6' }, { type: 'image', name: 'newTools', width: 200, height: 200, id: '67a4ed1a15483cfd543c1702' }, { type: 'image', name: 'newToolsBackground', width: 2000, height: 2000, id: '679905e1090093ccb7744b04' }, { type: 'image', name: 'newToolsout', width: 300, height: 300, id: '6797a530690fa8a090669c76' }, { type: 'image', name: 'recipes', width: 350, height: 350, id: '6797a530690fa8a090669c76' }, { type: 'image', name: 'recipesbackground', width: 2000, height: 2000, id: '679905e1090093ccb7744b04' }, { type: 'image', name: 'recipesnext', width: 350, height: 350, id: '679b9f5d0f1a2ec74003f873' }, { type: 'image', name: 'recipesnextbackgr1', width: 2000, height: 2000, id: '679905e1090093ccb7744b04' }, { type: 'image', name: 'recipesout', width: 350, height: 350, id: '6797a530690fa8a090669c76' }, { type: 'image', name: 'recipesprev', width: 350, height: 350, id: '679b9f5d0f1a2ec74003f873', flipX: 1 }, { type: 'image', name: 'redCristal', width: 500, height: 600, id: '67b8a15bdacac0208c8f6e55' }, { type: 'image', name: 'redCristalIngot', width: 110, height: 90, id: '67967c31690fa8a0906693e7' }, { type: 'image', name: 'redcrystaltwo-handedswordrecipe', width: 400, height: 400, id: '67adcc78e366fb4797fc38c0' }, { type: 'image', name: 'redingotrecipe', width: 250, height: 180, id: '67bf4c3827fc48d849e4e955' }, { type: 'image', name: 'sellweapons', width: 300, height: 300, id: '67b35cb8a9534c1274453a27' }, { type: 'image', name: 'shop', width: 400, height: 400, id: '67be174fc61ffecc5503a69d' }, { type: 'image', name: 'shopbackground', width: 2000, height: 2000, id: '67a0f8b752a2e35ca0eb5fdf' }, { type: 'image', name: 'shopout', width: 300, height: 300, id: '6794cd7686e5290db4ef0f61' }, { type: 'image', name: 'star', width: 50, height: 50, id: '6794fd2986e5290db4ef104a' }, { type: 'image', name: 'title', width: 900, height: 400, id: '67b8af589837459f356f3e4b' }, { type: 'sound', name: 'booksaudio', volume: 1, start: 0, end: 1, id: '67b8a6c6dacac0208c8f6e80' }, { type: 'sound', name: 'doors', volume: 1, start: 0, end: 1, id: '67b8a3d2dacac0208c8f6e73' }, { type: 'sound', name: 'hammer', volume: 1, start: 0, end: 0.862, id: '6794fd6d86e5290db4ef1050' }, { type: 'sound', name: 'mapaudio', volume: 1, start: 0, end: 1, id: '67b8a489dacac0208c8f6e79' }, { type: 'sound', name: 'paper', volume: 1, start: 0, end: 1, id: '67b8a489dacac0208c8f6e79' }, { type: 'sound', name: 'shopin', volume: 1, start: 0, end: 0.776, id: '67b8a891dacac0208c8f6e8a' }]; assets.forEach(function (asset) { if (asset.type === 'image') {} else if (asset.type === 'shape') {} else if (asset.type === 'sound') {} }); var screens = { main: new Container(), gameScreen: new Container(), mapScreen: new Container(), shopScreen: new Container(), recipesScreen: new Container(), mineScreen: new Container(), magicNursery: new Container() }; var hammer = game.addChild(LK.getAsset('hammer', { anchorX: 0.5, anchorY: 0.5, scaleX: -1 })); function updateHammer(x, y) { hammer.x = x; hammer.y = y; } game.move = function (x, y) { return updateHammer(x, y); }; game.down = function (x, y) { 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; star.update = function () { star.y -= 5; star.x += star.x < hammer.x ? 2 : -2; }; LK.setTimeout(function () { return star.destroy(); }, 250); } tween(hammer, { rotation: 0 }, { duration: 125, easing: tween.easeInOut }); } }); }; // UI Elements var counterText = new Text2('Forging skill: ' + storage.forgingSkill, { size: 50, fill: 0xFFFFFF }); LK.gui.topLeft.addChild(counterText, { x: 0, y: 0 }); var growthRateText = new Text2('Growth rate: ' + storage.growthRate, { size: 50, fill: 0xFFFFFF }); LK.gui.topLeft.addChild(growthRateText, { x: 0, y: counterText.height - 6 }); var goldScoreTxt = new Text2('Gold: ' + (storage.goldScore || 0), { size: 50, fill: 0xFFFFFF }); LK.gui.topLeft.addChild(goldScoreTxt, { x: counterText.width + 10, y: 0 }); var scoreTxt = new Text2('Blue Cristall: ' + (storage.blueCristallScore || 0), { size: 50, fill: 0xFFFFFF }); LK.gui.topLeft.addChild(scoreTxt, { x: 0, y: 100 }); var greenScoreTxt = new Text2('Green Cristall: ' + (storage.greenCristallScore || 0), { size: 50, fill: 0xFFFFFF }); LK.gui.topLeft.addChild(greenScoreTxt, { x: 0, y: 150 }); var redScoreTxt = new Text2('Red Cristall: ' + (storage.redCristallScore || 0), { size: 50, fill: 0xFFFFFF }); LK.gui.topLeft.addChild(redScoreTxt, { x: 0, y: 200 }); var blueCrystalIngotScoreTxt = new Text2('BlueCrystalIngot: ' + (storage.blueCrystalIngotScore || 0), { size: 50, fill: 0xFFFFFF }); LK.gui.topRight.addChild(blueCrystalIngotScoreTxt, { x: 0, y: 0 }); var greenCrystalIngotScoreTxt = new Text2('GreenCrystalIngot: ' + (storage.greenCrystalIngotScore || 0), { size: 50, fill: 0xFFFFFF }); LK.gui.topRight.addChild(greenCrystalIngotScoreTxt, { x: 0, y: 50 }); var redCrystalIngotScoreTxt = new Text2('RedCrystalIngot: ' + (storage.redCrystalIngotScore || 0), { size: 50, fill: 0xFFFFFF }); LK.gui.topRight.addChild(redCrystalIngotScoreTxt, { x: 0, y: 100 }); // Screen Management function switchScreen(activeScreen) { Object.values(screens).forEach(function (screen) { return screen.visible = false; }); screens[activeScreen].visible = true; } // Main Screen screens.main.attachAsset('background', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 }); var title = screens.main.addChild(LK.getAsset('title', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 3200 / 5 })); var newGame = screens.main.addChild(new Container()); newGame.attachAsset('newGameText', { anchorX: 0.5, anchorY: 0.5, stroke: 0xFFFFFF, strokeThickness: 5 }); newGame.x = 2650 / 2 + 100; newGame.y = 2680 * 4.2 / 5; newGame.interactive = true; var continueText = screens.main.addChild(LK.getAsset('continueText', { anchorX: 0.5, anchorY: 0.5, x: newGame.x - newGame.width - 500, y: newGame.y, interactive: true })); continueText.down = function () { return startGame(); }; // Game Screen screens.gameScreen.x = 2048 / 2; screens.gameScreen.y = 2732 / 2; screens.gameScreen.attachAsset('gameScreenBackground', { anchorX: 0.5, anchorY: 0.5 }); var anvil = screens.gameScreen.addChild(new Anvil()); anvil.x = 20; anvil.y = 500; var door = screens.gameScreen.addChild(new Container()); door.attachAsset('Door', { anchorX: 0.5, anchorY: 0.5, interactive: true }); door.x = 2048 / 4; door.y = 2732 / 2.5; door.down = function () { LK.getSound('doors').play(); switchScreen('magicNursery'); }; // Magic Nursery Screen screens.magicNursery.x = 2048 / 2; screens.magicNursery.y = 2732 / 2; screens.magicNursery.attachAsset('magicNurseryBackground', { anchorX: 0.5, anchorY: 0.5, scaleX: 2, scaleY: 2 }); var blueIngot = screens.magicNursery.addChild(new CrystalIngot('blue', 'blueCristallScore', 'blueCrystalIngotScore', 0, 10, 10, blueCrystalIngotScoreTxt)); blueIngot.x = 200 + blueIngot.width / 2; blueIngot.y = 2500 - blueIngot.height / 2; var greenIngot = screens.magicNursery.addChild(new CrystalIngot('green', 'greenCristallScore', 'greenCrystalIngotScore', 3000, 10, 10, greenCrystalIngotScoreTxt)); greenIngot.x = blueIngot.x + blueIngot.width + greenIngot.width / 2 + 40; greenIngot.y = blueIngot.y; var redIngot = screens.magicNursery.addChild(new CrystalIngot('red', 'redCristallScore', 'redCrystalIngotScore', 9000, 20, 10, redCrystalIngotScoreTxt)); redIngot.x = 1300 / 2; redIngot.y = 4930 / 2; var door2 = screens.magicNursery.addChild(new Container()); door2.attachAsset('Door', { anchorX: 0.5, anchorY: 0.5, interactive: true }); door2.x = 2048 * 0.75; door2.y = 2732 * 0.9; door2.down = function () { LK.getSound('doors').play(); switchScreen('gameScreen'); }; // Map Screen var map = screens.gameScreen.addChild(LK.getAsset('Map', { anchorX: 0.5, anchorY: 0.5, x: 400, y: 2450, interactive: true })); map.down = function () { LK.getSound('mapaudio').play(); switchScreen('mapScreen'); }; screens.mapScreen.x = 2048 / 2; screens.mapScreen.y = 2732 / 2; screens.mapScreen.attachAsset('mapbackground', { anchorX: 0.5, anchorY: 0.5 }); var cityMap = screens.mapScreen.attachAsset('citymap', { anchorX: 0.5, anchorY: 0.5, x: -250, y: 160, interactive: true }); cityMap.down = function () { return switchScreen('shopScreen'); }; var anvilMap = screens.mapScreen.attachAsset('anvilmap', { anchorX: 0.5, anchorY: 0.5, interactive: true }); anvilMap.down = function () { return switchScreen('gameScreen'); }; var mine = screens.mapScreen.attachAsset('mine', { anchorX: 0.5, anchorY: 0.5, x: -150, y: -150, interactive: true }); mine.down = function () { return switchScreen('mineScreen'); }; // Mine Screen screens.mineScreen.x = 2048 / 2; screens.mineScreen.y = 2732 / 2; screens.mineScreen.attachAsset('mineinsidebackground', { anchorX: 0.5, anchorY: 0.5 }); var blueCrystal = screens.mineScreen.addChild(new Crystal('blue', 'blueCristallScore', scoreTxt)); blueCrystal.x = -410; blueCrystal.y = -310; var greenCrystal = screens.mineScreen.addChild(new Crystal('green', 'greenCristallScore', greenScoreTxt)); greenCrystal.x = 510; greenCrystal.y = 10; var redCrystal = screens.mineScreen.addChild(new Crystal('red', 'redCristallScore', redScoreTxt)); redCrystal.x = -510; redCrystal.y = 490; // Shop Screen screens.shopScreen.x = 2048 / 2; screens.shopScreen.y = 2732 / 2; screens.shopScreen.attachAsset('shopbackground', { anchorX: 0.5, anchorY: 0.5 }); var newTools = screens.shopScreen.attachAsset('newTools', { anchorX: 0.5, anchorY: 0.5, x: -650, y: 1100, interactive: true }); newTools.down = function () { LK.getSound('shopin').play(); switchScreen('shopTools'); }; var sellWeapons = screens.shopScreen.attachAsset('sellweapons', { anchorX: 0.5, anchorY: 0.5, x: 0, y: 1100, interactive: true }); sellWeapons.down = function () { storage.goldScore += storage.blueSwords * 50 + storage.greenAxes * 150 + storage.redCrystalTwoHandedSwords * 600; storage.blueSwords = storage.greenAxes = storage.redCrystalTwoHandedSwords = 0; goldScoreTxt.setText('Gold: ' + storage.goldScore); }; var shopOut = screens.shopScreen.attachAsset('shopout', { anchorX: 0.5, anchorY: 0.5, x: 650, y: 1100, interactive: true }); shopOut.down = function () { LK.getSound('doors').play(); switchScreen('mapScreen'); }; // Shop Tools Screen var shopToolsScreen = new Container(); shopToolsScreen.x = 2048 / 2; shopToolsScreen.y = 2732 / 2; shopToolsScreen.attachAsset('newToolsBackground', { anchorX: 0.5, anchorY: 0.5 }); var toolsOut = shopToolsScreen.attachAsset('newToolsout', { anchorX: 0.5, anchorY: 0.5, x: 0, y: 1100, interactive: true }); toolsOut.down = function () { LK.getSound('booksaudio').play(); switchScreen('shopScreen'); }; screens.shopTools = shopToolsScreen; game.addChild(shopToolsScreen); // Recipes Screen var recipes = screens.gameScreen.attachAsset('recipes', { anchorX: 0.5, anchorY: 0.5, x: -1050, y: 150, interactive: true }); recipes.down = function () { LK.getSound('booksaudio').play(); switchScreen('recipesScreen'); }; screens.recipesScreen.x = 2048 / 2; screens.recipesScreen.y = 2732 / 2; screens.recipesScreen.attachAsset('recipesbackground', { anchorX: 0.5, anchorY: 0.5 }); var blueSword = screens.recipesScreen.addChild(new CraftableItem('bluecrystalswordrecipe', 2000, 10, 1000, 'blueCrystalIngotScore', 'blueSwords', 'blueswordsclick', blueSwordsText)); blueSword.x = 1248 / 2; blueSword.y = 2132 / 2; var greenAxe = screens.recipesScreen.addChild(new CraftableItem('axeOfGreenCrystalsRecipe', 10000, 25, 3000, 'greenCrystalIngotScore', 'greenAxes', 'greenAxeClicks', greenAxesText)); greenAxe.x = 2848 / 2; greenAxe.y = 2132 / 2; var recipesOut = screens.recipesScreen.attachAsset('recipesout', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 + 1100, interactive: true }); recipesOut.down = function () { LK.getSound('paper').play(); switchScreen('gameScreen'); }; // Game Start function startGame() { switchScreen('gameScreen'); } // Initialize switchScreen('main'); var intervals = {}; function startMiner(key, scoreKey, scoreText) { if (storage[key + 'Clicked'] && !intervals[key]) { intervals[key] = LK.setInterval(function () { storage[scoreKey] += 1; scoreText.setText("".concat(key.replace('automine', '').replace('cristall', ' Cristall'), ": ").concat(storage[scoreKey])); }, 1000); } } startMiner('automineblue', 'blueCristallScore', scoreTxt); startMiner('autominegreen', 'greenCristallScore', greenScoreTxt); startMiner('autominered', 'redCristallScore', redScoreTxt); if (storage.autogrowthRateClicked) { intervals['growth'] = LK.setInterval(function () { return storage.growthRate += 1; }, 1000); } if (storage.theBlacksmithsApprentice) { intervals['apprentice'] = LK.setInterval(function () { return storage.forgingSkill += 1; }, 1000); } LK.setInterval(function () { return storage.lastgametime = Math.floor(Date.now() / 1000); }, 1000);
===================================================================
--- original.js
+++ change.js
@@ -4,1695 +4,971 @@
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
forgingSkill: 0,
growthRate: 0,
+ goldScore: 0,
blueCristallScore: 0,
+ greenCristallScore: 0,
+ redCristallScore: 0,
+ blueCrystalIngotScore: 0,
greenCrystalIngotScore: 0,
+ redCrystalIngotScore: 0,
blueSwords: 0,
greenAxes: 0,
redCrystalTwoHandedSwords: 0,
blueswordsclick: 0,
greenAxeClicks: 0,
redCrystalTwoHandedSwordClicks: 0,
autominebluecristallClicked: false,
autominegreencristallClicked: false,
+ automineredcristallClicked: false,
autogrowthRateClicked: false,
multiclickupgrade: false,
theBlacksmithsApprentice: false,
- automineredcristallClicked: false,
lastgametime: 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', {
+ self.attachAsset('anvil', {
anchorX: 0.5,
anchorY: 0.5,
- alpha: 0.0 // Make the anvil fully transparent
+ alpha: 0.0,
+ interactive: true
});
- // 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.down = function () {
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() < (storage.multiclickupgrade ? 0.04 : 0.02)) {
self.clickCounter += 5;
- // Create a new asset at the center of the screen
- var newAsset = game.addChild(LK.getAsset('multyclick', {
+ var multi = game.addChild(LK.getAsset('multyclick', {
anchorX: 0.5,
- anchorY: 0.5
+ anchorY: 0.5,
+ x: 2048 / 2,
+ y: 2732 / 2
}));
- // 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, {
+ tween(multi, {
scaleX: 2,
scaleY: 2
}, {
duration: 500,
easing: tween.easeInOut,
onFinish: function onFinish() {
- newAsset.destroy(); // Remove the asset after the animation
+ return multi.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
- } else if (self.clickCounter >= 2000 && self.clickCounter < 15000) {
- counterText.tint = 0x0000FF; // Blue
- } else if (self.clickCounter >= 15000 && self.clickCounter < 30000) {
- counterText.tint = 0x800080; // Purple
- } else if (self.clickCounter >= 30000) {
- counterText.tint = 0xcc7c04; // Purple
- }
- };
-});
-// Create a new class for the BlueCristal object
-var BlueCristal = Container.expand(function () {
- var self = Container.call(this);
- // Attach 'blueCristal' asset to the 'BlueCristal' object
- var blueCristalGraphics = self.attachAsset('blueCristal', {
- anchorX: 0.5,
- anchorY: 0.5,
- interactive: true,
- // Make the blueCristal interactive
- down: function down(x, y, obj) {
- // Define the 'down' event handler for blueCristal
- blueCristallScore += 1100;
- LK.setScore(blueCristallScore);
- storage.blueCristallScore = blueCristallScore;
- scoreTxt.setText('Blue Cristall: ' + LK.getScore());
- scoreTxt.visible = true; // Ensure the score text remains visible
- }
- });
-});
-// Create a new class for the BlueCrystalIngot object
-var BlueCrystalIngot = Container.expand(function () {
- var self = Container.call(this);
- // Attach 'blueCrystalIngot' asset to the 'BlueCrystalIngot' object
- var blueCrystalIngotGraphics = self.attachAsset('blueCrystalIngot', {
- anchorX: 0.5,
- anchorY: 0.5,
- interactive: true // Make the blueCrystalIngot interactive
- });
- // Define the 'down' event handler for blueCrystalIngot
- self.down = function (x, y, obj) {
- // Logic for what happens when the blueCrystalIngot is clicked
- if (blueCristallScore >= 100) {
- blueCrystalIngotScore += 1; //{y.1}
- storage.growthRate += 1000; // Increment growth rate by 10
- growthRateText.setText('Growth rate: ' + storage.growthRate); // Update the growth rate display
- blueCrystalIngotScoreTxt.setText('BlueCrystalIngot: ' + blueCrystalIngotScore); //{y.2}
- storage.blueCrystalIngotScore = blueCrystalIngotScore;
- blueCristallScore -= 100;
- if (blueCristallScore < 0) {
- blueCristallScore = 0;
+ counterText.setText('Forging skill: ' + self.clickCounter);
+ var tints = [[1000, 0x00FF00], [2000, 0x0000FF], [15000, 0x800080], [30000, 0xcc7c04]];
+ for (var _i = 0, _tints = tints; _i < _tints.length; _i++) {
+ var _tints$_i = _slicedToArray(_tints[_i], 2),
+ threshold = _tints$_i[0],
+ color = _tints$_i[1];
+ if (self.clickCounter >= threshold) {
+ counterText.tint = color;
}
- storage.blueCristallScore = blueCristallScore; // Persist the decrement
- LK.setScore(blueCristallScore);
- scoreTxt.setText('Blue Cristall: ' + LK.getScore());
}
};
});
-// Create a new class for the Door object
-var Door = Container.expand(function () {
+var CraftableItem = Container.expand(function (recipeAsset, skillReq, ingotReq, clicksReq, ingotKey, itemKey, clicksKey, stockText) {
var self = Container.call(this);
- // Attach 'Door' asset to the 'Door' object
- var doorGraphics = self.attachAsset('Door', {
+ self.attachAsset(recipeAsset, {
anchorX: 0.5,
anchorY: 0.5,
- interactive: true,
- // Make the 'Door' object interactive
- down: function down(x, y, obj) {
- // Define the 'down' event handler
- 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 // Double the size vertically
- });
- magicNurseryBackground.x = 2048 / 2;
- magicNurseryBackground.y = 2732 / 2;
- var forgeOfMatter = game.magicNursery.attachAsset('ForgeOfMatter', {
- 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;
- redCrystalIngot.y = 4930 / 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.5,
- anchorY: 0.5
- }));
- growthRate.x = 700;
- growthRate.y = 1450;
- forgeOfMatter.down = function (x, y, obj) {
- storage.growthRate++;
- growthRateText.setText('Growth rate: ' + storage.growthRate);
- };
- 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;
- hammer = game.addChild(LK.getAsset('hammer', {
- anchorX: 0.5,
- anchorY: 0.5,
- scaleX: -1
- }));
- }
+ interactive: true
});
-});
-// Create a new class for the Door2 object
-var Door2 = Container.expand(function () {
- var self = Container.call(this);
- // Attach 'Door' asset to the 'Door2' object
- var doorGraphics = self.attachAsset('Door', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- // Make the 'Door2' object interactive
- self.interactive = true;
- // Define the 'down' event handler
- self.down = function (x, y, obj) {
- LK.getSound('doors').play();
- // Remove the existing hammer
- hammer.destroy();
- // Show the Anvil screen
- gameScreen.visible = true;
- // Show the map only on the anvil screen
- map.visible = true;
- // Show the counter display
- counterText.visible = true;
- // Hide the Magic Nursery screen
- game.magicNursery.visible = false;
- // Show the Growth rate counter when transitioning to anvil
- growthRateText.visible = true;
- // Recreate the hammer asset
- hammer = game.addChild(LK.getAsset('hammer', {
- anchorX: 0.5,
- anchorY: 0.5,
- scaleX: -1
- }));
- };
-});
-// Create a new class for the GreenAxe object
-var GreenAxe = Container.expand(function () {
- var self = Container.call(this);
- // Attach 'axeOfGreenCrystalsRecipe' asset to the 'GreenAxe' object
- var greenAxeGraphics = self.attachAsset('axeOfGreenCrystalsRecipe', {
- anchorX: 0.5,
- anchorY: 0.5,
- interactive: true // Make the greenAxe interactive
- });
- // Define the 'down' event handler for greenAxe
- self.down = function (x, y, obj) {
- if (storage.forgingSkill >= 10000 && storage.greenCrystalIngotScore >= 150) {
- greenAxeClicks += 1000;
- }
- if (greenAxeClicks >= 3000) {
- greenAxeClicks = 0;
- storage.greenAxes += 1; // Increment the green axes count in storage
- greenAxesText.setText(storage.greenAxes.toString());
- }
- greenAxeClicksText.setText('(current ' + greenAxeClicks + ')');
- storage.greenAxeClicks = greenAxeClicks;
- };
-});
-// Create a new class for the GreenCristal object
-var GreenCristal = Container.expand(function () {
- var self = Container.call(this);
- // Attach 'greenCristal' asset to the 'GreenCristal' object
- var greenCristalGraphics = self.attachAsset('greenCristal', {
- anchorX: 0.5,
- anchorY: 0.5,
- interactive: true,
- // Make the greenCristal interactive
- down: function down(x, y, obj) {
- // Define the 'down' event handler for greenCristal
- greenCristallScore += 1000;
- LK.setScore(greenCristallScore);
- storage.greenCristallScore = greenCristallScore;
- greenScoreTxt.setText('Green Cristall: ' + greenCristallScore);
- greenScoreTxt.visible = true; // Ensure the score text remains visible
- }
- });
-});
-// Create a new class for the GreenCrystalIngot object
-var GreenCrystalIngot = Container.expand(function () {
- var self = Container.call(this);
- // Attach 'greenCrystalIngot' asset to the 'GreenCrystalIngot' object
- var greenCrystalIngotGraphics = self.attachAsset('greenCrystalIngot', {
- anchorX: 0.5,
- anchorY: 0.5,
- interactive: true // Make the greenCrystalIngot interactive
- });
- // Define the 'down' event handler for greenCrystalIngot
- self.down = function (x, y, obj) {
- if (storage.growthRate >= 3000 && greenCristallScore >= 100) {
- storage.growthRate += 10; // Increment growth rate by 10
- growthRateText.setText('Growth rate: ' + storage.growthRate); // Update the growth rate display
- // Increment the GreenCrystalIngot score by 1
- greenCrystalIngotScore += 1;
- greenCrystalIngotScoreTxt.setText('GreenCrystalIngot: ' + greenCrystalIngotScore);
- storage.greenCrystalIngotScore = greenCrystalIngotScore;
- // Decrement the GreenCristal score by 100
- greenCristallScore -= 100;
- if (greenCristallScore < 0) {
- greenCristallScore = 0;
+ self.down = function () {
+ if (storage.forgingSkill >= skillReq && storage[ingotKey] >= ingotReq) {
+ storage[clicksKey] = (storage[clicksKey] || 0) + 100;
+ if (storage[clicksKey] >= clicksReq) {
+ storage[clicksKey] = 0;
+ storage[itemKey] += 1;
+ storage[ingotKey] -= ingotReq;
+ stockText.setText(storage[itemKey].toString());
}
- storage.greenCristallScore = greenCristallScore; // Persist the decrement
- greenScoreTxt.setText('Green Cristall: ' + greenCristallScore);
}
};
});
-// Create a new class for the RecipesScreen object
-var RecipesScreen = Container.expand(function () {
+var Crystal = Container.expand(function (color, scoreKey, scoreText) {
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', {
+ self.attachAsset(color + 'Cristal', {
anchorX: 0.5,
anchorY: 0.5,
- interactive: true,
- // Make the redCristal interactive
- down: function down(x, y, obj) {
- // Define the 'down' event handler for redCristal
- redCristallScore += 1000;
- LK.setScore(redCristallScore);
- storage.redCristallScore = redCristallScore;
- redScoreTxt.setText('Red Cristall: ' + redCristallScore);
- redScoreTxt.visible = true; // Ensure the score text remains visible
- }
+ interactive: 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
- });
- // Define the 'down' event handler for redCrystalIngot
- self.down = function (x, y, obj) {
- // Decrement the RedCristal score by 100
- if (storage.growthRate >= 9000 && redCristallScore >= 100) {
- // Increment the RedCrystalIngot score by 1
- redCrystalIngotScore += 1;
- storage.growthRate += 20; // Increment growth rate by 20
- growthRateText.setText('Growth rate: ' + storage.growthRate); // Update the growth rate display
- redCrystalIngotScoreTxt.setText('RedCrystalIngot: ' + redCrystalIngotScore);
- storage.redCrystalIngotScore = redCrystalIngotScore;
- redCristallScore -= 100;
- storage.redCristallScore = redCristallScore; // Persist the decrement
- redScoreTxt.setText('Red Cristall: ' + redCristallScore);
- }
+ self.down = function () {
+ storage[scoreKey] = (storage[scoreKey] || 0) + 1;
+ scoreText.setText("".concat(color, " Cristall: ").concat(storage[scoreKey]));
};
});
-var RedCrystalTwoHandedSword = Container.expand(function () {
+var CrystalIngot = Container.expand(function (color, crystalKey, ingotKey, growthReq, growthInc, crystalCost, scoreText) {
var self = Container.call(this);
- // Attach 'redcrystaltwo-handedswordrecipe' asset to the 'RedCrystalTwoHandedSword' object
- var redCrystalTwoHandedSwordGraphics = self.attachAsset('redcrystaltwo-handedswordrecipe', {
+ self.attachAsset(color + 'CrystalIngot', {
anchorX: 0.5,
anchorY: 0.5,
- interactive: true // Make the redCrystalTwoHandedSword interactive
+ interactive: true
});
- // Define the 'down' event handler for redCrystalTwoHandedSword
- self.down = function (x, y, obj) {
- if (storage.forgingSkill >= 20000 && storage.redCrystalIngotScore >= 250) {
- redCrystalTwoHandedSwordClicks += 1;
- redCrystalTwoHandedSwordClicksText.setText('(current ' + redCrystalTwoHandedSwordClicks + ')');
- if (redCrystalTwoHandedSwordClicks >= 10000) {
- redCrystalTwoHandedSwordClicks = 0;
- storage.redCrystalTwoHandedSwords += 1; // Increment the red crystal two-handed swords count in storage
- redCrystalTwoHandedSwordsText.setText(storage.redCrystalTwoHandedSwords.toString());
- }
+ self.down = function () {
+ if (storage.growthRate >= growthReq && storage[crystalKey] >= crystalCost) {
+ storage[ingotKey] = (storage[ingotKey] || 0) + 1;
+ storage[crystalKey] -= crystalCost;
+ storage.growthRate += growthInc;
+ growthRateText.setText('Growth rate: ' + storage.growthRate);
+ scoreText.setText("".concat(color, "CrystalIngot: ").concat(storage[ingotKey]));
}
- if (redCrystalTwoHandedSwordClicks >= 10000) {
- redCrystalTwoHandedSwordClicks = 0;
- storage.redCrystalTwoHandedSwords += 250; // Increment the red crystal two-handed swords count in storage
- redCrystalTwoHandedSwordsText.setText(storage.redCrystalTwoHandedSwords.toString());
- }
- redCrystalTwoHandedSwordClicksText.setText('(current ' + redCrystalTwoHandedSwordClicks + ')');
- storage.redCrystalTwoHandedSwordClicks = redCrystalTwoHandedSwordClicks;
};
});
/****
* Initialize Game
****/
-// Create a new text object to display the click counter
+/****
+* Game Setup
+****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
-//{0.1}
-//{0.1}
-var goldScore = storage.goldScore || 0;
-var goldScoreTxt = new Text2('Gold: ' + goldScore, {
+function _slicedToArray(r, e) {
+ return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
+}
+function _nonIterableRest() {
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+function _unsupportedIterableToArray(r, a) {
+ if (r) {
+ if ("string" == typeof r) {
+ return _arrayLikeToArray(r, a);
+ }
+ var t = {}.toString.call(r).slice(8, -1);
+ return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
+ }
+}
+function _arrayLikeToArray(r, a) {
+ (null == a || a > r.length) && (a = r.length);
+ for (var e = 0, n = Array(a); e < a; e++) {
+ n[e] = r[e];
+ }
+ return n;
+}
+function _iterableToArrayLimit(r, l) {
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
+ if (null != t) {
+ var e,
+ n,
+ i,
+ u,
+ a = [],
+ f = !0,
+ o = !1;
+ try {
+ if (i = (t = t.call(r)).next, 0 === l) {
+ if (Object(t) !== t) {
+ return;
+ }
+ f = !1;
+ } else {
+ for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0) {
+ ;
+ }
+ }
+ } catch (r) {
+ o = !0, n = r;
+ } finally {
+ try {
+ if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) {
+ return;
+ }
+ } finally {
+ if (o) {
+ throw n;
+ }
+ }
+ }
+ return a;
+ }
+}
+function _arrayWithHoles(r) {
+ if (Array.isArray(r)) {
+ return r;
+ }
+}
+var assets = [{
+ type: 'shape',
+ name: 'Gold',
+ width: 100,
+ height: 100,
+ color: 0xba3e24,
+ shape: 'box'
+}, {
+ type: 'shape',
+ name: 'anvil',
+ width: 480,
+ height: 300,
+ color: 0x90b8f4,
+ shape: 'box'
+}, {
+ type: 'shape',
+ name: 'anvilstar',
+ width: 100,
+ height: 100,
+ color: 0x9eec73,
+ shape: 'box'
+}, {
+ type: 'image',
+ name: 'Door',
+ width: 300,
+ height: 300,
+ id: '6794cd7686e5290db4ef0f61'
+}, {
+ type: 'image',
+ name: 'Map',
+ width: 300,
+ height: 300,
+ id: '67960d5478a5ca831e38e79f'
+}, {
+ type: 'image',
+ name: 'Theblacksmithsapprentice',
+ width: 250,
+ height: 250,
+ id: '67b872b7f35062e15c95627b'
+}, {
+ type: 'image',
+ name: 'anvilmap',
+ width: 100,
+ height: 100,
+ id: '6796204778a5ca831e38e7db'
+}, {
+ type: 'image',
+ name: 'autogrowthRate',
+ width: 360,
+ height: 300,
+ id: '67b4c3c752a1da49713d524a'
+}, {
+ type: 'image',
+ name: 'autominebluecristall',
+ width: 250,
+ height: 250,
+ id: '67b4bd8952a1da49713d51e5'
+}, {
+ type: 'image',
+ name: 'autominegreencristall',
+ width: 250,
+ height: 250,
+ id: '67b4be1152a1da49713d51fa'
+}, {
+ type: 'image',
+ name: 'automineredcristall',
+ width: 250,
+ height: 250,
+ id: '67b4ba73345af481077a5a3a'
+}, {
+ type: 'image',
+ name: 'axeOfGreenCrystalsRecipe',
+ width: 300,
+ height: 500,
+ id: '67991a67090093ccb7744bb4'
+}, {
+ type: 'image',
+ name: 'background',
+ width: 2000,
+ height: 2000,
+ id: '67b07ea12e29576e5caf3b79'
+}, {
+ type: 'image',
+ name: 'blueCristal',
+ width: 300,
+ height: 300,
+ id: '67b89f3ddacac0208c8f6e0e'
+}, {
+ type: 'image',
+ name: 'blueCrystalIngot',
+ width: 100,
+ height: 80,
+ id: '67966dd1690fa8a090669322'
+}, {
+ type: 'image',
+ name: 'bluecrystalswordrecipe',
+ width: 400,
+ height: 400,
+ id: '67991043090093ccb7744b1a',
+ flipX: 1,
+ flipY: 1,
+ orientation: 3
+}, {
+ type: 'image',
+ name: 'blueingotrecipe',
+ width: 200,
+ height: 150,
+ id: '67bf46c527fc48d849e4e932'
+}, {
+ type: 'image',
+ name: 'citybackground',
+ width: 2000,
+ height: 2000,
+ id: '67a0d50d52a2e35ca0eb5c70'
+}, {
+ type: 'image',
+ name: 'citymap',
+ width: 150,
+ height: 150,
+ id: '679f607e55b87b3a41d5d55a'
+}, {
+ type: 'image',
+ name: 'continueText',
+ width: 300,
+ height: 370,
+ id: '67b060fe2e29576e5caf3af2'
+}, {
+ type: 'image',
+ name: 'gameScreenBackground',
+ width: 2000,
+ height: 1900,
+ id: '67b8ba062d0daaf579fc58d0'
+}, {
+ type: 'image',
+ name: 'greenCristal',
+ width: 300,
+ height: 300,
+ id: '67b8a0c4dacac0208c8f6e47'
+}, {
+ type: 'image',
+ name: 'greenCrystalIngot',
+ width: 110,
+ height: 90,
+ id: '67967631690fa8a090669346'
+}, {
+ type: 'image',
+ name: 'greeningotrecipe',
+ width: 200,
+ height: 190.48,
+ id: '67967631690fa8a090669346'
+}, {
+ type: 'image',
+ name: 'growthRate',
+ width: 300,
+ height: 300,
+ id: '67b8aa3cdacac0208c8f6ea0'
+}, {
+ type: 'image',
+ name: 'hammer',
+ width: 150,
+ height: 150,
+ id: '6794cebe86e5290db4ef0f74'
+}, {
+ type: 'image',
+ name: 'magicNurseryBackground',
+ width: 1000,
+ height: 1000,
+ id: '67965c40690fa8a090669227'
+}, {
+ type: 'image',
+ name: 'mapbackground',
+ width: 1900,
+ height: 1900,
+ id: '67960c7078a5ca831e38e78c'
+}, {
+ type: 'image',
+ name: 'mine',
+ width: 80,
+ height: 100,
+ id: '6796224378a5ca831e38e807'
+}, {
+ type: 'image',
+ name: 'mineinsidebackground',
+ width: 1850,
+ height: 1850,
+ id: '679625c578a5ca831e38e821'
+}, {
+ type: 'image',
+ name: 'multiclickupgrade',
+ width: 280,
+ height: 280,
+ id: '67b4d29752a1da49713d526e'
+}, {
+ type: 'image',
+ name: 'multyclick',
+ width: 200,
+ height: 200,
+ id: '67a38faeec1e8c186c4e68aa'
+}, {
+ type: 'image',
+ name: 'newGameText',
+ width: 300,
+ height: 400,
+ id: '67b0610c2e29576e5caf3af6'
+}, {
+ type: 'image',
+ name: 'newTools',
+ width: 200,
+ height: 200,
+ id: '67a4ed1a15483cfd543c1702'
+}, {
+ type: 'image',
+ name: 'newToolsBackground',
+ width: 2000,
+ height: 2000,
+ id: '679905e1090093ccb7744b04'
+}, {
+ type: 'image',
+ name: 'newToolsout',
+ width: 300,
+ height: 300,
+ id: '6797a530690fa8a090669c76'
+}, {
+ type: 'image',
+ name: 'recipes',
+ width: 350,
+ height: 350,
+ id: '6797a530690fa8a090669c76'
+}, {
+ type: 'image',
+ name: 'recipesbackground',
+ width: 2000,
+ height: 2000,
+ id: '679905e1090093ccb7744b04'
+}, {
+ type: 'image',
+ name: 'recipesnext',
+ width: 350,
+ height: 350,
+ id: '679b9f5d0f1a2ec74003f873'
+}, {
+ type: 'image',
+ name: 'recipesnextbackgr1',
+ width: 2000,
+ height: 2000,
+ id: '679905e1090093ccb7744b04'
+}, {
+ type: 'image',
+ name: 'recipesout',
+ width: 350,
+ height: 350,
+ id: '6797a530690fa8a090669c76'
+}, {
+ type: 'image',
+ name: 'recipesprev',
+ width: 350,
+ height: 350,
+ id: '679b9f5d0f1a2ec74003f873',
+ flipX: 1
+}, {
+ type: 'image',
+ name: 'redCristal',
+ width: 500,
+ height: 600,
+ id: '67b8a15bdacac0208c8f6e55'
+}, {
+ type: 'image',
+ name: 'redCristalIngot',
+ width: 110,
+ height: 90,
+ id: '67967c31690fa8a0906693e7'
+}, {
+ type: 'image',
+ name: 'redcrystaltwo-handedswordrecipe',
+ width: 400,
+ height: 400,
+ id: '67adcc78e366fb4797fc38c0'
+}, {
+ type: 'image',
+ name: 'redingotrecipe',
+ width: 250,
+ height: 180,
+ id: '67bf4c3827fc48d849e4e955'
+}, {
+ type: 'image',
+ name: 'sellweapons',
+ width: 300,
+ height: 300,
+ id: '67b35cb8a9534c1274453a27'
+}, {
+ type: 'image',
+ name: 'shop',
+ width: 400,
+ height: 400,
+ id: '67be174fc61ffecc5503a69d'
+}, {
+ type: 'image',
+ name: 'shopbackground',
+ width: 2000,
+ height: 2000,
+ id: '67a0f8b752a2e35ca0eb5fdf'
+}, {
+ type: 'image',
+ name: 'shopout',
+ width: 300,
+ height: 300,
+ id: '6794cd7686e5290db4ef0f61'
+}, {
+ type: 'image',
+ name: 'star',
+ width: 50,
+ height: 50,
+ id: '6794fd2986e5290db4ef104a'
+}, {
+ type: 'image',
+ name: 'title',
+ width: 900,
+ height: 400,
+ id: '67b8af589837459f356f3e4b'
+}, {
+ type: 'sound',
+ name: 'booksaudio',
+ volume: 1,
+ start: 0,
+ end: 1,
+ id: '67b8a6c6dacac0208c8f6e80'
+}, {
+ type: 'sound',
+ name: 'doors',
+ volume: 1,
+ start: 0,
+ end: 1,
+ id: '67b8a3d2dacac0208c8f6e73'
+}, {
+ type: 'sound',
+ name: 'hammer',
+ volume: 1,
+ start: 0,
+ end: 0.862,
+ id: '6794fd6d86e5290db4ef1050'
+}, {
+ type: 'sound',
+ name: 'mapaudio',
+ volume: 1,
+ start: 0,
+ end: 1,
+ id: '67b8a489dacac0208c8f6e79'
+}, {
+ type: 'sound',
+ name: 'paper',
+ volume: 1,
+ start: 0,
+ end: 1,
+ id: '67b8a489dacac0208c8f6e79'
+}, {
+ type: 'sound',
+ name: 'shopin',
+ volume: 1,
+ start: 0,
+ end: 0.776,
+ id: '67b8a891dacac0208c8f6e8a'
+}];
+assets.forEach(function (asset) {
+ if (asset.type === 'image') {} else if (asset.type === 'shape') {} else if (asset.type === 'sound') {}
+});
+var screens = {
+ main: new Container(),
+ gameScreen: new Container(),
+ mapScreen: new Container(),
+ shopScreen: new Container(),
+ recipesScreen: new Container(),
+ mineScreen: new Container(),
+ magicNursery: new Container()
+};
+var hammer = game.addChild(LK.getAsset('hammer', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ scaleX: -1
+}));
+function updateHammer(x, y) {
+ hammer.x = x;
+ hammer.y = y;
+}
+game.move = function (x, y) {
+ return updateHammer(x, y);
+};
+game.down = function (x, y) {
+ 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;
+ star.update = function () {
+ star.y -= 5;
+ star.x += star.x < hammer.x ? 2 : -2;
+ };
+ LK.setTimeout(function () {
+ return star.destroy();
+ }, 250);
+ }
+ tween(hammer, {
+ rotation: 0
+ }, {
+ duration: 125,
+ easing: tween.easeInOut
+ });
+ }
+ });
+};
+// UI Elements
+var counterText = new Text2('Forging skill: ' + storage.forgingSkill, {
size: 50,
fill: 0xFFFFFF
});
-goldScoreTxt.anchor.set(0, 0);
-goldScoreTxt.y = 0;
-if (typeof counterText !== 'undefined') {
- goldScoreTxt.x = counterText.width + 10; // Position to the right of the Forging skill counter
-} else {
- goldScoreTxt.x = 550; // Default position if counterText is undefined
-}
-LK.gui.topLeft.addChild(goldScoreTxt);
-var redCrystalIngotScore = storage.redCrystalIngotScore || 0;
-var redCrystalIngotScoreTxt = new Text2('RedCrystalIngot: ' + redCrystalIngotScore, {
+LK.gui.topLeft.addChild(counterText, {
+ x: 0,
+ y: 0
+});
+var growthRateText = new Text2('Growth rate: ' + storage.growthRate, {
size: 50,
fill: 0xFFFFFF
});
-redCrystalIngotScoreTxt.anchor.set(1, 0);
-redCrystalIngotScoreTxt.y = 100; // Position below the GreenCrystalIngot score
-LK.gui.topRight.addChild(redCrystalIngotScoreTxt);
-//{0.1}
-// Removed the 'current underfiend' text from the screen
-var mineInsideBackground;
-var blueCristallScore = storage.blueCristallScore || 0;
-var autominebluecristallClicked = storage.autominebluecristallClicked;
-var autominegreencristallClicked = storage.autominegreencristallClicked;
-var autominegreencristallClicked = storage.autominegreencristallClicked;
-var automineredcristallClicked = storage.automineredcristallClicked;
-var autogrowthRateClicked = storage.autogrowthRateClicked;
-var scoreTxt = new Text2('Blue Cristall: ' + blueCristallScore, {
+LK.gui.topLeft.addChild(growthRateText, {
+ x: 0,
+ y: counterText.height - 6
+});
+var goldScoreTxt = new Text2('Gold: ' + (storage.goldScore || 0), {
size: 50,
fill: 0xFFFFFF
});
-scoreTxt.anchor.set(0, 0);
-scoreTxt.y = 100; // Move the score text 100 pixels down
-LK.gui.topLeft.addChild(scoreTxt);
-var greenCristallScore = storage.greenCristallScore || 0;
-var greenScoreTxt = new Text2('Green Cristall: ' + greenCristallScore, {
+LK.gui.topLeft.addChild(goldScoreTxt, {
+ x: counterText.width + 10,
+ y: 0
+});
+var scoreTxt = new Text2('Blue Cristall: ' + (storage.blueCristallScore || 0), {
size: 50,
fill: 0xFFFFFF
});
-greenScoreTxt.anchor.set(0, 0);
-greenScoreTxt.y = 150; // Position below the Blue Cristall score
-LK.gui.topLeft.addChild(greenScoreTxt);
-var greenCrystalIngotScore = storage.greenCrystalIngotScore || 0;
-var greenCrystalIngotScoreTxt = new Text2('GreenCrystalIngot: ' + greenCrystalIngotScore, {
+LK.gui.topLeft.addChild(scoreTxt, {
+ x: 0,
+ y: 100
+});
+var greenScoreTxt = new Text2('Green Cristall: ' + (storage.greenCristallScore || 0), {
size: 50,
fill: 0xFFFFFF
});
-greenCrystalIngotScoreTxt.anchor.set(1, 0);
-greenCrystalIngotScoreTxt.y = 50; // Position below the BlueCrystalIngot score
-LK.gui.topRight.addChild(greenCrystalIngotScoreTxt);
-var blueCristal; // Define blueCristal in the global scope to fix the reference error
-var greenCristal; // Define greenCristal in the global scope to fix the reference error
-var redCristal; // Define redCristal in the global scope to fix the reference error
-var blueCrystalIngotScore = storage.blueCrystalIngotScore || 0; //{1Z.1}
-var blueSwordsText = new Text2(storage.blueSwords.toString(), {
+LK.gui.topLeft.addChild(greenScoreTxt, {
+ x: 0,
+ y: 150
+});
+var redScoreTxt = new Text2('Red Cristall: ' + (storage.redCristallScore || 0), {
size: 50,
- fill: 0x000000 // Black color
+ fill: 0xFFFFFF
});
-blueSwordsText.anchor.set(0.5, 0.5);
-blueSwordsText.x = 1248 / 2;
-blueSwordsText.y = 2732 / 2 + 450; // Position below the 'Swords in stock' text
-LK.gui.topLeft.addChild(blueSwordsText);
-var redCristallScore = storage.redCristallScore || 0;
-var blueCrystalIngotScoreTxt = new Text2('BlueCrystalIngot: ' + blueCrystalIngotScore, {
+LK.gui.topLeft.addChild(redScoreTxt, {
+ x: 0,
+ y: 200
+});
+var blueCrystalIngotScoreTxt = new Text2('BlueCrystalIngot: ' + (storage.blueCrystalIngotScore || 0), {
size: 50,
fill: 0xFFFFFF
});
-blueCrystalIngotScoreTxt.anchor.set(1, 0);
-blueCrystalIngotScoreTxt.y = 0;
-LK.gui.topRight.addChild(blueCrystalIngotScoreTxt);
-var redScoreTxt = new Text2('Red Cristall: ' + redCristallScore, {
+LK.gui.topRight.addChild(blueCrystalIngotScoreTxt, {
+ x: 0,
+ y: 0
+});
+var greenCrystalIngotScoreTxt = new Text2('GreenCrystalIngot: ' + (storage.greenCrystalIngotScore || 0), {
size: 50,
fill: 0xFFFFFF
});
-redScoreTxt.anchor.set(0, 0);
-redScoreTxt.y = 200; // Position below the Green Cristall score
-LK.gui.topLeft.addChild(redScoreTxt);
-var map = game.addChild(LK.getAsset('Map', {
+LK.gui.topRight.addChild(greenCrystalIngotScoreTxt, {
+ x: 0,
+ y: 50
+});
+var redCrystalIngotScoreTxt = new Text2('RedCrystalIngot: ' + (storage.redCrystalIngotScore || 0), {
+ size: 50,
+ fill: 0xFFFFFF
+});
+LK.gui.topRight.addChild(redCrystalIngotScoreTxt, {
+ x: 0,
+ y: 100
+});
+// Screen Management
+function switchScreen(activeScreen) {
+ Object.values(screens).forEach(function (screen) {
+ return screen.visible = false;
+ });
+ screens[activeScreen].visible = true;
+}
+// Main Screen
+screens.main.attachAsset('background', {
anchorX: 0.5,
+ anchorY: 0.5,
+ x: 2048 / 2,
+ y: 2732 / 2
+});
+var title = screens.main.addChild(LK.getAsset('title', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 2048 / 2,
+ y: 3200 / 5
+}));
+var newGame = screens.main.addChild(new Container());
+newGame.attachAsset('newGameText', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ stroke: 0xFFFFFF,
+ strokeThickness: 5
+});
+newGame.x = 2650 / 2 + 100;
+newGame.y = 2680 * 4.2 / 5;
+newGame.interactive = true;
+var continueText = screens.main.addChild(LK.getAsset('continueText', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: newGame.x - newGame.width - 500,
+ y: newGame.y,
+ interactive: true
+}));
+continueText.down = function () {
+ return startGame();
+};
+// Game Screen
+screens.gameScreen.x = 2048 / 2;
+screens.gameScreen.y = 2732 / 2;
+screens.gameScreen.attachAsset('gameScreenBackground', {
+ anchorX: 0.5,
anchorY: 0.5
+});
+var anvil = screens.gameScreen.addChild(new Anvil());
+anvil.x = 20;
+anvil.y = 500;
+var door = screens.gameScreen.addChild(new Container());
+door.attachAsset('Door', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ interactive: true
+});
+door.x = 2048 / 4;
+door.y = 2732 / 2.5;
+door.down = function () {
+ LK.getSound('doors').play();
+ switchScreen('magicNursery');
+};
+// Magic Nursery Screen
+screens.magicNursery.x = 2048 / 2;
+screens.magicNursery.y = 2732 / 2;
+screens.magicNursery.attachAsset('magicNurseryBackground', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ scaleX: 2,
+ scaleY: 2
+});
+var blueIngot = screens.magicNursery.addChild(new CrystalIngot('blue', 'blueCristallScore', 'blueCrystalIngotScore', 0, 10, 10, blueCrystalIngotScoreTxt));
+blueIngot.x = 200 + blueIngot.width / 2;
+blueIngot.y = 2500 - blueIngot.height / 2;
+var greenIngot = screens.magicNursery.addChild(new CrystalIngot('green', 'greenCristallScore', 'greenCrystalIngotScore', 3000, 10, 10, greenCrystalIngotScoreTxt));
+greenIngot.x = blueIngot.x + blueIngot.width + greenIngot.width / 2 + 40;
+greenIngot.y = blueIngot.y;
+var redIngot = screens.magicNursery.addChild(new CrystalIngot('red', 'redCristallScore', 'redCrystalIngotScore', 9000, 20, 10, redCrystalIngotScoreTxt));
+redIngot.x = 1300 / 2;
+redIngot.y = 4930 / 2;
+var door2 = screens.magicNursery.addChild(new Container());
+door2.attachAsset('Door', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ interactive: true
+});
+door2.x = 2048 * 0.75;
+door2.y = 2732 * 0.9;
+door2.down = function () {
+ LK.getSound('doors').play();
+ switchScreen('gameScreen');
+};
+// Map Screen
+var map = screens.gameScreen.addChild(LK.getAsset('Map', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 400,
+ y: 2450,
+ interactive: true
}));
-map.x = 400;
-map.y = 2450;
-map.visible = false; // Initialize the map as invisible
-// Make the map interactive
-map.interactive = true;
-// Define the 'down' event handler for the map
-map.down = function (x, y, obj) {
- hammer.destroy();
- // Hide the map asset when transitioning to the map screen
+map.down = function () {
LK.getSound('mapaudio').play();
- map.visible = false;
- // Hide the mineInsideBackground if it exists
- if (mineInsideBackground) {
- mineInsideBackground.visible = false;
- mineInsideBackground.destroy(); // Ensure it is completely removed
- }
- if (redCristal) {
- redCristal.visible = false; //{1Z.1}
- redCristal.destroy(); // Ensure it is completely removed
- } //{1Z.3}
- if (blueCristal) {
- blueCristal.visible = false; //{1X.1}
- blueCristal.destroy(); // Ensure it is completely removed
- } //{1X.3}
- if (greenCristal) {
- greenCristal.visible = false; //{1Y.1}
- greenCristal.destroy(); // Ensure it is completely removed
- } //{1Y.3}
- var mapScreen = game.addChild(new Container());
- // Attach 'mapbackground' asset to the mapScreen
- var mapBackground = mapScreen.attachAsset('mapbackground', {
- anchorX: 0.5,
- //{1h.1}
- anchorY: 0.5,
- //{1h.2}
- interactive: false // Ensure mapbackground does not block cursor interaction
- }); //{1h.3}
- // Add 'citymap' asset to the center of the screen
- var cityMap = mapScreen.attachAsset('citymap', {
- anchorX: 0.5,
- anchorY: 0.5,
- interactive: true // Make the 'citymap' asset interactive
- });
- cityMap.x = -250;
- cityMap.y = 160;
- // Define the 'down' event handler for cityMap
- cityMap.down = function (x, y, obj) {
- hammer.destroy();
- // Create a new screen without background
- var isolatedScreen = game.addChild(new Container());
- // Hide the current map screen
- mapScreen.visible = false;
- // Add 'citybackground' asset to the center of the isolatedScreen
- var cityBackground = isolatedScreen.attachAsset('citybackground', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- cityBackground.x = 0;
- cityBackground.y = 0;
- // Add 'map' asset to the isolatedScreen
- var mapAsset = isolatedScreen.attachAsset('Map', {
- anchorX: 0.5,
- anchorY: 0.5,
- interactive: true // Make the 'map' asset interactive
- });
- mapAsset.x = -650;
- mapAsset.y = 1100;
- // Define the 'down' event handler for mapAsset
- mapAsset.down = function (x, y, obj) {
- // Transition back to the citymap screen
- isolatedScreen.visible = false; // Hide the current isolated screen
- mapScreen.visible = true; // Show the citymap screen
- cityBackground.visible = false; // Ensure citybackground is hidden
- 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
- });
- shop.x = 490;
- shop.y = -20;
- // 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.down = function (x, y, obj) {
- hammer.destroy();
- // Create a new isolated screen without a background
- var isolatedScreen = game.addChild(new Container());
- // Attach 'newToolsBackground' asset to the isolatedScreen
- var newToolsBackground = isolatedScreen.attachAsset('newToolsBackground', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- newToolsBackground.x = 0;
- newToolsBackground.y = 0;
- if (!storage.theBlacksmithsApprentice) {
- // Attach 'Theblacksmithsapprentice' asset to the center of the isolatedScreen
- var theBlacksmithsApprentice = isolatedScreen.attachAsset('Theblacksmithsapprentice', {
- anchorX: 0.5,
- //{4C.1}
- anchorY: 0.5,
- //{4C.2}
- interactive: true // Make the Theblacksmithsapprentice interactive
- }); //{4C.3}
- theBlacksmithsApprentice.x = 400;
- theBlacksmithsApprentice.y = 200;
- theBlacksmithsApprentice.clicked = storage.theBlacksmithsApprentice;
- // Define the 'down' event handler for theBlacksmithsApprentice
- theBlacksmithsApprentice.down = function (x, y, obj) {
- // Increment forgingSkill by 1 every second
- if (goldScore >= 1500 && !theBlacksmithsApprentice.clicked) {
- goldScore -= 1500;
- goldScoreTxt.setText('Gold: ' + goldScore);
- storage.goldScore = goldScore;
- theBlacksmithsApprentice.clicked = true;
- var intervalId = LK.setInterval(function () {
- storage.forgingSkill += 1;
- counterText.setText('Forging skill: ' + storage.forgingSkill);
- }, 1000);
- // Store the intervalId in the theBlacksmithsApprentice object for potential future use
- theBlacksmithsApprentice.intervalId = intervalId;
- storage.theBlacksmithsApprentice = true;
- 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
- isolatedScreen.addChild(apprenticeText);
- // Add text "1500G" below the 'The blacksmith's apprentice +1' text
- var apprenticeCostText = new Text2('1500G', {
- size: 50,
- fill: 0x030303
- });
- apprenticeCostText.anchor.set(0.5, 0.5);
- apprenticeCostText.x = apprenticeText.x;
- apprenticeCostText.y = apprenticeText.y + 70; // Position below the 'The blacksmith's apprentice +1' text
- isolatedScreen.addChild(apprenticeCostText);
- }
- // Attach 'newToolsout' asset to the center of the isolatedScreen
- var newToolsOut = isolatedScreen.attachAsset('newToolsout', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- newToolsOut.x = 0;
- newToolsOut.y = 1100;
- newToolsOut.interactive = true; // Make the newToolsOut asset interactive//{4F.1}
- if (!storage.autominebluecristallClicked) {
- // Attach 'autominebluecristall' asset to the center of the isolatedScreen
- var autominebluecristall = isolatedScreen.attachAsset('autominebluecristall', {
- anchorX: 0.5,
- //{4F.2}
- anchorY: 0.5,
- //{4F.3}
- interactive: true // Make the autominebluecristall interactive
- }); //{4F.4}
- autominebluecristall.x = -400;
- autominebluecristall.y = -600;
- autominebluecristall.clicked = storage.autominebluecristallClicked;
- // Define the 'down' event handler for autominebluecristall
- autominebluecristall.down = function (x, y, obj) {
- // Increment blueCristallScore by 1 every second
- if (goldScore >= 500 && !autominebluecristall.clicked) {
- autominebluecristall.clicked = true;
- goldScore -= 500;
- goldScoreTxt.setText('Gold: ' + goldScore);
- storage.goldScore = goldScore;
- var intervalId = LK.setInterval(function () {
- blueCristallScore += 1;
- LK.setScore(blueCristallScore);
- storage.blueCristallScore = blueCristallScore;
- scoreTxt.setText('Blue Cristall: ' + LK.getScore());
- }, 1000);
- // Store the intervalId in the autominebluecristall object for potential future use
- autominebluecristall.intervalId = intervalId;
- storage.autominebluecristallClicked = true; // Persist the click state
- autominebluecristall.visible = false;
- mineBlueCristallText.visible = false;
- mineBlueCristallCostText.visible = false;
- }
- };
- // Add text "Mine Blue Cristall +1" below the autominebluecristall asset
- var mineBlueCristallText = new Text2('Mine Blue Cristall +1', {
- size: 50,
- fill: 0x030303
- });
- mineBlueCristallText.anchor.set(0.5, 0.5);
- mineBlueCristallText.x = autominebluecristall.x;
- mineBlueCristallText.y = autominebluecristall.y + 150; // Position below the autominebluecristall asset
- isolatedScreen.addChild(mineBlueCristallText);
- // Add text "500G" below the 'Mine Blue Cristall +1' text
- var mineBlueCristallCostText = new Text2('500G', {
- size: 50,
- //{58.1}
- fill: 0x030303 //{58.2}
- }); //{58.3}
- mineBlueCristallCostText.anchor.set(0.5, 0.5);
- mineBlueCristallCostText.x = mineBlueCristallText.x;
- mineBlueCristallCostText.y = mineBlueCristallText.y + 50; // Position below the 'Mine Blue Cristall +1' text
- isolatedScreen.addChild(mineBlueCristallCostText);
- }
- if (!storage.autominegreencristallClicked) {
- // Attach 'autominegreencristall' asset to the center of the isolatedScreen
- var autominegreencristall = isolatedScreen.attachAsset('autominegreencristall', {
- anchorX: 0.5,
- anchorY: 0.5,
- interactive: true // Make the autominegreencristall interactive
- });
- autominegreencristall.x = -400;
- autominegreencristall.y = -200;
- // Define the 'down' event handler for autominegreencristall
- autominegreencristall.clicked = storage.autominegreencristallClicked;
- autominegreencristall.down = function (x, y, obj) {
- // Increment greenCristallScore by 1 every second
- if (goldScore >= 1000 && !autominegreencristall.clicked) {
- autominegreencristall.clicked = true;
- goldScore -= 1000;
- goldScoreTxt.setText('Gold: ' + goldScore);
- storage.goldScore = goldScore;
- var intervalId = LK.setInterval(function () {
- greenCristallScore += 1;
- storage.greenCristallScore = greenCristallScore;
- greenScoreTxt.setText('Green Cristall: ' + greenCristallScore);
- }, 1000);
- // Store the intervalId in the autominegreencristall object for potential future use
- autominegreencristall.intervalId = intervalId;
- storage.autominegreencristallClicked = true; // Persist the click state
- autominegreencristall.visible = false;
- mineGreenCristallText.visible = false;
- mineGreenCristallCostText.visible = false;
- }
- };
- // Add text "Mine Green Cristall +1" below the autominegreencristall asset
- var mineGreenCristallText = new Text2('Mine Green Cristall +1', {
- size: 50,
- fill: 0x030303
- });
- mineGreenCristallText.anchor.set(0.5, 0.5);
- mineGreenCristallText.x = autominegreencristall.x;
- mineGreenCristallText.y = autominegreencristall.y + 150; // Lower the position below the autominegreencristall asset
- isolatedScreen.addChild(mineGreenCristallText);
- // Add text "1000G" below the 'Mine Green Cristall +1' text
- var mineGreenCristallCostText = new Text2('1000G', {
- size: 50,
- //{5c.1}
- fill: 0x030303 //{5c.2}
- }); //{5c.3}
- mineGreenCristallCostText.anchor.set(0.5, 0.5);
- mineGreenCristallCostText.x = mineGreenCristallText.x;
- mineGreenCristallCostText.y = mineGreenCristallText.y + 50; // Position below the 'Mine Green Cristall +1' text
- isolatedScreen.addChild(mineGreenCristallCostText);
- }
- if (!storage.automineredcristallClicked) {
- // Attach 'automineredcristall' asset to the center of the isolatedScreen
- var automineredcristall = isolatedScreen.attachAsset('automineredcristall', {
- anchorX: 0.5,
- anchorY: 0.5,
- interactive: true // Make the automineredcristall interactive
- });
- automineredcristall.x = -400;
- automineredcristall.y = 200;
- // Define the 'down' event handler for automineredcristall
- automineredcristall.down = function (x, y, obj) {
- // Increment redCristallScore by 1 every second
- if (goldScore >= 2000 && !automineredcristall.clicked) {
- automineredcristall.clicked = true;
- goldScore -= 2000;
- goldScoreTxt.setText('Gold: ' + goldScore);
- storage.goldScore = goldScore;
- var intervalId = LK.setInterval(function () {
- redCristallScore += 1;
- storage.redCristallScore = redCristallScore;
- redScoreTxt.setText('Red Cristall: ' + redCristallScore);
- }, 1000);
- // Store the intervalId in the automineredcristall object for potential future use
- automineredcristall.intervalId = intervalId;
- storage.automineredcristallClicked = true; // Persist the click state
- automineredcristall.visible = false;
- mineRedCristallText.visible = false;
- mineRedCristallCostText.visible = false;
- }
- };
- // Add text "Mine Red Cristall +1" below the automineredcristall asset
- var mineRedCristallText = new Text2('Mine Red Cristall +1', {
- size: 50,
- fill: 0x030303
- });
- mineRedCristallText.anchor.set(0.5, 0.5);
- mineRedCristallText.x = automineredcristall.x;
- mineRedCristallText.y = automineredcristall.y + 140; // Position below the automineredcristall asset
- isolatedScreen.addChild(mineRedCristallText);
- // Add text "2000G" below the 'Mine Red Cristall +1' text
- var mineRedCristallCostText = new Text2('2000G', {
- size: 50,
- //{55.1}
- fill: 0x030303 //{55.2}
- }); //{55.3}
- mineRedCristallCostText.anchor.set(0.5, 0.5);
- mineRedCristallCostText.x = mineRedCristallText.x;
- mineRedCristallCostText.y = mineRedCristallText.y + 50; // Position below the 'Mine Red Cristall +1' text
- isolatedScreen.addChild(mineRedCristallCostText);
- }
- if (!storage.multiclickupgrade) {
- // Attach 'multiclickupgrade' asset to the center of the isolatedScreen
- var multiclickupgrade = isolatedScreen.attachAsset('multiclickupgrade', {
- anchorX: 0.5,
- anchorY: 0.5,
- interactive: true // Make the multiclickupgrade interactive
- });
- multiclickupgrade.x = 400;
- multiclickupgrade.y = -200;
- // Define the 'down' event handler for multiclickupgrade
- multiclickupgrade.down = function (x, y, obj) {
- // Deduct 700 gold when clicked
- if (goldScore >= 700 && !storage.multiclickupgrade) {
- goldScore -= 700;
- goldScoreTxt.setText('Gold: ' + goldScore);
- storage.goldScore = goldScore;
- storage.multiclickupgrade = true;
- multiclickupgrade.visible = false;
- 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
- isolatedScreen.addChild(increasedChanceText);
- // Add text "700G" below the 'Increased chance of successful forging +5%' text
- var increasedChanceCostText = new Text2('700G', {
- size: 50,
- //{4Z.1}
- fill: 0x030303 //{4Z.2}
- }); //{4Z.3}
- increasedChanceCostText.anchor.set(0.5, 0.5);
- increasedChanceCostText.x = increasedChanceText.x;
- increasedChanceCostText.y = increasedChanceText.y + 70; // Position below the 'Increased chance of successful forging +5%' text
- isolatedScreen.addChild(increasedChanceCostText);
- }
- if (!storage.autogrowthRateClicked) {
- // Attach 'autogrowthRate' asset to the center of the isolatedScreen
- var autogrowthRate = isolatedScreen.attachAsset('autogrowthRate', {
- anchorX: 0.5,
- anchorY: 0.5,
- interactive: true // Make the autogrowthRate interactive
- });
- autogrowthRate.x = 400;
- autogrowthRate.y = -600;
- autogrowthRate.clicked = storage.autogrowthRateClicked;
- // Define the 'down' event handler for autogrowthRate
- autogrowthRate.down = function (x, y, obj) {
- // Increment growthRateCounter by 1 every second
- if (goldScore >= 2000 && !autogrowthRate.clicked) {
- autogrowthRate.clicked = true;
- goldScore -= 2000;
- goldScoreTxt.setText('Gold: ' + goldScore);
- storage.goldScore = goldScore;
- var intervalId = LK.setInterval(function () {
- growthRateCounter += 1;
- growthRateText.setText('Growth rate: ' + growthRateCounter);
- storage.growthRate = growthRateCounter;
- }, 1000);
- // Store the intervalId in the autogrowthRate object for potential future use
- autogrowthRate.intervalId = intervalId;
- storage.autogrowthRateClicked = true; // Persist the click state
- 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
- isolatedScreen.addChild(automaticMeltingText);
- // Add text "2000G" below the 'Automatic melting +1' text
- var automaticMeltingCostText = new Text2('2000G', {
- size: 50,
- fill: 0x030303
- });
- automaticMeltingCostText.anchor.set(0.5, 0.5);
- automaticMeltingCostText.x = automaticMeltingText.x;
- automaticMeltingCostText.y = automaticMeltingText.y + 50; // Position below the 'Automatic melting +1' text
- isolatedScreen.addChild(automaticMeltingCostText);
- }
- newToolsOut.down = function (x, y, obj) {
- LK.getSound('booksaudio').play();
- // Transition to the newTools screen
- isolatedScreen.visible = false; // Hide the current isolated screen
- shopScreen.visible = true; // Show the newTools screen
- };
- // Hide the current shop screen
- shopScreen.visible = false;
- // Position the isolatedScreen at the center
- isolatedScreen.x = 2048 / 2;
- isolatedScreen.y = 2732 / 2;
- 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
- });
- // Define the 'down' event handler for sellweapons
- newBuildings.down = function (x, y, obj) {
- console.log("Sell weapons asset clicked at", x, y);
- // Reset 'Swords in stock' counter and add +100 to Gold for each sword
- goldScore += storage.blueSwords * 100;
- storage.blueSwords = 0;
- blueSwordsText.setText('0');
- goldScore += storage.greenAxes * 300;
- storage.greenAxes = 0;
- goldScore += storage.redCrystalTwoHandedSwords * 100;
- storage.redCrystalTwoHandedSwords = 0;
- goldScoreTxt.setText('Gold: ' + goldScore);
- storage.goldScore = goldScore;
- };
- 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
- });
- shopOut.x = 650;
- shopOut.y = 1100;
- // Define the 'down' event handler for shopOut
- shopOut.down = function (x, y, obj) {
- LK.getSound('doors').play();
- shopScreen.visible = false; // Hide the current shop screen
- mapBackground.visible = false; // Ensure the mapbackground asset is hidden
- mapScreen.visible = true; // Show the citymap screen
- isolatedScreen.visible = true; // Ensure the isolated screen is visible
- };
- 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.down = function (x, y, obj) {
- hammer.destroy();
- // Create a new screen for the mine
- var mineScreen = game.addChild(new Container());
- // Make the map visible after transitioning to the mine screen
- map.visible = true;
- // Hide the current map screen
- mapScreen.visible = false;
- // Disable the active background
- background.visible = false;
- // Attach 'mineinsidebackground' asset to the mineScreen on the bottom layer
- mineInsideBackground = mineScreen.attachAsset('mineinsidebackground', {
- anchorX: 0.5,
- anchorY: 0.5,
- interactive: false,
- zIndex: -1 // Ensure it is on the bottom layer
- });
- // Create and add a new instance of the RedCristal class
- redCristal = mineScreen.addChild(new RedCristal());
- // Position the redCristal asset
- redCristal.x -= 510; // Move 100 pixels to the left
- redCristal.y += 490; // Move 100 pixels lower
- // Create and add a new instance of the GreenCristal class
- greenCristal = mineScreen.addChild(new GreenCristal());
- // Position the greenCristal asset
- greenCristal.x -= -510; // Move 100 pixels to the left
- greenCristal.y += 10; // Move 100 pixels lower
- // Create and add a new instance of the BlueCristal class
- blueCristal = mineScreen.addChild(new BlueCristal());
- // Position the blueCristal asset
- blueCristal.x += 490; // Move 100 pixels to the right
- blueCristal.y += -60; // Move 100 pixels lower
- // Position the blueCristal asset
- blueCristal.x -= 410; // Move 100 pixels to the left
- blueCristal.y -= 310; // Move 100 pixels lower
- // Position the mineScreen at the center
- mineScreen.x = 2048 / 2; //{1E.1}
- mineScreen.y = 2732 / 2; //{1E.2}
- 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) {
- // Show the Anvil screen
- gameScreen.visible = true;
- // Make the map visible after transitioning to the anvil map
- map.visible = true;
- // Attach 'gameScreenBackground' asset to the 'gameScreen' object
- gameScreenBackground = gameScreen.attachAsset('gameScreenBackground', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- // Attach 'recipes' asset to the 'gameScreenBackground' object
- var recipes = gameScreenBackground.attachAsset('recipes', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- // Center the 'recipes' asset on the gameScreenBackground
- recipes.x = gameScreenBackground.width / 2 - 1050; //{3u.1}
- recipes.y = gameScreenBackground.height / 2 + 150; //{3v.1}
- // Hide the mineinsidebackground when exiting the mine screen
- if (mineInsideBackground) {
- mineInsideBackground.visible = false;
- mineInsideBackground.destroy(); // Ensure it is completely removed
- }
- if (mineInsideBackground) {
- mineInsideBackground.visible = false;
- mineInsideBackground.destroy(); // Ensure it is completely removed
- }
- if (blueCristal) {
- blueCristal.visible = false; //{1X.1}
- blueCristal.destroy(); // Ensure it is completely removed
- } //{1X.3}
- if (greenCristal) {
- greenCristal.visible = false; //{1Y.1}
- greenCristal.destroy(); // Ensure it is completely removed
- } //{1Y.3}
- if (redCristal) {
- redCristal.visible = false; //{1Z.1}
- redCristal.destroy(); // Ensure it is completely removed
- } //{1Z.3}
- // Hide the map screen
- mapScreen.visible = false;
- // Show the counter display
- counterText.visible = true;
- // Show the Growth rate counter when transitioning to anvilmap
- growthRateText.visible = true;
- };
- // Hide the current game screen
- gameScreen.visible = false;
- // Disable the active background
- background.visible = false;
- // Attach a new background or asset to the mapScreen if needed
- // Example: mapScreen.attachAsset('newBackground', { anchorX: 0.5, anchorY: 0.5 });
- // Position the mapScreen at the center
- mapScreen.x = 2048 / 2;
- mapScreen.y = 2732 / 2;
- hammer = game.addChild(LK.getAsset('hammer', {
- anchorX: 0.5,
- anchorY: 0.5,
- scaleX: -1
- }));
+ switchScreen('mapScreen');
};
-var growthRateText;
-var growthRateCounter = storage.growthRate; // Initialize growth rate counter from storage
-var background = game.addChild(new Container());
-background.width = 2048;
-background.height = 2732;
-background.x = 2048 / 2;
-background.y = 2732 / 2;
-var backgroundGraphics = background.attachAsset('background', {
+screens.mapScreen.x = 2048 / 2;
+screens.mapScreen.y = 2732 / 2;
+screens.mapScreen.attachAsset('mapbackground', {
anchorX: 0.5,
anchorY: 0.5
});
-var gameScreen = new Container(); //{1h.1}
-var newGame = game.addChild(new Container());
-newGame.x = 2650 / 2 + 100; //{3d.1}
-newGame.y = 2680 * 4.2 / 5; //{3d.1}
-// Attach 'title' asset to the start screen
-var title = game.addChild(LK.getAsset('title', {
+var cityMap = screens.mapScreen.attachAsset('citymap', {
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', {
+ anchorY: 0.5,
+ x: -250,
+ y: 160,
+ interactive: true
+});
+cityMap.down = function () {
+ return switchScreen('shopScreen');
+};
+var anvilMap = screens.mapScreen.attachAsset('anvilmap', {
anchorX: 0.5,
anchorY: 0.5,
- stroke: 0xFFFFFF,
- // White color
- strokeThickness: 5 // 5px thickness
+ interactive: true
});
-// Attach 'continueText' asset to the game object
-var continueText = game.addChild(LK.getAsset('continueText', {
+anvilMap.down = function () {
+ return switchScreen('gameScreen');
+};
+var mine = screens.mapScreen.attachAsset('mine', {
anchorX: 0.5,
+ anchorY: 0.5,
+ x: -150,
+ y: -150,
+ interactive: true
+});
+mine.down = function () {
+ return switchScreen('mineScreen');
+};
+// Mine Screen
+screens.mineScreen.x = 2048 / 2;
+screens.mineScreen.y = 2732 / 2;
+screens.mineScreen.attachAsset('mineinsidebackground', {
+ anchorX: 0.5,
anchorY: 0.5
-}));
-continueText.x = newGame.x - newGame.width - 500; // Increase the distance between newGame and continueText
-continueText.y = newGame.y; // Align vertically with newGame
-continueText.interactive = true;
-continueText.down = function (x, y, obj) {
- startgame();
+});
+var blueCrystal = screens.mineScreen.addChild(new Crystal('blue', 'blueCristallScore', scoreTxt));
+blueCrystal.x = -410;
+blueCrystal.y = -310;
+var greenCrystal = screens.mineScreen.addChild(new Crystal('green', 'greenCristallScore', greenScoreTxt));
+greenCrystal.x = 510;
+greenCrystal.y = 10;
+var redCrystal = screens.mineScreen.addChild(new Crystal('red', 'redCristallScore', redScoreTxt));
+redCrystal.x = -510;
+redCrystal.y = 490;
+// Shop Screen
+screens.shopScreen.x = 2048 / 2;
+screens.shopScreen.y = 2732 / 2;
+screens.shopScreen.attachAsset('shopbackground', {
+ anchorX: 0.5,
+ anchorY: 0.5
+});
+var newTools = screens.shopScreen.attachAsset('newTools', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: -650,
+ y: 1100,
+ interactive: true
+});
+newTools.down = function () {
+ LK.getSound('shopin').play();
+ switchScreen('shopTools');
};
-var blueswordsclick = storage.blueswordsclick;
-var greenAxeClicks = storage.greenAxeClicks;
-var redCrystalTwoHandedSwordClicks = storage.redCrystalTwoHandedSwordClicks;
-function startgame() {
- 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
- });
- // Remove 'continueText' asset when transitioning to new game
- // Define the 'down' event handler for recipes
- recipes.down = function (x, y, obj) {
- 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 recipesBackground = recipesScreen.attachAsset('recipesbackground', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- recipesBackground.x = 2048 / 2;
- recipesBackground.y = 2932 / 2;
- // Add 'bluecrystalswordrecipe' asset to the center of the screen
- var bluecrystalswordrecipe = recipesScreen.attachAsset('bluecrystalswordrecipe', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- bluecrystalswordrecipe.x = 1248 / 2;
- bluecrystalswordrecipe.y = 2132 / 2;
- bluecrystalswordrecipe.down = function () {
- if (storage.forgingSkill >= 2000 && storage.blueCrystalIngotScore >= 100) {
- blueswordsclick += 100;
- }
- if (blueswordsclick >= 1000) {
- blueswordsclick = 0;
- storage.blueSwords += 1; // Increment the blue swords count in storage
- blueSwordsText.setText(storage.blueSwords.toString());
- if (blueCrystalIngotScore >= 100) {
- blueCrystalIngotScore -= 100; // Deduct 100 from blueCrystalIngotScore
- storage.blueCrystalIngotScore = blueCrystalIngotScore; // Persist the decrement
- blueCrystalIngotScoreTxt.setText('BlueCrystalIngot: ' + blueCrystalIngotScore);
- }
- }
- blueCrystalSwordClicks.setText('(current ' + blueswordsclick + ')');
- storage.blueswordsclick = blueswordsclick;
- };
- // Add 'Swords in stock' text asset to the center of the screen
- var swordsInStockText = new Text2('Swords in stock', {
- size: 50,
- fill: 0x000000 // Black color
- });
- swordsInStockText.anchor.set(0.5, 0.5);
- swordsInStockText.x = 1248 / 2;
- swordsInStockText.y = 2732 / 2 + 400;
- var axeInStockText = new Text2('Axe in stock', {
- size: 50,
- fill: 0x000000 // Black color
- });
- axeInStockText.anchor.set(0.5, 0.5);
- axeInStockText.x = 2848 / 2;
- axeInStockText.y = 2732 / 2 + 400; // Align with 'Swords in stock' text
- 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
- recipesScreen.addChild(blueSwordsText);
- // Add 'Axe of Green Crystals recipe' asset to the center of the screen
- var axeOfGreenCrystalsRecipe = recipesScreen.attachAsset('axeOfGreenCrystalsRecipe', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- axeOfGreenCrystalsRecipe.x = 2848 / 2;
- axeOfGreenCrystalsRecipe.y = 2132 / 2;
- axeOfGreenCrystalsRecipe.down = function () {
- if (storage.forgingSkill >= 10000 && storage.greenCrystalIngotScore >= 150) {
- greenAxeClicks += 100;
- }
- if (greenAxeClicks >= 3000) {
- greenAxeClicks = 0;
- storage.greenAxes += 1; // Increment the green axes count in storage
- greenAxesText.setText(storage.greenAxes.toString());
- if (greenCrystalIngotScore >= 150) {
- greenCrystalIngotScore -= 150; // Deduct 150 from greenCrystalIngotScore
- storage.greenCrystalIngotScore = greenCrystalIngotScore; // Persist the decrement
- greenCrystalIngotScoreTxt.setText('GreenCrystalIngot: ' + greenCrystalIngotScore);
- }
- }
- greenAxeClicksText.setText('(current ' + greenAxeClicks + ')');
- storage.greenAxeClicks = greenAxeClicks;
- };
- // Add 'Axe in stock' text asset to the center of the screen
- var axeInStockText = new Text2('Axe in stock', {
- size: 50,
- fill: 0x000000 // Black color
- });
- axeInStockText.anchor.set(0.5, 0.5);
- axeInStockText.x = 2848 / 2;
- recipesScreen.addChild(axeInStockText);
- // Display the number of green axes in stock
- var greenAxesText = new Text2(storage.greenAxes.toString(), {
- size: 50,
- fill: 0x000000 // Black color
- });
- greenAxesText.anchor.set(0.5, 0.5);
- greenAxesText.x = 2848 / 2;
- greenAxesText.y = swordsInStockText.y + 80; // Position below the 'Swords in stock' text
- recipesScreen.addChild(greenAxesText);
- // Add 'Green Axe clicks' text asset to the center of the screen
- var greenAxeClicksText = new Text2('(current ' + greenAxeClicks + ')', {
- size: 50,
- fill: 0x000000,
- alpha: 0.5 // Set transparency
- });
- greenAxeClicksText.anchor.set(0.5, 0.5);
- greenAxeClicksText.x = 2848 / 2 - 150;
- greenAxeClicksText.y = 2732 / 2 + 330;
- recipesScreen.addChild(greenAxeClicksText);
- // Add 'Blue crystal sword description' text asset to the center of the screen
- var blueCrystalSwordDescription = new Text2('"Blue Crystal Sword"\n Forging Skill 2k.\n 100 blue crystal ingots +\n 1000 clicks on the recipe', {
- size: 50,
- fill: 0x000000,
- alpha: 0.5 // Set transparency
- });
- blueCrystalSwordDescription.anchor.set(0.5, 0.5);
- blueCrystalSwordDescription.x = 1248 / 2;
- blueCrystalSwordDescription.y = 2732 / 2 + 200;
- recipesScreen.addChild(blueCrystalSwordDescription);
- var blueCrystalSwordClicks = new Text2('(current ' + blueswordsclick + ')', {
- size: 50,
- fill: 0x000000,
- alpha: 0.5 // Set transparency
- });
- blueCrystalSwordClicks.anchor.set(0.5, 0.5);
- blueCrystalSwordClicks.x = 1248 / 2 - 150;
- blueCrystalSwordClicks.y = 2732 / 2 + 330;
- recipesScreen.addChild(blueCrystalSwordClicks);
- // Add 'axeOfGreenCrystals description' text asset to the center of the screen
- var axeOfGreenCrystalsDescription = new Text2('"Axe of Green Crystals"\n Forging Skill 10k.\n 150 green crystal ingots +\n 3000 clicks on the anvil', {
- size: 50,
- fill: 0x000000,
- alpha: 0.5 // Set transparency
- });
- axeOfGreenCrystalsDescription.anchor.set(0.5, 0.5);
- axeOfGreenCrystalsDescription.x = 2890 / 2;
- axeOfGreenCrystalsDescription.y = 2732 / 2 + 200;
- recipesScreen.addChild(axeOfGreenCrystalsDescription);
- // Add 'recipesnext' asset to the center of the screen
- var recipesNext = recipesScreen.attachAsset('recipesnext', {
- anchorX: 0.5,
- anchorY: 0.5 //{4F.1}
- }); //{4G.1}
- recipesNext.x = 3248 / 2;
- recipesNext.y = 5000 / 2;
- // Make the 'recipesnext' asset interactive
- recipesNext.interactive = true;
- // Define the 'down' event handler for recipesNext
- recipesNext.down = function (x, y, obj) {
- // Create a new screen for the next section
- var nextScreen = game.addChild(new Container());
- 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
- });
- 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
- };
- // 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 500.\n 10 Blue Crystal', {
- size: 50,
- fill: 0x000000 // Black color
- });
- blueIngotRecipeText.anchor.set(0.5, 0.5);
- blueIngotRecipeText.x = blueingotrecipe.x;
- blueIngotRecipeText.y = blueingotrecipe.y + 150; // Position below the 'blueingotrecipe' asset
- 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 3000.\n 10 Green Crystal', {
- size: 50,
- fill: 0x000000 // Black color
- });
- greeningotrecipeText.anchor.set(0.5, 0.5);
- greeningotrecipeText.x = greeningotrecipe.x;
- greeningotrecipeText.y = greeningotrecipe.y + 160; // Position below the 'greeningotrecipe' asset
- 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 9000.\n 10 Green Crystal', {
- size: 50,
- fill: 0x000000 // Black color
- });
- redingotrecipeText.anchor.set(0.5, 0.5);
- redingotrecipeText.x = redingotrecipe.x;
- redingotrecipeText.y = redingotrecipe.y + 150; // Position below the 'redingotrecipe' asset
- 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 >= 20000 && storage.redCrystalIngotScore >= 250) {
- redCrystalTwoHandedSwordClicks += 1;
- }
- if (redCrystalTwoHandedSwordClicks >= 10000) {
- redCrystalTwoHandedSwordClicks = 0;
- storage.redCrystalTwoHandedSwords += 1; // Increment the red crystal two-handed swords count in storage
- redCrystalTwoHandedSwordsText.setText(storage.redCrystalTwoHandedSwords.toString());
- }
- redCrystalTwoHandedSwordClicksText.setText('(current ' + redCrystalTwoHandedSwordClicks + ')');
- storage.redCrystalTwoHandedSwordClicks = redCrystalTwoHandedSwordClicks;
- };
- // Add 'Red Crystal Two-Handed Sword in stock' text asset to the center of the screen
- var redCrystalTwoHandedSwordsText = new Text2(storage.redCrystalTwoHandedSwords.toString(), {
- size: 50,
- fill: 0x000000 // Black color
- });
- redCrystalTwoHandedSwordsText.anchor.set(0.5, 0.5);
- redCrystalTwoHandedSwordsText.x = 1248 / 2;
- var redCrystalTwoHandedSwordDescription = new Text2('"Redcrystaltwo-\n handedswordrecipe"\n Forging Skill 20k.\n 250 red crystal ingots +\n 10000 clicks on the anvil', {
- size: 50,
- fill: 0x000000 // Black color
- });
- redCrystalTwoHandedSwordDescription.anchor.set(0.5, 0.5);
- redCrystalTwoHandedSwordDescription.x = 1248 / 2;
- redCrystalTwoHandedSwordDescription.y = 2732 / 2 + 100;
- nextScreen.addChild(redCrystalTwoHandedSwordDescription);
- // Add 'Two-hand Swords in stock' text asset to the center of the screen
- var twoHandSwordsInStockText = new Text2('Two-hand Swords in stock', {
- size: 50,
- fill: 0x000000 // Black color
- });
- twoHandSwordsInStockText.anchor.set(0.5, 0.5);
- twoHandSwordsInStockText.x = 1248 / 2;
- twoHandSwordsInStockText.y = redCrystalTwoHandedSwordDescription.y + 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;
- 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
- });
- // 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;
- };
- // Hide the current game screen
- gameScreen.visible = false;
- };
- // Center the 'recipes' asset on the gameScreenBackground
- recipes.x = gameScreenBackground.width / 2 - 1050; //{3u.1}
- recipes.y = gameScreenBackground.height / 2 + 150; //{3v.1}
- // Make the map visible when 'New Game' is clicked
- map.visible = true;
- // Hide the main menu
- newGame.visible = false;
- continueText.visible = false;
- // Disable the background
- background.visible = false;
- // Create a new instance of the Anvil class
- var anvil = gameScreen.addChild(new Anvil());
- // Initialize the anvil click counter from storage
- anvil.clickCounter = storage.forgingSkill;
- counterText.setText('Forging skill: ' + anvil.clickCounter);
- // Position 'The anvil' at the location of the anvil on the gameScreenBackground
- anvil.x = gameScreenBackground.x - -20; // Adjust x-coordinate based on the anvil's position on the background
- anvil.y = gameScreenBackground.y + 500; // Adjust y-coordinate based on the anvil's position on the background
- // Add a new object 'Magic Nursery'
- var magicNursery = gameScreen.addChild(new Door());
- // Position 'Magic Nursery' to the left and up
- magicNursery.x = 2048 / 4;
- magicNursery.y = 2732 / 2.5;
- hammer = game.addChild(LK.getAsset('hammer', {
- anchorX: 0.5,
- anchorY: 0.5,
- scaleX: -1
- }));
-}
-// Make the 'New Game' object clickable
-newGame.interactive = true;
-newGame.down = function (x, y, obj) {
- if (newgameclearInterval.length > 0) {
- for (var i = 0; i < newgameclearInterval.length; i++) {
- LK.clearInterval(newgameclearInterval[i]);
- }
- }
- storage.autominebluecristallClicked = false;
- storage.autominegreencristallClicked = false;
- storage.automineredcristallClicked = false;
- storage.autogrowthRateClicked = false;
- storage.theBlacksmithsApprentice = false;
- storage.multiclickupgrade = false;
- // Reset all saved data
- storage.forgingSkill = 0;
- storage.growthRate = 0;
- storage.blueCrystalIngotScore = 0;
- storage.blueCristallScore = 0;
- storage.greenCrystalIngotScore = 0;
- storage.redCristallScore = 0;
- storage.redCrystalIngotScore = 0;
- storage.greenCristallScore = 0;
- storage.greenCrystalIngotScore = 0;
- storage.blueSwords = 0;
- storage.goldScore = 0;
- // Reset current variables
- redCrystalIngotScore = 0;
- blueCristallScore = 0;
- greenCristallScore = 0;
- greenCrystalIngotScore = 0;
- blueCrystalIngotScore = 0;
- redCristallScore = 0;
- growthRateCounter = 0;
- goldScore = 0;
- growthRateText.setText('Growth rate: ' + storage.growthRate);
- counterText.setText('Forging skill: ' + storage.forgingSkill);
- scoreTxt.setText('Blue Cristall: ' + blueCristallScore);
- greenScoreTxt.setText('Green Cristall: ' + greenCristallScore);
- redScoreTxt.setText('Red Cristall: ' + redCristallScore);
- blueCrystalIngotScoreTxt.setText('BlueCrystalIngot: ' + storage.blueCrystalIngotScore);
- greenCrystalIngotScoreTxt.setText('GreenCrystalIngot: ' + storage.greenCrystalIngotScore);
- redCrystalIngotScoreTxt.setText('RedCrystalIngot: ' + storage.redCristallScore);
- goldScoreTxt.setText('Gold: ' + goldScore);
- startgame();
+var sellWeapons = screens.shopScreen.attachAsset('sellweapons', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 0,
+ y: 1100,
+ interactive: true
+});
+sellWeapons.down = function () {
+ storage.goldScore += storage.blueSwords * 50 + storage.greenAxes * 150 + storage.redCrystalTwoHandedSwords * 600;
+ storage.blueSwords = storage.greenAxes = storage.redCrystalTwoHandedSwords = 0;
+ goldScoreTxt.setText('Gold: ' + storage.goldScore);
};
-// Create a new text object to display the click counter
-var counterText = new Text2('Forging skill: ' + storage.forgingSkill, {
- size: 50,
- fill: 0xFFFFFF
+var shopOut = screens.shopScreen.attachAsset('shopout', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 650,
+ y: 1100,
+ interactive: true
});
-// Position the text object at the top right corner of the screen
-counterText.anchor.set(0, 0);
-LK.gui.topLeft.addChild(counterText);
-counterText.y = 0;
-counterText.x = 0;
-growthRateText = new Text2('Growth rate: ' + growthRateCounter, {
- size: 50,
- fill: 0xFFFFFF
+shopOut.down = function () {
+ LK.getSound('doors').play();
+ switchScreen('mapScreen');
+};
+// Shop Tools Screen
+var shopToolsScreen = new Container();
+shopToolsScreen.x = 2048 / 2;
+shopToolsScreen.y = 2732 / 2;
+shopToolsScreen.attachAsset('newToolsBackground', {
+ anchorX: 0.5,
+ anchorY: 0.5
});
-growthRateText.anchor.set(0, 0);
-LK.gui.topLeft.addChild(growthRateText);
-growthRateText.y = counterText.height - 6; // Move the growth rate text 2 pixels higher
-growthRateText.x = 0;
-// Initialize hammer asset
-var hammer;
-hammer = game.addChild(LK.getAsset('hammer', {
+var toolsOut = shopToolsScreen.attachAsset('newToolsout', {
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;
+ x: 0,
+ y: 1100,
+ interactive: true
+});
+toolsOut.down = function () {
+ LK.getSound('booksaudio').play();
+ switchScreen('shopScreen');
+};
+screens.shopTools = shopToolsScreen;
+game.addChild(shopToolsScreen);
+// Recipes Screen
+var recipes = screens.gameScreen.attachAsset('recipes', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: -1050,
+ y: 150,
+ interactive: true
+});
+recipes.down = function () {
+ LK.getSound('booksaudio').play();
+ switchScreen('recipesScreen');
+};
+screens.recipesScreen.x = 2048 / 2;
+screens.recipesScreen.y = 2732 / 2;
+screens.recipesScreen.attachAsset('recipesbackground', {
+ anchorX: 0.5,
+ anchorY: 0.5
+});
+var blueSword = screens.recipesScreen.addChild(new CraftableItem('bluecrystalswordrecipe', 2000, 10, 1000, 'blueCrystalIngotScore', 'blueSwords', 'blueswordsclick', blueSwordsText));
+blueSword.x = 1248 / 2;
+blueSword.y = 2132 / 2;
+var greenAxe = screens.recipesScreen.addChild(new CraftableItem('axeOfGreenCrystalsRecipe', 10000, 25, 3000, 'greenCrystalIngotScore', 'greenAxes', 'greenAxeClicks', greenAxesText));
+greenAxe.x = 2848 / 2;
+greenAxe.y = 2132 / 2;
+var recipesOut = screens.recipesScreen.attachAsset('recipesout', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 2048 / 2,
+ y: 2732 / 2 + 1100,
+ interactive: true
+});
+recipesOut.down = function () {
+ LK.getSound('paper').play();
+ switchScreen('gameScreen');
+};
+// Game Start
+function startGame() {
+ switchScreen('gameScreen');
+}
+// Initialize
+switchScreen('main');
+var intervals = {};
+function startMiner(key, scoreKey, scoreText) {
+ if (storage[key + 'Clicked'] && !intervals[key]) {
+ intervals[key] = LK.setInterval(function () {
+ storage[scoreKey] += 1;
+ scoreText.setText("".concat(key.replace('automine', '').replace('cristall', ' Cristall'), ": ").concat(storage[scoreKey]));
+ }, 1000);
}
}
-var newgameclearInterval = [];
-if (autominebluecristallClicked) {
- var intervalId = LK.setInterval(function () {
- blueCristallScore += 1;
- LK.setScore(blueCristallScore);
- storage.blueCristallScore = blueCristallScore;
- scoreTxt.setText('Blue Cristall: ' + LK.getScore());
+startMiner('automineblue', 'blueCristallScore', scoreTxt);
+startMiner('autominegreen', 'greenCristallScore', greenScoreTxt);
+startMiner('autominered', 'redCristallScore', redScoreTxt);
+if (storage.autogrowthRateClicked) {
+ intervals['growth'] = LK.setInterval(function () {
+ return storage.growthRate += 1;
}, 1000);
- newgameclearInterval.push(intervalId);
}
-if (autominegreencristallClicked) {
- var intervalId = LK.setInterval(function () {
- greenCristallScore += 1;
- storage.greenCristallScore = greenCristallScore;
- greenScoreTxt.setText('Green Cristall: ' + greenCristallScore);
- }, 1000);
- newgameclearInterval.push(intervalId);
-}
-if (automineredcristallClicked) {
- var intervalId = LK.setInterval(function () {
- redCristallScore += 1;
- storage.redCristallScore = redCristallScore;
- redScoreTxt.setText('Red Cristall: ' + redCristallScore);
- }, 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);
+ intervals['apprentice'] = LK.setInterval(function () {
+ return storage.forgingSkill += 1;
}, 1000);
- newgameclearInterval.push(intervalId);
}
-var seconds = Math.floor(Date.now() / 1000);
-seconds = seconds - storage.lastgametime;
-if (seconds * 60 * 5 > Math.floor(Date.now() / 1000)) {
- seconds = 5 * 60 * 60;
-}
-if (seconds > 0) {
- if (storage.autominebluecristallClicked) {
- blueCristallScore += seconds;
- storage.blueCristallScore += seconds;
- }
- if (storage.autominegreencristallClicked) {
- greenCristallScore += seconds;
- storage.greenCristallScore += seconds;
- }
- if (storage.automineredcristallClicked) {
- redCristallScore += seconds;
- storage.redCristallScore += 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);
- console.log(storage.lastgametime);
-}, 1000);
-// Make the cursor follow the mouse/touch position
-game.move = function (x, y, obj) {
- updateHammerPosition(x, y);
-};
-// Animate cursor rotation on click
-game.down = function (x, y, obj) {
- LK.getSound('hammer').play();
- tween(hammer, {
- rotation: -Math.PI / 2
- }, {
- duration: 125,
- easing: tween.easeInOut,
- onFinish: function onFinish() {
- // Create stars around the hammer for 0.25 seconds
- for (var i = 0; i < 5; i++) {
- var star = game.addChild(LK.getAsset('star', {
- anchorX: 0.5,
- anchorY: 0.5
- }));
- star.x = hammer.x - hammer.width / 2 + Math.random() * 100 - 25;
- star.y = hammer.y + hammer.height / 2 + Math.random() * 100 - 25;
- (function (star) {
- // Make the star move upwards
- star.update = function () {
- star.y -= 5; // Move the star upwards by 5 pixels per frame
- if (star.x < hammer.x) {
- star.x += 2; // Move the star slightly to the right if on the left side of the hammer
- } else {
- star.x -= 2; // Move the star slightly to the left if on the right side of the hammer
- }
- };
- LK.setTimeout(function () {
- star.destroy();
- }, 250);
- })(star);
- }
- tween(hammer, {
- rotation: 0
- }, {
- duration: 125,
- easing: tween.easeInOut
- });
- }
- });
-};
\ No newline at end of file
+LK.setInterval(function () {
+ return storage.lastgametime = Math.floor(Date.now() / 1000);
+}, 1000);
\ No newline at end of file