diff --git a/.godot/editor/create_recent.Node b/.godot/editor/create_recent.Node
index db27ca42ae9d48cb995917843f81b7914b991193..c6fbc0bd50a51899467b1ea750394b6224892f7c 100644
--- a/.godot/editor/create_recent.Node
+++ b/.godot/editor/create_recent.Node
@@ -1,14 +1,24 @@
+<<<<<<< HEAD
 Button
 Camera2D
 HBoxContainer
 Timer
 Label
 Node
+=======
+Rook
+Button
+Label
+ColorRect
+TextureRect
+HBoxContainer
+MarginContainer
+VBoxContainer
+PanelContainer
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 Node2D
+Node
 Control
 AnimationPlayer
-ColorRect
 CanvasLayer
-VBoxContainer
-TextureRect
 Sprite2D
diff --git a/.godot/editor/editor_layout.cfg b/.godot/editor/editor_layout.cfg
index 70c105d61b52794b1a774bacabe4c27cd116fa4b..31e24fbf0050d044f1b9186ebcce2d7f15cf5457 100644
--- a/.godot/editor/editor_layout.cfg
+++ b/.godot/editor/editor_layout.cfg
@@ -6,6 +6,7 @@ dock_5_selected_tab_idx=0
 dock_floating={}
 dock_bottom=[]
 dock_closed=[]
+<<<<<<< HEAD
 <<<<<<<HEAD<<<<<<<HEADdock_split_2=-1
 dock_split_3=0
 dock_hsplit_1=0
@@ -13,31 +14,55 @@ dock_hsplit_1=0
 dock_hsplit_3=-270
 dock_hsplit_2=270
 dock_split_2=0
+=======
+dock_split_2=0
+dock_split_3=0
+dock_hsplit_1=0
+<<<<<<<HEADdock_hsplit_2=498
+dock_hsplit_3=-406
+dock_hsplit_2=306
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 dock_hsplit_4=0
 dock_filesystem_h_split_offset=240
 dock_filesystem_v_split_offset=0
 dock_filesystem_display_mode=0
 dock_filesystem_file_sort=0
 dock_filesystem_file_list_display_mode=1
+<<<<<<< HEAD
 dock_filesystem_selected_paths=PackedStringArray("res://scenes/screens/select_piece_screen.tscn")
 dock_filesystem_uncollapsed_paths=PackedStringArray("Favorites", "res://", "res://scenes/", "res://scenes/screens/")
+=======
+dock_filesystem_selected_paths=PackedStringArray("res://scripts/scene_manager.gd")
+dock_filesystem_uncollapsed_paths=PackedStringArray("Favorites", "res://", "res://scripts/", "res://scenes/ui/")
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 dock_3="Scene,Import"
 dock_4="FileSystem"
 dock_5="Inspector,Node,History"
 
 [EditorNode]
 
+<<<<<<< HEAD
 open_scenes=PackedStringArray("res://scenes/game.tscn", "res://main.tscn", "res://scenes/screens/title_screen.tscn", "res://scenes/screens/select_piece_screen.tscn")
 current_scene="res://main.tscn"
 center_split_offset=0
+=======
+open_scenes=PackedStringArray("res://scenes/game.tscn", "res://main.tscn", "res://scenes/Shop.tscn", "res://scenes/ShopItem.tscn", "res://scenes/Pawn.tscn", "res://scenes/Rook.tscn")
+current_scene="res://scenes/Rook.tscn"
+center_split_offset=-398
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 selected_default_debugger_tab_idx=0
 selected_main_editor_idx=2
 selected_bottom_panel_item=0
 
 [ScriptEditor]
 
+<<<<<<< HEAD
 open_scripts=["res://scripts/game.gd", "res://scripts/main/main.gd", "res://scripts/run_data/run_data.gd", "res://scripts/screens/select_piece_screen.gd", "res://scripts/screens/title_screen.gd"]
 selected_script="res://scripts/main/main.gd"
+=======
+open_scripts=["res://scripts/game.gd", "res://scripts/Pawn.gd", "res://scripts/Queen.gd", "res://README.md", "res://scripts/Rook.gd", "res://scripts/scene_manager.gd", "res://scripts/Shop.gd", "res://scenes/shop_item.gd"]
+selected_script="res://scripts/Pawn.gd"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 open_help=[]
 script_split_offset=70
 list_split_offset=0
diff --git a/.godot/editor/filesystem_cache8 b/.godot/editor/filesystem_cache8
index d1c6b3068e6ed530bead6339ad7bc0ece0c1cc51..8572821653ad590961ddd6346f903a585b927125 100644
--- a/.godot/editor/filesystem_cache8
+++ b/.godot/editor/filesystem_cache8
@@ -1,4 +1,5 @@
 ea4bc82a6ad023ab7ee23ee620429895
+<<<<<<< HEAD
 ::res://::1739131418
 icon.svg::CompressedTexture2D::6378281210119878262::1738795350::1739075821::1::::<><>::
 main.tscn::PackedScene::5692118487183161714::1739131418::0::1::::<><>::uid://cu7lkx15lmfww::::res://scenes/scene_manager.tscn<>res://scripts/main/main.gd
@@ -127,3 +128,121 @@ select_piece_screen.gd::GDScript::-1::1739131352::0::1::::SelectPieceScreen<>Con
 title_screen.gd::GDScript::-1::1738864872::0::1::::TitleScreen<>Control<>::
 ::res://scripts/ui/::1738804415
 pop_up_label.gd::GDScript::-1::1738804415::0::1::::<>Label<>::
