function main(self)
	if self.State == 0 then
		self.Flags.AlwaysActive, self.DrawFlags.NoDraw = true, true
		self.ListOfAlreadyChosen = { } -- list of chosen artifacts
		self.ArtifactsOwned = 0 -- list of artifacts owned in game (int32 flags, set with binary operations)
		self.Difficulty = 0 -- 0 normal, 1 easy, 2 hardcore
		self.Resolution = 1 -- resolution 0 - 16:9, 1 - 4:3
		self.ScreenW = 640
		self.ScreenH = 480
		self.Artifacts = {
			{
				Logic = "Amulet",
				Image = "CUSTOM_ARTIFACTS_AMULET",
				Type = "Passive"
			},
			{
				Logic = "FireShield",
				Image = "CUSTOM_ARTIFACTS_FIRESHIELD",
				Type = "Special"
			},
			{
				Logic = "HealingScroll",
				Image = "CUSTOM_ARTIFACTS_HEALINGSCROLL",
				Type = "Passive"
			},
			{
				Logic = "HeavenlyBag",
				Image = "CUSTOM_ARTIFACTS_MAGICBAG",
				Type = "Special"
			},
			{
				Logic = "MagicRing",
				Image = "CUSTOM_ARTIFACTS_MAGICRING",
				Type = "Passive"
			},
			{
				Logic = "PiercingBullets",
				Image = "CUSTOM_ARTIFACTS_PIERCINGBULLETSBAG",
				Type = "Enhancement"
			},
			{
				Logic = "PowerRing",
				Image = "CUSTOM_ARTIFACTS_POWERRING",
				Type = "Passive"
			},
			{
				Logic = "MercifulWings",
				Image = "CUSTOM_ARTIFACTS_WINGS",
				Type = "Enhancement"
			},
			{
				Logic = "FireEssence",
				Image = "CUSTOM_ARTIFACTS_FIREESSENCE",
				Type = "Enhancement"
			},
			{
				Logic = "ArcaneGem",
				Image = "CUSTOM_ARTIFACTS_ARCANEGEM",
				Type = "Special"
			},
			{
				Logic = "Aether",
				Image = "CUSTOM_ARTIFACTS_AETHER",
				Type = "Enhancement"
			}
		}
		self.ArtifactsCount = #self.Artifacts
		self.State = 1
	end
	if self.State == 1 then
		if GetGameType() == GameType.MultiPlayer then -- block amulet in multiplayer (there is no use to it there)
			table.insert(self.ListOfAlreadyChosen, 1)
		end
		self.State = 2
	end
	if self.State == 2 then
		self.State = 3
	end
	if self.State == 3 then
		self.State = 2
	end
end
