generated from krampus/template-godot4
Compare commits
No commits in common. "ebac8651b6e2babf346c094ccaf099c6c9fcb13c" and "d4a008ff2aec959db05d4a65e593ee195f7460f8" have entirely different histories.
ebac8651b6
...
d4a008ff2a
Binary file not shown.
@ -28,19 +28,10 @@ ssao_enabled = true
|
||||
ssao_intensity = 2.5
|
||||
ssil_enabled = true
|
||||
ssil_radius = 0.4
|
||||
ssil_intensity = 2.5
|
||||
ssil_normal_rejection = 0.73
|
||||
sdfgi_enabled = true
|
||||
sdfgi_cascades = 7
|
||||
glow_enabled = true
|
||||
glow_levels/1 = 16.0
|
||||
glow_levels/2 = 6.0
|
||||
glow_levels/3 = 2.0
|
||||
glow_levels/4 = 1.0
|
||||
glow_levels/6 = 2.0
|
||||
glow_levels/7 = 2.0
|
||||
glow_strength = 0.7
|
||||
glow_bloom = 0.01
|
||||
glow_blend_mode = 0
|
||||
fog_light_color = Color(0, 0, 0, 1)
|
||||
fog_density = 0.2
|
||||
|
File diff suppressed because one or more lines are too long
@ -13,6 +13,12 @@ extends Node3D
|
||||
@onready var prop_test_spawn_point: Marker3D = %PropTestSpawnPoint
|
||||
@onready var item_test_spawn_point: Marker3D = %ItemTestSpawnPoint
|
||||
|
||||
static var nodule_scene: PackedScene = load("res://src/world/gunk_node/grunk_nodule.tscn")
|
||||
static var alarm_scene: PackedScene = load("res://src/world/mechanics/alarm/gunk_alarm.tscn")
|
||||
static var signal_test_scene: PackedScene = load("res://levels/mechanic_test/signal_test.tscn")
|
||||
static var prop_test_scene: PackedScene = load("res://levels/mechanic_test/prop_test.tscn")
|
||||
static var item_test_scene: PackedScene = load("res://levels/mechanic_test/item_test.tscn")
|
||||
|
||||
|
||||
func reset() -> void:
|
||||
print("Resetting level!")
|
||||
@ -20,10 +26,6 @@ func reset() -> void:
|
||||
Callable(bulkhead, "close").call()
|
||||
Callable(open_switch, "enable").call()
|
||||
Callable(close_switch, "disable").call()
|
||||
|
||||
var signal_test_scene: PackedScene = load("res://levels/mechanic_test/signal_test.tscn")
|
||||
var prop_test_scene: PackedScene = load("res://levels/mechanic_test/prop_test.tscn")
|
||||
var item_test_scene: PackedScene = load("res://levels/mechanic_test/item_test.tscn")
|
||||
_do_spawn(signal_test_spawn_point, signal_test_scene)
|
||||
_do_spawn(prop_test_spawn_point, prop_test_scene)
|
||||
_do_spawn(item_test_spawn_point, item_test_scene)
|
||||
@ -37,12 +39,10 @@ func _do_spawn(spawn_point: Node3D, scene: PackedScene) -> void:
|
||||
|
||||
|
||||
func spawn_nodule() -> void:
|
||||
var nodule_scene: PackedScene = load("res://src/world/gunk_node/grunk_nodule.tscn")
|
||||
_do_spawn(nodule_spawn_point, nodule_scene)
|
||||
|
||||
|
||||
func spawn_alarm() -> void:
|
||||
var alarm_scene: PackedScene = load("res://src/world/mechanics/alarm/gunk_alarm.tscn")
|
||||
_do_spawn(alarm_spawn_point, alarm_scene)
|
||||
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
[gd_scene load_steps=31 format=4 uid="uid://b8rv6dg4tgaeb"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bvua1l2hb3an6" path="res://levels/mechanic_test/mechanic_test.gd" id="1_umjw2"]
|
||||
[ext_resource type="PackedScene" uid="uid://bwe2jdmvinhqd" path="res://src/player/player.tscn" id="2_gut8u"]
|
||||
[ext_resource type="PackedScene" uid="uid://b6eg8t04rkh0c" path="res://src/props/wall_switch/wall_switch.tscn" id="3_4okgx"]
|
||||
[ext_resource type="PackedScene" uid="uid://c2omlx4ptrc01" path="res://src/world/gunk_body/gunk_body.tscn" id="4_7v7un"]
|
||||
[ext_resource type="Texture2D" uid="uid://8cm835h4gxwe" path="res://assets/debug_mask.png" id="5_llot1"]
|
||||
[ext_resource type="Shader" uid="uid://ckxc0ngd37rtk" path="res://src/shaders/gunk.gdshader" id="6_6agnv"]
|
||||
[ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="7_aqwgb"]
|
||||
[ext_resource type="PackedScene" uid="uid://cubwniraol1qn" path="res://src/props/bulkhead/bulkhead.tscn" id="8_ny31q"]
|
||||
[ext_resource type="PackedScene" uid="uid://b5jubpjj3d277" path="res://levels/mechanic_test/signal_test.tscn" id="9_dub8r"]
|
||||
[ext_resource type="PackedScene" uid="uid://cfqirm2o3uo4k" path="res://levels/mechanic_test/prop_test.tscn" id="10_ovu60"]
|
||||
[ext_resource type="PackedScene" uid="uid://dbabcsp38wmid" path="res://levels/mechanic_test/item_test.tscn" id="11_crh2u"]
|
||||
[ext_resource type="Script" uid="uid://bvua1l2hb3an6" path="res://levels/mechanic_test/mechanic_test.gd" id="1_bg05n"]
|
||||
[ext_resource type="PackedScene" uid="uid://bwe2jdmvinhqd" path="res://src/player/player.tscn" id="1_goufh"]
|
||||
[ext_resource type="PackedScene" uid="uid://b6eg8t04rkh0c" path="res://src/props/wall_switch/wall_switch.tscn" id="2_pka60"]
|
||||
[ext_resource type="PackedScene" uid="uid://c2omlx4ptrc01" path="res://src/world/gunk_body/gunk_body.tscn" id="4_2uiim"]
|
||||
[ext_resource type="Shader" uid="uid://ckxc0ngd37rtk" path="res://src/shaders/gunk.gdshader" id="5_0j1ke"]
|
||||
[ext_resource type="Texture2D" uid="uid://8cm835h4gxwe" path="res://assets/debug_mask.png" id="5_x2vho"]
|
||||
[ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="6_x2vho"]
|
||||
[ext_resource type="PackedScene" uid="uid://cubwniraol1qn" path="res://src/props/bulkhead/bulkhead.tscn" id="8_f342o"]
|
||||
[ext_resource type="PackedScene" uid="uid://b5jubpjj3d277" path="res://levels/mechanic_test/signal_test.tscn" id="9_x2vho"]
|
||||
[ext_resource type="PackedScene" uid="uid://cfqirm2o3uo4k" path="res://levels/mechanic_test/prop_test.tscn" id="10_f342o"]
|
||||
[ext_resource type="PackedScene" uid="uid://dbabcsp38wmid" path="res://levels/mechanic_test/item_test.tscn" id="11_iyuyb"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_goufh"]
|
||||
|
||||
@ -93,7 +93,7 @@ height = 256
|
||||
depth = 32
|
||||
seamless = true
|
||||
seamless_blend_skirt = 0.5
|
||||
noise = ExtResource("7_aqwgb")
|
||||
noise = ExtResource("6_x2vho")
|
||||
|
||||
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_2pd8h"]
|
||||
width = 256
|
||||
@ -101,12 +101,12 @@ height = 256
|
||||
depth = 32
|
||||
seamless = true
|
||||
seamless_blend_skirt = 0.5
|
||||
noise = ExtResource("7_aqwgb")
|
||||
noise = ExtResource("6_x2vho")
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_umjw2"]
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_iyuyb"]
|
||||
resource_local_to_scene = true
|
||||
render_priority = 0
|
||||
shader = ExtResource("6_6agnv")
|
||||
shader = ExtResource("5_0j1ke")
|
||||
shader_parameter/color_1 = Color(0, 0.03, 0.1, 1)
|
||||
shader_parameter/color_2 = Color(0, 0.1, 0.3, 1)
|
||||
shader_parameter/emission_color = Color(0.25, 0.88, 1, 1)
|
||||
@ -131,9 +131,9 @@ shader_parameter/overlay_emission_scale = 1.0
|
||||
data = PackedVector3Array(-1.5, 0, -6, -1.5, 0, 6, -1.5, 3, -6, -1.5, 3, -6, -1.5, 0, 6, -1.5, 3, 6, 1.5, 0, 6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, 6, 1.5, 0, -6, 1.5, 3, -6, -1.5, 0, 6, -1.5, 0, -6, 1.5, 0, 6, 1.5, 0, 6, -1.5, 0, -6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, -6, -1.5, 3, 6, -1.5, 3, 6, 1.5, 3, -6, -1.5, 3, -6)
|
||||
|
||||
[node name="MechanicTest" type="Node3D"]
|
||||
script = ExtResource("1_umjw2")
|
||||
script = ExtResource("1_bg05n")
|
||||
|
||||
[node name="Player" parent="." instance=ExtResource("2_gut8u")]
|
||||
[node name="Player" parent="." instance=ExtResource("1_goufh")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.65, 0)
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||
@ -160,7 +160,7 @@ mesh = SubResource("BoxMesh_goufh")
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="ResetPodium"]
|
||||
shape = SubResource("ConcavePolygonShape3D_bg05n")
|
||||
|
||||
[node name="ResetSwitch" parent="ResetPodium" instance=ExtResource("3_4okgx")]
|
||||
[node name="ResetSwitch" parent="ResetPodium" instance=ExtResource("2_pka60")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
|
||||
clean = true
|
||||
|
||||
@ -177,7 +177,7 @@ mesh = SubResource("BoxMesh_goufh")
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="NoduleSpawner"]
|
||||
shape = SubResource("ConcavePolygonShape3D_bg05n")
|
||||
|
||||
[node name="WallSwitch" parent="NoduleSpawner" instance=ExtResource("3_4okgx")]
|
||||
[node name="WallSwitch" parent="NoduleSpawner" instance=ExtResource("2_pka60")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
|
||||
clean = true
|
||||
|
||||
@ -199,7 +199,7 @@ mesh = SubResource("BoxMesh_goufh")
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="AlarmSpawner"]
|
||||
shape = SubResource("ConcavePolygonShape3D_bg05n")
|
||||
|
||||
[node name="WallSwitch" parent="AlarmSpawner" instance=ExtResource("3_4okgx")]
|
||||
[node name="WallSwitch" parent="AlarmSpawner" instance=ExtResource("2_pka60")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
|
||||
clean = true
|
||||
|
||||
@ -221,7 +221,7 @@ mesh = SubResource("BoxMesh_goufh")
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="AlarmTrigger"]
|
||||
shape = SubResource("ConcavePolygonShape3D_bg05n")
|
||||
|
||||
[node name="AlarmTriggerSwitch" parent="AlarmTrigger" instance=ExtResource("3_4okgx")]
|
||||
[node name="AlarmTriggerSwitch" parent="AlarmTrigger" instance=ExtResource("2_pka60")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
|
||||
clean = true
|
||||
|
||||
@ -234,15 +234,15 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, -31)
|
||||
mesh = SubResource("ArrayMesh_x2vho")
|
||||
skeleton = NodePath("GunkHallBody")
|
||||
|
||||
[node name="GunkHallBody" parent="GunkHall" instance=ExtResource("4_7v7un")]
|
||||
[node name="GunkHallBody" parent="GunkHall" instance=ExtResource("4_2uiim")]
|
||||
unique_name_in_owner = true
|
||||
initial_mask = ExtResource("5_llot1")
|
||||
source_gunk_material = SubResource("ShaderMaterial_umjw2")
|
||||
initial_mask = ExtResource("5_x2vho")
|
||||
source_gunk_material = SubResource("ShaderMaterial_iyuyb")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="GunkHall/GunkHallBody"]
|
||||
shape = SubResource("ConcavePolygonShape3D_qjnj2")
|
||||
|
||||
[node name="Bulkhead" parent="." instance=ExtResource("8_ny31q")]
|
||||
[node name="Bulkhead" parent="." instance=ExtResource("8_f342o")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.5, 0, -2)
|
||||
|
||||
[node name="Podium" type="StaticBody3D" parent="Bulkhead"]
|
||||
@ -254,7 +254,7 @@ mesh = SubResource("BoxMesh_goufh")
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Bulkhead/Podium"]
|
||||
shape = SubResource("ConcavePolygonShape3D_bg05n")
|
||||
|
||||
[node name="OpenSwitch" parent="Bulkhead/Podium" instance=ExtResource("3_4okgx")]
|
||||
[node name="OpenSwitch" parent="Bulkhead/Podium" instance=ExtResource("2_pka60")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
|
||||
clean = true
|
||||
@ -272,7 +272,7 @@ mesh = SubResource("BoxMesh_goufh")
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Bulkhead/Podium2"]
|
||||
shape = SubResource("ConcavePolygonShape3D_bg05n")
|
||||
|
||||
[node name="CloseSwitch" parent="Bulkhead/Podium2" instance=ExtResource("3_4okgx")]
|
||||
[node name="CloseSwitch" parent="Bulkhead/Podium2" instance=ExtResource("2_pka60")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
|
||||
clean = true
|
||||
@ -286,19 +286,19 @@ text = "Close"
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0, -6)
|
||||
|
||||
[node name="SignalTest" parent="SignalTestSpawnPoint" instance=ExtResource("9_dub8r")]
|
||||
[node name="SignalTest" parent="SignalTestSpawnPoint" instance=ExtResource("9_x2vho")]
|
||||
|
||||
[node name="PropTestSpawnPoint" type="Marker3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0, 4.5)
|
||||
|
||||
[node name="PropTest" parent="PropTestSpawnPoint" instance=ExtResource("10_ovu60")]
|
||||
[node name="PropTest" parent="PropTestSpawnPoint" instance=ExtResource("10_f342o")]
|
||||
|
||||
[node name="ItemTestSpawnPoint" type="Marker3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13, 0, -2)
|
||||
|
||||
[node name="ItemTest" parent="ItemTestSpawnPoint" instance=ExtResource("11_crh2u")]
|
||||
[node name="ItemTest" parent="ItemTestSpawnPoint" instance=ExtResource("11_iyuyb")]
|
||||
|
||||
[connection signal="activated" from="ResetPodium/ResetSwitch" to="." method="reset"]
|
||||
[connection signal="activated" from="NoduleSpawner/WallSwitch" to="." method="spawn_nodule"]
|
@ -1,8 +1,7 @@
|
||||
[gd_scene load_steps=23 format=3 uid="uid://xlt78xc1tmkl"]
|
||||
[gd_scene load_steps=22 format=3 uid="uid://xlt78xc1tmkl"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://cgwgmxwjgwbwr" path="res://assets/particles/splatter_2.png" id="1_5xu2x"]
|
||||
[ext_resource type="Texture2D" uid="uid://bhoai6xv53tqm" path="res://assets/particles/splatter_1.png" id="2_bt63p"]
|
||||
[ext_resource type="Script" uid="uid://di5b65ehsfatj" path="res://src/effects/grunk_splatter/grunk_splatter.gd" id="2_grvat"]
|
||||
[ext_resource type="AudioStream" uid="uid://di0j2xhgfc78s" path="res://assets/sfx/grunk/splat1.wav" id="3_t00bd"]
|
||||
[ext_resource type="AudioStream" uid="uid://d1w5gfmjj7tjk" path="res://assets/sfx/grunk/splat2.wav" id="4_2iem1"]
|
||||
[ext_resource type="Script" uid="uid://c5o1d2shq2qig" path="res://src/world/game_sound/game_sound_emitter.gd" id="5_2iem1"]
|
||||
@ -23,7 +22,6 @@ point_count = 2
|
||||
curve = SubResource("Curve_y6klh")
|
||||
|
||||
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_5xu2x"]
|
||||
resource_local_to_scene = true
|
||||
lifetime_randomness = 0.57
|
||||
emission_shape = 1
|
||||
emission_sphere_radius = 1.0
|
||||
@ -67,7 +65,6 @@ point_count = 2
|
||||
curve = SubResource("Curve_t00bd")
|
||||
|
||||
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_2iem1"]
|
||||
resource_local_to_scene = true
|
||||
lifetime_randomness = 0.55
|
||||
emission_shape = 1
|
||||
emission_sphere_radius = 0.9
|
||||
@ -115,10 +112,8 @@ one_shot = true
|
||||
explosiveness = 0.45
|
||||
process_material = SubResource("ParticleProcessMaterial_5xu2x")
|
||||
draw_pass_1 = SubResource("QuadMesh_y6klh")
|
||||
script = ExtResource("2_grvat")
|
||||
|
||||
[node name="SubSplatter" type="GPUParticles3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
sorting_offset = 9.0
|
||||
emitting = false
|
||||
amount = 4
|
||||
@ -136,9 +131,8 @@ one_shot = true
|
||||
autostart = true
|
||||
|
||||
[node name="SplatterSFX" type="AudioStreamPlayer3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
stream = SubResource("AudioStreamRandomizer_6adkd")
|
||||
volume_db = -12.0
|
||||
volume_db = -10.0
|
||||
unit_size = 6.0
|
||||
autoplay = true
|
||||
bus = &"SFX"
|
@ -1,34 +0,0 @@
|
||||
class_name GrunkSplatter extends GPUParticles3D
|
||||
## Splatter effect with adjustable volume
|
||||
|
||||
const BASE_VOLUME := -12.0
|
||||
const SCALE_FACTOR := 4.0
|
||||
|
||||
const SCENE := preload("res://src/effects/grunk_splatter/grunk_splatter.tscn")
|
||||
|
||||
@export var effect_scale := 1.0
|
||||
|
||||
@onready var splatter_sfx: AudioStreamPlayer3D = %SplatterSFX
|
||||
@onready var sub_splatter: GPUParticles3D = %SubSplatter
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
splatter_sfx.volume_db = BASE_VOLUME + SCALE_FACTOR * log(effect_scale) / log(2)
|
||||
scale = Vector3.ONE * effect_scale
|
||||
|
||||
# Scale particles themselves
|
||||
_scale_particles(self)
|
||||
_scale_particles(sub_splatter)
|
||||
|
||||
|
||||
func _scale_particles(emitter: GPUParticles3D) -> void:
|
||||
var mat := emitter.process_material as ParticleProcessMaterial
|
||||
mat.scale_max = effect_scale
|
||||
mat.scale_min = effect_scale
|
||||
|
||||
|
||||
static func build(_effect_scale: float = 1.0) -> GrunkSplatter:
|
||||
var instance: GrunkSplatter = SCENE.instantiate()
|
||||
instance.effect_scale = _effect_scale
|
||||
return instance
|
@ -1 +0,0 @@
|
||||
uid://di5b65ehsfatj
|
@ -151,9 +151,3 @@ func _on_milestone(milestone: Milestone) -> void:
|
||||
func on_player_death() -> void:
|
||||
player_dead.emit()
|
||||
# TODO reload from save?
|
||||
|
||||
# REMOVEME
|
||||
# workaround until saving & loading is implemented
|
||||
grunk_tank_limit = BASE_TANK_LIMIT
|
||||
grunk_tank = 0.0
|
||||
grunk_vault = 0.0
|
||||
|
@ -622,6 +622,7 @@ unique_name_in_owner = true
|
||||
visible = false
|
||||
|
||||
[node name="TransformedPosition" type="Node3D" parent="CameraPosition/CameraPivot"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
|
||||
|
||||
[node name="CamRumbler" type="Node3D" parent="CameraPosition/CameraPivot/TransformedPosition"]
|
||||
unique_name_in_owner = true
|
||||
@ -646,7 +647,6 @@ omni_attenuation = 0.0
|
||||
|
||||
[node name="NearLight" type="OmniLight3D" parent="CameraPosition/CameraPivot/TransformedPosition/CamRumbler/Camera3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.1)
|
||||
light_energy = 0.2
|
||||
light_specular = 0.01
|
||||
light_cull_mask = 4294967293
|
||||
omni_range = 2.0
|
||||
|
@ -45,7 +45,7 @@ shadow_mesh = SubResource("ArrayMesh_hx0vd")
|
||||
data = PackedVector3Array(-1.5, 0, 0.225, -1.5, 3, -0.225, -1.5, 3, 0.225, -1.5, 0, 0.225, -1.5, 0, -0.225, -1.5, 3, -0.225, -1.3125, 0.375, -0.225, -1.5, 0, -0.225, -1.2188, 0.2812, -0.225, -1.5, 0, -0.225, -1.125, 0.1875, -0.225, -1.2188, 0.2812, -0.225, -1.5, 0, -0.225, 1.125, 0.1875, -0.225, -1.125, 0.1875, -0.225, -1.3125, 0.375, -0.225, -1.5, 3, -0.225, -1.5, 0, -0.225, 1.5, 0, -0.225, 1.125, 0.1875, -0.225, -1.5, 0, -0.225, -1.3125, 2.625, -0.225, -1.5, 3, -0.225, -1.3125, 0.375, -0.225, 1.5, 0, -0.225, 1.3125, 0.375, -0.225, 1.125, 0.1875, -0.225, -1.5, 3, -0.225, -1.3125, 2.625, -0.225, -1.125, 2.8125, -0.225, 1.3125, 0.375, -0.225, 1.5, 0, -0.225, 1.3125, 2.625, -0.225, -1.5, 3, -0.225, -1.125, 2.8125, -0.225, 1.5, 3, -0.225, 1.3125, 2.625, -0.225, 1.5, 0, -0.225, 1.5, 3, -0.225, 1.5, 3, -0.225, -1.125, 2.8125, -0.225, 1.125, 2.8125, -0.225, 1.3125, 2.625, -0.225, 1.5, 3, -0.225, 1.2187, 2.7187, -0.225, 1.5, 3, -0.225, 1.125, 2.8125, -0.225, 1.2187, 2.7187, -0.225, 1.5, 0, -0.225, 1.5, 3, 0.225, 1.5, 3, -0.225, 1.5, 0, -0.225, 1.5, 0, 0.225, 1.5, 3, 0.225, 1.3125, 0.375, 0.225, 1.5, 0, 0.225, 1.2187, 0.2812, 0.225, 1.5, 0, 0.225, 1.125, 0.1875, 0.225, 1.2187, 0.2812, 0.225, 1.5, 0, 0.225, -1.125, 0.1875, 0.225, 1.125, 0.1875, 0.225, 1.3125, 0.375, 0.225, 1.5, 3, 0.225, 1.5, 0, 0.225, -1.5, 0, 0.225, -1.125, 0.1875, 0.225, 1.5, 0, 0.225, 1.3125, 2.625, 0.225, 1.5, 3, 0.225, 1.3125, 0.375, 0.225, -1.5, 0, 0.225, -1.3125, 0.375, 0.225, -1.125, 0.1875, 0.225, 1.5, 3, 0.225, 1.3125, 2.625, 0.225, 1.125, 2.8125, 0.225, -1.3125, 0.375, 0.225, -1.5, 0, 0.225, -1.5, 3, 0.225, 1.5, 3, 0.225, 1.125, 2.8125, 0.225, -1.5, 3, 0.225, -1.3125, 0.375, 0.225, -1.5, 3, 0.225, -1.3125, 2.625, 0.225, -1.5, 3, 0.225, 1.125, 2.8125, 0.225, -1.125, 2.8125, 0.225, -1.3125, 2.625, 0.225, -1.5, 3, 0.225, -1.2188, 2.7187, 0.225, -1.5, 3, 0.225, -1.125, 2.8125, 0.225, -1.2188, 2.7187, 0.225, -1.5, 0, -0.225, 1.5, 0, 0.225, 1.5, 0, -0.225, -1.5, 0, -0.225, -1.5, 0, 0.225, 1.5, 0, 0.225, 1.5, 3, -0.225, -1.5, 3, 0.225, -1.5, 3, -0.225, 1.5, 3, -0.225, 1.5, 3, 0.225, -1.5, 3, 0.225, 1.3125, 2.625, 0.225, 1.3125, 0.375, -0.225, 1.3125, 2.625, -0.225, 1.3125, 2.625, 0.225, 1.3125, 0.375, 0.225, 1.3125, 0.375, -0.225, -1.125, 2.8125, -0.225, 1.125, 2.8125, 0.225, 1.125, 2.8125, -0.225, -1.125, 2.8125, -0.225, -1.125, 2.8125, 0.225, 1.125, 2.8125, 0.225, -1.3125, 0.375, 0.225, -1.3125, 2.625, -0.225, -1.3125, 0.375, -0.225, -1.3125, 0.375, 0.225, -1.3125, 2.625, 0.225, -1.3125, 2.625, -0.225, -1.3125, 0.375, 0.225, -1.125, 0.1875, -0.225, -1.125, 0.1875, 0.225, -1.125, 0.1875, -0.225, -1.3125, 0.375, 0.225, -1.2188, 0.2812, -0.225, -1.2188, 0.2812, -0.225, -1.3125, 0.375, 0.225, -1.3125, 0.375, -0.225, -1.3125, 2.625, 0.225, -1.125, 2.8125, -0.225, -1.3125, 2.625, -0.225, -1.125, 2.8125, -0.225, -1.3125, 2.625, 0.225, -1.2188, 2.7187, 0.225, -1.125, 2.8125, -0.225, -1.2188, 2.7187, 0.225, -1.125, 2.8125, 0.225, 1.2187, 0.2812, 0.225, 1.3125, 0.375, -0.225, 1.3125, 0.375, 0.225, 1.3125, 0.375, -0.225, 1.2187, 0.2812, 0.225, 1.125, 0.1875, 0.225, 1.3125, 0.375, -0.225, 1.125, 0.1875, 0.225, 1.125, 0.1875, -0.225, 1.125, 2.8125, 0.225, 1.2187, 2.7187, -0.225, 1.125, 2.8125, -0.225, 1.2187, 2.7187, -0.225, 1.125, 2.8125, 0.225, 1.3125, 2.625, 0.225, 1.2187, 2.7187, -0.225, 1.3125, 2.625, 0.225, 1.3125, 2.625, -0.225, 1.125, 0.1875, 0.225, -1.125, 0.1875, -0.225, 1.125, 0.1875, -0.225, 1.125, 0.1875, 0.225, -1.125, 0.1875, 0.225, -1.125, 0.1875, -0.225)
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_jo25b"]
|
||||
radius = 3.0
|
||||
radius = 4.0
|
||||
|
||||
[sub_resource type="ArrayMesh" id="ArrayMesh_4jho1"]
|
||||
_surfaces = [{
|
||||
|
@ -136,7 +136,6 @@ spot_angle = 98.0
|
||||
spot_angle_attenuation = 1.55871
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
gi_mode = 2
|
||||
mesh = SubResource("ArrayMesh_jdrpd")
|
||||
|
||||
[node name="FluorescentFlicker" type="AnimationPlayer" parent="MeshInstance3D"]
|
||||
|
@ -5,7 +5,6 @@
|
||||
|
||||
[sub_resource type="SystemFont" id="SystemFont_twqjh"]
|
||||
font_names = PackedStringArray("Monospace")
|
||||
subpixel_positioning = 0
|
||||
|
||||
[node name="TextTerminal" type="Node3D"]
|
||||
transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0)
|
||||
|
@ -233,12 +233,10 @@ shape = SubResource("ConcavePolygonShape3D_1xqlp")
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.17, 0.24, 0.1)
|
||||
|
||||
[node name="DangerLight" type="MeshInstance3D" parent="Lights" index="0"]
|
||||
gi_mode = 2
|
||||
mesh = SubResource("BoxMesh_g24yf")
|
||||
|
||||
[node name="SuccessLight" type="MeshInstance3D" parent="Lights" index="1"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.06, 0)
|
||||
gi_mode = 2
|
||||
mesh = SubResource("BoxMesh_a6hjm")
|
||||
|
||||
[node name="SuccessSFX" type="AudioStreamPlayer3D" parent="Lights/SuccessLight" index="0"]
|
||||
|
@ -218,7 +218,7 @@ metadata/_custom_type_script = "uid://om57w2acvgb7"
|
||||
script = ExtResource("11_mbqcc")
|
||||
mean_time = 4.0
|
||||
st_dev_time = 0.6
|
||||
wait_time = 3.57092
|
||||
wait_time = 3.52038
|
||||
metadata/_custom_type_script = "uid://beyk2xtbjrsg4"
|
||||
|
||||
[node name="RandomStalkingBehavior" type="Node" parent="GrunkBeastBehavior/StateSelector/StalkingSequence/RandomDelay"]
|
||||
@ -264,7 +264,7 @@ metadata/_custom_type_script = "uid://cg016dbe7gs1x"
|
||||
script = ExtResource("11_mbqcc")
|
||||
mean_time = 5.0
|
||||
st_dev_time = 1.0
|
||||
wait_time = 4.97651
|
||||
wait_time = 5.84132
|
||||
metadata/_custom_type_script = "uid://beyk2xtbjrsg4"
|
||||
|
||||
[node name="PickRandomLurkTarget" type="Node" parent="GrunkBeastBehavior/StateSelector/LurkSequence/RandomDelay"]
|
||||
|
@ -14,7 +14,6 @@ theta_acceleration = 8.0
|
||||
surface_material_override/0 = ExtResource("3_htnl6")
|
||||
|
||||
[node name="FaceNodule" parent="." index="1"]
|
||||
gi_mode = 2
|
||||
surface_material_override/0 = ExtResource("4_r4p65")
|
||||
|
||||
[node name="Nodule_001" parent="." index="2"]
|
||||
|
@ -1,31 +1,16 @@
|
||||
@tool
|
||||
extends GunkNode
|
||||
|
||||
const BASE_DURABILITY := 3.0
|
||||
const BASE_VALUE := 2000.0
|
||||
const MIN_CHITTER_INTERVAL := 4.0
|
||||
|
||||
@export_category("Editor Tools")
|
||||
@export var randomize_rotation: bool:
|
||||
set(v):
|
||||
if v:
|
||||
rotation = Vector3(randf_range(0, TAU), randf_range(0, TAU), randf_range(0, TAU))
|
||||
@export var apply_scale: float:
|
||||
set(v):
|
||||
if v > 0.001:
|
||||
scale = Vector3(v, v, v)
|
||||
durability = BASE_DURABILITY * v
|
||||
value = BASE_VALUE * v
|
||||
|
||||
@export_category("Jitter")
|
||||
@export var jitter_scale_factor := 0.05
|
||||
@export var jitter_inflation_factor := 1.0
|
||||
|
||||
@export_category("Chatter")
|
||||
@export var chitter: bool = false
|
||||
@export var chitter_time_mean := 60.0
|
||||
@export var chitter_time_st_dev := 30.0
|
||||
|
||||
@export var splatter_scene: PackedScene
|
||||
|
||||
@onready var mesh_instance: MeshInstance3D = %MeshInstance3D
|
||||
|
||||
@onready var chitter_sfx: AudioStreamPlayer3D = %ChitterSFX
|
||||
@ -33,17 +18,11 @@ const MIN_CHITTER_INTERVAL := 4.0
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
|
||||
if chitter:
|
||||
start_chitter_timer()
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
|
||||
super._process(delta)
|
||||
var shader: ShaderMaterial = mesh_instance.mesh.surface_get_material(0)
|
||||
var damage := pct_damage()
|
||||
@ -51,6 +30,13 @@ func _process(delta: float) -> void:
|
||||
shader.set_shader_parameter("vertex_inflation", pow(damage * jitter_inflation_factor, 3))
|
||||
|
||||
|
||||
func _destroy() -> void:
|
||||
var splatter: GPUParticles3D = splatter_scene.instantiate()
|
||||
add_sibling(splatter)
|
||||
splatter.global_position = global_position
|
||||
splatter.emitting = true
|
||||
|
||||
|
||||
func start_chitter_timer() -> void:
|
||||
var interval := maxf(MIN_CHITTER_INTERVAL, randfn(chitter_time_mean, chitter_time_st_dev))
|
||||
chitter_timer.start(interval)
|
||||
|
@ -1,6 +1,7 @@
|
||||
[gd_scene load_steps=11 format=4 uid="uid://2yqi5u5eo025"]
|
||||
[gd_scene load_steps=12 format=4 uid="uid://2yqi5u5eo025"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://07t7yhijru8f" path="res://src/world/gunk_node/grunk_nodule.gd" id="1_iyr82"]
|
||||
[ext_resource type="PackedScene" uid="uid://xlt78xc1tmkl" path="res://src/effects/grunk_splatter.tscn" id="2_m8r0a"]
|
||||
[ext_resource type="Material" uid="uid://bmab6i16v748m" path="res://assets/materials/grunk_jittery.material" id="3_eu6j6"]
|
||||
[ext_resource type="AudioStream" uid="uid://bb560r2wvjfht" path="res://assets/sfx/grunk/greeble1.wav" id="4_7fplw"]
|
||||
[ext_resource type="AudioStream" uid="uid://dunakapj3mb0h" path="res://assets/sfx/grunk/greeble2.wav" id="5_omayi"]
|
||||
@ -54,6 +55,7 @@ stream_3/stream = ExtResource("7_4kci5")
|
||||
collision_layer = 36
|
||||
collision_mask = 0
|
||||
script = ExtResource("1_iyr82")
|
||||
splatter_scene = ExtResource("2_m8r0a")
|
||||
durability = 3.0
|
||||
metadata/_custom_type_script = "uid://bypgxi0gy56yk"
|
||||
|
||||
|
@ -13,9 +13,6 @@ const JITTER_FADE_RATE := 0.8
|
||||
## Value added to the player's grunk total on destruction.
|
||||
@export var value := 1000.0
|
||||
|
||||
## Scale factor applied to the size and volume of the splatter effect on destruction.
|
||||
@export var splatter_scale := 1.0
|
||||
|
||||
var _sustained_damage := 0.0
|
||||
var _hit_this_frame := false
|
||||
|
||||
@ -58,9 +55,6 @@ func collect() -> void:
|
||||
## Derived types should override `_destroy` as a lifecycle method.
|
||||
func destroy() -> void:
|
||||
Game.manager.collect_grunk(value)
|
||||
var splatter := GrunkSplatter.build(splatter_scale * scale.x)
|
||||
add_sibling(splatter)
|
||||
splatter.global_position = global_position
|
||||
_destroy()
|
||||
destroyed.emit()
|
||||
queue_free()
|
||||
|
@ -43,6 +43,34 @@ _surfaces = [{
|
||||
}]
|
||||
blend_shape_mode = 0
|
||||
|
||||
[sub_resource type="Animation" id="Animation_6vdvf"]
|
||||
resource_name = "trigger"
|
||||
length = 6.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("FrameSkipper/AlarmMesh/Armature/Skeleton3D/Bud:mesh:surface_0/material:shader_parameter/emission_color")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.333333, 5.3, 6),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Color(0.25, 0.88, 1, 1), Color(1, 0.25, 0.2625, 1), Color(1, 0.25, 0.2625, 1), Color(0.25, 0.88, 1, 1)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("FrameSkipper/AlarmMesh/Armature/Skeleton3D/Bud:mesh:surface_0/material:shader_parameter/emission_strength")
|
||||
tracks/1/interp = 2
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 0.333333, 0.9, 3.96667, 5.3, 6),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [0.02, 0.05, 10.0, 10.0, 0.05, 0.02]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_g4yos"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
@ -70,34 +98,6 @@ tracks/1/keys = {
|
||||
"values": [0.02]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_6vdvf"]
|
||||
resource_name = "trigger"
|
||||
length = 10.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("FrameSkipper/AlarmMesh/Armature/Skeleton3D/Bud:mesh:surface_0/material:shader_parameter/emission_color")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.333333, 9, 10),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Color(0.25, 0.88, 1, 1), Color(1, 0.25, 0.2625, 1), Color(1, 0.25, 0.2625, 1), Color(0.25, 0.88, 1, 1)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("FrameSkipper/AlarmMesh/Armature/Skeleton3D/Bud:mesh:surface_0/material:shader_parameter/emission_strength")
|
||||
tracks/1/interp = 2
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 0.333333, 0.9, 3.96667, 10),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 0.618, 1),
|
||||
"update": 0,
|
||||
"values": [0.02, 0.05, 10.0, 10.0, 0.02]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_vokcn"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_g4yos"),
|
||||
@ -158,7 +158,6 @@ bones/27/rotation = Quaternion(0.388328, 2.1633e-07, -1.09183e-07, 0.921521)
|
||||
bones/28/rotation = Quaternion(0.362943, -7.93195e-08, 1.03952e-07, 0.931811)
|
||||
|
||||
[node name="Bud" parent="FrameSkipper/AlarmMesh/Armature/Skeleton3D" index="0"]
|
||||
gi_mode = 2
|
||||
mesh = SubResource("ArrayMesh_c5y52")
|
||||
|
||||
[node name="AnimationPlayer" parent="FrameSkipper/AlarmMesh" index="1"]
|
||||
@ -190,7 +189,6 @@ unique_name_in_owner = true
|
||||
stream = ExtResource("6_6vdvf")
|
||||
pitch_scale = 1.1
|
||||
|
||||
[connection signal="animation_finished" from="FrameSkipper/AlarmMesh/AnimationPlayer" to="." method="_on_animation_finished"]
|
||||
[connection signal="timeout" from="PulseListenerTimer" to="." method="trigger"]
|
||||
|
||||
[editable path="FrameSkipper/AlarmMesh"]
|
||||
|
@ -1,4 +1,3 @@
|
||||
@tool
|
||||
extends GunkNode
|
||||
## Periodically emits a pulse.
|
||||
|
||||
@ -8,24 +7,15 @@ signal pulsed
|
||||
## Time in seconds between pulses.
|
||||
@export var interval := 3.0
|
||||
|
||||
@export var quick_connect_to: SignalNode:
|
||||
set = _editor_connect
|
||||
|
||||
@onready var pulse_timer: Timer = %PulseTimer
|
||||
@onready var animation_player: AnimationPlayer = %AnimationPlayer
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
if not Engine.is_editor_hint():
|
||||
pulse_timer.start(interval)
|
||||
pulse_timer.start(interval)
|
||||
|
||||
|
||||
func pulse() -> void:
|
||||
# TODO animation
|
||||
animation_player.play("pulse")
|
||||
pulsed.emit()
|
||||
|
||||
|
||||
func _editor_connect(node: SignalNode) -> void:
|
||||
self.pulsed.connect(node.pulse, CONNECT_PERSIST)
|
||||
self.notify_property_list_changed()
|
||||
|
@ -7,6 +7,8 @@ signal triggered
|
||||
@export var quick_connect_to: SignalNode:
|
||||
set = _editor_connect
|
||||
|
||||
@export var splatter_scene: PackedScene
|
||||
|
||||
# NOTE
|
||||
# trigger oscillation animation was generated using the formula
|
||||
# f(x) = e^(-0.25x) * cos(x * pi / 2 - pi/2) + 1 for x in {0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 20}
|
||||
@ -25,6 +27,10 @@ func trigger() -> void:
|
||||
cooldown_timer.start()
|
||||
|
||||
|
||||
func _destroy() -> void:
|
||||
add_sibling(splatter_scene.instantiate())
|
||||
|
||||
|
||||
func _editor_connect(node: SignalNode) -> void:
|
||||
triggered.connect(node.trigger, CONNECT_PERSIST)
|
||||
self.notify_property_list_changed()
|
||||
|
@ -1,14 +1,12 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://kctp5erogwcb"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bde7cglaqobkd" path="res://src/world/mechanics/listener/listener.gd" id="1_htscg"]
|
||||
[ext_resource type="PackedScene" uid="uid://xlt78xc1tmkl" path="res://src/effects/grunk_splatter.tscn" id="2_2ibh1"]
|
||||
[ext_resource type="Script" uid="uid://cfsiyhhrcua6o" path="res://src/world/game_sound/game_sound_listener.gd" id="2_htscg"]
|
||||
|
||||
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_2ibh1"]
|
||||
data = PackedVector3Array(0, 0.05, 0.25, 0.0957, 0.05, 0.231, 0, -0.05, 0.2, 0.0957, 0.05, 0.231, 0.0765, -0.05, 0.1848, 0, -0.05, 0.2, 0.0957, 0.05, 0.231, 0.1768, 0.05, 0.1768, 0.0765, -0.05, 0.1848, 0.1768, 0.05, 0.1768, 0.1414, -0.05, 0.1414, 0.0765, -0.05, 0.1848, 0.1768, 0.05, 0.1768, 0.231, 0.05, 0.0957, 0.1414, -0.05, 0.1414, 0.231, 0.05, 0.0957, 0.1848, -0.05, 0.0765, 0.1414, -0.05, 0.1414, 0.231, 0.05, 0.0957, 0.25, 0.05, 0, 0.1848, -0.05, 0.0765, 0.25, 0.05, 0, 0.2, -0.05, 0, 0.1848, -0.05, 0.0765, 0.25, 0.05, 0, 0.231, 0.05, -0.0957, 0.2, -0.05, 0, 0.231, 0.05, -0.0957, 0.1848, -0.05, -0.0765, 0.2, -0.05, 0, 0.231, 0.05, -0.0957, 0.1768, 0.05, -0.1768, 0.1848, -0.05, -0.0765, 0.1768, 0.05, -0.1768, 0.1414, -0.05, -0.1414, 0.1848, -0.05, -0.0765, 0.1768, 0.05, -0.1768, 0.0957, 0.05, -0.231, 0.1414, -0.05, -0.1414, 0.0957, 0.05, -0.231, 0.0765, -0.05, -0.1848, 0.1414, -0.05, -0.1414, 0.0957, 0.05, -0.231, 0, 0.05, -0.25, 0.0765, -0.05, -0.1848, 0, 0.05, -0.25, 0, -0.05, -0.2, 0.0765, -0.05, -0.1848, 0, 0.05, -0.25, -0.0957, 0.05, -0.231, 0, -0.05, -0.2, -0.0957, 0.05, -0.231, -0.0765, -0.05, -0.1848, 0, -0.05, -0.2, -0.0957, 0.05, -0.231, -0.1768, 0.05, -0.1768, -0.0765, -0.05, -0.1848, -0.1768, 0.05, -0.1768, -0.1414, -0.05, -0.1414, -0.0765, -0.05, -0.1848, -0.1768, 0.05, -0.1768, -0.231, 0.05, -0.0957, -0.1414, -0.05, -0.1414, -0.231, 0.05, -0.0957, -0.1848, -0.05, -0.0765, -0.1414, -0.05, -0.1414, -0.231, 0.05, -0.0957, -0.25, 0.05, 0, -0.1848, -0.05, -0.0765, -0.25, 0.05, 0, -0.2, -0.05, 0, -0.1848, -0.05, -0.0765, -0.25, 0.05, 0, -0.231, 0.05, 0.0957, -0.2, -0.05, 0, -0.231, 0.05, 0.0957, -0.1848, -0.05, 0.0765, -0.2, -0.05, 0, -0.231, 0.05, 0.0957, -0.1768, 0.05, 0.1768, -0.1848, -0.05, 0.0765, -0.1768, 0.05, 0.1768, -0.1414, -0.05, 0.1414, -0.1848, -0.05, 0.0765, -0.1768, 0.05, 0.1768, -0.0957, 0.05, 0.231, -0.1414, -0.05, 0.1414, -0.0957, 0.05, 0.231, -0.0765, -0.05, 0.1848, -0.1414, -0.05, 0.1414, -0.0957, 0.05, 0.231, 0, 0.05, 0.25, -0.0765, -0.05, 0.1848, 0, 0.05, 0.25, 0, -0.05, 0.2, -0.0765, -0.05, 0.1848, 0, 0.05, 0, 0.0957, 0.05, 0.231, 0, 0.05, 0.25, 0, 0.05, 0, 0.1768, 0.05, 0.1768, 0.0957, 0.05, 0.231, 0, 0.05, 0, 0.231, 0.05, 0.0957, 0.1768, 0.05, 0.1768, 0, 0.05, 0, 0.25, 0.05, 0, 0.231, 0.05, 0.0957, 0, 0.05, 0, 0.231, 0.05, -0.0957, 0.25, 0.05, 0, 0, 0.05, 0, 0.1768, 0.05, -0.1768, 0.231, 0.05, -0.0957, 0, 0.05, 0, 0.0957, 0.05, -0.231, 0.1768, 0.05, -0.1768, 0, 0.05, 0, 0, 0.05, -0.25, 0.0957, 0.05, -0.231, 0, 0.05, 0, -0.0957, 0.05, -0.231, 0, 0.05, -0.25, 0, 0.05, 0, -0.1768, 0.05, -0.1768, -0.0957, 0.05, -0.231, 0, 0.05, 0, -0.231, 0.05, -0.0957, -0.1768, 0.05, -0.1768, 0, 0.05, 0, -0.25, 0.05, 0, -0.231, 0.05, -0.0957, 0, 0.05, 0, -0.231, 0.05, 0.0957, -0.25, 0.05, 0, 0, 0.05, 0, -0.1768, 0.05, 0.1768, -0.231, 0.05, 0.0957, 0, 0.05, 0, -0.0957, 0.05, 0.231, -0.1768, 0.05, 0.1768, 0, 0.05, 0, 0, 0.05, 0.25, -0.0957, 0.05, 0.231, 0, -0.05, 0, 0, -0.05, 0.2, 0.0765, -0.05, 0.1848, 0, -0.05, 0, 0.0765, -0.05, 0.1848, 0.1414, -0.05, 0.1414, 0, -0.05, 0, 0.1414, -0.05, 0.1414, 0.1848, -0.05, 0.0765, 0, -0.05, 0, 0.1848, -0.05, 0.0765, 0.2, -0.05, 0, 0, -0.05, 0, 0.2, -0.05, 0, 0.1848, -0.05, -0.0765, 0, -0.05, 0, 0.1848, -0.05, -0.0765, 0.1414, -0.05, -0.1414, 0, -0.05, 0, 0.1414, -0.05, -0.1414, 0.0765, -0.05, -0.1848, 0, -0.05, 0, 0.0765, -0.05, -0.1848, 0, -0.05, -0.2, 0, -0.05, 0, 0, -0.05, -0.2, -0.0765, -0.05, -0.1848, 0, -0.05, 0, -0.0765, -0.05, -0.1848, -0.1414, -0.05, -0.1414, 0, -0.05, 0, -0.1414, -0.05, -0.1414, -0.1848, -0.05, -0.0765, 0, -0.05, 0, -0.1848, -0.05, -0.0765, -0.2, -0.05, 0, 0, -0.05, 0, -0.2, -0.05, 0, -0.1848, -0.05, 0.0765, 0, -0.05, 0, -0.1848, -0.05, 0.0765, -0.1414, -0.05, 0.1414, 0, -0.05, 0, -0.1414, -0.05, 0.1414, -0.0765, -0.05, 0.1848, 0, -0.05, 0, -0.0765, -0.05, 0.1848, 0, -0.05, 0.2)
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_2ibh1"]
|
||||
radius = 1.0
|
||||
|
||||
[sub_resource type="CylinderMesh" id="CylinderMesh_ud3xk"]
|
||||
top_radius = 0.25
|
||||
bottom_radius = 0.2
|
||||
@ -57,6 +55,7 @@ _data = {
|
||||
collision_layer = 36
|
||||
collision_mask = 0
|
||||
script = ExtResource("1_htscg")
|
||||
splatter_scene = ExtResource("2_2ibh1")
|
||||
durability = 3.0
|
||||
value = 4000.0
|
||||
metadata/_custom_type_script = "uid://bypgxi0gy56yk"
|
||||
@ -72,10 +71,9 @@ script = ExtResource("2_htscg")
|
||||
metadata/_custom_type_script = "uid://cfsiyhhrcua6o"
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="CollisionShape3D/GameSoundListener"]
|
||||
shape = SubResource("SphereShape3D_2ibh1")
|
||||
shape = SubResource("ConcavePolygonShape3D_2ibh1")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="CollisionShape3D"]
|
||||
gi_mode = 2
|
||||
mesh = SubResource("CylinderMesh_ud3xk")
|
||||
skeleton = NodePath("../..")
|
||||
|
||||
|
@ -8,11 +8,9 @@ signal triggered
|
||||
## Emitted when `pulse` is called, after a short delay.
|
||||
signal pulsed
|
||||
|
||||
@export_category("Editor Tools")
|
||||
@export var quick_connect_to: SignalNode:
|
||||
set = _editor_connect
|
||||
|
||||
@export_category("Game Scenes")
|
||||
@export var editor_arrow_scene: PackedScene
|
||||
|
||||
var _busy := false
|
||||
@ -74,10 +72,9 @@ static func find_path(
|
||||
|
||||
|
||||
func _editor_connect(node: SignalNode) -> void:
|
||||
if node:
|
||||
self.triggered.connect(node.trigger, CONNECT_PERSIST)
|
||||
self.pulsed.connect(node.pulse, CONNECT_PERSIST)
|
||||
self.notify_property_list_changed()
|
||||
self.triggered.connect(node.trigger, CONNECT_PERSIST)
|
||||
self.pulsed.connect(node.trigger, CONNECT_PERSIST)
|
||||
self.notify_property_list_changed()
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
|
@ -115,10 +115,8 @@ collision_mask = 0
|
||||
script = ExtResource("1_rdv5j")
|
||||
editor_arrow_scene = ExtResource("2_nfkbq")
|
||||
value = 800.0
|
||||
splatter_scale = 0.2
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
gi_mode = 2
|
||||
mesh = SubResource("SphereMesh_hsruj")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
|
@ -48,14 +48,13 @@ data = PackedVector3Array(0.7236, -0.4472, 0.5257, 0, -1, 0, -0.2764, -0.4472, 0
|
||||
collision_layer = 36
|
||||
collision_mask = 0
|
||||
script = ExtResource("1_t1c4j")
|
||||
durability = 0.5
|
||||
durability = 3.0
|
||||
value = 4000.0
|
||||
metadata/_custom_type_script = "uid://bypgxi0gy56yk"
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
|
||||
gi_mode = 2
|
||||
mesh = SubResource("ArrayMesh_ulsff")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
|
Loading…
x
Reference in New Issue
Block a user