+=======
+::res://::1739123350
+export_presets.cfg::TextFile::-1::1738780181::0::1::::<><>::
+icon.svg::CompressedTexture2D::6378281210119878262::1737912187::1738338716::1::::<><>::
+main.tscn::PackedScene::5692118487183161714::1739063296::0::1::::<><>::uid://cu7lkx15lmfww::::res://scenes/scene_manager.tscn
+README.md::TextFile::-1::1737912187::0::1::::<><>::
+::res://assets/::1738358720
+::res://assets/noise/::1739053832
+noise2.tres::NoiseTexture2D::5054739835828921764::1739053832::0::1::::<><>::
+noise3.tres::NoiseTexture2D::906885015046579772::1739053832::0::1::::<><>::
+noise.tres::NoiseTexture2D::1693764769519573005::1739053832::0::1::::<><>::
+::res://assets/Original size Chess pieces/::1738707284
+Black king piece 2.png::CompressedTexture2D::7820367427145083060::1738358720::1738707284::1::::<><>::
+Black knight piece.png::CompressedTexture2D::4196515762256027844::1738358720::1738707284::1::::<><>::
+Black Pawn Piece 2.png::CompressedTexture2D::2167440687080906934::1738358720::1738707284::1::::<><>::
+Black Queen Piece 2.png::CompressedTexture2D::6638986330393441989::1738358720::1738707284::1::::<><>::
+Black rook piece.png::CompressedTexture2D::1872655759582013005::1738358720::1738707284::1::::<><>::
+White king piece 2.png::CompressedTexture2D::7139286146806283259::1738358720::1738707284::1::::<><>::
+White knight piece.png::CompressedTexture2D::8293368904171920332::1738358720::1738707284::1::::<><>::
+White Pawn Piece 2.png::CompressedTexture2D::8915038826611091975::1738358720::1738707284::1::::<><>::
+White Queen Piece 2.png::CompressedTexture2D::339041922548181320::1738358720::1738707284::1::::<><>::
+White rook piece.png::CompressedTexture2D::6272641373813891014::1738358720::1738707284::1::::<><>::
+::res://assets/Resized Chess Piece Assets/::1738707285
+Black_Assassin.png::CompressedTexture2D::5410645216483506242::1738707261::1738707284::1::::<><>::
+Black_Bishop.png::CompressedTexture2D::5646954560332560266::1738707261::1738707284::1::::<><>::
+Black_king.png::CompressedTexture2D::3691390456247856410::1738358720::1738707284::1::::<><>::
+Black_knight.png::CompressedTexture2D::3569790831830215405::1738358720::1738707284::1::::<><>::
+Black_mage.png::CompressedTexture2D::3300084723678353650::1738707261::1738707284::1::::<><>::
+Black_Pawn.png::CompressedTexture2D::4947090234957464596::1738358720::1738707284::1::::<><>::
+Black_Queen.png::CompressedTexture2D::9042903626319350434::1738358720::1738707284::1::::<><>::
+Black_rook.png::CompressedTexture2D::5637903285567075872::1738358720::1738707284::1::::<><>::
+Black_wizard.png::CompressedTexture2D::1278573577066895682::1738707261::1738707284::1::::<><>::
+White_Assassin.png::CompressedTexture2D::700262813566466932::1738707261::1738707284::1::::<><>::
+White_Bishop.png::CompressedTexture2D::3819780629635422360::1738707261::1738707284::1::::<><>::
+White_king.png::CompressedTexture2D::5012688985517926395::1738358720::1738707284::1::::<><>::
+White_knight.png::CompressedTexture2D::854350289879594279::1738358720::1738707284::1::::<><>::
+White_mage.png::CompressedTexture2D::7265615115782563194::1738707261::1738707284::1::::<><>::
+White_Pawn.png::CompressedTexture2D::919180529085242722::1738358720::1738707285::1::::<><>::
+White_Queen.png::CompressedTexture2D::4902137832695542513::1738358720::1738707285::1::::<><>::
+White_rook.png::CompressedTexture2D::4194129281780453908::1738358720::1738707285::1::::<><>::
+White_wizard.png::CompressedTexture2D::8734158881343267537::1738707261::1738707285::1::::<><>::
+::res://assets/shaders/::1739053832
+3d_effect.gdshader::Shader::-1::1738707261::0::1::::<><>::
+bg.gdshader::Shader::-1::1739053832::0::1::::<><>::
+color.gdshader::Shader::-1::1738378229::0::1::::<><>::
+shadow.gdshader::Shader::-1::1738378229::0::1::::<><>::
+::res://assets/sprites/::1738707284
+bishop.png::CompressedTexture2D::4631301773944929250::1738358798::1738707284::1::::<><>::
+knight.png::CompressedTexture2D::3545640967717948854::1738358798::1738707284::1::::<><>::
+pawn.png::CompressedTexture2D::1338760335342038528::1738358798::1738707284::1::::<><>::
+rook.png::CompressedTexture2D::6790909281007670776::1738358798::1738707284::1::::<><>::
+tile.png::CompressedTexture2D::8704336058451696509::1738358570::1738707284::1::::<><>::
+::res://assets/temp_assets/::1738707284
+assassin.png::CompressedTexture2D::2309680507621369322::1738360966::1738361001::1::::<><>::
+black_bishop.png::CompressedTexture2D::7509881182472568151::1738358720::1738707284::1::::<><>::
+black_king.png::CompressedTexture2D::3646032776351028361::1738358720::1738707284::1::::<><>::
+black_knight.png::CompressedTexture2D::4591257172048987833::1738358720::1738707284::1::::<><>::
+black_pawn.png::CompressedTexture2D::3912668014183198267::1738358720::1738707284::1::::<><>::
+black_queen.png::CompressedTexture2D::7989886812523566234::1738358720::1738707284::1::::<><>::
+black_rook.png::CompressedTexture2D::8767708966549765967::1738358720::1738707284::1::::<><>::
+mage.png::CompressedTexture2D::4650471376600460963::1738367395::1738367411::1::::<><>::
+Piece_move.png::CompressedTexture2D::260618725614842917::1738358720::1738707284::1::::<><>::
+temp_chess_board.png::CompressedTexture2D::4173558678901569366::1738358720::1738707284::1::::<><>::
+turn-black.png::CompressedTexture2D::7112033964315790810::1738358720::1738707284::1::::<><>::
+turn-white.png::CompressedTexture2D::7344907768700758025::1738358720::1738707284::1::::<><>::
+white_bishop.png::CompressedTexture2D::8093744356261485644::1738358720::1738707284::1::::<><>::
+white_king.png::CompressedTexture2D::5901183203660598461::1738358720::1738707284::1::::<><>::
+white_knight.png::CompressedTexture2D::7533630084821562912::1738358720::1738707284::1::::<><>::
+white_pawn.png::CompressedTexture2D::8196778834906249875::1738358720::1738707284::1::::<><>::
+white_queen.png::CompressedTexture2D::1957958042777204643::1738358720::1738707284::1::::<><>::
+white_rook.png::CompressedTexture2D::3317152307554436932::1738358720::1738707284::1::::<><>::
+wizard.png::CompressedTexture2D::2759604866355024615::1738373264::1738373374::1::::<><>::
+::res://assets/ui/::1738707285
+Go_Save_The_King_Menu.jpg::CompressedTexture2D::7252735845995868232::1738358720::1738707285::1::::<><>::
+Mockup Gameplay Design.jpg::CompressedTexture2D::4859609684236806088::1738358720::1738707285::1::::<><>::
+Mockup Shop Design.jpg::CompressedTexture2D::8043055154093708922::1738358720::1738707285::1::::<><>::
+::res://assets/ui/title_screen/::1738707284
+play_button.png::CompressedTexture2D::5896995890187459238::1738707261::1738707284::1::::<><>::
+quit_button.png::CompressedTexture2D::5172428563227279585::1738707261::1738707284::1::::<><>::
+rules_button.png::CompressedTexture2D::8060955005205795067::1738707261::1738707284::1::::<><>::
+::res://scenes/::1739063296
+Assassin.tscn::PackedScene::1241611789899982875::1738377694::0::1::::<><>::res://scripts/Assassin.gd<>uid://753dogr1moxe::::res://assets/temp_assets/assassin.png
+Bishop.tscn::PackedScene::2789588702038144760::1738377693::0::1::::<><>::res://scripts/Bishop.gd<>uid://b68o4mj7wcwvq::::res://assets/sprites/bishop.png
+explosion.tscn::PackedScene::69466253159940830::1738377693::0::1::::<><>::
+game.tscn::PackedScene::8577524005707705072::1739063296::0::1::::<><>::res://scripts/game.gd<>res://assets/shaders/bg.gdshader<>uid://yeqb8ndri7xp::::res://assets/noise/noise.tres<>uid://ceas3dsjeq4ge::::res://assets/noise/noise2.tres<>uid://m6ki73qfbp2s::::res://assets/noise/noise3.tres
+King.tscn::PackedScene::8277830396459966414::1738377693::0::1::::<><>::res://scripts/King.gd<>uid://cdogixbq8ay3t::::res://assets/Resized Chess Piece Assets/White_king.png
+Knight.tscn::PackedScene::5270730075267457303::1738377694::0::1::::<><>::res://scripts/Knight.gd<>uid://mf4a3jclbwih::::res://assets/Resized Chess Piece Assets/White_knight.png
+Mage.tscn::PackedScene::10334063134713649::1738377694::0::1::::<><>::res://scripts/Mage.gd<>uid://b7iyt4iwjbtd0::::res://assets/temp_assets/mage.png
+Pawn.tscn::PackedScene::3675784333675896641::1739063296::0::1::::<><>::res://scripts/Pawn.gd<>uid://ndi1e8thkonq::::res://assets/Resized Chess Piece Assets/White_Pawn.png
+Queen.tscn::PackedScene::7495869360053814603::1738377693::0::1::::<><>::res://scripts/Queen.gd<>uid://cb3vq168iyomb::::res://assets/Resized Chess Piece Assets/White_Queen.png
+Rook.tscn::PackedScene::9162401199636684468::1739063296::0::1::::<><>::res://scripts/Rook.gd<>uid://b00wxxfjk04ke::::res://assets/Resized Chess Piece Assets/White_rook.png
+scene_manager.tscn::PackedScene::6243365322716451430::1738707261::0::1::::<><>::res://scripts/scene_manager.gd
+Shop.tscn::PackedScene::6176556733226555776::1739063296::0::1::::<><>::res://scripts/Shop.gd
+ShopItem.tscn::PackedScene::5426615772503019706::1739063296::0::1::::<><>::res://scenes/shop_item.gd
+shop_item.gd::GDScript::-1::1739035004::0::1::::<>PanelContainer<>::
+texture_holder.tscn::PackedScene::594714386286134588::1738358720::0::1::::<><>::
+title_screen.tscn::PackedScene::8154710134031658440::1738707261::0::1::::<><>::res://scripts/title_screen/title_screen.gd<>uid://bm8sv1itwm467::::res://scenes/ui/menu_button.tscn
+Wizard.tscn::PackedScene::6352212773395470747::1738377694::0::1::::<><>::res://scripts/Wizard.gd<>uid://bfk1j3brcknkp::::res://assets/temp_assets/wizard.png
+::res://scenes/ui/::1738707261
+menu_button.tscn::PackedScene::3297943059633979218::1738707261::0::1::::<><>::res://assets/shaders/3d_effect.gdshader<>res://scripts/title_screen/menu_button.gd
+::res://scripts/::1739061871
+Assassin.gd::GDScript::-1::1739051721::0::1::::Assassin<>Piece<>::
+Bishop.gd::GDScript::-1::1739051721::0::1::::Bishop<>Piece<>::
+game.gd::GDScript::-1::1739063315::0::1::::game<>Node<>::
+King.gd::GDScript::-1::1739051721::0::1::::King<>Piece<>::
+Knight.gd::GDScript::-1::1739051721::0::1::::Knight<>Piece<>::
+Mage.gd::GDScript::-1::1739051721::0::1::::Mage<>Piece<>::
+Pawn.gd::GDScript::-1::1739057192::0::1::::Pawn<>Piece<>::
+Piece.gd::GDScript::-1::1739051735::0::1::::Piece<>Node2D<>::
+Queen.gd::GDScript::-1::1739051721::0::1::::Queen<>Piece<>::
+Rook.gd::GDScript::-1::1739051721::0::1::::Rook<>Piece<>::
+scene_manager.gd::GDScript::-1::1738707261::0::1::::<>Node<>::
+Shop.gd::GDScript::-1::1739063460::0::1::::<>Node2D<>::
+Wizard.gd::GDScript::-1::1739051721::0::1::::Wizard<>Piece<>::
+::res://scripts/title_screen/::1738707261
+menu_button.gd::GDScript::-1::1738707261::0::1::::TitleButton<>Button<>::
+title_screen.gd::GDScript::-1::1738707261::0::1::::TitleScreen<>Control<>::
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
diff --git a/.godot/editor/filesystem_update4 b/.godot/editor/filesystem_update4
index 5d459476d739d18a2001e5ea7f40946e688e67a8..b147ad721715c6832253802169cb639c235e9bc9 100644
--- a/.godot/editor/filesystem_update4
+++ b/.godot/editor/filesystem_update4
@@ -1,9 +1,33 @@
+<<<<<<< HEAD
+=======
+res://scripts/Shop.gd
+res://scripts/Pawn.gd
+res://scripts/Rook.gd
+res://scripts/Assassin.gd
+res://scripts/Bishop.gd
+res://scripts/King.gd
+res://scripts/Knight.gd
+res://scripts/Mage.gd
+res://scripts/Queen.gd
+res://scripts/Wizard.gd
+res://scripts/game.gd
+res://scripts/Piece.gd
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 res://scenes/game.tscn
 res://assets/shaders/bg.gdshader
 res://assets/noise/noise.tres
 res://assets/noise/noise2.tres
 res://assets/noise/noise3.tres
+<<<<<<< HEAD
 res://scripts/screens/select_piece_screen.gd
 res://main.tscn
 res://scenes/screens/title_screen.tscn
 res://scenes/screens/select_piece_screen.tscn
