Compare commits

..

17 Commits

Author SHA1 Message Date
759d972b6d removed automatic itch upload on every main run because it costs too much
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 6m54s
Create tag and build when new code gets to main / Export (push) Successful in 8m21s
2026-02-13 19:21:44 +01:00
4df4585149 fixed escape menu input on keyboard
All checks were successful
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) Successful in 7m14s
Create tag and build when new code gets to main / Export (push) Successful in 8m46s
2026-02-13 15:20:54 +01:00
88b0911c6c removed wall run tutorial and fixed wall run leave auto dash 2026-02-13 15:00:25 +01:00
81ce45a0dc Merge branch 'main' of https://git.game-dev.space/minimata/MovementTests
All checks were successful
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) Successful in 7m13s
Create tag and build when new code gets to main / Export (push) Successful in 9m11s
2026-02-13 12:32:12 +01:00
1caf202310 fine tuned wall jump and run again 2026-02-13 12:31:51 +01:00
22c4301244 fix forge issue 2026-02-13 11:11:03 +01:00
032e059826 wall run is easier to control and triggers more consistently 2026-02-13 10:24:25 +01:00
a8683b77e8 Update .gitea/workflows/release-branch.yaml
Some checks failed
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 / Test (push) Has been cancelled
Create tag and build when new code gets to main / BumpTag (push) Has been cancelled
Create tag and build when new code gets to main / ReleaseName (push) Successful in 31s
Create tag and build when new code gets to main / Release (push) Successful in 15m21s
2026-02-11 18:46:16 +00:00
90e6cdbcde Update .gitea/workflows/release-branch.yaml
Some checks failed
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 / BumpTag (push) Has been cancelled
Create tag and build when new code gets to main / Test (push) Has been cancelled
Create tag and build when new code gets to main / ReleaseName (push) Successful in 3s
Create tag and build when new code gets to main / Release (push) Failing after 6m12s
2026-02-11 18:38:00 +00:00
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
18 changed files with 1066 additions and 216 deletions

View File

@@ -91,26 +91,26 @@ jobs:
${{ steps.setup-godot.outputs.godot_bin }} --headless --verbose --export-release "Windows Desktop" build/windows/${{ env.GAME_NAME }}.exe ${{ steps.setup-godot.outputs.godot_bin }} --headless --verbose --export-release "Windows Desktop" build/windows/${{ env.GAME_NAME }}.exe
zip -r Windows.zip build/windows zip -r Windows.zip build/windows
- name: Setup Butler # - name: Setup Butler
shell: bash # shell: bash
env: # env:
BUTLER_API_KEY: ${{ secrets.BUTLER_TOKEN }} # BUTLER_API_KEY: ${{ secrets.BUTLER_TOKEN }}
run: | # run: |
mkdir ./tools 2>/dev/null || true # mkdir ./tools 2>/dev/null || true
pushd tools # pushd tools
curl -sSLfo ./butler.zip "https://broth.itch.zone/butler/linux-amd64/LATEST/archive/default" # curl -sSLfo ./butler.zip "https://broth.itch.zone/butler/linux-amd64/LATEST/archive/default"
unzip butler.zip # unzip butler.zip
chmod +x ./butler # chmod +x ./butler
popd # popd
./tools/butler -V # ./tools/butler -V
#
- name: Upload to itch.io # - name: Upload to itch.io
shell: bash # shell: bash
env: # env:
BUTLER_API_KEY: ${{ secrets.BUTLER_TOKEN }} # BUTLER_API_KEY: ${{ secrets.BUTLER_TOKEN }}
run: | # run: |
versionArgument="--userversion ${{ needs.BumpTag.outputs.tag_name }}" # versionArgument="--userversion ${{ needs.BumpTag.outputs.tag_name }}"
./tools/butler push \ # ./tools/butler push \
"Windows.zip" \ # "Windows.zip" \
${{ env.ITCHIO_USERNAME }}/${{ env.ITCHIO_GAMEID }}:windows ${versionArgument} # ${{ env.ITCHIO_USERNAME }}/${{ env.ITCHIO_GAMEID }}:windows ${versionArgument}

View File

@@ -55,10 +55,14 @@ jobs:
popd popd
./tools/butler -V ./tools/butler -V
- name: Remove GDUnit addon
run: |
rm -rf ${{ gitea.workspace }}/addons/gdUnit4
- name: Build Windows - name: Build Windows
run: | run: |
mkdir -v -p build/windows mkdir -v -p build/windows
godot --headless --verbose --build-solutions --export-release "Windows Desktop" build/windows/${{ env.GAME_NAME }}.exe ${{ steps.setup-godot.outputs.godot_bin }} --headless --verbose --build-solutions --export-release "Windows Desktop" build/windows/${{ env.GAME_NAME }}.exe
zip -r Windows.zip build/windows zip -r Windows.zip build/windows
- name: Upload Windows to itch.io - name: Upload Windows to itch.io
shell: bash shell: bash
@@ -73,7 +77,7 @@ jobs:
- name: Build Windows ARM - name: Build Windows ARM
run: | run: |
mkdir -v -p build/windowsArm mkdir -v -p build/windowsArm
godot --headless --verbose --build-solutions --export-release "Windows ARM" build/windowsArm/${{ env.GAME_NAME }}.exe ${{ steps.setup-godot.outputs.godot_bin }} --headless --verbose --build-solutions --export-release "Windows ARM" build/windowsArm/${{ env.GAME_NAME }}.exe
zip -r WindowsArm.zip build/windowsArm zip -r WindowsArm.zip build/windowsArm
- name: Upload Windows to itch.io - name: Upload Windows to itch.io
shell: bash shell: bash
@@ -88,7 +92,7 @@ jobs:
- name: Linux Build - name: Linux Build
run: | run: |
mkdir -v -p build/linux mkdir -v -p build/linux
godot --headless --verbose --export-release "Linux/X11" build/linux/${{ env.GAME_NAME }}.x86_64 ${{ steps.setup-godot.outputs.godot_bin }} --headless --verbose --export-release "Linux/X11" build/linux/${{ env.GAME_NAME }}.x86_64
zip -r Linux.zip build/linux zip -r Linux.zip build/linux
- name: Upload Windows to itch.io - name: Upload Windows to itch.io
shell: bash shell: bash
@@ -103,7 +107,7 @@ jobs:
- name: Mac Build - name: Mac Build
run: | run: |
mkdir -v -p build/mac mkdir -v -p build/mac
godot --headless --verbose --export-release "macOS" build/mac/${{ env.GAME_NAME }}.zip ${{ steps.setup-godot.outputs.godot_bin }} --headless --verbose --export-release "macOS" build/mac/${{ env.GAME_NAME }}.zip
zip -r Mac.zip build/mac zip -r Mac.zip build/mac
- name: Upload Windows to itch.io - name: Upload Windows to itch.io
shell: bash shell: bash

View File

