Taste the GOD PARTICLE you FILTHY RAT
All checks were successful
linting & formatting / build (push) Successful in 37s

This commit is contained in:
Rob Kelly 2025-09-06 21:05:09 -06:00
parent 77c5d46dd5
commit 7d32411612
12 changed files with 495 additions and 26 deletions

Binary file not shown.

View File

@ -0,0 +1,81 @@
[gd_resource type="ShaderMaterial" load_steps=14 format=3 uid="uid://pr3m1n71vtof"]
[ext_resource type="Shader" uid="uid://dawp27i0m5arl" path="res://src/shaders/glowing_rift.gdshader" id="1_cg36x"]
[sub_resource type="Gradient" id="Gradient_c7m4v"]
offsets = PackedFloat32Array(0, 0.166161, 0.240685, 0.514515, 0.734619, 0.816075, 1)
colors = PackedColorArray(0, 0, 0, 1, 0.0627591, 0.0627591, 0.0627591, 1, 0.34, 0.34, 0.34, 1, 0.103744, 0.103744, 0.103744, 1, 0.328559, 0.328559, 0.328559, 1, 0.0643529, 0.0643529, 0.0643529, 1, 0, 0, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_vru5p"]
gradient = SubResource("Gradient_c7m4v")
[sub_resource type="Gradient" id="Gradient_cp8sw"]
offsets = PackedFloat32Array(0, 0.140165, 0.29961, 0.426127, 0.597704, 1)
colors = PackedColorArray(0, 0, 0, 1, 0.0685576, 0.0685576, 0.0685576, 1, 0.295867, 0.295867, 0.295866, 1, 0.336608, 0.336608, 0.336608, 1, 0.0889882, 0.0889882, 0.0889882, 1, 0, 0, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_c7m4v"]
gradient = SubResource("Gradient_cp8sw")
[sub_resource type="FastNoiseLite" id="FastNoiseLite_6bdpa"]
seed = 1
frequency = 0.0052
fractal_type = 0
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_cp8sw"]
seamless = true
seamless_blend_skirt = 0.252
noise = SubResource("FastNoiseLite_6bdpa")
[sub_resource type="FastNoiseLite" id="FastNoiseLite_10hsf"]
noise_type = 4
frequency = 0.0105
fractal_octaves = 2
fractal_gain = 2.0
fractal_weighted_strength = 0.61
fractal_ping_pong_strength = 2.29
domain_warp_enabled = true
domain_warp_frequency = 0.03
domain_warp_fractal_octaves = 1
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_0bwtl"]
seamless = true
seamless_blend_skirt = 0.4
noise = SubResource("FastNoiseLite_10hsf")
[sub_resource type="Gradient" id="Gradient_6bdpa"]
offsets = PackedFloat32Array(0, 0.095104, 0.490251, 0.940858, 1)
colors = PackedColorArray(0, 0, 0, 1, 0.08, 0.08, 0.08, 1, 0.687215, 0.687215, 0.687215, 1, 0.0715679, 0.0715679, 0.0715679, 1, 0, 0, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_cp8sw"]
gradient = SubResource("Gradient_6bdpa")
[sub_resource type="FastNoiseLite" id="FastNoiseLite_c7m4v"]
noise_type = 2
frequency = 0.0381
fractal_octaves = 3
cellular_distance_function = 2
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_vru5p"]
seamless = true
seamless_blend_skirt = 0.4
noise = SubResource("FastNoiseLite_c7m4v")
[resource]
render_priority = 0
shader = ExtResource("1_cg36x")
shader_parameter/rift_shape = SubResource("NoiseTexture2D_vru5p")
shader_parameter/rift_scale = SubResource("GradientTexture1D_cp8sw")
shader_parameter/rift_bias = SubResource("GradientTexture1D_c7m4v")
shader_parameter/shape_scale = 0.4
shader_parameter/rift_speed = 0.2
shader_parameter/progress = 0.0
shader_parameter/smoothing = 0.02
shader_parameter/rift_offset = SubResource("NoiseTexture2D_0bwtl")
shader_parameter/offset_scale = SubResource("GradientTexture1D_vru5p")
shader_parameter/color = Color(0, 0.101961, 0.301961, 1)
shader_parameter/emission = Color(0.51, 0.918333, 1, 1)
shader_parameter/emission_strength = 1.0
shader_parameter/rift_noise = SubResource("NoiseTexture2D_cp8sw")
shader_parameter/rift_noise_scale = 10.0
shader_parameter/rift_noise_bias = 0.4
shader_parameter/rift_noise_speed = 0.3

View File

@ -403,7 +403,7 @@ tracks/55/keys = {
tracks/56/type = "value" tracks/56/type = "value"
tracks/56/imported = false tracks/56/imported = false
tracks/56/enabled = true tracks/56/enabled = true
tracks/56/path = NodePath("SpawnDebris:emitting") tracks/56/path = NodePath("SpawnEffects/MajorSpawnDebris:emitting")
tracks/56/interp = 1 tracks/56/interp = 1
tracks/56/loop_wrap = true tracks/56/loop_wrap = true
tracks/56/keys = { tracks/56/keys = {
@ -415,7 +415,7 @@ tracks/56/keys = {
tracks/57/type = "value" tracks/57/type = "value"
tracks/57/imported = false tracks/57/imported = false
tracks/57/enabled = true tracks/57/enabled = true
tracks/57/path = NodePath("SpawnDebris:amount_ratio") tracks/57/path = NodePath("SpawnEffects/MajorSpawnDebris:amount_ratio")
tracks/57/interp = 1 tracks/57/interp = 1
tracks/57/loop_wrap = true tracks/57/loop_wrap = true
tracks/57/keys = { tracks/57/keys = {
@ -436,3 +436,134 @@ tracks/58/keys = {
"update": 0, "update": 0,
"values": [1.0] "values": [1.0]
} }
tracks/59/type = "value"
tracks/59/imported = false
tracks/59/enabled = true
tracks/59/path = NodePath("SpawnEffects/MinorSpawnDebris:emitting")
tracks/59/interp = 1
tracks/59/loop_wrap = true
tracks/59/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/60/type = "value"
tracks/60/imported = false
tracks/60/enabled = true
tracks/60/path = NodePath("SpawnEffects/MinorSpawnDebris:amount_ratio")
tracks/60/interp = 1
tracks/60/loop_wrap = true
tracks/60/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/61/type = "value"
tracks/61/imported = false
tracks/61/enabled = true
tracks/61/path = NodePath("SpawnEffects/GurgleEffect:emitting")
tracks/61/interp = 1
tracks/61/loop_wrap = true
tracks/61/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/62/type = "value"
tracks/62/imported = false
tracks/62/enabled = true
tracks/62/path = NodePath("SpawnEffects/GurgleEffect:amount_ratio")
tracks/62/interp = 1
tracks/62/loop_wrap = true
tracks/62/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/63/type = "value"
tracks/63/imported = false
tracks/63/enabled = true
tracks/63/path = NodePath("SpawnEffects/SpawnRift:visible")
tracks/63/interp = 1
tracks/63/loop_wrap = true
tracks/63/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/64/type = "value"
tracks/64/imported = false
tracks/64/enabled = true
tracks/64/path = NodePath("SpawnEffects/SpawnRift:mesh:material:shader_parameter/emission_strength")
tracks/64/interp = 1
tracks/64/loop_wrap = true
tracks/64/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [1.0]
}
tracks/65/type = "bezier"
tracks/65/imported = false
tracks/65/enabled = true
tracks/65/path = NodePath("SpawnEffects/SpawnRift:mesh:material:shader_parameter/progress")
tracks/65/interp = 1
tracks/65/loop_wrap = true
tracks/65/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
tracks/66/type = "value"
tracks/66/imported = false
tracks/66/enabled = true
tracks/66/path = NodePath("SpawnEffects/GodParticlesFast:emitting")
tracks/66/interp = 1
tracks/66/loop_wrap = true
tracks/66/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/67/type = "value"
tracks/67/imported = false
tracks/67/enabled = true
tracks/67/path = NodePath("SpawnEffects/GodParticlesFaster:emitting")
tracks/67/interp = 1
tracks/67/loop_wrap = true
tracks/67/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/68/type = "value"
tracks/68/imported = false
tracks/68/enabled = true
tracks/68/path = NodePath("SpawnEffects/GodParticlesFast:amount_ratio")
tracks/68/interp = 1
tracks/68/loop_wrap = true
tracks/68/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/69/type = "value"
tracks/69/imported = false
tracks/69/enabled = true
tracks/69/path = NodePath("SpawnEffects/GodParticlesFaster:amount_ratio")
tracks/69/interp = 1
tracks/69/loop_wrap = true
tracks/69/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}

View File

@ -426,7 +426,7 @@ tracks/56/keys = {
tracks/57/type = "value" tracks/57/type = "value"
tracks/57/imported = false tracks/57/imported = false
tracks/57/enabled = true tracks/57/enabled = true
tracks/57/path = NodePath("SpawnDebris:emitting") tracks/57/path = NodePath("SpawnEffects/MajorSpawnDebris:emitting")
tracks/57/interp = 1 tracks/57/interp = 1
tracks/57/loop_wrap = true tracks/57/loop_wrap = true
tracks/57/keys = { tracks/57/keys = {
@ -438,7 +438,7 @@ tracks/57/keys = {
tracks/58/type = "value" tracks/58/type = "value"
tracks/58/imported = false tracks/58/imported = false
tracks/58/enabled = true tracks/58/enabled = true
tracks/58/path = NodePath("SpawnDebris:amount_ratio") tracks/58/path = NodePath("SpawnEffects/MajorSpawnDebris:amount_ratio")
tracks/58/interp = 1 tracks/58/interp = 1
tracks/58/loop_wrap = true tracks/58/loop_wrap = true
tracks/58/keys = { tracks/58/keys = {
@ -459,14 +459,3 @@ tracks/59/keys = {
"update": 0, "update": 0,
"values": [0.0, 1.0] "values": [0.0, 1.0]
} }
tracks/60/type = "method"
tracks/60/imported = false
tracks/60/enabled = true
tracks/60/path = NodePath("SpawnDebris")
tracks/60/interp = 1
tracks/60/loop_wrap = true
tracks/60/keys = {
"times": PackedFloat32Array(),
"transitions": PackedFloat32Array(),
"values": []
}

BIN
assets/npc/shambler/animations/library.res (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,51 @@
// -*- mode: glsl -*-
// The RIFT is OPENING...
shader_type spatial;
render_mode depth_prepass_alpha;
group_uniforms rift_shape;
uniform sampler2D rift_shape;
uniform sampler2D rift_scale;
uniform sampler2D rift_bias;
uniform float shape_scale = 1.0;
uniform float rift_speed = 1.0;
uniform float progress: hint_range(0.0, 1.0) = 1.0;
uniform float smoothing = 0.02;
group_uniforms rift_offset;
uniform sampler2D rift_offset;
uniform sampler2D offset_scale;
group_uniforms rift_color;
uniform vec3 color: source_color = vec3(1.0);
uniform vec3 emission: source_color = vec3(1.0);
uniform float emission_strength = 1.0;
group_uniforms rift_noise;
uniform sampler2D rift_noise;
uniform float rift_noise_scale = 1.0;
uniform float rift_noise_bias = 0.0;
uniform float rift_noise_speed = 0.1;
void fragment() {
// Rift shape
float i_time = TIME * rift_speed;
vec2 uva = vec2(UV.x * 0.5, i_time);
vec2 uvb = vec2(UV.x * 0.5 + 0.5, i_time);
float scale = texture(rift_scale, UV).r * shape_scale * progress;
float bias = texture(rift_bias, UV).r * progress;
float limit_a = 0.0 - texture(rift_shape, uva).r * scale - bias;
float limit_b = 0.0 + texture(rift_shape, uvb).r * scale + bias;
float offset = texture(offset_scale, UV).r * (texture(rift_offset, vec2(UV.x, i_time)).r - 0.5);
float p = UV.y - 0.5 + offset;
ALPHA = smoothstep(limit_a, limit_a + smoothing, p) * (1.0 - smoothstep(limit_b - smoothing, limit_b, p));
// Rift emissive noise
float noise = texture(rift_noise, vec2(UV.x, TIME * rift_noise_speed)).r;
noise = noise * noise * noise * rift_noise_scale + rift_noise_bias;
EMISSION = emission * noise * emission_strength;
ALBEDO = color;
}

View File

@ -0,0 +1 @@
uid://dawp27i0m5arl

View File

@ -1,8 +1,8 @@
class_name SceneTools extends Object class_name SceneTools extends Object
## Tools for specialized operations in a scene ## Tools for specialized operations in a scene
# const RAY_MASK := 0b00100101 const RAY_MASK := 0b00100101
const RAY_MASK := 1 # const RAY_MASK := 1
## Get the Node3D in the given group which is spatially closest to the target node. ## Get the Node3D in the given group which is spatially closest to the target node.

View File

@ -31,7 +31,8 @@ collision_mask = 128
shape = SubResource("CylinderShape3D_42oks") shape = SubResource("CylinderShape3D_42oks")
debug_color = Color(0.980392, 0.854902, 0, 1) debug_color = Color(0.980392, 0.854902, 0, 1)
[node name="MeshInstance3D" type="MeshInstance3D" parent="Area3D"] [node name="DEBUGMesh" type="MeshInstance3D" parent="Area3D"]
visible = false
mesh = SubResource("CylinderMesh_e5rh0") mesh = SubResource("CylinderMesh_e5rh0")
[node name="SpawnExclusionArea" type="Area3D" parent="."] [node name="SpawnExclusionArea" type="Area3D" parent="."]

View File

@ -384,7 +384,7 @@ metadata/_custom_type_script = "uid://cg016dbe7gs1x"
script = ExtResource("11_mbqcc") script = ExtResource("11_mbqcc")
mean_time = 4.0 mean_time = 4.0
st_dev_time = 0.6 st_dev_time = 0.6
wait_time = 4.58991 wait_time = 3.52478
metadata/_custom_type_script = "uid://beyk2xtbjrsg4" metadata/_custom_type_script = "uid://beyk2xtbjrsg4"
[node name="PickRandomInvestigationTarget" type="Node" parent="GrunkBeastBehavior/StateSelector/TrackingMode/ActionSelector/InvestigateAction/AlwaysSucceedDecorator/InvestigateSequence/RandomDelay"] [node name="PickRandomInvestigationTarget" type="Node" parent="GrunkBeastBehavior/StateSelector/TrackingMode/ActionSelector/InvestigateAction/AlwaysSucceedDecorator/InvestigateSequence/RandomDelay"]
@ -478,7 +478,7 @@ metadata/_custom_type_script = "uid://bogt3htgqe12s"
script = ExtResource("11_mbqcc") script = ExtResource("11_mbqcc")
mean_time = 9.0 mean_time = 9.0
st_dev_time = 1.0 st_dev_time = 1.0
wait_time = 10.1664 wait_time = 9.52982
metadata/_custom_type_script = "uid://beyk2xtbjrsg4" metadata/_custom_type_script = "uid://beyk2xtbjrsg4"
[node name="PickRandomLurkTarget" type="Node" parent="GrunkBeastBehavior/StateSelector/LurkingMode/RandomDelay"] [node name="PickRandomLurkTarget" type="Node" parent="GrunkBeastBehavior/StateSelector/LurkingMode/RandomDelay"]

View File

@ -36,7 +36,7 @@ func _ready() -> void:
func _start_player_rumble() -> void: func _start_player_rumble() -> void:
# TODO this is awful. Integrate PhantomCamera or similar # TODO this is awful. Integrate PhantomCamera or similar
if Player.instance: if Player.instance:
create_tween().tween_property(Player.instance, "camera_rumble", SPAWN_RUMBLE, 0.1) create_tween().tween_property(Player.instance, "camera_rumble", SPAWN_RUMBLE, 1.2)
func _end_player_rumble() -> void: func _end_player_rumble() -> void:

View File

@ -1,10 +1,13 @@
[gd_scene load_steps=26 format=3 uid="uid://brrd33217oplv"] [gd_scene load_steps=49 format=3 uid="uid://brrd33217oplv"]
[ext_resource type="PackedScene" uid="uid://cyqr1ojnddyk0" path="res://assets/npc/shambler/shambler.gltf" id="1_uiw1a"] [ext_resource type="PackedScene" uid="uid://cyqr1ojnddyk0" path="res://assets/npc/shambler/shambler.gltf" id="1_uiw1a"]
[ext_resource type="Material" uid="uid://7xrgrvf3lymv" path="res://assets/npc/shambler/shambler.material" id="2_nayyt"] [ext_resource type="Material" uid="uid://7xrgrvf3lymv" path="res://assets/npc/shambler/shambler.material" id="2_nayyt"]
[ext_resource type="Script" uid="uid://bueq1q2qva7gs" path="res://src/world/grunk_beast/shambler/shambler.gd" id="2_s7rwx"] [ext_resource type="Script" uid="uid://bueq1q2qva7gs" path="res://src/world/grunk_beast/shambler/shambler.gd" id="2_s7rwx"]
[ext_resource type="Script" uid="uid://cuqr167olan8n" path="res://src/effects/particle_spawner.gd" id="4_elp7k"] [ext_resource type="Script" uid="uid://cuqr167olan8n" path="res://src/effects/particle_spawner.gd" id="4_elp7k"]
[ext_resource type="PackedScene" uid="uid://cf1o33mq2hxjx" path="res://src/effects/grunk_debris.tscn" id="5_lqi3b"] [ext_resource type="PackedScene" uid="uid://cf1o33mq2hxjx" path="res://src/effects/grunk_debris.tscn" id="5_lqi3b"]
[ext_resource type="AnimationLibrary" uid="uid://vvljqrvmuim4" path="res://assets/npc/shambler/animations/library.res" id="6_lqi3b"]
[ext_resource type="Material" uid="uid://dcj6vk6q845b4" path="res://assets/materials/grunk_bubble.material" id="7_xyfav"]
[ext_resource type="Material" uid="uid://pr3m1n71vtof" path="res://assets/materials/taste_the_god_particle_you_filthy_rat.tres" id="8_6bdpa"]
[sub_resource type="Curve" id="Curve_s7rwx"] [sub_resource type="Curve" id="Curve_s7rwx"]
_limits = [0.0, 1.0, 0.0, 10.0] _limits = [0.0, 1.0, 0.0, 10.0]
@ -34,7 +37,7 @@ point_count = 3
[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_s7rwx"] [sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_s7rwx"]
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_vmxrd"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_vmxrd"]
animation = &"emerge_floor" animation = &"extended_spawn"
[sub_resource type="AnimationNodeOneShot" id="AnimationNodeOneShot_elp7k"] [sub_resource type="AnimationNodeOneShot" id="AnimationNodeOneShot_elp7k"]
@ -100,6 +103,154 @@ collision_mode = 1
collision_friction = 1.0 collision_friction = 1.0
collision_bounce = 0.0 collision_bounce = 0.0
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_lqi3b"]
lifetime_randomness = 0.71
emission_shape = 6
emission_ring_axis = Vector3(0, 1, 0)
emission_ring_height = 0.0
emission_ring_radius = 1.0
emission_ring_inner_radius = 0.0
emission_ring_cone_angle = 90.0
direction = Vector3(0, 1, 0)
spread = 20.0
initial_velocity_min = 1.0
initial_velocity_max = 2.0
attractor_interaction_enabled = false
scale_curve = SubResource("CurveTexture_fabmb")
collision_mode = 1
collision_friction = 1.0
collision_bounce = 0.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_s7rwx"]
vertex_color_use_as_albedo = true
albedo_color = Color(0, 0.101961, 0.301961, 1)
emission_enabled = true
emission = Color(0, 0.101961, 0.301961, 1)
emission_energy_multiplier = 0.6
texture_filter = 0
billboard_mode = 3
billboard_keep_scale = true
particles_anim_h_frames = 1
particles_anim_v_frames = 1
particles_anim_loop = false
[sub_resource type="QuadMesh" id="QuadMesh_xlxrx"]
material = SubResource("StandardMaterial3D_s7rwx")
size = Vector2(0.05, 0.05)
[sub_resource type="Curve" id="Curve_o6myl"]
_data = [Vector2(0, 0), 0.0, 2.58321, 0, 0, Vector2(1, 1), -0.403345, 0.0, 0, 0]
point_count = 2
[sub_resource type="Curve" id="Curve_xlxrx"]
_data = [Vector2(0, 0), 0.0, 1.63477, 0, 0, Vector2(0.837947, 1), -1.37504, -1.37504, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0]
point_count = 3
[sub_resource type="Curve" id="Curve_6bdpa"]
_data = [Vector2(0, 0), 0.0, 3.72349, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0]
point_count = 2
[sub_resource type="CurveXYZTexture" id="CurveXYZTexture_cp8sw"]
curve_x = SubResource("Curve_o6myl")
curve_y = SubResource("Curve_xlxrx")
curve_z = SubResource("Curve_6bdpa")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_xyfav"]
lifetime_randomness = 0.2
emission_shape = 6
emission_ring_axis = Vector3(0, 1, 0)
emission_ring_height = 0.01
emission_ring_radius = 1.2
emission_ring_inner_radius = 1.0
emission_ring_cone_angle = 90.0
gravity = Vector3(0, 0, 0)
attractor_interaction_enabled = false
scale_min = 0.2
scale_curve = SubResource("CurveXYZTexture_cp8sw")
sub_emitter_mode = 2
sub_emitter_amount_at_end = 2
[sub_resource type="SphereMesh" id="SphereMesh_o6myl"]
material = ExtResource("7_xyfav")
radius = 0.4
height = 0.8
radial_segments = 32
rings = 8
[sub_resource type="Curve" id="Curve_cp8sw"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.250213, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), -2.47309, 0.0, 0, 0]
point_count = 3
[sub_resource type="CurveTexture" id="CurveTexture_c7m4v"]
curve = SubResource("Curve_cp8sw")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_vru5p"]
lifetime_randomness = 0.4
emission_shape_offset = Vector3(0, 1, 0)
direction = Vector3(0, 1, 0)
spread = 60.0
initial_velocity_min = 1.0
initial_velocity_max = 2.0
gravity = Vector3(0, -1, 0)
damping_min = 8.0
damping_max = 8.0
attractor_interaction_enabled = false
scale_curve = SubResource("CurveTexture_c7m4v")
[sub_resource type="QuadMesh" id="QuadMesh_10hsf"]
material = SubResource("StandardMaterial3D_s7rwx")
size = Vector2(0.05, 0.05)
[sub_resource type="PlaneMesh" id="PlaneMesh_xlxrx"]
material = ExtResource("8_6bdpa")
[sub_resource type="Curve" id="Curve_c7m4v"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
point_count = 2
[sub_resource type="CurveTexture" id="CurveTexture_vru5p"]
curve = SubResource("Curve_c7m4v")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_10hsf"]
emission_shape = 3
emission_box_extents = Vector3(0.01, 0.01, 0.6)
direction = Vector3(0, 1, 0)
spread = 5.0
initial_velocity_min = 10.0
initial_velocity_max = 10.0
gravity = Vector3(0, 0, 0)
attractor_interaction_enabled = false
alpha_curve = SubResource("CurveTexture_vru5p")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6bdpa"]
transparency = 3
alpha_hash_scale = 1.0
alpha_antialiasing_mode = 0
vertex_color_use_as_albedo = true
emission_enabled = true
emission = Color(0.25098, 0.878431, 1, 1)
emission_energy_multiplier = 16.0
billboard_mode = 3
billboard_keep_scale = true
particles_anim_h_frames = 1
particles_anim_v_frames = 1
particles_anim_loop = false
[sub_resource type="QuadMesh" id="QuadMesh_6bdpa"]
material = SubResource("StandardMaterial3D_6bdpa")
size = Vector2(0.02, 0.02)
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_0bwtl"]
emission_shape = 3
emission_box_extents = Vector3(0.01, 0.01, 0.6)
direction = Vector3(0, 1, 0)
spread = 5.0
initial_velocity_min = 30.0
initial_velocity_max = 30.0
gravity = Vector3(0, 0, 0)
attractor_interaction_enabled = false
alpha_curve = SubResource("CurveTexture_vru5p")
[node name="Shambler" instance=ExtResource("1_uiw1a")] [node name="Shambler" instance=ExtResource("1_uiw1a")]
script = ExtResource("2_s7rwx") script = ExtResource("2_s7rwx")
idle_blend_curve = SubResource("Curve_s7rwx") idle_blend_curve = SubResource("Curve_s7rwx")
@ -203,10 +354,14 @@ metadata/_custom_type_script = "uid://cuqr167olan8n"
[node name="AnimationPlayer" parent="." index="1"] [node name="AnimationPlayer" parent="." index="1"]
unique_name_in_owner = true unique_name_in_owner = true
libraries = {
&"": ExtResource("6_lqi3b")
}
[node name="AnimationTree" type="AnimationTree" parent="." index="2"] [node name="AnimationTree" type="AnimationTree" parent="." index="2"]
unique_name_in_owner = true unique_name_in_owner = true
root_node = NodePath("%AnimationTree/..") root_node = NodePath("%AnimationTree/..")
callback_mode_discrete = 0
tree_root = SubResource("AnimationNodeBlendTree_nayyt") tree_root = SubResource("AnimationNodeBlendTree_nayyt")
anim_player = NodePath("../AnimationPlayer") anim_player = NodePath("../AnimationPlayer")
parameters/anim_scale/scale = 1.0 parameters/anim_scale/scale = 1.0
@ -216,7 +371,7 @@ parameters/emerge_floor_trigger/request = 0
parameters/front_scale/scale = 1.0 parameters/front_scale/scale = 1.0
parameters/idle_blend/blend_amount = 0.0 parameters/idle_blend/blend_amount = 0.0
parameters/rear_add/add_amount = 0.0 parameters/rear_add/add_amount = 0.0
parameters/rear_scale/scale = 1.0 parameters/rear_scale/scale = 2.0
[node name="DefaultLookTargetPivot" type="Node3D" parent="." index="3"] [node name="DefaultLookTargetPivot" type="Node3D" parent="." index="3"]
unique_name_in_owner = true unique_name_in_owner = true
@ -236,12 +391,69 @@ mesh = SubResource("SphereMesh_s7rwx")
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.25, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.25, 0)
size = Vector3(6, 0.5, 6) size = Vector3(6, 0.5, 6)
[node name="SpawnDebris" parent="." index="5" instance=ExtResource("5_lqi3b")] [node name="SpawnEffects" type="Node3D" parent="." index="5"]
process_mode = 3
[node name="MajorSpawnDebris" parent="SpawnEffects" index="0" instance=ExtResource("5_lqi3b")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0)
amount = 64 amount = 64
amount_ratio = 0.0 amount_ratio = 0.0
one_shot = false one_shot = false
preprocess = 0.0 preprocess = 0.0
explosiveness = 0.1 explosiveness = 0.0
randomness = 0.43 randomness = 0.43
process_material = SubResource("ParticleProcessMaterial_elp7k") process_material = SubResource("ParticleProcessMaterial_elp7k")
[node name="MinorSpawnDebris" parent="SpawnEffects" index="1" instance=ExtResource("5_lqi3b")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0)
amount = 64
amount_ratio = 0.0
one_shot = false
preprocess = 0.0
explosiveness = 0.0
randomness = 0.43
process_material = SubResource("ParticleProcessMaterial_lqi3b")
draw_pass_1 = SubResource("QuadMesh_xlxrx")
[node name="GurgleEffect" type="GPUParticles3D" parent="SpawnEffects" index="2"]
emitting = false
amount = 12
amount_ratio = 0.0
sub_emitter = NodePath("GurglePop")
lifetime = 0.4
process_material = SubResource("ParticleProcessMaterial_xyfav")
draw_pass_1 = SubResource("SphereMesh_o6myl")
[node name="GurglePop" type="GPUParticles3D" parent="SpawnEffects/GurgleEffect" index="0"]
amount = 64
lifetime = 0.2
preprocess = 1.13
explosiveness = 1.0
process_material = SubResource("ParticleProcessMaterial_vru5p")
draw_pass_1 = SubResource("QuadMesh_10hsf")
[node name="SpawnRift" type="MeshInstance3D" parent="SpawnEffects" index="3"]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0.01, 0)
visible = false
mesh = SubResource("PlaneMesh_xlxrx")
skeleton = NodePath("../..")
[node name="GodParticlesFast" type="GPUParticles3D" parent="SpawnEffects" index="4"]
emitting = false
amount = 64
amount_ratio = 0.0
lifetime = 0.4
fixed_fps = 60
interpolate = false
process_material = SubResource("ParticleProcessMaterial_10hsf")
draw_pass_1 = SubResource("QuadMesh_6bdpa")
[node name="GodParticlesFaster" type="GPUParticles3D" parent="SpawnEffects" index="5"]
emitting = false
amount = 32
amount_ratio = 0.0
lifetime = 0.2
fixed_fps = 60
interpolate = false
process_material = SubResource("ParticleProcessMaterial_0bwtl")
draw_pass_1 = SubResource("QuadMesh_6bdpa")