+=======
+res://main.tscn
+res://scenes/Shop.tscn
+res://scenes/ShopItem.tscn
+res://scenes/Pawn.tscn
+res://scenes/Rook.tscn
+res://scripts/Upgrade.gd
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
diff --git a/.godot/editor/game.tscn-editstate-c2a7af834e91ff64325daddf58e45dc0.cfg b/.godot/editor/game.tscn-editstate-c2a7af834e91ff64325daddf58e45dc0.cfg
index 17d58d5b59c20b6d688dbb9cf1e54058bec0b710..801403a45fec410c14edce6cb84864524a5d912a 100644
--- a/.godot/editor/game.tscn-editstate-c2a7af834e91ff64325daddf58e45dc0.cfg
+++ b/.godot/editor/game.tscn-editstate-c2a7af834e91ff64325daddf58e45dc0.cfg
@@ -8,7 +8,11 @@ Anim={
 "grid_snap_active": false,
 "grid_step": Vector2(8, 8),
 "grid_visibility": 1,
+<<<<<<< HEAD
 "ofs": Vector2(-154.44, -536.043),
+=======
+"ofs": Vector2(-390.56, -393.586),
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 "primary_grid_step": Vector2i(8, 8),
 "show_group_gizmos": true,
 "show_guides": true,
@@ -34,7 +38,7 @@ Anim={
 "snap_rotation_step": 0.261799,
 "snap_scale": false,
 "snap_scale_step": 0.1,
-"zoom": 0.471937
+"zoom": 0.629961
 }
 3D={
 "fov": 70.01,
@@ -175,4 +179,8 @@ Anim={
 "zfar": 4000.01,
 "znear": 0.05
 }
+<<<<<<< HEAD
 selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@16886/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@PanelContainer@98/MainScreen/@CanvasItemEditor@9272/@VSplitContainer@9094/@HSplitContainer@9096/@HSplitContainer@9098/@Control@9099/@SubViewportContainer@9100/@SubViewport@9101/Main")])
+=======
+selected_nodes=Array[NodePath]([])
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
diff --git a/.godot/editor/game.tscn-folding-c2a7af834e91ff64325daddf58e45dc0.cfg b/.godot/editor/game.tscn-folding-c2a7af834e91ff64325daddf58e45dc0.cfg
index 07cfab693d5e7f555cd205d58148529c48f55cdc..c74d2ef9258cb8399318e8de190e9e8918470cc1 100644
--- a/.godot/editor/game.tscn-folding-c2a7af834e91ff64325daddf58e45dc0.cfg
+++ b/.godot/editor/game.tscn-folding-c2a7af834e91ff64325daddf58e45dc0.cfg
@@ -1,5 +1,5 @@
 [folding]
 
-node_unfolds=[NodePath("."), PackedStringArray("opponent_shader", "Editor Description"), NodePath("ShadowContainer"), PackedStringArray("Ordering"), NodePath("TileContainer"), PackedStringArray("Transform", "Ordering"), NodePath("PieceContainer"), PackedStringArray("Ordering", "Process", "Texture"), NodePath("Background"), PackedStringArray("Layout", "material", "Ordering", "Layout/Transform", "Layout/Grow Direction", "Layout/Container Sizing", "Layout/Anchor Points", "Layout/Anchor Offsets", "Texture"), NodePath("Explosion"), PackedStringArray("Ordering", "Transform", "Scale", "Time"), NodePath("PlayerPieces"), PackedStringArray("Transform"), NodePath("OpponentPieces"), PackedStringArray("Visibility", "Transform")]
+node_unfolds=[NodePath("."), PackedStringArray("opponent_shader", "Editor Description"), NodePath("ShadowContainer"), PackedStringArray("Ordering"), NodePath("TileContainer"), PackedStringArray("Transform", "Ordering"), NodePath("PieceContainer"), PackedStringArray("Ordering", "Process", "Texture"), NodePath("Background"), PackedStringArray("Layout", "material", "Ordering", "Layout/Transform", "Layout/Grow Direction", "Layout/Container Sizing", "Layout/Anchor Points", "Layout/Anchor Offsets", "Texture"), NodePath("Explosion"), PackedStringArray("Ordering", "Transform", "Scale", "Time"), NodePath("PlayerPieces"), PackedStringArray("Transform"), NodePath("OpponentPieces"), PackedStringArray("Visibility", "Transform"), NodePath("GoldDisplay"), PackedStringArray("Theme Overrides", "Theme Overrides/fonts", "Theme Overrides/font_sizes")]
 resource_unfolds=["res://scenes/game.tscn::ShaderMaterial_gdbwp", PackedStringArray("Shader Parameters", "Resource")]
 nodes_folded=[]
diff --git a/.godot/editor/main.tscn-editstate-3070c538c03ee49b7677ff960a3f5195.cfg b/.godot/editor/main.tscn-editstate-3070c538c03ee49b7677ff960a3f5195.cfg
index 2afe81466a47b13d5f8bbf89b7ad6036505f7474..fc5eec61ffc881fb32bff37def19bdaf093fb1b3 100644
--- a/.godot/editor/main.tscn-editstate-3070c538c03ee49b7677ff960a3f5195.cfg
+++ b/.godot/editor/main.tscn-editstate-3070c538c03ee49b7677ff960a3f5195.cfg
@@ -175,4 +175,8 @@ Anim={
 "zfar": 4000.01,
 "znear": 0.05
 }
+<<<<<<< HEAD
 selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@16886/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@PanelContainer@98/MainScreen/@CanvasItemEditor@9272/@VSplitContainer@9094/@HSplitContainer@9096/@HSplitContainer@9098/@Control@9099/@SubViewportContainer@9100/@SubViewport@9101/Main")])
+=======
+selected_nodes=Array[NodePath]([])
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
diff --git a/.godot/editor/project_metadata.cfg b/.godot/editor/project_metadata.cfg
index 592403fb9bc4da2fa9e548aed3e467aa8ad9f28b..f594b9b40c6215feb070286ccb951fae87372d8f 100644
--- a/.godot/editor/project_metadata.cfg
+++ b/.godot/editor/project_metadata.cfg
@@ -1,11 +1,16 @@
 [editor_metadata]
 
+<<<<<<< HEAD
 executable_path="D:/SteamLibrary/steamapps/common/Godot Engine/godot.windows.opt.tools.64.exe"
+=======
+executable_path="c:/Users/Alan/Downloads/Godot_v4.3-stable_win64.exe/Godot_v4.3-stable_win64.exe"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 use_advanced_connections=false
 
 [dialog_bounds]
 
 <<<<<<<HEADcreate_new_node=Rect2(2145, 197, 900, 700)
+<<<<<<< HEAD
 <<<<<<<HEAD<<<<<<<HEADproject_settings=Rect2(1290, 76, 1590, 867)
 create_new_node=Rect2(2379, 158, 1118, 721)
 project_settings=Rect2(2280, 190, 1200, 700)
@@ -14,6 +19,15 @@ project_settings=Rect2(2280, 190, 1200, 700)
 
 scenes=["res://scenes/screens/select_piece_screen.tscn", "res://scenes/screens/title_screen.tscn", "res://main.tscn", "res://scenes/game.tscn", "res://scenes/Wizard.tscn", "res://scenes/Rook.tscn", "res://scenes/Queen.tscn", "res://scenes/Pawn.tscn", "res://scenes/Mage.tscn", "res://scenes/Knight.tscn"]
 scripts=["res://scripts/run_data/run_data.gd", "res://scripts/screens/select_piece_screen.gd", "res://scripts/screens/title_screen.gd", "res://scripts/main/main.gd", "res://scripts/game.gd", "res://scripts/Wizard.gd", "res://scripts/Queen.gd", "res://scripts/Pawn.gd", "res://scripts/Mage.gd", "res://scripts/Knight.gd"]
+=======
+project_settings=Rect2(2022, 76, 1590, 867)
+create_new_node=Rect2(2430, 190, 900, 700)
+
+[recent_files]
+
+scenes=["res://scenes/Rook.tscn", "res://scenes/Pawn.tscn", "res://scenes/ShopItem.tscn", "res://scenes/Shop.tscn", "res://main.tscn", "res://scenes/game.tscn", "res://scenes/Queen.tscn", "res://Shop.tscn"]
+scripts=["res://scripts/Rook.gd", "res://scripts/Pawn.gd", "res://scripts/Queen.gd", "res://scenes/shop_item.gd", "res://scripts/scene_manager.gd", "res://scripts/game.gd", "res://Shop.gd", "res://README.md"]
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 
 [script_setup]
 
@@ -22,5 +36,9 @@ last_selected_language="GDScript"
 [color_picker]
 
 picker_shape=3
+<<<<<<< HEAD
 recent_presets=PackedColorArray(1, 1, 1, 1, 1.01, 1, 1, 1, 0.5, 1, 1, 1, 0.5, 0.5, 1, 1, 0.5, 0.5, 0.5, 1)
 color_mode=2
+=======
+recent_presets=PackedColorArray(0, 1, 0, 0.156863, 1, 1, 0, 0.156863, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0.027451, 0, 0, 0, 0.686275)
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
diff --git a/.godot/editor/recent_dirs b/.godot/editor/recent_dirs
index 88ff89ed7906d94f3ca0d1cef43c1859ee842e61..489f2a757d473316d4afc5e8381e45eb1ccbe9a1 100644
--- a/.godot/editor/recent_dirs
+++ b/.godot/editor/recent_dirs
@@ -9,7 +9,7 @@ res://scripts/ui
 res://scenes/ui
 res://scripts
 res://scenes
+res://
 res://assets/sprites
 res://assets/ui/title_screen
 res://assets/shaders
-res://
diff --git a/.godot/editor/script_editor_cache.cfg b/.godot/editor/script_editor_cache.cfg
index 0c10956f198ca13dd6a16e64e602b0b2e3796ee5..1c7a50da103c9020fa9cc7532cc024ae8ac3f8d8 100644
--- a/.godot/editor/script_editor_cache.cfg
+++ b/.godot/editor/script_editor_cache.cfg
@@ -1,18 +1,44 @@
+[res://README.md]
+
+state={
+"bookmarks": PackedInt32Array(),
+"breakpoints": PackedInt32Array(),
+"column": 74,
+"folded_lines": Array[int]([]),
+"h_scroll_position": 0,
+"row": 12,
+"scroll_position": 0.0,
+"selection": false,
+"syntax_highlighter": "Plain Text"
+}
+
 [res://scripts/game.gd]
 
 state={
 "bookmarks": PackedInt32Array(),
 "breakpoints": PackedInt32Array(),
+<<<<<<< HEAD
 "column": 0,
 "folded_lines": Array[int]([]),
 "h_scroll_position": 0,
 "row": 0,
 "scroll_position": 0.0,
+=======
+"column": 20,
+"folded_lines": Array[int]([]),
+"h_scroll_position": 0,
+"row": 428,
+"scroll_position": 421.0,
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 "selection": false,
 "syntax_highlighter": "GDScript"
 }
 
+<<<<<<< HEAD
 [res://scripts/main/main.gd]
+=======
+[res://scripts/Shop.gd]
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 
 state={
 "bookmarks": PackedInt32Array(),
@@ -20,13 +46,21 @@ state={
 "column": 0,
 "folded_lines": Array[int]([]),
 "h_scroll_position": 0,
+<<<<<<< HEAD
 "row": 8,
 "scroll_position": 0.0,
+=======
+"row": 108,
+"scroll_position": 105.0,
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 "selection": false,
 "syntax_highlighter": "GDScript"
 }
 
+<<<<<<< HEAD
 [res://scripts/screens/title_screen.gd]
+=======
+[res://scripts/scene_manager.gd]
 
 state={
 "bookmarks": PackedInt32Array(),
@@ -34,36 +68,89 @@ state={
 "column": 0,
 "folded_lines": Array[int]([]),
 "h_scroll_position": 0,
-"row": 0,
+"row": 24,
+"scroll_position": 2.0,
+"selection": false,
+"syntax_highlighter": "GDScript"
+}
+
+[res://scenes/shop_item.gd]
+
+state={
+"bookmarks": PackedInt32Array(),
+"breakpoints": PackedInt32Array(),
+"column": 31,
+"folded_lines": Array[int]([]),
+"h_scroll_position": 0,
+"row": 3,
+"scroll_position": 3.0,
+"selection": false,
+"syntax_highlighter": "GDScript"
+}
+
+[res://scripts/Queen.gd]
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
+
+state={
+"bookmarks": PackedInt32Array(),
+"breakpoints": PackedInt32Array(),
+"column": 0,
+"folded_lines": Array[int]([]),
+"h_scroll_position": 0,
+"row": 13,
 "scroll_position": 0.0,
 "selection": false,
 "syntax_highlighter": "GDScript"
 }
 
+<<<<<<< HEAD
 [res://scripts/screens/select_piece_screen.gd]
+=======
+[res://scripts/Pawn.gd]
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 
 state={
 "bookmarks": PackedInt32Array(),
 "breakpoints": PackedInt32Array(),
+<<<<<<< HEAD
 "column": 1,
 "folded_lines": Array[int]([]),
 "h_scroll_position": 0,
 "row": 27,
 "scroll_position": 9.0,
+=======
+"column": 23,
+"folded_lines": Array[int]([]),
+"h_scroll_position": 0,
+"row": 50,
+"scroll_position": 38.0,
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 "selection": false,
 "syntax_highlighter": "GDScript"
 }
 
+<<<<<<< HEAD
 [res://scripts/run_data/run_data.gd]
+=======
+[res://scripts/Rook.gd]
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 
 state={
 "bookmarks": PackedInt32Array(),
 "breakpoints": PackedInt32Array(),
+<<<<<<< HEAD
 "column": 1,
 "folded_lines": Array[int]([]),
 "h_scroll_position": 0,
 "row": 28,
 "scroll_position": 10.0,
+=======
+"column": 3,
+"folded_lines": Array[int]([]),
+"h_scroll_position": 0,
+"row": 66,
+"scroll_position": 56.0,
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 "selection": false,
 "syntax_highlighter": "GDScript"
 }
diff --git a/.godot/global_script_class_cache.cfg b/.godot/global_script_class_cache.cfg
index 0baf76cfef5ad0015e277b24efb239104fb0d7a1..0bbe3f173b32134694e7a1486ff7d628306d4446 100644
--- a/.godot/global_script_class_cache.cfg
+++ b/.godot/global_script_class_cache.cfg
@@ -53,12 +53,15 @@ list=Array[Dictionary]([{
 "language": &"GDScript",
 "path": "res://scripts/Rook.gd"
 }, {
+<<<<<<< HEAD
 "base": &"Control",
 "class": &"SelectPieceScreen",
 "icon": "",
 "language": &"GDScript",
 "path": "res://scripts/screens/select_piece_screen.gd"
 }, {
+=======
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 "base": &"Button",
 "class": &"TitleButton",
 "icon": "",
@@ -69,7 +72,11 @@ list=Array[Dictionary]([{
 "class": &"TitleScreen",
 "icon": "",
 "language": &"GDScript",
+<<<<<<< HEAD
 "path": "res://scripts/screens/title_screen.gd"
+=======
+"path": "res://scripts/title_screen/title_screen.gd"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 }, {
 "base": &"Piece",
 "class": &"Wizard",
diff --git a/Assets/Resized Chess Piece Assets/Black_Assassin.png.import b/Assets/Resized Chess Piece Assets/Black_Assassin.png.import
index 4c3f528e94df5be4f5123acd4d281b70fbfdeff8..48e61efc471d45edb9fce7cdb7aeb3aba5f377a5 100644
--- a/Assets/Resized Chess Piece Assets/Black_Assassin.png.import	
+++ b/Assets/Resized Chess Piece Assets/Black_Assassin.png.import	
@@ -2,7 +2,11 @@
 
 importer="texture"
 type="CompressedTexture2D"
+<<<<<<< HEAD
 uid="uid://b5eea22pnojum"
+=======
+uid="uid://cjc7sh4hfoqt3"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 path="res://.godot/imported/Black_Assassin.png-9779f11d14d3617e840d68f6a9ebb5d0.ctex"
 metadata={
 "vram_texture": false
diff --git a/Assets/Resized Chess Piece Assets/Black_Bishop.png.import b/Assets/Resized Chess Piece Assets/Black_Bishop.png.import
index 73ff9384d04324c20f479383566f2cf00f8628c9..682aecfc5b90b1e6bb60c3eb71a1e58ee41afd8c 100644
--- a/Assets/Resized Chess Piece Assets/Black_Bishop.png.import	
+++ b/Assets/Resized Chess Piece Assets/Black_Bishop.png.import	
@@ -2,7 +2,11 @@
 
 importer="texture"
 type="CompressedTexture2D"
+<<<<<<< HEAD
 uid="uid://qvgrpspkfjkx"
+=======
+uid="uid://cmportfufw0sc"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 path="res://.godot/imported/Black_Bishop.png-31156db37595e69ca512c38698f9a239.ctex"
 metadata={
 "vram_texture": false
diff --git a/Assets/Resized Chess Piece Assets/Black_Pawn.png.import b/Assets/Resized Chess Piece Assets/Black_Pawn.png.import
index 34cd348dea9b30b52c888148e7536c9d194bfcd8..12a5e18183958ffa21b47de54728f4423ccc2305 100644
--- a/Assets/Resized Chess Piece Assets/Black_Pawn.png.import	
+++ b/Assets/Resized Chess Piece Assets/Black_Pawn.png.import	
@@ -2,7 +2,11 @@
 
 importer="texture"
 type="CompressedTexture2D"
+<<<<<<< HEAD
 uid="uid://du3qov0piv4ty"
+=======
+uid="uid://ccqn4arw41esa"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 path="res://.godot/imported/Black_Pawn.png-c1035123434d941739e8a31659fe845d.ctex"
 metadata={
 "vram_texture": false
diff --git a/Assets/Resized Chess Piece Assets/Black_Queen.png.import b/Assets/Resized Chess Piece Assets/Black_Queen.png.import
index 4ca688a0f5eed1cb2e524025771bde356eb950a8..c66f4702a2af820b5bc7d7cc0d54949241ac2849 100644
--- a/Assets/Resized Chess Piece Assets/Black_Queen.png.import	
+++ b/Assets/Resized Chess Piece Assets/Black_Queen.png.import	
@@ -2,7 +2,11 @@
 
 importer="texture"
 type="CompressedTexture2D"
+<<<<<<< HEAD
 uid="uid://dm3h3v1vqyt2i"
+=======
+uid="uid://d13pkit0yx8w1"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 path="res://.godot/imported/Black_Queen.png-91c924908a298cebe9bc2bdd61cd1aab.ctex"
 metadata={
 "vram_texture": false
diff --git a/Assets/Resized Chess Piece Assets/Black_king.png.import b/Assets/Resized Chess Piece Assets/Black_king.png.import
index 11b20fa0afc4b6e3cc5caf446b4fb09e705e8050..2db03b144d4f7544c0cd21a93deb3d90dd443b48 100644
--- a/Assets/Resized Chess Piece Assets/Black_king.png.import	
+++ b/Assets/Resized Chess Piece Assets/Black_king.png.import	
@@ -2,7 +2,11 @@
 
 importer="texture"
 type="CompressedTexture2D"
+<<<<<<< HEAD
 uid="uid://bc5lqjmu1vqn5"
+=======
+uid="uid://bsuewqxoi3kxe"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 path="res://.godot/imported/Black_king.png-64de782c258a02d199067831bbfebfe0.ctex"
 metadata={
 "vram_texture": false
diff --git a/Assets/Resized Chess Piece Assets/Black_knight.png.import b/Assets/Resized Chess Piece Assets/Black_knight.png.import
index 38abdd04a0ab5f1938d445e1c578272e14c2d310..2351e3091fde393508527fcf1d60c83427e26b9f 100644
--- a/Assets/Resized Chess Piece Assets/Black_knight.png.import	
+++ b/Assets/Resized Chess Piece Assets/Black_knight.png.import	
@@ -2,7 +2,11 @@
 
 importer="texture"
 type="CompressedTexture2D"
+<<<<<<< HEAD
 uid="uid://br7gb46qwq8o8"
+=======
+uid="uid://bq4h60chg048p"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 path="res://.godot/imported/Black_knight.png-846a36a9b55a92a0bd2e4692a89d9222.ctex"
 metadata={
 "vram_texture": false
diff --git a/Assets/Resized Chess Piece Assets/Black_mage.png.import b/Assets/Resized Chess Piece Assets/Black_mage.png.import
index d949db9cfddc761c767aac244bbf81088447698c..040410b8002a9204a97ccecfec8c3a61409c305f 100644
--- a/Assets/Resized Chess Piece Assets/Black_mage.png.import	
+++ b/Assets/Resized Chess Piece Assets/Black_mage.png.import	
@@ -2,7 +2,11 @@
 
 importer="texture"
 type="CompressedTexture2D"
+<<<<<<< HEAD
 uid="uid://bftun7ggycvxx"
+=======
+uid="uid://bnat6bynu44je"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 path="res://.godot/imported/Black_mage.png-7a41e4577f14b778296718d2c9942c5c.ctex"
 metadata={
 "vram_texture": false
diff --git a/Assets/Resized Chess Piece Assets/Black_rook.png.import b/Assets/Resized Chess Piece Assets/Black_rook.png.import
index cc7f0288510d2d09f2d66c2abf28340b01d913b8..525e758bec3fff59c36b94c35639eb2f2fa09c30 100644
--- a/Assets/Resized Chess Piece Assets/Black_rook.png.import	
+++ b/Assets/Resized Chess Piece Assets/Black_rook.png.import	
@@ -2,7 +2,11 @@
 
 importer="texture"
 type="CompressedTexture2D"
+<<<<<<< HEAD
 uid="uid://6y2voelhmjp3"
+=======
+uid="uid://cmlbpctuqkr3u"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 path="res://.godot/imported/Black_rook.png-70e1d5eb566b78612ae78261e7f5d5a6.ctex"
 metadata={
 "vram_texture": false
diff --git a/Assets/Resized Chess Piece Assets/Black_wizard.png.import b/Assets/Resized Chess Piece Assets/Black_wizard.png.import
index a028e3da8b43e3380ed6808de9fd27050a92b6eb..c2cc68d85b07736298a5c0a55c1cd3e74ad0b8e1 100644
--- a/Assets/Resized Chess Piece Assets/Black_wizard.png.import	
+++ b/Assets/Resized Chess Piece Assets/Black_wizard.png.import	
@@ -2,7 +2,11 @@
 
 importer="texture"
 type="CompressedTexture2D"
+<<<<<<< HEAD
 uid="uid://co02l1ad5m6m3"
+=======
+uid="uid://shl6jsfvn0ta"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 path="res://.godot/imported/Black_wizard.png-cb555143bb3a98fb848f99dcfe765549.ctex"
 metadata={
 "vram_texture": false
diff --git a/Assets/Resized Chess Piece Assets/White_Assassin.png.import b/Assets/Resized Chess Piece Assets/White_Assassin.png.import
index 61493962930e621957077094a9c7e954d1364928..1a7be15370c8f940bcc433a2d4bd8454d46c9036 100644
--- a/Assets/Resized Chess Piece Assets/White_Assassin.png.import	
+++ b/Assets/Resized Chess Piece Assets/White_Assassin.png.import	
@@ -2,7 +2,11 @@
 
 importer="texture"
 type="CompressedTexture2D"
+<<<<<<< HEAD
 uid="uid://ey700p2jk0cp"
+=======
+uid="uid://j8hhxry8f0ii"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 path="res://.godot/imported/White_Assassin.png-07ca33a1945b47ebea515fea105e20ee.ctex"
 metadata={
 "vram_texture": false
diff --git a/Assets/Resized Chess Piece Assets/White_Bishop.png.import b/Assets/Resized Chess Piece Assets/White_Bishop.png.import
index 56843c8bace7bfc0c30b517ba6ce77273796c6d4..01634250e5a54d893513d69a97e7f160530e3bac 100644
--- a/Assets/Resized Chess Piece Assets/White_Bishop.png.import	
+++ b/Assets/Resized Chess Piece Assets/White_Bishop.png.import	
@@ -2,7 +2,11 @@
 
 importer="texture"
 type="CompressedTexture2D"
+<<<<<<< HEAD
 uid="uid://c0dh7cb0fl2vj"
+=======
+uid="uid://buolh1uof3bbc"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 path="res://.godot/imported/White_Bishop.png-955d7c5de349d5f940adee703d5f794f.ctex"
 metadata={
 "vram_texture": false
diff --git a/Assets/Resized Chess Piece Assets/White_Pawn.png.import b/Assets/Resized Chess Piece Assets/White_Pawn.png.import
index 30de98ec9cd4bb2db6f5ae6cdd2a3c46fe7985af..a27db3dc9a8b18dbcde3877c6cedf07a2730dc54 100644
--- a/Assets/Resized Chess Piece Assets/White_Pawn.png.import	
+++ b/Assets/Resized Chess Piece Assets/White_Pawn.png.import	
@@ -2,7 +2,11 @@
 
 importer="texture"
 type="CompressedTexture2D"
+<<<<<<< HEAD
 uid="uid://bddktir7e8ma0"
+=======
+uid="uid://ndi1e8thkonq"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 path="res://.godot/imported/White_Pawn.png-a927ba07461adabe83c8ff13a8982486.ctex"
 metadata={
 "vram_texture": false
diff --git a/Assets/Resized Chess Piece Assets/White_Queen.png.import b/Assets/Resized Chess Piece Assets/White_Queen.png.import
index b1fbff2f7cd64c302f8e94e6864ee7b4b36a50c9..513c8caa79202a846ef75bdfeed9f972d2034ac7 100644
--- a/Assets/Resized Chess Piece Assets/White_Queen.png.import	
+++ b/Assets/Resized Chess Piece Assets/White_Queen.png.import	
@@ -2,7 +2,11 @@
 
 importer="texture"
 type="CompressedTexture2D"
+<<<<<<< HEAD
 uid="uid://blvoao6ufiaa0"
+=======
+uid="uid://cb3vq168iyomb"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 path="res://.godot/imported/White_Queen.png-a669898b0c5a31bf072c0c8c1df1616f.ctex"
 metadata={
 "vram_texture": false
diff --git a/Assets/Resized Chess Piece Assets/White_king.png.import b/Assets/Resized Chess Piece Assets/White_king.png.import
index 1c6541e98d28b1729af86a8aa2ca88d8536f6edd..c9ea3bf4ca3a889fdd6068d564d57bfcde8e5a14 100644
--- a/Assets/Resized Chess Piece Assets/White_king.png.import	
+++ b/Assets/Resized Chess Piece Assets/White_king.png.import	
@@ -2,7 +2,11 @@
 
 importer="texture"
 type="CompressedTexture2D"
+<<<<<<< HEAD
 uid="uid://cccyhkvxdy7fr"
+=======
+uid="uid://cdogixbq8ay3t"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 path="res://.godot/imported/White_king.png-0d53fbc8f540b7f9892862e16f4557f5.ctex"
 metadata={
 "vram_texture": false
diff --git a/Assets/Resized Chess Piece Assets/White_knight.png.import b/Assets/Resized Chess Piece Assets/White_knight.png.import
index 3e6b729608e857dab01df0021345052a4ed66f47..03de5b6ef1933c03d6774692dc0a9b815829f295 100644
--- a/Assets/Resized Chess Piece Assets/White_knight.png.import	
+++ b/Assets/Resized Chess Piece Assets/White_knight.png.import	
@@ -2,7 +2,11 @@
 
 importer="texture"
 type="CompressedTexture2D"
+<<<<<<< HEAD
 uid="uid://dp7u64gmitb2q"
+=======
+uid="uid://mf4a3jclbwih"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 path="res://.godot/imported/White_knight.png-af5b60f24c1f66b5bac879aef8e75467.ctex"
 metadata={
 "vram_texture": false
diff --git a/Assets/Resized Chess Piece Assets/White_mage.png.import b/Assets/Resized Chess Piece Assets/White_mage.png.import
index dcf3e037a6a11924ffc31cdfb2f72705ecfe8fbb..00f6044f421356e82d98231bea5fe628a3ffa2f3 100644
--- a/Assets/Resized Chess Piece Assets/White_mage.png.import	
+++ b/Assets/Resized Chess Piece Assets/White_mage.png.import	
@@ -2,7 +2,11 @@
 
 importer="texture"
 type="CompressedTexture2D"
+<<<<<<< HEAD
 uid="uid://u4byh7mw2s04"
+=======
+uid="uid://dbrrvccmlyblq"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 path="res://.godot/imported/White_mage.png-13bf07fba853ef5731085aacccb3bab2.ctex"
 metadata={
 "vram_texture": false
diff --git a/Assets/Resized Chess Piece Assets/White_rook.png.import b/Assets/Resized Chess Piece Assets/White_rook.png.import
index 8a5e4b89b064f0f75a734ba9b0c9fc8c6eb22c43..dc1d3cb89ab7402072323f6db9097ea84200924b 100644
--- a/Assets/Resized Chess Piece Assets/White_rook.png.import	
+++ b/Assets/Resized Chess Piece Assets/White_rook.png.import	
@@ -2,7 +2,11 @@
 
 importer="texture"
 type="CompressedTexture2D"
+<<<<<<< HEAD
 uid="uid://cmndtavkx0ln6"
+=======
+uid="uid://b00wxxfjk04ke"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 path="res://.godot/imported/White_rook.png-e5e1a20ca93a0594be5d3fb1267367d2.ctex"
 metadata={
 "vram_texture": false
diff --git a/Assets/Resized Chess Piece Assets/White_wizard.png.import b/Assets/Resized Chess Piece Assets/White_wizard.png.import
index 6a1016e178cef669addc1bdb988ed05794e6ecf2..5b4916b67fe5c3adefc881f144a421d5a572931c 100644
--- a/Assets/Resized Chess Piece Assets/White_wizard.png.import	
+++ b/Assets/Resized Chess Piece Assets/White_wizard.png.import	
@@ -2,7 +2,11 @@
 
 importer="texture"
 type="CompressedTexture2D"
+<<<<<<< HEAD
 uid="uid://cob1bhgcs0ltp"
+=======
+uid="uid://dwo5k5y02pe46"
+>>>>>>> 18f4858a48174eab79d786f74b3431490630d117
 path="res://.godot/imported/White_wizard.png-c84194d9805542fd48d5428ec5a721ef.ctex"
 metadata={
 "vram_texture": false
diff --git a/project.godot b/project.godot
index 139b70bab2d6e15e69f7578cca1953a642d21f84..9bd124c4793c3f9998e99070492f8644acb0a2bb 100644
--- a/project.godot
+++ b/project.godot
@@ -11,7 +11,7 @@ config_version=5
 [application]
 
 config/name="Go Save The King"
-run/main_scene="res://scenes/game.tscn"
+run/main_scene="res://main.tscn"
 config/features=PackedStringArray("4.3", "GL Compatibility")
 config/icon="res://icon.svg"
 
@@ -25,6 +25,10 @@ window/size/viewport_width=1280
 window/size/viewport_height=675
 window/stretch/mode="viewport"
 
+[gui]
+
+theme/default_font_multichannel_signed_distance_field=true
+
 [rendering]
 
 textures/canvas_textures/default_texture_filter=0
diff --git a/scenes/Pawn.tscn b/scenes/Pawn.tscn
index daad364979720b220eacc25c05f471a44237d5e8..3269894e512b0820fd89c45f99bd730743804e0e 100644
--- a/scenes/Pawn.tscn
+++ b/scenes/Pawn.tscn
@@ -3,7 +3,7 @@
 [ext_resource type="Script" path="res://scripts/Pawn.gd" id="1_7blqs"]
 [ext_resource type="Texture2D" uid="uid://w04xn5hy44qq" path="res://Assets/Resized Chess Piece Assets/White_Pawn.png" id="2_sw0f1"]
 
-[node name="Node2D" type="Node2D"]
+[node name="Pawn" type="Node2D"]
 script = ExtResource("1_7blqs")
 
 [node name="Sprite2D" type="Sprite2D" parent="."]
diff --git a/scenes/Rook.tscn b/scenes/Rook.tscn
index 76dade3797c0f42946974cade8a3ea9d8722e0f4..8e73929433d3d4cfaab41b78a3f1cdd00fd27ae2 100644
--- a/scenes/Rook.tscn
+++ b/scenes/Rook.tscn
@@ -1,8 +1,10 @@
-[gd_scene load_steps=2 format=3 uid="uid://d3sln563mnusy"]
+[gd_scene load_steps=3 format=3 uid="uid://d3sln563mnusy"]
 
+[ext_resource type="Script" path="res://scripts/Rook.gd" id="1_monmv"]
 [ext_resource type="Texture2D" uid="uid://b00wxxfjk04ke" path="res://assets/Resized Chess Piece Assets/White_rook.png" id="1_tvbmm"]
 
 [node name="Node2D" type="Node2D"]
+script = ExtResource("1_monmv")
 
 [node name="Sprite2D" type="Sprite2D" parent="."]
 texture = ExtResource("1_tvbmm")
diff --git a/scenes/Shop.tscn b/scenes/Shop.tscn
new file mode 100644
index 0000000000000000000000000000000000000000..a1edae36b13581eaccda4932a397fb5bb8541332
--- /dev/null
+++ b/scenes/Shop.tscn
@@ -0,0 +1,58 @@
+[gd_scene load_steps=2 format=3 uid="uid://ct878s7wjsq77"]
+
+[ext_resource type="Script" path="res://scripts/Shop.gd" id="1_8nmap"]
+
+[node name="Shop" type="Node2D"]
+script = ExtResource("1_8nmap")
+
+[node name="MainContainer" type="MarginContainer" parent="."]
+offset_right = 180.0
+offset_bottom = 246.0
+theme_override_constants/margin_left = 0
+theme_override_constants/margin_top = 20
+theme_override_constants/margin_right = 0
+theme_override_constants/margin_bottom = 20
+
+[node name="Background" type="ColorRect" parent="MainContainer"]
+layout_mode = 2
+color = Color(1, 1, 0, 0.156863)
+
+[node name="RowsContainer" type="VBoxContainer" parent="MainContainer"]
+layout_mode = 2
+theme_override_constants/separation = 30
+
+[node name="Title" type="Label" parent="MainContainer/RowsContainer"]
+layout_mode = 2
+theme_override_font_sizes/font_size = 32
+text = "Shop"
+horizontal_alignment = 1
+
+[node name="PiecesRow" type="HBoxContainer" parent="MainContainer/RowsContainer"]
+layout_mode = 2
+theme_override_constants/separation = 20
+
+[node name="UpgradesRow" type="HBoxContainer" parent="MainContainer/RowsContainer"]
+layout_mode = 2
+theme_override_constants/separation = 20
+
+[node name="BottomSection" type="MarginContainer" parent="MainContainer/RowsContainer"]
+layout_mode = 2
+theme_override_constants/margin_left = 20
+theme_override_constants/margin_top = 20
+theme_override_constants/margin_right = 20
+theme_override_constants/margin_bottom = 20
+
+[node name="ResetShopButton" type="Button" parent="MainContainer/RowsContainer/BottomSection"]
+layout_mode = 2
+size_flags_horizontal = 0
+text = "Reset Shop
+"
+
+[node name="NextRoundButton" type="Button" parent="MainContainer/RowsContainer/BottomSection"]
+layout_mode = 2
+size_flags_horizontal = 8
+text = "Next Round
+"
+
+[connection signal="pressed" from="MainContainer/RowsContainer/BottomSection/ResetShopButton" to="." method="_on_reset_shop_button_pressed"]
+[connection signal="pressed" from="MainContainer/RowsContainer/BottomSection/NextRoundButton" to="." method="_on_next_round_button_pressed"]
diff --git a/scenes/ShopItem.tscn b/scenes/ShopItem.tscn
new file mode 100644
index 0000000000000000000000000000000000000000..7b15a77373ad37e2cf85d13e842af31c3c9f7ac2
--- /dev/null
+++ b/scenes/ShopItem.tscn
@@ -0,0 +1,58 @@
+[gd_scene load_steps=3 format=3 uid="uid://cjkxtlxn3rgo5"]
+
+[ext_resource type="Script" path="res://scenes/shop_item.gd" id="1_gxhtm"]
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_yun3n"]
+bg_color = Color(0.408717, 0.672092, 0.458479, 1)
+
+[node name="ShopItem" type="PanelContainer"]
+custom_minimum_size = Vector2(150, 220)
+offset_right = 8.0
+offset_bottom = 66.0
+theme_override_styles/panel = SubResource("StyleBoxFlat_yun3n")
+script = ExtResource("1_gxhtm")
+
+[node name="MarginContainer" type="MarginContainer" parent="."]
+layout_mode = 2
+theme_override_constants/margin_left = 10
+theme_override_constants/margin_top = 10
+theme_override_constants/margin_right = 10
+theme_override_constants/margin_bottom = 10
+
+[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
+layout_mode = 2
+
+[node name="ItemSprite" type="TextureRect" parent="MarginContainer/VBoxContainer"]
+custom_minimum_size = Vector2(64, 64)
+layout_mode = 2
+size_flags_horizontal = 4
+
+[node name="ItemName" type="Label" parent="MarginContainer/VBoxContainer"]
+layout_mode = 2
+horizontal_alignment = 1
+
+[node name="ItemPrice" type="Label" parent="MarginContainer/VBoxContainer"]
+layout_mode = 2
+horizontal_alignment = 1
+
+[node name="BuyButton" type="Button" parent="MarginContainer/VBoxContainer"]
+custom_minimum_size = Vector2(100, 40)
+layout_mode = 2
+text = "BUY"
+
+[node name="Overlay" type="ColorRect" parent="."]
+visible = false
+layout_mode = 2
+color = Color(0, 0, 0, 0.686275)
+
+[node name="SoldOutLabel" type="Label" parent="Overlay"]
+modulate = Color(1, 0, 0, 1)
+layout_mode = 2
+offset_left = 10.0
+offset_top = 176.0
+offset_right = 140.0
+offset_bottom = 210.0
+theme_override_font_sizes/font_size = 24
+text = "SOLD OUT"
+horizontal_alignment = 1
+vertical_alignment = 1
diff --git a/scenes/game.tscn b/scenes/game.tscn
index 5f027e294f8c6e5918dfdcfe49bfded4bf491463..6c13944f871c1f19453f9da8ba1cdac1f997085a 100644
--- a/scenes/game.tscn
+++ b/scenes/game.tscn
@@ -63,3 +63,28 @@ position = Vector2(100, 400)
 
 [node name="OpponentPieces" type="Node2D" parent="."]
 position = Vector2(100, 100)
+
+[node name="ShopButton" type="Button" parent="."]
+anchors_preset = 1
+anchor_left = 1.0
+anchor_right = 1.0
+offset_left = -25.0
+offset_bottom = 20.0
+grow_horizontal = 0
+size_flags_horizontal = 8
+size_flags_vertical = 0
+text = "Shop Toggle
+"
+
+[node name="GoldDisplay" type="Label" parent="."]
+anchors_preset = 1
+anchor_left = 1.0
+anchor_right = 1.0
+offset_left = -125.0
+offset_top = 36.0
+offset_right = -2.0
+offset_bottom = 103.0
+grow_horizontal = 0
+theme_override_font_sizes/font_size = 26
+
+[connection signal="pressed" from="ShopButton" to="." method="_on_shop_button_pressed"]
diff --git a/scenes/shop_item.gd b/scenes/shop_item.gd
new file mode 100644
index 0000000000000000000000000000000000000000..7048426a93ae9028742880801e5efdc45207eb68
--- /dev/null
+++ b/scenes/shop_item.gd
@@ -0,0 +1,26 @@
+extends PanelContainer
+
+func set_tier_style(tier: String):
+	var style = StyleBoxFlat.new()
+	
+	# Define tier colors
+	var tier_colors = {
+		"bronze": Color("#A56B2B"),
+		"silver": Color("#c0c0c0"),
+		"gold": Color("#D7B000")
+	}
+	
+	# Style configuration
+	style.bg_color = tier_colors[tier]
+	style.corner_radius_top_left = 8
+	style.corner_radius_top_right = 8
+	style.corner_radius_bottom_right = 8
+	style.corner_radius_bottom_left = 8
+	style.border_width_bottom = 2
+	style.border_width_top = 2
+	style.border_width_left = 2
+	style.border_width_right = 2
+	style.border_color = Color(0, 0, 0, 0.3)
+	
+	# Apply the style to THIS PanelContainer
+	self.add_theme_stylebox_override("panel", style)
diff --git a/scripts/Assassin.gd b/scripts/Assassin.gd
index cb26d07c133c03fdaff763dd483780a6f697ed38..96125cd28415ae8c4c847d545b45409dd945afd9 100644
--- a/scripts/Assassin.gd
+++ b/scripts/Assassin.gd
@@ -2,14 +2,17 @@ extends Piece
 
 class_name Assassin
 
-enum Upgrade {
-	# Add any specific upgrades for Assassin here
-}
+
+var Upgrade = preload("res://scripts/Upgrade.gd").Upgrade
 
 var board_state: Array
 
-func _init(is_white_param: bool, position_param: Vector2):
-	super._init(is_white_param, position_param)
+func _my_init(is_white_param: bool, position_param: Vector2):
+	super._my_init(is_white_param, position_param)
+
+
+func _ready():
+	capture_gold_value = 5
 
 # Capturing is handled in main game.gd
 func get_valid_moves(board: Array, pos: Vector2) -> Array[Vector2]:
diff --git a/scripts/Bishop.gd b/scripts/Bishop.gd
index 301f92b43cbfae39443e8838608fd6d3196d2c24..becb9b17f73b8df58afb930b5c2bbbbc04d5ad39 100644
--- a/scripts/Bishop.gd
+++ b/scripts/Bishop.gd
@@ -2,12 +2,15 @@ extends Piece
 
 class_name Bishop
 
-enum Upgrade {
-	MOVE_CARDINAL_ONE,
-}
 
-func _init(is_white_param: bool, position_param: Vector2):
-	super._init(is_white_param, position_param)
+var Upgrade = preload("res://scripts/Upgrade.gd").Upgrade
+
+
+func _ready():
+	capture_gold_value = 3
+
+func _my_init(is_white_param: bool, position_param: Vector2):
+	super._my_init(is_white_param, position_param)
 	# Testing upgrades
 	upgrades.append(Upgrade.MOVE_CARDINAL_ONE)
 
diff --git a/scripts/King.gd b/scripts/King.gd
index ff0f176d0eb3631d26092a2d7035ba491cd4c066..8e8b5c3069e924ab1acbbaefbf9034f8cba178a7 100644
--- a/scripts/King.gd
+++ b/scripts/King.gd
@@ -2,12 +2,15 @@ extends Piece
 
 class_name King
 
-enum Upgrade {
-	# Add any specific upgrades for King here
-}
 
-func _init(is_white_param: bool, position_param: Vector2):
-	super._init(is_white_param, position_param)
+var Upgrade = preload("res://scripts/Upgrade.gd").Upgrade
+
+
+func _ready():
+	capture_gold_value = 10
+
+func _my_init(is_white_param: bool, position_param: Vector2):
+	super._my_init(is_white_param, position_param)
 
 func get_valid_moves(board_state: Array, pos: Vector2) -> Array[Vector2]:
 	var valid_moves: Array[Vector2] = []
diff --git a/scripts/Knight.gd b/scripts/Knight.gd
index 173a6e0f442a9ecca190c9a0667a4774985e2f63..d80b69511a0b3644b4158d1cd61418cd7a447070 100644
--- a/scripts/Knight.gd
+++ b/scripts/Knight.gd
@@ -2,12 +2,14 @@ extends Piece
 
 class_name Knight
 
-enum Upgrade {
-	LONGER_L_MOVE,
-}
 
-func _init(is_white_param: bool, position_param: Vector2):
-	super._init(is_white_param, position_param)
+var Upgrade = preload("res://scripts/Upgrade.gd").Upgrade
+
+func _ready():
+	capture_gold_value = 3
+
+func _my_init(is_white_param: bool, position_param: Vector2):
+	super._my_init(is_white_param, position_param)
 	# Testing upgrades
 	#upgrades.append(Upgrade.LONGER_L_MOVE)
 
diff --git a/scripts/Mage.gd b/scripts/Mage.gd
index c862e97df6f663df745aac59548e64a7c36e9d15..a43d8cc01a034c0efdc1687da100f6fcaa1b435c 100644
--- a/scripts/Mage.gd
+++ b/scripts/Mage.gd
@@ -2,14 +2,17 @@ extends Piece
 
 class_name Mage
 
-enum Upgrade {
-	# Add any specific upgrades for Mage here
-}
+
+var Upgrade = preload("res://scripts/Upgrade.gd").Upgrade
+
+
+func _ready():
+	capture_gold_value = 6
 
 @onready var game_node = get_tree().root.get_node("Game")
 
-func _init(is_white_param: bool, position_param: Vector2):
-	super._init(is_white_param, position_param)
+func _my_init(is_white_param: bool, position_param: Vector2):
+	super._my_init(is_white_param, position_param)
 
 func get_valid_moves(board_state: Array, pos: Vector2) -> Array[Vector2]:
 	var valid_moves: Array[Vector2] = []
diff --git a/scripts/Pawn.gd b/scripts/Pawn.gd
index 8a6e6b0354aa40938e6b4f227f4bd1462ca396f3..91c6b7115544dcd37805618a195fada8c5edd2b9 100644
--- a/scripts/Pawn.gd
+++ b/scripts/Pawn.gd
@@ -4,16 +4,20 @@ class_name Pawn
 
 var Game = preload("res://scripts/game.gd")
 
-enum Upgrade { DOUBLE_MOVE, DIAGONAL_MOVE }
+var Upgrade = preload("res://scripts/Upgrade.gd").Upgrade
 
 var tile_size = 64 # Make this global?...
 @onready var opponent_shader = load("res://shaders/BlackShader.shader")
 
-func _init(is_white_param: bool, position_param: Vector2):
-	super._init(is_white_param, position_param)
+
+func _ready():
+	capture_gold_value = 1
+
+func _my_init(is_white_param: bool, position_param: Vector2):
+	super._my_init(is_white_param, position_param)
 	# Testing upgrades
-	upgrades.append(Upgrade.DOUBLE_MOVE)
-	upgrades.append(Upgrade.DIAGONAL_MOVE)
+	#upgrades.append(Upgrade.DOUBLE_MOVE)
+	#upgrades.append(Upgrade.DIAGONAL_MOVE)
 
 
 func get_valid_moves(board_state: Array, pos: Vector2) -> Array[Vector2]:
@@ -21,7 +25,6 @@ func get_valid_moves(board_state: Array, pos: Vector2) -> Array[Vector2]:
 	var x = pos.x
 	var y = pos.y
 
-	# TODO: Add En passant move
 	
 	if is_white:
 		# Check if the pawn is at the starting position
@@ -46,8 +49,8 @@ func get_valid_moves(board_state: Array, pos: Vector2) -> Array[Vector2]:
 				valid_moves.append(Vector2(x + 1, y - 1))
 
 		# Check for promotion
-		if y == 0:
-			board_state[x][y] = Queen.new(is_white, Vector2(x, y))
+		# if y == 0:
+		# 	board_state[x][y] = Queen.new(is_white, Vector2(x, y))
 
 
 
diff --git a/scripts/Piece.gd b/scripts/Piece.gd
index 2b6d30da53aaf666aad6e14b659068f77d8d4815..ebf50cc1295820e8c9f72155581435456fa76f91 100644
--- a/scripts/Piece.gd
+++ b/scripts/Piece.gd
@@ -3,15 +3,15 @@ extends Node2D
 class_name Piece
 
 # Properties
-var piece_position: Vector2
-var is_white: bool
+var piece_position: Vector2 = Vector2.ZERO
+var is_white: bool = true
 
 # Array for upgrades
 var upgrades: Array = []
-
+var capture_gold_value: int = 0
 
 # initialization method
-func _init(is_white_param: bool, piece_position_param: Vector2) -> void:
+func _my_init(is_white_param: bool, piece_position_param: Vector2) -> void:
 	self.is_white = is_white_param
 	self.piece_position = piece_position_param 
 
diff --git a/scripts/Queen.gd b/scripts/Queen.gd
index 0fce2fe3477b8b0e7fa88607ea9725e0011f0b0c..77b31f90ecefc68e5723f01b68bdba4ea9c93536 100644
--- a/scripts/Queen.gd
+++ b/scripts/Queen.gd
@@ -2,12 +2,15 @@ extends Piece
 
 class_name Queen
 
-enum Upgrade {
-	# Add any specific upgrades for Queen here
-}
 
-func _init(is_white_param: bool, position_param: Vector2):
-	super._init(is_white_param, position_param)
+var Upgrade = preload("res://scripts/Upgrade.gd").Upgrade
+
+
+func _ready():
+	capture_gold_value = 9
+
+func _my_init(is_white_param: bool, position_param: Vector2):
+	super._my_init(is_white_param, position_param)
 
 func get_valid_moves(board_state: Array, pos: Vector2) -> Array[Vector2]:
 	var valid_moves: Array[Vector2] = []
diff --git a/scripts/Rook.gd b/scripts/Rook.gd
index d90b32fd28a8601f3ac629d7b82b10c363da2d1e..bdeb58f8eb13dda137a8f4499f32122a444a0160 100644
--- a/scripts/Rook.gd
+++ b/scripts/Rook.gd
@@ -2,12 +2,14 @@ extends Piece
 
 class_name Rook
 
-enum Upgrade {
-	DIAGONAL_MOVE_ONE,
-}
 
-func _init(is_white_param: bool, position_param: Vector2):
-	super._init(is_white_param, position_param)
+var Upgrade = preload("res://scripts/Upgrade.gd").Upgrade
+
+func _ready():
+	capture_gold_value = 5
+
+func _my_init(is_white_param: bool, position_param: Vector2):
+	super._my_init(is_white_param, position_param)
 	# Testing upgrades
 	# upgrades.append(Upgrade.DIAGONAL_MOVE_ONE)
 
diff --git a/scripts/Shop.gd b/scripts/Shop.gd
new file mode 100644
index 0000000000000000000000000000000000000000..4b2acf1021a9f0f7d014988128d809fdf5a64b98
--- /dev/null
+++ b/scripts/Shop.gd
@@ -0,0 +1,175 @@
+# Shop.gd
+extends Node2D
+
+signal purchase_attempted(item_data: Dictionary, shop_item: Node)
+signal next_round_requested
+
+
+var Upgrade = preload("res://scripts/Upgrade.gd").Upgrade
+
+@onready var shop_item_scene = preload("res://scenes/ShopItem.tscn")
+
+
+var shop_items = {
+	"pieces": [
+		{"name": "Pawn", "price": 1, "tier": "bronze", "texture": "res://assets/Resized Chess Piece Assets/White_Pawn.png", "purchased": false},
+		{"name": "Rook", "price": 3, "tier": "silver", "texture": "res://assets/Resized Chess Piece Assets/White_Rook.png", "purchased": false},
+		{"name": "Bishop", "price": 3, "tier": "silver", "texture": "res://assets/Resized Chess Piece Assets/White_Bishop.png", "purchased": false},
+		{"name": "Knight", "price": 3, "tier": "silver", "texture": "res://assets/Resized Chess Piece Assets/White_Knight.png", "purchased": false},
+		{"name": "Queen", "price": 5, "tier": "gold", "texture": "res://assets/Resized Chess Piece Assets/White_Queen.png", "purchased": false}
+	],
+	"upgrades": [
+		{"name": "Double Move", "price": 3, "tier": "bronze", "texture": "res://assets/Resized Chess Piece Assets/Black_Pawn.png", "purchased": false, "piece_type": "Pawn", "upgrade_enum": Upgrade.DOUBLE_MOVE},
+		{"name": "Diagonal Move", "price": 3, "tier": "bronze", "texture": "res://assets/Resized Chess Piece Assets/Black_Rook.png", "purchased": false, "piece_type": "Rook", "upgrade_enum": Upgrade.DIAGONAL_MOVE_ONE},
+		{"name": "Vert/Hor Move", "price": 3, "tier": "bronze", "texture": "res://assets/Resized Chess Piece Assets/Black_Bishop.png", "purchased": false, "piece_type": "Bishop", "upgrade_enum": Upgrade.MOVE_CARDINAL_ONE},
+		{"name": "Diagonal Move", "price": 5, "tier": "silver", "texture": "res://assets/Resized Chess Piece Assets/Black_Pawn.png", "purchased": false, "piece_type": "Pawn", "upgrade_enum": Upgrade.DIAGONAL_MOVE},
+		{"name": "Longer L Move", "price": 5, "tier": "silver", "texture": "res://assets/Resized Chess Piece Assets/Black_Knight.png", "purchased": false, "piece_type": "Knight", "upgrade_enum": Upgrade.LONGER_L_MOVE},
+	]
+}
+
+var tier_weights = {
+	"bronze": 5,
+	"silver": 3,
+	"gold": 1
+}
+
+func _ready():
+	self.visible = false  # Start hidden
+	# Connect the reset button
+	var reset_button = $MainContainer/RowsContainer/BottomSection/ResetShopButton  # Adjust the path to your button
+	reset_button.connect("pressed", Callable(self, "_on_reset_button_pressed"))
+	populate_rows()  # Populate the shop rows
+	# self.custom_minimum_size = get_viewport_rect().size  # Fill the screen
+	
+func set_visibility(visible: bool):
+	self.visible = visible
+
+func _on_back_button_pressed():
+	get_tree().change_scene_to_file("res://Game.tscn")  # Return to game
+
+func populate_rows():
+	clear_row($MainContainer/RowsContainer/PiecesRow)
+	clear_row($MainContainer/RowsContainer/UpgradesRow)
+	
+	# Track selected upgrade types for this shop session
+	var selected_upgrade_types = []
+
+	# Add 3 random pieces
+	for i in 3:
+		var piece = select_random_item("pieces")
+		add_item_to_row(piece, $MainContainer/RowsContainer/PiecesRow)
+	
+
+	# Add 3 random upgrades (no duplicates)
+	for i in 3:
+		var upgrade = select_random_upgrade(selected_upgrade_types)
+		if !upgrade.is_empty():
+			selected_upgrade_types.append(upgrade["upgrade_enum"])
+			add_item_to_row(upgrade, $MainContainer/RowsContainer/UpgradesRow)
+
+
+func _on_reset_button_pressed():
+	# Clear existing items
+	clear_row($MainContainer/RowsContainer/PiecesRow)
+	clear_row($MainContainer/RowsContainer/UpgradesRow)
+	
+	# Repopulate the shop
+	populate_rows()
+
+func clear_row(row: HBoxContainer):
+	for child in row.get_children():
+		child.queue_free()
+
+
+func select_random_item(category: String) -> Dictionary:
+	var items = shop_items[category]
+	var total_weight = 0
+	
+	# Calculate total weight
+	for item in items:
+		total_weight += tier_weights[item["tier"]]
+	
+	# Select random item
+	var random_value = randf() * total_weight
+	var cumulative = 0.0
+	
+	for item in items:
+		cumulative += tier_weights[item["tier"]]
+		if random_value < cumulative:
+			return item.duplicate()  # Return a copy to avoid modifying original
+	
+	return items[0].duplicate()  # Fallback
+
+
+func select_random_upgrade(existing_selections: Array = []) -> Dictionary:
+	var game = get_tree().root.get_node("Main/Game")  # Access the game node
+	var items = shop_items["upgrades"]
+	
+	# Create filtered list excluding purchased and already selected upgrades
+	var filtered_items = []
+	for item in items:
+		# Check if upgrade is already purchased
+		var is_purchased = false
+		for purchased in game.purchased_upgrades:
+			if purchased["upgrade_enum"] == item["upgrade_enum"]:
+				is_purchased = true
+				break
+		
+		# Check if already selected in current shop session
+		var in_current_selection = item["upgrade_enum"] in existing_selections
+		
+		if is_purchased || in_current_selection:
+			continue
+		
+		filtered_items.append(item)
+	
+	# Calculate weights for remaining items
+	var total_weight = 0
+	for item in filtered_items:
+		total_weight += tier_weights[item["tier"]]
+	
+	if total_weight == 0:
+		return {}  # Return empty if no valid items
+	
+	# Select random item from filtered list
+	var random_value = randf() * total_weight
+	var cumulative = 0.0
+	
+	for item in filtered_items:
+		cumulative += tier_weights[item["tier"]]
+		if random_value < cumulative:
+			return item.duplicate()
+	
+	return filtered_items[0].duplicate() if !filtered_items.is_empty() else {}
+
+
+func add_item_to_row(item_data: Dictionary, row: HBoxContainer):
+	var shop_item = shop_item_scene.instantiate()
+
+	# Set the tier style FIRST
+	shop_item.set_tier_style(item_data["tier"])
+
+	shop_item.get_node("MarginContainer/VBoxContainer/ItemName").text = item_data["name"]
+	shop_item.get_node("MarginContainer/VBoxContainer/ItemPrice").text = "%dg" % item_data["price"]
+	shop_item.get_node("MarginContainer/VBoxContainer/ItemSprite").texture = load(item_data["texture"])
+
+	# Connect the BuyButton
+	var buy_button = shop_item.get_node("MarginContainer/VBoxContainer/BuyButton")
+	buy_button.connect("pressed", Callable(self, "_on_buy_button_pressed").bind(item_data, shop_item))
+
+	row.add_child(shop_item)
+
+func _on_buy_button_pressed(item_data: Dictionary, shop_item: Node):
+	if !item_data["purchased"]:
+		# print("Attempting to Purchase: ", item_data["name"])
+		# Emit signals to let Game.gd handle the purchase
+		emit_signal("purchase_attempted", item_data, shop_item)  # Emit the full item data
+		# TODO: Add a sound effect / Animation for purchasing items
+	else:
+		print("Item already purchased!")
+	
+
+func _on_next_round_button_pressed():
+	# print("Next Round button pressed!")
+	visible = false  # Hide the shop
+	emit_signal("next_round_requested")  # Notify the main game script
diff --git a/scripts/Upgrade.gd b/scripts/Upgrade.gd
new file mode 100644
index 0000000000000000000000000000000000000000..346052a2783ccfd0385b5e5470cae78ce8a3625a
--- /dev/null
+++ b/scripts/Upgrade.gd
@@ -0,0 +1,9 @@
+extends Node
+
+enum Upgrade {
+    DOUBLE_MOVE,
+    DIAGONAL_MOVE,
+    DIAGONAL_MOVE_ONE,
+    MOVE_CARDINAL_ONE,
+    LONGER_L_MOVE
+}
\ No newline at end of file
diff --git a/scripts/Wizard.gd b/scripts/Wizard.gd
index 24e694faebaf93eaebd6b888759fecbcc0a9ae0f..75f9a04bb7da718216e888a05c9a7f6ad501a67a 100644
--- a/scripts/Wizard.gd
+++ b/scripts/Wizard.gd
@@ -2,14 +2,17 @@ extends Piece
 
 class_name Wizard
 
-enum Upgrade {
-	# Add any specific upgrades for Wizard here
-}
+
+var Upgrade = preload("res://scripts/Upgrade.gd").Upgrade
+
+
+func _ready():
+	capture_gold_value = 6
 
 @onready var game_node = get_tree().root.get_node("Game")
 
-func _init(is_white_param: bool, position_param: Vector2):
-	super._init(is_white_param, position_param)
+func _my_init(is_white_param: bool, position_param: Vector2):
+	super._my_init(is_white_param, position_param)
 
 func get_valid_moves(board_state: Array, pos: Vector2) -> Array[Vector2]:
 	var valid_moves: Array[Vector2] = []
diff --git a/scripts/game.gd b/scripts/game.gd
index 681fbf1d78a4e9b7064dec88783da3a5b2d4ac99..3b49e69178ce6c609a947efe53b69f817c6a13d7 100644
--- a/scripts/game.gd
+++ b/scripts/game.gd
@@ -1,6 +1,12 @@
 extends Node
 class_name game
 
+var player_gold: int = 10
+var shop_scene = preload("res://scenes/Shop.tscn")
+var shop: Node2D
+var purchased_pieces: Array = []
+var purchased_upgrades: Array = []
+
 @export var tile_size = 64
 @export var dark = Color(0,0,0,1)
 @export var light =Color(1,1,1,1)
@@ -22,6 +28,7 @@ class_name game
 @onready var player_piece_count = 0
 @onready var opponent_pieces = $OpponentPieces
 @onready var opponent_piece_count = 0
+@onready var gold_display: Label = $GoldDisplay
 
 var selected_piece
 var selected_piece_value
@@ -41,6 +48,20 @@ var player_turn : bool = true
 
 
 func _ready() -> void:
+	shop = shop_scene.instantiate()
+	add_child(shop)
+	var viewport_size = get_viewport().get_visible_rect().size
+
+	shop.position = (viewport_size / 2) - Vector2(570, 650) / 2 # pretty much centered, not sure on the exact values / how to scale it to screen size better
+	shop.visible = false  # Start hidden
+	update_gold_display()  # Initialize gold display
+	set_gold_display_position() # Set the anchors and margins for the gold display
+	shop.purchase_attempted.connect(_on_purchase_attempted)
+	shop.next_round_requested.connect(_on_next_round_requested)
+	
+	# Connect the resize signal
+	get_viewport().connect("size_changed", Callable(self, "_on_viewport_size_changed"))
+
 	DisplayServer.window_set_min_size(Vector2(1152, 648))  # Set minimum window size
 	
 	#creates 2D array for board, with empty (null) spaces
@@ -51,25 +72,44 @@ func _ready() -> void:
 	
 	
 	#hard-coded setup of pieces
-	board[0][7] = Rook.new(true, Vector2(0, 7))
-	board[1][6] = Wizard.new(true, Vector2(0, 7))
-	board[1][7] = Bishop.new(true, Vector2(1, 7))
-	board[2][7] = King.new(true, Vector2(2, 7))
-	board[3][6] = Queen.new(true, Vector2(3, 6))
-	board[4][2] = Pawn.new(true, Vector2(4, 7))
-	board[5][7] = Knight.new(true, Vector2(5, 7))
-	board[6][7] = Assassin.new(true, Vector2(6, 7))
-	board[7][6] = Mage.new(true, Vector2(7, 6))
-	board[7][7] = Rook.new(true, Vector2(7, 7))
-
-	board[0][4] = Rook.new(false, Vector2(0, 4))
-	board[1][5] = Bishop.new(false, Vector2(1, 5))
-	board[3][2] = Queen.new(false, Vector2(3, 2))
-	board[3][5] = Pawn.new(false, Vector2(3, 5))
-	board[4][4] = Assassin.new(false, Vector2(4, 4))
-	board[3][4] = Pawn.new(false, Vector2(3, 4))
-	board[4][3] = Mage.new(false, Vector2(4, 3))
-	board[7][5] = Rook.new(false, Vector2(7, 5))
+	board[0][7] = preload("res://scenes/Rook.tscn").instantiate()
+	board[0][7]._my_init(true, Vector2(0, 7))
+
+	board[1][6] = preload("res://scenes/Wizard.tscn").instantiate()
+	board[1][6]._my_init(true, Vector2(1, 6))
+	board[1][7] = preload("res://scenes/Bishop.tscn").instantiate()
+	board[1][7]._my_init(true, Vector2(1, 7))
+	board[2][7] = preload("res://scenes/King.tscn").instantiate()
+	board[2][7]._my_init(true, Vector2(2, 7))
+	board[3][6] = preload("res://scenes/Queen.tscn").instantiate()
+	board[3][6]._my_init(true, Vector2(3, 6))
+	board[4][2] = preload("res://scenes/Pawn.tscn").instantiate()
+	board[4][2]._my_init(true, Vector2(4, 2))
+	board[7][2] = preload("res://scenes/Pawn.tscn").instantiate()
+	board[7][2]._my_init(true, Vector2(7, 2))
+	board[5][7] = preload("res://scenes/Knight.tscn").instantiate()
+	board[5][7]._my_init(true, Vector2(5, 7))
+	board[6][7] = preload("res://scenes/Assassin.tscn").instantiate()
+	board[6][7]._my_init(true, Vector2(6, 7))
+	board[7][6] = preload("res://scenes/Mage.tscn").instantiate()
+	board[7][6]._my_init(true, Vector2(7, 6))
+	board[7][7] = preload("res://scenes/Rook.tscn").instantiate()
+	board[7][7]._my_init(true, Vector2(7, 7))
+
+	board[0][4] = preload("res://scenes/Rook.tscn").instantiate()
+	board[0][4]._my_init(false, Vector2(0, 4))
+	board[1][5] = preload("res://scenes/Bishop.tscn").instantiate()
+	board[1][5]._my_init(false, Vector2(1, 5))
+	board[3][2] = preload("res://scenes/Queen.tscn").instantiate()
+	board[3][2]._my_init(false, Vector2(3, 2))
+	board[4][4] = preload("res://scenes/Assassin.tscn").instantiate()
+	board[4][4]._my_init(false, Vector2(4, 4))
+	board[3][4] = preload("res://scenes/Pawn.tscn").instantiate()
+	board[3][4]._my_init(false, Vector2(3, 4))
+	board[4][3] = preload("res://scenes/Mage.tscn").instantiate()
+	board[4][3]._my_init(false, Vector2(4, 3))
+	board[7][5] = preload("res://scenes/Rook.tscn").instantiate()
+	board[7][5]._my_init(false, Vector2(7, 5))
 	
 	#potential 'holes', not quite working yet
 	#board[3][3] = '/'
@@ -115,25 +155,24 @@ func _process(delta: float) -> void:
 			moving = false
 			unselect_piece()
 
+	# Pawn to Queen Promotion Logic
 	if selected_piece != null:
 		# If the selected piece is a pawn and it reaches the end of the board, promote it to a queen
 		if selected_piece_position.y == 0:
 			if selected_piece_value is Pawn:
-					if selected_piece_value.is_white:
-						# draw_pieces()
-						selected_piece.queue_free()
-						board[selected_piece_position.x][selected_piece_position.y] = Queen.new(true, selected_piece_position)
-						var piece_scene = preload("res://scenes/Queen.tscn")
-						var piece_instance = piece_scene.instantiate()
-						piece_instance.position = Vector2((selected_piece_position.x * tile_size) + tile_size/2.0, (selected_piece_position.y * tile_size) + tile_size/2.0)
-						piece_instance.z_index = 3
-						piece_instance.scale = Vector2(1.25, 1.25)  # Scale other pieces by 25%
-						piece_container.add_child(piece_instance)
-						explosion_effect.position = piece_instance.position + translate()
-						explosion_effect.restart()
-
-						# remove_piece(selected_piece_position.x, selected_piece_position.y)
+				if selected_piece_value.is_white:
+					# TODO: Add a check for any queen upgrades that have been purchased and apply them to the new piece.
+					selected_piece.queue_free()
+					board[selected_piece_position.x][selected_piece_position.y] = preload("res://scenes/Queen.tscn").instantiate()
+					var piece_instance = board[selected_piece_position.x][selected_piece_position.y]
+					piece_instance.position = Vector2((selected_piece_position.x * tile_size) + tile_size/2.0, (selected_piece_position.y * tile_size) + tile_size/2.0)
+					piece_instance.z_index = 3
+					piece_instance.scale = Vector2(1.25, 1.25)  # Scale other pieces by 25%
+					piece_container.add_child(piece_instance)
+					explosion_effect.position = piece_instance.position + translate()
+					explosion_effect.restart()
 
+					# remove_piece(selected_piece_position.x, selected_piece_position.y)
 
 func draw_pieces():
 	#iterate through all tiles, if tile has a piece, 
@@ -141,44 +180,21 @@ func draw_pieces():
 	for x in range(board_width):
 		for y in range(board_height):
 			if !is_empty(x, y):
-				var piece_scene
-				if board[x][y] is Pawn:
-					piece_scene = preload("res://scenes/Pawn.tscn")
-				elif board[x][y] is Rook:
-					piece_scene = preload("res://scenes/Rook.tscn")
-				elif board[x][y] is Bishop:
-					piece_scene = preload("res://scenes/Bishop.tscn")
-				elif board[x][y] is Queen:
-					piece_scene = preload("res://scenes/Queen.tscn")
-				elif board[x][y] is King:
-					piece_scene = preload("res://scenes/King.tscn")
-				elif board[x][y] is Knight:
-					piece_scene = preload("res://scenes/Knight.tscn")
-				elif board[x][y] is Assassin:
-					piece_scene = preload("res://scenes/Assassin.tscn")
-				elif board[x][y] is Mage:
-					piece_scene = preload("res://scenes/Mage.tscn")
-				elif board[x][y] is Wizard:
-					piece_scene = preload("res://scenes/Wizard.tscn")
-				
-				if piece_scene:
-					var piece_instance = piece_scene.instantiate()
-					piece_instance.position = Vector2((x * tile_size) + tile_size/2.0, (y * tile_size) + tile_size/2.0)
-					piece_instance.z_index = 3
+				board[x][y].position = Vector2((x * tile_size) + tile_size/2.0, (y * tile_size) + tile_size/2.0)
+				board[x][y].z_index = 3
 
-					# Scale the sprite by 25% for all pieces except the king
-					if board[x][y] is King:
-						piece_instance.scale = Vector2(2.0, 2.0)  # Scale the king by 50%
-					else:
-						piece_instance.scale = Vector2(1.25, 1.25)  # Scale other pieces by 25%
+				# Scale the sprite by 25% for all pieces except the king
+				if board[x][y] is King:
+					board[x][y].scale = Vector2(2.0, 2.0)  # Scale the king by 50%
+				else:
+					board[x][y].scale = Vector2(1.25, 1.25)  # Scale other pieces by 25%
 
-					# If piece is opponent, add a black shader to piece
-					if board[x][y].is_white == false:
-						var piece_sprite = piece_instance.get_node("Sprite2D") as Sprite2D
-						if piece_sprite:
-							piece_sprite.material = opponent_shader
-					
-					piece_container.add_child(piece_instance)
+				# If piece is opponent, add a black shader to piece
+				if board[x][y].is_white == false:
+					var piece_sprite = board[x][y].get_node("Sprite2D") as Sprite2D
+					if piece_sprite:
+						piece_sprite.material = opponent_shader
+				piece_container.add_child(board[x][y])
 
 
 #translates 'home' coordinates ((0,0)) to screen location 
@@ -341,7 +357,6 @@ func is_empty(x, y):
 
 func remove_piece(x,y):
 	#iterate through the pieces in piece_container, if that piece is at location x,y, remove it
-	# TODO: Fix bug with promoted Queen, when capturing other pieces, they are not visually removed.
 	for child in piece_container.get_children():
 		#translate x,y index values to screen coordinates
 		if child.position == Vector2(x*tile_size + 32, y*tile_size + 32):
@@ -354,6 +369,9 @@ func remove_piece(x,y):
 			
 			var piece = child.duplicate()
 			if is_opponent(x, y):
+				player_gold += child.capture_gold_value
+				update_gold_display()
+				
 				opponent_piece_count += 1
 				if opponent_piece_count <= 4:
 					piece.position = Vector2(opponent_piece_count - 1, 0) * tile_size
@@ -489,3 +507,96 @@ func shoot_projectile(x: int, y: int):
 	explosion_effect.restart()
 
 	# player_turn = !player_turn
+	
+	
+# Shop Stuff
+func _on_shop_button_pressed():
+	shop.visible = !shop.visible
+	update_gold_display()  # Pass current gold to shop
+	piece_container.visible = !piece_container.visible
+	shadow_container.visible = !shadow_container.visible
+	tile_container.visible = !tile_container.visible
+
+func _on_purchase_attempted(item_data: Dictionary, shop_item: Node):
+	# Check gold here where we have access to the real value
+	if player_gold >= item_data["price"]:
+		# Deduct gold and mark the item as purchased
+		player_gold -= item_data["price"]
+		item_data["purchased"] = true
+
+		
+		# Show "Sold Out" overlay and disable button
+		shop_item.get_node("Overlay/SoldOutLabel").visible = true
+		shop_item.get_node("Overlay").visible = true
+		shop_item.get_node("MarginContainer/VBoxContainer/BuyButton").disabled = true
+
+		# Creates an array of piece / upgrade names.
+		var piece_names = shop.shop_items["pieces"].map(func(item): return item["name"])
+		var upgrade_names = shop.shop_items["upgrades"].map(func(item): return item["name"])
+		
+		# checks if the purchased item’s name exists in the list of pieces or upgrades.
+		if item_data["name"] in piece_names:
+			# print("Purchased piece: ", item_data["name"])
+			purchased_pieces.append(item_data)
+		elif item_data["name"] in upgrade_names:
+			# print("Purchased upgrade: ", item_data["name"])
+			purchased_upgrades.append(item_data)
+			apply_upgrade_to_pieces(item_data)
+
+		# Update UI and print debug info
+		update_gold_display()
+	else:
+		# TODO: Play sound / animation for not enough gold
+		print("Not enough gold!")
+
+# New function to apply upgrades
+func apply_upgrade_to_pieces(upgrade_data: Dictionary):
+	var piece_type = upgrade_data["piece_type"]
+	
+	# Iterate through all pieces on the board
+	for x in range(board_width):
+		for y in range(board_height):
+			var piece = board[x][y]
+			if piece != null && piece.is_white:
+				# Check if piece matches type and doesn't already have upgrade
+				if piece is Rook && piece_type == "Rook":
+					piece.upgrades.append(upgrade_data["upgrade_enum"])
+				elif piece is Pawn && piece_type == "Pawn":
+					piece.upgrades.append(upgrade_data["upgrade_enum"])
+				elif piece is Knight && piece_type == "Knight":
+					piece.upgrades.append(upgrade_data["upgrade_enum"])
+				elif piece is Bishop && piece_type == "Bishop":
+					piece.upgrades.append(upgrade_data["upgrade_enum"])
+				elif piece is Queen && piece_type == "Queen":
+					piece.upgrades.append(upgrade_data["upgrade_enum"])
+				elif piece is King && piece_type == "King":
+					piece.upgrades.append(upgrade_data["upgrade_enum"])
+				elif piece is Mage && piece_type == "Mage":
+					piece.upgrades.append(upgrade_data["upgrade_enum"])
+				elif piece is Wizard && piece_type == "Wizard":
+					piece.upgrades.append(upgrade_data["upgrade_enum"])
+				elif piece is Assassin && piece_type == "Assassin":
+					piece.upgrades.append(upgrade_data["upgrade_enum"])
+
+func update_gold_display():
+	gold_display.text = "Gold: %d" % player_gold
+
+func _on_next_round_requested():
+	shop.visible = false  # Hide the shop
+	piece_container.visible = true  # Show the board
+	shadow_container.visible = true
+	tile_container.visible = true
+	# print("Player items in purchased_pieces: ", purchased_pieces)
+	# print("Player upgrades in purchased_upgrades: ", purchased_upgrades)
+
+func set_gold_display_position():
+	# Set anchors to a percentage of the parent container's size
+	gold_display.anchor_left = 0.2
+	gold_display.anchor_top = 0.0
+	gold_display.anchor_right = 1.0
+	gold_display.anchor_bottom = 0.1
+
+func _on_viewport_size_changed():
+	if shop:
+		var viewport_size = get_viewport().get_visible_rect().size
+		shop.position = viewport_size / 2