Compare commits

..

11 Commits

Author SHA1 Message Date
c09dfd1e7b more tuts, respawn mechanic when falling, reworked wall run again
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 19s
Create tag and build when new code gets to main / Test (push) Successful in 7m37s
Create tag and build when new code gets to main / Export (push) Has been cancelled
Create tag and build when new code gets to main / ReleaseName (push) Successful in 10s
Create tag and build when new code gets to main / Release (push) Failing after 4m53s
2026-02-11 17:06:18 +01:00
9db0056c5d more tut 2026-02-11 10:30:21 +01:00
7f1d33e4fc more sword tutorial 2026-02-10 22:33:16 +01:00
aaa9b102c1 started working on sword dash tutorial and bullet time is now unlimited while aiming in air
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 20s
Create tag and build when new code gets to main / Test (push) Successful in 6m44s
Create tag and build when new code gets to main / Export (push) Successful in 8m17s
2026-02-10 16:44:45 +01:00
cb348667f5 recover weapon if walking on it 2026-02-10 15:27:30 +01:00
8d23a95c68 ci back
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 18s
Create tag and build when new code gets to main / Test (push) Successful in 6m13s
Create tag and build when new code gets to main / Export (push) Successful in 8m45s
2026-02-10 09:41:44 +01:00
a9809abc27 removing sa mere
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 20s
Create tag and build when new code gets to main / Test (push) Failing after 5m10s
2026-02-10 09:35:26 +01:00
db65c02e75 trying a simpler workflow 2026-02-10 09:26:09 +01:00
5d49d6d681 player back at correct location for tuto sword
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 20s
Create tag and build when new code gets to main / Test (push) Successful in 7m17s
Create tag and build when new code gets to main / Export (push) Successful in 9m40s
2026-02-10 09:11:09 +01:00
fa0e511b3a removed ability to scale up wall by mashing dash and jump buttons
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 21s
Create tag and build when new code gets to main / Test (push) Failing after 2m44s
Create tag and build when new code gets to main / Export (push) Successful in 8m44s
2026-02-09 17:58:13 +01:00
3efbd41f56 aim assist in inputs
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 30s
Create tag and build when new code gets to main / Test (push) Successful in 9m0s
Create tag and build when new code gets to main / Export (push) Successful in 10m24s
2026-02-09 11:20:57 +01:00
11 changed files with 969 additions and 165 deletions

View File

@@ -3,19 +3,21 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://db6uqhcmcfs5t"
path="res://.godot/imported/xbox_lb_outline.svg-609923d5fb24f594348efed4ab529ec6.ctex"
path.s3tc="res://.godot/imported/xbox_lb_outline.svg-609923d5fb24f594348efed4ab529ec6.s3tc.ctex"
path.etc2="res://.godot/imported/xbox_lb_outline.svg-609923d5fb24f594348efed4ab529ec6.etc2.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
}
[deps]
source_file="res://assets/ui/input-prompts/Xbox Series/Vector/xbox_lb_outline.svg"
dest_files=["res://.godot/imported/xbox_lb_outline.svg-609923d5fb24f594348efed4ab529ec6.ctex"]
dest_files=["res://.godot/imported/xbox_lb_outline.svg-609923d5fb24f594348efed4ab529ec6.s3tc.ctex", "res://.godot/imported/xbox_lb_outline.svg-609923d5fb24f594348efed4ab529ec6.etc2.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,7 +25,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -37,7 +39,7 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -3,19 +3,21 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://nrhxjdpuje3f"
path="res://.godot/imported/xbox_lt_outline.svg-7aebefa9684921bfb5211975ae57164f.ctex"
path.s3tc="res://.godot/imported/xbox_lt_outline.svg-7aebefa9684921bfb5211975ae57164f.s3tc.ctex"
path.etc2="res://.godot/imported/xbox_lt_outline.svg-7aebefa9684921bfb5211975ae57164f.etc2.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
}
[deps]
source_file="res://assets/ui/input-prompts/Xbox Series/Vector/xbox_lt_outline.svg"
dest_files=["res://.godot/imported/xbox_lt_outline.svg-7aebefa9684921bfb5211975ae57164f.ctex"]
dest_files=["res://.godot/imported/xbox_lt_outline.svg-7aebefa9684921bfb5211975ae57164f.s3tc.ctex", "res://.godot/imported/xbox_lt_outline.svg-7aebefa9684921bfb5211975ae57164f.etc2.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,7 +25,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -37,7 +39,7 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -3,19 +3,21 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dyjvbsvbriii4"
path="res://.godot/imported/xbox_rb_outline.svg-da022b434843043fffdf7deef5f634f4.ctex"
path.s3tc="res://.godot/imported/xbox_rb_outline.svg-da022b434843043fffdf7deef5f634f4.s3tc.ctex"
path.etc2="res://.godot/imported/xbox_rb_outline.svg-da022b434843043fffdf7deef5f634f4.etc2.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
}
[deps]
source_file="res://assets/ui/input-prompts/Xbox Series/Vector/xbox_rb_outline.svg"
dest_files=["res://.godot/imported/xbox_rb_outline.svg-da022b434843043fffdf7deef5f634f4.ctex"]
dest_files=["res://.godot/imported/xbox_rb_outline.svg-da022b434843043fffdf7deef5f634f4.s3tc.ctex", "res://.godot/imported/xbox_rb_outline.svg-da022b434843043fffdf7deef5f634f4.etc2.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,7 +25,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -37,7 +39,7 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,21 @@
extends Node3D
@onready var player_fell_respawn: Marker3D = $PlayerFellRespawn
@onready var animation_player: AnimationPlayer = $AnimationPlayer
var _player: Node3D
func _on_player_fell_tp_body_entered(body: Node3D) -> void:
_player = body
animation_player.play("player_fell")
func reset_player_position() -> void:
if _player == null:
return
_player.position = player_fell_respawn.position
func _on_death_plane_body_entered(body: Node3D) -> void:
body.queue_free()

View File

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

View File

@@ -1,5 +1,6 @@
[gd_scene format=3 uid="uid://55wehh6xombr"]
[ext_resource type="Script" uid="uid://beof168aw2acj" path="res://maps/_templates/main_scene_template.gd" id="1_5g5a0"]
[ext_resource type="PackedScene" uid="uid://bkcsjsk2ciff" path="res://addons/maaacks_game_template/base/scenes/music_players/background_music_player.tscn" id="2_roiv2"]
[ext_resource type="AudioStream" uid="uid://f8cvr5s041ej" path="res://assets/audio/ambiance/637083__nox_sound__ambiance_nature_night_cricket_calm_loop_stereo.wav" id="3_boadi"]
[ext_resource type="Script" uid="uid://cupqhe3qv7ero" path="res://tools/general_manager.gd" id="3_k6got"]
@@ -68,13 +69,188 @@ fog_enabled = true
fog_light_color = Color(1, 1, 1, 1)
fog_sun_scatter = 0.5
fog_density = 0.002
fog_aerial_perspective = 1.0
fog_sky_affect = 0.184
volumetric_fog_density = 0.004
volumetric_fog_emission = Color(1, 1, 1, 1)
volumetric_fog_anisotropy = 0.6
adjustment_enabled = true
[sub_resource type="Animation" id="Animation_nyvgt"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("WorldEnvironment:environment:fog_density")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.002]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("WorldEnvironment:environment:fog_sun_scatter")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.5]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("WorldEnvironment:environment:fog_light_energy")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [1.0]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("WorldEnvironment:environment:fog_aerial_perspective")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [1.0]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("WorldEnvironment:environment:fog_height")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("WorldEnvironment:environment:fog_height_density")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
[sub_resource type="Animation" id="Animation_5g5a0"]
resource_name = "player_fell"
length = 2.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("WorldEnvironment:environment:fog_density")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 1, 2),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [0.002, 1.0, 0.002]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("WorldEnvironment:environment:fog_sun_scatter")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1, 2),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [0.5, 1.0, 0.5]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("WorldEnvironment:environment:fog_light_energy")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 1, 2),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [1.0, 10.0, 1.0]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("WorldEnvironment:environment:fog_aerial_perspective")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 1, 2),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [1.0, 0.0, 1.0]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("WorldEnvironment:environment:fog_height")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 1, 2),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [0.0, 1024.0, 0.0]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("WorldEnvironment:environment:fog_height_density")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0, 2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 0.0]
}
tracks/6/type = "method"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath(".")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(1),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"reset_player_position"
}]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_nyvgt"]
_data = {
&"RESET": SubResource("Animation_nyvgt"),
&"player_fell": SubResource("Animation_5g5a0")
}
[sub_resource type="WorldBoundaryShape3D" id="WorldBoundaryShape3D_gm8ij"]
[node name="Main" type="Node3D" unique_id=955321579]
script = ExtResource("1_5g5a0")
[node name="DebugLayer" type="CanvasLayer" parent="." unique_id=294370189]
@@ -104,6 +280,9 @@ shadow_enabled = true
shadow_opacity = 0.95
shadow_blur = 2.435
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=511897109]
libraries/ = SubResource("AnimationLibrary_nyvgt")
[node name="Player" parent="." unique_id=1309399929 instance=ExtResource("17_clkha")]
transform = Transform3D(0.99999994, 0, 0, 0, 1, 0, 0, 0, 0.99999994, 0, 0, 0)
TutorialDone = true
@@ -113,4 +292,26 @@ AccelerationAir = 1.5
visible = false
Radius = 2.0
[node name="PlayerFellRespawn" type="Marker3D" parent="." unique_id=479136076]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 300, 0)
[node name="PlayerFellTP" type="Area3D" parent="." unique_id=1277888169]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -200, 0)
collision_layer = 0
monitorable = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerFellTP" unique_id=1866249040]
shape = SubResource("WorldBoundaryShape3D_gm8ij")
[node name="DeathPlane" type="Area3D" parent="." unique_id=1766360237]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -100, 0)
collision_layer = 0
collision_mask = 16
monitorable = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="DeathPlane" unique_id=835637700]
shape = SubResource("WorldBoundaryShape3D_gm8ij")
[connection signal="PlayerDied" from="Player" to="GeneralManager" method="on_player_died"]
[connection signal="body_entered" from="PlayerFellTP" to="." method="_on_player_fell_tp_body_entered"]
[connection signal="body_entered" from="DeathPlane" to="." method="_on_death_plane_body_entered"]