@@ -13,22 +13,27 @@ public partial class CueHandlerInspectorPlugin : EditorInspectorPlugin
public override bool _CanHandle(GodotObject @object) public override bool _CanHandle(GodotObject @object)
{ {
// Find out if its an implementation of CueHandler without having to add [Tool] attribute to them. // Find out if its an implementation of CueHandler without having to add [Tool] attribute to them.
if (@object?.GetScript().As<CSharpScript>() is CSharpScript script) try
{ {
StringName className = script.GetGlobalName(); if (@object.GetScript().As<CSharpScript>() is not { }) return false;
}
Type baseType = typeof(ForgeCueHandler); catch (Exception e)
System.Reflection.Assembly assembly = baseType.Assembly; {
return false;
Type? implementationType =
Array.Find(assembly.GetTypes(), x =>
x.Name == className &&
baseType.IsAssignableFrom(x));
return implementationType is not null;
} }
return false; var script = @object.GetScript().As<CSharpScript>();
StringName className = script.GetGlobalName();
Type baseType = typeof(ForgeCueHandler);
System.Reflection.Assembly assembly = baseType.Assembly;
Type? implementationType =
Array.Find(assembly.GetTypes(), x =>
x.Name == className &&
baseType.IsAssignableFrom(x));
return implementationType is not null;
} }
public override bool _ParseProperty( public override bool _ParseProperty(

View File

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

View File

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

View File

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

View File

@@ -35,6 +35,7 @@
[ext_resource type="Resource" uid="uid://spo3pbqjx0eb" path="res://inputs/base_mode/parry.tres" id="30_rvpjj"] [ext_resource type="Resource" uid="uid://spo3pbqjx0eb" path="res://inputs/base_mode/parry.tres" id="30_rvpjj"]
[ext_resource type="Resource" uid="uid://dxy0071ic1wdj" path="res://inputs/base_mode/slam.tres" id="32_s8kjn"] [ext_resource type="Resource" uid="uid://dxy0071ic1wdj" path="res://inputs/base_mode/slam.tres" id="32_s8kjn"]
[ext_resource type="Resource" uid="uid://s1l0n1iitc6m" path="res://inputs/base_mode/move_back.tres" id="33_fykw6"] [ext_resource type="Resource" uid="uid://s1l0n1iitc6m" path="res://inputs/base_mode/move_back.tres" id="33_fykw6"]
[ext_resource type="Script" uid="uid://c76fmncyucwqc" path="res://addons/guide/triggers/guide_trigger_tap.gd" id="34_2ienm"]
[ext_resource type="Resource" uid="uid://brswsknpgwal2" path="res://inputs/base_mode/move_front.tres" id="34_rvpjj"] [ext_resource type="Resource" uid="uid://brswsknpgwal2" path="res://inputs/base_mode/move_front.tres" id="34_rvpjj"]
[ext_resource type="Resource" uid="uid://ca68r7n3bwba3" path="res://inputs/base_mode/toolbox.tres" id="34_s8kjn"] [ext_resource type="Resource" uid="uid://ca68r7n3bwba3" path="res://inputs/base_mode/toolbox.tres" id="34_s8kjn"]
[ext_resource type="Resource" uid="uid://f3vs6l4m623s" path="res://inputs/base_mode/move_left.tres" id="35_s8kjn"] [ext_resource type="Resource" uid="uid://f3vs6l4m623s" path="res://inputs/base_mode/move_left.tres" id="35_s8kjn"]
@@ -456,17 +457,17 @@ script = ExtResource("1_qmhk6")
action = ExtResource("32_s8kjn") action = ExtResource("32_s8kjn")
input_mappings = Array[ExtResource("3_yp12v")]([SubResource("Resource_v2ywt"), SubResource("Resource_s6d3g")]) input_mappings = Array[ExtResource("3_yp12v")]([SubResource("Resource_v2ywt"), SubResource("Resource_s6d3g")])
[sub_resource type="Resource" id="Resource_s4bc4"] [sub_resource type="Resource" id="Resource_vp8bw"]
script = ExtResource("30_cvxqo") script = ExtResource("30_cvxqo")
key = 4194305 key = 4194305
[sub_resource type="Resource" id="Resource_3exnu"] [sub_resource type="Resource" id="Resource_78qyx"]
script = ExtResource("15_fykw6") script = ExtResource("34_2ienm")
[sub_resource type="Resource" id="Resource_ai85f"] [sub_resource type="Resource" id="Resource_ai85f"]
script = ExtResource("3_yp12v") script = ExtResource("3_yp12v")
input = SubResource("Resource_s4bc4") input = SubResource("Resource_vp8bw")
triggers = Array[ExtResource("8_2tfaw")]([SubResource("Resource_3exnu")]) triggers = Array[ExtResource("8_2tfaw")]([SubResource("Resource_78qyx")])
[sub_resource type="Resource" id="Resource_jjamb"] [sub_resource type="Resource" id="Resource_jjamb"]
script = ExtResource("19_qkgmj") script = ExtResource("19_qkgmj")
@@ -498,10 +499,22 @@ script = ExtResource("3_yp12v")
input = SubResource("Resource_8e1uk") input = SubResource("Resource_8e1uk")
triggers = Array[ExtResource("8_2tfaw")]([SubResource("Resource_k8i2y")]) triggers = Array[ExtResource("8_2tfaw")]([SubResource("Resource_k8i2y")])
[sub_resource type="Resource" id="Resource_qrtf1"]
script = ExtResource("30_cvxqo")
key = 84
[sub_resource type="Resource" id="Resource_2ienm"]
script = ExtResource("15_fykw6")
[sub_resource type="Resource" id="Resource_4uwbh"]
script = ExtResource("3_yp12v")
input = SubResource("Resource_qrtf1")
triggers = Array[ExtResource("8_2tfaw")]([SubResource("Resource_2ienm")])
[sub_resource type="Resource" id="Resource_o5fur"] [sub_resource type="Resource" id="Resource_o5fur"]
script = ExtResource("1_qmhk6") script = ExtResource("1_qmhk6")
action = ExtResource("34_s8kjn") action = ExtResource("34_s8kjn")
input_mappings = Array[ExtResource("3_yp12v")]([SubResource("Resource_ilhhf")]) input_mappings = Array[ExtResource("3_yp12v")]([SubResource("Resource_ilhhf"), SubResource("Resource_4uwbh")])
[sub_resource type="Resource" id="Resource_kcylj"] [sub_resource type="Resource" id="Resource_kcylj"]
script = ExtResource("30_cvxqo") script = ExtResource("30_cvxqo")

View File

@@ -7,7 +7,7 @@
[ext_resource type="Script" uid="uid://rvttn472ix6v" path="res://addons/guide/inputs/guide_input_joy_button.gd" id="4_q6ncx"] [ext_resource type="Script" uid="uid://rvttn472ix6v" path="res://addons/guide/inputs/guide_input_joy_button.gd" id="4_q6ncx"]
[ext_resource type="Script" uid="uid://bl8rjl4oaldje" path="res://addons/guide/modifiers/guide_modifier.gd" id="5_vnf02"] [ext_resource type="Script" uid="uid://bl8rjl4oaldje" path="res://addons/guide/modifiers/guide_modifier.gd" id="5_vnf02"]
[ext_resource type="Script" uid="uid://x74mnwgr08a7" path="res://addons/guide/triggers/guide_trigger.gd" id="6_c647i"] [ext_resource type="Script" uid="uid://x74mnwgr08a7" path="res://addons/guide/triggers/guide_trigger.gd" id="6_c647i"]
[ext_resource type="Script" uid="uid://biiggjw6tv4uq" path="res://addons/guide/triggers/guide_trigger_released.gd" id="7_725x1"] [ext_resource type="Script" uid="uid://c76fmncyucwqc" path="res://addons/guide/triggers/guide_trigger_tap.gd" id="7_725x1"]
[ext_resource type="Script" uid="uid://b52rqq28tuqpg" path="res://addons/guide/triggers/guide_trigger_pressed.gd" id="7_m88dc"] [ext_resource type="Script" uid="uid://b52rqq28tuqpg" path="res://addons/guide/triggers/guide_trigger_pressed.gd" id="7_m88dc"]
[ext_resource type="Script" uid="uid://cw71o87tvdx3q" path="res://addons/guide/inputs/guide_input_key.gd" id="8_yfqfy"] [ext_resource type="Script" uid="uid://cw71o87tvdx3q" path="res://addons/guide/inputs/guide_input_key.gd" id="8_yfqfy"]
[ext_resource type="Resource" uid="uid://ds8quw8a7uh2u" path="res://inputs/menu_mode/select.tres" id="9_dsdj3"] [ext_resource type="Resource" uid="uid://ds8quw8a7uh2u" path="res://inputs/menu_mode/select.tres" id="9_dsdj3"]

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"] [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="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="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"] [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_light_color = Color(1, 1, 1, 1)
fog_sun_scatter = 0.5 fog_sun_scatter = 0.5
fog_density = 0.002 fog_density = 0.002
fog_aerial_perspective = 1.0
fog_sky_affect = 0.184 fog_sky_affect = 0.184
volumetric_fog_density = 0.004 volumetric_fog_density = 0.004
volumetric_fog_emission = Color(1, 1, 1, 1) volumetric_fog_emission = Color(1, 1, 1, 1)
volumetric_fog_anisotropy = 0.6 volumetric_fog_anisotropy = 0.6
adjustment_enabled = true 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] [node name="Main" type="Node3D" unique_id=955321579]
script = ExtResource("1_5g5a0")
[node name="DebugLayer" type="CanvasLayer" parent="." unique_id=294370189] [node name="DebugLayer" type="CanvasLayer" parent="." unique_id=294370189]
@@ -104,6 +280,9 @@ shadow_enabled = true
shadow_opacity = 0.95 shadow_opacity = 0.95
shadow_blur = 2.435 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")] [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) transform = Transform3D(0.99999994, 0, 0, 0, 1, 0, 0, 0, 0.99999994, 0, 0, 0)
TutorialDone = true TutorialDone = true
@@ -113,4 +292,26 @@ AccelerationAir = 1.5
visible = false visible = false
Radius = 2.0 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="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

@@ -24,9 +24,6 @@ use_collision = true
size = Vector3(1, 17.5, 9.5) size = Vector3(1, 17.5, 9.5)
material = ExtResource("3_1qo78") material = ExtResource("3_1qo78")
[node name="Player" parent="." index="7" unique_id=1309399929]
transform = Transform3D(0.99999994, 0, 0, 0, 1, 0, 0, 0, 0.99999994, 3, 0, 0)
[node name="GroundedSpawner" parent="." index="8" unique_id=580981173 node_paths=PackedStringArray("Target") instance=ExtResource("4_jaqjx")] [node name="GroundedSpawner" parent="." index="8" unique_id=580981173 node_paths=PackedStringArray("Target") instance=ExtResource("4_jaqjx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 1, -42.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 1, -42.5)
EnemyToSpawn = ExtResource("5_iq67o") EnemyToSpawn = ExtResource("5_iq67o")
@@ -35,6 +32,7 @@ HealthInputs = ExtResource("7_ucbss")
DamageInputs = ExtResource("8_2brdd") DamageInputs = ExtResource("8_2brdd")
Target = NodePath("../Player") Target = NodePath("../Player")
SpawnInterval = 5.0 SpawnInterval = 5.0
IsActiveOnStart = false
[node name="GroundedSpawner2" parent="." index="9" unique_id=1026317919 node_paths=PackedStringArray("Target") instance=ExtResource("4_jaqjx")] [node name="GroundedSpawner2" parent="." index="9" unique_id=1026317919 node_paths=PackedStringArray("Target") instance=ExtResource("4_jaqjx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 46.5, 11.5, -34.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 46.5, 11.5, -34.5)
@@ -44,6 +42,7 @@ HealthInputs = ExtResource("7_ucbss")
DamageInputs = ExtResource("8_2brdd") DamageInputs = ExtResource("8_2brdd")
Target = NodePath("../Player") Target = NodePath("../Player")
SpawnInterval = 5.0 SpawnInterval = 5.0
IsActiveOnStart = false
[node name="GroundedSpawner3" parent="." index="10" unique_id=241829575 node_paths=PackedStringArray("Target") instance=ExtResource("4_jaqjx")] [node name="GroundedSpawner3" parent="." index="10" unique_id=241829575 node_paths=PackedStringArray("Target") instance=ExtResource("4_jaqjx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 44.5, 0, -3) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 44.5, 0, -3)
@@ -53,6 +52,7 @@ HealthInputs = ExtResource("7_ucbss")
DamageInputs = ExtResource("8_2brdd") DamageInputs = ExtResource("8_2brdd")
Target = NodePath("../Player") Target = NodePath("../Player")
SpawnInterval = 5.0 SpawnInterval = 5.0
IsActiveOnStart = false
[node name="FlyingSpawner" parent="." index="11" unique_id=962840208 node_paths=PackedStringArray("Target") instance=ExtResource("4_jaqjx")] [node name="FlyingSpawner" parent="." index="11" unique_id=962840208 node_paths=PackedStringArray("Target") instance=ExtResource("4_jaqjx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.5, 19, -19.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.5, 19, -19.5)
@@ -62,6 +62,7 @@ HealthInputs = ExtResource("11_5jlg7")
DamageInputs = ExtResource("12_pjgox") DamageInputs = ExtResource("12_pjgox")
Target = NodePath("../Player") Target = NodePath("../Player")
SpawnInterval = 5.0 SpawnInterval = 5.0
IsActiveOnStart = false
[node name="FlyingSpawner2" parent="." index="12" unique_id=365997644 node_paths=PackedStringArray("Target") instance=ExtResource("4_jaqjx")] [node name="FlyingSpawner2" parent="." index="12" unique_id=365997644 node_paths=PackedStringArray("Target") instance=ExtResource("4_jaqjx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 45.5, 25.5, -42.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 45.5, 25.5, -42.5)
@@ -71,6 +72,7 @@ HealthInputs = ExtResource("11_5jlg7")
DamageInputs = ExtResource("12_pjgox") DamageInputs = ExtResource("12_pjgox")
Target = NodePath("../Player") Target = NodePath("../Player")
SpawnInterval = 5.0 SpawnInterval = 5.0
IsActiveOnStart = false
[node name="Targets" type="Node3D" parent="." index="13" unique_id=1620747784] [node name="Targets" type="Node3D" parent="." index="13" unique_id=1620747784]
@@ -103,3 +105,6 @@ 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=1106453232 instance=ExtResource("13_iq67o")] [node name="FixedDashthroughTarget3" parent="Targets" index="9" unique_id=1106453232 instance=ExtResource("13_iq67o")]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 43, 6, -8.5) transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 43, 6, -8.5)
[node name="Player" parent="." index="14" unique_id=1309399929]
transform = Transform3D(0.99999994, 0, 0, 0, 1, 0, 0, 0, 0.99999994, 3, 0, 0)

View File

@@ -20,9 +20,6 @@ size = Vector3(10.5, 12.5, 7.5)
[sub_resource type="BoxShape3D" id="BoxShape3D_hocby"] [sub_resource type="BoxShape3D" id="BoxShape3D_hocby"]
size = Vector3(3, 12.5, 7.5) size = Vector3(3, 12.5, 7.5)
[sub_resource type="BoxShape3D" id="BoxShape3D_ovxxa"]
size = Vector3(3, 12.5, 6)
[sub_resource type="BoxShape3D" id="BoxShape3D_5ibpd"] [sub_resource type="BoxShape3D" id="BoxShape3D_5ibpd"]
size = Vector3(3.5, 7, 10.5) size = Vector3(3.5, 7, 10.5)
@@ -37,11 +34,6 @@ size = Vector3(3, 6.5, 5.5)
[node name="DirectionalLight3D" parent="." index="5" unique_id=1357990191] [node name="DirectionalLight3D" parent="." index="5" unique_id=1357990191]
transform = Transform3D(-0.1772511, 0.44628847, 0.87715954, 0.49540228, -0.72966087, 0.4713508, 0.85038733, 0.51809436, -0.09175911, 0, 0, 0) transform = Transform3D(-0.1772511, 0.44628847, 0.87715954, 0.49540228, -0.72966087, 0.4713508, 0.85038733, 0.51809436, -0.09175911, 0, 0, 0)
[node name="Player" parent="." index="6" unique_id=1309399929]
transform = Transform3D(0.99999994, 0, 0, 0, 1, 0, 0, 0, 0.99999994, -0.5, 0.4102497, 0.5415039)
HasSword = false
HasParry = false
[node name="Greybox" type="CSGCombiner3D" parent="." index="7" unique_id=2082385716] [node name="Greybox" type="CSGCombiner3D" parent="." index="7" unique_id=2082385716]
use_collision = true use_collision = true
collision_layer = 256 collision_layer = 256
@@ -78,9 +70,9 @@ size = Vector3(38, 16.5, 2)
material = ExtResource("2_lpm4c") material = ExtResource("2_lpm4c")
[node name="CSGBox3D10" type="CSGBox3D" parent="Greybox" index="5" unique_id=427936811] [node name="CSGBox3D10" type="CSGBox3D" parent="Greybox" index="5" unique_id=427936811]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.25, 8.5, -35) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.25, 8.5, -35)
use_collision = true use_collision = true
size = Vector3(21.5, 17, 2) size = Vector3(19.5, 17, 2)
material = ExtResource("2_lpm4c") material = ExtResource("2_lpm4c")
[node name="CSGBox3D3" type="CSGBox3D" parent="Greybox" index="6" unique_id=1254886602] [node name="CSGBox3D3" type="CSGBox3D" parent="Greybox" index="6" unique_id=1254886602]
@@ -198,9 +190,9 @@ size = Vector3(6.5, 2.5, 11.5)
material = ExtResource("2_lpm4c") material = ExtResource("2_lpm4c")
[node name="CSGBox3D11" type="CSGBox3D" parent="Greybox" index="15" unique_id=316945013] [node name="CSGBox3D11" type="CSGBox3D" parent="Greybox" index="15" unique_id=316945013]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.75, 6.5, -35.25) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 6.5, -34)
use_collision = true use_collision = true
size = Vector3(10.5, 1, 13.5) size = Vector3(11, 1, 16)
material = ExtResource("2_lpm4c") material = ExtResource("2_lpm4c")
[node name="CSGBox3D23" type="CSGBox3D" parent="Greybox" index="16" unique_id=1942257779] [node name="CSGBox3D23" type="CSGBox3D" parent="Greybox" index="16" unique_id=1942257779]
@@ -222,117 +214,117 @@ size = Vector3(25, 7.5, 41)
material = ExtResource("2_lpm4c") material = ExtResource("2_lpm4c")
[node name="CSGBox3D12" type="CSGBox3D" parent="Greybox" index="19" unique_id=1227474775] [node name="CSGBox3D12" type="CSGBox3D" parent="Greybox" index="19" unique_id=1227474775]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.5, 10.25, -37.75) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.5, 10.25, -37.75)
use_collision = true use_collision = true
size = Vector3(2, 13.5, 7.5) size = Vector3(2, 13.5, 7.5)
material = ExtResource("2_lpm4c") material = ExtResource("2_lpm4c")
[node name="CSGBox3D13" type="CSGBox3D" parent="Greybox" index="20" unique_id=1383851577] [node name="CSGBox3D13" type="CSGBox3D" parent="Greybox" index="20" unique_id=110274826]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 8, -31.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 9.75, -27.25)
use_collision = true use_collision = true
size = Vector3(2, 16, 5) size = Vector3(3, 5.5, 4.5)
material = ExtResource("5_r26ni")
[node name="CSGBox3D15" type="CSGBox3D" parent="Greybox" index="21" unique_id=238418660]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.5, 8, -31.5)
use_collision = true
size = Vector3(2, 16, 5)
material = ExtResource("5_r26ni")
[node name="CSGBox3D14" type="CSGBox3D" parent="Greybox" index="22" unique_id=437211444]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 8, -27)
use_collision = true
size = Vector3(7, 16, 4)
material = ExtResource("2_lpm4c") material = ExtResource("2_lpm4c")
[node name="CSGBox3D20" type="CSGBox3D" parent="Greybox" index="23" unique_id=1913472587] [node name="CSGBox3D15" type="CSGBox3D" parent="Greybox" index="21" unique_id=2074031011]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 16.5, -8.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.5, 8.25, -28.75)
use_collision = true use_collision = true
size = Vector3(9, 1, 39) size = Vector3(4, 2.5, 7.5)
material = ExtResource("2_lpm4c") material = ExtResource("2_lpm4c")
[node name="CSGBox3D30" type="CSGBox3D" parent="Greybox" index="24" unique_id=1594042498] [node name="CSGBox3D22" type="CSGBox3D" parent="Greybox" index="22" unique_id=1005993604]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 7.5, -30)
use_collision = true
size = Vector3(7, 1, 10)
material = ExtResource("2_lpm4c")
[node name="CSGBox3D14" type="CSGBox3D" parent="Greybox" index="23" unique_id=437211444]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 8, -25.5)
use_collision = true
size = Vector3(7, 16, 1)
material = ExtResource("2_lpm4c")
[node name="CSGBox3D20" type="CSGBox3D" parent="Greybox" index="24" unique_id=1913472587]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 16.5, -7)
use_collision = true
size = Vector3(9, 1, 36)
material = ExtResource("2_lpm4c")
[node name="CSGBox3D30" type="CSGBox3D" parent="Greybox" index="25" unique_id=1594042498]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 16.5, 17.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 16.5, 17.5)
use_collision = true use_collision = true
size = Vector3(5, 1, 3) size = Vector3(5, 1, 3)
material = ExtResource("2_lpm4c") material = ExtResource("2_lpm4c")
[node name="CSGBox3D54" type="CSGBox3D" parent="Greybox" index="25" unique_id=157354874] [node name="CSGBox3D54" type="CSGBox3D" parent="Greybox" index="26" unique_id=157354874]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 15.5, 22.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 15.5, 22.5)
use_collision = true use_collision = true
size = Vector3(5, 7, 3) size = Vector3(5, 7, 3)
material = ExtResource("2_lpm4c") material = ExtResource("2_lpm4c")
[node name="CSGBox3D38" type="CSGBox3D" parent="Greybox" index="26" unique_id=348698998] [node name="CSGBox3D38" type="CSGBox3D" parent="Greybox" index="27" unique_id=348698998]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 18.5, 17.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 18.5, 17.5)
use_collision = true use_collision = true
size = Vector3(1, 1, 13) size = Vector3(1, 1, 13)
material = ExtResource("3_u8sr4") material = ExtResource("3_u8sr4")
[node name="CSGBox3D39" type="CSGBox3D" parent="Greybox" index="27" unique_id=850320525] [node name="CSGBox3D39" type="CSGBox3D" parent="Greybox" index="28" unique_id=850320525]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 13.75, 17.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 13.75, 17.5)
use_collision = true use_collision = true
size = Vector3(7, 10.5, 14) size = Vector3(7, 10.5, 14)
material = ExtResource("2_lpm4c") material = ExtResource("2_lpm4c")
[node name="CSGBox3D60" type="CSGBox3D" parent="Greybox" index="28" unique_id=177087863] [node name="CSGBox3D60" type="CSGBox3D" parent="Greybox" index="29" unique_id=177087863]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -34, 22, 17.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -34, 22, 17.5)
use_collision = true use_collision = true
size = Vector3(1, 1, 13) size = Vector3(1, 1, 13)
material = ExtResource("3_u8sr4") material = ExtResource("3_u8sr4")
[node name="CSGBox3D61" type="CSGBox3D" parent="Greybox" index="29" unique_id=16972982] [node name="CSGBox3D61" type="CSGBox3D" parent="Greybox" index="30" unique_id=16972982]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -38, 17.25, 14.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -38, 17.25, 14.5)
use_collision = true use_collision = true
size = Vector3(7, 10.5, 20) size = Vector3(7, 10.5, 20)
material = ExtResource("2_lpm4c") material = ExtResource("2_lpm4c")
[node name="CSGBox3D37" type="CSGBox3D" parent="Greybox" index="30" unique_id=1733162117] [node name="CSGBox3D37" type="CSGBox3D" parent="Greybox" index="31" unique_id=1733162117]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.75, 9.5, 17.75) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.75, 9.5, 17.75)
use_collision = true use_collision = true
size = Vector3(22.5, 1, 14.5) size = Vector3(22.5, 1, 14.5)
material = ExtResource("2_lpm4c") material = ExtResource("2_lpm4c")
[node name="CSGBox3D56" type="CSGBox3D" parent="Greybox" index="31" unique_id=790895849] [node name="CSGBox3D56" type="CSGBox3D" parent="Greybox" index="32" unique_id=790895849]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.25, 11.5, 17.75) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.25, 11.5, 17.75)
use_collision = true use_collision = true
size = Vector3(24.5, 1, 14.5) size = Vector3(24.5, 1, 14.5)
material = ExtResource("2_lpm4c") material = ExtResource("2_lpm4c")
[node name="CSGBox3D34" type="CSGBox3D" parent="Greybox" index="32" unique_id=2008368941] [node name="CSGBox3D34" type="CSGBox3D" parent="Greybox" index="33" unique_id=2008368941]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.5, 12.5, 14.75) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.5, 12.5, 14.75)
use_collision = true use_collision = true
size = Vector3(6, 7, 8.5) size = Vector3(6, 7, 8.5)
material = ExtResource("2_lpm4c") material = ExtResource("2_lpm4c")
[node name="CSGBox3D43" type="CSGBox3D" parent="Greybox" index="33" unique_id=1975028151] [node name="CSGBox3D43" type="CSGBox3D" parent="Greybox" index="34" unique_id=1975028151]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.5, 12.5, 17.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.5, 12.5, 17.5)
use_collision = true use_collision = true
size = Vector3(4, 7, 3) size = Vector3(4, 7, 3)
material = ExtResource("2_lpm4c") material = ExtResource("2_lpm4c")
[node name="CSGBox3D44" type="CSGBox3D" parent="Greybox" index="34" unique_id=177387693] [node name="CSGBox3D44" type="CSGBox3D" parent="Greybox" index="35" unique_id=177387693]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 10.5, 17.25) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 10.5, 17.25)
use_collision = true use_collision = true
size = Vector3(3, 3, 13.5) size = Vector3(3, 3, 13.5)
material = ExtResource("2_lpm4c") material = ExtResource("2_lpm4c")
[node name="CSGBox3D35" type="CSGBox3D" parent="Greybox" index="35" unique_id=570122850] [node name="CSGBox3D35" type="CSGBox3D" parent="Greybox" index="36" unique_id=570122850]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 16.5, 17.25) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11, 16.5, 17.25)
use_collision = true use_collision = true
size = Vector3(5, 1, 13.5) size = Vector3(5, 1, 13.5)
material = ExtResource("2_lpm4c") material = ExtResource("2_lpm4c")
[node name="CSGBox3D21" type="CSGBox3D" parent="Greybox" index="36" unique_id=2094633204]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 16.5, -29.5)
use_collision = true
size = Vector3(1, 1, 9)
material = ExtResource("2_lpm4c")
[node name="CSGBox3D24" type="CSGBox3D" parent="Greybox" index="37" unique_id=761197989] [node name="CSGBox3D24" type="CSGBox3D" parent="Greybox" index="37" unique_id=761197989]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 18.75, -29.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 14.25, -29.5)
use_collision = true use_collision = true
size = Vector3(1, 5.5, 9) size = Vector3(1, 14.5, 9)
material = ExtResource("2_lpm4c") material = ExtResource("2_lpm4c")
[node name="CSGBox3D26" type="CSGBox3D" parent="Greybox" index="38" unique_id=258581541] [node name="CSGBox3D26" type="CSGBox3D" parent="Greybox" index="38" unique_id=258581541]
@@ -504,33 +496,33 @@ size = Vector3(3, 1, 6.5)
material = ExtResource("5_u8sr4") material = ExtResource("5_u8sr4")
[node name="CSGBox3D25" type="CSGBox3D" parent="Greybox" index="66" unique_id=1000059913] [node name="CSGBox3D25" type="CSGBox3D" parent="Greybox" index="66" unique_id=1000059913]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 18.75, -29.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 14, -29.5)
use_collision = true use_collision = true
size = Vector3(1, 5.5, 9) size = Vector3(1, 15, 9)
material = ExtResource("2_lpm4c") material = ExtResource("2_lpm4c")
[node name="CSGBox3D22" type="CSGBox3D" parent="Greybox" index="67" unique_id=1623594342] [node name="CSGBox3D16" type="CSGBox3D" parent="Greybox" index="67" unique_id=1660129006]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 16.5, -29.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 16.5, -25.5)
use_collision = true use_collision = true
size = Vector3(1, 1, 9) size = Vector3(7, 1, 1)
material = ExtResource("2_lpm4c")
[node name="CSGBox3D16" type="CSGBox3D" parent="Greybox" index="68" unique_id=1660129006]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 16.5, -28.5)
use_collision = true
size = Vector3(5, 1, 1)
material = ExtResource("3_u8sr4") material = ExtResource("3_u8sr4")
[node name="CSGBox3D18" type="CSGBox3D" parent="Greybox" index="69" unique_id=528606233] [node name="CSGBox3D18" type="CSGBox3D" parent="Greybox" index="68" unique_id=410504645]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 16.5, -31.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 13, -27.75)
use_collision = true use_collision = true
size = Vector3(1, 1, 5) size = Vector3(3, 1, 3.5)
material = ExtResource("3_u8sr4") material = ExtResource("3_u8sr4")
[node name="CSGBox3D19" type="CSGBox3D" parent="Greybox" index="70" unique_id=533984919] [node name="CSGBox3D19" type="CSGBox3D" parent="Greybox" index="69" unique_id=1692291429]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 16.5, -31.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.5, 10, -29.25)
use_collision = true use_collision = true
size = Vector3(1, 1, 5) size = Vector3(4, 1, 6.5)
material = ExtResource("3_u8sr4")
[node name="CSGBox3D21" type="CSGBox3D" parent="Greybox" index="70" unique_id=16284901]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 7.5, -35.5)
use_collision = true
size = Vector3(7, 1, 1)
material = ExtResource("3_u8sr4") material = ExtResource("3_u8sr4")
[node name="CSGBox3D36" type="CSGBox3D" parent="Greybox" index="71" unique_id=1460670998] [node name="CSGBox3D36" type="CSGBox3D" parent="Greybox" index="71" unique_id=1460670998]
@@ -937,17 +929,7 @@ tuto_text = "Double jump"
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.25, -1.75) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.25, -1.75)
shape = SubResource("BoxShape3D_hocby") shape = SubResource("BoxShape3D_hocby")
[node name="TutoTrigger4" parent="Tutorials" index="3" unique_id=903897281 instance=ExtResource("7_r26ni")] [node name="TutoTrigger5" parent="Tutorials" index="3" unique_id=1703929757 instance=ExtResource("7_r26ni")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 7.5, -30.5)
first_input_texture = ExtResource("8_6c6r2")
complex_input_text = "against wall"
tuto_text = "Wall jump"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tutorials/TutoTrigger4" index="1" unique_id=1224334781]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.25, -1)
shape = SubResource("BoxShape3D_ovxxa")
[node name="TutoTrigger5" parent="Tutorials" index="4" unique_id=1703929757 instance=ExtResource("7_r26ni")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13.5, 18.5, -30.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13.5, 18.5, -30.5)
first_input_texture = ExtResource("9_v7818") first_input_texture = ExtResource("9_v7818")
complex_input_text = "with speed" complex_input_text = "with speed"
@@ -957,7 +939,7 @@ tuto_text = "Slide"
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.75, 0.5, 12.25) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.75, 0.5, 12.25)
shape = SubResource("BoxShape3D_5ibpd") shape = SubResource("BoxShape3D_5ibpd")
[node name="TutoTrigger6" parent="Tutorials" index="5" unique_id=1739438130 instance=ExtResource("7_r26ni")] [node name="TutoTrigger6" parent="Tutorials" index="4" unique_id=1739438130 instance=ExtResource("7_r26ni")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 19, 19) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 19, 19)
first_input_texture = ExtResource("8_6c6r2") first_input_texture = ExtResource("8_6c6r2")
complex_input_text = "double tap during mantle" complex_input_text = "double tap during mantle"
@@ -967,7 +949,7 @@ tuto_text = "Improved jump"
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0.25, -1.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0.25, -1.5)
shape = SubResource("BoxShape3D_6rkcg") shape = SubResource("BoxShape3D_6rkcg")
[node name="TutoTrigger7" parent="Tutorials" index="6" unique_id=1993844947 instance=ExtResource("7_r26ni")] [node name="TutoTrigger7" parent="Tutorials" index="5" unique_id=1993844947 instance=ExtResource("7_r26ni")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.5, 21, 24) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.5, 21, 24)
first_input_texture = ExtResource("8_6c6r2") first_input_texture = ExtResource("8_6c6r2")
complex_input_text = "double tap during mantle" complex_input_text = "double tap during mantle"
@@ -977,7 +959,7 @@ tuto_text = "Try to wall run"
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.25, 0.25, -1.5) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.25, 0.25, -1.5)
shape = SubResource("BoxShape3D_6rkcg") shape = SubResource("BoxShape3D_6rkcg")
[node name="TutoTrigger8" parent="Tutorials" index="7" unique_id=540710346 instance=ExtResource("7_r26ni")] [node name="TutoTrigger8" parent="Tutorials" index="6" unique_id=540710346 instance=ExtResource("7_r26ni")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -37, 25, 10) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -37, 25, 10)
first_input_texture = ExtResource("10_hocby") first_input_texture = ExtResource("10_hocby")
tuto_text = "dash" tuto_text = "dash"
@@ -986,7 +968,7 @@ tuto_text = "dash"
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.25, -3.75) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.25, -3.75)
shape = SubResource("BoxShape3D_p8dgc") shape = SubResource("BoxShape3D_p8dgc")
[node name="TutoTrigger9" parent="Tutorials" index="8" unique_id=2062889854 instance=ExtResource("7_r26ni")] [node name="TutoTrigger9" parent="Tutorials" index="7" unique_id=2062889854 instance=ExtResource("7_r26ni")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -37, 25, -6) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -37, 25, -6)
first_input_texture = ExtResource("10_hocby") first_input_texture = ExtResource("10_hocby")
tuto_text = "dash" tuto_text = "dash"
@@ -994,3 +976,8 @@ tuto_text = "dash"
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tutorials/TutoTrigger9" index="1" unique_id=192598019] [node name="CollisionShape3D" type="CollisionShape3D" parent="Tutorials/TutoTrigger9" index="1" unique_id=192598019]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.25, -3.75) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.25, -3.75)
shape = SubResource("BoxShape3D_p8dgc") shape = SubResource("BoxShape3D_p8dgc")
[node name="Player" parent="." index="11" unique_id=1309399929]
transform = Transform3D(0.99999994, 0, 0, 0, 1, 0, 0, 0, 0.99999994, -0.5, 0.4102497, 0.5415039)
HasSword = false
HasParry = false

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://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="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="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"] [sub_resource type="Resource" id="Resource_nwk5u"]
script = ExtResource("6_cgfmf") script = ExtResource("6_cgfmf")
@@ -19,13 +25,51 @@ script = ExtResource("7_hr4qv")
StartingHealth = 100.0 StartingHealth = 100.0
metadata/_custom_type_script = "uid://baiapod3csndf" 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, 5.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="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, 59.5, 0, 0)
[node name="Playground" type="Node3D" parent="." index="7" unique_id=2099606598] [node name="Playground" type="Node3D" parent="." index="7" unique_id=2099606598]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 57.5, 0, 0) transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, -8.25, 13, 58.5)
[node name="PlaytestArena" parent="Playground" index="0" unique_id=664535670 instance=ExtResource("2_wsc2c")] [node name="PlaytestArena" parent="Playground" index="0" unique_id=664535670 instance=ExtResource("2_wsc2c")]
@@ -245,31 +289,37 @@ Target = NodePath("../../../Player")
RHealth = SubResource("Resource_xy0m1") RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u") RMovement = SubResource("Resource_nwk5u")
[node name="Enemy10" parent="Playground/GroundedEnemies" index="19" 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) 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") RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u") RMovement = SubResource("Resource_nwk5u")
[node name="Enemy8" parent="Playground/GroundedEnemies" index="20" 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) 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") RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u") RMovement = SubResource("Resource_nwk5u")
[node name="Enemy9" parent="Playground/GroundedEnemies" index="21" 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) 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") RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u") RMovement = SubResource("Resource_nwk5u")
[node name="Enemy5" parent="Playground/GroundedEnemies" index="22" 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) 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") RHealth = SubResource("Resource_xy0m1")
RMovement = SubResource("Resource_nwk5u") RMovement = SubResource("Resource_nwk5u")
[node name="Enemy6" parent="Playground/GroundedEnemies" index="23" 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) 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") RHealth = SubResource("Resource_xy0m1")
@@ -280,20 +330,426 @@ use_collision = true
collision_layer = 256 collision_layer = 256
collision_mask = 65553 collision_mask = 65553
[node name="CSGBox3D109" type="CSGBox3D" parent="Tutorial" index="0" unique_id=531736596] [node name="FixedDashthroughTarget11" parent="Tutorial" index="0" unique_id=2053952229 instance=ExtResource("4_invhv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -4.75, -2.25) 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, 4)
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 use_collision = true
size = Vector3(19.5, 8.5, 14) size = Vector3(9, 8.5, 6)
material = ExtResource("3_wsc2c") material = ExtResource("3_wsc2c")
[node name="CSGBox3D110" type="CSGBox3D" parent="Tutorial" index="1" unique_id=731833071] [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, 4.5, -29.25) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, -6.25, 0)
use_collision = true use_collision = true
size = Vector3(19.5, 27, 14) size = Vector3(9, 5.5, 2)
material = ExtResource("3_wsc2c") material = ExtResource("3_wsc2c")
[node name="CSGBox3D111" type="CSGBox3D" parent="Tutorial" index="2" unique_id=923535141] [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, -21.75, -18.75) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, -7.75, -2)
use_collision = true use_collision = true
size = Vector3(19.5, 25.5, 35) size = Vector3(9, 2.5, 2)
material = ExtResource("3_wsc2c") 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, 70.125)
use_collision = true
size = Vector3(5, 1, 6.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="CSGBox3D123" type="CSGBox3D" parent="Tutorial" index="20" unique_id=765166179]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 0.625, 6)
use_collision = true
size = Vector3(9, 2.25, 2)
material = ExtResource("3_wsc2c")
[node name="CSGBox3D118" type="CSGBox3D" parent="Tutorial" index="21" 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="22" 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="23" 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="24" 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")
[node name="Player" parent="." index="9" unique_id=1309399929]
transform = Transform3D(0.99999994, 0, 0, 0, 1, 0, 0, 0, 0.99999994, -0.5, 0, 0)
[node name="PlayerFellRespawn" parent="." index="10" unique_id=479136076]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 1.5, 0)

