From bcd8faf6501a8926fddac180902e738bf2afd947 Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Thu, 8 Jun 2023 19:15:07 -0400 Subject: [PATCH] eepy turtles --- graphics/enemy/turtle.png | Bin 0 -> 1064 bytes graphics/enemy/turtle.png.import | 35 ++++++++++++ maps/test_room.tscn | 25 ++++++--- objects/enemy/turtle.gd | 31 +++++++++++ objects/enemy/turtle.tscn | 91 +++++++++++++++++++++++++++++++ 5 files changed, 175 insertions(+), 7 deletions(-) create mode 100644 graphics/enemy/turtle.png create mode 100644 graphics/enemy/turtle.png.import create mode 100644 objects/enemy/turtle.gd create mode 100644 objects/enemy/turtle.tscn diff --git a/graphics/enemy/turtle.png b/graphics/enemy/turtle.png new file mode 100644 index 0000000000000000000000000000000000000000..981663f68bec2cae74298b9b135d94019c526874 GIT binary patch literal 1064 zcmV+@1lRkCP)EX>4Tx04R}tkv&MmKpe$iQ?*4Z9jqYYkfA!Yi;6gE6^c+H)C#RSm|Q=hNkfw2 z;wZQl9Q;_UI=DFN>fkB}f*&BRE>4OrQsV!TLW>v=j{EWM-sA2aAT+B?HG5_ORkMtA zG9hMjt7704eF$O*VZ>x+>T{Bmg6H_UhmWs!ah~OU?$0rhFPIGQiNv!^H!R`};^|FG z=e$oGVP!c_d`=uQ=z_$LTvuFv<6LrB;F%F4lb$Dz5R0WQR=Sv#4V8F`IGR^A$``UO z=Q(e2R;zW^z9)ZSsGzMZbDicWl32tNB#2N@M+H?_h|{W(Vj@lZ2@n5>Q#_6))YXATM32;bRa{vG? zBLDy{BLR4&KXw2B00(qQO+^Ri1_%}-5H{505&!@I8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0s%=xK~#9!?VG<#0%07+pSRqaYB_R?qe(*ABsdzwxgY;P z4NXlgZZ)~I6wy?FLG5lq2+K!nbFAM+hCiV+| zIRHGKUPCvZAFiol)N3WrK}_x!uC3V@>Hu!sCtzxS1^|vWmtqU{vfo$ZcKb8%{an5* z>a~*eZ~e6TgD$Hy`@`n<1ot)QXXClsdoFL=I9Z$x99ne*olI2!`o%rOTo%Vu6M>5o zw)k=Vs#g)#A2z?x*@lIK70&=yTW10(p}M0wqZWVA^ZpC|6C#8VLI@#4=7TDgOOHQ^ z$s^q#=!1&I1&=?8$=bfgq<;D!`XKrs`XKrs`XKrsLI@#)qSbnpI(d})$AVtGxw+HI zx|r1e>x8B5(526pE526pE526nugb+dqF&h3~EJBzmWnekB%1D@H(&0_)ANTu|$=ozP z-rk{^ce+n6yK%#t*q@qDQNPlP*!o8Hr{;r}t4E=qHMu`^AEfJRlKP;(_Urnf$ORg9 iAJnftp${U2n8p{B;$*MWor?GX0000 void: + if Engine.editor_hint: + return + spike_tween = create_tween().set_loops() + + spike_tween.tween_property(spike_shape, "disabled", true, 0.0) + spike_tween.tween_property(sprite, "frame_coords:y", 0.0, 0.0) + spike_tween.tween_interval(spike_delay) + spike_tween.tween_property(sprite, "frame_coords:y", 1.0, 0.0) + spike_tween.tween_interval(spike_time * 2.0) + spike_tween.tween_property(spike_shape, "disabled", false, 0.0) + spike_tween.tween_property(sprite, "frame_coords:y", 2.0, 0.0) + spike_tween.tween_interval(spike_time) + +func die() -> void: + spike_tween.kill() + spike_shape.disabled = true + sprite.frame_coords.y = 3 + Audio.play_sound(death_sound, Audio.ac_die) + $"%DeathSplatter".emitting = true diff --git a/objects/enemy/turtle.tscn b/objects/enemy/turtle.tscn new file mode 100644 index 0000000..032e842 --- /dev/null +++ b/objects/enemy/turtle.tscn @@ -0,0 +1,91 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://graphics/enemy/turtle.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/turtle.gd" type="Script" id=2] +[ext_resource path="res://objects/enemy/death_particles.tscn" type="PackedScene" id=3] + +[sub_resource type="Animation" id=1] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("ToFlip/Sprite:frame_coords:x") +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.0 ] +} + +[sub_resource type="Animation" id=2] +resource_name = "swim" +length = 0.9 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("ToFlip/Sprite:frame_coords:x") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3, 0.6, 0.9 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ 0.0, 1.0, 2.0, 0.0 ] +} + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 2.5, 2.5 ) + +[sub_resource type="RectangleShape2D" id=5] +extents = Vector2( 6, 1.5 ) + +[node name="Turtle" type="Node2D" groups=["enemy"]] +script = ExtResource( 2 ) +blood = false +speed = 20 +node_to_flip = NodePath("ToFlip") + +[node name="ToFlip" type="Node2D" parent="."] +position = Vector2( 8.5, 4 ) + +[node name="Sprite" type="Sprite" parent="ToFlip"] +unique_name_in_owner = true +position = Vector2( -9.5, -9 ) +texture = ExtResource( 1 ) +centered = false +hframes = 3 +vframes = 4 +frame = 6 + +[node name="SwimPlayer" type="AnimationPlayer" parent="ToFlip"] +root_node = NodePath("../..") +autoplay = "swim" +anims/RESET = SubResource( 1 ) +anims/swim = SubResource( 2 ) + +[node name="HeadHitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] +position = Vector2( 8.5, 4 ) + +[node name="HeadShape" type="CollisionShape2D" parent="HeadHitbox"] +position = Vector2( 11, -0.5 ) +shape = SubResource( 3 ) + +[node name="DeathSplatter" parent="HeadHitbox/HeadShape" instance=ExtResource( 3 )] +unique_name_in_owner = true + +[node name="SpikeHitbox" type="Area2D" parent="."] + +[node name="SpikeShape" type="CollisionShape2D" parent="SpikeHitbox"] +unique_name_in_owner = true +position = Vector2( 8.5, -1.5 ) +shape = SubResource( 5 ) + +[node name="Platform" type="KinematicBody2D" parent="."] + +[node name="PlatformShape" type="CollisionPolygon2D" parent="Platform"] +polygon = PoolVector2Array( 2, 0, 15, 0, 17, 4, 0, 4 ) + +[connection signal="area_entered" from="SpikeHitbox" to="." method="_on_Hitbox_area_entered"]