View File

@@ -8,6 +8,12 @@
[ext_resource type="Script" uid="uid://dtpxijlnb2c5" path="res://scenes/components/movement/RMovement.cs" id="6_cgfmf"]
[ext_resource type="Script" uid="uid://baiapod3csndf" path="res://scenes/components/health/RHealth.cs" id="7_hr4qv"]
[ext_resource type="PackedScene" uid="uid://cmlud1hwkd6sv" path="res://scenes/enemies/flying_enemy/flying_enemy.tscn" id="8_dkfm7"]
[ext_resource type="Script" uid="uid://jitubgv6judn" path="res://scenes/components/damage/RDamage.cs" id="9_ofbe2"]
[ext_resource type="PackedScene" uid="uid://b8aet6m4m2i83" path="res://scenes/tuto_trigger/TutoTrigger.tscn" id="10_dkfm7"]
[ext_resource type="Texture2D" uid="uid://nrhxjdpuje3f" path="res://assets/ui/input-prompts/Xbox Series/Vector/xbox_lt_outline.svg" id="11_nwk5u"]
[ext_resource type="Texture2D" uid="uid://cjh5cnvdbq5ku" path="res://assets/ui/input-prompts/Xbox Series/Vector/xbox_button_b_outline.svg" id="12_xy0m1"]
[ext_resource type="Texture2D" uid="uid://dyjvbsvbriii4" path="res://assets/ui/input-prompts/Xbox Series/Vector/xbox_rb_outline.svg" id="13_nwk5u"]
[ext_resource type="Texture2D" uid="uid://db6uqhcmcfs5t" path="res://assets/ui/input-prompts/Xbox Series/Vector/xbox_lb_outline.svg" id="14_xy0m1"]
[sub_resource type="Resource" id="Resource_nwk5u"]
script = ExtResource("6_cgfmf")
@@ -19,261 +25,722 @@ script = ExtResource("7_hr4qv")
StartingHealth = 100.0
metadata/_custom_type_script = "uid://baiapod3csndf"
[sub_resource type="Resource" id="Resource_invhv"]
script = ExtResource("7_hr4qv")
StartingHealth = 1.0
metadata/_custom_type_script = "uid://baiapod3csndf"
[sub_resource type="Resource" id="Resource_cgfmf"]
script = ExtResource("9_ofbe2")
DamageType = 2
metadata/_custom_type_script = "uid://jitubgv6judn"
[sub_resource type="Resource" id="Resource_05lnh"]
script = ExtResource("7_hr4qv")
StartingHealth = 100.0
metadata/_custom_type_script = "uid://baiapod3csndf"
[sub_resource type="Resource" id="Resource_t5o40"]
script = ExtResource("7_hr4qv")
StartingHealth = 100.0
metadata/_custom_type_script = "uid://baiapod3csndf"
[sub_resource type="BoxShape3D" id="BoxShape3D_xy0m1"]
size = Vector3(3, 3.75, 3)
[sub_resource type="BoxShape3D" id="BoxShape3D_05lnh"]
size = Vector3(9, 11, 19)
[sub_resource type="BoxShape3D" id="BoxShape3D_t5o40"]
size = Vector3(9, 2.25, 5)
[sub_resource type="BoxShape3D" id="BoxShape3D_dkfm7"]
size = Vector3(5, 2.25, 3.75)
[sub_resource type="BoxShape3D" id="BoxShape3D_nwk5u"]
size = Vector3(5.5, 4.5, 2)
[sub_resource type="BoxShape3D" id="BoxShape3D_prjj8"]
size = Vector3(2, 3.25, 1.25)
[sub_resource type="BoxShape3D" id="BoxShape3D_1opdv"]
size = Vector3(8.25, 3.25, 2.75)
[node name="Main" unique_id=955321579 instance=ExtResource("1_8n6bu")]
[node name="Player" parent="." index="6" unique_id=1309399929]
transform = Transform3D(0.99999994, 0, 0, 0, 1, 0, 0, 0, 0.99999994, 3, 0, -1.5)
transform = Transform3D(0.99999994, 0, 0, 0, 1, 0, 0, 0, 0.99999994, -0.5, 0, 0)
[node name="PlaytestArena" parent="." index="7" unique_id=664535670 instance=ExtResource("2_wsc2c")]
[node name="Playground" type="Node3D" parent="." index="7" unique_id=2099606598]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, -8.25, 13, 58.5)
[node name="CSGBox3D108" type="CSGBox3D" parent="PlaytestArena" index="88" unique_id=47922109]
[node name="PlaytestArena" parent="Playground" index="0" unique_id=664535670 instance=ExtResource("2_wsc2c")]
[node name="CSGBox3D108" type="CSGBox3D" parent="Playground/PlaytestArena" index="88" unique_id=47922109]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 8.75, 2.25)
use_collision = true
size = Vector3(1, 17.5, 9.5)
material = ExtResource("3_wsc2c")
[node name="Targets" type="Node3D" parent="." index="8" unique_id=1727473773]
[node name="Targets" type="Node3D" parent="Playground" index="1" unique_id=1727473773]
[node name="FixedDashthroughTarget" parent="Targets" index="0" unique_id=1291663508 instance=ExtResource("4_invhv")]
[node name="FixedDashthroughTarget" parent="Playground/Targets" index="0" unique_id=1291663508 instance=ExtResource("4_invhv")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 17, 13.5, -9)
[node name="FixedDashthroughTarget8" parent="Targets" index="1" unique_id=475406577 instance=ExtResource("4_invhv")]
[node name="FixedDashthroughTarget8" parent="Playground/Targets" index="1" unique_id=475406577 instance=ExtResource("4_invhv")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 17, 23, -34)
[node name="FixedDashthroughTarget9" parent="Targets" index="2" unique_id=168635463 instance=ExtResource("4_invhv")]
[node name="FixedDashthroughTarget9" parent="Playground/Targets" index="2" unique_id=168635463 instance=ExtResource("4_invhv")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 35.5, 30.5, -42.5)
[node name="FixedDashthroughTarget10" parent="Targets" index="3" unique_id=119396227 instance=ExtResource("4_invhv")]
[node name="FixedDashthroughTarget10" parent="Playground/Targets" index="3" unique_id=119396227 instance=ExtResource("4_invhv")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 26, 30.5, -42.5)
[node name="FixedDashthroughTarget7" parent="Targets" index="4" unique_id=282429016 instance=ExtResource("4_invhv")]
[node name="FixedDashthroughTarget7" parent="Playground/Targets" index="4" unique_id=282429016 instance=ExtResource("4_invhv")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 10.5, 5.5, -9)
[node name="FixedDashthroughTarget6" parent="Targets" index="5" unique_id=437890277 instance=ExtResource("4_invhv")]
[node name="FixedDashthroughTarget6" parent="Playground/Targets" index="5" unique_id=437890277 instance=ExtResource("4_invhv")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 8, 6, -30.5)
[node name="FixedDashthroughTarget4" parent="Targets" index="6" unique_id=1484691271 instance=ExtResource("4_invhv")]
[node name="FixedDashthroughTarget4" parent="Playground/Targets" index="6" unique_id=1484691271 instance=ExtResource("4_invhv")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 30.5, 5, -33.5)
[node name="FixedDashthroughTarget5" parent="Targets" index="7" unique_id=434257222 instance=ExtResource("4_invhv")]
[node name="FixedDashthroughTarget5" parent="Playground/Targets" index="7" unique_id=434257222 instance=ExtResource("4_invhv")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 26.5, 9.5, -44)
[node name="FixedDashthroughTarget2" parent="Targets" index="8" unique_id=272400108 instance=ExtResource("4_invhv")]
[node name="FixedDashthroughTarget2" parent="Playground/Targets" index="8" unique_id=272400108 instance=ExtResource("4_invhv")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 27, 13.5, -9)
[node name="FixedDashthroughTarget3" parent="Targets" index="9" unique_id=1008201593 instance=ExtResource("4_invhv")]
[node name="FixedDashthroughTarget3" parent="Playground/Targets" index="9" unique_id=1008201593 instance=ExtResource("4_invhv")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 43, 6, -8.5)
[node name="FlyingEnemies" type="Node3D" parent="." index="9" unique_id=1518759273]
[node name="FlyingEnemies" type="Node3D" parent="Playground" index="2" unique_id=1518759273]
[node name="FlyingEnemy" parent="FlyingEnemies" index="0" unique_id=2090203407 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
[node name="FlyingEnemy" parent="Playground/FlyingEnemies" index="0" unique_id=2090203407 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.5, 7, -9)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RMovement = SubResource("Resource_nwk5u")
[node name="FlyingEnemy10" parent="FlyingEnemies" index="1" unique_id=1610354388 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
[node name="FlyingEnemy10" parent="Playground/FlyingEnemies" index="1" unique_id=1610354388 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 32.5, 7, 0.5)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RMovement = SubResource("Resource_nwk5u")
[node name="FlyingEnemy11" parent="FlyingEnemies" index="2" unique_id=1671862122 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
[node name="FlyingEnemy11" parent="Playground/FlyingEnemies" index="2" unique_id=1671862122 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 7, 1.5)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RMovement = SubResource("Resource_nwk5u")
[node name="FlyingEnemy4" parent="FlyingEnemies" index="3" unique_id=665537400 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
[node name="FlyingEnemy4" parent="Playground/FlyingEnemies" index="3" unique_id=665537400 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 33, 6, -12)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RMovement = SubResource("Resource_nwk5u")
[node name="FlyingEnemy5" parent="FlyingEnemies" index="4" unique_id=1592183094 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
[node name="FlyingEnemy5" parent="Playground/FlyingEnemies" index="4" unique_id=1592183094 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 45, 6, -12)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RMovement = SubResource("Resource_nwk5u")
[node name="FlyingEnemy9" parent="FlyingEnemies" index="5" unique_id=842890582 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
[node name="FlyingEnemy9" parent="Playground/FlyingEnemies" index="5" unique_id=842890582 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 45, 6, -1.5)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RMovement = SubResource("Resource_nwk5u")
[node name="FlyingEnemy2" parent="FlyingEnemies" index="6" unique_id=188061312 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
[node name="FlyingEnemy2" parent="Playground/FlyingEnemies" index="6" unique_id=188061312 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.5, 11, -24)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RMovement = SubResource("Resource_nwk5u")
[node name="FlyingEnemy12" parent="FlyingEnemies" index="7" unique_id=821624940 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
[node name="FlyingEnemy12" parent="Playground/FlyingEnemies" index="7" unique_id=821624940 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 8.5, -24)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RMovement = SubResource("Resource_nwk5u")
[node name="FlyingEnemy3" parent="FlyingEnemies" index="8" unique_id=412581083 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
[node name="FlyingEnemy3" parent="Playground/FlyingEnemies" index="8" unique_id=412581083 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 14, -32.5)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RMovement = SubResource("Resource_nwk5u")
[node name="FlyingEnemy6" parent="FlyingEnemies" index="9" unique_id=779578466 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
[node name="FlyingEnemy6" parent="Playground/FlyingEnemies" index="9" unique_id=779578466 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 23.5, -23)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RMovement = SubResource("Resource_nwk5u")
[node name="FlyingEnemy7" parent="FlyingEnemies" index="10" unique_id=1163439326 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
[node name="FlyingEnemy7" parent="Playground/FlyingEnemies" index="10" unique_id=1163439326 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34, 23.5, -23)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RMovement = SubResource("Resource_nwk5u")
[node name="FlyingEnemy8" parent="FlyingEnemies" index="11" unique_id=1979706254 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
[node name="FlyingEnemy8" parent="Playground/FlyingEnemies" index="11" unique_id=1979706254 node_paths=PackedStringArray("Target") instance=ExtResource("8_dkfm7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 43, 23.5, -23)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RMovement = SubResource("Resource_nwk5u")
[node name="GroundedEnemies" type="Node3D" parent="." index="10" unique_id=1101330520]
[node name="GroundedEnemies" type="Node3D" parent="Playground" index="3" unique_id=1101330520]
[node name="Enemy3" parent="GroundedEnemies" index="0" unique_id=1159989424 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy3" parent="Playground/GroundedEnemies" index="0" unique_id=1159989424 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 25, 0, -8.336809)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy11" parent="GroundedEnemies" index="1" unique_id=1747444936 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy11" parent="Playground/GroundedEnemies" index="1" unique_id=1747444936 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 17, 8, 3.6631908)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy12" parent="GroundedEnemies" index="2" unique_id=283117081 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy12" parent="Playground/GroundedEnemies" index="2" unique_id=283117081 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 36.5, 11, -4.836809)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy13" parent="GroundedEnemies" index="3" unique_id=970022638 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy13" parent="Playground/GroundedEnemies" index="3" unique_id=970022638 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 36.5, 12, -19.33681)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy18" parent="GroundedEnemies" index="4" unique_id=2077088475 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy18" parent="Playground/GroundedEnemies" index="4" unique_id=2077088475 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 30.5, 12, -19.33681)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy19" parent="GroundedEnemies" index="5" unique_id=2023773341 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy19" parent="Playground/GroundedEnemies" index="5" unique_id=2023773341 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 36.5, 7.5, -19.33681)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy25" parent="GroundedEnemies" index="6" unique_id=1101329723 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy25" parent="Playground/GroundedEnemies" index="6" unique_id=1101329723 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 46, 7.5, -19.33681)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy26" parent="GroundedEnemies" index="7" unique_id=855220553 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy26" parent="Playground/GroundedEnemies" index="7" unique_id=855220553 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 46, 12, -35.336807)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy20" parent="GroundedEnemies" index="8" unique_id=1255215986 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy20" parent="Playground/GroundedEnemies" index="8" unique_id=1255215986 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 30.5, 7.5, -19.33681)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy21" parent="GroundedEnemies" index="9" unique_id=2098915426 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy21" parent="Playground/GroundedEnemies" index="9" unique_id=2098915426 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 36.5, 0.5, -19.33681)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy22" parent="GroundedEnemies" index="10" unique_id=246912749 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy22" parent="Playground/GroundedEnemies" index="10" unique_id=246912749 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 30.5, 0.5, -19.33681)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy14" parent="GroundedEnemies" index="11" unique_id=211015190 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy14" parent="Playground/GroundedEnemies" index="11" unique_id=211015190 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 41, 17.5, -33.336807)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy15" parent="GroundedEnemies" index="12" unique_id=1164179421 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy15" parent="Playground/GroundedEnemies" index="12" unique_id=1164179421 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 31, 17.5, -33.336807)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy16" parent="GroundedEnemies" index="13" unique_id=1169725422 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy16" parent="Playground/GroundedEnemies" index="13" unique_id=1169725422 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 24.5, 17.5, -33.336807)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy17" parent="GroundedEnemies" index="14" unique_id=1951666189 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy17" parent="Playground/GroundedEnemies" index="14" unique_id=1951666189 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 17.5, 17.5, -22.836807)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy23" parent="GroundedEnemies" index="15" unique_id=1348057502 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy23" parent="Playground/GroundedEnemies" index="15" unique_id=1348057502 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 17.5, 24.5, -43.336807)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy24" parent="GroundedEnemies" index="16" unique_id=2068813971 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy24" parent="Playground/GroundedEnemies" index="16" unique_id=2068813971 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 45, 24.5, -43.336807)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy4" parent="GroundedEnemies" index="17" unique_id=366059658 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy4" parent="Playground/GroundedEnemies" index="17" unique_id=366059658 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 10.5, 0, -18.33681)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy27" parent="GroundedEnemies" index="18" unique_id=883912991 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 13.5, 0, 1.1631908)
Target = NodePath("../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy7" parent="GroundedEnemies" index="19" unique_id=1389063523 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy7" parent="Playground/GroundedEnemies" index="18" unique_id=1389063523 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 25.5, 4, -27.33681)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy10" parent="GroundedEnemies" index="20" unique_id=836898496 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy27" parent="Playground/GroundedEnemies" index="19" unique_id=854456486 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 20, 0, -44.836807)
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy10" parent="Playground/GroundedEnemies" index="20" unique_id=836898496 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 30.5, 11, -33.336807)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy8" parent="GroundedEnemies" index="21" unique_id=1015624071 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy8" parent="Playground/GroundedEnemies" index="21" unique_id=1015624071 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 34.5, 1.5, -27.33681)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy9" parent="GroundedEnemies" index="22" unique_id=827865590 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy9" parent="Playground/GroundedEnemies" index="22" unique_id=827865590 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 46.5, 0, -27.33681)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy5" parent="GroundedEnemies" index="23" unique_id=1267116862 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy5" parent="Playground/GroundedEnemies" index="23" unique_id=1267116862 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 4, 0, -18.33681)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy6" parent="GroundedEnemies" index="24" unique_id=1147823180 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
[node name="Enemy6" parent="Playground/GroundedEnemies" index="24" unique_id=1147823180 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 16.5, 7, -17.33681)
Target = NodePath("../../Player")
Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u")
[node name="Tutorial" type="CSGCombiner3D" parent="." index="8" unique_id=1168290062]
use_collision = true
collision_layer = 256
collision_mask = 65553
[node name="FixedDashthroughTarget11" parent="Tutorial" index="0" unique_id=2053952229 instance=ExtResource("4_invhv")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, -7.25, 20.5, -27.5)
[node name="FixedDashthroughTarget13" parent="Tutorial" index="1" unique_id=1470128508 instance=ExtResource("4_invhv")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 1.3647223, 23.75, -13.75)
[node name="Enemy28" parent="Tutorial" index="2" unique_id=1765389924 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -5, 22, 16.5)
Target = NodePath("../../Player")
RHealth = SubResource("Resource_invhv")
RDamage = SubResource("Resource_cgfmf")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy29" parent="Tutorial" index="3" unique_id=1071267369 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -10, 22, 28.75)
Target = NodePath("../../Player")
RHealth = SubResource("Resource_05lnh")
RDamage = SubResource("Resource_cgfmf")
RMovement = SubResource("Resource_nwk5u")
[node name="Enemy30" parent="Tutorial" index="4" unique_id=1982933011 node_paths=PackedStringArray("Target") instance=ExtResource("5_ofbe2")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0.25, 22, 28.75)
Target = NodePath("../../Player")
RHealth = SubResource("Resource_t5o40")
RDamage = SubResource("Resource_cgfmf")
RMovement = SubResource("Resource_nwk5u")
[node name="Triggers" type="Node3D" parent="Tutorial" index="5" unique_id=1531131828]
[node name="TutoTrigger5" parent="Tutorial/Triggers" index="0" unique_id=840713937 instance=ExtResource("10_dkfm7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.25, 23.25, -24.25)
first_input_texture = ExtResource("11_nwk5u")
second_input_texture = ExtResource("12_xy0m1")
tuto_text = "Dash through target"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tutorial/Triggers/TutoTrigger5" index="1" unique_id=1895232009]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.75, 0.625, 1.75)
shape = SubResource("BoxShape3D_xy0m1")
[node name="TutoTrigger" parent="Tutorial/Triggers" index="1" unique_id=1215265305 instance=ExtResource("10_dkfm7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.25, 0, -4.5)
first_input_texture = ExtResource("11_nwk5u")
second_input_texture = ExtResource("12_xy0m1")
tuto_text = "Aimed dash"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tutorial/Triggers/TutoTrigger" index="1" unique_id=1774867326]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.25, -3.75, -6.75)
shape = SubResource("BoxShape3D_05lnh")
[node name="TutoTrigger2" parent="Tutorial/Triggers" index="2" unique_id=386301715 instance=ExtResource("10_dkfm7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.75, 0, -34.25)
first_input_texture = ExtResource("11_nwk5u")
complex_input_text = "blue target"
tuto_text = "mantle after dash"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tutorial/Triggers/TutoTrigger2" index="1" unique_id=525906537]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.25, 0.625, 1.25)
shape = SubResource("BoxShape3D_t5o40")
[node name="TutoTrigger3" parent="Tutorial/Triggers" index="3" unique_id=460767120 instance=ExtResource("10_dkfm7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.75, 7, -49)
first_input_texture = ExtResource("11_nwk5u")
complex_input_text = "in air"
tuto_text = "slows down time"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tutorial/Triggers/TutoTrigger3" index="1" unique_id=768845413]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.25, 0.625, 0.875)
shape = SubResource("BoxShape3D_dkfm7")
[node name="TutoTrigger4" parent="Tutorial/Triggers" index="4" unique_id=321542244 instance=ExtResource("10_dkfm7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.5, 17.75, -27.5)
first_input_texture = ExtResource("13_nwk5u")
complex_input_text = "at target"
tuto_text = "dash through"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tutorial/Triggers/TutoTrigger4" index="1" unique_id=1601250256]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 1.75, 0)
shape = SubResource("BoxShape3D_nwk5u")
[node name="TutoTrigger6" parent="Tutorial/Triggers" index="5" unique_id=26112457 instance=ExtResource("10_dkfm7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.75, 22.75, 11.25)
first_input_texture = ExtResource("13_nwk5u")
complex_input_text = "at enemy"
tuto_text = "dash through"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tutorial/Triggers/TutoTrigger6" index="1" unique_id=1214410006]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.625, 1.75, -0.75)
shape = SubResource("BoxShape3D_prjj8")
[node name="TutoTrigger7" parent="Tutorial/Triggers" index="6" unique_id=271532103 instance=ExtResource("10_dkfm7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 22.75, 30.25)
first_input_texture = ExtResource("11_nwk5u")
second_input_texture = ExtResource("13_nwk5u")
tuto_text = "throw weapon"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tutorial/Triggers/TutoTrigger7" index="1" unique_id=1932556219]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.875, 3.75)
shape = SubResource("BoxShape3D_prjj8")
[node name="TutoTrigger8" parent="Tutorial/Triggers" index="7" unique_id=36196488 instance=ExtResource("10_dkfm7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 21.75, 28.25)
first_input_texture = ExtResource("14_xy0m1")
complex_input_text = "at enemy"
tuto_text = "knockback"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tutorial/Triggers/TutoTrigger8" index="1" unique_id=929676345]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.125, 1.875, 0.375)
shape = SubResource("BoxShape3D_1opdv")
[node name="DashWithMantle" type="CSGCombiner3D" parent="Tutorial" index="6" unique_id=128667834]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9, 0, -36.5)
[node name="CSGBox3D109" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="0" unique_id=531736596]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, -4.75, 4)
use_collision = true
size = Vector3(9, 8.5, 6)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D112" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="1" unique_id=565292599]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, -6.25, 0)
use_collision = true
size = Vector3(9, 5.5, 2)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D113" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="2" unique_id=28433553]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, -7.75, -2)
use_collision = true
size = Vector3(9, 2.5, 2)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D110" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="3" unique_id=731833071]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 6, -12.125)
use_collision = true
size = Vector3(5, 1, 4.75)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D115" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="4" unique_id=173458015]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 5.625, -14)
use_collision = true
size = Vector3(9, 29.25, 1)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D116" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="5" unique_id=1750512788]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 7, -12.125)
use_collision = true
size = Vector3(1, 1, 4.75)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D117" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="6" unique_id=391729778]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5, 7, -12.125)
use_collision = true
size = Vector3(1, 1, 4.75)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D134" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="7" unique_id=1136091363]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 21.5, 46.125)
use_collision = true
size = Vector3(5, 1, 4.75)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D135" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="8" unique_id=748140231]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 22.5, 46.125)
use_collision = true
size = Vector3(1, 1, 4.75)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D136" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="9" unique_id=436209430]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 22.5, 46.125)
use_collision = true
size = Vector3(1, 1, 4.75)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D137" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="10" unique_id=1930091014]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 22.5, 58)
use_collision = true
size = Vector3(1, 1, 11)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D138" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="11" unique_id=1299444131]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 22.5, 58)
use_collision = true
size = Vector3(1, 1, 11)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D139" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="12" unique_id=1708119368]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 22.5, 68.625)
use_collision = true
size = Vector3(1, 1, 3.25)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D140" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="13" unique_id=762102441]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 22.5, 68.625)
use_collision = true
size = Vector3(1, 1, 3.25)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D120" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="14" unique_id=1446497915]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.5, 17, 6.75)
use_collision = true
size = Vector3(1, 2, 6.5)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D127" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="15" unique_id=1731176595]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7, 17, 10.5)
use_collision = true
size = Vector3(4, 2, 1)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D119" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="16" unique_id=1284139577]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.5, 0.625, 10)
use_collision = true
size = Vector3(3, 2.25, 6)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D114" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="17" unique_id=1204742131]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 16.5, 4.75)
use_collision = true
size = Vector3(12, 1, 2.5)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D118" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="18" unique_id=1985192046]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 23.125, 6.5)
use_collision = true
size = Vector3(18, 12.25, 1)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D130" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="19" unique_id=1502907002]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.25, 23.125, 44)
use_collision = true
size = Vector3(7.5, 12.25, 1)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D131" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="20" unique_id=632272709]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.25, 23.125, 43)
use_collision = true
size = Vector3(7.5, 12.25, 3)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D123" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="21" unique_id=696789507]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.375, 23.125, 10.5)
use_collision = true
size = Vector3(7.25, 12.25, 1)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D125" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="22" unique_id=1937274848]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.375, 23.125, 7.5)
use_collision = true
size = Vector3(7.25, 12.25, 1)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D132" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="23" unique_id=249644458]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 29.625, 25.25)
use_collision = true
size = Vector3(18, 0.75, 38.5)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D126" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="24" unique_id=1606556480]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.125, 18.25, 9)
use_collision = true
size = Vector3(7.75, 2.5, 4)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D128" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="25" unique_id=1927103381]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.375, 25.375, 9)
use_collision = true
size = Vector3(7.25, 7.75, 2)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D124" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="26" unique_id=1068505352]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.5, 19.487345, 11.25)
use_collision = true
size = Vector3(3, 5, 8.5)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D129" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="27" unique_id=302301078]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.25, 19.487345, 38.625)
use_collision = true
size = Vector3(9.5, 5, 11.75)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D133" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="28" unique_id=672467040]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 21.487345, 58)
use_collision = true
size = Vector3(5, 1, 11)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D141" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="29" unique_id=1207463075]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 21.487345, 68.625)
use_collision = true
size = Vector3(5, 1, 3.25)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D121" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="30" unique_id=302433684]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.875, 23.125, 26.25)
use_collision = true
size = Vector3(13.75, 12.25, 30.5)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D122" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="31" unique_id=1125662345]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.5, 23.125, 25.25)
use_collision = true
size = Vector3(1, 12.25, 36.5)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D111" type="CSGBox3D" parent="Tutorial/DashWithMantle" index="32" unique_id=923535141]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, -11.125, -3.75)
use_collision = true
size = Vector3(9, 4.25, 21.5)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D142" type="CSGBox3D" parent="Tutorial" index="7" unique_id=886061699]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 22, 34)
use_collision = true
size = Vector3(2, 2, 1)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D145" type="CSGBox3D" parent="Tutorial" index="8" unique_id=1440927327]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 12.25, 34)
use_collision = true
size = Vector3(12, 17.5, 1)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D139" type="CSGBox3D" parent="Tutorial" index="9" unique_id=1561729125]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 21.5, 28.75)
use_collision = true
size = Vector3(12, 1, 3.5)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D146" type="CSGBox3D" parent="Tutorial" index="10" unique_id=1614862969]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.75, 23, 55.75)
use_collision = true
size = Vector3(19.5, 1, 3.5)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D147" type="CSGBox3D" parent="Tutorial" index="11" unique_id=1320459108]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.875, 23, 67.25)
use_collision = true
size = Vector3(3.25, 1, 19.5)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D140" type="CSGBox3D" parent="Tutorial" index="12" unique_id=124463390]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5, 25.125, 34)
use_collision = true
size = Vector3(5, 8.25, 1)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D141" type="CSGBox3D" parent="Tutorial" index="13" unique_id=164888540]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.5, 25.125, 34)
use_collision = true
size = Vector3(5, 8.25, 1)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D114" type="CSGBox3D" parent="Tutorial" index="14" unique_id=1217279859]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, -4.75, 0)
use_collision = true
size = Vector3(9, 8.5, 14)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D116" type="CSGBox3D" parent="Tutorial" index="15" unique_id=720911926]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 9.375, -11.75)
use_collision = true
size = Vector3(18, 15.25, 37.5)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D115" type="CSGBox3D" parent="Tutorial" index="16" unique_id=995233474]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, -1, -26.5)
use_collision = true
size = Vector3(18, 1, 6)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D119" type="CSGBox3D" parent="Tutorial" index="17" unique_id=1412582714]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.875, -3.75, -30)
use_collision = true
size = Vector3(11.75, 11, 1)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D121" type="CSGBox3D" parent="Tutorial" index="18" unique_id=697302898]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.5, 0.125, -30)
use_collision = true
size = Vector3(3, 3.25, 1)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D117" type="CSGBox3D" parent="Tutorial" index="19" unique_id=603171965]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, -6.25, -8)
use_collision = true
size = Vector3(9, 5.5, 2)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D118" type="CSGBox3D" parent="Tutorial" index="20" unique_id=1950738925]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, -7.75, -10)
use_collision = true
size = Vector3(9, 2.5, 2)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D120" type="CSGBox3D" parent="Tutorial" index="21" unique_id=1024529143]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, -21.75, -11.75)
use_collision = true
size = Vector3(9, 25.5, 37.5)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D122" type="CSGBox3D" parent="Tutorial" index="22" unique_id=1261455320]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.5, 16.5, -28.5)
use_collision = true
size = Vector3(3, 1, 4)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D143" type="CSGBox3D" parent="Tutorial" index="23" unique_id=1090375546]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 27.625, 34)
use_collision = true
size = Vector3(2, 3.25, 1)
material = ExtResource("3_wsc2c")

View File

@@ -93,7 +93,22 @@ text = "FOV change with speed :"
step = 0.1
tick_count = 10
[node name="Aim assist" parent="VBoxContainer/MarginContainer/VBoxContainer" unique_id=1782285745 instance=ExtResource("2_iyvrj")]
layout_mode = 2
option_name = "Aim assist"
option_section = 1
key = "AimAssist"
section = "InputSettings"
[node name="OptionLabel" parent="VBoxContainer/MarginContainer/VBoxContainer/Aim assist" index="0" unique_id=1789907427]
text = "Aim assist :"
[node name="HSlider" parent="VBoxContainer/MarginContainer/VBoxContainer/Aim assist" index="1" unique_id=494926010]
max_value = 2.0
step = 0.1
[editable path="VBoxContainer/MarginContainer/VBoxContainer/LookSensitivityControl"]
[editable path="VBoxContainer/MarginContainer/VBoxContainer/MouseSensitivityControl"]
[editable path="VBoxContainer/MarginContainer/VBoxContainer/HeadBobbingControl"]
[editable path="VBoxContainer/MarginContainer/VBoxContainer/FOVChangeControl"]
[editable path="VBoxContainer/MarginContainer/VBoxContainer/Aim assist"]

View File

@@ -77,6 +77,9 @@ radius = 0.45
[sub_resource type="SphereShape3D" id="SphereShape3D_q14ux"]
radius = 1.0
[sub_resource type="SphereShape3D" id="SphereShape3D_u8rdp"]
radius = 1.5
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nodcl"]
transparency = 1
albedo_color = Color(0, 0.627451, 0.6313726, 0.49019608)
@@ -134,7 +137,7 @@ SimpleJumpHangTimeInFrames = 1
SimpleJumpGravityLesseningFactor = 2.0
DoubleJumpHangTimeInFrames = 3
DoubleJumpGravityLesseningFactor = 1.5
WallJumpStartVelocity = 8.0
WallJumpStartVelocity = 12.0
MaxNumberOfEmpoweredActions = 3
SimpleDashStrength = 18.0
SimpleDashTime = 0.2
@@ -155,7 +158,9 @@ WallHugGravityLesseningFactor = 15.0
WallHugDownwardMaxSpeed = 4.0
WallHugHorizontalDeceleration = 1.0
WallRunUpwardVelocityFactor = 0.5
MinimumWallRunUpwardVelocity = 3.0
MinimumWallRunUpwardSpeed = 4.0
WallRunAltitudeLossSpeed = 8.0
WallRunSpeedThreshold = 2.0
[node name="CHealth" parent="." unique_id=1244478698 instance=ExtResource("3_q7bng")]
RHealth = ExtResource("4_m8gvy")
@@ -326,6 +331,14 @@ gravity_scale = 3.0
ThrowForce = 300.0
StraightThrowDuration = 0.05
[node name="SwordPickup" type="Area3D" parent="." unique_id=1990087390]
collision_layer = 0
collision_mask = 65536
[node name="CollisionShape3D" type="CollisionShape3D" parent="SwordPickup" unique_id=547241277]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
shape = SubResource("SphereShape3D_u8rdp")
[node name="DashIndicator" type="Node3D" parent="." unique_id=1279477982]
visible = false
@@ -382,6 +395,10 @@ shape = SubResource("SphereShape3D_ue7xq")
[node name="InvincibilityTime" type="Timer" parent="." unique_id=1244463585]
one_shot = true
[node name="WeaponThrowUncatchable" type="Timer" parent="." unique_id=2141801011]
wait_time = 0.2
one_shot = true
[node name="AttackCooldown" type="Timer" parent="." unique_id=1620959518]
wait_time = 0.3
one_shot = true
@@ -391,7 +408,6 @@ wait_time = 0.8
one_shot = true
[node name="AirborneDashCooldown" type="Timer" parent="." unique_id=976335884]
wait_time = 0.5
one_shot = true
[node name="PowerCooldown" type="Timer" parent="." unique_id=1091679675]
@@ -399,7 +415,7 @@ wait_time = 2.0
one_shot = true
[node name="TimeScaleAimInAir" type="Timer" parent="." unique_id=1346687662]
wait_time = 2.0
wait_time = 5.0
one_shot = true
ignore_time_scale = true
@@ -1113,6 +1129,18 @@ to = NodePath("../../Dashing/Dash")
event = &"dash"
delay_in_seconds = "0.0"
[node name="OnSlam" type="Node" parent="StateChart/Root/Movement/OnWall" unique_id=448306362]
script = ExtResource("28_n7qhm")
to = NodePath("../../Slamming")
event = &"slam"
delay_in_seconds = "0.0"
[node name="OnMantle2" type="Node" parent="StateChart/Root/Movement/OnWall" unique_id=7136911]
script = ExtResource("28_n7qhm")
to = NodePath("../../Mantling")
event = &"mantle"
delay_in_seconds = "0.0"
[node name="Hugging" type="Node" parent="StateChart/Root/Movement/OnWall" unique_id=162057636]
script = ExtResource("27_34snm")
@@ -1158,3 +1186,4 @@ delay_in_seconds = "0.0"
[connection signal="input_slide_ended" from="InputController" to="." method="OnInputSlideEnded"]
[connection signal="input_slide_started" from="InputController" to="." method="OnInputSlideStarted"]
[connection signal="WallDetected" from="WallHugSystem" to="." method="OnWallDetected"]
[connection signal="body_entered" from="SwordPickup" to="." method="WalkOnWeapon"]

View File

@@ -193,6 +193,11 @@ public partial class HeadSystem : Node3D
private bool _footstepEmitted;
private bool _isPlayingForcingAnim;
public void ResetHeadBobbing()
{
_bobbingAccumulator = 0;
}
public void LookAround(CameraParameters inputs)
{
if (_isPlayingForcingAnim)

View File

@@ -240,10 +240,11 @@ public partial class PlayerController : CharacterBody3D,
[Export(PropertyHint.Range, "0,2,0.01,or_greater")]
public float WallRunUpwardVelocityFactor { get; set; } = 0.05f;
[Export(PropertyHint.Range, "0,10,0.1,or_greater")]
public float MinimumWallRunUpwardVelocity { get; set; } = 2f;
public float MinimumWallRunUpwardSpeed { get; set; } = 2f;
[Export(PropertyHint.Range, "0,30,0.1,or_greater")]
public float MinimumWallRunHorizontalSpeed { get; set; } = 12f;
[Export(PropertyHint.Range, "1,20,0.1,or_greater")]
public float WallRunAltitudeLossSpeed { get; set; } = 10f;
[Export(PropertyHint.Range, "1,20,0.1,or_greater")]
public float WallRunSpeedThreshold { get; set; } = 8f;
@@ -312,9 +313,11 @@ public partial class PlayerController : CharacterBody3D,
private float _mouseSensitivityMultiplier = 1.0f;
private float _headBobbingMultiplier = 1.0f;
private float _fovChangeMultiplier = 1.0f;
private float _aimAssistMultiplier = 1.0f;
// Timers
private Timer _timeScaleAimInAirTimer;
private Timer _weaponThrowUncatchableTimer;
private Timer _simpleDashCooldownTimer;
private Timer _airborneDashCooldownTimer;
private Timer _powerCooldownTimer;
@@ -514,6 +517,7 @@ public partial class PlayerController : CharacterBody3D,
// State timers
_powerCooldownTimer = GetNode<Timer>("PowerCooldown");
_weaponThrowUncatchableTimer = GetNode<Timer>("WeaponThrowUncatchable");
_timeScaleAimInAirTimer = GetNode<Timer>("TimeScaleAimInAir");
_simpleDashCooldownTimer = GetNode<Timer>("DashCooldown");
_airborneDashCooldownTimer = GetNode<Timer>("AirborneDashCooldown");
@@ -560,6 +564,7 @@ public partial class PlayerController : CharacterBody3D,
_grounded.StateEntered += OnGrounded;
_grounded.StatePhysicsProcessing += HandleGrounded;
_airborne.StateEntered += OnAirborne;
_airborne.StatePhysicsProcessing += HandleAirborne;
_onWall.StatePhysicsProcessing += HandleOnWall;
@@ -616,6 +621,7 @@ public partial class PlayerController : CharacterBody3D,
_onWall.StateExited += OnWallStopped;
_onWallHugging.StatePhysicsProcessing += HandleWallHugging;
_onWallHanging.StatePhysicsProcessing += HandleWallHanging;
_onWallRunning.StateEntered += OnWallRunStarted;
_onWallRunning.StatePhysicsProcessing += HandleWallRunning;
_onWallHanging.StateExited += RecoverWeapon;
@@ -668,6 +674,7 @@ public partial class PlayerController : CharacterBody3D,
_mouseSensitivityMultiplier = (float) config.GetValue("InputSettings", "MouseSensitivity", 1.0f);
_headBobbingMultiplier = (float) config.GetValue("InputSettings", "HeadBobbingWhileWalking", 1.0f);
_fovChangeMultiplier = (float) config.GetValue("InputSettings", "FovChangeWithSpeed", 1.0f);
_aimAssistMultiplier = (float) config.GetValue("InputSettings", "AimAssist", 1.0f);
}
public void OnTutorialDone(Node3D _)
{
@@ -707,11 +714,11 @@ public partial class PlayerController : CharacterBody3D,
{
_isWallJumpAvailable = true;
_canDashAirborne = true;
ResetTimeScale();
if (_simpleDashCooldownTimer.IsStopped())
_simpleDashCooldownTimer.Start();
if (_bufferedAction == BufferedActions.MantleJump)
{
_playerState.SendEvent("jump");
@@ -723,6 +730,9 @@ public partial class PlayerController : CharacterBody3D,
_bufferedAction = BufferedActions.None;
return;
}
_canDash = true;
_canDashAirborne = true;
_playerState.SendEvent("dash");
}
@@ -731,16 +741,18 @@ public partial class PlayerController : CharacterBody3D,
_currentInputBufferFrames = 0;
_playerState.SendEvent("jump");
}
if (_bufferedAction == BufferedActions.Dash && _currentInputBufferFrames > 0)
{
if (GetMoveInput().Length() < Mathf.Epsilon)
{
_bufferedAction = BufferedActions.None;
return;
}
_currentInputBufferFrames = 0;
_playerState.SendEvent("dash");
}
// if (_bufferedAction == BufferedActions.Dash && _currentInputBufferFrames > 0)
// {
// if (GetMoveInput().Length() < Mathf.Epsilon)
// {
// _bufferedAction = BufferedActions.None;
// return;
// }
// // _canDash = true;
// // _canDashAirborne = true;
// _currentInputBufferFrames = 0;
// _playerState.SendEvent("dash");
// }
}
public void OnAirborneToGrounded()
@@ -843,6 +855,13 @@ public partial class PlayerController : CharacterBody3D,
///////////////////////////
// Airborne management //
///////////////////////////
public void OnAirborne()
{
if (_aiming.Active)
ReduceTimeScaleWhileAiming();
}
public void HandleAirborne(float delta)
{
MoveInAir(delta, IsGroundLike());
@@ -864,7 +883,6 @@ public partial class PlayerController : CharacterBody3D,
// Should we start a wall run
if (ShouldStartWallRun())
{
SetVerticalVelocity(GetWallRunStartVerticalVelocity());
_playerState.SendEvent("wall_run");
return;
}
@@ -972,7 +990,7 @@ public partial class PlayerController : CharacterBody3D,
// Reduce aim assist when closing in on target because it can mess with the camera when dashing through
var distanceFactor = Mathf.Clamp(distanceToTarget / AimAssistReductionStartDistance, 0f, 1f);
var aimAssistReductionFactor = Mathf.Lerp(AimAssistReductionWhenCloseToTarget, 1f, distanceFactor);
return aimAssist * aimAssistReductionFactor;
return aimAssist * aimAssistReductionFactor * _aimAssistMultiplier;
}
private void LookAround(double delta)
@@ -1098,8 +1116,14 @@ public partial class PlayerController : CharacterBody3D,
if (!_canDashAirborne)
return;
_canDashAirborne = false;
_airborneDashCooldownTimer.Start();
_playerState.SendEvent("dash");
return;
}
if (!_canDash) return;
_canDash = false;
_simpleDashCooldownTimer.Start();
_playerState.SendEvent("dash");
}
public void SimpleDashInDirection(Vector3 direction, float strength = -1)
@@ -1124,13 +1148,13 @@ public partial class PlayerController : CharacterBody3D,
return;
}
if (!_canDash)
{
var dashEvent = isOnFloorCustom() ? "grounded" : "dash_finished";
_playerState.SendEvent(dashEvent);
return;
}
_canDash = false;
// if (!_canDash)
// {
// var dashEvent = isOnFloorCustom() ? "grounded" : "dash_finished";
// _playerState.SendEvent(dashEvent);
// return;
// }
// _canDash = false;
SimpleDash();
_bufferedAction = BufferedActions.None;
}
@@ -1173,6 +1197,11 @@ public partial class PlayerController : CharacterBody3D,
}
public void OnWallStarted()
{
if (_simpleDashCooldownTimer.IsStopped())
_canDash = true;
else
_simpleDashCooldownTimer.Start();
if (!WallHugSystem.IsWallHugging())
return;
@@ -1190,14 +1219,12 @@ public partial class PlayerController : CharacterBody3D,
}
public void HandleWallHugging(float delta)
{
_canDash = true;
_canDashAirborne = true;
// _canDash = true;
// _canDashAirborne = true;
WallHug(delta);
if (ShouldStartWallRun())
{
var verticalVelocity = GetWallRunStartVerticalVelocity();
SetVerticalVelocity(verticalVelocity);
_playerState.SendEvent("wall_run");
return;
}
@@ -1210,6 +1237,17 @@ public partial class PlayerController : CharacterBody3D,
{
WallHang(delta);
}
public void OnWallRunStarted()
{
// Find horizontal velocity projected on the current wall
var hvel = new Vector3(Velocity.X, 0, Velocity.Z);
var hvelProjected = hvel.Slide(_wallHugStartNormal);
var hSpeed = Mathf.Max(hvel.Length(), MinimumWallRunHorizontalSpeed);
// Reorient horizontal velocity so we keep it coplanar with the wall without losing speed
var finalHVel = hvelProjected.Normalized() * hSpeed;
Velocity = finalHVel + Vector3.Up*GetWallRunStartVerticalVelocity();
}
public void HandleWallRunning(float delta)
{
// _canDash = false;
@@ -1229,6 +1267,8 @@ public partial class PlayerController : CharacterBody3D,
_currentWallContactPoint = WallHugSystem.WallHugLocation.UnwrapOr(Vector3.Zero);
if (MantleSystem.IsMantlePossible && IsPlayerInputtingForward())
_playerState.SendEvent("mantle");
if (isOnFloorCustom())
_playerState.SendEvent("grounded");
if (!WallHugSystem.IsWallHugging())
@@ -1241,30 +1281,30 @@ public partial class PlayerController : CharacterBody3D,
{
var hvel = new Vector3(Velocity.X, 0, Velocity.Z);
var hvelProjected = hvel.Slide(_wallHugStartNormal);
return Mathf.Max(hvelProjected.Length() * WallRunUpwardVelocityFactor, MinimumWallRunUpwardVelocity);
return Mathf.Max(hvelProjected.Length() * WallRunUpwardVelocityFactor, MinimumWallRunUpwardSpeed);
}
public bool ShouldStartWallRun()
{
var wallNormal = WallHugSystem.WallHugNormal.UnwrapOr(Vector3.Zero);
var isIndeedWall = wallNormal.Y < 0.1;
var isThereInput = GetMoveInput().Length() > Mathf.Epsilon;
var hvel = new Vector3(Velocity.X, 0, Velocity.Z);
var hvelProjected = hvel.Slide(_wallHugStartNormal);
var haveEnoughSpeed = Velocity.Length() > WallRunSpeedThreshold;
var isCoplanarEnough = Velocity.AngleTo(wallNormal) > Math.PI/4 && Velocity.AngleTo(wallNormal) < 3*Math.PI/4;
var isGoingDownwards = Velocity.AngleTo(Vector3.Down) < Math.PI/4;
var isLookingInDirectionOfRun = hvelProjected.AngleTo(-HeadSystem.GetForwardHorizontalVector()) < Math.PI/2;
var shouldStart = haveEnoughSpeed && isCoplanarEnough && !isGoingDownwards && isIndeedWall && isLookingInDirectionOfRun;
var hvelProjected = Velocity.Slide(_wallHugStartNormal);
var haveEnoughSpeed = hvelProjected.Length() > WallRunSpeedThreshold;
var isCoplanarEnough = Math.Abs(Velocity.Dot(wallNormal)) < 0.3;
var isGoingDownwards = Velocity.Dot(Vector3.Down) > 0.9;
var isLookingInDirectionOfRun = true; // hvelProjected.Dot(-HeadSystem.GetForwardHorizontalVector()) > 0.5;
var shouldStart = haveEnoughSpeed && isThereInput && !isGoingDownwards && isIndeedWall && isCoplanarEnough && isLookingInDirectionOfRun;
var debugText = "--------------\n";
debugText += shouldStart ? "WALL RUN STARTED\n" : "NO WALL RUN\n";
debugText += $"Enough speed? {haveEnoughSpeed}\n";
debugText += $"Coplanar enough? {isCoplanarEnough}\n";
debugText += $"Going downwards? {isGoingDownwards} with angle {Velocity.AngleTo(Vector3.Down)}\n";
debugText += $"Is looking in direction of run? {isLookingInDirectionOfRun} with angle {hvelProjected.AngleTo(-HeadSystem.GetForwardHorizontalVector())}\n";
debugText += $"HVelocity on wall: {hvelProjected} - Forward H Vector: {-HeadSystem.GetForwardHorizontalVector()}\n";
debugText += $"Going downwards? {isGoingDownwards}\n";
debugText += $"Is looking in direction of run? {isLookingInDirectionOfRun}\n";
debugText += "--------------\n";
//GD.Print(debugText);
GD.Print(debugText);
return shouldStart;
}
@@ -1369,12 +1409,11 @@ public partial class PlayerController : CharacterBody3D,
{
if (IsTryingToMantle()) _playerState.SendEvent("mantle");
// if (ShouldStartWallRun() && Velocity.Y < WallRunUpwardVelocity)
// {
// SetVerticalVelocity(WallRunUpwardVelocity);
// _playerState.SendEvent("wall_run");
// return;
// }
if (ShouldStartWallRun() && !_isJumpInputPressed)
{
_playerState.SendEvent("wall_run");
return;
}
// Update horizontal velocity
var horizontalVelocity = ComputeHVelocityAir(delta);
@@ -1432,8 +1471,9 @@ public partial class PlayerController : CharacterBody3D,
{
ComputeJumpFromWallHSpeed(WallJumpStartVelocity);
}
// Remove the ability to dash straight away so you cannot scale up the wall
_canDashAirborne = false;
// _canDashAirborne = false;
_airborneDashCooldownTimer.Start();
_isWallJumpAvailable = false;
}
@@ -1486,6 +1526,10 @@ public partial class PlayerController : CharacterBody3D,
// SimpleDashInDirection(directionHorizontal.Normalized());
SetVelocity(directionHorizontal.Normalized() * _velocityOnMantleStarted.Length());
}
else
{
SetVelocity(Vector3.Zero);
}
_customMantle = false;
_playerState.SendEvent("grounded");
@@ -1766,6 +1810,7 @@ public partial class PlayerController : CharacterBody3D,
public void PerformEmpoweredAction()
{
_isWallJumpAvailable = true;
_canDashAirborne = true;
EmpoweredActionsLeft--;
_playerState.SendEvent(EmpoweredActionsLeft <= 0 ? "expired" : "power_used");
}
@@ -1796,7 +1841,7 @@ public partial class PlayerController : CharacterBody3D,
public void ReduceTimeScaleWhileAiming()
{
Engine.SetTimeScale(TimeScaleAimInAir);
_timeScaleAimInAirTimer.Start();
// _timeScaleAimInAirTimer.Start();
}
public void ResetTimeScale()
{
@@ -1863,7 +1908,7 @@ public partial class PlayerController : CharacterBody3D,
var plannedDashLocation = targetable.GetTargetGlobalPosition() + Vector3.Down*_playerHeight/2;
travel = plannedDashLocation - GlobalPosition;
_dashDirection = travel.Normalized();
var postDashLocation = plannedDashLocation + 2*_dashDirection;
var postDashLocation = plannedDashLocation + _dashDirection;
var wallBehindQuery = PhysicsRayQueryParameters3D.Create(GlobalPosition + Vector3.Up*HeadSystem.Position.Y, postDashLocation, GroundDetector.CollisionMask);
var wallBehindResult = _spaceState.IntersectRay(wallBehindQuery);
shouldRebound = wallBehindResult.Count > 0;
@@ -1931,6 +1976,7 @@ public partial class PlayerController : CharacterBody3D,
public void ThrowWeapon()
{
_audioStream.SwitchToClipByName("attacks");
_weaponThrowUncatchableTimer.Start();
_playerState.SendEvent("cancel_aim");
RemoveChildNode(WeaponSystem);
@@ -1951,6 +1997,7 @@ public partial class PlayerController : CharacterBody3D,
HeadSystem.ShowWeapon();
WeaponSystem.ResetWeapon();
RecoverChildNode(WeaponSystem);
_audioStream.SwitchToClipByName("parry");
}
public void DashToFlyingWeapon()
@@ -2012,6 +2059,8 @@ public partial class PlayerController : CharacterBody3D,
}
public void DashToPlantedWeaponTweenEnded()
{
HeadSystem.ResetHeadBobbing();
// Store the weapon state before resetting it
var isPlantedOnWall = WeaponSystem.IsPlantedInWall();
var isPlantedUnderPlatform = WeaponSystem.IsPlantedUnderPlatform();
@@ -2032,6 +2081,16 @@ public partial class PlayerController : CharacterBody3D,
_playerState.SendEvent(resultingEvent);
}
public void WalkOnWeapon(Node3D other)
{
if (_weaponDash.Active) return; // Don't recover weapon if already dashing to it
if (WeaponSystem.InHandState.Active) return; // Don't recover weapon if in hand
if (!_weaponThrowUncatchableTimer.IsStopped()) return; // Don't get weapon back if timer is still running
if (WeaponSystem.PlantObject is ITargetable) return; // Don't recover weapon planted in target
RecoverWeapon();
WeaponSystem.PlantObject = null;
}
public void ManageAttackedEnemyPostDash(Node enemy)
{
@@ -2200,7 +2259,7 @@ public partial class PlayerController : CharacterBody3D,
var travel = plannedDashLocation - GlobalPosition;
_dashDirection = travel.Normalized();
var postDashLocation = plannedDashLocation + 2*_dashDirection;
var postDashLocation = plannedDashLocation + _dashDirection;
var wallBehindQuery = PhysicsRayQueryParameters3D.Create(GlobalPosition + Vector3.Up*HeadSystem.Position.Y, postDashLocation, GroundDetector.CollisionMask);
var wallBehindResult = _spaceState.IntersectRay(wallBehindQuery);
var shouldRebound = wallBehindResult.Count > 0;
@@ -2264,7 +2323,7 @@ public partial class PlayerController : CharacterBody3D,
if (_onWallHanging.Active) return;
if (_aiming.Active && WeaponSystem.InHandState.Active)
if (_aiming.Active && WeaponSystem.InHandState.Active && CanPerformEmpoweredAction())
{
ThrowWeapon();
return;