View File

@@ -77,6 +77,9 @@ radius = 0.45
[sub_resource type="SphereShape3D" id="SphereShape3D_q14ux"] [sub_resource type="SphereShape3D" id="SphereShape3D_q14ux"]
radius = 1.0 radius = 1.0
[sub_resource type="SphereShape3D" id="SphereShape3D_u8rdp"]
radius = 1.5
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nodcl"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nodcl"]
transparency = 1 transparency = 1
albedo_color = Color(0, 0.627451, 0.6313726, 0.49019608) albedo_color = Color(0, 0.627451, 0.6313726, 0.49019608)
@@ -156,8 +159,9 @@ WallHugDownwardMaxSpeed = 4.0
WallHugHorizontalDeceleration = 1.0 WallHugHorizontalDeceleration = 1.0
WallRunUpwardVelocityFactor = 0.5 WallRunUpwardVelocityFactor = 0.5
MinimumWallRunUpwardSpeed = 4.0 MinimumWallRunUpwardSpeed = 4.0
MinimumWallRunHorizontalSpeed = 8.0
WallRunAltitudeLossSpeed = 8.0 WallRunAltitudeLossSpeed = 8.0
WallRunSpeedThreshold = 7.0 WallRunSpeedThreshold = 1.0
[node name="CHealth" parent="." unique_id=1244478698 instance=ExtResource("3_q7bng")] [node name="CHealth" parent="." unique_id=1244478698 instance=ExtResource("3_q7bng")]
RHealth = ExtResource("4_m8gvy") RHealth = ExtResource("4_m8gvy")
@@ -328,6 +332,14 @@ gravity_scale = 3.0
ThrowForce = 300.0 ThrowForce = 300.0
StraightThrowDuration = 0.05 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] [node name="DashIndicator" type="Node3D" parent="." unique_id=1279477982]
visible = false visible = false
@@ -384,6 +396,10 @@ shape = SubResource("SphereShape3D_ue7xq")
[node name="InvincibilityTime" type="Timer" parent="." unique_id=1244463585] [node name="InvincibilityTime" type="Timer" parent="." unique_id=1244463585]
one_shot = true 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] [node name="AttackCooldown" type="Timer" parent="." unique_id=1620959518]
wait_time = 0.3 wait_time = 0.3
one_shot = true one_shot = true
@@ -400,7 +416,7 @@ wait_time = 2.0
one_shot = true one_shot = true
[node name="TimeScaleAimInAir" type="Timer" parent="." unique_id=1346687662] [node name="TimeScaleAimInAir" type="Timer" parent="." unique_id=1346687662]
wait_time = 2.0 wait_time = 5.0
one_shot = true one_shot = true
ignore_time_scale = true ignore_time_scale = true
@@ -409,6 +425,7 @@ offset_left = 1524.0
offset_top = 1.0 offset_top = 1.0
offset_right = -8.0 offset_right = -8.0
offset_bottom = 1.0 offset_bottom = 1.0
enabled = false
initial_node_to_watch = NodePath("../StateChart") initial_node_to_watch = NodePath("../StateChart")
[node name="UI" type="Control" parent="." unique_id=856532641] [node name="UI" type="Control" parent="." unique_id=856532641]
@@ -1103,8 +1120,8 @@ delay_in_seconds = "0.0"
[node name="OnJump" type="Node" parent="StateChart/Root/Movement/OnWall" unique_id=342055859] [node name="OnJump" type="Node" parent="StateChart/Root/Movement/OnWall" unique_id=342055859]
script = ExtResource("28_n7qhm") script = ExtResource("28_n7qhm")
to = NodePath("../../Jump/SimpleJump") to = NodePath("../../Jump/DoubleJump")
event = &"jump" event = &"wall_jump"
delay_in_seconds = "0.0" delay_in_seconds = "0.0"
[node name="OnDash" type="Node" parent="StateChart/Root/Movement/OnWall" unique_id=43147957] [node name="OnDash" type="Node" parent="StateChart/Root/Movement/OnWall" unique_id=43147957]
@@ -1113,6 +1130,18 @@ to = NodePath("../../Dashing/Dash")
event = &"dash" event = &"dash"
delay_in_seconds = "0.0" 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] [node name="Hugging" type="Node" parent="StateChart/Root/Movement/OnWall" unique_id=162057636]
script = ExtResource("27_34snm") script = ExtResource("27_34snm")
@@ -1128,6 +1157,12 @@ script = ExtResource("27_34snm")
[node name="Running" type="Node" parent="StateChart/Root/Movement/OnWall" unique_id=766545186] [node name="Running" type="Node" parent="StateChart/Root/Movement/OnWall" unique_id=766545186]
script = ExtResource("27_34snm") script = ExtResource("27_34snm")
[node name="OnJump" type="Node" parent="StateChart/Root/Movement/OnWall/Running" unique_id=1699673966]
script = ExtResource("28_n7qhm")
to = NodePath("../../../Jump/SimpleJump")
event = &"wall_jump"
delay_in_seconds = "0.0"
[node name="OnLeaveWall" type="Node" parent="StateChart/Root/Movement/OnWall/Running" unique_id=73239479] [node name="OnLeaveWall" type="Node" parent="StateChart/Root/Movement/OnWall/Running" unique_id=73239479]
script = ExtResource("28_n7qhm") script = ExtResource("28_n7qhm")
to = NodePath("../../../Airborne/CoyoteEnabled") to = NodePath("../../../Airborne/CoyoteEnabled")
@@ -1158,3 +1193,4 @@ delay_in_seconds = "0.0"
[connection signal="input_slide_ended" from="InputController" to="." method="OnInputSlideEnded"] [connection signal="input_slide_ended" from="InputController" to="." method="OnInputSlideEnded"]
[connection signal="input_slide_started" from="InputController" to="." method="OnInputSlideStarted"] [connection signal="input_slide_started" from="InputController" to="." method="OnInputSlideStarted"]
[connection signal="WallDetected" from="WallHugSystem" to="." method="OnWallDetected"] [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 _footstepEmitted;
private bool _isPlayingForcingAnim; private bool _isPlayingForcingAnim;
public void ResetHeadBobbing()
{
_bobbingAccumulator = 0;
}
public void LookAround(CameraParameters inputs) public void LookAround(CameraParameters inputs)
{ {
if (_isPlayingForcingAnim) if (_isPlayingForcingAnim)

View File

@@ -245,7 +245,7 @@ public partial class PlayerController : CharacterBody3D,
public float MinimumWallRunHorizontalSpeed { get; set; } = 12f; public float MinimumWallRunHorizontalSpeed { get; set; } = 12f;
[Export(PropertyHint.Range, "1,20,0.1,or_greater")] [Export(PropertyHint.Range, "1,20,0.1,or_greater")]
public float WallRunAltitudeLossSpeed { get; set; } = 10f; public float WallRunAltitudeLossSpeed { get; set; } = 10f;
[Export(PropertyHint.Range, "1,20,0.1,or_greater")] [Export(PropertyHint.Range, "0,20,0.1,or_greater")]
public float WallRunSpeedThreshold { get; set; } = 8f; public float WallRunSpeedThreshold { get; set; } = 8f;
/////////////////////////// ///////////////////////////
@@ -317,6 +317,7 @@ public partial class PlayerController : CharacterBody3D,
// Timers // Timers
private Timer _timeScaleAimInAirTimer; private Timer _timeScaleAimInAirTimer;
private Timer _weaponThrowUncatchableTimer;
private Timer _simpleDashCooldownTimer; private Timer _simpleDashCooldownTimer;
private Timer _airborneDashCooldownTimer; private Timer _airborneDashCooldownTimer;
private Timer _powerCooldownTimer; private Timer _powerCooldownTimer;
@@ -359,6 +360,7 @@ public partial class PlayerController : CharacterBody3D,
private Transition _onJumpFromWall; private Transition _onJumpFromWall;
private Transition _onJumpFromWallFalling; private Transition _onJumpFromWallFalling;
private Transition _onJumpFromWallRunning;
private Transition _onLeaveWallFromRun; private Transition _onLeaveWallFromRun;
private Transition _onAirborneToGrounded; private Transition _onAirborneToGrounded;
@@ -501,6 +503,7 @@ public partial class PlayerController : CharacterBody3D,
_mantling = StateChartState.Of(GetNode("StateChart/Root/Movement/Mantling")); _mantling = StateChartState.Of(GetNode("StateChart/Root/Movement/Mantling"));
_onJumpFromWall = Transition.Of(GetNode("StateChart/Root/Movement/OnWall/OnJump")); _onJumpFromWall = Transition.Of(GetNode("StateChart/Root/Movement/OnWall/OnJump"));
_onJumpFromWallFalling = Transition.Of(GetNode("StateChart/Root/Movement/Airborne/Falling/OnWallJump")); _onJumpFromWallFalling = Transition.Of(GetNode("StateChart/Root/Movement/Airborne/Falling/OnWallJump"));
_onJumpFromWallRunning = Transition.Of(GetNode("StateChart/Root/Movement/OnWall/Running/OnJump"));
_onWall = StateChartState.Of(GetNode("StateChart/Root/Movement/OnWall")); _onWall = StateChartState.Of(GetNode("StateChart/Root/Movement/OnWall"));
_onWallHugging = StateChartState.Of(GetNode("StateChart/Root/Movement/OnWall/Hugging")); _onWallHugging = StateChartState.Of(GetNode("StateChart/Root/Movement/OnWall/Hugging"));
_onWallHanging = StateChartState.Of(GetNode("StateChart/Root/Movement/OnWall/Hanging")); _onWallHanging = StateChartState.Of(GetNode("StateChart/Root/Movement/OnWall/Hanging"));
@@ -516,6 +519,7 @@ public partial class PlayerController : CharacterBody3D,
// State timers // State timers
_powerCooldownTimer = GetNode<Timer>("PowerCooldown"); _powerCooldownTimer = GetNode<Timer>("PowerCooldown");
_weaponThrowUncatchableTimer = GetNode<Timer>("WeaponThrowUncatchable");
_timeScaleAimInAirTimer = GetNode<Timer>("TimeScaleAimInAir"); _timeScaleAimInAirTimer = GetNode<Timer>("TimeScaleAimInAir");
_simpleDashCooldownTimer = GetNode<Timer>("DashCooldown"); _simpleDashCooldownTimer = GetNode<Timer>("DashCooldown");
_airborneDashCooldownTimer = GetNode<Timer>("AirborneDashCooldown"); _airborneDashCooldownTimer = GetNode<Timer>("AirborneDashCooldown");
@@ -562,6 +566,7 @@ public partial class PlayerController : CharacterBody3D,
_grounded.StateEntered += OnGrounded; _grounded.StateEntered += OnGrounded;
_grounded.StatePhysicsProcessing += HandleGrounded; _grounded.StatePhysicsProcessing += HandleGrounded;
_airborne.StateEntered += OnAirborne;
_airborne.StatePhysicsProcessing += HandleAirborne; _airborne.StatePhysicsProcessing += HandleAirborne;
_onWall.StatePhysicsProcessing += HandleOnWall; _onWall.StatePhysicsProcessing += HandleOnWall;
@@ -626,6 +631,7 @@ public partial class PlayerController : CharacterBody3D,
_onJumpFromWall.Taken += OnJumpFromWall; _onJumpFromWall.Taken += OnJumpFromWall;
_onJumpFromWallFalling.Taken += OnJumpFromWall; _onJumpFromWallFalling.Taken += OnJumpFromWall;
_onJumpFromWallRunning.Taken += OnJumpFromWall;
_onLeaveWallFromRun.Taken += OnLeaveWallFromRun; _onLeaveWallFromRun.Taken += OnLeaveWallFromRun;
_onAirborneToGrounded.Taken += OnAirborneToGrounded; _onAirborneToGrounded.Taken += OnAirborneToGrounded;
@@ -711,11 +717,11 @@ public partial class PlayerController : CharacterBody3D,
{ {
_isWallJumpAvailable = true; _isWallJumpAvailable = true;
_canDashAirborne = true; _canDashAirborne = true;
ResetTimeScale();
if (_simpleDashCooldownTimer.IsStopped()) if (_simpleDashCooldownTimer.IsStopped())
_simpleDashCooldownTimer.Start(); _simpleDashCooldownTimer.Start();
if (_bufferedAction == BufferedActions.MantleJump) if (_bufferedAction == BufferedActions.MantleJump)
{ {
_playerState.SendEvent("jump"); _playerState.SendEvent("jump");
@@ -852,6 +858,13 @@ public partial class PlayerController : CharacterBody3D,
/////////////////////////// ///////////////////////////
// Airborne management // // Airborne management //
/////////////////////////// ///////////////////////////
public void OnAirborne()
{
if (_aiming.Active)
ReduceTimeScaleWhileAiming();
}
public void HandleAirborne(float delta) public void HandleAirborne(float delta)
{ {
MoveInAir(delta, IsGroundLike()); MoveInAir(delta, IsGroundLike());
@@ -866,9 +879,9 @@ public partial class PlayerController : CharacterBody3D,
return; return;
} }
// Going upwards, we stay simply airborne // // Going upwards, we stay simply airborne
if (Velocity.AngleTo(Vector3.Up) < Math.PI / 4) // if (Velocity.AngleTo(Vector3.Up) < Math.PI / 4)
return; // return;
// Should we start a wall run // Should we start a wall run
if (ShouldStartWallRun()) if (ShouldStartWallRun())
@@ -1178,15 +1191,19 @@ public partial class PlayerController : CharacterBody3D,
} }
public void OnWallDetected() public void OnWallDetected()
{ {
if (!_onWall.Active) // if (!_onWall.Active)
return; // return;
var newWallNormal = WallHugSystem.WallHugNormal.UnwrapOr(Vector3.Up); var newWallNormal = WallHugSystem.WallHugNormal.UnwrapOr(Vector3.Up);
if (newWallNormal.AngleTo(_wallHugStartNormal) > Mathf.Pi/4) return; if (newWallNormal.AngleTo(_wallHugStartNormal) > Mathf.Pi/4 && _onWall.Active) return;
_wallHugStartNormal = newWallNormal; _wallHugStartNormal = newWallNormal;
} }
private float _timeOnWall;
public void OnWallStarted() public void OnWallStarted()
{ {
_timeOnWall = 0f;
if (_simpleDashCooldownTimer.IsStopped()) if (_simpleDashCooldownTimer.IsStopped())
_canDash = true; _canDash = true;
else else
@@ -1202,6 +1219,7 @@ public partial class PlayerController : CharacterBody3D,
} }
public void OnWallStopped() public void OnWallStopped()
{ {
_timeOnWall = 0f;
} }
public void OnLeaveWallFromRun() public void OnLeaveWallFromRun()
{ {
@@ -1211,16 +1229,20 @@ public partial class PlayerController : CharacterBody3D,
{ {
// _canDash = true; // _canDash = true;
// _canDashAirborne = true; // _canDashAirborne = true;
_timeOnWall += delta;
WallHug(delta); if (IsInputTowardsWall(_wallHugStartNormal))
if (ShouldStartWallRun()) WallHug(delta);
{ else
_playerState.SendEvent("wall_run"); MoveInAir(delta, IsGroundLike());
return; // if (ShouldStartWallRun())
} // {
// _playerState.SendEvent("wall_run");
// return;
// }
if (isOnFloorCustom()) if (isOnFloorCustom())
_playerState.SendEvent("grounded"); _playerState.SendEvent("grounded");
if (!WallHugSystem.IsWallHugging() || !IsInputTowardsWall(_wallHugStartNormal)) if (!WallHugSystem.IsWallHugging())
_playerState.SendEvent("start_falling"); _playerState.SendEvent("start_falling");
} }
public void HandleWallHanging(float delta) public void HandleWallHanging(float delta)
@@ -1242,6 +1264,7 @@ public partial class PlayerController : CharacterBody3D,
{ {
// _canDash = false; // _canDash = false;
// _canDashAirborne = false; // _canDashAirborne = false;
_timeOnWall += delta;
// Find horizontal velocity projected on the current wall // Find horizontal velocity projected on the current wall
var hvel = new Vector3(Velocity.X, 0, Velocity.Z); var hvel = new Vector3(Velocity.X, 0, Velocity.Z);
@@ -1253,15 +1276,17 @@ public partial class PlayerController : CharacterBody3D,
// Adapt vertical speed // Adapt vertical speed
var verticalSpeed = Velocity.Y - WallRunAltitudeLossSpeed * delta; var verticalSpeed = Velocity.Y - WallRunAltitudeLossSpeed * delta;
Velocity = finalHVel + Vector3.Up*verticalSpeed; Velocity = finalHVel + Vector3.Up*verticalSpeed;
// Velocity *= 0.999f; Velocity *= 0.999f;
_currentWallContactPoint = WallHugSystem.WallHugLocation.UnwrapOr(Vector3.Zero); _currentWallContactPoint = WallHugSystem.WallHugLocation.UnwrapOr(Vector3.Zero);
if (MantleSystem.IsMantlePossible && IsPlayerInputtingForward())
_playerState.SendEvent("mantle");
if (isOnFloorCustom()) if (isOnFloorCustom())
_playerState.SendEvent("grounded"); _playerState.SendEvent("grounded");
if (!WallHugSystem.IsWallHugging()) if (!WallHugSystem.IsWallHugging())
_playerState.SendEvent("start_falling"); _playerState.SendEvent("start_falling");
if (Velocity.Length() < WallRunSpeedThreshold / 2f) if (!CanKeepWallRun())
_playerState.SendEvent("wall_hug"); _playerState.SendEvent("wall_hug");
} }
@@ -1274,27 +1299,88 @@ public partial class PlayerController : CharacterBody3D,
public bool ShouldStartWallRun() public bool ShouldStartWallRun()
{ {
var wallNormal = WallHugSystem.WallHugNormal.UnwrapOr(Vector3.Zero); if (_wallHugStartNormal.Length() < Mathf.Epsilon)
var isIndeedWall = wallNormal.Y < 0.1; {
// GD.Print("No wall normal");
return false;
}
var isIndeedWall = _wallHugStartNormal.Y < 0.1;
if (!isIndeedWall)
{
// GD.Print("Not a wall");
return false;
}
var isThereInput = GetMoveInput().Length() > Mathf.Epsilon;
if (!isThereInput)
{
// GD.Print("No input");
return false;
}
if (!IsInputForwardOrTowardsWall())
{
// GD.Print("Input isn't forward or towards wall");
return false;
}
var canUseVelocity = Velocity.Length() > WallRunSpeedThreshold;
if (!canUseVelocity)
{
// GD.Print("Not enough speed");
return false;
}
var hvel = new Vector3(Velocity.X, 0, Velocity.Z); var hvel = new Vector3(Velocity.X, 0, Velocity.Z);
var hvelProjected = hvel.Slide(_wallHugStartNormal); var hvelProjected = hvel.Slide(_wallHugStartNormal);
var haveEnoughSpeed = hvelProjected.Length() > WallRunSpeedThreshold;
if (!haveEnoughSpeed)
{
// GD.Print("Not enough projected speed");
return false;
}
var isCoplanarEnough = Math.Abs(Velocity.Normalized().Dot(_wallHugStartNormal)) < 0.9;
if (!isCoplanarEnough)
{
// GD.Print("Not coplanar enough");
return false;
}
var isGoingDownwards = Velocity.Normalized().Dot(Vector3.Down) > 0.7;
if (isGoingDownwards)
{
// GD.Print("Going down");
return false;
}
var isLookingInDirectionOfRun = hvelProjected.Normalized().Dot(-HeadSystem.GetForwardHorizontalVector()) > 0.5;
if (!isLookingInDirectionOfRun)
{
// GD.Print("Not looking in direction of run");
return false;
}
return true;
}
public bool IsInputForwardOrTowardsWall()
{
return IsPlayerInputtingForward() || IsInputTowardsWall(_wallHugStartNormal);
}
public bool CanKeepWallRun()
{
var isThereInput = GetMoveInput().Length() > Mathf.Epsilon;
if (!isThereInput) return false;
if (!IsInputForwardOrTowardsWall()) return false;
var haveEnoughSpeed = Velocity.Length() > WallRunSpeedThreshold; var haveEnoughSpeed = Velocity.Length() > WallRunSpeedThreshold;
var isCoplanarEnough = Velocity.AngleTo(wallNormal) > Math.PI/4 && Velocity.AngleTo(wallNormal) < 3*Math.PI/4; if (!haveEnoughSpeed) return false;
var isGoingDownwards = Velocity.AngleTo(Vector3.Down) < Math.PI/4;
var isLookingInDirectionOfRun = hvelProjected.AngleTo(-HeadSystem.GetForwardHorizontalVector()) < Math.PI/2;
var shouldStart = haveEnoughSpeed && !isGoingDownwards && isIndeedWall && isCoplanarEnough && isLookingInDirectionOfRun;
var debugText = "--------------\n"; return true;
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 += "--------------\n";
//GD.Print(debugText);
return shouldStart;
} }
public void WallHug(float delta) public void WallHug(float delta)
@@ -1307,6 +1393,7 @@ public partial class PlayerController : CharacterBody3D,
} }
public void WallHang(float delta) public void WallHang(float delta)
{ {
_timeOnWall += 1; // Consider we've already spent quite some time on wall
Velocity = Vector3.Zero; Velocity = Vector3.Zero;
GlobalPosition = _wallHugStartLocation; GlobalPosition = _wallHugStartLocation;
} }
@@ -1354,10 +1441,14 @@ public partial class PlayerController : CharacterBody3D,
return; return;
} }
if (WallHugSystem.IsWallHugging())
if (_onWall.Active) // Always allow jumping out of wall run and hang
{ {
_playerState.SendEvent("wall_jump"); _playerState.SendEvent("wall_jump");
return;
} }
// Regular jump
_playerState.SendEvent("jump"); _playerState.SendEvent("jump");
} }
@@ -1453,13 +1544,13 @@ public partial class PlayerController : CharacterBody3D,
SetHorizontalVelocity(currentHorizontalVelocity + wallJumpHorizontalVelocity); SetHorizontalVelocity(currentHorizontalVelocity + wallJumpHorizontalVelocity);
} }
public void OnJumpFromWall() public void OnJumpFromWall()
{ {
if (!IsFacingWall() || (!_isWallJumpAvailable && IsFacingWall())) if (!IsFacingWall() || (!_isWallJumpAvailable && IsFacingWall()) || _onWallRunning.Active)
{
ComputeJumpFromWallHSpeed(WallJumpStartVelocity); ComputeJumpFromWallHSpeed(WallJumpStartVelocity);
}
// OnJumpStarted(DoubleJumpStartVelocity);
// Remove the ability to dash straight away so you cannot scale up the wall // Remove the ability to dash straight away so you cannot scale up the wall
// _canDashAirborne = false; // _canDashAirborne = false;
_airborneDashCooldownTimer.Start(); _airborneDashCooldownTimer.Start();
@@ -1514,6 +1605,10 @@ public partial class PlayerController : CharacterBody3D,
// SimpleDashInDirection(directionHorizontal.Normalized()); // SimpleDashInDirection(directionHorizontal.Normalized());
SetVelocity(directionHorizontal.Normalized() * _velocityOnMantleStarted.Length()); SetVelocity(directionHorizontal.Normalized() * _velocityOnMantleStarted.Length());
} }
else
{
SetVelocity(Vector3.Zero);
}
_customMantle = false; _customMantle = false;
_playerState.SendEvent("grounded"); _playerState.SendEvent("grounded");
@@ -1825,7 +1920,7 @@ public partial class PlayerController : CharacterBody3D,
public void ReduceTimeScaleWhileAiming() public void ReduceTimeScaleWhileAiming()
{ {
Engine.SetTimeScale(TimeScaleAimInAir); Engine.SetTimeScale(TimeScaleAimInAir);
_timeScaleAimInAirTimer.Start(); // _timeScaleAimInAirTimer.Start();
} }
public void ResetTimeScale() public void ResetTimeScale()
{ {
@@ -1892,7 +1987,7 @@ public partial class PlayerController : CharacterBody3D,
var plannedDashLocation = targetable.GetTargetGlobalPosition() + Vector3.Down*_playerHeight/2; var plannedDashLocation = targetable.GetTargetGlobalPosition() + Vector3.Down*_playerHeight/2;
travel = plannedDashLocation - GlobalPosition; travel = plannedDashLocation - GlobalPosition;
_dashDirection = travel.Normalized(); _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 wallBehindQuery = PhysicsRayQueryParameters3D.Create(GlobalPosition + Vector3.Up*HeadSystem.Position.Y, postDashLocation, GroundDetector.CollisionMask);
var wallBehindResult = _spaceState.IntersectRay(wallBehindQuery); var wallBehindResult = _spaceState.IntersectRay(wallBehindQuery);
shouldRebound = wallBehindResult.Count > 0; shouldRebound = wallBehindResult.Count > 0;
@@ -1960,6 +2055,7 @@ public partial class PlayerController : CharacterBody3D,
public void ThrowWeapon() public void ThrowWeapon()
{ {
_audioStream.SwitchToClipByName("attacks"); _audioStream.SwitchToClipByName("attacks");
_weaponThrowUncatchableTimer.Start();
_playerState.SendEvent("cancel_aim"); _playerState.SendEvent("cancel_aim");
RemoveChildNode(WeaponSystem); RemoveChildNode(WeaponSystem);
@@ -1980,6 +2076,7 @@ public partial class PlayerController : CharacterBody3D,
HeadSystem.ShowWeapon(); HeadSystem.ShowWeapon();
WeaponSystem.ResetWeapon(); WeaponSystem.ResetWeapon();
RecoverChildNode(WeaponSystem); RecoverChildNode(WeaponSystem);
_audioStream.SwitchToClipByName("parry");
} }
public void DashToFlyingWeapon() public void DashToFlyingWeapon()
@@ -2041,6 +2138,8 @@ public partial class PlayerController : CharacterBody3D,
} }
public void DashToPlantedWeaponTweenEnded() public void DashToPlantedWeaponTweenEnded()
{ {
HeadSystem.ResetHeadBobbing();
// Store the weapon state before resetting it // Store the weapon state before resetting it
var isPlantedOnWall = WeaponSystem.IsPlantedInWall(); var isPlantedOnWall = WeaponSystem.IsPlantedInWall();
var isPlantedUnderPlatform = WeaponSystem.IsPlantedUnderPlatform(); var isPlantedUnderPlatform = WeaponSystem.IsPlantedUnderPlatform();
@@ -2061,6 +2160,16 @@ public partial class PlayerController : CharacterBody3D,
_playerState.SendEvent(resultingEvent); _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) public void ManageAttackedEnemyPostDash(Node enemy)
{ {
@@ -2229,7 +2338,7 @@ public partial class PlayerController : CharacterBody3D,
var travel = plannedDashLocation - GlobalPosition; var travel = plannedDashLocation - GlobalPosition;
_dashDirection = travel.Normalized(); _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 wallBehindQuery = PhysicsRayQueryParameters3D.Create(GlobalPosition + Vector3.Up*HeadSystem.Position.Y, postDashLocation, GroundDetector.CollisionMask);
var wallBehindResult = _spaceState.IntersectRay(wallBehindQuery); var wallBehindResult = _spaceState.IntersectRay(wallBehindQuery);
var shouldRebound = wallBehindResult.Count > 0; var shouldRebound = wallBehindResult.Count > 0;
@@ -2293,7 +2402,7 @@ public partial class PlayerController : CharacterBody3D,
if (_onWallHanging.Active) return; if (_onWallHanging.Active) return;
if (_aiming.Active && WeaponSystem.InHandState.Active) if (_aiming.Active && WeaponSystem.InHandState.Active && CanPerformEmpoweredAction())
{ {
ThrowWeapon(); ThrowWeapon();
return; return;

View File

@@ -1,4 +1,5 @@
extends Area3D extends Area3D
class_name TutoTrigger
@onready var control: Control = $Control @onready var control: Control = $Control