[gd_scene load_steps=28 format=3 uid="uid://cgg0sfm2qeiwn"] [ext_resource type="Texture2D" uid="uid://dam6aigkw8xs" path="res://Assets/Sprites/Items/bow-and-arrow.png" id="1_1ghvv"] [ext_resource type="Script" path="res://Items/Weapons/Bow.cs" id="1_ikgu2"] [ext_resource type="PackedScene" uid="uid://cjiftn2suskla" path="res://Entities/Arrow.tscn" id="2_mvw0j"] [ext_resource type="Script" path="res://State/Weapon/WeaponStateMachine.cs" id="3_pg4gy"] [ext_resource type="Script" path="res://State/Weapon/RangedIdleState.cs" id="3_uxif8"] [ext_resource type="Script" path="res://State/Weapon/RangedFireState.cs" id="4_moo4d"] [ext_resource type="Script" path="res://State/Weapon/RangedChargeState.cs" id="5_k8y6f"] [ext_resource type="Script" path="res://State/Weapon/BowAltState.cs" id="7_l73rl"] [ext_resource type="AudioStream" uid="uid://bkekgj4gu7fw4" path="res://Assets/Sounds/bow-draw.wav" id="7_t07v0"] [ext_resource type="Texture2D" uid="uid://coarr28adgo1u" path="res://Assets/Sprites/Particles/point-light.png" id="9_tk6lc"] [ext_resource type="AudioStream" uid="uid://cwy4giq8eod5g" path="res://Assets/Sounds/bow-release.wav" id="9_v051g"] [ext_resource type="Texture2D" uid="uid://dj1vsctgh1scr" path="res://Assets/Sprites/Misc/flame.png" id="9_xwcvy"] [sub_resource type="AtlasTexture" id="AtlasTexture_5af70"] atlas = ExtResource("9_xwcvy") region = Rect2(0, 0, 8, 8) [sub_resource type="AtlasTexture" id="AtlasTexture_bct7o"] atlas = ExtResource("9_xwcvy") region = Rect2(8, 0, 8, 8) [sub_resource type="AtlasTexture" id="AtlasTexture_fhtjn"] atlas = ExtResource("9_xwcvy") region = Rect2(16, 0, 8, 8) [sub_resource type="AtlasTexture" id="AtlasTexture_si88l"] atlas = ExtResource("9_xwcvy") region = Rect2(24, 0, 8, 8) [sub_resource type="AtlasTexture" id="AtlasTexture_ap5vw"] atlas = ExtResource("9_xwcvy") region = Rect2(32, 0, 8, 8) [sub_resource type="AtlasTexture" id="AtlasTexture_uad0p"] atlas = ExtResource("9_xwcvy") region = Rect2(40, 0, 8, 8) [sub_resource type="AtlasTexture" id="AtlasTexture_cxv2f"] atlas = ExtResource("9_xwcvy") region = Rect2(48, 0, 8, 8) [sub_resource type="SpriteFrames" id="SpriteFrames_b2khh"] animations = [{ "frames": [{ "duration": 1.0, "texture": SubResource("AtlasTexture_5af70") }, { "duration": 1.0, "texture": SubResource("AtlasTexture_bct7o") }, { "duration": 1.0, "texture": SubResource("AtlasTexture_fhtjn") }, { "duration": 1.0, "texture": SubResource("AtlasTexture_si88l") }, { "duration": 1.0, "texture": SubResource("AtlasTexture_ap5vw") }, { "duration": 1.0, "texture": SubResource("AtlasTexture_uad0p") }, { "duration": 1.0, "texture": SubResource("AtlasTexture_cxv2f") }], "loop": true, "name": &"default", "speed": 10.0 }] [sub_resource type="Animation" id="Animation_h0fti"] resource_name = "RESET" tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("Anchor/Sprite2D:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [0] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("Anchor/Flame:position") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(15, -8)] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("Anchor/Flame:visible") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [false] } [sub_resource type="Animation" id="Animation_bejvb"] resource_name = "alt_fire" step = 0.05 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("Anchor/Sprite2D:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), "update": 1, "values": [0, 5, 0, 5, 0, 5, 0, 5, 0] } tracks/1/type = "audio" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("AudioStreamPlayer2D") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "clips": [{ "end_offset": 0.0, "start_offset": 0.03, "stream": ExtResource("9_v051g") }, { "end_offset": 0.0, "start_offset": 0.03, "stream": ExtResource("9_v051g") }, { "end_offset": 0.0, "start_offset": 0.03, "stream": ExtResource("9_v051g") }, { "end_offset": 0.0, "start_offset": 0.03, "stream": ExtResource("9_v051g") }, { "end_offset": 0.0, "start_offset": 0.03, "stream": ExtResource("9_v051g") }], "times": PackedFloat32Array(0, 0.1998, 0.3996, 0.5994, 0.7992) } tracks/1/use_blend = true tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("Anchor/Flame:position") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(15, -8)] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true tracks/3/path = NodePath("Anchor/Flame:visible") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [false] } [sub_resource type="Animation" id="Animation_8qr8x"] resource_name = "charge" length = 0.5 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("Anchor/Sprite2D:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.9), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), "update": 1, "values": [0, 1, 2, 3, 4, 6, 5] } tracks/1/type = "audio" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("AudioStreamPlayer2D") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "clips": [{ "end_offset": 0.0, "start_offset": 0.0, "stream": ExtResource("7_t07v0") }], "times": PackedFloat32Array(0) } tracks/1/use_blend = true tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("Anchor/Flame:position") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), "update": 1, "values": [Vector2(15, -8), Vector2(14, -8), Vector2(13, -8), Vector2(12, -8), Vector2(11, -8), Vector2(9, -8)] } [sub_resource type="Animation" id="Animation_j5qtq"] resource_name = "fire" tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("Anchor/Sprite2D:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [7] } tracks/1/type = "audio" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("AudioStreamPlayer2D") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "clips": [{ "end_offset": 0.0, "start_offset": 0.03, "stream": ExtResource("9_v051g") }], "times": PackedFloat32Array(0) } tracks/1/use_blend = true tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("Anchor/Flame:position") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(15, -8)] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true tracks/3/path = NodePath("Anchor/Flame:visible") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [false] } [sub_resource type="Animation" id="Animation_riv7t"] resource_name = "idle" tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("Anchor/Sprite2D:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [0] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_5vx8d"] _data = { "RESET": SubResource("Animation_h0fti"), "alt_fire": SubResource("Animation_bejvb"), "charge": SubResource("Animation_8qr8x"), "fire": SubResource("Animation_j5qtq"), "idle": SubResource("Animation_riv7t") } [sub_resource type="CircleShape2D" id="CircleShape2D_6b356"] [node name="Bow" type="Node2D" node_paths=PackedStringArray("StateMachine")] y_sort_enabled = true script = ExtResource("1_ikgu2") Projectile = ExtResource("2_mvw0j") ChargeTime = 0.5 StateMachine = NodePath("StateMachine") Damage = 20.0 UseTime = 0.5 UseAltTime = 0.2 Knockback = 64.0 InitialVelocity = 200.0 ShouldFreezeAngleOnUse = false PlayerLevelGain = 1.0 [node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("InitialState")] script = ExtResource("3_pg4gy") InitialState = NodePath("Idle") UsedItemStates = Array[NodePath]([NodePath("Charge"), NodePath("Fire")]) UsedItemAltStates = Array[NodePath]([NodePath("AltFire")]) DeusedItemStates = Array[NodePath]([NodePath("Idle")]) [node name="Idle" type="Node" parent="StateMachine" node_paths=PackedStringArray("FireState", "AltFireState", "Weapon", "AnimationPlayer")] script = ExtResource("3_uxif8") FireState = NodePath("../Charge") AltFireState = NodePath("../AltFire") Weapon = NodePath("../..") AnimationPlayer = NodePath("../../AnimationPlayer") AnimationKey = "idle" [node name="Charge" type="Node" parent="StateMachine" node_paths=PackedStringArray("Weapon", "FireState", "IdleState", "AnimationPlayer")] script = ExtResource("5_k8y6f") Weapon = NodePath("../..") FireState = NodePath("../Fire") IdleState = NodePath("../Idle") AnimationPlayer = NodePath("../../AnimationPlayer") AnimationKey = "charge" [node name="Fire" type="Node" parent="StateMachine" node_paths=PackedStringArray("Weapon", "IdleState", "AnimationPlayer")] script = ExtResource("4_moo4d") Weapon = NodePath("../..") IdleState = NodePath("../Idle") AnimationPlayer = NodePath("../../AnimationPlayer") AnimationKey = "fire" [node name="AltFire" type="Node" parent="StateMachine" node_paths=PackedStringArray("Bow", "IdleState", "AnimationPlayer")] script = ExtResource("7_l73rl") Bow = NodePath("../..") IdleState = NodePath("../Idle") AnimationPlayer = NodePath("../../AnimationPlayer") AnimationKey = "alt_fire" AngleDeviation = 30.0 [node name="Anchor" type="Node2D" parent="."] y_sort_enabled = true position = Vector2(0, 4) [node name="Sprite2D" type="Sprite2D" parent="Anchor"] y_sort_enabled = true position = Vector2(4, 3) texture = ExtResource("1_1ghvv") centered = false offset = Vector2(-8, -16) hframes = 8 [node name="Flame" type="AnimatedSprite2D" parent="Anchor"] unique_name_in_owner = true visible = false position = Vector2(15, -8) sprite_frames = SubResource("SpriteFrames_b2khh") autoplay = "default" [node name="PointLight2D" type="PointLight2D" parent="Anchor/Flame"] color = Color(1, 0.8, 0.701961, 1) texture = ExtResource("9_tk6lc") texture_scale = 0.13 [node name="AnimationPlayer" type="AnimationPlayer" parent="."] libraries = { "": SubResource("AnimationLibrary_5vx8d") } [node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."] volume_db = -8.0 bus = &"Effects" [node name="IgnitionArea" type="Area2D" parent="."] position = Vector2(8, 0) collision_layer = 0 collision_mask = 128 monitorable = false [node name="CollisionShape2D" type="CollisionShape2D" parent="IgnitionArea"] shape = SubResource("CircleShape2D_6b356")