[gd_scene load_steps=34 format=3 uid="uid://cdveujchgxvto"] [ext_resource type="Texture2D" uid="uid://ds1n0xhxqlp4b" path="res://base-environments/youth_room/shaders/universe_noise.png" id="1_smr4a"] [ext_resource type="Texture2D" uid="uid://bdyg065h8vcdi" path="res://base-environments/youth_room/shaders/starlight-textures.png" id="2_xs227"] [ext_resource type="Script" uid="uid://2loic2eeec5b" path="res://logic-scenes/board/card.gd" id="3_xs227"] [ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="4_6gvdf"] [ext_resource type="Material" uid="uid://dt3f0biflfv3f" path="res://logic-scenes/card_burner/card_crumble.material" id="4_tbqa0"] [ext_resource type="Texture2D" uid="uid://kpmk21d8rlso" path="res://logic-scenes/board/particle_textures/star.png" id="5_36ca7"] [ext_resource type="Texture2D" uid="uid://bqilajx05t0eb" path="res://logic-scenes/board/particle_textures/void_nomotion.png" id="6_tbqa0"] [ext_resource type="PackedScene" uid="uid://dgj8krsb45s0l" path="res://logic-scenes/card_burner/card_fire.tscn" id="8_2m5s6"] [ext_resource type="PackedScene" uid="uid://uc6urpgv7n1y" path="res://logic-scenes/card_burner/cursor_candle.tscn" id="9_2m5s6"] [sub_resource type="GDScript" id="GDScript_s2d5l"] script/source = "extends Node2D func _ready() -> void: Input.mouse_mode = Input.MOUSE_MODE_HIDDEN TranslationServer.set_locale(\"en\") " [sub_resource type="Gradient" id="Gradient_6gvdf"] colors = PackedColorArray(0, 0, 0, 1, 0.0431373, 0, 0.184314, 1) [sub_resource type="GradientTexture2D" id="GradientTexture2D_36ca7"] gradient = SubResource("Gradient_6gvdf") width = 512 height = 512 fill = 1 fill_from = Vector2(0.491453, 0.534188) [sub_resource type="Shader" id="Shader_duh8f"] code = "shader_type canvas_item; render_mode blend_premul_alpha; uniform float nebula_brightness = 4; uniform vec2 nebula_scale = vec2(1.5); uniform sampler2D starlight_noise: repeat_enable; uniform sampler2D starlight_textures; uniform float rotation_speed = 0.02; uniform vec2 rotation_pivot = vec2(.8); uniform vec2 drift_compensation = vec2(0.1, -0.2); uniform float noise_strength = 0.2; // https://gist.github.com/ayamflow/c06bc0c8a64f985dd431bd0ac5b557cd vec2 rotateUV(vec2 uv, vec2 pivot, float rotation) { return vec2( cos(rotation) * (uv.x - pivot.x) + sin(rotation) * (uv.y - pivot.y) + pivot.x, cos(rotation) * (uv.y - pivot.y) - sin(rotation) * (uv.x - pivot.x) + pivot.y ); } //clamp(, .0, 1.0 void fragment() { COLOR *= vec4(.0, texture(starlight_textures,fract(UV*2.0)).x * 2.0*pow(max(sin(TIME + 10.0 * texture(starlight_textures,UV).y), .0), 5.0), texture(starlight_textures, clamp( UV / nebula_scale + drift_compensation + 1.0 * texture(starlight_noise, rotateUV( UV / nebula_scale + noise_strength * texture(starlight_noise, rotateUV(UV, -rotation_pivot, TIME*rotation_speed)).yz, rotation_pivot, TIME*rotation_speed) ).xz, .0, 1.0)) .z * nebula_brightness, clamp(pow(COLOR.x * 2.5 - (texture(starlight_noise, UV*2.0+TIME*.02).x + 0.8), 1.5), .0, 1.0) ) * COLOR.w; } " [sub_resource type="ShaderMaterial" id="ShaderMaterial_tbqa0"] shader = SubResource("Shader_duh8f") shader_parameter/nebula_brightness = 2.4 shader_parameter/nebula_scale = Vector2(1.3, 1.6) shader_parameter/starlight_noise = ExtResource("1_smr4a") shader_parameter/starlight_textures = ExtResource("2_xs227") shader_parameter/rotation_speed = 0.02 shader_parameter/rotation_pivot = Vector2(0.8, 0.8) shader_parameter/drift_compensation = Vector2(0.1, -0.2) shader_parameter/noise_strength = 0.2 [sub_resource type="Gradient" id="Gradient_7nxov"] interpolation_color_space = 2 colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 0) [sub_resource type="GradientTexture2D" id="GradientTexture2D_2m5s6"] gradient = SubResource("Gradient_7nxov") width = 2048 height = 1536 fill = 1 fill_from = Vector2(0.538462, 0.491453) fill_to = Vector2(1.3, -0.3) [sub_resource type="Animation" id="Animation_6gvdf"] length = 0.001 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath(".:position") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(454, 562)] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath(".:rotation") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [-0.0763936] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("../card2:position") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(1448, 570)] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true tracks/3/path = NodePath("../card2:rotation") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.115801] } tracks/4/type = "value" tracks/4/imported = false tracks/4/enabled = true tracks/4/path = NodePath("../card2:scale") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(1.42531, 1.42531)] } tracks/5/type = "value" tracks/5/imported = false tracks/5/enabled = true tracks/5/path = NodePath(".:scale") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(1.54848, 1.54848)] } tracks/6/type = "value" tracks/6/imported = false tracks/6/enabled = true tracks/6/path = NodePath("../card3/BackgroundSprite:noise_power") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [1.0] } tracks/7/type = "value" tracks/7/imported = false tracks/7/enabled = true tracks/7/path = NodePath("../card3/BackgroundSprite:noise_speed") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [10.0] } tracks/8/type = "value" tracks/8/imported = false tracks/8/enabled = true tracks/8/path = NodePath("../card3/BackgroundSprite:material:shader_parameter/fire_progression") tracks/8/interp = 1 tracks/8/loop_wrap = true tracks/8/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/9/type = "value" tracks/9/imported = false tracks/9/enabled = true tracks/9/path = NodePath("../CardFire:material:shader_parameter/fire_progression") tracks/9/interp = 1 tracks/9/loop_wrap = true tracks/9/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/10/type = "value" tracks/10/imported = false tracks/10/enabled = true tracks/10/path = NodePath("../card3/BackgroundSprite/GPUParticles2D:lifetime") tracks/10/interp = 1 tracks/10/loop_wrap = true tracks/10/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [2.0] } tracks/11/type = "value" tracks/11/imported = false tracks/11/enabled = true tracks/11/path = NodePath("../card3/BackgroundSprite/GPUParticles2D:speed_scale") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [3.0] } tracks/12/type = "value" tracks/12/imported = false tracks/12/enabled = true tracks/12/path = NodePath("../card3/BackgroundSprite/GPUParticles2D:explosiveness") tracks/12/interp = 1 tracks/12/loop_wrap = true tracks/12/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.5] } tracks/13/type = "value" tracks/13/imported = false tracks/13/enabled = true tracks/13/path = NodePath("../card3/BackgroundSprite/GPUParticles2D:emitting") tracks/13/interp = 1 tracks/13/loop_wrap = true tracks/13/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, "values": [true] } tracks/14/type = "value" tracks/14/imported = false tracks/14/enabled = true tracks/14/path = NodePath(".:burn_progress") tracks/14/interp = 1 tracks/14/loop_wrap = true tracks/14/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } [sub_resource type="Animation" id="Animation_mqpgs"] resource_name = "trailerstuff" length = 10.0 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true tracks/0/path = NodePath(".:position") tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0, 4.40667, 6.44, 9), "transitions": PackedFloat32Array(1, 1, 1, 1), "update": 0, "values": [Vector2(454, 562), Vector2(483, 534), Vector2(472, 605), Vector2(298, 586)] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true tracks/1/path = NodePath(".:rotation") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [-0.0763936] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true tracks/2/path = NodePath("../card2:position") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0, 6.64, 9.66), "transitions": PackedFloat32Array(1, 1, 1), "update": 0, "values": [Vector2(1448, 570), Vector2(1460, 524), Vector2(1645, 530)] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true tracks/3/path = NodePath("../card2:rotation") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.115801] } tracks/4/type = "value" tracks/4/imported = false tracks/4/enabled = true tracks/4/path = NodePath("../card2:scale") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(1.42531, 1.42531)] } tracks/5/type = "value" tracks/5/imported = false tracks/5/enabled = true tracks/5/path = NodePath(".:scale") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(1.54848, 1.54848)] } tracks/6/type = "value" tracks/6/imported = false tracks/6/enabled = true tracks/6/path = NodePath("../card3/BackgroundSprite:noise_power") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/keys = { "times": PackedFloat32Array(0, 5.46667, 8.6), "transitions": PackedFloat32Array(1, 1, 1), "update": 0, "values": [1.0, 2.0, 0.0] } tracks/7/type = "value" tracks/7/imported = false tracks/7/enabled = true tracks/7/path = NodePath("../card3/BackgroundSprite:noise_speed") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { "times": PackedFloat32Array(0, 9.56667), "transitions": PackedFloat32Array(1, 1), "update": 0, "values": [1.0, 10.0] } tracks/8/type = "value" tracks/8/imported = false tracks/8/enabled = true tracks/8/path = NodePath("../card3/BackgroundSprite:material:shader_parameter/fire_progression") tracks/8/interp = 1 tracks/8/loop_wrap = true tracks/8/keys = { "times": PackedFloat32Array(5.46, 9.64), "transitions": PackedFloat32Array(2.63902, 1), "update": 0, "values": [0.0, 2.0] } tracks/9/type = "value" tracks/9/imported = false tracks/9/enabled = true tracks/9/path = NodePath("../CardFire:material:shader_parameter/fire_progression") tracks/9/interp = 1 tracks/9/loop_wrap = true tracks/9/keys = { "times": PackedFloat32Array(5.50667, 9.61), "transitions": PackedFloat32Array(1.93187, 1), "update": 0, "values": [0.0, 2.0] } tracks/10/type = "value" tracks/10/imported = false tracks/10/enabled = true tracks/10/path = NodePath("../card3/BackgroundSprite/GPUParticles2D:lifetime") tracks/10/interp = 1 tracks/10/loop_wrap = true tracks/10/keys = { "times": PackedFloat32Array(3.68), "transitions": PackedFloat32Array(1), "update": 0, "values": [2.0] } tracks/11/type = "value" tracks/11/imported = false tracks/11/enabled = true tracks/11/path = NodePath("../card3/BackgroundSprite/GPUParticles2D:speed_scale") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/keys = { "times": PackedFloat32Array(3.88, 8.79), "transitions": PackedFloat32Array(1, 1), "update": 0, "values": [1.0, 2.0] } tracks/12/type = "value" tracks/12/imported = false tracks/12/enabled = true tracks/12/path = NodePath("../card3/BackgroundSprite/GPUParticles2D:explosiveness") tracks/12/interp = 1 tracks/12/loop_wrap = true tracks/12/keys = { "times": PackedFloat32Array(8.79), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.5] } tracks/13/type = "value" tracks/13/imported = false tracks/13/enabled = true tracks/13/path = NodePath("../card3/BackgroundSprite/GPUParticles2D:emitting") tracks/13/interp = 1 tracks/13/loop_wrap = true tracks/13/keys = { "times": PackedFloat32Array(7.24, 7.33), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [true, false] } tracks/14/type = "value" tracks/14/imported = false tracks/14/enabled = true tracks/14/path = NodePath(".:burn_progress") tracks/14/interp = 1 tracks/14/loop_wrap = true tracks/14/keys = { "times": PackedFloat32Array(1.07, 2.83, 6.39), "transitions": PackedFloat32Array(1, 1, 1), "update": 0, "values": [0.0, 0.5, 0.01] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_36ca7"] _data = { &"RESET": SubResource("Animation_6gvdf"), &"trailerstuff": SubResource("Animation_mqpgs") } [sub_resource type="Environment" id="Environment_2m5s6"] background_mode = 3 ambient_light_source = 2 glow_enabled = true glow_levels/2 = 0.2 glow_levels/5 = 2.0 glow_levels/6 = 0.5 glow_intensity = 0.5 glow_blend_mode = 1 [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_2m5s6"] radius = 110.0 height = 336.0 [sub_resource type="AtlasTexture" id="AtlasTexture_ykk13"] atlas = ExtResource("4_6gvdf") region = Rect2(0, 0, 600, 440) [sub_resource type="AtlasTexture" id="AtlasTexture_l43eo"] atlas = ExtResource("4_6gvdf") region = Rect2(600, 0, 600, 440) [sub_resource type="AtlasTexture" id="AtlasTexture_x2vcn"] atlas = ExtResource("4_6gvdf") region = Rect2(0, 440, 600, 440) [sub_resource type="AtlasTexture" id="AtlasTexture_e7401"] atlas = ExtResource("4_6gvdf") region = Rect2(600, 440, 600, 440) [sub_resource type="AtlasTexture" id="AtlasTexture_j7wh6"] atlas = ExtResource("4_6gvdf") region = Rect2(0, 880, 600, 440) [sub_resource type="SpriteFrames" id="SpriteFrames_s2d5l"] animations = [{ "frames": [{ "duration": 1.0, "texture": SubResource("AtlasTexture_ykk13") }, { "duration": 1.0, "texture": SubResource("AtlasTexture_l43eo") }, { "duration": 1.0, "texture": SubResource("AtlasTexture_x2vcn") }, { "duration": 1.0, "texture": SubResource("AtlasTexture_e7401") }, { "duration": 1.0, "texture": SubResource("AtlasTexture_j7wh6") }], "loop": true, "name": &"default", "speed": 5.0 }] [sub_resource type="GDScript" id="GDScript_m66ol"] script/source = "extends AnimatedSprite2D @onready var particles = $GPUParticles2D @onready var initial_position = position @export var noise_speed: float = 10 @export var noise_power: float = 1 @export var noisee_miltiplier: float = 0 var noise_position = randf() var noise: Noise = FastNoiseLite.new() @export var void_active: bool = true func _ready(): reduce_motion_changed(State.reduce_motion) func _process(delta): if void_active and not State.reduce_motion: noise_position += delta * noise_speed var random_position = Vector2(noise.get_noise_1d(noise_position*2), noise.get_noise_1d(-noise_position)) random_position = random_position.normalized() * pow(random_position.length()*2, noise_power) * 10 position = initial_position - random_position * noisee_miltiplier rotation = noise.get_noise_1d(noise_position*7) * random_position.length() * 0.01 particles.position = random_position else: position = initial_position func reduce_motion_changed(value:bool): $GPUParticles2D.visible = !value $Sprite2D.visible = value " [sub_resource type="Gradient" id="Gradient_7gsj1"] interpolation_mode = 2 offsets = PackedFloat32Array(0, 0.0529197, 0.191606, 1) colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0.491329, 1, 1, 1, 0) [sub_resource type="GradientTexture1D" id="GradientTexture1D_xxq8p"] gradient = SubResource("Gradient_7gsj1") [sub_resource type="Curve" id="Curve_elafx"] _data = [Vector2(0, 0), 0.0, 3.16529, 0, 0, Vector2(0.241056, 0.191336), 0.132446, 0.132446, 0, 0, Vector2(1, 1), 3.94797, 0.0, 0, 0] point_count = 3 [sub_resource type="CurveTexture" id="CurveTexture_cg0w1"] curve = SubResource("Curve_elafx") [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_43shd"] particle_flag_disable_z = true emission_shape = 6 emission_ring_axis = Vector3(0, 0, 1) emission_ring_height = 0.0 emission_ring_radius = 180.0 emission_ring_inner_radius = 185.0 emission_ring_cone_angle = 90.0 spread = 180.0 initial_velocity_min = -10.0 initial_velocity_max = 10.0 angular_velocity_min = -150.0 angular_velocity_max = -150.0 gravity = Vector3(0, 0, 0) radial_accel_min = -20.0 radial_accel_max = -5.0 tangential_accel_min = 20.0 tangential_accel_max = 30.0 attractor_interaction_enabled = false scale_min = 3.0 scale_max = 5.0 scale_curve = SubResource("CurveTexture_cg0w1") color_ramp = SubResource("GradientTexture1D_xxq8p") turbulence_noise_strength = 0.1 [node name="Node2D" type="Node2D"] script = SubResource("GDScript_s2d5l") [node name="Sprite2D" type="Sprite2D" parent="."] position = Vector2(1010, 498.75) scale = Vector2(4.23828, 3.06152) texture = SubResource("GradientTexture2D_36ca7") [node name="TextureRect3" type="TextureRect" parent="Sprite2D"] material = SubResource("ShaderMaterial_tbqa0") offset_left = 284.0 offset_top = 343.0 offset_right = 887.0 offset_bottom = 1081.0 rotation = -3.14159 texture = SubResource("GradientTexture2D_2m5s6") expand_mode = 1 [node name="Card" type="Area2D" parent="."] position = Vector2(454, 562) rotation = -0.0763936 scale = Vector2(1.54848, 1.54848) collision_layer = 0 collision_mask = 0 script = ExtResource("3_xs227") text = "c_hit" metadata/_custom_type_script = "uid://2loic2eeec5b" [node name="card2" type="Area2D" parent="."] position = Vector2(1448, 570) rotation = 0.115801 scale = Vector2(1.42531, 1.42531) collision_layer = 0 collision_mask = 0 script = ExtResource("3_xs227") text = "c_boy_stuff" metadata/_custom_type_script = "uid://2loic2eeec5b" [node name="AnimationPlayer" type="AnimationPlayer" parent="."] root_node = NodePath("../Card") libraries = { &"": SubResource("AnimationLibrary_36ca7") } autoplay = "trailerstuff" [node name="WorldEnvironment" type="WorldEnvironment" parent="AnimationPlayer"] environment = SubResource("Environment_2m5s6") [node name="card3" type="Area2D" parent="."] position = Vector2(969, 545) scale = Vector2(1.69523, 1.69523) collision_layer = 0 collision_mask = 0 metadata/type = "card" [node name="CollisionShape2D" type="CollisionShape2D" parent="card3"] position = Vector2(-0.0713516, 0.997451) rotation = 1.5708 shape = SubResource("CapsuleShape2D_2m5s6") [node name="BackgroundSprite" type="AnimatedSprite2D" parent="card3" groups=["reduce_motion"]] clip_children = 2 material = ExtResource("4_tbqa0") scale = Vector2(0.6, 0.6) sprite_frames = SubResource("SpriteFrames_s2d5l") frame = 2 script = SubResource("GDScript_m66ol") noisee_miltiplier = 4.0 [node name="GPUParticles2D" type="GPUParticles2D" parent="card3/BackgroundSprite"] amount = 500 texture = ExtResource("5_36ca7") lifetime = 2.0 speed_scale = 3.0 explosiveness = 0.5 randomness = 0.14 local_coords = true process_material = SubResource("ParticleProcessMaterial_43shd") [node name="Sprite2D" type="Sprite2D" parent="card3/BackgroundSprite"] visible = false scale = Vector2(0.4, 0.4) texture = ExtResource("6_tbqa0") [node name="CardFire" parent="." instance=ExtResource("8_2m5s6")] position = Vector2(954, 582) scale = Vector2(1.28, 1.295) [node name="CursorCandle" parent="." instance=ExtResource("9_2m5s6")] position = Vector2(-3.97583, 7.22614) [connection signal="input_event" from="card3" to="card3" method="_on_input_event"] [connection signal="mouse_entered" from="card3" to="card3" method="_on_mouse_entered"] [connection signal="mouse_exited" from="card3" to="card3" method="_on_mouse_exited"]