[gd_scene load_steps=21 format=2] [ext_resource path="res://objects/environment/turret/turret.gd" type="Script" id=1] [ext_resource path="res://graphics/enemy/turret.png" type="Texture" id=2] [ext_resource path="res://graphics/particles/dust.png" type="Texture" id=3] [sub_resource type="Animation" id=1] length = 0.001 loop = true tracks/0/type = "value" tracks/0/path = NodePath("Sprite:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ 0 ] } tracks/1/type = "value" tracks/1/path = NodePath("Sprite:flip_h") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ false ] } tracks/2/type = "value" tracks/2/path = NodePath("BarrelStart:rotation_degrees") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ 0.0 ] } tracks/3/type = "value" tracks/3/path = NodePath("BarrelStart/BarrelEnd/MuzzleFlash:emitting") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ false ] } tracks/4/type = "value" tracks/4/path = NodePath(".:shooting") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ false ] } [sub_resource type="Animation" id=2] resource_name = "cool_down" length = 4.0 tracks/0/type = "value" tracks/0/path = NodePath("Sprite:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "times": PoolRealArray( 0, 0.5, 1, 2, 3 ), "transitions": PoolRealArray( 1, 1, 1, 1, 1 ), "update": 1, "values": [ 8, 7, 6, 3, 0 ] } tracks/1/type = "value" tracks/1/path = NodePath("Sprite:flip_h") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ false ] } tracks/2/type = "value" tracks/2/path = NodePath("BarrelStart:rotation_degrees") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "times": PoolRealArray( 0, 1 ), "transitions": PoolRealArray( 1, 1 ), "update": 0, "values": [ 45.0, 0.0 ] } tracks/3/type = "value" tracks/3/path = NodePath("BarrelStart/BarrelEnd/MuzzleFlash:emitting") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ false ] } tracks/4/type = "value" tracks/4/path = NodePath(".:shooting") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ false ] } [sub_resource type="Animation" id=3] resource_name = "prime" length = 3.0 tracks/0/type = "value" tracks/0/path = NodePath("Sprite:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "times": PoolRealArray( 0, 1, 2 ), "transitions": PoolRealArray( 1, 1, 1 ), "update": 1, "values": [ 0, 1, 2 ] } tracks/1/type = "value" tracks/1/path = NodePath("Sprite:flip_h") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ false ] } tracks/2/type = "value" tracks/2/path = NodePath("BarrelStart:rotation_degrees") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "times": PoolRealArray( 0, 2 ), "transitions": PoolRealArray( 1, 1 ), "update": 0, "values": [ 0.0, 45.0 ] } tracks/3/type = "value" tracks/3/path = NodePath("BarrelStart/BarrelEnd/MuzzleFlash:emitting") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ false ] } tracks/4/type = "value" tracks/4/path = NodePath(".:shooting") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ false ] } [sub_resource type="Animation" id=4] resource_name = "shooting" length = 6.0 tracks/0/type = "value" tracks/0/path = NodePath("Sprite:frame") tracks/0/interp = 0 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "times": PoolRealArray( 0, 0.2, 0.4, 0.6, 0.8, 1, 1.2, 1.4, 1.6, 1.8, 1.9, 2, 2.2, 2.4, 2.6, 2.8, 3, 3.2, 3.4, 3.6, 3.8, 3.9, 4, 4.2, 4.4, 4.6, 4.8, 5, 5.2, 5.4, 5.6, 5.8, 6 ), "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), "update": 1, "values": [ 2, 1, 0, 1, 2, 2, 1, 0, 1, 2, 5, 5, 4, 3, 4, 5, 5, 4, 3, 4, 5, 8, 8, 7, 6, 7, 8, 8, 7, 6, 7, 8, 8 ] } tracks/1/type = "value" tracks/1/path = NodePath("Sprite:flip_h") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { "times": PoolRealArray( 0, 0.6, 1.4, 2.6, 3.4, 4.6, 5.4 ), "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1 ), "update": 1, "values": [ false, true, false, true, false, true, false ] } tracks/2/type = "value" tracks/2/path = NodePath("BarrelStart:rotation_degrees") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "times": PoolRealArray( 0, 0.6, 1, 1.6, 2, 2.2, 2.6, 3, 3.6, 4, 4.2, 4.6, 5, 5.6, 6 ), "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), "update": 0, "values": [ 45.0, 0.0, -45.0, 0.0, 45.0, 45.0, 0.0, -45.0, 0.0, 45.0, 45.0, 0.0, -45.0, 0.0, 45.0 ] } tracks/3/type = "value" tracks/3/path = NodePath("BarrelStart/BarrelEnd/MuzzleFlash:emitting") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "times": PoolRealArray( 0, 6 ), "transitions": PoolRealArray( 1, 1 ), "update": 1, "values": [ true, false ] } tracks/4/type = "value" tracks/4/path = NodePath(".:shooting") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "times": PoolRealArray( 0, 6 ), "transitions": PoolRealArray( 1, 1 ), "update": 1, "values": [ true, false ] } [sub_resource type="AnimationNodeAnimation" id=13] animation = "RESET" [sub_resource type="AnimationNodeAnimation" id=5] animation = "cool_down" [sub_resource type="AnimationNodeAnimation" id=6] animation = "prime" [sub_resource type="AnimationNodeAnimation" id=10] animation = "shooting" [sub_resource type="AnimationNodeStateMachineTransition" id=7] switch_mode = 2 advance_condition = "shooting" [sub_resource type="AnimationNodeStateMachineTransition" id=11] switch_mode = 2 auto_advance = true [sub_resource type="AnimationNodeStateMachineTransition" id=12] switch_mode = 2 auto_advance = true [sub_resource type="AnimationNodeStateMachineTransition" id=14] switch_mode = 2 advance_condition = "shooting" [sub_resource type="AnimationNodeStateMachine" id=8] states/RESET/node = SubResource( 13 ) states/RESET/position = Vector2( -29, -147.556 ) states/cool_down/node = SubResource( 5 ) states/cool_down/position = Vector2( -450.333, -154.667 ) states/prime/node = SubResource( 6 ) states/prime/position = Vector2( -111.667, -57.3333 ) states/shooting/node = SubResource( 10 ) states/shooting/position = Vector2( -583.667, -17.3333 ) transitions = [ "cool_down", "prime", SubResource( 7 ), "shooting", "cool_down", SubResource( 11 ), "prime", "shooting", SubResource( 12 ), "RESET", "prime", SubResource( 14 ) ] start_node = "RESET" graph_offset = Vector2( -880, -243 ) [sub_resource type="AnimationNodeStateMachinePlayback" id=9] [sub_resource type="Curve" id=15] _data = [ Vector2( 0, 1 ), 0.0, -2.23455, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] [sub_resource type="CurveTexture" id=16] width = 32 curve = SubResource( 15 ) [sub_resource type="ParticlesMaterial" id=17] emission_shape = 2 emission_box_extents = Vector3( 2, 0, 0 ) flag_disable_z = true direction = Vector3( 0, 1, 0 ) spread = 60.0 gravity = Vector3( 0, 0, 0 ) initial_velocity = 50.0 orbit_velocity = 0.0 orbit_velocity_random = 0.0 angle = 720.0 angle_random = 1.0 scale = 0.25 scale_random = 0.5 scale_curve = SubResource( 16 ) color = Color( 1, 0.968627, 0.431373, 1 ) [node name="Turret" type="Node2D"] script = ExtResource( 1 ) fire_rate = 20.0 bullet_spread = 20.0 [node name="Sprite" type="Sprite" parent="."] texture = ExtResource( 2 ) centered = false offset = Vector2( -4, 0 ) hframes = 3 vframes = 3 [node name="AnimationPlayer" type="AnimationPlayer" parent="."] playback_process_mode = 0 anims/RESET = SubResource( 1 ) anims/cool_down = SubResource( 2 ) anims/prime = SubResource( 3 ) anims/shooting = SubResource( 4 ) [node name="AnimationTree" type="AnimationTree" parent="."] tree_root = SubResource( 8 ) anim_player = NodePath("../AnimationPlayer") process_mode = 0 parameters/playback = SubResource( 9 ) parameters/conditions/shooting = false [node name="BarrelStart" type="Position2D" parent="."] position = Vector2( 4, 5 ) __meta__ = { "_gizmo_extents_": 2.0 } [node name="BarrelEnd" type="Position2D" parent="BarrelStart"] position = Vector2( 0, 9 ) __meta__ = { "_gizmo_extents_": 2.0 } [node name="MuzzleFlash" type="Particles2D" parent="BarrelStart/BarrelEnd"] z_index = -1 emitting = false lifetime = 0.15 explosiveness = 0.5 process_material = SubResource( 17 ) texture = ExtResource( 3 )