/**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
	forgingSkill: 0,
	growthRate: 0,
	blueCrystallScore: 0,
	greenCrystalIngotScore: 0,
	blueSwords: 0,
	greenAxes: 0,
	redCrystalTwoHandedSwords: 0,
	blueswordsclick: 0,
	greenAxeClicks: 0,
	redCrystalTwoHandedSwordClicks: 0,
	automineblueCrystallClicked: false,
	autominegreenCrystallClicked: false,
	autogrowthRateClicked: false,
	multiclickupgrade: false,
	theBlacksmithsApprentice: false,
	automineredCrystallClicked: false,
	lastgametime: 0,
	help: 0
});
/**** 
* Classes
****/ 
// Create a new class for the anvil object
var Anvil = Container.expand(function () {
	var self = Container.call(this);
	// Attach 'anvil' asset to the 'Anvil' object
	var anvilGraphics = self.attachAsset('anvil', {
		anchorX: 0.6,
		anchorY: 0.6,
		alpha: 0.0 // Make the anvil fully transparent
	});
	// Initialize the click counter
	self.clickCounter = storage.forgingSkill;
	// Make the 'Anvil' object interactive
	self.interactive = true;
	// Define the 'down' event handler
	self.down = function (x, y, obj) {
		// Increment the click counter
		self.clickCounter++;
		// Add a 5% chance for a multi-click event to increase forging skill by 5
		var shans = 0.02;
		if (storage.multiclickupgrade) {
			shans += 0.02;
		}
		if (Math.random() < 0.02) {
			self.clickCounter += 5;
			// Create a new asset at the center of the screen
			var newAsset = game.addChild(LK.getAsset('multyclick', {
				anchorX: 0.5,
				anchorY: 0.5
			}));
			// Position the new asset at the center of the screen
			newAsset.x = 2048 / 2;
			newAsset.y = 2732 / 2;
			// Animate the scaling of the new asset
			tween(newAsset, {
				scaleX: 2,
				scaleY: 2
			}, {
				duration: 500,
				easing: tween.easeInOut,
				onFinish: function onFinish() {
					newAsset.destroy(); // Remove the asset after the animation
				}
			});
		}
		// Update the text object with the click counter and label
		counterText.setText('Forging skill: ' + self.clickCounter);
		// Persist the click counter
		storage.forgingSkill = self.clickCounter;
		// Change the color of the counter text based on the click counter
		if (self.clickCounter >= 1000 && self.clickCounter < 2000) {
			counterText.tint = 0x00FF00; // Green
		} else if (self.clickCounter >= 2000 && self.clickCounter < 15000) {
			counterText.tint = 0x0000FF; // Blue
		} else if (self.clickCounter >= 15000 && self.clickCounter < 30000) {
			counterText.tint = 0x800080; // Purple
		} else if (self.clickCounter >= 30000) {
			counterText.tint = 0xcc7c04; // Purple
		}
		if (storage.forgingSkill >= 100 && storage.help == 1) {
			if (quest && typeof quest.destroy === 'function') {
				quest.destroy();
			}
			quest = false;
			setHelp(1);
		}
	};
});
// Create a new class for the BlueCristal object
var BlueCristal = Container.expand(function () {
	var self = Container.call(this);
	// Attach 'blueCristal' asset to the 'BlueCristal' object
	var blueCristalGraphics = self.attachAsset('blueCristal', {
		anchorX: 0.5,
		anchorY: 0.5,
		interactive: true // Make the blueCristal interactive
	});
	// Define the 'down' event handler for blueCristal
	self.down = function (x, y, obj) {
		// Increment the score by 1
		blueCrystallScore += 1;
		if (blueCrystallScore >= 100 && storage.help == 6) {
			if (quest && typeof quest.destroy === 'function') {
				quest.destroy();
			}
			quest = false;
		}
		LK.setScore(blueCrystallScore);
		storage.blueCrystallScore = blueCrystallScore;
		// Update the score text
		scoreTxt.setText('Blue Crystall: ' + LK.getScore());
		scoreTxt.visible = true; // Ensure the score text remains visible
	};
});
// Create a new class for the BlueCrystalIngot object
var BlueCrystalIngot = Container.expand(function () {
	var self = Container.call(this);
	var blueCrystalIngotGraphics = self.attachAsset('blueCrystalIngot', {
		anchorX: 0.5,
		anchorY: 0.5,
		interactive: true
	});
	self.down = function (x, y, obj) {
		if (blueCrystallScore >= 10) {
			blueCrystalIngotScore += 1;
			storage.growthRate += 10;
			growthRateText.setText('Growth rate: ' + storage.growthRate);
			blueCrystalIngotScoreTxt.setText('BlueCrystalIngot: ' + blueCrystalIngotScore);
			storage.blueCrystalIngotScore = blueCrystalIngotScore;
			blueCrystallScore -= 10;
			if (blueCrystallScore < 0) {
				blueCrystallScore = 0;
			}
			storage.blueCrystallScore = blueCrystallScore;
			LK.setScore(blueCrystallScore);
			scoreTxt.setText('Blue Crystall: ' + LK.getScore());
			// Добавляем проверку для квеста 9
			if (blueCrystalIngotScore >= 10 && storage.help == 9) {
				quest.destroy();
				quest = false;
			}
		}
	};
});
// Create a new class for the Door object
var Door = Container.expand(function () {
	var self = Container.call(this);
	// Attach 'Door' asset to the 'Door' object
	var doorGraphics = self.attachAsset('Door', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Make the 'Door' object interactive
	self.interactive = true;
	// Define the 'down' event handler
	self.down = function (x, y, obj) {
		if (storage.help == 2) {
			if (quest && typeof quest.destroy === 'function') {
				quest.destroy();
			}
			quest = false;
		}
		if (storage.help == 8) {
			if (quest && typeof quest.destroy === 'function') {
				quest.destroy();
			}
			quest = false;
		}
		LK.getSound('doors').play();
		// Remove the existing hammer
		hammer.destroy();
		// Create a new screen
		game.magicNursery = game.addChild(new Container());
		// Attach 'magicNurseryBackground' asset to the 'magicNursery' object
		var magicNurseryBackground = game.magicNursery.attachAsset('magicNurseryBackground', {
			anchorX: 0.5,
			anchorY: 0.5,
			interactive: false,
			// Disable interactivity to prevent blurring on click
			scaleX: 2,
			// Double the size horizontally
			scaleY: 2 // Double the size vertically
		});
		// Recreate the hammer asset
		magicNurseryBackground.x = 2048 / 2;
		magicNurseryBackground.y = 2732 / 2;
		// Attach 'ForgeOfMatter' asset to the 'magicNursery' object
		var forgeOfMatter = game.magicNursery.attachAsset('ForgeOfMatter', {
			anchorX: 0.5,
			anchorY: 0.5,
			interactive: true,
			scaleX: 3,
			// Increase the size horizontally
			scaleY: 3,
			// Increase the size vertically
			alpha: 0.0 // Make the ForgeOfMatter fully transparent
		});
		// Create and add a new instance of the BlueCrystalIngot class
		var blueCrystalIngot = game.magicNursery.addChild(new BlueCrystalIngot()); //{P.1}
		// Position the blueCrystalIngot asset in the bottom-left corner
		blueCrystalIngot.x = 200 + blueCrystalIngot.width / 2;
		blueCrystalIngot.y = 2500 - blueCrystalIngot.height / 2;
		// Create and add a new instance of the RedCrystalIngot class
		var redCrystalIngot = game.magicNursery.addChild(new RedCrystalIngot());
		// Center the redCrystalIngot asset in the magicNursery screen
		redCrystalIngot.x = 1300 / 2 + 350; // Move the redCristalIngot asset 100 pixels to the right
		redCrystalIngot.y = 4820 / 2;
		// Create and add a new instance of the GreenCrystalIngot class
		var greenCrystalIngotInstance = game.magicNursery.addChild(new GreenCrystalIngot());
		// Position the greenCrystalIngotInstance asset to the right of the blueCrystalIngot asset
		greenCrystalIngotInstance.x = blueCrystalIngot.x + blueCrystalIngot.width + greenCrystalIngotInstance.width / 2 + 40;
		greenCrystalIngotInstance.y = blueCrystalIngot.y;
		// Center the growthRate asset in the magicNursery screen
		var growthRate = game.magicNursery.addChild(LK.getAsset('growthRate', {
			anchorX: 0.7,
			anchorY: 0.7
		}));
		growthRate.x = 780;
		growthRate.y = 1500;
		// Define the 'down' event handler for ForgeOfMatter
		forgeOfMatter.down = function (x, y, obj) {
			// Increment the click counter
			storage.growthRate++;
			// Update the text object with the click counter and label
			growthRateText.setText('Growth rate: ' + storage.growthRate);
			if (storage.growthRate >= 50 && storage.help == 3) {
				if (quest && typeof quest.destroy === 'function') {
					quest.destroy();
				}
				quest = false;
			}
		};
		forgeOfMatter.x = 1100 / 1.5;
		forgeOfMatter.y = 2000 / 1.5;
		// Hide the game screen
		gameScreen.visible = false;
		// Show the forging skill counter when transitioning to magicNursery
		counterText.visible = true;
		// Hide the map when switching to the magic nursery screen
		map.visible = false;
		// Add a new object 'Door2'
		var door2 = game.magicNursery.addChild(new Door2());
		// Position 'Door2' to the right, between the center and the edge of the screen
		door2.x = 2048 * 0.75;
		door2.y = 2732 * 0.9;
		setHelp(2);
		setHelp(8);
		hammer = game.addChild(LK.getAsset('hammer', {
			anchorX: 0.5,
			anchorY: 0.5,
			scaleX: -1
		}));
	};
});
// Create a new class for the Door2 object
var Door2 = Container.expand(function () {
	var self = Container.call(this);
	// Attach 'Door' asset to the 'Door2' object
	var doorGraphics = self.attachAsset('Door', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Make the 'Door2' object interactive
	self.interactive = true;
	// Define the 'down' event handler
	self.down = function (x, y, obj) {
		LK.getSound('doors').play();
		hammer.destroy();
		gameScreen.visible = true;
		map.visible = true;
		counterText.visible = true;
		game.magicNursery.visible = false;
		growthRateText.visible = true;
		// Если квест 9 не завершается, показываем другие подсказки
		setHelp(0);
		setHelp(1);
		setHelp(3);
		setHelp(9);
		hammer = game.addChild(LK.getAsset('hammer', {
			anchorX: 0.5,
			anchorY: 0.5,
			scaleX: -1
		}));
	};
});
// Create a new class for the GreenCristal object
var GreenCristal = Container.expand(function () {
	var self = Container.call(this);
	// Attach 'greenCristal' asset to the 'GreenCristal' object
	var greenCristalGraphics = self.attachAsset('greenCristal', {
		anchorX: 0.5,
		anchorY: 0.5,
		interactive: true // Make the greenCristal interactive
	});
	// Define the 'down' event handler for greenCristal
	self.down = function (x, y, obj) {
		// Increment the score by 1
		greenCrystallScore += 1;
		LK.setScore(greenCrystallScore);
		storage.greenCrystallScore = greenCrystallScore;
		// Update the score text
		greenScoreTxt.setText('Green Crystall: ' + greenCrystallScore);
		greenScoreTxt.visible = true; // Ensure the score text remains visible
	};
});
// 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 && greenCrystallScore >= 15) {
			storage.growthRate += 10; // Increment growth rate by 10
			growthRateText.setText('Growth rate: ' + storage.growthRate); // Update the growth rate display
			// Increment the GreenCrystalIngot score by 1
			greenCrystalIngotScore += 1;
			greenCrystalIngotScoreTxt.setText('GreenCrystalIngot: ' + greenCrystalIngotScore);
			storage.greenCrystalIngotScore = greenCrystalIngotScore;
			// Decrement the GreenCristal score by 100
			greenCrystallScore -= 15;
			if (greenCrystallScore < 0) {
				greenCrystallScore = 0;
			}
			storage.greenCrystallScore = greenCrystallScore; // Persist the decrement
			greenScoreTxt.setText('Green Crystall: ' + greenCrystallScore);
		}
	};
});
var Help = Container.expand(function () {
	var self = Container.call(this);
	var helpGraphics = self.attachAsset('help', {
		anchorX: 0.5,
		anchorY: 0.5,
		interactive: true
	});
	self.down = function (x, y, obj) {};
});
// Create a new class for the RecipesScreen object
var RecipesScreen = Container.expand(function () {
	var self = Container.call(this);
});
// Create a new class for the RedCristal object
var RedCristal = Container.expand(function () {
	var self = Container.call(this);
	// Attach 'redCristal' asset to the 'RedCristal' object
	var redCristalGraphics = self.attachAsset('redCristal', {
		anchorX: 0.5,
		anchorY: 0.5,
		interactive: true // Make the redCristal interactive
	});
	// Define the 'down' event handler for redCristal
	self.down = function (x, y, obj) {
		// Increment the score by 1
		redCrystallScore += 1;
		LK.setScore(redCrystallScore);
		storage.redCrystallScore = redCrystallScore;
		// Update the score text
		redScoreTxt.setText('Red Crystall: ' + redCrystallScore);
		redScoreTxt.visible = true; // Ensure the score text remains visible
	};
});
// 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 && redCrystallScore >= 20) {
			// 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;
			redCrystallScore -= 20;
			storage.redCrystallScore = redCrystallScore; // Persist the decrement
			redScoreTxt.setText('Red Crystall: ' + redCrystallScore);
		}
	};
});
var RedCrystalTwoHandedSword = Container.expand(function () {
	var self = Container.call(this);
	// Attach 'redcrystaltwo-handedswordrecipe' asset to the 'RedCrystalTwoHandedSword' object
	var redCrystalTwoHandedSwordGraphics = self.attachAsset('redcrystaltwo-handedswordrecipe', {
		anchorX: 0.5,
		anchorY: 0.5,
		interactive: true // Make the redCrystalTwoHandedSword interactive
	});
});
/**** 
* Initialize Game
****/ 
// Create a new text object to display the click counter
var game = new LK.Game({
	backgroundColor: 0x000000
});
/**** 
* Game Code
****/ 
//{0.1}
function _typeof(o) {
	"@babel/helpers - typeof";
	return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
		return typeof o;
	} : function (o) {
		return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
	}, _typeof(o);
}
var helpObj = false;
var helpText = false;
var substrate = false;
var quest = false;
function setHelp(idhelp) {
	if (idhelp < storage.help && helpObj) {
		helpObj.destroy();
		substrate.destroy();
		helpText.destroy();
	}
	if (storage.help == idhelp && !quest && typeof helparray[storage.help] != 'undefined') {
		if (helpObj) {
			helpObj.destroy();
			substrate.destroy();
			helpText.destroy();
		}
		helpObj = new Help();
		if (helparray && helparray[storage.help]) {
			helpObj.x = helparray[storage.help].coords[0];
			helpObj.y = helparray[storage.help].coords[1];
			helpText = new Text2(helparray[storage.help].text, {
				size: 50,
				fill: helparray[storage.help].color
			});
		}
		if (helparray[storage.help].coords[0] < 2048 / 2) {
			helpText.x = helparray[storage.help].coords[0] + helpObj.width / 2 + 10;
		} else {
			helpText.x = helparray[storage.help].coords[0] - helpObj.width / 2 - 10 - helpText.width;
		}
		if (helparray[storage.help].coords[1] < 2732 / 2) {
			helpText.y = helparray[storage.help].coords[1] + helpObj.height / 2 + 10;
		} else {
			helpText.y = helparray[storage.help].coords[1] - helpObj.height / 2 - 10;
		}
		var questtext = helparray[storage.help].text;
		if (typeof helparray[storage.help].quest != 'undefined') {
			questtext = helparray[storage.help].quest;
		}
		if (helparray[storage.help]) {
			quest = new Text2('                QUEST\n' + questtext, {
				size: 50,
				fill: helparray[storage.help].color
			});
		}
		quest.x = 625;
		quest.y = 100;
		game.addChild(quest);
		substrate = game.attachAsset('substrate', {
			anchorX: 0.5,
			anchorY: 0.5,
			alpha: helparray[storage.help].substrate.alfa
		});
		substrate.x = helpText.x + helpText.width / 2;
		substrate.y = helpText.y + helpText.height / 2;
		substrate.width = helpText.width;
		substrate.height = helparray[storage.help].substrate.height;
		game.addChild(helpObj);
		var _animateHelp = function animateHelp(helpObj) {
			tween(helpObj, {
				scaleX: 0.5,
				scaleY: 0.5
			}, {
				duration: 1500,
				easing: tween.easeInOut,
				onFinish: function onFinish() {
					tween(helpObj, {
						scaleX: 1,
						scaleY: 1
					}, {
						duration: 1500,
						easing: tween.easeInOut,
						onFinish: function onFinish() {
							_animateHelp(helpObj);
						}
					});
				}
			});
		};
		_animateHelp(helpObj);
		game.addChild(substrate);
		game.addChild(helpText);
		// Убираем автоматическое завершение квеста для квеста 11
		helpObj.down = function (x, y, obj) {
			storage.help++;
			helpObj.destroy();
			substrate.destroy();
			helpText.destroy();
		};
		return helpObj;
	}
}
function setquest() {
	if (storage.help > 1 && !quest) {
		if (helparray && helparray[storage.help]) {
			var questtext = helparray[storage.help].text;
			if (typeof helparray[storage.help].quest != 'undefined') {
				questtext = helparray[storage.help].quest;
			}
		}
		if (helparray[storage.help]) {
			quest = new Text2('                QUEST\n' + questtext, {
				size: 50,
				fill: helparray[storage.help].color
			});
		}
		quest.x = 625;
		quest.y = 100;
		game.addChild(quest);
	}
}
var helparray = [{
	'coords': [850, 2732 / 2 + 450],
	'text': 'Click on the anvil to improve \nyour Forging skill by 100!',
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 110
	}
}, {
	'coords': [2048 * 0.75, 2732 * 0.9],
	'text': 'Now go to the foundry!',
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 55
	}
}, {
	'coords': [720, 2732 / 2 + 100],
	'text': 'Click on the foundry and raise the \nGrowth rate to 50!\nThen go out to the forge!',
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 160
	}
}, {
	'coords': [390, 2732 - 300],
	'text': 'This is a map you can use to \ntravel the world!',
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 110
	}
}, {
	'coords': [885, 1220],
	'text': 'Go to the crystal mine\n for resources!',
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 55
	}
}, {
	'coords': [1100, 1000],
	'text': 'There are three types of \ncrystals growing in \nthe mine, now we need to \nget 100 blue crystals to forge \nour first sword!',
	'color': 'white',
	'substrate': {
		'alfa': 0.6,
		'height': 275
	}
}, {
	'coords': [1030, 1350],
	'text': 'Go back to the forge!',
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 55
	}
}, {
	'coords': [2048 * 0.75, 2732 * 0.9],
	'text': "It's time to melt the crystals!",
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 55
	}
}, {
	'coords': [310, 2732 - 320],
	'text': "Click to melt the crystals! \npay attention to the counters on top! \nMelting crystals increases your Growth rate! \nCome back to the forge when you've smelted \n10 blue crystalingots.",
	'color': 'white',
	//'quest': 'go 10 crystal',
	'substrate': {
		'alfa': 0.5,
		'height': 275
	}
}, {
	'coords': [980, 2732 - 300],
	'text': "This is your blacksmith's book!",
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 55
	}
}, {
	'coords': [630, 1050],
	'text': 'Follow the recipe and click on \nthe sword 100 clicks to forge it! \nThen exploreother recipes and \nreturn to the map!',
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 235
	}
}, {
	'coords': [780, 1500],
	'text': "Let's go to the city to sell our sword! \nThe main thing is not to get lost on the way!",
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 110
	}
}, {
	'coords': [1500, 1300],
	'text': "Wow, you're already here! \nCome to the store!",
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 110
	}
}, {
	'coords': [1028, 2732 - 280],
	'text': "Click here and you will \nsell all forged weapons! \nConvenient, isn't it!? \nYou'll find something else \ninteresting to wear in the store.",
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 275
	}
}, {
	'coords': [1024, 1800],
	'text': "Improve your skills! Forge \ndifferent weapons! become the most \nfamous blacksmith in these parts, \nand the richest of course!",
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 220
	}
}];
var goldScore = storage.goldScore || 0;
var goldScoreTxt = new Text2('Gold: ' + goldScore, {
	size: 50,
	fill: 0xFFFFFF
});
goldScoreTxt.anchor.set(0, 0);
goldScoreTxt.y = 0;
if (typeof counterText !== 'undefined') {
	goldScoreTxt.x = counterText.width + 10; // Position to the right of the Forging skill counter
} else {
	goldScoreTxt.x = 550; // Default position if counterText is undefined
}
LK.gui.topLeft.addChild(goldScoreTxt);
var redCrystalIngotScore = storage.redCrystalIngotScore || 0;
var redCrystalIngotScoreTxt = new Text2('RedCrystalIngot: ' + redCrystalIngotScore, {
	size: 50,
	fill: 0xFFFFFF
});
redCrystalIngotScoreTxt.anchor.set(1, 0);
redCrystalIngotScoreTxt.y = 100; // Position below the GreenCrystalIngot score
LK.gui.topRight.addChild(redCrystalIngotScoreTxt);
var mineInsideBackground;
var blueCrystallScore = storage.blueCrystallScore || 0;
var automineblueCrystallClicked = storage.automineblueCrystallClicked;
var autominegreenCrystallClicked = storage.autominegreenCrystallClicked;
var autominegreenCrystallClicked = storage.autominegreenCrystallClicked;
var automineredCrystallClicked = storage.automineredCrystallClicked;
var autogrowthRateClicked = storage.autogrowthRateClicked;
var scoreTxt = new Text2('Blue Crystall: ' + blueCrystallScore, {
	size: 50,
	fill: 0xFFFFFF
});
scoreTxt.anchor.set(0, 0);
scoreTxt.y = 100; // Move the score text 100 pixels down
LK.gui.topLeft.addChild(scoreTxt);
var greenCrystallScore = storage.greenCrystallScore || 0;
var greenScoreTxt = new Text2('Green Crystall: ' + greenCrystallScore, {
	size: 50,
	fill: 0xFFFFFF
});
greenScoreTxt.anchor.set(0, 0);
greenScoreTxt.y = 150; // Position below the Blue Crystall score
LK.gui.topLeft.addChild(greenScoreTxt);
var greenCrystalIngotScore = storage.greenCrystalIngotScore || 0;
var greenCrystalIngotScoreTxt = new Text2('GreenCrystalIngot: ' + greenCrystalIngotScore, {
	size: 50,
	fill: 0xFFFFFF
});
greenCrystalIngotScoreTxt.anchor.set(1, 0);
greenCrystalIngotScoreTxt.y = 50; // Position below the BlueCrystalIngot score
LK.gui.topRight.addChild(greenCrystalIngotScoreTxt);
var blueCristal; // Define blueCristal in the global scope to fix the reference error
var greenCristal; // Define greenCristal in the global scope to fix the reference error
var redCristal; // Define redCristal in the global scope to fix the reference error
var blueCrystalIngotScore = storage.blueCrystalIngotScore || 0; //{1Z.1}
var redCrystallScore = storage.redCrystallScore || 0;
var blueCrystalIngotScoreTxt = new Text2('BlueCrystalIngot: ' + blueCrystalIngotScore, {
	size: 50,
	fill: 0xFFFFFF
});
blueCrystalIngotScoreTxt.anchor.set(1, 0);
blueCrystalIngotScoreTxt.y = 0;
LK.gui.topRight.addChild(blueCrystalIngotScoreTxt);
var redScoreTxt = new Text2('Red Crystall: ' + redCrystallScore, {
	size: 50,
	fill: 0xFFFFFF
});
redScoreTxt.anchor.set(0, 0);
redScoreTxt.y = 200; // Position below the Green Crystall score
LK.gui.topLeft.addChild(redScoreTxt);
var map = game.addChild(LK.getAsset('Map', {
	anchorX: 0.5,
	anchorY: 0.5
}));
map.x = 400;
map.y = 2450;
map.visible = false; // Initialize the map as invisible
// Make the map interactive
map.interactive = true;
// Define the 'down' event handler for the map
map.down = function (x, y, obj) {
	setHelp(-1);
	hammer.destroy();
	if (storage.forgingSkill >= 10 && storage.help == 4) {
		if (quest && typeof quest.destroy === 'function') {
			quest.destroy();
		}
		quest = false;
	}
	// Hide the map asset when transitioning to the map screen
	LK.getSound('mapaudio').play();
	map.visible = false;
	// Hide the mineInsideBackground if it exists
	if (mineInsideBackground) {
		mineInsideBackground.visible = false;
		mineInsideBackground.destroy(); // Ensure it is completely removed
	}
	if (redCristal) {
		redCristal.visible = false; //{1Z.1}
		redCristal.destroy(); // Ensure it is completely removed
	} //{1Z.3}
	if (blueCristal) {
		blueCristal.visible = false; //{1X.1}
		blueCristal.destroy(); // Ensure it is completely removed
	} //{1X.3}
	if (greenCristal) {
		greenCristal.visible = false; //{1Y.1}
		greenCristal.destroy(); // Ensure it is completely removed
	} //{1Y.3}
	var mapScreen = game.addChild(new Container());
	// Attach 'mapbackground' asset to the mapScreen
	var mapBackground = mapScreen.attachAsset('mapbackground', {
		anchorX: 0.5,
		//{1h.1}
		anchorY: 0.5,
		//{1h.2}
		interactive: false // Ensure mapbackground does not block cursor interaction
	}); //{1h.3}
	// Add 'citymap' asset to the center of the screen
	var cityMap = mapScreen.attachAsset('citymap', {
		anchorX: 0.5,
		anchorY: 0.5,
		interactive: true // Make the 'citymap' asset interactive
	});
	cityMap.x = -250;
	cityMap.y = 160;
	// Define the 'down' event handler for cityMap
	cityMap.down = function (x, y, obj) {
		hammer.destroy();
		setHelp(-1);
		// Create a new screen without background
		var isolatedScreen = game.addChild(new Container());
		// Hide the current map screen
		mapScreen.visible = false;
		console.log(storage.help);
		if (storage.help == 12) {
			quest.destroy();
			quest = 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;
		setHelp(12);
		// Define the 'down' event handler for shop
		shop.down = function (x, y, obj) {
			hammer.destroy();
			LK.getSound('shopin').play();
			// Create a new screen without background
			var shopScreen = game.addChild(new Container());
			// Hide the current isolated screen
			isolatedScreen.visible = false;
			// Position the shopScreen at the center
			shopScreen.x = 2048 / 2;
			shopScreen.y = 2732 / 2;
			if (storage.help == 13) {
				if (quest && typeof quest.destroy === 'function') {
					quest.destroy();
				}
				quest = false;
			}
			// 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();
				setHelp(-1);
				// Create a new isolated screen without a background
				var isolatedScreen = game.addChild(new Container());
				// Attach 'newToolsBackground' asset to the isolatedScreen
				var newToolsBackground = isolatedScreen.attachAsset('newToolsBackground', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				newToolsBackground.x = 0;
				newToolsBackground.y = 0;
				if (!storage.theBlacksmithsApprentice) {
					// Attach 'Theblacksmithsapprentice' asset to the center of the isolatedScreen
					var theBlacksmithsApprentice = isolatedScreen.attachAsset('Theblacksmithsapprentice', {
						anchorX: 0.5,
						//{4C.1}
						anchorY: 0.5,
						//{4C.2}
						interactive: true // Make the Theblacksmithsapprentice interactive
					}); //{4C.3}
					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.automineblueCrystallClicked) {
					// Attach 'automineblueCrystall' asset to the center of the isolatedScreen
					var automineblueCrystall = isolatedScreen.attachAsset('automineblueCrystall', {
						anchorX: 0.5,
						//{4F.2}
						anchorY: 0.5,
						//{4F.3}
						interactive: true // Make the automineblueCrystall interactive
					}); //{4F.4}
					automineblueCrystall.x = -400;
					automineblueCrystall.y = -600;
					automineblueCrystall.clicked = storage.automineblueCrystallClicked;
					// Define the 'down' event handler for automineblueCrystall
					automineblueCrystall.down = function (x, y, obj) {
						// Increment blueCrystallScore by 1 every second
						if (goldScore >= 500 && !automineblueCrystall.clicked) {
							automineblueCrystall.clicked = true;
							goldScore -= 500;
							goldScoreTxt.setText('Gold: ' + goldScore);
							storage.goldScore = goldScore;
							var intervalId = LK.setInterval(function () {
								blueCrystallScore += 1;
								LK.setScore(blueCrystallScore);
								storage.blueCrystallScore = blueCrystallScore;
								scoreTxt.setText('Blue Crystall: ' + LK.getScore());
							}, 1000);
							// Store the intervalId in the automineblueCrystall object for potential future use
							automineblueCrystall.intervalId = intervalId;
							storage.automineblueCrystallClicked = true; // Persist the click state
							automineblueCrystall.visible = false;
							mineBlueCrystallText.visible = false;
							mineBlueCrystallCostText.visible = false;
						}
					};
					// Add text "Mine Blue Crystall +1" below the automineblueCrystall asset
					var mineBlueCrystallText = new Text2('Mine Blue Crystall +1', {
						size: 50,
						fill: 0x030303
					});
					mineBlueCrystallText.anchor.set(0.5, 0.5);
					mineBlueCrystallText.x = automineblueCrystall.x;
					mineBlueCrystallText.y = automineblueCrystall.y + 150; // Position below the automineblueCrystall asset
					isolatedScreen.addChild(mineBlueCrystallText);
					// Add text "500G" below the 'Mine Blue Crystall +1' text
					var mineBlueCrystallCostText = new Text2('500G', {
						size: 50,
						//{58.1}
						fill: 0x030303 //{58.2}
					}); //{58.3}
					mineBlueCrystallCostText.anchor.set(0.5, 0.5);
					mineBlueCrystallCostText.x = mineBlueCrystallText.x;
					mineBlueCrystallCostText.y = mineBlueCrystallText.y + 50; // Position below the 'Mine Blue Crystall +1' text
					isolatedScreen.addChild(mineBlueCrystallCostText);
				}
				if (!storage.autominegreenCrystallClicked) {
					// Attach 'autominegreenCrystall' asset to the center of the isolatedScreen
					var autominegreenCrystall = isolatedScreen.attachAsset('autominegreenCrystall', {
						anchorX: 0.5,
						anchorY: 0.5,
						interactive: true // Make the autominegreenCrystall interactive
					});
					autominegreenCrystall.x = -400;
					autominegreenCrystall.y = -200;
					// Define the 'down' event handler for autominegreenCrystall
					autominegreenCrystall.clicked = storage.autominegreenCrystallClicked;
					autominegreenCrystall.down = function (x, y, obj) {
						// Increment greenCrystallScore by 1 every second
						if (goldScore >= 1000 && !autominegreenCrystall.clicked) {
							autominegreenCrystall.clicked = true;
							goldScore -= 1000;
							goldScoreTxt.setText('Gold: ' + goldScore);
							storage.goldScore = goldScore;
							var intervalId = LK.setInterval(function () {
								greenCrystallScore += 1;
								storage.greenCrystallScore = greenCrystallScore;
								greenScoreTxt.setText('Green Crystall: ' + greenCrystallScore);
							}, 1000);
							// Store the intervalId in the autominegreenCrystall object for potential future use
							autominegreenCrystall.intervalId = intervalId;
							storage.autominegreenCrystallClicked = true; // Persist the click state
							autominegreenCrystall.visible = false;
							mineGreenCrystallText.visible = false;
							mineGreenCrystallCostText.visible = false;
						}
					};
					// Add text "Mine Green Crystall +1" below the autominegreenCrystall asset
					var mineGreenCrystallText = new Text2('Mine Green Crystall +1', {
						size: 50,
						fill: 0x030303
					});
					mineGreenCrystallText.anchor.set(0.5, 0.5);
					mineGreenCrystallText.x = autominegreenCrystall.x;
					mineGreenCrystallText.y = autominegreenCrystall.y + 150; // Lower the position below the autominegreenCrystall asset
					isolatedScreen.addChild(mineGreenCrystallText);
					// Add text "1000G" below the 'Mine Green Crystall +1' text
					var mineGreenCrystallCostText = new Text2('1000G', {
						size: 50,
						//{5c.1}
						fill: 0x030303 //{5c.2}
					}); //{5c.3}
					mineGreenCrystallCostText.anchor.set(0.5, 0.5);
					mineGreenCrystallCostText.x = mineGreenCrystallText.x;
					mineGreenCrystallCostText.y = mineGreenCrystallText.y + 50; // Position below the 'Mine Green Crystall +1' text
					isolatedScreen.addChild(mineGreenCrystallCostText);
				}
				if (!storage.automineredCrystallClicked) {
					// Attach 'automineredCrystall' asset to the center of the isolatedScreen
					var automineredCrystall = isolatedScreen.attachAsset('automineredCrystall', {
						anchorX: 0.5,
						anchorY: 0.5,
						interactive: true // Make the automineredCrystall interactive
					});
					automineredCrystall.x = -400;
					automineredCrystall.y = 200;
					// Define the 'down' event handler for automineredCrystall
					automineredCrystall.down = function (x, y, obj) {
						// Increment redCrystallScore by 1 every second
						if (goldScore >= 2000 && !automineredCrystall.clicked) {
							automineredCrystall.clicked = true;
							goldScore -= 2000;
							goldScoreTxt.setText('Gold: ' + goldScore);
							storage.goldScore = goldScore;
							var intervalId = LK.setInterval(function () {
								redCrystallScore += 1;
								storage.redCrystallScore = redCrystallScore;
								redScoreTxt.setText('Red Crystall: ' + redCrystallScore);
							}, 1000);
							// Store the intervalId in the automineredCrystall object for potential future use
							automineredCrystall.intervalId = intervalId;
							storage.automineredCrystallClicked = true; // Persist the click state
							automineredCrystall.visible = false;
							mineRedCrystallText.visible = false;
							mineRedCrystallCostText.visible = false;
						}
					};
					// Add text "Mine Red Crystall +1" below the automineredCrystall asset
					var mineRedCrystallText = new Text2('Mine Red Crystall +1', {
						size: 50,
						fill: 0x030303
					});
					mineRedCrystallText.anchor.set(0.5, 0.5);
					mineRedCrystallText.x = automineredCrystall.x;
					mineRedCrystallText.y = automineredCrystall.y + 140; // Position below the automineredCrystall asset
					isolatedScreen.addChild(mineRedCrystallText);
					// Add text "2000G" below the 'Mine Red Crystall +1' text
					var mineRedCrystallCostText = new Text2('2000G', {
						size: 50,
						//{55.1}
						fill: 0x030303 //{55.2}
					}); //{55.3}
					mineRedCrystallCostText.anchor.set(0.5, 0.5);
					mineRedCrystallCostText.x = mineRedCrystallText.x;
					mineRedCrystallCostText.y = mineRedCrystallText.y + 50; // Position below the 'Mine Red Crystall +1' text
					isolatedScreen.addChild(mineRedCrystallCostText);
				}
				if (!storage.multiclickupgrade) {
					// Attach 'multiclickupgrade' asset to the center of the isolatedScreen
					var multiclickupgrade = isolatedScreen.attachAsset('multiclickupgrade', {
						anchorX: 0.5,
						anchorY: 0.5,
						interactive: true // Make the multiclickupgrade interactive
					});
					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) {
				if (storage.help == 14) {
					if (quest && typeof quest.destroy === 'function') {
						quest.destroy();
					}
					quest = false;
				}
				// Сохраняем начальные значения для проверки условия
				var initialBlueSwords = storage.blueSwords;
				var initialGreenAxes = storage.greenAxes;
				var initialRedTwoHandedSwords = storage.redCrystalTwoHandedSwords;
				// Увеличиваем золото и обнуляем запасы оружия
				goldScore += storage.blueSwords * 50;
				storage.blueSwords = 0;
				goldScore += storage.greenAxes * 150;
				storage.greenAxes = 0;
				goldScore += storage.redCrystalTwoHandedSwords * 600;
				storage.redCrystalTwoHandedSwords = 0;
				goldScoreTxt.setText('Gold: ' + goldScore);
				storage.goldScore = goldScore;
				// Проверяем наличие оружия до обнуления и запускаем звук с анимацией
				if (initialBlueSwords > 0 || initialGreenAxes > 0 || initialRedTwoHandedSwords > 0) {
					LK.getSound('gold').play();
					// Создаём 5 монет, летящих вверх
					for (var i = 0; i < 5; i++) {
						var goldAsset = game.addChild(LK.getAsset('goldstore', {
							anchorX: 0.5,
							anchorY: 0.5
						}));
						goldAsset.x = shopScreen.x + newBuildings.x + (Math.random() * 50 - 25); // Случайное смещение по X
						goldAsset.y = shopScreen.y + newBuildings.y;
						(function (goldAsset) {
							var speed = 3 + Math.random() * 3; // Случайная скорость от 3 до 6
							goldAsset.update = function () {
								goldAsset.y -= speed;
							};
							LK.setTimeout(function () {
								goldAsset.destroy();
							}, 1000);
						})(goldAsset);
					}
				}
			};
			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) {
				setHelp(14);
				LK.getSound('doors').play();
				shopScreen.visible = false; // Hide the current shop screen
				mapBackground.visible = false; // Ensure the mapbackground asset is hidden
				mapScreen.visible = true; // Show the citymap screen
				isolatedScreen.visible = true; // Ensure the isolated screen is visible
			};
			setHelp(13);
			hammer = game.addChild(LK.getAsset('hammer', {
				anchorX: 0.5,
				anchorY: 0.5,
				scaleX: -1
			}));
		};
		// Position the isolatedScreen at the center
		isolatedScreen.x = 2048 / 2;
		isolatedScreen.y = 2732 / 2;
		hammer = game.addChild(LK.getAsset('hammer', {
			anchorX: 0.5,
			anchorY: 0.5,
			scaleX: -1
		}));
	};
	// Attach 'anvilmap' asset to the mapScreen on the top layer
	var anvilMap = mapScreen.attachAsset('anvilmap', {
		anchorX: 0.5,
		anchorY: 0.5,
		interactive: true
	});
	// Attach 'mine' asset to the mapScreen on the top layer
	var mine = mapScreen.attachAsset('mine', {
		anchorX: 0.5,
		anchorY: 0.5,
		interactive: true
	});
	mine.x -= 150; // Move the mine asset 150 pixels to the left
	mine.y -= 150; // Move the mine asset 150 pixels higher
	// Make mine interactive and define the 'down' event handler
	mine.down = function (x, y, obj) {
		if (storage.help == 5) {
			if (quest && typeof quest.destroy === 'function') {
				quest.destroy();
			}
			quest = false;
		}
		hammer.destroy();
		setHelp(-1);
		// Create a new screen for the mine
		var mineScreen = game.addChild(new Container());
		// Make the map visible after transitioning to the mine screen
		map.visible = true;
		// Hide the current map screen
		mapScreen.visible = false;
		// Disable the active background
		background.visible = false;
		// Attach 'mineinsidebackground' asset to the mineScreen on the bottom layer
		mineInsideBackground = mineScreen.attachAsset('mineinsidebackground', {
			anchorX: 0.5,
			anchorY: 0.5,
			interactive: false,
			zIndex: -1 // Ensure it is on the bottom layer
		});
		setHelp(5);
		// Create and add a new instance of the RedCristal class
		redCristal = mineScreen.addChild(new RedCristal());
		// Position the redCristal asset
		redCristal.x -= 510; // Move 100 pixels to the left
		redCristal.y += 490; // Move 100 pixels lower
		// Create and add a new instance of the GreenCristal class
		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) {
		if (storage.help == 7) {
			if (quest && typeof quest.destroy === 'function') {
				quest.destroy();
			}
			quest = false;
		}
		setHelp(-1);
		// Show the Anvil screen
		gameScreen.visible = true;
		// Make the map visible after transitioning to the anvil map
		map.visible = true;
		// Attach 'gameScreenBackground' asset to the 'gameScreen' object
		gameScreenBackground = gameScreen.attachAsset('gameScreenBackground', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		setHelp(0);
		setHelp(1);
		setHelp(7);
		setHelp(10);
		// Attach 'recipes' asset to the 'gameScreenBackground' object
		var recipes = gameScreenBackground.attachAsset('recipes', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		// Center the 'recipes' asset on the gameScreenBackground
		recipes.x = gameScreenBackground.width / 2 - 1050; //{3u.1}
		recipes.y = gameScreenBackground.height / 2 + 150; //{3v.1}
		// Hide the mineinsidebackground when exiting the mine screen
		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;
	};
	setHelp(-1);
	// Hide the current game screen
	gameScreen.visible = false;
	// Disable the active background
	background.visible = false;
	// Attach a new background or asset to the mapScreen if needed
	// Example: mapScreen.attachAsset('newBackground', { anchorX: 0.5, anchorY: 0.5 });
	// Position the mapScreen at the center
	mapScreen.x = 2048 / 2;
	mapScreen.y = 2732 / 2;
	setHelp(3);
	setHelp(4);
	setHelp(6);
	if (storage.help == 11 && quest) {
		quest = false;
	}
	setHelp(11);
	hammer = game.addChild(LK.getAsset('hammer', {
		anchorX: 0.5,
		anchorY: 0.5,
		scaleX: -1
	}));
};
var growthRateText;
var growthRateCounter = storage.growthRate; // Initialize growth rate counter from storage
var background = game.addChild(new Container());
background.width = 2048;
background.height = 2732;
background.x = 2048 / 2;
background.y = 2732 / 2;
var backgroundGraphics = background.attachAsset('background', {
	anchorX: 0.5,
	anchorY: 0.5
});
var gameScreen = game.addChild(new Container()); //{1h.1}
var newGame = game.addChild(new Container());
newGame.x = 2650 / 2 + 100; //{3d.1}
newGame.y = 2680 * 4.2 / 5; //{3d.1}
// Attach 'title' asset to the start screen
var title = game.addChild(LK.getAsset('title', {
	anchorX: 0.5,
	anchorY: 0.5
}));
title.x = 2048 / 2;
title.y = 3200 / 5;
// Attach 'newGameText' asset to the 'New Game' object
var newGameText = newGame.attachAsset('newGameText', {
	anchorX: 0.5,
	anchorY: 0.5,
	stroke: 0xFFFFFF,
	// White color
	strokeThickness: 5 // 5px thickness
});
// Attach 'continueText' asset to the game object
var continueText = game.addChild(LK.getAsset('continueText', {
	anchorX: 0.5,
	anchorY: 0.5
}));
continueText.x = newGame.x - newGame.width - 500; // Increase the distance between newGame and continueText
continueText.y = newGame.y; // Align vertically with newGame
continueText.interactive = true;
continueText.down = function (x, y, obj) {
	startgame();
};
var greenAxeClicks = storage.greenAxeClicks;
var redCrystalTwoHandedSwordClicks = storage.redCrystalTwoHandedSwordClicks;
function startgame() {
	setquest();
	title.destroy();
	hammer.destroy();
	// Create a new game screen
	gameScreen = game.addChild(new Container());
	gameScreen.x = 2048 / 2;
	gameScreen.y = 2732 / 2;
	// Attach 'gameScreenBackground' asset to the 'gameScreen' object
	gameScreenBackground = gameScreen.attachAsset('gameScreenBackground', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Attach 'recipes' asset to the 'gameScreenBackground' object
	var recipes = gameScreenBackground.attachAsset('recipes', {
		anchorX: 0.5,
		anchorY: 0.5,
		interactive: true // Make the recipes asset interactive
	});
	// Remove 'continueText' asset when transitioning to new game
	// Define the 'down' event handler for recipes
	recipes.down = function (x, y, obj) {
		setHelp(-1);
		hammer.destroy();
		LK.getSound('booksaudio').play();
		// Create a new screen for the recipes
		var recipesScreen = game.addChild(new RecipesScreen());
		map.visible = false; // Hide the map asset after transitioning to the recipes screen
		if (storage.help == 10) {
			if (quest && typeof quest.destroy === 'function') {
				quest.destroy();
			}
			quest = false;
		}
		// 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 >= 10 && storage.blueCrystalIngotScore >= 10) {
				storage.blueswordsclick += 1;
			}
			if (storage.blueswordsclick >= 10) {
				storage.blueswordsclick = 0;
				storage.blueSwords += 1;
				blueSwordsText.setText(storage.blueSwords.toString());
				storage.forgingSkill += 100;
				counterText.setText('Forging skill: ' + storage.forgingSkill);
				if (storage.blueCrystalIngotScore >= 10) {
					storage.blueCrystalIngotScore -= 10;
					blueCrystalIngotScore = storage.blueCrystalIngotScore;
					blueCrystalIngotScoreTxt.setText('BlueCrystalIngot: ' + blueCrystalIngotScore);
				}
				// Проверка квеста 11: срабатывает после создания меча
				if (storage.help == 11 && storage.blueSwords >= 1) {
					if (quest && typeof quest.destroy === 'function') {
						quest.destroy();
					}
					quest = false;
				}
			}
			blueCrystalSwordClicks.setText('(current ' + storage.blueswordsclick + ')');
		};
		setHelp(10);
		// Add 'Swords in stock' text asset to the center of the screen
		var swordsInStockText = new Text2('Swords in stock', {
			size: 50,
			fill: 0x000000 // Black color
		});
		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 >= 4000 && storage.greenCrystalIngotScore >= 15) {
				greenAxeClicks += 1;
			}
			if (greenAxeClicks >= 15) {
				greenAxeClicks = 0;
				storage.greenAxes += 1; // Увеличиваем количество зелёных топоров в хранилище
				greenAxesText.setText(storage.greenAxes.toString());
				storage.forgingSkill += 150; // Добавляем 150 к навыку ковки
				counterText.setText('Forging skill: ' + storage.forgingSkill); // Обновляем отображение навыка ковки
				if (storage.greenCrystalIngotScore >= 15) {
					storage.greenCrystalIngotScore -= 15; // Вычитаем 15 из greenCrystalIngotScore
					greenCrystalIngotScore = storage.greenCrystalIngotScore; // Сохраняем новое значение в хранилище
					greenCrystalIngotScoreTxt.setText('GreenCrystalIngot: ' + greenCrystalIngotScore); // Обновляем текстовое отображение
				}
			}
			greenAxeClicksText.setText('(current ' + greenAxeClicks + ')');
			storage.greenAxeClicks = greenAxeClicks;
		};
		// Add 'Axe in stock' text asset to the center of the screen
		var axeInStockText = new Text2('Axe in stock', {
			size: 50,
			fill: 0x000000 // Black color
		});
		axeInStockText.anchor.set(0.5, 0.5);
		axeInStockText.x = 2848 / 2;
		recipesScreen.addChild(axeInStockText);
		// Display the number of green axes in stock
		var greenAxesText = new Text2(storage.greenAxes.toString(), {
			size: 50,
			fill: 0x000000 // Black color
		});
		greenAxesText.anchor.set(0.5, 0.5);
		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 100.\n 10 blue crystal ingots +\n 10 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 ' + storage.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 4k.\n 15 green crystal ingots +\n 15 clicks on the recipe', {
			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;
		hammer = game.addChild(LK.getAsset('hammer', {
			anchorX: 0.5,
			anchorY: 0.5,
			scaleX: -1
		}));
		// Define the 'down' event handler for recipesNext
		recipesNext.down = function (x, y, obj) {
			// Create a new screen for the next section
			var nextScreen = game.addChild(new Container());
			LK.getSound('paper').play();
			// Remove the current background
			recipesScreen.visible = false;
			// Add 'recipesnextbackgr1' asset to the center of the screen
			var recipesNextBackgr1 = nextScreen.attachAsset('recipesnextbackgr1', {
				anchorX: 0.5,
				anchorY: 0.5
			});
			recipesNextBackgr1.x = 2048 / 2;
			recipesNextBackgr1.y = 2732 / 2;
			// Remove the existing hammer
			hammer.destroy();
			// Add 'recipesprev' asset to the center of the screen
			var recipesPrev = nextScreen.attachAsset('recipesprev', {
				anchorX: 0.5,
				anchorY: 0.5,
				interactive: true // Make the 'recipesprev' asset interactive
			});
			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 100.\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 2000.\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 7000.\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 >= 10000 && storage.redCrystalIngotScore >= 75) {
					redCrystalTwoHandedSwordClicks += 1;
				}
				if (redCrystalTwoHandedSwordClicks >= 20) {
					redCrystalTwoHandedSwordClicks = 0;
					storage.redCrystalTwoHandedSwords += 1; // Увеличение количества мечей в storage
					redCrystalTwoHandedSwordsText.setText(storage.redCrystalTwoHandedSwords.toString());
					storage.forgingSkill += 200; // Добавление опыта кузнечного дела
					counterText.setText('Forging skill: ' + storage.forgingSkill);
					storage.redCrystalIngotScore -= 75; // Вычитаем 75 инготов из storage
					redCrystalIngotScore = storage.redCrystalIngotScore; // Обновляем локальную переменную
					redCrystalIngotScoreTxt.setText('RedCrystalIngot: ' + redCrystalIngotScore); // Обновляем отображение
				}
				redCrystalTwoHandedSwordClicksText.setText('(current ' + redCrystalTwoHandedSwordClicks + ')');
				storage.redCrystalTwoHandedSwordClicks = redCrystalTwoHandedSwordClicks;
			};
			// Add 'Red Crystal Two-Handed Sword in stock' text asset to the center of the screen
			var redCrystalTwoHandedSwordsText = new Text2(storage.redCrystalTwoHandedSwords.toString(), {
				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 10k.\n 75 red crystal ingots +\n 20 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;
			setHelp(0);
			setHelp(1);
			setHelp(3);
			setHelp(7);
		};
		// 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 - 100; // Adjust x-coordinate based on the anvil's position on the background
	anvil.y = gameScreenBackground.y + 500;
	// Add a new object 'Magic Nursery'
	var magicNursery = gameScreen.addChild(new Door());
	// Position 'Magic Nursery' to the left and up
	magicNursery.x = 2048 / 4;
	magicNursery.y = 2732 / 2.5;
	setHelp(0);
	setHelp(1);
	setHelp(3);
	setHelp(7);
	setHelp(9);
	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.automineblueCrystallClicked = false;
	storage.autominegreenCrystallClicked = false;
	storage.automineredCrystallClicked = false;
	storage.autogrowthRateClicked = false;
	storage.theBlacksmithsApprentice = false;
	storage.multiclickupgrade = false;
	storage.help = 0;
	// Reset all saved data
	storage.forgingSkill = 0;
	storage.growthRate = 0;
	storage.blueCrystalIngotScore = 0;
	storage.blueCrystallScore = 0;
	storage.greenCrystalIngotScore = 0;
	storage.redCrystallScore = 0;
	storage.redCrystalIngotScore = 0;
	storage.greenCrystallScore = 0;
	storage.greenCrystalIngotScore = 0;
	storage.blueSwords = 0;
	storage.goldScore = 0;
	storage.blueswordsclick = 0;
	storage.greenAxeClicks = 0;
	storage.redCrystalTwoHandedSwordClicks = 0;
	// Reset current variables
	redCrystalIngotScore = 0;
	blueCrystallScore = 0;
	greenCrystallScore = 0;
	greenCrystalIngotScore = 0;
	blueCrystalIngotScore = 0;
	redCrystallScore = 0;
	growthRateCounter = 0;
	goldScore = 0;
	growthRateText.setText('Growth rate: ' + storage.growthRate);
	counterText.setText('Forging skill: ' + storage.forgingSkill);
	scoreTxt.setText('Blue Crystall: ' + blueCrystallScore);
	greenScoreTxt.setText('Green Crystall: ' + greenCrystallScore);
	redScoreTxt.setText('Red Crystall: ' + redCrystallScore);
	blueCrystalIngotScoreTxt.setText('BlueCrystalIngot: ' + storage.blueCrystalIngotScore);
	greenCrystalIngotScoreTxt.setText('GreenCrystalIngot: ' + storage.greenCrystalIngotScore);
	redCrystalIngotScoreTxt.setText('RedCrystalIngot: ' + storage.redCrystallScore);
	goldScoreTxt.setText('Gold: ' + goldScore);
	startgame();
};
// Create a new text object to display the click counter
var counterText = new Text2('Forging skill: ' + storage.forgingSkill, {
	size: 50,
	fill: 0xFFFFFF
});
// Position the text object at the top right corner of the screen
counterText.anchor.set(0, 0);
LK.gui.topLeft.addChild(counterText);
counterText.y = 0;
counterText.x = 0;
growthRateText = new Text2('Growth rate: ' + growthRateCounter, {
	size: 50,
	fill: 0xFFFFFF
});
growthRateText.anchor.set(0, 0);
LK.gui.topLeft.addChild(growthRateText);
growthRateText.y = counterText.height - 6; // Move the growth rate text 2 pixels higher
growthRateText.x = 0;
// Initialize hammer asset
var hammer;
hammer = game.addChild(LK.getAsset('hammer', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: -1
}));
// Function to make the hammer follow the mouse/touch position
function updateHammerPosition(x, y) {
	if (hammer) {
		hammer.x = x;
		hammer.y = y;
	}
}
var newgameclearInterval = [];
if (automineblueCrystallClicked) {
	var intervalId = LK.setInterval(function () {
		blueCrystallScore += 1;
		LK.setScore(blueCrystallScore);
		storage.blueCrystallScore = blueCrystallScore;
		scoreTxt.setText('Blue Crystall: ' + LK.getScore());
	}, 1000);
	newgameclearInterval.push(intervalId);
}
if (autominegreenCrystallClicked) {
	var intervalId = LK.setInterval(function () {
		greenCrystallScore += 1;
		storage.greenCrystallScore = greenCrystallScore;
		greenScoreTxt.setText('Green Crystall: ' + greenCrystallScore);
	}, 1000);
	newgameclearInterval.push(intervalId);
}
if (automineredCrystallClicked) {
	var intervalId = LK.setInterval(function () {
		redCrystallScore += 1;
		storage.redCrystallScore = redCrystallScore;
		redScoreTxt.setText('Red Crystall: ' + redCrystallScore);
	}, 1000);
	newgameclearInterval.push(intervalId);
}
if (autogrowthRateClicked) {
	var intervalId = LK.setInterval(function () {
		growthRateCounter += 1;
		growthRateText.setText('Growth rate: ' + growthRateCounter);
		storage.growthRate = growthRateCounter;
	}, 1000);
	newgameclearInterval.push(intervalId);
}
if (storage.theBlacksmithsApprentice) {
	var intervalId = LK.setInterval(function () {
		storage.forgingSkill += 1;
		counterText.setText('Forging skill: ' + storage.forgingSkill);
	}, 1000);
	newgameclearInterval.push(intervalId);
}
var seconds = Math.floor(Date.now() / 1000);
seconds = seconds - storage.lastgametime;
if (seconds > 18000) {
	seconds = 18000;
}
if (seconds > 0) {
	if (storage.automineblueCrystallClicked) {
		blueCrystallScore += seconds;
		storage.blueCrystallScore += seconds;
	}
	if (storage.autominegreenCrystallClicked) {
		greenCrystallScore += seconds;
		storage.greenCrystallScore += seconds;
	}
	if (storage.automineredCrystallClicked) {
		redCrystallScore += seconds;
		storage.redCrystallScore += seconds;
	}
	if (storage.autogrowthRateClicked) {
		growthRateCounter += seconds;
		storage.growthRate += seconds;
	}
	if (storage.theBlacksmithsApprentice) {
		storage.forgingSkill += seconds;
	}
}
var intervalId = LK.setInterval(function () {
	storage.lastgametime = Math.floor(Date.now() / 1000);
}, 1000);
// Make the cursor follow the mouse/touch position
game.move = function (x, y, obj) {
	updateHammerPosition(x, y);
};
// Animate cursor rotation on click
game.down = function (x, y, obj) {
	LK.getSound('hammer').play();
	tween(hammer, {
		rotation: -Math.PI / 2
	}, {
		duration: 125,
		easing: tween.easeInOut,
		onFinish: function onFinish() {
			// Create stars around the hammer for 0.25 seconds
			for (var i = 0; i < 5; i++) {
				var star = game.addChild(LK.getAsset('star', {
					anchorX: 0.5,
					anchorY: 0.5
				}));
				star.x = hammer.x - hammer.width / 2 + Math.random() * 100 - 25;
				star.y = hammer.y + hammer.height / 2 + Math.random() * 100 - 25;
				(function (star) {
					// Make the star move upwards
					star.update = function () {
						star.y -= 5; // Move the star upwards by 5 pixels per frame
						if (star.x < hammer.x) {
							star.x += 2; // Move the star slightly to the right if on the left side of the hammer
						} else {
							star.x -= 2; // Move the star slightly to the left if on the right side of the hammer
						}
					};
					LK.setTimeout(function () {
						star.destroy();
					}, 250);
				})(star);
			}
			tween(hammer, {
				rotation: 0
			}, {
				duration: 125,
				easing: tween.easeInOut
			});
		}
	});
}; /**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
	forgingSkill: 0,
	growthRate: 0,
	blueCrystallScore: 0,
	greenCrystalIngotScore: 0,
	blueSwords: 0,
	greenAxes: 0,
	redCrystalTwoHandedSwords: 0,
	blueswordsclick: 0,
	greenAxeClicks: 0,
	redCrystalTwoHandedSwordClicks: 0,
	automineblueCrystallClicked: false,
	autominegreenCrystallClicked: false,
	autogrowthRateClicked: false,
	multiclickupgrade: false,
	theBlacksmithsApprentice: false,
	automineredCrystallClicked: false,
	lastgametime: 0,
	help: 0
});
/**** 
* Classes
****/ 
// Create a new class for the anvil object
var Anvil = Container.expand(function () {
	var self = Container.call(this);
	// Attach 'anvil' asset to the 'Anvil' object
	var anvilGraphics = self.attachAsset('anvil', {
		anchorX: 0.6,
		anchorY: 0.6,
		alpha: 0.0 // Make the anvil fully transparent
	});
	// Initialize the click counter
	self.clickCounter = storage.forgingSkill;
	// Make the 'Anvil' object interactive
	self.interactive = true;
	// Define the 'down' event handler
	self.down = function (x, y, obj) {
		// Increment the click counter
		self.clickCounter++;
		// Add a 5% chance for a multi-click event to increase forging skill by 5
		var shans = 0.02;
		if (storage.multiclickupgrade) {
			shans += 0.02;
		}
		if (Math.random() < 0.02) {
			self.clickCounter += 5;
			// Create a new asset at the center of the screen
			var newAsset = game.addChild(LK.getAsset('multyclick', {
				anchorX: 0.5,
				anchorY: 0.5
			}));
			// Position the new asset at the center of the screen
			newAsset.x = 2048 / 2;
			newAsset.y = 2732 / 2;
			// Animate the scaling of the new asset
			tween(newAsset, {
				scaleX: 2,
				scaleY: 2
			}, {
				duration: 500,
				easing: tween.easeInOut,
				onFinish: function onFinish() {
					newAsset.destroy(); // Remove the asset after the animation
				}
			});
		}
		// Update the text object with the click counter and label
		counterText.setText('Forging skill: ' + self.clickCounter);
		// Persist the click counter
		storage.forgingSkill = self.clickCounter;
		// Change the color of the counter text based on the click counter
		if (self.clickCounter >= 1000 && self.clickCounter < 2000) {
			counterText.tint = 0x00FF00; // Green
		} else if (self.clickCounter >= 2000 && self.clickCounter < 15000) {
			counterText.tint = 0x0000FF; // Blue
		} else if (self.clickCounter >= 15000 && self.clickCounter < 30000) {
			counterText.tint = 0x800080; // Purple
		} else if (self.clickCounter >= 30000) {
			counterText.tint = 0xcc7c04; // Purple
		}
		if (storage.forgingSkill >= 100 && storage.help == 1) {
			if (quest && typeof quest.destroy === 'function') {
				quest.destroy();
			}
			quest = false;
			setHelp(1);
		}
	};
});
// Create a new class for the BlueCristal object
var BlueCristal = Container.expand(function () {
	var self = Container.call(this);
	// Attach 'blueCristal' asset to the 'BlueCristal' object
	var blueCristalGraphics = self.attachAsset('blueCristal', {
		anchorX: 0.5,
		anchorY: 0.5,
		interactive: true // Make the blueCristal interactive
	});
	// Define the 'down' event handler for blueCristal
	self.down = function (x, y, obj) {
		// Increment the score by 1
		blueCrystallScore += 1;
		if (blueCrystallScore >= 100 && storage.help == 6) {
			if (quest && typeof quest.destroy === 'function') {
				quest.destroy();
			}
			quest = false;
		}
		LK.setScore(blueCrystallScore);
		storage.blueCrystallScore = blueCrystallScore;
		// Update the score text
		scoreTxt.setText('Blue Crystall: ' + LK.getScore());
		scoreTxt.visible = true; // Ensure the score text remains visible
	};
});
// Create a new class for the BlueCrystalIngot object
var BlueCrystalIngot = Container.expand(function () {
	var self = Container.call(this);
	var blueCrystalIngotGraphics = self.attachAsset('blueCrystalIngot', {
		anchorX: 0.5,
		anchorY: 0.5,
		interactive: true
	});
	self.down = function (x, y, obj) {
		if (blueCrystallScore >= 10) {
			blueCrystalIngotScore += 1;
			storage.growthRate += 10;
			growthRateText.setText('Growth rate: ' + storage.growthRate);
			blueCrystalIngotScoreTxt.setText('BlueCrystalIngot: ' + blueCrystalIngotScore);
			storage.blueCrystalIngotScore = blueCrystalIngotScore;
			blueCrystallScore -= 10;
			if (blueCrystallScore < 0) {
				blueCrystallScore = 0;
			}
			storage.blueCrystallScore = blueCrystallScore;
			LK.setScore(blueCrystallScore);
			scoreTxt.setText('Blue Crystall: ' + LK.getScore());
			// Добавляем проверку для квеста 9
			if (blueCrystalIngotScore >= 10 && storage.help == 9) {
				quest.destroy();
				quest = false;
			}
		}
	};
});
// Create a new class for the Door object
var Door = Container.expand(function () {
	var self = Container.call(this);
	// Attach 'Door' asset to the 'Door' object
	var doorGraphics = self.attachAsset('Door', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Make the 'Door' object interactive
	self.interactive = true;
	// Define the 'down' event handler
	self.down = function (x, y, obj) {
		if (storage.help == 2) {
			if (quest && typeof quest.destroy === 'function') {
				quest.destroy();
			}
			quest = false;
		}
		if (storage.help == 8) {
			if (quest && typeof quest.destroy === 'function') {
				quest.destroy();
			}
			quest = false;
		}
		LK.getSound('doors').play();
		// Remove the existing hammer
		hammer.destroy();
		// Create a new screen
		game.magicNursery = game.addChild(new Container());
		// Attach 'magicNurseryBackground' asset to the 'magicNursery' object
		var magicNurseryBackground = game.magicNursery.attachAsset('magicNurseryBackground', {
			anchorX: 0.5,
			anchorY: 0.5,
			interactive: false,
			// Disable interactivity to prevent blurring on click
			scaleX: 2,
			// Double the size horizontally
			scaleY: 2 // Double the size vertically
		});
		// Recreate the hammer asset
		magicNurseryBackground.x = 2048 / 2;
		magicNurseryBackground.y = 2732 / 2;
		// Attach 'ForgeOfMatter' asset to the 'magicNursery' object
		var forgeOfMatter = game.magicNursery.attachAsset('ForgeOfMatter', {
			anchorX: 0.5,
			anchorY: 0.5,
			interactive: true,
			scaleX: 3,
			// Increase the size horizontally
			scaleY: 3,
			// Increase the size vertically
			alpha: 0.0 // Make the ForgeOfMatter fully transparent
		});
		// Create and add a new instance of the BlueCrystalIngot class
		var blueCrystalIngot = game.magicNursery.addChild(new BlueCrystalIngot()); //{P.1}
		// Position the blueCrystalIngot asset in the bottom-left corner
		blueCrystalIngot.x = 200 + blueCrystalIngot.width / 2;
		blueCrystalIngot.y = 2500 - blueCrystalIngot.height / 2;
		// Create and add a new instance of the RedCrystalIngot class
		var redCrystalIngot = game.magicNursery.addChild(new RedCrystalIngot());
		// Center the redCrystalIngot asset in the magicNursery screen
		redCrystalIngot.x = 1300 / 2 + 350; // Move the redCristalIngot asset 100 pixels to the right
		redCrystalIngot.y = 4820 / 2;
		// Create and add a new instance of the GreenCrystalIngot class
		var greenCrystalIngotInstance = game.magicNursery.addChild(new GreenCrystalIngot());
		// Position the greenCrystalIngotInstance asset to the right of the blueCrystalIngot asset
		greenCrystalIngotInstance.x = blueCrystalIngot.x + blueCrystalIngot.width + greenCrystalIngotInstance.width / 2 + 40;
		greenCrystalIngotInstance.y = blueCrystalIngot.y;
		// Center the growthRate asset in the magicNursery screen
		var growthRate = game.magicNursery.addChild(LK.getAsset('growthRate', {
			anchorX: 0.7,
			anchorY: 0.7
		}));
		growthRate.x = 780;
		growthRate.y = 1500;
		// Define the 'down' event handler for ForgeOfMatter
		forgeOfMatter.down = function (x, y, obj) {
			// Increment the click counter
			storage.growthRate++;
			// Update the text object with the click counter and label
			growthRateText.setText('Growth rate: ' + storage.growthRate);
			if (storage.growthRate >= 50 && storage.help == 3) {
				if (quest && typeof quest.destroy === 'function') {
					quest.destroy();
				}
				quest = false;
			}
		};
		forgeOfMatter.x = 1100 / 1.5;
		forgeOfMatter.y = 2000 / 1.5;
		// Hide the game screen
		gameScreen.visible = false;
		// Show the forging skill counter when transitioning to magicNursery
		counterText.visible = true;
		// Hide the map when switching to the magic nursery screen
		map.visible = false;
		// Add a new object 'Door2'
		var door2 = game.magicNursery.addChild(new Door2());
		// Position 'Door2' to the right, between the center and the edge of the screen
		door2.x = 2048 * 0.75;
		door2.y = 2732 * 0.9;
		setHelp(2);
		setHelp(8);
		hammer = game.addChild(LK.getAsset('hammer', {
			anchorX: 0.5,
			anchorY: 0.5,
			scaleX: -1
		}));
	};
});
// Create a new class for the Door2 object
var Door2 = Container.expand(function () {
	var self = Container.call(this);
	// Attach 'Door' asset to the 'Door2' object
	var doorGraphics = self.attachAsset('Door', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Make the 'Door2' object interactive
	self.interactive = true;
	// Define the 'down' event handler
	self.down = function (x, y, obj) {
		LK.getSound('doors').play();
		hammer.destroy();
		gameScreen.visible = true;
		map.visible = true;
		counterText.visible = true;
		game.magicNursery.visible = false;
		growthRateText.visible = true;
		// Если квест 9 не завершается, показываем другие подсказки
		setHelp(0);
		setHelp(1);
		setHelp(3);
		setHelp(9);
		hammer = game.addChild(LK.getAsset('hammer', {
			anchorX: 0.5,
			anchorY: 0.5,
			scaleX: -1
		}));
	};
});
// Create a new class for the GreenCristal object
var GreenCristal = Container.expand(function () {
	var self = Container.call(this);
	// Attach 'greenCristal' asset to the 'GreenCristal' object
	var greenCristalGraphics = self.attachAsset('greenCristal', {
		anchorX: 0.5,
		anchorY: 0.5,
		interactive: true // Make the greenCristal interactive
	});
	// Define the 'down' event handler for greenCristal
	self.down = function (x, y, obj) {
		// Increment the score by 1
		greenCrystallScore += 1;
		LK.setScore(greenCrystallScore);
		storage.greenCrystallScore = greenCrystallScore;
		// Update the score text
		greenScoreTxt.setText('Green Crystall: ' + greenCrystallScore);
		greenScoreTxt.visible = true; // Ensure the score text remains visible
	};
});
// 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 && greenCrystallScore >= 15) {
			storage.growthRate += 10; // Increment growth rate by 10
			growthRateText.setText('Growth rate: ' + storage.growthRate); // Update the growth rate display
			// Increment the GreenCrystalIngot score by 1
			greenCrystalIngotScore += 1;
			greenCrystalIngotScoreTxt.setText('GreenCrystalIngot: ' + greenCrystalIngotScore);
			storage.greenCrystalIngotScore = greenCrystalIngotScore;
			// Decrement the GreenCristal score by 100
			greenCrystallScore -= 15;
			if (greenCrystallScore < 0) {
				greenCrystallScore = 0;
			}
			storage.greenCrystallScore = greenCrystallScore; // Persist the decrement
			greenScoreTxt.setText('Green Crystall: ' + greenCrystallScore);
		}
	};
});
var Help = Container.expand(function () {
	var self = Container.call(this);
	var helpGraphics = self.attachAsset('help', {
		anchorX: 0.5,
		anchorY: 0.5,
		interactive: true
	});
	self.down = function (x, y, obj) {};
});
// Create a new class for the RecipesScreen object
var RecipesScreen = Container.expand(function () {
	var self = Container.call(this);
});
// Create a new class for the RedCristal object
var RedCristal = Container.expand(function () {
	var self = Container.call(this);
	// Attach 'redCristal' asset to the 'RedCristal' object
	var redCristalGraphics = self.attachAsset('redCristal', {
		anchorX: 0.5,
		anchorY: 0.5,
		interactive: true // Make the redCristal interactive
	});
	// Define the 'down' event handler for redCristal
	self.down = function (x, y, obj) {
		// Increment the score by 1
		redCrystallScore += 1;
		LK.setScore(redCrystallScore);
		storage.redCrystallScore = redCrystallScore;
		// Update the score text
		redScoreTxt.setText('Red Crystall: ' + redCrystallScore);
		redScoreTxt.visible = true; // Ensure the score text remains visible
	};
});
// 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 && redCrystallScore >= 20) {
			// 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;
			redCrystallScore -= 20;
			storage.redCrystallScore = redCrystallScore; // Persist the decrement
			redScoreTxt.setText('Red Crystall: ' + redCrystallScore);
		}
	};
});
var RedCrystalTwoHandedSword = Container.expand(function () {
	var self = Container.call(this);
	// Attach 'redcrystaltwo-handedswordrecipe' asset to the 'RedCrystalTwoHandedSword' object
	var redCrystalTwoHandedSwordGraphics = self.attachAsset('redcrystaltwo-handedswordrecipe', {
		anchorX: 0.5,
		anchorY: 0.5,
		interactive: true // Make the redCrystalTwoHandedSword interactive
	});
});
/**** 
* Initialize Game
****/ 
// Create a new text object to display the click counter
var game = new LK.Game({
	backgroundColor: 0x000000
});
/**** 
* Game Code
****/ 
//{0.1}
function _typeof(o) {
	"@babel/helpers - typeof";
	return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
		return typeof o;
	} : function (o) {
		return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
	}, _typeof(o);
}
var helpObj = false;
var helpText = false;
var substrate = false;
var quest = false;
function setHelp(idhelp) {
	if (idhelp < storage.help && helpObj) {
		helpObj.destroy();
		substrate.destroy();
		helpText.destroy();
	}
	if (storage.help == idhelp && !quest && typeof helparray[storage.help] != 'undefined') {
		if (helpObj) {
			helpObj.destroy();
			substrate.destroy();
			helpText.destroy();
		}
		helpObj = new Help();
		if (helparray && helparray[storage.help]) {
			helpObj.x = helparray[storage.help].coords[0];
			helpObj.y = helparray[storage.help].coords[1];
			helpText = new Text2(helparray[storage.help].text, {
				size: 50,
				fill: helparray[storage.help].color
			});
		}
		if (helparray[storage.help].coords[0] < 2048 / 2) {
			helpText.x = helparray[storage.help].coords[0] + helpObj.width / 2 + 10;
		} else {
			helpText.x = helparray[storage.help].coords[0] - helpObj.width / 2 - 10 - helpText.width;
		}
		if (helparray[storage.help].coords[1] < 2732 / 2) {
			helpText.y = helparray[storage.help].coords[1] + helpObj.height / 2 + 10;
		} else {
			helpText.y = helparray[storage.help].coords[1] - helpObj.height / 2 - 10;
		}
		var questtext = helparray[storage.help].text;
		if (typeof helparray[storage.help].quest != 'undefined') {
			questtext = helparray[storage.help].quest;
		}
		if (helparray[storage.help]) {
			quest = new Text2('                QUEST\n' + questtext, {
				size: 50,
				fill: helparray[storage.help].color
			});
		}
		quest.x = 625;
		quest.y = 100;
		game.addChild(quest);
		substrate = game.attachAsset('substrate', {
			anchorX: 0.5,
			anchorY: 0.5,
			alpha: helparray[storage.help].substrate.alfa
		});
		substrate.x = helpText.x + helpText.width / 2;
		substrate.y = helpText.y + helpText.height / 2;
		substrate.width = helpText.width;
		substrate.height = helparray[storage.help].substrate.height;
		game.addChild(helpObj);
		var _animateHelp = function animateHelp(helpObj) {
			tween(helpObj, {
				scaleX: 0.5,
				scaleY: 0.5
			}, {
				duration: 1500,
				easing: tween.easeInOut,
				onFinish: function onFinish() {
					tween(helpObj, {
						scaleX: 1,
						scaleY: 1
					}, {
						duration: 1500,
						easing: tween.easeInOut,
						onFinish: function onFinish() {
							_animateHelp(helpObj);
						}
					});
				}
			});
		};
		_animateHelp(helpObj);
		game.addChild(substrate);
		game.addChild(helpText);
		// Убираем автоматическое завершение квеста для квеста 11
		helpObj.down = function (x, y, obj) {
			storage.help++;
			helpObj.destroy();
			substrate.destroy();
			helpText.destroy();
		};
		return helpObj;
	}
}
function setquest() {
	if (storage.help > 1 && !quest) {
		if (helparray && helparray[storage.help]) {
			var questtext = helparray[storage.help].text;
			if (typeof helparray[storage.help].quest != 'undefined') {
				questtext = helparray[storage.help].quest;
			}
		}
		if (helparray[storage.help]) {
			quest = new Text2('                QUEST\n' + questtext, {
				size: 50,
				fill: helparray[storage.help].color
			});
		}
		quest.x = 625;
		quest.y = 100;
		game.addChild(quest);
	}
}
var helparray = [{
	'coords': [850, 2732 / 2 + 450],
	'text': 'Click on the anvil to improve \nyour Forging skill by 100!',
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 110
	}
}, {
	'coords': [2048 * 0.75, 2732 * 0.9],
	'text': 'Now go to the foundry!',
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 55
	}
}, {
	'coords': [720, 2732 / 2 + 100],
	'text': 'Click on the foundry and raise the \nGrowth rate to 50!\nThen go out to the forge!',
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 160
	}
}, {
	'coords': [390, 2732 - 300],
	'text': 'This is a map you can use to \ntravel the world!',
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 110
	}
}, {
	'coords': [885, 1220],
	'text': 'Go to the crystal mine\n for resources!',
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 55
	}
}, {
	'coords': [1100, 1000],
	'text': 'There are three types of \ncrystals growing in \nthe mine, now we need to \nget 100 blue crystals to forge \nour first sword!',
	'color': 'white',
	'substrate': {
		'alfa': 0.6,
		'height': 275
	}
}, {
	'coords': [1030, 1350],
	'text': 'Go back to the forge!',
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 55
	}
}, {
	'coords': [2048 * 0.75, 2732 * 0.9],
	'text': "It's time to melt the crystals!",
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 55
	}
}, {
	'coords': [310, 2732 - 320],
	'text': "Click to melt the crystals! \npay attention to the counters on top! \nMelting crystals increases your Growth rate! \nCome back to the forge when you've smelted \n10 blue crystalingots.",
	'color': 'white',
	//'quest': 'go 10 crystal',
	'substrate': {
		'alfa': 0.5,
		'height': 275
	}
}, {
	'coords': [980, 2732 - 300],
	'text': "This is your blacksmith's book!",
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 55
	}
}, {
	'coords': [630, 1050],
	'text': 'Follow the recipe and click on \nthe sword 100 clicks to forge it! \nThen exploreother recipes and \nreturn to the map!',
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 235
	}
}, {
	'coords': [780, 1500],
	'text': "Let's go to the city to sell our sword! \nThe main thing is not to get lost on the way!",
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 110
	}
}, {
	'coords': [1500, 1300],
	'text': "Wow, you're already here! \nCome to the store!",
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 110
	}
}, {
	'coords': [1028, 2732 - 280],
	'text': "Click here and you will \nsell all forged weapons! \nConvenient, isn't it!? \nYou'll find something else \ninteresting to wear in the store.",
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 275
	}
}, {
	'coords': [1024, 1800],
	'text': "Improve your skills! Forge \ndifferent weapons! become the most \nfamous blacksmith in these parts, \nand the richest of course!",
	'color': 'white',
	'substrate': {
		'alfa': 0.5,
		'height': 220
	}
}];
var goldScore = storage.goldScore || 0;
var goldScoreTxt = new Text2('Gold: ' + goldScore, {
	size: 50,
	fill: 0xFFFFFF
});
goldScoreTxt.anchor.set(0, 0);
goldScoreTxt.y = 0;
if (typeof counterText !== 'undefined') {
	goldScoreTxt.x = counterText.width + 10; // Position to the right of the Forging skill counter
} else {
	goldScoreTxt.x = 550; // Default position if counterText is undefined
}
LK.gui.topLeft.addChild(goldScoreTxt);
var redCrystalIngotScore = storage.redCrystalIngotScore || 0;
var redCrystalIngotScoreTxt = new Text2('RedCrystalIngot: ' + redCrystalIngotScore, {
	size: 50,
	fill: 0xFFFFFF
});
redCrystalIngotScoreTxt.anchor.set(1, 0);
redCrystalIngotScoreTxt.y = 100; // Position below the GreenCrystalIngot score
LK.gui.topRight.addChild(redCrystalIngotScoreTxt);
var mineInsideBackground;
var blueCrystallScore = storage.blueCrystallScore || 0;
var automineblueCrystallClicked = storage.automineblueCrystallClicked;
var autominegreenCrystallClicked = storage.autominegreenCrystallClicked;
var autominegreenCrystallClicked = storage.autominegreenCrystallClicked;
var automineredCrystallClicked = storage.automineredCrystallClicked;
var autogrowthRateClicked = storage.autogrowthRateClicked;
var scoreTxt = new Text2('Blue Crystall: ' + blueCrystallScore, {
	size: 50,
	fill: 0xFFFFFF
});
scoreTxt.anchor.set(0, 0);
scoreTxt.y = 100; // Move the score text 100 pixels down
LK.gui.topLeft.addChild(scoreTxt);
var greenCrystallScore = storage.greenCrystallScore || 0;
var greenScoreTxt = new Text2('Green Crystall: ' + greenCrystallScore, {
	size: 50,
	fill: 0xFFFFFF
});
greenScoreTxt.anchor.set(0, 0);
greenScoreTxt.y = 150; // Position below the Blue Crystall score
LK.gui.topLeft.addChild(greenScoreTxt);
var greenCrystalIngotScore = storage.greenCrystalIngotScore || 0;
var greenCrystalIngotScoreTxt = new Text2('GreenCrystalIngot: ' + greenCrystalIngotScore, {
	size: 50,
	fill: 0xFFFFFF
});
greenCrystalIngotScoreTxt.anchor.set(1, 0);
greenCrystalIngotScoreTxt.y = 50; // Position below the BlueCrystalIngot score
LK.gui.topRight.addChild(greenCrystalIngotScoreTxt);
var blueCristal; // Define blueCristal in the global scope to fix the reference error
var greenCristal; // Define greenCristal in the global scope to fix the reference error
var redCristal; // Define redCristal in the global scope to fix the reference error
var blueCrystalIngotScore = storage.blueCrystalIngotScore || 0; //{1Z.1}
var redCrystallScore = storage.redCrystallScore || 0;
var blueCrystalIngotScoreTxt = new Text2('BlueCrystalIngot: ' + blueCrystalIngotScore, {
	size: 50,
	fill: 0xFFFFFF
});
blueCrystalIngotScoreTxt.anchor.set(1, 0);
blueCrystalIngotScoreTxt.y = 0;
LK.gui.topRight.addChild(blueCrystalIngotScoreTxt);
var redScoreTxt = new Text2('Red Crystall: ' + redCrystallScore, {
	size: 50,
	fill: 0xFFFFFF
});
redScoreTxt.anchor.set(0, 0);
redScoreTxt.y = 200; // Position below the Green Crystall score
LK.gui.topLeft.addChild(redScoreTxt);
var map = game.addChild(LK.getAsset('Map', {
	anchorX: 0.5,
	anchorY: 0.5
}));
map.x = 400;
map.y = 2450;
map.visible = false; // Initialize the map as invisible
// Make the map interactive
map.interactive = true;
// Define the 'down' event handler for the map
map.down = function (x, y, obj) {
	setHelp(-1);
	hammer.destroy();
	if (storage.forgingSkill >= 10 && storage.help == 4) {
		if (quest && typeof quest.destroy === 'function') {
			quest.destroy();
		}
		quest = false;
	}
	// Hide the map asset when transitioning to the map screen
	LK.getSound('mapaudio').play();
	map.visible = false;
	// Hide the mineInsideBackground if it exists
	if (mineInsideBackground) {
		mineInsideBackground.visible = false;
		mineInsideBackground.destroy(); // Ensure it is completely removed
	}
	if (redCristal) {
		redCristal.visible = false; //{1Z.1}
		redCristal.destroy(); // Ensure it is completely removed
	} //{1Z.3}
	if (blueCristal) {
		blueCristal.visible = false; //{1X.1}
		blueCristal.destroy(); // Ensure it is completely removed
	} //{1X.3}
	if (greenCristal) {
		greenCristal.visible = false; //{1Y.1}
		greenCristal.destroy(); // Ensure it is completely removed
	} //{1Y.3}
	var mapScreen = game.addChild(new Container());
	// Attach 'mapbackground' asset to the mapScreen
	var mapBackground = mapScreen.attachAsset('mapbackground', {
		anchorX: 0.5,
		//{1h.1}
		anchorY: 0.5,
		//{1h.2}
		interactive: false // Ensure mapbackground does not block cursor interaction
	}); //{1h.3}
	// Add 'citymap' asset to the center of the screen
	var cityMap = mapScreen.attachAsset('citymap', {
		anchorX: 0.5,
		anchorY: 0.5,
		interactive: true // Make the 'citymap' asset interactive
	});
	cityMap.x = -250;
	cityMap.y = 160;
	// Define the 'down' event handler for cityMap
	cityMap.down = function (x, y, obj) {
		hammer.destroy();
		setHelp(-1);
		// Create a new screen without background
		var isolatedScreen = game.addChild(new Container());
		// Hide the current map screen
		mapScreen.visible = false;
		console.log(storage.help);
		if (storage.help == 12) {
			quest.destroy();
			quest = 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;
		setHelp(12);
		// Define the 'down' event handler for shop
		shop.down = function (x, y, obj) {
			hammer.destroy();
			LK.getSound('shopin').play();
			// Create a new screen without background
			var shopScreen = game.addChild(new Container());
			// Hide the current isolated screen
			isolatedScreen.visible = false;
			// Position the shopScreen at the center
			shopScreen.x = 2048 / 2;
			shopScreen.y = 2732 / 2;
			if (storage.help == 13) {
				if (quest && typeof quest.destroy === 'function') {
					quest.destroy();
				}
				quest = false;
			}
			// 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();
				setHelp(-1);
				// Create a new isolated screen without a background
				var isolatedScreen = game.addChild(new Container());
				// Attach 'newToolsBackground' asset to the isolatedScreen
				var newToolsBackground = isolatedScreen.attachAsset('newToolsBackground', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				newToolsBackground.x = 0;
				newToolsBackground.y = 0;
				if (!storage.theBlacksmithsApprentice) {
					// Attach 'Theblacksmithsapprentice' asset to the center of the isolatedScreen
					var theBlacksmithsApprentice = isolatedScreen.attachAsset('Theblacksmithsapprentice', {
						anchorX: 0.5,
						//{4C.1}
						anchorY: 0.5,
						//{4C.2}
						interactive: true // Make the Theblacksmithsapprentice interactive
					}); //{4C.3}
					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.automineblueCrystallClicked) {
					// Attach 'automineblueCrystall' asset to the center of the isolatedScreen
					var automineblueCrystall = isolatedScreen.attachAsset('automineblueCrystall', {
						anchorX: 0.5,
						//{4F.2}
						anchorY: 0.5,
						//{4F.3}
						interactive: true // Make the automineblueCrystall interactive
					}); //{4F.4}
					automineblueCrystall.x = -400;
					automineblueCrystall.y = -600;
					automineblueCrystall.clicked = storage.automineblueCrystallClicked;
					// Define the 'down' event handler for automineblueCrystall
					automineblueCrystall.down = function (x, y, obj) {
						// Increment blueCrystallScore by 1 every second
						if (goldScore >= 500 && !automineblueCrystall.clicked) {
							automineblueCrystall.clicked = true;
							goldScore -= 500;
							goldScoreTxt.setText('Gold: ' + goldScore);
							storage.goldScore = goldScore;
							var intervalId = LK.setInterval(function () {
								blueCrystallScore += 1;
								LK.setScore(blueCrystallScore);
								storage.blueCrystallScore = blueCrystallScore;
								scoreTxt.setText('Blue Crystall: ' + LK.getScore());
							}, 1000);
							// Store the intervalId in the automineblueCrystall object for potential future use
							automineblueCrystall.intervalId = intervalId;
							storage.automineblueCrystallClicked = true; // Persist the click state
							automineblueCrystall.visible = false;
							mineBlueCrystallText.visible = false;
							mineBlueCrystallCostText.visible = false;
						}
					};
					// Add text "Mine Blue Crystall +1" below the automineblueCrystall asset
					var mineBlueCrystallText = new Text2('Mine Blue Crystall +1', {
						size: 50,
						fill: 0x030303
					});
					mineBlueCrystallText.anchor.set(0.5, 0.5);
					mineBlueCrystallText.x = automineblueCrystall.x;
					mineBlueCrystallText.y = automineblueCrystall.y + 150; // Position below the automineblueCrystall asset
					isolatedScreen.addChild(mineBlueCrystallText);
					// Add text "500G" below the 'Mine Blue Crystall +1' text
					var mineBlueCrystallCostText = new Text2('500G', {
						size: 50,
						//{58.1}
						fill: 0x030303 //{58.2}
					}); //{58.3}
					mineBlueCrystallCostText.anchor.set(0.5, 0.5);
					mineBlueCrystallCostText.x = mineBlueCrystallText.x;
					mineBlueCrystallCostText.y = mineBlueCrystallText.y + 50; // Position below the 'Mine Blue Crystall +1' text
					isolatedScreen.addChild(mineBlueCrystallCostText);
				}
				if (!storage.autominegreenCrystallClicked) {
					// Attach 'autominegreenCrystall' asset to the center of the isolatedScreen
					var autominegreenCrystall = isolatedScreen.attachAsset('autominegreenCrystall', {
						anchorX: 0.5,
						anchorY: 0.5,
						interactive: true // Make the autominegreenCrystall interactive
					});
					autominegreenCrystall.x = -400;
					autominegreenCrystall.y = -200;
					// Define the 'down' event handler for autominegreenCrystall
					autominegreenCrystall.clicked = storage.autominegreenCrystallClicked;
					autominegreenCrystall.down = function (x, y, obj) {
						// Increment greenCrystallScore by 1 every second
						if (goldScore >= 1000 && !autominegreenCrystall.clicked) {
							autominegreenCrystall.clicked = true;
							goldScore -= 1000;
							goldScoreTxt.setText('Gold: ' + goldScore);
							storage.goldScore = goldScore;
							var intervalId = LK.setInterval(function () {
								greenCrystallScore += 1;
								storage.greenCrystallScore = greenCrystallScore;
								greenScoreTxt.setText('Green Crystall: ' + greenCrystallScore);
							}, 1000);
							// Store the intervalId in the autominegreenCrystall object for potential future use
							autominegreenCrystall.intervalId = intervalId;
							storage.autominegreenCrystallClicked = true; // Persist the click state
							autominegreenCrystall.visible = false;
							mineGreenCrystallText.visible = false;
							mineGreenCrystallCostText.visible = false;
						}
					};
					// Add text "Mine Green Crystall +1" below the autominegreenCrystall asset
					var mineGreenCrystallText = new Text2('Mine Green Crystall +1', {
						size: 50,
						fill: 0x030303
					});
					mineGreenCrystallText.anchor.set(0.5, 0.5);
					mineGreenCrystallText.x = autominegreenCrystall.x;
					mineGreenCrystallText.y = autominegreenCrystall.y + 150; // Lower the position below the autominegreenCrystall asset
					isolatedScreen.addChild(mineGreenCrystallText);
					// Add text "1000G" below the 'Mine Green Crystall +1' text
					var mineGreenCrystallCostText = new Text2('1000G', {
						size: 50,
						//{5c.1}
						fill: 0x030303 //{5c.2}
					}); //{5c.3}
					mineGreenCrystallCostText.anchor.set(0.5, 0.5);
					mineGreenCrystallCostText.x = mineGreenCrystallText.x;
					mineGreenCrystallCostText.y = mineGreenCrystallText.y + 50; // Position below the 'Mine Green Crystall +1' text
					isolatedScreen.addChild(mineGreenCrystallCostText);
				}
				if (!storage.automineredCrystallClicked) {
					// Attach 'automineredCrystall' asset to the center of the isolatedScreen
					var automineredCrystall = isolatedScreen.attachAsset('automineredCrystall', {
						anchorX: 0.5,
						anchorY: 0.5,
						interactive: true // Make the automineredCrystall interactive
					});
					automineredCrystall.x = -400;
					automineredCrystall.y = 200;
					// Define the 'down' event handler for automineredCrystall
					automineredCrystall.down = function (x, y, obj) {
						// Increment redCrystallScore by 1 every second
						if (goldScore >= 2000 && !automineredCrystall.clicked) {
							automineredCrystall.clicked = true;
							goldScore -= 2000;
							goldScoreTxt.setText('Gold: ' + goldScore);
							storage.goldScore = goldScore;
							var intervalId = LK.setInterval(function () {
								redCrystallScore += 1;
								storage.redCrystallScore = redCrystallScore;
								redScoreTxt.setText('Red Crystall: ' + redCrystallScore);
							}, 1000);
							// Store the intervalId in the automineredCrystall object for potential future use
							automineredCrystall.intervalId = intervalId;
							storage.automineredCrystallClicked = true; // Persist the click state
							automineredCrystall.visible = false;
							mineRedCrystallText.visible = false;
							mineRedCrystallCostText.visible = false;
						}
					};
					// Add text "Mine Red Crystall +1" below the automineredCrystall asset
					var mineRedCrystallText = new Text2('Mine Red Crystall +1', {
						size: 50,
						fill: 0x030303
					});
					mineRedCrystallText.anchor.set(0.5, 0.5);
					mineRedCrystallText.x = automineredCrystall.x;
					mineRedCrystallText.y = automineredCrystall.y + 140; // Position below the automineredCrystall asset
					isolatedScreen.addChild(mineRedCrystallText);
					// Add text "2000G" below the 'Mine Red Crystall +1' text
					var mineRedCrystallCostText = new Text2('2000G', {
						size: 50,
						//{55.1}
						fill: 0x030303 //{55.2}
					}); //{55.3}
					mineRedCrystallCostText.anchor.set(0.5, 0.5);
					mineRedCrystallCostText.x = mineRedCrystallText.x;
					mineRedCrystallCostText.y = mineRedCrystallText.y + 50; // Position below the 'Mine Red Crystall +1' text
					isolatedScreen.addChild(mineRedCrystallCostText);
				}
				if (!storage.multiclickupgrade) {
					// Attach 'multiclickupgrade' asset to the center of the isolatedScreen
					var multiclickupgrade = isolatedScreen.attachAsset('multiclickupgrade', {
						anchorX: 0.5,
						anchorY: 0.5,
						interactive: true // Make the multiclickupgrade interactive
					});
					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) {
				if (storage.help == 14) {
					if (quest && typeof quest.destroy === 'function') {
						quest.destroy();
					}
					quest = false;
				}
				// Сохраняем начальные значения для проверки условия
				var initialBlueSwords = storage.blueSwords;
				var initialGreenAxes = storage.greenAxes;
				var initialRedTwoHandedSwords = storage.redCrystalTwoHandedSwords;
				// Увеличиваем золото и обнуляем запасы оружия
				goldScore += storage.blueSwords * 50;
				storage.blueSwords = 0;
				goldScore += storage.greenAxes * 150;
				storage.greenAxes = 0;
				goldScore += storage.redCrystalTwoHandedSwords * 600;
				storage.redCrystalTwoHandedSwords = 0;
				goldScoreTxt.setText('Gold: ' + goldScore);
				storage.goldScore = goldScore;
				// Проверяем наличие оружия до обнуления и запускаем звук с анимацией
				if (initialBlueSwords > 0 || initialGreenAxes > 0 || initialRedTwoHandedSwords > 0) {
					LK.getSound('gold').play();
					// Создаём 5 монет, летящих вверх
					for (var i = 0; i < 5; i++) {
						var goldAsset = game.addChild(LK.getAsset('goldstore', {
							anchorX: 0.5,
							anchorY: 0.5
						}));
						goldAsset.x = shopScreen.x + newBuildings.x + (Math.random() * 50 - 25); // Случайное смещение по X
						goldAsset.y = shopScreen.y + newBuildings.y;
						(function (goldAsset) {
							var speed = 3 + Math.random() * 3; // Случайная скорость от 3 до 6
							goldAsset.update = function () {
								goldAsset.y -= speed;
							};
							LK.setTimeout(function () {
								goldAsset.destroy();
							}, 1000);
						})(goldAsset);
					}
				}
			};
			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) {
				setHelp(14);
				LK.getSound('doors').play();
				shopScreen.visible = false; // Hide the current shop screen
				mapBackground.visible = false; // Ensure the mapbackground asset is hidden
				mapScreen.visible = true; // Show the citymap screen
				isolatedScreen.visible = true; // Ensure the isolated screen is visible
			};
			setHelp(13);
			hammer = game.addChild(LK.getAsset('hammer', {
				anchorX: 0.5,
				anchorY: 0.5,
				scaleX: -1
			}));
		};
		// Position the isolatedScreen at the center
		isolatedScreen.x = 2048 / 2;
		isolatedScreen.y = 2732 / 2;
		hammer = game.addChild(LK.getAsset('hammer', {
			anchorX: 0.5,
			anchorY: 0.5,
			scaleX: -1
		}));
	};
	// Attach 'anvilmap' asset to the mapScreen on the top layer
	var anvilMap = mapScreen.attachAsset('anvilmap', {
		anchorX: 0.5,
		anchorY: 0.5,
		interactive: true
	});
	// Attach 'mine' asset to the mapScreen on the top layer
	var mine = mapScreen.attachAsset('mine', {
		anchorX: 0.5,
		anchorY: 0.5,
		interactive: true
	});
	mine.x -= 150; // Move the mine asset 150 pixels to the left
	mine.y -= 150; // Move the mine asset 150 pixels higher
	// Make mine interactive and define the 'down' event handler
	mine.down = function (x, y, obj) {
		if (storage.help == 5) {
			if (quest && typeof quest.destroy === 'function') {
				quest.destroy();
			}
			quest = false;
		}
		hammer.destroy();
		setHelp(-1);
		// Create a new screen for the mine
		var mineScreen = game.addChild(new Container());
		// Make the map visible after transitioning to the mine screen
		map.visible = true;
		// Hide the current map screen
		mapScreen.visible = false;
		// Disable the active background
		background.visible = false;
		// Attach 'mineinsidebackground' asset to the mineScreen on the bottom layer
		mineInsideBackground = mineScreen.attachAsset('mineinsidebackground', {
			anchorX: 0.5,
			anchorY: 0.5,
			interactive: false,
			zIndex: -1 // Ensure it is on the bottom layer
		});
		setHelp(5);
		// Create and add a new instance of the RedCristal class
		redCristal = mineScreen.addChild(new RedCristal());
		// Position the redCristal asset
		redCristal.x -= 510; // Move 100 pixels to the left
		redCristal.y += 490; // Move 100 pixels lower
		// Create and add a new instance of the GreenCristal class
		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) {
		if (storage.help == 7) {
			if (quest && typeof quest.destroy === 'function') {
				quest.destroy();
			}
			quest = false;
		}
		setHelp(-1);
		// Show the Anvil screen
		gameScreen.visible = true;
		// Make the map visible after transitioning to the anvil map
		map.visible = true;
		// Attach 'gameScreenBackground' asset to the 'gameScreen' object
		gameScreenBackground = gameScreen.attachAsset('gameScreenBackground', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		setHelp(0);
		setHelp(1);
		setHelp(7);
		setHelp(10);
		// Attach 'recipes' asset to the 'gameScreenBackground' object
		var recipes = gameScreenBackground.attachAsset('recipes', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		// Center the 'recipes' asset on the gameScreenBackground
		recipes.x = gameScreenBackground.width / 2 - 1050; //{3u.1}
		recipes.y = gameScreenBackground.height / 2 + 150; //{3v.1}
		// Hide the mineinsidebackground when exiting the mine screen
		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;
	};
	setHelp(-1);
	// Hide the current game screen
	gameScreen.visible = false;
	// Disable the active background
	background.visible = false;
	// Attach a new background or asset to the mapScreen if needed
	// Example: mapScreen.attachAsset('newBackground', { anchorX: 0.5, anchorY: 0.5 });
	// Position the mapScreen at the center
	mapScreen.x = 2048 / 2;
	mapScreen.y = 2732 / 2;
	setHelp(3);
	setHelp(4);
	setHelp(6);
	if (storage.help == 11 && quest) {
		quest = false;
	}
	setHelp(11);
	hammer = game.addChild(LK.getAsset('hammer', {
		anchorX: 0.5,
		anchorY: 0.5,
		scaleX: -1
	}));
};
var growthRateText;
var growthRateCounter = storage.growthRate; // Initialize growth rate counter from storage
var background = game.addChild(new Container());
background.width = 2048;
background.height = 2732;
background.x = 2048 / 2;
background.y = 2732 / 2;
var backgroundGraphics = background.attachAsset('background', {
	anchorX: 0.5,
	anchorY: 0.5
});
var gameScreen = game.addChild(new Container()); //{1h.1}
var newGame = game.addChild(new Container());
newGame.x = 2650 / 2 + 100; //{3d.1}
newGame.y = 2680 * 4.2 / 5; //{3d.1}
// Attach 'title' asset to the start screen
var title = game.addChild(LK.getAsset('title', {
	anchorX: 0.5,
	anchorY: 0.5
}));
title.x = 2048 / 2;
title.y = 3200 / 5;
// Attach 'newGameText' asset to the 'New Game' object
var newGameText = newGame.attachAsset('newGameText', {
	anchorX: 0.5,
	anchorY: 0.5,
	stroke: 0xFFFFFF,
	// White color
	strokeThickness: 5 // 5px thickness
});
// Attach 'continueText' asset to the game object
var continueText = game.addChild(LK.getAsset('continueText', {
	anchorX: 0.5,
	anchorY: 0.5
}));
continueText.x = newGame.x - newGame.width - 500; // Increase the distance between newGame and continueText
continueText.y = newGame.y; // Align vertically with newGame
continueText.interactive = true;
continueText.down = function (x, y, obj) {
	startgame();
};
var greenAxeClicks = storage.greenAxeClicks;
var redCrystalTwoHandedSwordClicks = storage.redCrystalTwoHandedSwordClicks;
function startgame() {
	setquest();
	title.destroy();
	hammer.destroy();
	// Create a new game screen
	gameScreen = game.addChild(new Container());
	gameScreen.x = 2048 / 2;
	gameScreen.y = 2732 / 2;
	// Attach 'gameScreenBackground' asset to the 'gameScreen' object
	gameScreenBackground = gameScreen.attachAsset('gameScreenBackground', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Attach 'recipes' asset to the 'gameScreenBackground' object
	var recipes = gameScreenBackground.attachAsset('recipes', {
		anchorX: 0.5,
		anchorY: 0.5,
		interactive: true // Make the recipes asset interactive
	});
	// Remove 'continueText' asset when transitioning to new game
	// Define the 'down' event handler for recipes
	recipes.down = function (x, y, obj) {
		setHelp(-1);
		hammer.destroy();
		LK.getSound('booksaudio').play();
		// Create a new screen for the recipes
		var recipesScreen = game.addChild(new RecipesScreen());
		map.visible = false; // Hide the map asset after transitioning to the recipes screen
		if (storage.help == 10) {
			if (quest && typeof quest.destroy === 'function') {
				quest.destroy();
			}
			quest = false;
		}
		// 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 >= 10 && storage.blueCrystalIngotScore >= 10) {
				storage.blueswordsclick += 1;
			}
			if (storage.blueswordsclick >= 10) {
				storage.blueswordsclick = 0;
				storage.blueSwords += 1;
				blueSwordsText.setText(storage.blueSwords.toString());
				storage.forgingSkill += 100;
				counterText.setText('Forging skill: ' + storage.forgingSkill);
				if (storage.blueCrystalIngotScore >= 10) {
					storage.blueCrystalIngotScore -= 10;
					blueCrystalIngotScore = storage.blueCrystalIngotScore;
					blueCrystalIngotScoreTxt.setText('BlueCrystalIngot: ' + blueCrystalIngotScore);
				}
				// Проверка квеста 11: срабатывает после создания меча
				if (storage.help == 11 && storage.blueSwords >= 1) {
					if (quest && typeof quest.destroy === 'function') {
						quest.destroy();
					}
					quest = false;
				}
			}
			blueCrystalSwordClicks.setText('(current ' + storage.blueswordsclick + ')');
		};
		setHelp(10);
		// Add 'Swords in stock' text asset to the center of the screen
		var swordsInStockText = new Text2('Swords in stock', {
			size: 50,
			fill: 0x000000 // Black color
		});
		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 >= 4000 && storage.greenCrystalIngotScore >= 15) {
				greenAxeClicks += 1;
			}
			if (greenAxeClicks >= 15) {
				greenAxeClicks = 0;
				storage.greenAxes += 1; // Увеличиваем количество зелёных топоров в хранилище
				greenAxesText.setText(storage.greenAxes.toString());
				storage.forgingSkill += 150; // Добавляем 150 к навыку ковки
				counterText.setText('Forging skill: ' + storage.forgingSkill); // Обновляем отображение навыка ковки
				if (storage.greenCrystalIngotScore >= 15) {
					storage.greenCrystalIngotScore -= 15; // Вычитаем 15 из greenCrystalIngotScore
					greenCrystalIngotScore = storage.greenCrystalIngotScore; // Сохраняем новое значение в хранилище
					greenCrystalIngotScoreTxt.setText('GreenCrystalIngot: ' + greenCrystalIngotScore); // Обновляем текстовое отображение
				}
			}
			greenAxeClicksText.setText('(current ' + greenAxeClicks + ')');
			storage.greenAxeClicks = greenAxeClicks;
		};
		// Add 'Axe in stock' text asset to the center of the screen
		var axeInStockText = new Text2('Axe in stock', {
			size: 50,
			fill: 0x000000 // Black color
		});
		axeInStockText.anchor.set(0.5, 0.5);
		axeInStockText.x = 2848 / 2;
		recipesScreen.addChild(axeInStockText);
		// Display the number of green axes in stock
		var greenAxesText = new Text2(storage.greenAxes.toString(), {
			size: 50,
			fill: 0x000000 // Black color
		});
		greenAxesText.anchor.set(0.5, 0.5);
		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 100.\n 10 blue crystal ingots +\n 10 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 ' + storage.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 4k.\n 15 green crystal ingots +\n 15 clicks on the recipe', {
			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;
		hammer = game.addChild(LK.getAsset('hammer', {
			anchorX: 0.5,
			anchorY: 0.5,
			scaleX: -1
		}));
		// Define the 'down' event handler for recipesNext
		recipesNext.down = function (x, y, obj) {
			// Create a new screen for the next section
			var nextScreen = game.addChild(new Container());
			LK.getSound('paper').play();
			// Remove the current background
			recipesScreen.visible = false;
			// Add 'recipesnextbackgr1' asset to the center of the screen
			var recipesNextBackgr1 = nextScreen.attachAsset('recipesnextbackgr1', {
				anchorX: 0.5,
				anchorY: 0.5
			});
			recipesNextBackgr1.x = 2048 / 2;
			recipesNextBackgr1.y = 2732 / 2;
			// Remove the existing hammer
			hammer.destroy();
			// Add 'recipesprev' asset to the center of the screen
			var recipesPrev = nextScreen.attachAsset('recipesprev', {
				anchorX: 0.5,
				anchorY: 0.5,
				interactive: true // Make the 'recipesprev' asset interactive
			});
			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 100.\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 2000.\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 7000.\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 >= 10000 && storage.redCrystalIngotScore >= 75) {
					redCrystalTwoHandedSwordClicks += 1;
				}
				if (redCrystalTwoHandedSwordClicks >= 20) {
					redCrystalTwoHandedSwordClicks = 0;
					storage.redCrystalTwoHandedSwords += 1; // Увеличение количества мечей в storage
					redCrystalTwoHandedSwordsText.setText(storage.redCrystalTwoHandedSwords.toString());
					storage.forgingSkill += 200; // Добавление опыта кузнечного дела
					counterText.setText('Forging skill: ' + storage.forgingSkill);
					storage.redCrystalIngotScore -= 75; // Вычитаем 75 инготов из storage
					redCrystalIngotScore = storage.redCrystalIngotScore; // Обновляем локальную переменную
					redCrystalIngotScoreTxt.setText('RedCrystalIngot: ' + redCrystalIngotScore); // Обновляем отображение
				}
				redCrystalTwoHandedSwordClicksText.setText('(current ' + redCrystalTwoHandedSwordClicks + ')');
				storage.redCrystalTwoHandedSwordClicks = redCrystalTwoHandedSwordClicks;
			};
			// Add 'Red Crystal Two-Handed Sword in stock' text asset to the center of the screen
			var redCrystalTwoHandedSwordsText = new Text2(storage.redCrystalTwoHandedSwords.toString(), {
				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 10k.\n 75 red crystal ingots +\n 20 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;
			setHelp(0);
			setHelp(1);
			setHelp(3);
			setHelp(7);
		};
		// 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 - 100; // Adjust x-coordinate based on the anvil's position on the background
	anvil.y = gameScreenBackground.y + 500;
	// Add a new object 'Magic Nursery'
	var magicNursery = gameScreen.addChild(new Door());
	// Position 'Magic Nursery' to the left and up
	magicNursery.x = 2048 / 4;
	magicNursery.y = 2732 / 2.5;
	setHelp(0);
	setHelp(1);
	setHelp(3);
	setHelp(7);
	setHelp(9);
	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.automineblueCrystallClicked = false;
	storage.autominegreenCrystallClicked = false;
	storage.automineredCrystallClicked = false;
	storage.autogrowthRateClicked = false;
	storage.theBlacksmithsApprentice = false;
	storage.multiclickupgrade = false;
	storage.help = 0;
	// Reset all saved data
	storage.forgingSkill = 0;
	storage.growthRate = 0;
	storage.blueCrystalIngotScore = 0;
	storage.blueCrystallScore = 0;
	storage.greenCrystalIngotScore = 0;
	storage.redCrystallScore = 0;
	storage.redCrystalIngotScore = 0;
	storage.greenCrystallScore = 0;
	storage.greenCrystalIngotScore = 0;
	storage.blueSwords = 0;
	storage.goldScore = 0;
	storage.blueswordsclick = 0;
	storage.greenAxeClicks = 0;
	storage.redCrystalTwoHandedSwordClicks = 0;
	// Reset current variables
	redCrystalIngotScore = 0;
	blueCrystallScore = 0;
	greenCrystallScore = 0;
	greenCrystalIngotScore = 0;
	blueCrystalIngotScore = 0;
	redCrystallScore = 0;
	growthRateCounter = 0;
	goldScore = 0;
	growthRateText.setText('Growth rate: ' + storage.growthRate);
	counterText.setText('Forging skill: ' + storage.forgingSkill);
	scoreTxt.setText('Blue Crystall: ' + blueCrystallScore);
	greenScoreTxt.setText('Green Crystall: ' + greenCrystallScore);
	redScoreTxt.setText('Red Crystall: ' + redCrystallScore);
	blueCrystalIngotScoreTxt.setText('BlueCrystalIngot: ' + storage.blueCrystalIngotScore);
	greenCrystalIngotScoreTxt.setText('GreenCrystalIngot: ' + storage.greenCrystalIngotScore);
	redCrystalIngotScoreTxt.setText('RedCrystalIngot: ' + storage.redCrystallScore);
	goldScoreTxt.setText('Gold: ' + goldScore);
	startgame();
};
// Create a new text object to display the click counter
var counterText = new Text2('Forging skill: ' + storage.forgingSkill, {
	size: 50,
	fill: 0xFFFFFF
});
// Position the text object at the top right corner of the screen
counterText.anchor.set(0, 0);
LK.gui.topLeft.addChild(counterText);
counterText.y = 0;
counterText.x = 0;
growthRateText = new Text2('Growth rate: ' + growthRateCounter, {
	size: 50,
	fill: 0xFFFFFF
});
growthRateText.anchor.set(0, 0);
LK.gui.topLeft.addChild(growthRateText);
growthRateText.y = counterText.height - 6; // Move the growth rate text 2 pixels higher
growthRateText.x = 0;
// Initialize hammer asset
var hammer;
hammer = game.addChild(LK.getAsset('hammer', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: -1
}));
// Function to make the hammer follow the mouse/touch position
function updateHammerPosition(x, y) {
	if (hammer) {
		hammer.x = x;
		hammer.y = y;
	}
}
var newgameclearInterval = [];
if (automineblueCrystallClicked) {
	var intervalId = LK.setInterval(function () {
		blueCrystallScore += 1;
		LK.setScore(blueCrystallScore);
		storage.blueCrystallScore = blueCrystallScore;
		scoreTxt.setText('Blue Crystall: ' + LK.getScore());
	}, 1000);
	newgameclearInterval.push(intervalId);
}
if (autominegreenCrystallClicked) {
	var intervalId = LK.setInterval(function () {
		greenCrystallScore += 1;
		storage.greenCrystallScore = greenCrystallScore;
		greenScoreTxt.setText('Green Crystall: ' + greenCrystallScore);
	}, 1000);
	newgameclearInterval.push(intervalId);
}
if (automineredCrystallClicked) {
	var intervalId = LK.setInterval(function () {
		redCrystallScore += 1;
		storage.redCrystallScore = redCrystallScore;
		redScoreTxt.setText('Red Crystall: ' + redCrystallScore);
	}, 1000);
	newgameclearInterval.push(intervalId);
}
if (autogrowthRateClicked) {
	var intervalId = LK.setInterval(function () {
		growthRateCounter += 1;
		growthRateText.setText('Growth rate: ' + growthRateCounter);
		storage.growthRate = growthRateCounter;
	}, 1000);
	newgameclearInterval.push(intervalId);
}
if (storage.theBlacksmithsApprentice) {
	var intervalId = LK.setInterval(function () {
		storage.forgingSkill += 1;
		counterText.setText('Forging skill: ' + storage.forgingSkill);
	}, 1000);
	newgameclearInterval.push(intervalId);
}
var seconds = Math.floor(Date.now() / 1000);
seconds = seconds - storage.lastgametime;
if (seconds > 18000) {
	seconds = 18000;
}
if (seconds > 0) {
	if (storage.automineblueCrystallClicked) {
		blueCrystallScore += seconds;
		storage.blueCrystallScore += seconds;
	}
	if (storage.autominegreenCrystallClicked) {
		greenCrystallScore += seconds;
		storage.greenCrystallScore += seconds;
	}
	if (storage.automineredCrystallClicked) {
		redCrystallScore += seconds;
		storage.redCrystallScore += seconds;
	}
	if (storage.autogrowthRateClicked) {
		growthRateCounter += seconds;
		storage.growthRate += seconds;
	}
	if (storage.theBlacksmithsApprentice) {
		storage.forgingSkill += seconds;
	}
}
var intervalId = LK.setInterval(function () {
	storage.lastgametime = Math.floor(Date.now() / 1000);
}, 1000);
// 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
			});
		}
	});
};