From 8264c9c1b85ef2971ce1c297eb076cf4b75a03eb Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Mon, 11 Sep 2023 16:23:13 -0400 Subject: [PATCH] It's blood. --- graphics/particles/dust.png | Bin 5018 -> 5216 bytes maps/abyss_scholar.tscn | 13 +++++++----- maps/canopy.tscn | 8 ++++--- maps/cave.tscn | 13 +++++++----- maps/graveyard.tscn | 13 +++++++----- maps/hills_scholar.tscn | 8 ++++--- maps/mountain.tscn | 13 +++++++----- maps/rust.tscn | 13 +++++++----- maps/station.tscn | 8 ++++--- maps/test_room.tscn | 8 ++++--- objects/environment/blood/blood_splatter.tscn | 12 ----------- objects/environment/blood/blood_spray.gd | 20 +++++++++++++----- objects/environment/blood/blood_spray.tscn | 4 ++-- .../{blood_splatter.gd => blood_stain.gd} | 0 objects/environment/blood/blood_stain.tscn | 12 +++++++++++ objects/player/player.gd | 2 +- objects/player/player.tscn | 3 ++- shaders/can_stain.tres | 15 +++++++++++++ 18 files changed, 107 insertions(+), 58 deletions(-) delete mode 100644 objects/environment/blood/blood_splatter.tscn rename objects/environment/blood/{blood_splatter.gd => blood_stain.gd} (100%) create mode 100644 objects/environment/blood/blood_stain.tscn create mode 100644 shaders/can_stain.tres diff --git a/graphics/particles/dust.png b/graphics/particles/dust.png index 2b421f16db59052aac7906f5e71ce8dff37431f3..9531a48156a82035001ab878ca4dab2305fd7b5a 100644 GIT binary patch delta 1663 zcmV-_27vjRC*UZMB!7*1R9JLUVRs;Ka&Km7Y-J#Hd2nSQWq4_3004N})mK}R>nIHU zXBD#qB=Hc-;bE#~2ebS+VC-~q)3=@O+^QK=X*63bu&IN`_AZ33{y!0FNnA3Vr%YU8@`_s{yP{z#P7II$t za<4DTA?u@~g+OSJY}A1FH99orZ~!d%(9 zh3+~DvsyFl!1viA+flNxE-a8pGbyGxRa29A&H+4W5Em0#9L4a2tb-v zplr`%e$34+M}MDOSGHvlq;JFc18b*zteay-pXgT^oUCbB3vy4Z4X1pnCx19P7UYb> zA0ul$Bj4$BIzxP@?DgxtX`h?MF0u>AMOd3UwlZh1DHNHrtAt zYPO=&3g(Fz+;?)+C{w3x%1RXw9d8^VnX6%$N(D)YtAC7QaAQ#Ch#G04sF=Ffkno9x zX4o{tRZ`oGZ3I&$I3v9B?P0DO_C9)vaPpkF0xq8A3oU{EAz%hZsIR2@nc!nQUV~Qw zgMOx2vB7MM*Kxc7W zzyNvA4Syini3E^??m%q36KR^V=Ut6cRh&Va28rMXT@13E^QfQb6g8B+c;~$jK6>@Z z=OAHpUI;Oa<2gr(F8UZ^jA~+vSw)?C4H{K7X-=F3$G1=D)1)b-oDnp`bH>{l200fl zQe5#RlvuPRQ*uT5R9AfsHCC;u=EhAL8oY%Tn}4>{@*(3!WK8((v~|)txI>^ z_t2y1+EdRbYm3%j#tW>`VvQ$L!!Vw#K^x=Yg2r*;2WMc69f9x&*1#AFdvIozoa4dV z;0)g*bcJVt^n;v6gE27ZHe%oD&KV{Ag>Mk<(D{s$OYvU_XCu4gX zj(?A`X9NIy|Awv}eyQqj`twIqhgj%6h2a`*`ph-iL;^HW{799Lo ztU9+0Yt2!bCVt}afBE>hzEl0u7E503ls?%w0>9U#=pOtZRTfTr7KDiIem*;O&{ zieB_1gdoOcW*Kvmltjnzbq^n3@1i`b^SM9AfSR*^7~m6$W6UsZ;tk@NP21qSPaI}N zStULvo-pZx#E)E8JbvR`a9QA)VKbeYCk_*fg*H~&m=#Tpc$zq(YC7c$8IM)YTb#9W zl{N3lUl`2kE6ZG`If4Whu>=Vs6jV_{88)J{>ZDjm(SE#xf7ta)4lwj&$foQ{ewso)54@kzH)Vm)Ezq~-_14_S=>w3au97#v!67hKpzQSy z@9t^u?cX!a{(b;}{&K7X5e&Eh01jJeR9JMgXa#ZslLQAaliCI2x@G+|{eI5#z7EoC`1IW{>pH8D40GLsSrP?O9E8IxiNJq|fEG&MOkGcq?Z zIW{&qldT9D0W_1~2vj~fIx#U+F*Q0dGdeXgEig1XFfbwtARr)kZE!kGZ)9m^c|>7! zWj!J?FfubbFgZFgF;p=%Ix#akH8L$QG_!IE4gr&$30xyGGBr6gGGaI_G%_+aEi^bW zGA&{`HDxU`V=-YkIc8&JHD!|=3P}(-Eio}vF*Q0dGdeXgEig2*bqZ?;77ao4VE_OC z24YJ`L;(K){{a7>y{D6t_7Wcn2@4YqG?)JKJChz0C`>m=L_t&-(~XWn4geqs!&d(P zXT8XRBp7>wbqPp6tV7Qvi5^q{VvFh_`s{)qD)M#qVgnZy90JZ5`BDG?002ov JPDHLkV1kwv^Q`~? delta 1632 zcmV-m2A}!hD4HjbB!8lMR9JLUVRs;Ka&Km7Y-J#Hd2nSQWq4_3004N})mB-u<0=gO zXBE8!Br%BPFqo>|!CQVGFmZ;PTb4C5&P!kJ z^<_C^eRQ-C2QBy#Y9qQl*>jWHz5m92}& zXB$9!PZZ0$WM!(A7U`@k%A@{V}aLA{6@)t*!7jnem z+sImv$ane{ju1DMy?(tn?Q_%EMRozX2y0W9t;`wh%E;neH5^78460T!86#n+&9qqUV~Qw zgMOx2vB7MM*J;LIvH$Ah`S z8NNs83eN!P2RV%fV_?v2#JEFX7H-~R~+?H_9;$SZ}XhnM=2Y=)?-?5+Nyaq=u_V}z6_kb zwe~w)W(W2;E^}=1BVTrR^cC={@|q-b0+=by31B7`^9f_O(wqQh1~eytnbMp9=1H&p z49t|~2f?38a{`zt%?V)kf;{Im+Uw|r(=z7oxQspJG<1NmzidD#Q;sW%~T>TX0oed;1xa$Acz_C%FHt6Bq@oG^>t6(RCiIH)w%D_>Qi$T ze*=6Xaf}(JO}s%oy=fbq_ld)-D67Qh#N#Gikob}7ipOu93oZ*hGi;_)^Tc6dvCzg! z8?&OR5l<0ER86ORA>*;id5g1FuCnGm`3pliePx;Jv__D?B9QJ zd2?%?tF_W void: + sprite.self_modulate = color + + func _physics_process(delta: float) -> void: sprite.global_rotation = linear_velocity.angle() func _on_body_entered(body: Node) -> void: - if body is TileMap: - var splatter = BloodSplatter.instance() - splatter.global_position = global_position - get_parent().add_child(splatter) + if body.is_in_group("can_stain"): + var stain = BloodStain.instance() + stain.color = color + stain.global_position = global_position + body.add_child(stain) + queue_free() + elif body is TileMap: queue_free() diff --git a/objects/environment/blood/blood_spray.tscn b/objects/environment/blood/blood_spray.tscn index 3082325..0ac97ef 100644 --- a/objects/environment/blood/blood_spray.tscn +++ b/objects/environment/blood/blood_spray.tscn @@ -12,8 +12,8 @@ contact_monitor = true script = ExtResource( 3 ) [node name="Sprite" type="Sprite" parent="."] -modulate = Color( 0.960784, 0.2, 0.258824, 1 ) -scale = Vector2( 0.5, 0.5 ) +self_modulate = Color( 0.960784, 0.2, 0.258824, 1 ) +scale = Vector2( 0.75, 0.5 ) texture = ExtResource( 1 ) offset = Vector2( 2, 0 ) flip_h = true diff --git a/objects/environment/blood/blood_splatter.gd b/objects/environment/blood/blood_stain.gd similarity index 100% rename from objects/environment/blood/blood_splatter.gd rename to objects/environment/blood/blood_stain.gd diff --git a/objects/environment/blood/blood_stain.tscn b/objects/environment/blood/blood_stain.tscn new file mode 100644 index 0000000..de980e2 --- /dev/null +++ b/objects/environment/blood/blood_stain.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=1] +[ext_resource path="res://objects/environment/blood/blood_stain.gd" type="Script" id=2] + +[node name="BloodStain" type="Light2D"] +light_mask = 3 +texture = ExtResource( 1 ) +color = Color( 0.960784, 0.2, 0.258824, 1 ) +mode = 2 +range_item_cull_mask = 2 +script = ExtResource( 2 ) diff --git a/objects/player/player.gd b/objects/player/player.gd index 42c1276..280c0df 100644 --- a/objects/player/player.gd +++ b/objects/player/player.gd @@ -276,7 +276,7 @@ func _on_Dead_state_entered() -> void: particles.global_position = death_splatter_position.global_position particles.emitting = true get_parent().add_child(particles) - for i in 32: + for i in 16: var spray: RigidBody2D = BloodSpray.instance() spray.global_position = global_position spray.linear_velocity = Vector2(80.0, 0.0).rotated(randf() * TAU) diff --git a/objects/player/player.tscn b/objects/player/player.tscn index f0cd952..ec0e15b 100644 --- a/objects/player/player.tscn +++ b/objects/player/player.tscn @@ -1066,6 +1066,7 @@ angle_random = 1.0 scale_amount = 0.25 scale_amount_random = 0.5 scale_amount_curve = SubResource( 13 ) +color = Color( 0.956863, 0.92549, 0.831373, 1 ) [node name="PushableDetector" type="RayCast2D" parent="Graphics"] unique_name_in_owner = true @@ -1553,8 +1554,8 @@ align = 1 [connection signal="state_entered" from="StateChart/Root/Movement/Grounded/Shooting" to="." method="_on_Shooting_state_entered"] [connection signal="state_entered" from="StateChart/Root/Movement/Grounded/Pushing" to="." method="_on_Pushing_state_entered"] [connection signal="state_physics_processing" from="StateChart/Root/Movement/Grounded/Pushing" to="." method="_process_pushing"] -[connection signal="state_entered" from="StateChart/Root/Movement/Airborne" to="." method="_on_Airborne_state_entered"] [connection signal="state_entered" from="StateChart/Root/Movement/Airborne" to="." method="reset_fall_speed"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne" to="." method="_on_Airborne_state_entered"] [connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne" to="." method="_process_gravity"] [connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/Jump" to="." method="_process_horizontal_movement"] [connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/Jump" to="." method="_process_jump"] diff --git a/shaders/can_stain.tres b/shaders/can_stain.tres new file mode 100644 index 0000000..84a2d44 --- /dev/null +++ b/shaders/can_stain.tres @@ -0,0 +1,15 @@ +[gd_resource type="ShaderMaterial" load_steps=2 format=2] + +[sub_resource type="Shader" id=2] +code = "shader_type canvas_item; + +void fragment() { + COLOR = texture(TEXTURE, UV); + // fucked up lighting change to make blood work perfectly + if (AT_LIGHT_PASS) { + COLOR = vec4(1.0, 1.0, 1.0, COLOR.a); + } +}" + +[resource] +shader = SubResource( 2 )