From 3da6f5eda3cd760d4a3979a79be47641c12f6dc4 Mon Sep 17 00:00:00 2001 From: Alan <alanjfogel@gmail.com> Date: Fri, 31 Jan 2025 19:33:33 -0600 Subject: [PATCH] Added wizard --- .godot/editor/editor_layout.cfg | 8 +- .godot/editor/filesystem_cache8 | 39 +++++---- .godot/editor/filesystem_update4 | 2 + .godot/editor/project_metadata.cfg | 4 +- .godot/editor/script_editor_cache.cfg | 16 +++- .godot/global_script_class_cache.cfg | 6 ++ .godot/uid_cache.bin | Bin 3311 -> 3394 bytes Assets/temp_assets/wizard.png | Bin 0 -> 268 bytes Assets/temp_assets/wizard.png.import | 34 ++++++++ scenes/Wizard.tscn | 10 +++ scripts/Wizard.gd | 119 ++++++++++++++++++++++++++ scripts/game.gd | 9 +- 12 files changed, 219 insertions(+), 28 deletions(-) create mode 100644 Assets/temp_assets/wizard.png create mode 100644 Assets/temp_assets/wizard.png.import create mode 100644 scenes/Wizard.tscn create mode 100644 scripts/Wizard.gd diff --git a/.godot/editor/editor_layout.cfg b/.godot/editor/editor_layout.cfg index fd86f4d..72202bd 100644 --- a/.godot/editor/editor_layout.cfg +++ b/.godot/editor/editor_layout.cfg @@ -25,8 +25,8 @@ dock_5="Inspector,Node,History" [EditorNode] -open_scenes=PackedStringArray("res://scenes/game.tscn", "res://scenes/explosion.tscn", "res://scenes/Pawn.tscn", "res://scenes/Rook.tscn", "res://scenes/Bishop.tscn", "res://scenes/Queen.tscn", "res://scenes/King.tscn", "res://scenes/Knight.tscn", "res://scenes/Assassin.tscn", "res://scenes/Mage.tscn") -current_scene="res://scenes/Mage.tscn" +open_scenes=PackedStringArray("res://scenes/game.tscn", "res://scenes/explosion.tscn", "res://scenes/Pawn.tscn", "res://scenes/Rook.tscn", "res://scenes/Bishop.tscn", "res://scenes/Queen.tscn", "res://scenes/King.tscn", "res://scenes/Knight.tscn", "res://scenes/Assassin.tscn", "res://scenes/Mage.tscn", "res://scenes/Wizard.tscn") +current_scene="res://scenes/Wizard.tscn" center_split_offset=-255 selected_default_debugger_tab_idx=0 selected_main_editor_idx=2 @@ -34,8 +34,8 @@ selected_bottom_panel_item=0 [ScriptEditor] -open_scripts=["res://scripts/Assassin.gd", "res://scripts/Bishop.gd", "res://scripts/game.gd", "res://scripts/King.gd", "res://scripts/Knight.gd", "res://scripts/Mage.gd", "res://scripts/Pawn.gd", "res://scripts/Piece.gd", "res://scripts/Queen.gd", "res://scripts/Rook.gd"] -selected_script="res://scripts/Mage.gd" +open_scripts=["res://scripts/Assassin.gd", "res://scripts/Bishop.gd", "res://scripts/game.gd", "res://scripts/King.gd", "res://scripts/Knight.gd", "res://scripts/Mage.gd", "res://scripts/Pawn.gd", "res://scripts/Piece.gd", "res://scripts/Queen.gd", "res://scripts/Rook.gd", "res://scripts/Wizard.gd"] +selected_script="res://scripts/Wizard.gd" open_help=[] script_split_offset=70 list_split_offset=0 diff --git a/.godot/editor/filesystem_cache8 b/.godot/editor/filesystem_cache8 index f888296..77cd5cc 100644 --- a/.godot/editor/filesystem_cache8 +++ b/.godot/editor/filesystem_cache8 @@ -30,17 +30,17 @@ White_knight.png::CompressedTexture2D::854350289879594279::1738358720::173836019 White_Pawn.png::CompressedTexture2D::919180529085242722::1738358720::1738360196::1::::<><>:: White_Queen.png::CompressedTexture2D::4902137832695542513::1738358720::1738360196::1::::<><>:: White_rook.png::CompressedTexture2D::4194129281780453908::1738358720::1738360196::1::::<><>:: -::res://assets/shaders/::1738366873 -bg.gdshader::Shader::-1::1738366873::0::1::::<><>:: -color.gdshader::Shader::-1::1738366873::0::1::::<><>:: -shadow.gdshader::Shader::-1::1738366873::0::1::::<><>:: +::res://assets/shaders/::1738373236 +bg.gdshader::Shader::-1::1738373236::0::1::::<><>:: +color.gdshader::Shader::-1::1738373236::0::1::::<><>:: +shadow.gdshader::Shader::-1::1738373236::0::1::::<><>:: ::res://assets/sprites/::1738360196 bishop.png::CompressedTexture2D::4631301773944929250::1738358798::1738360196::1::::<><>:: knight.png::CompressedTexture2D::3545640967717948854::1738358798::1738360196::1::::<><>:: pawn.png::CompressedTexture2D::1338760335342038528::1738358798::1738360195::1::::<><>:: rook.png::CompressedTexture2D::6790909281007670776::1738358798::1738360195::1::::<><>:: tile.png::CompressedTexture2D::8704336058451696509::1738358570::1738360195::1::::<><>:: -::res://assets/temp_assets/::1738367404 +::res://assets/temp_assets/::1738373277 assassin.png::CompressedTexture2D::2309680507621369322::1738360966::1738361001::1::::<><>:: black_bishop.png::CompressedTexture2D::7509881182472568151::1738358720::1738360195::1::::<><>:: black_king.png::CompressedTexture2D::3646032776351028361::1738358720::1738360195::1::::<><>:: @@ -59,23 +59,25 @@ white_knight.png::CompressedTexture2D::7533630084821562912::1738358720::17383601 white_pawn.png::CompressedTexture2D::8196778834906249875::1738358720::1738360196::1::::<><>:: white_queen.png::CompressedTexture2D::1957958042777204643::1738358720::1738360196::1::::<><>:: white_rook.png::CompressedTexture2D::3317152307554436932::1738358720::1738360196::1::::<><>:: +wizard.png::CompressedTexture2D::2759604866355024615::1738373264::1738373374::1::::<><>:: ::res://assets/ui/::1738360196 Go_Save_The_King_Menu.jpg::CompressedTexture2D::7252735845995868232::1738358720::1738360196::1::::<><>:: Mockup Gameplay Design.jpg::CompressedTexture2D::4859609684236806088::1738358720::1738360196::1::::<><>:: Mockup Shop Design.jpg::CompressedTexture2D::8043055154093708922::1738358720::1738360196::1::::<><>:: -::res://scenes/::1738366873 -Bishop.tscn::PackedScene::2789588702038144760::1738366872::0::1::::<><>::res://scripts/Bishop.gd<>uid://b68o4mj7wcwvq::::res://assets/sprites/bishop.png +::res://scenes/::1738373236 +Bishop.tscn::PackedScene::2789588702038144760::1738373236::0::1::::<><>::res://scripts/Bishop.gd<>uid://b68o4mj7wcwvq::::res://assets/sprites/bishop.png board.tscn::PackedScene::5124694183364421304::1738358720::0::1::::<><>::uid://b0px5wlrm0mb3::::res://assets/temp_assets/temp_chess_board.png<>res://scripts/board.gd -explosion.tscn::PackedScene::69466253159940830::1738366872::0::1::::<><>:: -game.tscn::PackedScene::8577524005707705072::1738366872::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::1738366872::0::1::::<><>::res://scripts/King.gd<>uid://cdogixbq8ay3t::::res://assets/Resized Chess Piece Assets/White_king.png -Knight.tscn::PackedScene::5270730075267457303::1738366873::0::1::::<><>::res://scripts/Knight.gd<>uid://mf4a3jclbwih::::res://assets/Resized Chess Piece Assets/White_knight.png -Pawn.tscn::PackedScene::3675784333675896641::1738366872::0::1::::<><>::res://scripts/Pawn.gd<>uid://ndi1e8thkonq::::res://assets/Resized Chess Piece Assets/White_Pawn.png -Queen.tscn::PackedScene::7495869360053814603::1738366872::0::1::::<><>::res://scripts/Queen.gd<>uid://cb3vq168iyomb::::res://assets/Resized Chess Piece Assets/White_Queen.png -Assassin.tscn::PackedScene::1241611789899982875::1738366873::0::1::::<><>::res://scripts/Assassin.gd<>uid://753dogr1moxe::::res://assets/temp_assets/assassin.png -Rook.tscn::PackedScene::9162401199636684468::1738366872::0::1::::<><>::uid://b00wxxfjk04ke::::res://assets/Resized Chess Piece Assets/White_rook.png +explosion.tscn::PackedScene::69466253159940830::1738373235::0::1::::<><>:: +game.tscn::PackedScene::8577524005707705072::1738373235::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::1738373236::0::1::::<><>::res://scripts/King.gd<>uid://cdogixbq8ay3t::::res://assets/Resized Chess Piece Assets/White_king.png +Knight.tscn::PackedScene::5270730075267457303::1738373236::0::1::::<><>::res://scripts/Knight.gd<>uid://mf4a3jclbwih::::res://assets/Resized Chess Piece Assets/White_knight.png +Pawn.tscn::PackedScene::3675784333675896641::1738373235::0::1::::<><>::res://scripts/Pawn.gd<>uid://ndi1e8thkonq::::res://assets/Resized Chess Piece Assets/White_Pawn.png +Queen.tscn::PackedScene::7495869360053814603::1738373236::0::1::::<><>::res://scripts/Queen.gd<>uid://cb3vq168iyomb::::res://assets/Resized Chess Piece Assets/White_Queen.png +Assassin.tscn::PackedScene::1241611789899982875::1738373236::0::1::::<><>::res://scripts/Assassin.gd<>uid://753dogr1moxe::::res://assets/temp_assets/assassin.png +Mage.tscn::PackedScene::10334063134713649::1738373236::0::1::::<><>::res://scripts/Mage.gd<>uid://b7iyt4iwjbtd0::::res://assets/temp_assets/mage.png +Rook.tscn::PackedScene::9162401199636684468::1738373236::0::1::::<><>::uid://b00wxxfjk04ke::::res://assets/Resized Chess Piece Assets/White_rook.png texture_holder.tscn::PackedScene::594714386286134588::1738358720::0::1::::<><>:: -::res://scripts/::1738367154 +::res://scripts/::1738373287 Bishop.gd::GDScript::-1::1738358720::0::1::::Bishop<>Piece<>:: King.gd::GDScript::-1::1738358720::0::1::::King<>Piece<>:: Knight.gd::GDScript::-1::1738358802::0::1::::Knight<>Piece<>:: @@ -83,6 +85,7 @@ Pawn.gd::GDScript::-1::1738366967::0::1::::Pawn<>Piece<>:: Piece.gd::GDScript::-1::1738358720::0::1::::Piece<>Node2D<>:: Queen.gd::GDScript::-1::1738358720::0::1::::Queen<>Piece<>:: Assassin.gd::GDScript::-1::1738361495::0::1::::Assassin<>Piece<>:: -game.gd::GDScript::-1::1738367020::0::1::::game<>Node<>:: -Mage.gd::GDScript::-1::1738367372::0::1::::Mage<>Piece<>:: +game.gd::GDScript::-1::1738373366::0::1::::game<>Node<>:: +Mage.gd::GDScript::-1::1738367776::0::1::::Mage<>Piece<>:: +Wizard.gd::GDScript::-1::1738373371::0::1::::Wizard<>Piece<>:: Rook.gd::GDScript::-1::1738358720::0::1::::Rook<>Piece<>:: diff --git a/.godot/editor/filesystem_update4 b/.godot/editor/filesystem_update4 index 3c287f7..bf3a86c 100644 --- a/.godot/editor/filesystem_update4 +++ b/.godot/editor/filesystem_update4 @@ -20,3 +20,5 @@ res://scenes/Assassin.tscn res://scripts/Pawn.gd res://scripts/Mage.gd res://scenes/Mage.tscn +res://scripts/Wizard.gd +res://scenes/Wizard.tscn diff --git a/.godot/editor/project_metadata.cfg b/.godot/editor/project_metadata.cfg index 4a2c8f2..8a2aae1 100644 --- a/.godot/editor/project_metadata.cfg +++ b/.godot/editor/project_metadata.cfg @@ -13,8 +13,8 @@ last_selected_language="GDScript" [recent_files] -scripts=["res://scripts/Mage.gd", "res://scripts/Assassin.gd", "res://scripts/Knight.gd", "res://scripts/King.gd", "res://scripts/Queen.gd", "res://scripts/Bishop.gd", "res://scripts/Rook.gd", "res://scripts/Pawn.gd", "res://scripts/Piece.gd", "@GDScript"] -scenes=["res://scenes/Mage.tscn", "res://scenes/Assassin.tscn", "res://scenes/Knight.tscn", "res://scenes/King.tscn", "res://scenes/Queen.tscn", "res://scenes/Bishop.tscn", "res://scenes/Rook.tscn", "res://scenes/Pawn.tscn", "res://scenes/explosion.tscn", "res://scenes/game.tscn"] +scripts=["res://scripts/Wizard.gd", "res://scripts/Mage.gd", "res://scripts/Assassin.gd", "res://scripts/Knight.gd", "res://scripts/King.gd", "res://scripts/Queen.gd", "res://scripts/Bishop.gd", "res://scripts/Rook.gd", "res://scripts/Pawn.gd", "res://scripts/Piece.gd"] +scenes=["res://scenes/Wizard.tscn", "res://scenes/Mage.tscn", "res://scenes/Assassin.tscn", "res://scenes/Knight.tscn", "res://scenes/King.tscn", "res://scenes/Queen.tscn", "res://scenes/Bishop.tscn", "res://scenes/Rook.tscn", "res://scenes/Pawn.tscn", "res://scenes/explosion.tscn"] [color_picker] diff --git a/.godot/editor/script_editor_cache.cfg b/.godot/editor/script_editor_cache.cfg index a2b4d40..7f1ec22 100644 --- a/.godot/editor/script_editor_cache.cfg +++ b/.godot/editor/script_editor_cache.cfg @@ -133,7 +133,21 @@ state={ "folded_lines": Array[int]([]), "h_scroll_position": 0, "row": 113, -"scroll_position": 95.0, +"scroll_position": 101.0, +"selection": false, +"syntax_highlighter": "GDScript" +} + +[res://scripts/Wizard.gd] + +state={ +"bookmarks": PackedInt32Array(), +"breakpoints": PackedInt32Array(), +"column": 0, +"folded_lines": Array[int]([]), +"h_scroll_position": 0, +"row": 0, +"scroll_position": 0.0, "selection": false, "syntax_highlighter": "GDScript" } diff --git a/.godot/global_script_class_cache.cfg b/.godot/global_script_class_cache.cfg index 96438af..6be5c73 100644 --- a/.godot/global_script_class_cache.cfg +++ b/.godot/global_script_class_cache.cfg @@ -53,6 +53,12 @@ list=Array[Dictionary]([{ "language": &"GDScript", "path": "res://scripts/Rook.gd" }, { +"base": &"Piece", +"class": &"Wizard", +"icon": "", +"language": &"GDScript", +"path": "res://scripts/Wizard.gd" +}, { "base": &"Node", "class": &"game", "icon": "", diff --git a/.godot/uid_cache.bin b/.godot/uid_cache.bin index 1e23be115ed807ce4e7131fd708687be54e0a201..cef72022d8beb1cfc7c8242615506193ffa2f3d2 100644 GIT binary patch delta 71 zcmaDac}R-UaU<h99?s{N+MOB2eAJXDJ95bAm1kBZ7NzJF<fYG^`F{DG>FN;@3=9lK Xsl`_M`o+nqd8x(v;SePy#mRX9rgRzd delta 10 RcmX>k^<I+Eek0>M9sm}f1JM8g diff --git a/Assets/temp_assets/wizard.png b/Assets/temp_assets/wizard.png new file mode 100644 index 0000000000000000000000000000000000000000..3f24054cd2e03699f41efe66c5c94b9b3f808775 GIT binary patch literal 268 zcmV+n0rUQeP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp) z=>Px##z{m$R9J=WmQfDEAP_{0x0N2kc!=U1YUm9bkGB5UL|d^lgAE~JzL#Zq>@IX& z&9awra=4t$KN2}7<vOVb{w2wE3cEsqUa)uPtckj=0Ihh2LLCIuUPnkI19ArpYKE$T zF~*Il$2@Q1ZXv*VTM^b};66>eF~09*Gmyp@Ev2*fbmvHq(YhO!PGG8ER&fGmX6ss5 z2!vsfKPHfVonECt52A0K@IDO>qkx=Vp-}uSC@$9N6^y$aVF2BnGEtmBQ_~YKGvD9y S_Zpx80000<MNUMnLSTXo;%njn literal 0 HcmV?d00001 diff --git a/Assets/temp_assets/wizard.png.import b/Assets/temp_assets/wizard.png.import new file mode 100644 index 0000000..f700662 --- /dev/null +++ b/Assets/temp_assets/wizard.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bfk1j3brcknkp" +path="res://.godot/imported/wizard.png-dde8c8f6619c79c88090542142689c4d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/temp_assets/wizard.png" +dest_files=["res://.godot/imported/wizard.png-dde8c8f6619c79c88090542142689c4d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/Wizard.tscn b/scenes/Wizard.tscn new file mode 100644 index 0000000..904cd0f --- /dev/null +++ b/scenes/Wizard.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=3 uid="uid://cwrcas374ms6f"] + +[ext_resource type="Script" path="res://scripts/Wizard.gd" id="1_l2hsv"] +[ext_resource type="Texture2D" uid="uid://bfk1j3brcknkp" path="res://assets/temp_assets/wizard.png" id="2_vybdv"] + +[node name="Node2D" type="Node2D"] +script = ExtResource("1_l2hsv") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("2_vybdv") diff --git a/scripts/Wizard.gd b/scripts/Wizard.gd new file mode 100644 index 0000000..d71af2f --- /dev/null +++ b/scripts/Wizard.gd @@ -0,0 +1,119 @@ +extends Piece + +class_name Wizard + +enum Upgrade { + # Add any specific upgrades for Wizard here +} + +@onready var game = get_tree().root.get_node("Game") + +func _init(is_white: bool, position: Vector2): + super._init(is_white, position) + +func get_valid_moves(board_state: Array, pos: Vector2) -> Array[Vector2]: + var valid_moves: Array[Vector2] = [] + var sel_x = pos.x + var sel_y = pos.y + + # Add moves based on the provided logic + if (sel_x + 1) < 8 and (sel_y + 1) < 8: + if is_empty(board_state, sel_x + 1, sel_y + 1): + valid_moves.append(Vector2(sel_x + 1, sel_y + 1)) + if (sel_x - 1) >= 0 and (sel_y + 1) < 8: + if is_empty(board_state, sel_x - 1, sel_y + 1): + valid_moves.append(Vector2(sel_x - 1, sel_y + 1)) + if (sel_x + 1) < 8 and (sel_y - 1) >= 0: + if is_empty(board_state, sel_x + 1, sel_y - 1): + valid_moves.append(Vector2(sel_x + 1, sel_y - 1)) + if (sel_x - 1) >= 0 and (sel_y - 1) >= 0: + if is_empty(board_state, sel_x - 1, sel_y - 1): + valid_moves.append(Vector2(sel_x - 1, sel_y - 1)) + + if (sel_x + 1) < 8: + if is_empty(board_state, sel_x + 1, sel_y): + valid_moves.append(Vector2(sel_x + 1, sel_y)) + if (sel_x - 1) >= 0: + if is_empty(board_state, sel_x - 1, sel_y): + valid_moves.append(Vector2(sel_x - 1, sel_y)) + + if (sel_y + 1) < 8: + if is_empty(board_state, sel_x, sel_y + 1): + valid_moves.append(Vector2(sel_x, sel_y + 1)) + if (sel_y - 1) >= 0: + if is_empty(board_state, sel_x, sel_y - 1): + valid_moves.append(Vector2(sel_x, sel_y - 1)) + + return valid_moves + +func get_valid_shots(board_state: Array, pos: Vector2) -> Array[Vector2]: + var valid_shots: Array[Vector2] = [] + var sel_x = pos.x + var sel_y = pos.y + + # Valid shots to the right + for x in range(1, 8): + var new_x = sel_x + x + if new_x < 8: + if is_empty(board_state, new_x, sel_y): + pass + elif is_opposite(board_state, new_x, sel_y): + valid_shots.append(Vector2(new_x, sel_y)) + break + else: + break + else: + break + + # Repeat for left + for x in range(1, 8): + var new_x = sel_x - x + if new_x >= 0: + if is_empty(board_state, new_x, sel_y): + pass + elif is_opposite(board_state, new_x, sel_y): + valid_shots.append(Vector2(new_x, sel_y)) + break + else: + break + else: + break + + # Repeat for down + for y in range(1, 8): + var new_y = sel_y + y + if new_y < 8: + if is_empty(board_state, sel_x, new_y): + pass + elif is_opposite(board_state, sel_x, new_y): + valid_shots.append(Vector2(sel_x, new_y)) + break + else: + break + else: + break + + # Repeat for up + for y in range(1, 8): + var new_y = sel_y - y + if new_y >= 0: + if is_empty(board_state, sel_x, new_y): + pass + elif is_opposite(board_state, sel_x, new_y): + valid_shots.append(Vector2(sel_x, new_y)) + break + else: + break + else: + break + + return valid_shots + +func shoot_projectile(x: int, y: int): + game.shoot_projectile(x, y) + +func is_empty(board_state: Array, x: int, y: int) -> bool: + return board_state[x][y] == null + +func is_opposite(board_state: Array, x: int, y: int) -> bool: + return board_state[x][y] != null and board_state[x][y].is_white != is_white diff --git a/scripts/game.gd b/scripts/game.gd index 1b06578..460e5a7 100644 --- a/scripts/game.gd +++ b/scripts/game.gd @@ -50,6 +50,7 @@ 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)) @@ -144,6 +145,8 @@ func draw_pieces(): 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() @@ -394,7 +397,7 @@ func unselect_piece(): func highlight_tiles(): # Clear the previously selected valid moves remove_highlight() - if selected_piece_value is Mage: + if selected_piece_value is Mage || selected_piece_value is Wizard: valid_moves = selected_piece_value.get_valid_moves(board, selected_piece_position) valid_moves += selected_piece_value.get_valid_shots(board, selected_piece_position) else: @@ -423,12 +426,12 @@ func move_selected_piece(x,y): #can only move to tiles in valid_moves if Vector2(x,y) in valid_moves: - if selected_piece_value is Mage: + if selected_piece_value is Mage || selected_piece_value is Wizard: if abs(selected_piece_position.x - x) <= 1 and abs(selected_piece_position.y - y) <= 1: if is_empty(x, y): move_piece(x, y) else: - unselect_piece() + shoot_projectile(x, y) else: shoot_projectile(x, y) -- GitLab