[gd_scene load_steps=17 format=3 uid="uid://b5eclfg0cmmal"] [ext_resource type="PackedScene" uid="uid://dgogd08c0ubt6" path="res://assets/Models/revolver1.blend" id="1_i5f84"] [ext_resource type="Script" path="res://scripts/revolver_1.gd" id="2_7rsti"] [ext_resource type="Texture2D" uid="uid://dtg3nb2ew72c3" path="res://assets/star_05.png" id="3_q41fl"] [ext_resource type="PackedScene" uid="uid://dqhltdnqyg8ni" path="res://assets/bullet.tscn" id="3_tru5y"] [ext_resource type="PackedScene" uid="uid://crvohhc6kgshn" path="res://assets/bullet_hole.tscn" id="4_ubqgq"] [ext_resource type="PackedScene" uid="uid://c1gdehrsytlkk" path="res://assets/casing_2.tscn" id="5_m3vsl"] [ext_resource type="AudioStream" uid="uid://ba0w04uqqexpn" path="res://assets/Audio/Weapons/machine-gun-m16-double-shot-close-perspective-SBA-300130711.wav" id="8_thfjw"] [ext_resource type="AudioStream" uid="uid://t50i483xmj3a" path="res://assets/Audio/Weapons/toy-click-spin-SBA-300071143.wav" id="9_xt6tc"] [ext_resource type="AudioStream" uid="uid://db3iy0f1pa5lg" path="res://assets/Audio/Weapons/gun-m-16-reload-full-clip-magazine-SBA-300121257.wav" id="10_0uh43"] [sub_resource type="Animation" id="Animation_8akx8"] resource_name = "empty" length = 0.3 step = 0.01 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("revolver1:position") tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0, 0.1, 0.3), "transitions": PackedFloat32Array(1, 1, 1), "update": 0, "values": [Vector3(0, 0, -0.073), Vector3(0, 0, -0.147606), Vector3(0, 0, -0.073)] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("revolver1:rotation") tracks/1/interp = 2 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0, 0.1, 0.3), "transitions": PackedFloat32Array(1, 1, 1), "update": 0, "values": [Vector3(0, 0, -1.5708), Vector3(-0.150383, 0.0739494, -1.60578), Vector3(0, 0, -1.5708)] } [sub_resource type="Animation" id="Animation_21rul"] resource_name = "inspect" length = 3.0 step = 0.01 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("revolver1:position") tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0, 0.51, 0.99, 1.4, 1.9, 2.4, 3), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), "update": 0, "values": [Vector3(0, 0, -0.073), Vector3(-0.574, 0.208, 0.4), Vector3(-0.574, 0.366, 0.4), Vector3(-0.573651, 0.302831, -0.190018), Vector3(-0.386, 0.303, 0.4), Vector3(-0.386, 0.303, 0.4), Vector3(0, 0, -0.073)] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("revolver1:rotation") tracks/1/interp = 2 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0, 0.51, 0.99, 1.4, 1.9, 2.4, 3), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), "update": 0, "values": [Vector3(0, 0, -1.5708), Vector3(0.14619, 0.995226, -2.05295), Vector3(0.14619, 0.812874, -2.05295), Vector3(0.14619, 1.0641, -2.05295), Vector3(0.54766, -0.269512, -0.540009), Vector3(0.54766, -0.269512, -0.540009), Vector3(0, 0, -1.5708)] } [sub_resource type="Animation" id="Animation_rlxei"] resource_name = "reload" length = 2.5 step = 0.01 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("revolver1:position") tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0, 0.22, 0.4, 0.6, 1.07, 1.33, 1.5, 1.66, 1.82, 1.89, 2.5), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), "update": 0, "values": [Vector3(0, 0, -0.073), Vector3(-0.61041, 1.05032, -0.236151), Vector3(-0.4225, 0.657429, -0.251105), Vector3(-1.27312, 1.15341, -0.515495), Vector3(-1.0066, -0.416256, -0.317969), Vector3(-1.13106, -0.198543, -0.223125), Vector3(-0.58445, 0.0249391, -0.0674842), Vector3(-0.508226, -0.016757, -0.0897506), Vector3(-0.0153492, 0.604715, -0.11206), Vector3(0.187865, 0.65023, -0.11897), Vector3(0, 0, -0.073)] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("revolver1:rotation") tracks/1/interp = 2 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0, 0.22, 0.4, 0.6, 1.07, 1.33, 1.5, 1.66, 1.82, 1.89, 2.5), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), "update": 0, "values": [Vector3(0, 0, -1.5708), Vector3(0.687548, 0.326954, -0.642657), Vector3(1.01821, 0.680476, -0.426182), Vector3(0.903525, 0.852835, -0.569306), Vector3(-0.971497, 0.7422, -1.86723), Vector3(-1.31235, 0.518595, -1.46474), Vector3(-1.38018, 0.534, -1.42873), Vector3(-1.21355, 0.571637, -1.67236), Vector3(-0.222425, 0.158319, -2.06524), Vector3(0.189279, -0.0229724, -2.20242), Vector3(0, 0, -1.5708)] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("revolver1/Chamber:position") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0.14, 0.26, 1.74, 1.82), "transitions": PackedFloat32Array(1, 1, 1, 1), "update": 0, "values": [Vector3(-0.0143475, 0, -0.0849619), Vector3(-0.014, -0.3, -0.085), Vector3(-0.014, -0.3, -0.085), Vector3(-0.0143475, 0, -0.0849619)] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true tracks/3/path = NodePath("revolver1/Chamber/casing_001:visible") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { "times": PackedFloat32Array(0.3, 0.31, 1.29, 1.3), "transitions": PackedFloat32Array(1, 1, 1, 1), "update": 1, "values": [true, false, false, true] } tracks/4/type = "value" tracks/4/imported = false tracks/4/enabled = true tracks/4/path = NodePath("revolver1/Chamber/casing_002:visible") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { "times": PackedFloat32Array(0.3, 0.31, 1.29, 1.3), "transitions": PackedFloat32Array(1, 1, 1, 1), "update": 1, "values": [true, false, false, true] } tracks/5/type = "value" tracks/5/imported = false tracks/5/enabled = true tracks/5/path = NodePath("revolver1/Chamber/casing_003:visible") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { "times": PackedFloat32Array(0.3, 0.31, 1.29, 1.3), "transitions": PackedFloat32Array(1, 1, 1, 1), "update": 1, "values": [true, false, false, true] } tracks/6/type = "value" tracks/6/imported = false tracks/6/enabled = true tracks/6/path = NodePath("revolver1/Chamber/casing_004:visible") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/keys = { "times": PackedFloat32Array(0.3, 0.31, 1.29, 1.3), "transitions": PackedFloat32Array(1, 1, 1, 1), "update": 1, "values": [true, false, false, true] } tracks/7/type = "value" tracks/7/imported = false tracks/7/enabled = true tracks/7/path = NodePath("revolver1/Chamber/casing_005:visible") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { "times": PackedFloat32Array(0.3, 0.31, 1.29, 1.3), "transitions": PackedFloat32Array(1, 1, 1, 1), "update": 1, "values": [true, false, false, true] } tracks/8/type = "value" tracks/8/imported = false tracks/8/enabled = true tracks/8/path = NodePath("revolver1/Chamber/casing:visible") tracks/8/interp = 1 tracks/8/loop_wrap = true tracks/8/keys = { "times": PackedFloat32Array(0.3, 0.31, 1.29, 1.3), "transitions": PackedFloat32Array(1, 1, 1, 1), "update": 1, "values": [true, false, false, true] } tracks/9/type = "method" tracks/9/imported = false tracks/9/enabled = true tracks/9/path = NodePath(".") tracks/9/interp = 1 tracks/9/loop_wrap = true tracks/9/keys = { "times": PackedFloat32Array(0.31, 2.5), "transitions": PackedFloat32Array(1, 1), "values": [{ "args": [], "method": &"spawn_casings" }, { "args": [], "method": &"reload_finished" }] } tracks/10/type = "value" tracks/10/imported = false tracks/10/enabled = true tracks/10/path = NodePath("revolver1/Chamber/casing:position") tracks/10/interp = 1 tracks/10/loop_wrap = true tracks/10/keys = { "times": PackedFloat32Array(), "transitions": PackedFloat32Array(), "update": 0, "values": [] } tracks/11/type = "value" tracks/11/imported = false tracks/11/enabled = true tracks/11/path = NodePath("revolver1/Chamber/casing_001:position") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/keys = { "times": PackedFloat32Array(), "transitions": PackedFloat32Array(), "update": 0, "values": [] } tracks/12/type = "value" tracks/12/imported = false tracks/12/enabled = true tracks/12/path = NodePath("revolver1/Chamber/casing_003:position") tracks/12/interp = 1 tracks/12/loop_wrap = true tracks/12/keys = { "times": PackedFloat32Array(), "transitions": PackedFloat32Array(), "update": 0, "values": [] } tracks/13/type = "value" tracks/13/imported = false tracks/13/enabled = true tracks/13/path = NodePath("revolver1/Chamber/casing_004:position") tracks/13/interp = 1 tracks/13/loop_wrap = true tracks/13/keys = { "times": PackedFloat32Array(), "transitions": PackedFloat32Array(), "update": 0, "values": [] } tracks/14/type = "value" tracks/14/imported = false tracks/14/enabled = true tracks/14/path = NodePath("revolver1/Chamber/casing_005:position") tracks/14/interp = 1 tracks/14/loop_wrap = true tracks/14/keys = { "times": PackedFloat32Array(), "transitions": PackedFloat32Array(), "update": 0, "values": [] } [sub_resource type="Animation" id="Animation_n8vac"] resource_name = "shoot" length = 0.3 step = 0.01 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("revolver1:position") tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0.03, 0.07, 0.3), "transitions": PackedFloat32Array(1, 1, 1), "update": 0, "values": [Vector3(0, 0, -0.073), Vector3(0, 0.220238, 0.54816), Vector3(0, 0, -0.073)] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("revolver1:rotation") tracks/1/interp = 2 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0.03, 0.07, 0.3), "transitions": PackedFloat32Array(1, 1, 1), "update": 0, "values": [Vector3(0, 0, -1.5708), Vector3(0.450033, 0, -1.5708), Vector3(0, 0, -1.5708)] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("revolver1/hammer:rotation") tracks/2/interp = 2 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0, 0.02, 0.03), "transitions": PackedFloat32Array(1, 1, 1), "update": 0, "values": [Vector3(0, 0, 0), Vector3(-2.69072e-08, 0.663103, -9.26305e-09), Vector3(0, 0, 0)] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true tracks/3/path = NodePath("revolver1/Trigger:rotation") tracks/3/interp = 2 tracks/3/loop_wrap = true tracks/3/keys = { "times": PackedFloat32Array(0, 0.01, 0.08), "transitions": PackedFloat32Array(1, 1, 1), "update": 0, "values": [Vector3(1.5708, -1.36174, 0), Vector3(1.5708, -2.10732, 0), Vector3(1.5708, -1.36174, 0)] } tracks/4/type = "value" tracks/4/imported = false tracks/4/enabled = true tracks/4/path = NodePath("revolver1/Chamber:rotation") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { "times": PackedFloat32Array(0, 0.03), "transitions": PackedFloat32Array(1, 1), "update": 0, "values": [Vector3(1.19209e-07, 1.5708, 1.5708), Vector3(1.0472, 1.5708, 1.5708)] } [sub_resource type="Animation" id="Animation_w02ee"] resource_name = "swap_in" step = 0.01 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("revolver1:position") tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0, 0.6, 1), "transitions": PackedFloat32Array(1, 1, 1), "update": 0, "values": [Vector3(-3.07392, -1.84477, 0.367733), Vector3(-0.208626, 0.7136, -0.157707), Vector3(0, 0, -0.073)] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("revolver1:rotation") tracks/1/interp = 2 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0, 0.6, 1), "transitions": PackedFloat32Array(1, 1, 1), "update": 0, "values": [Vector3(-0.988971, 2.72615, -2.59346), Vector3(-0.187002, 0.326746, -1.63372), Vector3(0, 0, -1.5708)] } [sub_resource type="Animation" id="Animation_nvmxj"] resource_name = "swap_out" step = 0.01 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("revolver1:position") tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0, 0.2, 1), "transitions": PackedFloat32Array(1, 1, 1), "update": 0, "values": [Vector3(0, 0, -0.073), Vector3(1.02683, 0.7136, 0.931267), Vector3(1, 0.7136, 3.92668)] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("revolver1:rotation") tracks/1/interp = 2 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0, 0.2, 1), "transitions": PackedFloat32Array(1, 1, 1), "update": 0, "values": [Vector3(0, 0, -1.5708), Vector3(1.23943, 1.69465, 0.256704), Vector3(1.28498, 1.63115, -0.624855)] } tracks/2/type = "method" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath(".") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(1), "transitions": PackedFloat32Array(1), "values": [{ "args": [], "method": &"swapped_out" }] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_2kb78"] _data = { "empty": SubResource("Animation_8akx8"), "inspect": SubResource("Animation_21rul"), "reload": SubResource("Animation_rlxei"), "shoot": SubResource("Animation_n8vac"), "swap_in": SubResource("Animation_w02ee"), "swap_out": SubResource("Animation_nvmxj") } [node name="revolver1" node_paths=PackedStringArray("chamber", "anim_player", "barrel_raycast", "casing_ejectors", "audio_fire", "audio_empty", "audio_reload") instance=ExtResource("1_i5f84")] script = ExtResource("2_7rsti") gun_name = "Ye Ol' Revolver" fire_mode = 1 recoil_amount = 1.0 max_ammo = 6 start_mags = 4 bullet_damage = 5 bullet_speed = 300 bullet_drop = 0.0 random_spread_amt = 0.1 chamber = NodePath("revolver1/Chamber") bullet = ExtResource("3_tru5y") bullethole = ExtResource("4_ubqgq") casing = ExtResource("5_m3vsl") anim_player = NodePath("AnimationPlayer") barrel_raycast = NodePath("revolver1/RayCastBarrel") casing_ejectors = NodePath("revolver1/Chamber/RayCastCasing1") audio_fire = NodePath("Audio/Fire") audio_empty = NodePath("Audio/Empty") audio_reload = NodePath("Audio/Reload") [node name="revolver1" parent="." index="0"] transform = Transform3D(-2.17199e-06, 0.6, 0, -0.6, -2.17199e-06, 0, 0, 0, 0.6, 0, 0, -0.073) [node name="Chamber" parent="revolver1" index="0"] transform = Transform3D(0.866025, 5.85622e-09, 0.5, 0.5, -2.18557e-08, -0.866025, 5.85622e-09, 1, -2.18557e-08, -0.0143475, 0, -0.0849619) [node name="casing" parent="revolver1/Chamber" index="6"] transform = Transform3D(-0.611184, 1.18824e-07, 0.791489, -9.55509e-08, -1, 7.63428e-08, 0.791489, -2.89681e-08, 0.611184, -0.110813, 0.140209, -0.066206) visible = false [node name="casing_001" parent="revolver1/Chamber" index="7"] visible = false [node name="casing_002" parent="revolver1/Chamber" index="8"] visible = false [node name="casing_003" parent="revolver1/Chamber" index="9"] visible = false [node name="casing_004" parent="revolver1/Chamber" index="10"] visible = false [node name="casing_005" parent="revolver1/Chamber" index="11"] visible = false [node name="RayCastCasing1" type="RayCast3D" parent="revolver1/Chamber" index="12"] transform = Transform3D(4.17233e-07, 0, 2.10229, -2.98023e-07, -2.10229, -5.96046e-08, 2.1023, -2.38419e-07, -2.98023e-07, -0.00360727, 0.139269, -0.137243) [node name="RayCastCasing2" type="RayCast3D" parent="revolver1/Chamber" index="13"] transform = Transform3D(4.17229e-07, 3.96411e-19, 2.10229, -2.98023e-07, -2.10229, -5.96046e-08, 2.1023, -2.38418e-07, -2.98026e-07, -0.125048, 0.139269, -0.0746504) [node name="RayCastCasing3" type="RayCast3D" parent="revolver1/Chamber" index="14"] transform = Transform3D(4.17226e-07, 4.94667e-19, 2.10229, -2.98023e-07, -2.10229, -5.96046e-08, 2.1023, -2.38418e-07, -2.9803e-07, -0.108792, 0.1392, 0.0755936) [node name="RayCastCasing4" type="RayCast3D" parent="revolver1/Chamber" index="15"] transform = Transform3D(4.17224e-07, 4.91279e-19, 2.10229, -2.98023e-07, -2.10229, -5.96046e-08, 2.1023, -2.38418e-07, -2.98031e-07, 0.000137257, 0.1392, 0.0979677) [node name="RayCastCasing5" type="RayCast3D" parent="revolver1/Chamber" index="16"] transform = Transform3D(4.17223e-07, 5.99699e-19, 2.10229, -2.98023e-07, -2.10229, -5.96046e-08, 2.1023, -2.38418e-07, -2.98032e-07, 0.123611, 0.1392, 0.0697919) [node name="RayCastCasing6" type="RayCast3D" parent="revolver1/Chamber" index="17"] transform = Transform3D(4.17223e-07, 7.04731e-19, 2.10229, -2.98023e-07, -2.10229, -5.96046e-08, 2.1023, -2.38418e-07, -2.98033e-07, 0.126097, 0.1392, -0.0677698) [node name="Trigger" parent="revolver1" index="2"] transform = Transform3D(-0.86282, -0.50551, 1.82994e-06, 0, -3.61999e-06, -1, 0.50551, -0.86282, 3.1234e-06, 0.226752, 0, -0.00209358) [node name="RayCastBarrel" type="RayCast3D" parent="revolver1" index="3"] transform = Transform3D(1.87678, -5.68434e-14, 0, 5.68434e-14, 1.87677, 0, 0, 0, 1.87678, -0.142459, 0.000826949, -1.92175) target_position = Vector3(0, 0, -0.1) [node name="SpotLight3D" type="SpotLight3D" parent="revolver1" index="4"] transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37115e-08, 0, 0, 0, 1, 0, 0, -1.94881) light_color = Color(0.965385, 0.844179, 0.572893, 1) light_energy = 0.0 light_projector = ExtResource("3_q41fl") light_size = 0.229 shadow_enabled = true spot_range = 7.0 spot_angle = 70.0 spot_angle_attenuation = 0.353554 [node name="AnimationPlayer" type="AnimationPlayer" parent="." index="1"] libraries = { "": SubResource("AnimationLibrary_2kb78") } [node name="Audio" type="Node3D" parent="." index="2"] [node name="Fire" type="AudioStreamPlayer3D" parent="Audio" index="0"] stream = ExtResource("8_thfjw") volume_db = 5.0 bus = &"SFX" [node name="Empty" type="AudioStreamPlayer3D" parent="Audio" index="1"] stream = ExtResource("9_xt6tc") bus = &"SFX" [node name="Reload" type="AudioStreamPlayer3D" parent="Audio" index="2"] stream = ExtResource("10_0uh43") volume_db = 3.0 bus = &"SFX"