[gd_scene load_steps=34 format=3 uid="uid://cmemgijh6nfmk"] [ext_resource type="PackedScene" uid="uid://bxbjfev0lhwws" path="res://behaviours/sprite_left_right.tscn" id="1_11voy"] [ext_resource type="Script" path="res://entities/chupacabra.gd" id="1_s4qg1"] [ext_resource type="Texture2D" uid="uid://dcm4txm5gxogt" path="res://entities/chupacabra_left.png" id="2_3kvme"] [ext_resource type="Texture2D" uid="uid://ba01u171xjl7" path="res://entities/chupacabra_right.png" id="3_rolht"] [ext_resource type="Texture2D" uid="uid://bpg0do7wlvqdj" path="res://entities/chupacabra_drag_left.png" id="5_hxrq2"] [ext_resource type="Texture2D" uid="uid://do1nfcfcs6jgx" path="res://entities/chupacabra_drag_right.png" id="6_kmadh"] [ext_resource type="PackedScene" uid="uid://g8t6dt0ye6n3" path="res://behaviours/timer_stddev.tscn" id="6_qsds3"] [ext_resource type="PackedScene" uid="uid://ccul07w0h36nu" path="res://behaviours/sacrificable.tscn" id="7_igror"] [ext_resource type="PackedScene" uid="uid://djcwis8ycrq85" path="res://behaviours/sampler_priority.tscn" id="7_nq78n"] [ext_resource type="PackedScene" uid="uid://dk1ipq7dhkhf3" path="res://behaviours/move_straight.tscn" id="8_7fxrt"] [ext_resource type="PackedScene" uid="uid://cm67ko1k6kn4u" path="res://behaviours/priority.tscn" id="9_7i81t"] [ext_resource type="PackedScene" uid="uid://cbg5kgwxusvxf" path="res://behaviours/cursor_detector.tscn" id="10_3wu3x"] [ext_resource type="PackedScene" uid="uid://rx24bppccih7" path="res://behaviours/move_physics.tscn" id="12_oildi"] [ext_resource type="PackedScene" uid="uid://cml7rqvyfuagx" path="res://behaviours/move_towards.tscn" id="13_vh42q"] [ext_resource type="PackedScene" uid="uid://dijcjahkddudv" path="res://behaviours/draggable.tscn" id="13_wcydr"] [ext_resource type="PackedScene" uid="uid://ctpn4hvkhxoi3" path="res://behaviours/tracker_edible.tscn" id="14_mk76g"] [ext_resource type="AudioStream" uid="uid://d0feiq5s6fnux" path="res://entities/imp_drag.wav" id="14_u2uf4"] [ext_resource type="AudioStream" uid="uid://cwsg776c11xfc" path="res://entities/fall.ogg" id="15_q7bw3"] [ext_resource type="PackedScene" uid="uid://dti7l0d40hhgt" path="res://behaviours/target_picker.tscn" id="15_xay6p"] [ext_resource type="PackedScene" uid="uid://jg7qkbswgqjc" path="res://behaviours/eater.tscn" id="16_ltvqn"] [ext_resource type="AudioStream" uid="uid://c1yuksnjdd6g2" path="res://entities/imp_eat.ogg" id="17_ccla5"] [sub_resource type="CircleShape2D" id="CircleShape2D_mnexs"] radius = 32.0 [sub_resource type="Animation" id="Animation_gokbg"] length = 0.001 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("Sprite:scale") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(2, 2)] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("Sprite:rotation") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("Sprite:position") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(0, 0)] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true tracks/3/path = NodePath("Sprite:left_texture") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [ExtResource("2_3kvme")] } tracks/4/type = "value" tracks/4/imported = false tracks/4/enabled = true tracks/4/path = NodePath("Sprite:right_texture") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [ExtResource("3_rolht")] } [sub_resource type="Animation" id="Animation_5yt72"] resource_name = "drag_loop" loop_mode = 2 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("Sprite:scale") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(2.4, 2.4)] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("Sprite:rotation") tracks/1/interp = 2 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("Sprite: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, 0.6, 0.7, 0.8, 0.9, 1), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), "update": 0, "values": [Vector2(-2, -2), Vector2(1, -1), Vector2(-1, 1), Vector2(1, 1), Vector2(-2, 0), Vector2(1, 1), Vector2(1, -1), Vector2(-1, 1), Vector2(2, 0), Vector2(-1, -1), Vector2(0, 0)] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true tracks/3/path = NodePath("Sprite:left_texture") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [ExtResource("5_hxrq2")] } tracks/4/type = "value" tracks/4/imported = false tracks/4/enabled = true tracks/4/path = NodePath("Sprite:right_texture") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [ExtResource("6_kmadh")] } [sub_resource type="Animation" id="Animation_2igbw"] resource_name = "drag_start" length = 0.2 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("Sprite:scale") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0, 0.2), "transitions": PackedFloat32Array(1, 1), "update": 0, "values": [Vector2(2, 2), Vector2(2.4, 2.4)] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("Sprite:rotation") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("Sprite:left_texture") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [ExtResource("5_hxrq2")] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true tracks/3/path = NodePath("Sprite:right_texture") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [ExtResource("6_kmadh")] } [sub_resource type="Animation" id="Animation_3namd"] resource_name = "run" length = 0.001 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("Sprite:scale") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(2, 2)] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("Sprite:rotation") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("Sprite:position") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(0, 0)] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true tracks/3/path = NodePath("Sprite:left_texture") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [ExtResource("2_3kvme")] } tracks/4/type = "value" tracks/4/imported = false tracks/4/enabled = true tracks/4/path = NodePath("Sprite:right_texture") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [ExtResource("3_rolht")] } [sub_resource type="Animation" id="Animation_fsmcn"] resource_name = "sit" length = 0.5 loop_mode = 2 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath("Sprite:scale") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(2, 2)] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath("Sprite:rotation") tracks/1/interp = 2 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0, 0.5), "transitions": PackedFloat32Array(1, 1), "update": 0, "values": [0.0349066, -0.0349066] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("Sprite:position") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(0, 0)] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true tracks/3/path = NodePath("Sprite:left_texture") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [ExtResource("2_3kvme")] } tracks/4/type = "value" tracks/4/imported = false tracks/4/enabled = true tracks/4/path = NodePath("Sprite:right_texture") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [ExtResource("3_rolht")] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_okyam"] _data = { "RESET": SubResource("Animation_gokbg"), "drag_loop": SubResource("Animation_5yt72"), "drag_start": SubResource("Animation_2igbw"), "run": SubResource("Animation_3namd"), "sit": SubResource("Animation_fsmcn") } [sub_resource type="CircleShape2D" id="CircleShape2D_wya3j"] radius = 320.0 [sub_resource type="CircleShape2D" id="CircleShape2D_dcrcb"] radius = 48.0 [sub_resource type="CircleShape2D" id="CircleShape2D_kjhx2"] radius = 25.19 [sub_resource type="CircleShape2D" id="CircleShape2D_vm5g3"] radius = 32.0 [sub_resource type="CircleShape2D" id="CircleShape2D_binyt"] radius = 40.0 [node name="Chupacabra" type="CharacterBody2D"] y_sort_enabled = true collision_layer = 8 collision_mask = 14 motion_mode = 1 script = ExtResource("1_s4qg1") skitter_directions = Array[Vector2]([Vector2(-1, 0), Vector2(1, 0)]) [node name="Sprite" parent="." instance=ExtResource("1_11voy")] unique_name_in_owner = true y_sort_enabled = true scale = Vector2(2, 2) texture = ExtResource("2_3kvme") left_texture = ExtResource("2_3kvme") right_texture = ExtResource("3_rolht") [node name="Shape" type="CollisionShape2D" parent="."] shape = SubResource("CircleShape2D_mnexs") [node name="Animator" type="AnimationPlayer" parent="."] unique_name_in_owner = true libraries = { "": SubResource("AnimationLibrary_okyam") } next/drag_loop = &"drag_loop" next/drag_start = &"drag_loop" next/run = &"run" next/sit = &"sit" [node name="Sacrificable" parent="." instance=ExtResource("7_igror")] kind = &"Chupacabra" [node name="MovementSampler" parent="." instance=ExtResource("7_nq78n")] [node name="MovementIdle" parent="." instance=ExtResource("8_7fxrt")] speed = 0.0 enabled = false [node name="IdlePriority" parent="MovementIdle" instance=ExtResource("9_7i81t")] default_priority = 10 alternative_priority = 10 [node name="BoredTimer" parent="MovementIdle" instance=ExtResource("6_qsds3")] one_shot = true autostart = true mean_secs = 5.0 min_secs = 1.0 max_secs = 9.0 [node name="MovementWander" parent="." instance=ExtResource("8_7fxrt")] unique_name_in_owner = true speed = 333.0 enabled = false [node name="WanderPriority" parent="MovementWander" instance=ExtResource("9_7i81t")] alternative_priority = 20 [node name="TiredTimer" parent="MovementWander" instance=ExtResource("6_qsds3")] one_shot = true mean_secs = 0.6 deviation = 0.5 min_secs = 0.3 max_secs = 1.2 [node name="TrackerMeat" parent="MovementWander" instance=ExtResource("14_mk76g")] collision_mask = 8 acceptable_diets = Array[StringName]([&"Meat"]) [node name="Shape" type="CollisionShape2D" parent="MovementWander/TrackerMeat"] shape = SubResource("CircleShape2D_wya3j") debug_color = Color(1, 0.498039, 0, 0) [node name="TargetPicker" parent="MovementWander/TrackerMeat" node_paths=PackedStringArray("tracker") instance=ExtResource("15_xay6p")] tracker = NodePath("..") [node name="CursorSense" parent="MovementWander" instance=ExtResource("10_3wu3x")] [node name="Shape" type="CollisionShape2D" parent="MovementWander/CursorSense"] shape = SubResource("CircleShape2D_dcrcb") debug_color = Color(1, 1, 0, 0) [node name="MovementTrap" parent="." instance=ExtResource("13_vh42q")] speed = 600.0 enabled = false [node name="TrapPriority" parent="MovementTrap" instance=ExtResource("9_7i81t")] alternative_priority = 45 [node name="TrackerTrap" parent="MovementTrap" instance=ExtResource("14_mk76g")] collision_mask = 8 acceptable_diets = Array[StringName]([&"Trap"]) [node name="Shape" type="CollisionShape2D" parent="MovementTrap/TrackerTrap"] shape = SubResource("CircleShape2D_kjhx2") debug_color = Color(1, 0.498039, 0, 0) [node name="TargetPicker" parent="MovementTrap/TrackerTrap" node_paths=PackedStringArray("tracker") instance=ExtResource("15_xay6p")] tracker = NodePath("..") [node name="MovementDrag" parent="." instance=ExtResource("12_oildi")] enabled = false [node name="DragPriority" parent="MovementDrag" instance=ExtResource("9_7i81t")] alternative_priority = 50 [node name="Draggable" parent="MovementDrag" instance=ExtResource("13_wcydr")] [node name="Shape" type="CollisionShape2D" parent="MovementDrag/Draggable"] shape = SubResource("CircleShape2D_vm5g3") debug_color = Color(1, 1, 1, 0) [node name="DragSound" type="AudioStreamPlayer2D" parent="MovementDrag"] stream = ExtResource("14_u2uf4") bus = &"DragSounds" [node name="FallSound" type="AudioStreamPlayer2D" parent="MovementDrag"] stream = ExtResource("15_q7bw3") bus = &"FallSounds" [node name="Eater" parent="." instance=ExtResource("16_ltvqn")] unique_name_in_owner = true acceptable_diets = Array[StringName]([&"Meat"]) [node name="Shape" type="CollisionShape2D" parent="Eater"] shape = SubResource("CircleShape2D_binyt") debug_color = Color(1, 0, 0, 0) [node name="EatSound" type="AudioStreamPlayer2D" parent="Eater"] stream = ExtResource("17_ccla5") bus = &"KillSounds" [connection signal="sacrificed" from="Sacrificable" to="." method="queue_free"] [connection signal="move" from="MovementIdle" to="." method="_on_move"] [connection signal="move_disabled" from="MovementIdle" to="MovementIdle/BoredTimer" method="stop"] [connection signal="move_enabled" from="MovementIdle" to="MovementIdle/BoredTimer" method="start"] [connection signal="move_enabled" from="MovementIdle" to="Animator" method="play" binds= [&"sit"]] [connection signal="timeout" from="MovementIdle/BoredTimer" to="MovementIdle/BoredTimer" method="randomize_wait_time"] [connection signal="timeout" from="MovementIdle/BoredTimer" to="MovementWander/WanderPriority" method="priority_alternative"] [connection signal="move" from="MovementWander" to="." method="_on_move"] [connection signal="move_disabled" from="MovementWander" to="MovementWander/TiredTimer" method="stop"] [connection signal="move_enabled" from="MovementWander" to="." method="_on_wander_enabled"] [connection signal="move_enabled" from="MovementWander" to="MovementWander/TiredTimer" method="start"] [connection signal="move_enabled" from="MovementWander" to="Animator" method="play" binds= [&"run"]] [connection signal="timeout" from="MovementWander/TiredTimer" to="MovementWander/WanderPriority" method="priority_default"] [connection signal="timeout" from="MovementWander/TiredTimer" to="MovementWander/TiredTimer" method="randomize_wait_time"] [connection signal="area_entered" from="MovementWander/TrackerMeat" to="MovementWander/TrackerMeat" method="check_diet_then_track"] [connection signal="area_exited" from="MovementWander/TrackerMeat" to="MovementWander/TrackerMeat" method="untrack"] [connection signal="tracked" from="MovementWander/TrackerMeat" to="MovementWander/TrackerMeat/TargetPicker" method="sample_target_if_null" unbinds=1] [connection signal="untracked" from="MovementWander/TrackerMeat" to="MovementWander/TrackerMeat/TargetPicker" method="clear_if_target"] [connection signal="target_changed" from="MovementWander/TrackerMeat/TargetPicker" to="MovementWander/TrackerMeat/TargetPicker" method="sample_target_if_null" unbinds=2] [connection signal="cursor_entered" from="MovementWander/CursorSense" to="MovementWander/WanderPriority" method="priority_alternative" unbinds=1] [connection signal="changed_target" from="MovementTrap" to="MovementTrap/TrapPriority" method="priority_conditional"] [connection signal="move" from="MovementTrap" to="." method="_on_move"] [connection signal="move_disabled" from="MovementTrap" to="." method="_on_freed"] [connection signal="move_enabled" from="MovementTrap" to="." method="_on_trapped"] [connection signal="area_entered" from="MovementTrap/TrackerTrap" to="MovementTrap/TrackerTrap" method="check_diet_then_track"] [connection signal="area_exited" from="MovementTrap/TrackerTrap" to="MovementTrap/TrackerTrap" method="untrack"] [connection signal="tracked" from="MovementTrap/TrackerTrap" to="MovementTrap/TrackerTrap/TargetPicker" method="sample_target_if_null" unbinds=1] [connection signal="untracked" from="MovementTrap/TrackerTrap" to="MovementTrap/TrackerTrap/TargetPicker" method="clear_if_target"] [connection signal="target_changed" from="MovementTrap/TrackerTrap/TargetPicker" to="MovementTrap" method="set_target" unbinds=1] [connection signal="target_changed" from="MovementTrap/TrackerTrap/TargetPicker" to="MovementTrap/TrackerTrap/TargetPicker" method="sample_target_if_null" unbinds=2] [connection signal="dragged" from="MovementDrag" to="." method="_on_dragged"] [connection signal="dragged" from="MovementDrag" to="MovementDrag/DragPriority" method="priority_alternative" unbinds=1] [connection signal="dragged" from="MovementDrag" to="MovementDrag/DragSound" method="play" unbinds=1] [connection signal="fallen" from="MovementDrag" to="." method="_on_fallen"] [connection signal="fallen" from="MovementDrag" to="MovementDrag/DragPriority" method="priority_default"] [connection signal="fallen" from="MovementDrag" to="MovementDrag/FallSound" method="play"] [connection signal="move" from="MovementDrag" to="." method="_on_move"] [connection signal="dragged" from="MovementDrag/Draggable" to="MovementDrag" method="drag"] [connection signal="dropped" from="MovementDrag/Draggable" to="MovementDrag" method="drop"] [connection signal="eaten" from="Eater" to="." method="_on_eater_eaten"] [connection signal="eaten" from="Eater" to="Eater/EatSound" method="play" unbinds=1]