Compare commits

...

17 Commits

Author SHA1 Message Date
0e412c2a42 fixed level loading and starting to setup proper gyms, zoos and playtest levels
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 23s
Create tag and build when new code gets to main / Test (push) Successful in 8m23s
Create tag and build when new code gets to main / Export (push) Successful in 10m40s
2026-02-03 16:31:37 +01:00
8a3faff7d0 small refacto of dash actions 2026-02-03 15:10:22 +01:00
3525f0e3eb added a parry button and animation that lets player chose their enemy hit behaviour
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 22s
Create tag and build when new code gets to main / Test (push) Successful in 5m57s
Create tag and build when new code gets to main / Export (push) Successful in 7m43s
2026-01-30 13:19:28 +01:00
cc973b9f0d fixed spawners
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 22s
Create tag and build when new code gets to main / Test (push) Successful in 6m4s
Create tag and build when new code gets to main / Export (push) Successful in 8m2s
2026-01-28 19:14:05 +01:00
8a552f7993 #minor CI FIXED
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 23s
Create tag and build when new code gets to main / Test (push) Successful in 6m0s
Create tag and build when new code gets to main / Export (push) Successful in 7m58s
2026-01-28 18:28:40 +01:00
93841bc85d manually uploading to itch
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 5m58s
Create tag and build when new code gets to main / Export (push) Successful in 7m52s
2026-01-28 18:15:15 +01:00
9ba8847626 changing itch action
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 22s
Create tag and build when new code gets to main / Test (push) Failing after 5m21s
Create tag and build when new code gets to main / Export (push) Failing after 7m11s
2026-01-28 17:56:59 +01:00
51b7328310 changing itch action
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 24s
Create tag and build when new code gets to main / Export (push) Failing after 4s
Create tag and build when new code gets to main / Test (push) Has been cancelled
2026-01-28 17:54:06 +01:00
fdc352596d were getting there...
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 37s
Create tag and build when new code gets to main / Test (push) Successful in 5m43s
Create tag and build when new code gets to main / Export (push) Failing after 8m23s
2026-01-28 17:39:23 +01:00
89ba5cc985 trying the the fix on export again and trying to cache lfs objects again
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 40s
Create tag and build when new code gets to main / Test (push) Successful in 5m45s
Create tag and build when new code gets to main / Export (push) Failing after 7m56s
2026-01-28 17:25:28 +01:00
fdc79166a0 testing ci
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 22s
Create tag and build when new code gets to main / Test (push) Successful in 4m39s
Create tag and build when new code gets to main / Export (push) Failing after 5m16s
2026-01-28 16:22:38 +01:00
b84487336b testing ci 2026-01-28 16:20:44 +01:00
e4ab103c4d testing ci
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 23s
Create tag and build when new code gets to main / Export (push) Failing after 1m15s
Create tag and build when new code gets to main / Test (push) Successful in 4m43s
2026-01-28 15:33:56 +01:00
3b6cf0252b testing ci
Some checks failed
Create tag and build when new code gets to main / Test (push) Failing after 13s
Create tag and build when new code gets to main / BumpTag (push) Successful in 30s
Create tag and build when new code gets to main / Export (push) Failing after 45s
2026-01-28 15:29:31 +01:00
e908cd3085 testing ci
Some checks failed
Create tag and build when new code gets to main / Test (push) Failing after 14s
Create tag and build when new code gets to main / BumpTag (push) Failing after 24s
Create tag and build when new code gets to main / Export (push) Failing after 51s
2026-01-28 15:19:04 +01:00
6b23fdbd26 testing ci
Some checks failed
Create tag and build when new code gets to main / Test (push) Failing after 12s
Create tag and build when new code gets to main / BumpTag (push) Failing after 22s
Create tag and build when new code gets to main / Export (push) Failing after 1m29s
2026-01-28 15:13:11 +01:00
ea6258ff19 testing ci
Some checks failed
Create tag and build when new code gets to main / Test (push) Failing after 12s
Create tag and build when new code gets to main / BumpTag (push) Failing after 21s
Create tag and build when new code gets to main / Export (push) Failing after 53s
2026-01-28 15:05:12 +01:00
67 changed files with 1723 additions and 296 deletions

View File

@@ -10,44 +10,22 @@ on:
- "**" - "**"
env: env:
GODOT_VERSION: 4.6
GAME_NAME: MovementTests GAME_NAME: MovementTests
ITCHIO_USERNAME: Minimata ITCHIO_USERNAME: Minimata
ITCHIO_GAMEID: MovementTests ITCHIO_GAMEID: MovementTests
jobs: jobs:
Export: Export:
runs-on: ubuntu-latest runs-on: godot
env:
RUNNER_TOOL_CACHE: /toolcache # Runner Tool Cache
steps: steps:
- name: Install node, xvfb and curl - name: Checkout with LFS
run: | uses: https://git.game-dev.space/minimata/checkout-with-lfs.git@main
apt update && apt -y install curl nodejs xvfb
- name: Checkout
uses: actions/checkout@v3
with:
lfs: false
- name: Checkout LFS
run: |
UrlBase=$GITHUB_SERVER_URL; \
UrlLfsBase=$UrlBase/${{ gitea.repository }}.git/info/lfs/objects; \
Auth=`/usr/bin/git config --get --local http.$UrlBase/.extraheader`; \
/usr/bin/git config --local http.${UrlLfsBase}/batch.extraheader "$Auth"; \
/usr/bin/git config --local http.${UrlLfsBase}/.extraheader ''
git config --local lfs.transfer.maxretries 1
/usr/bin/git lfs fetch origin refs/remotes/origin/${{ gitea.ref_name }}
/usr/bin/git lfs checkout
/usr/bin/git add .
/usr/bin/git reset --hard
- name: Run tests - name: Run tests
uses: godot-gdunit-labs/gdUnit4-action@v1 uses: godot-gdunit-labs/gdUnit4-action@v1
with: with:
godot-version: '4.6.0' godot-version: ${GODOT_VERSION}
godot-net: true godot-net: true
godot-force-mono: true godot-force-mono: true
dotnet-version: 'net9.0' dotnet-version: 'net9.0'
@@ -56,7 +34,7 @@ jobs:
timeout: 1 timeout: 1
publish-report: false publish-report: false
upload-report: false upload-report: false
- name: Upload test report - name: Upload test report
uses: actions/upload-artifact@v3-node20 uses: actions/upload-artifact@v3-node20
with: with:

View File

@@ -22,6 +22,7 @@ jobs:
- name: Check out repository code - name: Check out repository code
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
token: ${{ secrets.TOKEN }}
lfs: false lfs: false
- name: Remove buggy pre-push hook - name: Remove buggy pre-push hook
run: | run: |
@@ -39,30 +40,11 @@ jobs:
Test: Test:
runs-on: godot runs-on: godot
env: # env:
RUNNER_TOOL_CACHE: /toolcache # Runner Tool Cache # RUNNER_TOOL_CACHE: /toolcache # Runner Tool Cache
steps: steps:
# - name: Install node, xvfb and curl - name: Checkout with LFS
# run: | uses: https://git.game-dev.space/minimata/checkout-with-lfs.git@main
# apt update && apt -y install curl nodejs xvfb
- name: Checkout
uses: actions/checkout@v6
with:
lfs: false
persist-credentials: true
- name: Checkout LFS
run: |
git lfs install --local
echo coucou
AUTH=$(git config http.${{ gitea.server_url }}/.extraheader)
AUTH_FILE=$(git config includeif.gitdir:/workspace/${{ gitea.repository }}/.git.path)
git config -f $AUTH_FILE --unset http.${{ gitea.server_url }}/.extraheader
echo sandwich
git config -f $AUTH_FILE http.${{ gitea.server_url }}/${{ gitea.repository }}.git/info/lfs/objects/batch.extraheader "$AUTH"
echo bite
git lfs pull
- name: Run tests - name: Run tests
uses: godot-gdunit-labs/gdUnit4-action@v1 uses: godot-gdunit-labs/gdUnit4-action@v1
@@ -85,84 +67,50 @@ jobs:
Export: Export:
runs-on: godot runs-on: godot
env: needs:
RUNNER_TOOL_CACHE: /toolcache # Runner Tool Cache - BumpTag
# needs:
# - BumpTag
# - Test # Wait for tests to finish
container:
image: barichello/godot-ci:mono-4.6
steps: steps:
- name: Install curl and zip - name: Checkout with LFS
run: | uses: https://git.game-dev.space/minimata/checkout-with-lfs.git@main
apt update && apt -y install curl zip
- name: Install node 24
run: |
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
\. "$HOME/.nvm/nvm.sh"
nvm install 24
node -v
- name: Checkout - name: Setup Godot
uses: actions/checkout@v3 id: setup-godot
uses: https://git.game-dev.space/minimata/setup-godot.git@main
with: with:
lfs: false godot-version: '4.6'
persist-credentials: true dotnet-version: 'net9.0'
- name: Checkout LFS
run: |
UrlBase=$GITHUB_SERVER_URL; \
UrlLfsBase=$UrlBase/${{ gitea.repository }}.git/info/lfs/objects; \
Auth=`/usr/bin/git config --get --local http.$UrlBase/.extraheader`; \
/usr/bin/git config --local http.${UrlLfsBase}/batch.extraheader "$Auth"; \
/usr/bin/git config --local http.${UrlLfsBase}/.extraheader ''
git config --local lfs.transfer.maxretries 1
/usr/bin/git lfs fetch origin refs/remotes/origin/${{ gitea.ref_name }}
/usr/bin/git lfs checkout
/usr/bin/git add .
/usr/bin/git reset --hard
# - name: Checkout
# uses: actions/checkout@v6
# with:
# lfs: false
# persist-credentials: true
# - name: Checkout LFS - name: Remove GDUnit addon
# run: |
# git lfs install --local
# AUTH=$(git config http.${{ gitea.server_url }}/.extraheader)
# AUTH_FILE=$(git config includeif.gitdir:/workspace/${{ gitea.repository }}/.git.path)
# git config -f $AUTH_FILE --unset http.${{ gitea.server_url }}/.extraheader
# git config -f $AUTH_FILE http.${{ gitea.server_url }}/${{ gitea.repository }}.git/info/lfs/objects/batch.extraheader "$AUTH"
# git lfs pull
# - name: Remove GDUnit addon folder because it breaks the build
# run: |
# rm -rf ${{ gitea.workspace }}/addons/gdunit4
- uses: actions/setup-dotnet@v5
with:
dotnet-version: '9.x'
- name: Import resources and build solution
run: | run: |
godot --headless --editor --build-solutions --quit --import --path $PWD 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 --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: Upload to Itch
uses: KikimoraGames/itch-publish@v0.0.3 - name: Setup Butler
with: shell: bash
butlerApiKey: ${{ secrets.BUTLER_TOKEN }} env:
itchUsername: ${{ env.ITCHIO_USERNAME }} BUTLER_API_KEY: ${{ secrets.BUTLER_TOKEN }}
itchGameId: ${{ env.ITCHIO_GAMEID }} run: |
buildNumber: 0.1.0 # ${{ needs.BumpTag.outputs.tag_name }} mkdir ./tools 2>/dev/null || true
gameData: Windows.zip pushd tools
buildChannel: windows curl -sSLfo ./butler.zip "https://broth.itch.zone/butler/linux-amd64/LATEST/archive/default"
unzip butler.zip
chmod +x ./butler
popd
./tools/butler -V
- name: Upload to itch.io
shell: bash
env:
BUTLER_API_KEY: ${{ secrets.BUTLER_TOKEN }}
run: |
versionArgument="--userversion ${{ needs.BumpTag.outputs.tag_name }}"
./tools/butler push \
"Windows.zip" \
${{ env.ITCHIO_USERNAME }}/${{ env.ITCHIO_GAMEID }}:windows ${versionArgument}

View File

@@ -8,6 +8,7 @@ on:
- "**" - "**"
env: env:
GODOT_VERSION: 4.6
GAME_NAME: MovementTests GAME_NAME: MovementTests
ITCHIO_USERNAME: Minimata ITCHIO_USERNAME: Minimata
ITCHIO_GAMEID: MovementTests ITCHIO_GAMEID: MovementTests
@@ -26,99 +27,90 @@ jobs:
separator: '/' separator: '/'
Release: Release:
runs-on: ubuntu-latest runs-on: godot
if: ${{ contains(gitea.ref_name, 'release/') }} if: ${{ contains(gitea.ref_name, 'release/') }}
needs: ReleaseName needs: ReleaseName
env:
RUNNER_TOOL_CACHE: /toolcache # Runner Tool Cache
container:
image: barichello/godot-ci:mono-4.6
steps: steps:
- name: Install node, curl and zip - name: Checkout with LFS
run: | uses: https://git.game-dev.space/minimata/checkout-with-lfs.git@main
apt update && apt -y install curl zip nodejs
- name: Checkout - name: Setup Godot
uses: actions/checkout@v3 id: setup-godot
uses: https://git.game-dev.space/minimata/setup-godot.git@main
with: with:
lfs: false godot-version: '4.6'
dotnet-version: 'net9.0'
- name: Checkout LFS
- name: Setup Butler
shell: bash
env:
BUTLER_API_KEY: ${{ secrets.BUTLER_TOKEN }}
run: | run: |
UrlBase=$GITHUB_SERVER_URL; \ mkdir ./tools 2>/dev/null || true
UrlLfsBase=$UrlBase/${{ gitea.repository }}.git/info/lfs/objects; \ pushd tools
Auth=`/usr/bin/git config --get --local http.$UrlBase/.extraheader`; \ curl -sSLfo ./butler.zip "https://broth.itch.zone/butler/linux-amd64/LATEST/archive/default"
/usr/bin/git config --local http.${UrlLfsBase}/batch.extraheader "$Auth"; \ unzip butler.zip
/usr/bin/git config --local http.${UrlLfsBase}/.extraheader '' chmod +x ./butler
popd
git config --local lfs.transfer.maxretries 1 ./tools/butler -V
/usr/bin/git lfs fetch origin refs/remotes/origin/${{ gitea.ref_name }}
/usr/bin/git lfs checkout
/usr/bin/git add .
/usr/bin/git reset --hard
- name: Import resources and build solution
run: |
godot --headless --editor --build-solutions --quit --import --path $PWD
- 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 godot --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 to Itch - name: Upload Windows to itch.io
uses: KikimoraGames/itch-publish@v0.0.3 shell: bash
with: env:
butlerApiKey: ${{ secrets.BUTLER_TOKEN }} BUTLER_API_KEY: ${{ secrets.BUTLER_TOKEN }}
itchUsername: ${{ env.ITCHIO_USERNAME }} run: |
itchGameId: ${{ env.ITCHIO_GAMEID }} versionArgument="--userversion ${{ needs.ReleaseName.outputs.release_name }}"
buildNumber: ${{ needs.ReleaseName.outputs.release_name }} ./tools/butler push \
gameData: Windows.zip "Windows.zip" \
buildChannel: windows ${{ env.ITCHIO_USERNAME }}/${{ env.ITCHIO_GAMEID }}:windows ${versionArgument}
- 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 godot --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 to Itch - name: Upload Windows to itch.io
uses: KikimoraGames/itch-publish@v0.0.3 shell: bash
with: env:
butlerApiKey: ${{ secrets.BUTLER_TOKEN }} BUTLER_API_KEY: ${{ secrets.BUTLER_TOKEN }}
itchUsername: ${{ env.ITCHIO_USERNAME }} run: |
itchGameId: ${{ env.ITCHIO_GAMEID }} versionArgument="--userversion ${{ needs.ReleaseName.outputs.release_name }}"
buildNumber: ${{ needs.ReleaseName.outputs.release_name }} ./tools/butler push \
gameData: WindowsArm.zip "WindowsArm.zip" \
buildChannel: windows-arm ${{ env.ITCHIO_USERNAME }}/${{ env.ITCHIO_GAMEID }}:windows-arm ${versionArgument}
- 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 godot --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 to Itch - name: Upload Windows to itch.io
uses: KikimoraGames/itch-publish@v0.0.3 shell: bash
with: env:
butlerApiKey: ${{ secrets.BUTLER_TOKEN }} BUTLER_API_KEY: ${{ secrets.BUTLER_TOKEN }}
itchUsername: ${{ env.ITCHIO_USERNAME }} run: |
itchGameId: ${{ env.ITCHIO_GAMEID }} versionArgument="--userversion ${{ needs.ReleaseName.outputs.release_name }}"
buildNumber: ${{ needs.ReleaseName.outputs.release_name }} ./tools/butler push \
gameData: Linux.zip "Linux.zip" \
buildChannel: linux ${{ env.ITCHIO_USERNAME }}/${{ env.ITCHIO_GAMEID }}:linux ${versionArgument}
- 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 godot --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 to Itch - name: Upload Windows to itch.io
uses: KikimoraGames/itch-publish@v0.0.3 shell: bash
with: env:
butlerApiKey: ${{ secrets.BUTLER_TOKEN }} BUTLER_API_KEY: ${{ secrets.BUTLER_TOKEN }}
itchUsername: ${{ env.ITCHIO_USERNAME }} run: |
itchGameId: ${{ env.ITCHIO_GAMEID }} versionArgument="--userversion ${{ needs.ReleaseName.outputs.release_name }}"
buildNumber: ${{ needs.ReleaseName.outputs.release_name }} ./tools/butler push \
gameData: Mac.zip "Mac.zip" \
buildChannel: mac ${{ env.ITCHIO_USERNAME }}/${{ env.ITCHIO_GAMEID }}:mac ${versionArgument}

BIN
assets/greybox/greybox_blue_grid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c4si5cetpfjsx"
path="res://.godot/imported/greybox_blue_grid.png-8cd3756907b9465009fdef23590a7e10.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_blue_grid.png"
dest_files=["res://.godot/imported/greybox_blue_grid.png-8cd3756907b9465009fdef23590a7e10.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_blue_solid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cubdmqt7mvofh"
path="res://.godot/imported/greybox_blue_solid.png-73fd2109ac26d63d4b465f9fdbf39c1d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_blue_solid.png"
dest_files=["res://.godot/imported/greybox_blue_solid.png-73fd2109ac26d63d4b465f9fdbf39c1d.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_dark_grid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cv3b5gjslenlr"
path="res://.godot/imported/greybox_dark_grid.png-650326b02ce8de7b619b333b97451c9e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_dark_grid.png"
dest_files=["res://.godot/imported/greybox_dark_grid.png-650326b02ce8de7b619b333b97451c9e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_dark_solid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c0fb4f41hssm5"
path="res://.godot/imported/greybox_dark_solid.png-b15b91f85aa45ac0ebbad03173c46e20.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_dark_solid.png"
dest_files=["res://.godot/imported/greybox_dark_solid.png-b15b91f85aa45ac0ebbad03173c46e20.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_green_grid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bkjusurqvb4q"
path="res://.godot/imported/greybox_green_grid.png-cb9366fe50966ade1eeb071d4a2016c4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_green_grid.png"
dest_files=["res://.godot/imported/greybox_green_grid.png-cb9366fe50966ade1eeb071d4a2016c4.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_green_solid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bacqbuyggedyy"
path="res://.godot/imported/greybox_green_solid.png-add21b7e00a97e9ef0a7eede753d89ff.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_green_solid.png"
dest_files=["res://.godot/imported/greybox_green_solid.png-add21b7e00a97e9ef0a7eede753d89ff.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_grey_grid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bqqs6jweml03w"
path="res://.godot/imported/greybox_grey_grid.png-26095c1a41956f620b18195e2bc90091.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_grey_grid.png"
dest_files=["res://.godot/imported/greybox_grey_grid.png-26095c1a41956f620b18195e2bc90091.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_grey_solid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d35wx32padgp1"
path="res://.godot/imported/greybox_grey_solid.png-65bbc21ac3c6d5cf6c0ccf4750ce8a08.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_grey_solid.png"
dest_files=["res://.godot/imported/greybox_grey_solid.png-65bbc21ac3c6d5cf6c0ccf4750ce8a08.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_grey_solid_2.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bhvwhtsguc6g8"
path="res://.godot/imported/greybox_grey_solid_2.png-d23eac6cd5cfc0459188de4ea58a8ebb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_grey_solid_2.png"
dest_files=["res://.godot/imported/greybox_grey_solid_2.png-d23eac6cd5cfc0459188de4ea58a8ebb.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_light_grid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d0qflfrscommy"
path="res://.godot/imported/greybox_light_grid.png-7eca13ef10388b7a948705824b3112ee.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_light_grid.png"
dest_files=["res://.godot/imported/greybox_light_grid.png-7eca13ef10388b7a948705824b3112ee.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_light_solid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://v6xb3yyu4bam"
path="res://.godot/imported/greybox_light_solid.png-cebdd2fedcee40d20355e5b9f3921fc2.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_light_solid.png"
dest_files=["res://.godot/imported/greybox_light_solid.png-cebdd2fedcee40d20355e5b9f3921fc2.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_lime_grid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c74sh3woly0qb"
path="res://.godot/imported/greybox_lime_grid.png-73007e8b635010f9a4394691d1604216.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_lime_grid.png"
dest_files=["res://.godot/imported/greybox_lime_grid.png-73007e8b635010f9a4394691d1604216.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_lime_solid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d2w4kpdxjqs0v"
path="res://.godot/imported/greybox_lime_solid.png-9c448948d12ebcb271a2ca5469bcd48f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_lime_solid.png"
dest_files=["res://.godot/imported/greybox_lime_solid.png-9c448948d12ebcb271a2ca5469bcd48f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_orange_grid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bf2kevgw4gu03"
path="res://.godot/imported/greybox_orange_grid.png-9f4765cb2a776889705b67f169cac12f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_orange_grid.png"
dest_files=["res://.godot/imported/greybox_orange_grid.png-9f4765cb2a776889705b67f169cac12f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_orange_solid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bwt2ejfdvi505"
path="res://.godot/imported/greybox_orange_solid.png-b4529d3416b3e38d1ff6e3dc3184f0c6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_orange_solid.png"
dest_files=["res://.godot/imported/greybox_orange_solid.png-b4529d3416b3e38d1ff6e3dc3184f0c6.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_purple_grid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://des0wknntv107"
path="res://.godot/imported/greybox_purple_grid.png-699ec8cec24b371f6d191fb0403f1413.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_purple_grid.png"
dest_files=["res://.godot/imported/greybox_purple_grid.png-699ec8cec24b371f6d191fb0403f1413.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_purple_solid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c3sh7e12tuphh"
path="res://.godot/imported/greybox_purple_solid.png-2834bf5e93ffb097572663d0b6711ab0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_purple_solid.png"
dest_files=["res://.godot/imported/greybox_purple_solid.png-2834bf5e93ffb097572663d0b6711ab0.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_red_grid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bxdr0oajba7d2"
path="res://.godot/imported/greybox_red_grid.png-354bd18621a1d081151863b3288fac86.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_red_grid.png"
dest_files=["res://.godot/imported/greybox_red_grid.png-354bd18621a1d081151863b3288fac86.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_red_solid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cun7t30skbay6"
path="res://.godot/imported/greybox_red_solid.png-9fe18e9b535fb0ec00eb458b83a9b8e7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_red_solid.png"
dest_files=["res://.godot/imported/greybox_red_solid.png-9fe18e9b535fb0ec00eb458b83a9b8e7.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_teal_grid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://nvc7eq13ym8q"
path="res://.godot/imported/greybox_teal_grid.png-faf53fab39f3fd6e4971da5026ce1ba6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_teal_grid.png"
dest_files=["res://.godot/imported/greybox_teal_grid.png-faf53fab39f3fd6e4971da5026ce1ba6.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_teal_solid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bn0gggbdrcpw"
path="res://.godot/imported/greybox_teal_solid.png-a6697a5a3b72246fb8772342dca6c5c5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_teal_solid.png"
dest_files=["res://.godot/imported/greybox_teal_solid.png-a6697a5a3b72246fb8772342dca6c5c5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_yellow_grid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c0kfbwkede8q"
path="res://.godot/imported/greybox_yellow_grid.png-415f899edf065d8a8b02962f77950d93.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_yellow_grid.png"
dest_files=["res://.godot/imported/greybox_yellow_grid.png-415f899edf065d8a8b02962f77950d93.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/greybox_yellow_solid.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ehp3ggwyy8xn"
path="res://.godot/imported/greybox_yellow_solid.png-d0b55f895a8bba6a650ccf694b93fdc0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/greybox_yellow_solid.png"
dest_files=["res://.godot/imported/greybox_yellow_solid.png-d0b55f895a8bba6a650ccf694b93fdc0.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/greybox/placeholder.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b305rs4ouva73"
path="res://.godot/imported/placeholder.png-3548d9618c59656d22cf299003541677.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/greybox/placeholder.png"
dest_files=["res://.godot/imported/placeholder.png-3548d9618c59656d22cf299003541677.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
using Godot; using Godot;
using System; using System;
[GlobalClass, Icon("res://assets/ui/IconGodotNode/control/icon_heart.png")] [GlobalClass, Icon("res://assets/ui/IconGodotNode/node_3D/icon_heart.png")]
public partial class CHealthbar : Sprite3D public partial class CHealthbar : Sprite3D
{ {
private Healthbar _healthbar; private Healthbar _healthbar;

View File

@@ -19,6 +19,11 @@ script = ExtResource("5_0k5xu")
GravityModifier = 5.0 GravityModifier = 5.0
metadata/_custom_type_script = "uid://dtpxijlnb2c5" metadata/_custom_type_script = "uid://dtpxijlnb2c5"
[sub_resource type="Resource" id="Resource_p48l4"]
script = ExtResource("9_55uwi")
StartingHealth = 1000.0
metadata/_custom_type_script = "uid://baiapod3csndf"
[sub_resource type="Resource" id="Resource_epn1o"] [sub_resource type="Resource" id="Resource_epn1o"]
script = ExtResource("9_55uwi") script = ExtResource("9_55uwi")
StartingHealth = 1.0 StartingHealth = 1.0
@@ -26,10 +31,10 @@ metadata/_custom_type_script = "uid://baiapod3csndf"
[node name="Main" unique_id=1551129541 instance=ExtResource("1_w4y6q")] [node name="Main" unique_id=1551129541 instance=ExtResource("1_w4y6q")]
[node name="BackgroundMusicPlayer" parent="." index="0"] [node name="BackgroundMusicPlayer" parent="." index="0" unique_id=879496303]
autoplay = false autoplay = false
[node name="Player" parent="." index="5"] [node name="Player" parent="." index="5" unique_id=1309399929]
transform = Transform3D(0.99999994, 0, 0, 0, 1, 0, 0, 0, 0.99999994, 2, 1.5, 9.5) transform = Transform3D(0.99999994, 0, 0, 0, 1, 0, 0, 0, 0.99999994, 2, 1.5, 9.5)
[node name="Greybox" type="CSGCombiner3D" parent="." index="7" unique_id=646927976] [node name="Greybox" type="CSGCombiner3D" parent="." index="7" unique_id=646927976]
@@ -113,6 +118,7 @@ RMovement = SubResource("Resource_xixm3")
[node name="Enemy3" parent="." index="11" unique_id=271578597 node_paths=PackedStringArray("Target") instance=ExtResource("4_5mjy0")] [node name="Enemy3" parent="." index="11" unique_id=271578597 node_paths=PackedStringArray("Target") instance=ExtResource("4_5mjy0")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 4, -3.3368092) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 4, -3.3368092)
Target = NodePath("../Player") Target = NodePath("../Player")
RHealth = SubResource("Resource_p48l4")
RMovement = SubResource("Resource_xixm3") RMovement = SubResource("Resource_xixm3")
[node name="FlyingEnemy" parent="." index="12" unique_id=1167959205 node_paths=PackedStringArray("Target") instance=ExtResource("6_xuqf0")] [node name="FlyingEnemy" parent="." index="12" unique_id=1167959205 node_paths=PackedStringArray("Target") instance=ExtResource("6_xuqf0")]
@@ -125,18 +131,20 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 7, -16)
Target = NodePath("../Player") Target = NodePath("../Player")
RMovement = SubResource("Resource_xixm3") RMovement = SubResource("Resource_xixm3")
[node name="GroundedSpawner" parent="." index="14" unique_id=557145011 instance=ExtResource("7_ba7rw")] [node name="GroundedSpawner" parent="." index="14" unique_id=557145011 node_paths=PackedStringArray("Target") instance=ExtResource("7_ba7rw")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 2.5, -15) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 2.5, -15)
EnemyToSpawn = ExtResource("4_5mjy0") EnemyToSpawn = ExtResource("4_5mjy0")
MovementInputs = ExtResource("8_cdhvi") MovementInputs = ExtResource("8_cdhvi")
HealthInputs = SubResource("Resource_epn1o") HealthInputs = SubResource("Resource_epn1o")
DamageInputs = ExtResource("10_xyaoo") DamageInputs = ExtResource("10_xyaoo")
Target = NodePath("../Player")
IsActiveOnStart = false IsActiveOnStart = false
[node name="FlyingSpawner" parent="." index="15" unique_id=974076606 instance=ExtResource("7_ba7rw")] [node name="FlyingSpawner" parent="." index="15" unique_id=974076606 node_paths=PackedStringArray("Target") instance=ExtResource("7_ba7rw")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 11, -14) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 11, -14)
EnemyToSpawn = ExtResource("6_xuqf0") EnemyToSpawn = ExtResource("6_xuqf0")
MovementInputs = ExtResource("11_yug0s") MovementInputs = ExtResource("11_yug0s")
HealthInputs = ExtResource("12_qgrw7") HealthInputs = ExtResource("12_qgrw7")
DamageInputs = ExtResource("13_qulje") DamageInputs = ExtResource("13_qulje")
Target = NodePath("../Player")
IsActiveOnStart = false IsActiveOnStart = false

View File

@@ -1,4 +1,5 @@
extends Control extends Control
class_name LevelSelectMenu
## Loads a simple ItemList node within a margin container. SceneLister updates ## Loads a simple ItemList node within a margin container. SceneLister updates
## the available scenes in the directory provided. Activating a level will update ## the available scenes in the directory provided. Activating a level will update
@@ -29,5 +30,5 @@ func add_levels_to_container() -> void:
level_buttons_container.add_item(button_name) level_buttons_container.add_item(button_name)
func _on_level_buttons_container_item_activated(index: int) -> void: func _on_level_buttons_container_item_activated(index: int) -> void:
GameState.set_current_level(index) var level_to_load = scene_lister.files.get(index)
level_selected.emit() SceneLoader.load_scene(level_to_load)

View File

@@ -43,7 +43,7 @@ item_0/text = "1 - ExampleLevel"
[node name="SceneLister" type="Node" parent="." unique_id=149935027] [node name="SceneLister" type="Node" parent="." unique_id=149935027]
script = ExtResource("3_stdqw") script = ExtResource("3_stdqw")
files = Array[String](["res://maps/level1.tscn", "res://maps/city.tscn", "res://maps/GYMs/enemies.tscn", "res://maps/GYMs/metrics.tscn"]) files = Array[String](["res://maps/level1.tscn", "res://maps/city.tscn", "res://maps/GYMs/metrics.tscn"])
directory = "res://menus/scenes/game_scene/levels" directory = "res://maps"
[connection signal="item_activated" from="Control/LevelButtonsContainer" to="." method="_on_level_buttons_container_item_activated"] [connection signal="item_activated" from="Control/LevelButtonsContainer" to="." method="_on_level_buttons_container_item_activated"]

View File

@@ -4,7 +4,27 @@ class_name Toolbox
extends OverlaidMenu extends OverlaidMenu
@export var player: PlayerController @export var player: PlayerController
@export var level_selection_menu: PackedScene = preload("uid://fybssggvts5q")
@onready var player_invicible_toggle: CheckButton = %PlayerInvicibleToggle
func _ready() -> void:
player_invicible_toggle.button_pressed = player.IsInvincibleOverride
func _on_kill_player_button_pressed() -> void: func _on_kill_player_button_pressed() -> void:
get_tree().create_timer(1).timeout.connect(player.Kill) get_tree().create_timer(1).timeout.connect(player.Kill)
close() close()
func _on_player_invicible_toggled(toggled_on: bool) -> void:
player.IsInvincibleOverride = toggled_on
print(player.IsInvincible)
func _on_restart_current_level_pressed() -> void:
SceneLoader.reload_current_scene()
func _on_select_level_pressed() -> void:
var menu: LevelSelectMenu = level_selection_menu.instantiate()
add_child(menu)

View File

@@ -50,29 +50,69 @@ theme_override_font_sizes/font_size = 24
text = "Toolbox" text = "Toolbox"
horizontal_alignment = 1 horizontal_alignment = 1
[node name="PlayerSection" type="MarginContainer" parent="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer" unique_id=461792371] [node name="PlayerSectionMargin" type="MarginContainer" parent="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer" unique_id=461792371]
layout_mode = 2 layout_mode = 2
theme_override_constants/margin_top = 16 theme_override_constants/margin_top = 16
theme_override_constants/margin_bottom = 16 theme_override_constants/margin_bottom = 16
[node name="MenuButtons" type="BoxContainer" parent="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer/PlayerSection" unique_id=469432036] [node name="PlayerSection" type="BoxContainer" parent="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer/PlayerSectionMargin" unique_id=469432036]
unique_name_in_owner = true
custom_minimum_size = Vector2(128, 0) custom_minimum_size = Vector2(128, 0)
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 3 size_flags_vertical = 3
theme_override_constants/separation = 16 theme_override_constants/separation = 16
alignment = 1
vertical = true vertical = true
script = ExtResource("2_6ax4q")
[node name="PlayerSectionLabel" type="Label" parent="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer/PlayerSection/MenuButtons" unique_id=1100827847] [node name="PlayerSectionLabel" type="Label" parent="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer/PlayerSectionMargin/PlayerSection" unique_id=1100827847]
layout_mode = 2 layout_mode = 2
text = "Player" text = "Player"
[node name="KillPlayerButton" type="Button" parent="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer/PlayerSection/MenuButtons" unique_id=472828424] [node name="PlayerUtilsContainer" type="HBoxContainer" parent="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer/PlayerSectionMargin/PlayerSection" unique_id=993608648]
layout_mode = 2
size_flags_horizontal = 4
theme_override_constants/separation = 8
[node name="PlayerInvicibleToggle" type="CheckButton" parent="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer/PlayerSectionMargin/PlayerSection/PlayerUtilsContainer" unique_id=960956060]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
text = "Invincible"
script = ExtResource("2_6ax4q")
[node name="KillPlayerButton" type="Button" parent="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer/PlayerSectionMargin/PlayerSection/PlayerUtilsContainer" unique_id=472828424]
layout_mode = 2
text = "Kill in 1s" text = "Kill in 1s"
[connection signal="pressed" from="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer/PlayerSection/MenuButtons/KillPlayerButton" to="." method="_on_kill_player_button_pressed"] [node name="LevelSelectionMargin" type="MarginContainer" parent="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer" unique_id=517648431]
layout_mode = 2
theme_override_constants/margin_top = 16
theme_override_constants/margin_bottom = 16
[node name="LevelSelectionSection" type="BoxContainer" parent="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer/LevelSelectionMargin" unique_id=2038380087]
custom_minimum_size = Vector2(128, 0)
layout_mode = 2
size_flags_vertical = 3
theme_override_constants/separation = 16
vertical = true
[node name="LevelSelectionLabel" type="Label" parent="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer/LevelSelectionMargin/LevelSelectionSection" unique_id=950442689]
layout_mode = 2
text = "Levels"
[node name="LevelSelectionContainer" type="HBoxContainer" parent="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer/LevelSelectionMargin/LevelSelectionSection" unique_id=1674253271]
layout_mode = 2
size_flags_horizontal = 4
theme_override_constants/separation = 8
[node name="RestartCurrentButton" type="Button" parent="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer/LevelSelectionMargin/LevelSelectionSection/LevelSelectionContainer" unique_id=1059727667]
layout_mode = 2
text = "Restart current
"
[node name="SelectLevel" type="Button" parent="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer/LevelSelectionMargin/LevelSelectionSection/LevelSelectionContainer" unique_id=2015444126]
layout_mode = 2
text = "Select levet
"
[connection signal="toggled" from="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer/PlayerSectionMargin/PlayerSection/PlayerUtilsContainer/PlayerInvicibleToggle" to="." method="_on_player_invicible_toggled"]
[connection signal="pressed" from="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer/PlayerSectionMargin/PlayerSection/PlayerUtilsContainer/KillPlayerButton" to="." method="_on_kill_player_button_pressed"]
[connection signal="pressed" from="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer/LevelSelectionMargin/LevelSelectionSection/LevelSelectionContainer/RestartCurrentButton" to="." method="_on_restart_current_level_pressed"]
[connection signal="pressed" from="MarginContainer/MenuPanelContainer/MarginContainer/BoxContainer/LevelSelectionMargin/LevelSelectionSection/LevelSelectionContainer/SelectLevel" to="." method="_on_select_level_pressed"]

View File

@@ -33,6 +33,13 @@ stream_2/stream = ExtResource("3_xfjxc")
stream_3/stream = ExtResource("4_ycvo6") stream_3/stream = ExtResource("4_ycvo6")
stream_4/stream = ExtResource("5_5bvpy") stream_4/stream = ExtResource("5_5bvpy")
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_r7v0u"]
random_pitch = 1.0999973
streams_count = 3
stream_0/stream = ExtResource("14_qnngs")
stream_1/stream = ExtResource("15_3j1dm")
stream_2/stream = ExtResource("16_hln0b")
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_i5yri"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_i5yri"]
random_pitch = 1.1 random_pitch = 1.1
streams_count = 3 streams_count = 3
@@ -68,7 +75,7 @@ stream_0/stream = ExtResource("21_r7v0u")
stream_1/stream = ExtResource("22_l756u") stream_1/stream = ExtResource("22_l756u")
[resource] [resource]
clip_count = 10 clip_count = 11
clip_0/name = &"footsteps" clip_0/name = &"footsteps"
clip_0/stream = SubResource("AudioStreamRandomizer_rs8q3") clip_0/stream = SubResource("AudioStreamRandomizer_rs8q3")
clip_0/auto_advance = 0 clip_0/auto_advance = 0
@@ -99,6 +106,9 @@ clip_8/auto_advance = 0
clip_9/name = &"glide" clip_9/name = &"glide"
clip_9/stream = ExtResource("19_5bvpy") clip_9/stream = ExtResource("19_5bvpy")
clip_9/auto_advance = 0 clip_9/auto_advance = 0
clip_10/name = &"parry"
clip_10/stream = SubResource("AudioStreamRandomizer_r7v0u")
clip_10/auto_advance = 0
_transitions = { _transitions = {
Vector2i(-1, -1): { Vector2i(-1, -1): {
"fade_beats": 1.0, "fade_beats": 1.0,

View File

@@ -61,7 +61,7 @@ metadata/_custom_type_script = "uid://jitubgv6judn"
[sub_resource type="Resource" id="Resource_abfq8"] [sub_resource type="Resource" id="Resource_abfq8"]
script = ExtResource("3_cb2lu") script = ExtResource("3_cb2lu")
Modifier = 10.0 Modifier = 20.0
metadata/_custom_type_script = "uid://b44cse62qru7j" metadata/_custom_type_script = "uid://b44cse62qru7j"
[sub_resource type="Resource" id="Resource_ue7xq"] [sub_resource type="Resource" id="Resource_ue7xq"]
@@ -614,12 +614,24 @@ to = NodePath("../../StandardAttack")
event = &"standard_attack" event = &"standard_attack"
delay_in_seconds = "0.0" delay_in_seconds = "0.0"
[node name="ToStandardParry" type="Node" parent="StateChart/Root/Attack/Ready" unique_id=237786700]
script = ExtResource("28_n7qhm")
to = NodePath("../../StandardParry")
event = &"standard_parry"
delay_in_seconds = "0.0"
[node name="ToDashAttack" type="Node" parent="StateChart/Root/Attack/Ready" unique_id=505795999] [node name="ToDashAttack" type="Node" parent="StateChart/Root/Attack/Ready" unique_id=505795999]
script = ExtResource("28_n7qhm") script = ExtResource("28_n7qhm")
to = NodePath("../../DashAttack") to = NodePath("../../DashAttack")
event = &"dash_attack" event = &"dash_attack"
delay_in_seconds = "0.0" delay_in_seconds = "0.0"
[node name="ToDashParry" type="Node" parent="StateChart/Root/Attack/Ready" unique_id=39360094]
script = ExtResource("28_n7qhm")
to = NodePath("../../DashParry")
event = &"dash_parry"
delay_in_seconds = "0.0"
[node name="StandardAttack" type="Node" parent="StateChart/Root/Attack" unique_id=569485647] [node name="StandardAttack" type="Node" parent="StateChart/Root/Attack" unique_id=569485647]
script = ExtResource("27_34snm") script = ExtResource("27_34snm")
@@ -644,6 +656,30 @@ to = NodePath("../../Ready")
event = &"attack_finished" event = &"attack_finished"
delay_in_seconds = "0.0" delay_in_seconds = "0.0"
[node name="StandardParry" type="Node" parent="StateChart/Root/Attack" unique_id=1244610762]
script = ExtResource("27_34snm")
[node name="ToReady" type="Node" parent="StateChart/Root/Attack/StandardParry" unique_id=472222096]
script = ExtResource("28_n7qhm")
to = NodePath("../../Ready")
event = &"attack_finished"
delay_in_seconds = "0.0"
[node name="ToDashParry" type="Node" parent="StateChart/Root/Attack/StandardParry" unique_id=548221621]
script = ExtResource("28_n7qhm")
to = NodePath("../../DashParry")
event = &"dash_parry"
delay_in_seconds = "0.0"
[node name="DashParry" type="Node" parent="StateChart/Root/Attack" unique_id=898768175]
script = ExtResource("27_34snm")
[node name="ToReady" type="Node" parent="StateChart/Root/Attack/DashParry" unique_id=533843974]
script = ExtResource("28_n7qhm")
to = NodePath("../../Ready")
event = &"attack_finished"
delay_in_seconds = "0.0"
[node name="Movement" type="Node" parent="StateChart/Root" unique_id=1029421869] [node name="Movement" type="Node" parent="StateChart/Root" unique_id=1029421869]
script = ExtResource("26_infe6") script = ExtResource("26_infe6")
initial_state = NodePath("Grounded") initial_state = NodePath("Grounded")

View File

@@ -12,19 +12,16 @@ public partial class PlayerUi : Control
public enum TargetState public enum TargetState
{ {
NoTarget, NoTarget,
TargetTooFar, TargetWouldNotKill,
TargetInRange, TargetWouldKill
TargetDashThrough
} }
public record TargetProperties(TargetState State, Vector2 Position); public record TargetProperties(TargetState State, Vector2 Position);
[Export] [Export]
public Color DashThroughColor { get; set; } = new Color("009c8f"); public Color WouldKillColor { get; set; } = new Color("009c8f");
[Export] [Export]
public Color DashBlockedColor { get; set; } = new Color("fc001c"); public Color WouldNotKillColor { get; set; } = new Color("fc001c");
[Export]
public Color DashOutOfRangeColor { get; set; } = new Color("ffffff");
public override void _Ready() public override void _Ready()
{ {
@@ -49,10 +46,9 @@ public partial class PlayerUi : Control
var modulation = state switch var modulation = state switch
{ {
TargetState.TargetTooFar => DashOutOfRangeColor, TargetState.TargetWouldNotKill => WouldNotKillColor,
TargetState.TargetInRange => DashBlockedColor, TargetState.TargetWouldKill => WouldKillColor,
TargetState.TargetDashThrough => DashThroughColor, _ => WouldNotKillColor
_ => DashOutOfRangeColor
}; };
_enemyTarget.SetVisible(visible); _enemyTarget.SetVisible(visible);
_enemyTarget.SetPosition(position - _enemyTarget.Size / 2); _enemyTarget.SetPosition(position - _enemyTarget.Size / 2);

View File

@@ -336,6 +336,8 @@ public partial class PlayerController : CharacterBody3D,
private StateChartState _attackStandard; private StateChartState _attackStandard;
private StateChartState _attackDash; private StateChartState _attackDash;
private StateChartState _parryStandard;
private StateChartState _parryDash;
private Transition _onJumpFromWall; private Transition _onJumpFromWall;
private Transition _onJumpFromWallFalling; private Transition _onJumpFromWallFalling;
@@ -352,6 +354,13 @@ public partial class PlayerController : CharacterBody3D,
public float CurrentHealth { get; set; } public float CurrentHealth { get; set; }
private bool _isInvincible; private bool _isInvincible;
public bool IsInvincibleOverride { get; set; }
public bool IsInvincible
{
get => _isInvincible || IsInvincibleOverride;
set => _isInvincible = value;
}
private readonly List<IDamageable> _hitEnemies = new List<IDamageable>(); private readonly List<IDamageable> _hitEnemies = new List<IDamageable>();
private ShapeCast3D _closeEnemyDetector; private ShapeCast3D _closeEnemyDetector;
@@ -481,6 +490,8 @@ public partial class PlayerController : CharacterBody3D,
// Attack states // Attack states
_attackStandard = StateChartState.Of(GetNode("StateChart/Root/Attack/StandardAttack")); _attackStandard = StateChartState.Of(GetNode("StateChart/Root/Attack/StandardAttack"));
_attackDash = StateChartState.Of(GetNode("StateChart/Root/Attack/DashAttack")); _attackDash = StateChartState.Of(GetNode("StateChart/Root/Attack/DashAttack"));
_parryStandard = StateChartState.Of(GetNode("StateChart/Root/Attack/StandardParry"));
_parryDash = StateChartState.Of(GetNode("StateChart/Root/Attack/DashParry"));
// State timers // State timers
_powerCooldownTimer = GetNode<Timer>("PowerCooldown"); _powerCooldownTimer = GetNode<Timer>("PowerCooldown");
@@ -597,6 +608,8 @@ public partial class PlayerController : CharacterBody3D,
// Attack states // Attack states
_attackStandard.StateEntered += OnStandardAttackStarted; _attackStandard.StateEntered += OnStandardAttackStarted;
_attackDash.StateEntered += OnDashAttackStarted; _attackDash.StateEntered += OnDashAttackStarted;
_parryStandard.StateEntered += OnStandardParryStarted;
_parryDash.StateEntered += OnDashParryStarted;
// Testing out kill // Testing out kill
// GetTree().CreateTimer(2).Timeout += () => Kill(this); // GetTree().CreateTimer(2).Timeout += () => Kill(this);
@@ -1432,7 +1445,7 @@ public partial class PlayerController : CharacterBody3D,
SetupSlideCollision(); SetupSlideCollision();
SlidingEnemyDetector.Monitoring = true; SlidingEnemyDetector.Monitoring = true;
_isInvincible = true; IsInvincible = true;
} }
public bool CanStandUpFromSlide() public bool CanStandUpFromSlide()
@@ -1559,7 +1572,7 @@ public partial class PlayerController : CharacterBody3D,
public void SlideEnded() public void SlideEnded()
{ {
SlidingEnemyDetector.Monitoring = false; SlidingEnemyDetector.Monitoring = false;
_isInvincible = false; IsInvincible = false;
SetupStandingCollision(); SetupStandingCollision();
_audioStream!.SwitchToClipByName("footsteps"); _audioStream!.SwitchToClipByName("footsteps");
@@ -1709,16 +1722,8 @@ public partial class PlayerController : CharacterBody3D,
/////////////////////////// ///////////////////////////
public void OnInputParryPressed() public void OnInputParryPressed()
{ {
if (WeaponSystem.FlyingState.Active) var attackToDo = _isEnemyInDashAttackRange ? "dash_parry" : "standard_parry";
{ _playerState.SendEvent(attackToDo);
DashToFlyingWeapon();
return;
}
if (WeaponSystem.PlantedState.Active)
{
DashToPlantedWeapon();
}
} }
/////////////////////////// ///////////////////////////
@@ -1965,7 +1970,7 @@ public partial class PlayerController : CharacterBody3D,
if (DashSystem.CanDashThroughTarget && DashSystem.CollidedObject is ITargetable dashTarget) if (DashSystem.CanDashThroughTarget && DashSystem.CollidedObject is ITargetable dashTarget)
{ {
enemyTargetState = PlayerUi.TargetState.TargetDashThrough; enemyTargetState = PlayerUi.TargetState.TargetWouldKill;
_targetLocation = dashTarget.GetTargetGlobalPosition(); _targetLocation = dashTarget.GetTargetGlobalPosition();
positionOnScreen = _camera.UnprojectPosition(_targetLocation); positionOnScreen = _camera.UnprojectPosition(_targetLocation);
PlayerUi.SetEnemyTargetProperties(new PlayerUi.TargetProperties(enemyTargetState, positionOnScreen)); PlayerUi.SetEnemyTargetProperties(new PlayerUi.TargetProperties(enemyTargetState, positionOnScreen));
@@ -1991,25 +1996,20 @@ public partial class PlayerController : CharacterBody3D,
// var targetDistance = _targetLocation.DistanceTo(GlobalPosition); // var targetDistance = _targetLocation.DistanceTo(GlobalPosition);
positionOnScreen = _camera.UnprojectPosition(_targetLocation); positionOnScreen = _camera.UnprojectPosition(_targetLocation);
_isEnemyInDashAttackRange = true; //targetDistance < TargetInRangeDistance; // Removing the "almost dash" UI var wouldKill = false;
if (_isEnemyInDashAttackRange) if (_targetObject is IHealthable h and IDamageable d)
{ {
enemyTargetState = PlayerUi.TargetState.TargetDashThrough; var wouldBeDamage = d.ComputeDamage(new DamageRecord(GlobalPosition, RDamage));
if (_targetObject is IDamageable damageable and IHealthable healthable) if (h.CurrentHealth < wouldBeDamage.Damage.DamageDealt) wouldKill = true;
{
var wouldBeDamage = damageable.ComputeDamage(new DamageRecord(GlobalPosition, RDamage));
if (wouldBeDamage.Damage.DamageDealt < healthable.CurrentHealth)
enemyTargetState = PlayerUi.TargetState.TargetInRange;
}
} }
else enemyTargetState = PlayerUi.TargetState.TargetTooFar; _isEnemyInDashAttackRange = true;
enemyTargetState = wouldKill ? PlayerUi.TargetState.TargetWouldKill : PlayerUi.TargetState.TargetWouldNotKill;
PlayerUi.SetEnemyTargetProperties(new PlayerUi.TargetProperties(enemyTargetState, positionOnScreen)); PlayerUi.SetEnemyTargetProperties(new PlayerUi.TargetProperties(enemyTargetState, positionOnScreen));
} }
public DamageRecord TakeDamage(DamageRecord damageRecord) public DamageRecord TakeDamage(DamageRecord damageRecord)
{ {
if (_isInvincible) if (IsInvincible)
return damageRecord with { Damage = new RDamage(0, damageRecord.Damage.DamageType) }; return damageRecord with { Damage = new RDamage(0, damageRecord.Damage.DamageType) };
var finalDamage = CDamageable.TakeDamage(damageRecord); var finalDamage = CDamageable.TakeDamage(damageRecord);
@@ -2030,7 +2030,7 @@ public partial class PlayerController : CharacterBody3D,
public void OnHitInvincibility() public void OnHitInvincibility()
{ {
_isInvincible = true; IsInvincible = true;
_invincibilityTimer.Start(); _invincibilityTimer.Start();
} }
@@ -2041,15 +2041,22 @@ public partial class PlayerController : CharacterBody3D,
_audioStream!.SwitchToClipByName("attacks"); _audioStream!.SwitchToClipByName("attacks");
} }
private PhysicsDirectSpaceState3D _spaceState; public void OnStandardParryStarted()
public void OnDashAttackStarted()
{ {
_audioStream!.SwitchToClipByName("attacks"); _attackCooldown.Start();
HeadSystem.OnParry();
_isInvincible = true; _audioStream!.SwitchToClipByName("parry");
}
private PhysicsDirectSpaceState3D _spaceState;
public void StartDashAction(bool isParry)
{
var streamName = isParry ? "parry" : "attacks";
_audioStream!.SwitchToClipByName(streamName);
IsInvincible = true;
var plannedDashLocation = _targetLocation + Vector3.Down*HeadSystem.Position.Y; var plannedDashLocation = _targetLocation + Vector3.Down*HeadSystem.Position.Y;
var query = PhysicsRayQueryParameters3D.Create(HeadSystem.GlobalPosition, plannedDashLocation, DashSystem.DashCast3D.CollisionMask); var query = PhysicsRayQueryParameters3D.Create(HeadSystem.GlobalPosition, plannedDashLocation, DashSystem.DashCast3D.CollisionMask);
var result = _spaceState.IntersectRay(query); var result = _spaceState.IntersectRay(query);
if (result.Count > 0) if (result.Count > 0)
@@ -2057,41 +2064,50 @@ public partial class PlayerController : CharacterBody3D,
plannedDashLocation = (Vector3) result["position"]; plannedDashLocation = (Vector3) result["position"];
} }
var travel = plannedDashLocation - GlobalPosition; var travel = plannedDashLocation - (GlobalPosition + Vector3.Up*_playerHeight/2);
_preDashVelocity = Velocity; _preDashVelocity = Velocity;
_dashDirection = travel.Normalized(); _dashDirection = travel.Normalized();
var dashTween = CreatePositionTween(plannedDashLocation, AimedDashTime); var dashTween = CreatePositionTween(plannedDashLocation, AimedDashTime);
dashTween.Finished += OnDashAttackEnded; if (isParry) dashTween.Finished += OnDashParryEnded;
else dashTween.Finished += OnDashAttackEnded;
}
public void OnDashAttackStarted()
{
StartDashAction(isParry: false);
}
public void OnDashParryStarted()
{
StartDashAction(isParry: true);
} }
public void OnDashAttackEnded() public void StopDashAction()
{ {
if (_targetObject is IDamageable damageable) if (_targetObject is IDamageable damageable)
{ {
_hitEnemies.Add(damageable); _hitEnemies.Add(damageable);
TriggerDamage(); TriggerDamage();
} }
if (_targetObject is IStunnable stunnable) if (_targetObject is IStunnable stunnable)
{ {
stunnable.Stun(); stunnable.Stun();
} }
IsInvincible = false;
var shouldKnockback = _targetObject is IHealthable { CurrentHealth: > 0 };
if (shouldKnockback)
{
Velocity = -_dashDirection*RKnockback.Modifier;
}
else
{
GlobalPosition = ComputePositionAfterTargetedDash(_targetLocation, _targetHitLocation);
var postDashVelocity = _preDashVelocity.Length() > PostDashSpeed ? _preDashVelocity.Length() : PostDashSpeed;
Velocity = _dashDirection * postDashVelocity;
}
_isInvincible = false;
_playerState.SendEvent("attack_finished"); _playerState.SendEvent("attack_finished");
} }
public void OnDashAttackEnded()
{
StopDashAction();
GlobalPosition = ComputePositionAfterTargetedDash(_targetLocation, _targetHitLocation);
var postDashVelocity = _preDashVelocity.Length() > PostDashSpeed ? _preDashVelocity.Length() : PostDashSpeed;
Velocity = _dashDirection * postDashVelocity;
}
public void OnDashParryEnded()
{
StopDashAction();
Velocity = -_dashDirection*RKnockback.Modifier;
}
public static Vector3 ComputePositionAfterTargetedDash(Vector3 targetLocation, Vector3 targetHitLocation) public static Vector3 ComputePositionAfterTargetedDash(Vector3 targetLocation, Vector3 targetHitLocation)
{ {
return targetLocation + (targetLocation - targetHitLocation); return targetLocation + (targetLocation - targetHitLocation);
@@ -2104,6 +2120,16 @@ public partial class PlayerController : CharacterBody3D,
ThrowWeapon(); ThrowWeapon();
return; return;
} }
if (WeaponSystem.FlyingState.Active)
{
DashToFlyingWeapon();
return;
}
if (WeaponSystem.PlantedState.Active)
{
DashToPlantedWeapon();
return;
}
var attackToDo = _isEnemyInDashAttackRange ? "dash_attack" : "standard_attack"; var attackToDo = _isEnemyInDashAttackRange ? "dash_attack" : "standard_attack";
_playerState.SendEvent(attackToDo); _playerState.SendEvent(attackToDo);
@@ -2185,9 +2211,10 @@ public partial class PlayerController : CharacterBody3D,
public void ResetInvincibility() public void ResetInvincibility()
{ {
_isInvincible = false; IsInvincible = false;
} }
// Sound // Sound
public void OnFootStepped() public void OnFootStepped()
{ {

View File

@@ -22,21 +22,14 @@ public partial class Spawner : Node3D
[Export] [Export]
public bool IsActiveOnStart { get; set; } = true; public bool IsActiveOnStart { get; set; } = true;
private float _spawnTimer; private Timer _timer;
private bool _isActive;
public override void _Ready() public override void _Ready()
{ {
_isActive = IsActiveOnStart; _timer = GetNode<Timer>("Timer");
_spawnTimer = SpawnInterval; _timer.WaitTime = SpawnInterval;
} _timer.Timeout += Spawn;
if (IsActiveOnStart) StartSpawning();
public override void _Process(double delta)
{
if (!_isActive) return;
_spawnTimer -= (float) delta;
if (_spawnTimer <= 0) Spawn();
} }
public void Spawn() public void Spawn()
@@ -44,27 +37,24 @@ public partial class Spawner : Node3D
if (EnemyToSpawn == null || !EnemyToSpawn.CanInstantiate()) return; if (EnemyToSpawn == null || !EnemyToSpawn.CanInstantiate()) return;
if (EnemyToSpawn.Instantiate() is not Enemy spawnedInstance) return; if (EnemyToSpawn.Instantiate() is not Enemy spawnedInstance) return;
GetTree().GetCurrentScene().AddChild(spawnedInstance);
spawnedInstance.GlobalPosition = GlobalPosition;
spawnedInstance.Target = Target; spawnedInstance.Target = Target;
spawnedInstance.RMovement = MovementInputs; spawnedInstance.RMovement = MovementInputs;
spawnedInstance.RDamage = DamageInputs; spawnedInstance.RDamage = DamageInputs;
spawnedInstance.RHealth = HealthInputs; spawnedInstance.RHealth = HealthInputs;
spawnedInstance.Initialize(); spawnedInstance.Initialize();
GetTree().GetCurrentScene().AddChild(spawnedInstance);
spawnedInstance.GlobalPosition = GlobalPosition;
_spawnTimer = SpawnInterval;
} }
public void StartSpawning() public void StartSpawning()
{ {
_isActive = true; _timer.Start();
_spawnTimer = SpawnInterval;
} }
public void StopSpawning() public void StopSpawning()
{ {
_isActive = false; _timer.Stop();
} }
} }

View File

@@ -6,3 +6,5 @@
script = ExtResource("1_2otbo") script = ExtResource("1_2otbo")
[node name="Marker3D" type="Marker3D" parent="." unique_id=610854505] [node name="Marker3D" type="Marker3D" parent="." unique_id=610854505]
[node name="Timer" type="Timer" parent="." unique_id=1842357493]

View File

@@ -11,6 +11,11 @@ public partial class HeadSystem : Node3D
public delegate void HitboxActivatedEventHandler(); public delegate void HitboxActivatedEventHandler();
[Signal] [Signal]
public delegate void HitboxDeactivatedEventHandler(); public delegate void HitboxDeactivatedEventHandler();
[Signal]
public delegate void ParryboxActivatedEventHandler();
[Signal]
public delegate void ParryboxDeactivatedEventHandler();
[Signal] [Signal]
public delegate void HitTargetEventHandler(); public delegate void HitTargetEventHandler();
@@ -80,6 +85,8 @@ public partial class HeadSystem : Node3D
[ExportGroup("First Person rig")] [ExportGroup("First Person rig")]
private Node3D _fpRig; private Node3D _fpRig;
private Node3D _rightHandedWeapon;
private Node3D _leftHandedWeapon;
private Node3D _fpDisplacedRig; private Node3D _fpDisplacedRig;
private Vector3 _fpDisplacedRigInitialRotation; private Vector3 _fpDisplacedRigInitialRotation;
[Export(PropertyHint.Range, "0,10,0.1,or_greater")] [Export(PropertyHint.Range, "0,10,0.1,or_greater")]
@@ -110,6 +117,8 @@ public partial class HeadSystem : Node3D
_animationTree = GetNode<AnimationTree>("AnimationTree"); _animationTree = GetNode<AnimationTree>("AnimationTree");
_fpRig = GetNode<Node3D>("FPRig"); _fpRig = GetNode<Node3D>("FPRig");
_rightHandedWeapon = GetNode<Node3D>("FPRig/Sword");
_leftHandedWeapon = GetNode<Node3D>("FPRig/Parry");
_fpDisplacedRig = GetNode<Node3D>("FPRig/Sword"); _fpDisplacedRig = GetNode<Node3D>("FPRig/Sword");
_fpDisplacedRigInitialRotation = _fpDisplacedRig.Rotation; _fpDisplacedRigInitialRotation = _fpDisplacedRig.Rotation;
@@ -133,6 +142,10 @@ public partial class HeadSystem : Node3D
{ {
_animationTree.Set("parameters/OnHit/request", (int) AnimationNodeOneShot.OneShotRequest.Fire); _animationTree.Set("parameters/OnHit/request", (int) AnimationNodeOneShot.OneShotRequest.Fire);
} }
public void OnParry()
{
_animationTree.Set("parameters/OnParry/request", (int) AnimationNodeOneShot.OneShotRequest.Fire);
}
public void OnStartDeathAnimation() public void OnStartDeathAnimation()
{ {
_isPlayingForcingAnim = true; _isPlayingForcingAnim = true;
@@ -162,6 +175,15 @@ public partial class HeadSystem : Node3D
EmitSignalHitboxDeactivated(); EmitSignalHitboxDeactivated();
} }
public void OnParryboxActivated()
{
EmitSignalHitboxActivated();
}
public void OnParryboxDeactivated()
{
EmitSignalHitboxDeactivated();
}
private bool _footstepEmitted; private bool _footstepEmitted;
private bool _isPlayingForcingAnim; private bool _isPlayingForcingAnim;
@@ -300,11 +322,11 @@ public partial class HeadSystem : Node3D
public void HideWeapon() public void HideWeapon()
{ {
_fpRig.Visible = false; _rightHandedWeapon.Visible = false;
} }
public void ShowWeapon() public void ShowWeapon()
{ {
_fpRig.Visible = true; _rightHandedWeapon.Visible = true;
} }
public float ComputeCameraInclineFactor(Vector3 direction) public float ComputeCameraInclineFactor(Vector3 direction)

View File

@@ -25,6 +25,11 @@ filters = ["..:position", "..:rotation"]
filter_enabled = true filter_enabled = true
filters = ["..:position", "..:rotation", "..:rotation:x", "..:rotation:z"] filters = ["..:position", "..:rotation", "..:rotation:x", "..:rotation:z"]
[sub_resource type="AnimationNodeOneShot" id="AnimationNodeOneShot_lwjon"]
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_calte"]
animation = &"parry"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_23rmc"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_23rmc"]
animation = &"hit1" animation = &"hit1"
@@ -38,8 +43,8 @@ animation = &"jump_start"
animation = &"mantle" animation = &"mantle"
[resource] [resource]
graph_offset = Vector2(149.92139, -71.126785) graph_offset = Vector2(-363.5551, -25.864124)
nodes/output/position = Vector2(1700, -40) nodes/output/position = Vector2(2020, -40)
nodes/AnimationNodeStateMachine/node = ExtResource("1_knaxl") nodes/AnimationNodeStateMachine/node = ExtResource("1_knaxl")
nodes/AnimationNodeStateMachine/position = Vector2(-560, 180) nodes/AnimationNodeStateMachine/position = Vector2(-560, 180)
nodes/Idle/node = SubResource("AnimationNodeAnimation_knaxl") nodes/Idle/node = SubResource("AnimationNodeAnimation_knaxl")
@@ -64,4 +69,8 @@ nodes/OnDie/node = SubResource("AnimationNodeOneShot_ao3u1")
nodes/OnDie/position = Vector2(1500, -60) nodes/OnDie/position = Vector2(1500, -60)
nodes/Die/node = SubResource("AnimationNodeAnimation_1hkum") nodes/Die/node = SubResource("AnimationNodeAnimation_1hkum")
nodes/Die/position = Vector2(1280, 340) nodes/Die/position = Vector2(1280, 340)
node_connections = [&"output", 0, &"OnDie", &"OnHit", 0, &"OnMantle", &"OnHit", 1, &"hit1", &"OnJumpStart", 0, &"Idle", &"OnJumpStart", 1, &"jump_start", &"OnJumpEnd", 0, &"OnJumpStart", &"OnJumpEnd", 1, &"jump_end", &"OnMantle", 0, &"OnJumpEnd", &"OnMantle", 1, &"mantle", &"OnDie", 0, &"OnHit", &"OnDie", 1, &"Die"] nodes/OnParry/node = SubResource("AnimationNodeOneShot_lwjon")
nodes/OnParry/position = Vector2(1780, -40)
nodes/Parry/node = SubResource("AnimationNodeAnimation_calte")
nodes/Parry/position = Vector2(1600, 300)
node_connections = [&"output", 0, &"OnParry", &"OnHit", 0, &"OnMantle", &"OnHit", 1, &"hit1", &"OnJumpStart", 0, &"Idle", &"OnJumpStart", 1, &"jump_start", &"OnJumpEnd", 0, &"OnJumpStart", &"OnJumpEnd", 1, &"jump_end", &"OnMantle", 0, &"OnJumpEnd", &"OnMantle", 1, &"mantle", &"OnDie", 0, &"OnHit", &"OnDie", 1, &"Die", &"OnParry", 0, &"OnDie", &"OnParry", 1, &"Parry"]

View File

@@ -2,6 +2,7 @@
[ext_resource type="Script" uid="uid://dtkdrnsmlwm67" path="res://systems/head/HeadSystem.cs" id="1_8abgy"] [ext_resource type="Script" uid="uid://dtkdrnsmlwm67" path="res://systems/head/HeadSystem.cs" id="1_8abgy"]
[ext_resource type="ArrayMesh" uid="uid://ckr26s4e3fj1m" path="res://assets/swords/resources/fp_sword23.tres" id="2_c5qep"] [ext_resource type="ArrayMesh" uid="uid://ckr26s4e3fj1m" path="res://assets/swords/resources/fp_sword23.tres" id="2_c5qep"]
[ext_resource type="ArrayMesh" uid="uid://dogiv0piqfmfu" path="res://assets/swords/resources/fp_sword20.tres" id="3_1ay6d"]
[ext_resource type="AnimationNodeBlendTree" uid="uid://c26yvcyyyj811" path="res://systems/head/fp_blend_tree.tres" id="3_r0h40"] [ext_resource type="AnimationNodeBlendTree" uid="uid://c26yvcyyyj811" path="res://systems/head/fp_blend_tree.tres" id="3_r0h40"]
[ext_resource type="Script" uid="uid://dnlxsrumw6ygp" path="res://addons/shaker/src/Vector3/shaker_component3D.gd" id="3_ubhf8"] [ext_resource type="Script" uid="uid://dnlxsrumw6ygp" path="res://addons/shaker/src/Vector3/shaker_component3D.gd" id="3_ubhf8"]
[ext_resource type="Script" uid="uid://0tu2q57qqu4s" path="res://addons/shaker/data/Vector3/BaseShakerType3D.gd" id="4_1ay6d"] [ext_resource type="Script" uid="uid://0tu2q57qqu4s" path="res://addons/shaker/data/Vector3/BaseShakerType3D.gd" id="4_1ay6d"]
@@ -133,6 +134,87 @@ tracks/4/keys = {
"update": 0, "update": 0,
"values": [Vector3(0, 0, 0)] "values": [Vector3(0, 0, 0)]
} }
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("../../FPRig/Parry:position")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(-0.22145952, -0.19867475, -1.3653086)]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("../../FPRig/Parry:rotation")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0.9350104, 3.0957325, -1.9789876)]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("../../FPRig/Parry:visible")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/8/type = "bezier"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("../../FPRig/Parry:rotation:x")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0.9350104, -0.15, 0, 0.15, 0),
"times": PackedFloat32Array(0)
}
tracks/9/type = "bezier"
tracks/9/imported = false
tracks/9/enabled = true
tracks/9/path = NodePath("../../FPRig/Parry:rotation:y")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(3.0957325, -0.15, 0, 0.15, 0),
"times": PackedFloat32Array(0)
}
tracks/10/type = "bezier"
tracks/10/imported = false
tracks/10/enabled = true
tracks/10/path = NodePath("../../FPRig/Parry:rotation:z")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(-1.9789876, -0.15, 0, 0.15, 0),
"times": PackedFloat32Array(0)
}
tracks/11/type = "value"
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/path = NodePath("../../FPRig/Parry:scale")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(1.2, 1.2, 1.2)]
}
[sub_resource type="Animation" id="Animation_sdjj3"] [sub_resource type="Animation" id="Animation_sdjj3"]
resource_name = "die" resource_name = "die"
@@ -199,6 +281,42 @@ tracks/4/keys = {
"update": 0, "update": 0,
"values": [Vector3(0, 0, 0.00011616433), Vector3(0, 0, -0.092299014), Vector3(0, 0, 1.2653637)] "values": [Vector3(0, 0, 0.00011616433), Vector3(0, 0, -0.092299014), Vector3(0, 0, 1.2653637)]
} }
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("../../FPRig/Parry:position")
tracks/5/interp = 2
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0, 0.2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(-0.22145952, -0.19867475, -1.3653086), Vector3(-1.3323143, -0.19867463, -1.7020192)]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("../../FPRig/Parry:rotation")
tracks/6/interp = 2
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0, 0.2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0.9350104, 3.0957325, -1.9789876), Vector3(0.5242357, 2.32568, -3.0527115)]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("../../FPRig/Parry:visible")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0, 0.2),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [true, false]
}
[sub_resource type="Animation" id="Animation_r0h40"] [sub_resource type="Animation" id="Animation_r0h40"]
resource_name = "hit1" resource_name = "hit1"
@@ -269,6 +387,18 @@ tracks/4/keys = {
"method": &"OnHitboxDeactivated" "method": &"OnHitboxDeactivated"
}] }]
} }
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("../../FPRig/Parry:position")
tracks/5/interp = 2
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0, 0.033333335, 0.083333336, 0.16666667, 0.3),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Vector3(-0.22145952, -0.19867475, -1.3653086), Vector3(-0.0715476, -0.16325326, -0.8197592), Vector3(-0.36483923, -0.26392323, -1.3945884), Vector3(-0.8528395, -0.26392323, -1.2049117), Vector3(-0.8528395, -0.26392323, -1.2049117)]
}
[sub_resource type="Animation" id="Animation_0hyrq"] [sub_resource type="Animation" id="Animation_0hyrq"]
resource_name = "idle" resource_name = "idle"
@@ -298,6 +428,30 @@ tracks/1/keys = {
"update": 0, "update": 0,
"values": [Vector3(-0.083978735, -1.136043, 0.19867715), Vector3(-0.06987281, -1.1365474, 0.20524277), Vector3(-0.05990464, -1.1368362, 0.20987195), Vector3(-0.06303402, -1.1367121, 0.2084137), Vector3(-0.083978735, -1.136043, 0.19867715)] "values": [Vector3(-0.083978735, -1.136043, 0.19867715), Vector3(-0.06987281, -1.1365474, 0.20524277), Vector3(-0.05990464, -1.1368362, 0.20987195), Vector3(-0.06303402, -1.1367121, 0.2084137), Vector3(-0.083978735, -1.136043, 0.19867715)]
} }
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("../../FPRig/Parry:position")
tracks/2/interp = 2
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.3, 0.8000001),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(-0.22145952, -0.19867475, -1.3653086), Vector3(-0.221, -0.211, -1.365), Vector3(-0.221, -0.16, -1.365)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("../../FPRig/Parry:rotation")
tracks/3/interp = 2
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.3, 0.8000001),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0.9350104, 3.0957325, -1.9789876), Vector3(0.93194425, 3.0397656, -2.0486145), Vector3(0.9362563, 3.1298003, -1.9366695)]
}
[sub_resource type="Animation" id="Animation_1ay6d"] [sub_resource type="Animation" id="Animation_1ay6d"]
resource_name = "jump_end" resource_name = "jump_end"
@@ -371,6 +525,121 @@ tracks/0/keys = {
"values": [Vector3(0, 0, 0.00011616433), Vector3(-0.5235988, 0, 0), Vector3(0, 0, 0)] "values": [Vector3(0, 0, 0.00011616433), Vector3(-0.5235988, 0, 0), Vector3(0, 0, 0)]
} }
[sub_resource type="Animation" id="Animation_ll12k"]
resource_name = "parry"
length = 0.3
step = 0.016666668
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("../../FPRig/Parry:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.083333336, 0.13333334, 0.16666667, 0.20000002, 0.3),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 0,
"values": [Vector3(-0.22145952, -0.19867475, -1.3653086), Vector3(0.08582078, -0.10871372, -0.57329714), Vector3(0.23993218, -0.07025133, -0.8836378), Vector3(0.2783246, -0.07025109, -0.9678366), Vector3(0.2897812, -0.07025109, -0.8572479), Vector3(-0.22145952, -0.19867475, -1.3653086)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("../../FPRig/Sword:position")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.15, 0.21666668, 0.3),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Vector3(0.53640664, -0.7880347, -1.9288678), Vector3(0.35144368, -0.7880347, -0.88497114), Vector3(0.87958574, -0.7880347, -1.4807583), Vector3(0.87958574, -0.7880347, -1.4807583), Vector3(0.53640664, -0.7880347, -1.9288678)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("../../FPRig/Sword:rotation")
tracks/2/interp = 2
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.15, 0.21666668, 0.3),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Vector3(-0.083978735, -1.136043, 0.19867715), Vector3(0.012032291, -1.1376454, 0.24317425), Vector3(0.012032287, -1.8018653, 0.24317427), Vector3(0.012032287, -1.8018653, 0.24317427), Vector3(-0.083978735, -1.136043, 0.19867715)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("..:rotation")
tracks/3/interp = 2
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.016666666, 0.1, 0.16666667, 0.2, 0.3),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0, 0, 0), Vector3(0, 0, 0.05235988), Vector3(0, -0.05235988, -0.10471976), Vector3(0, 0.02617994, 0.05235988), Vector3(0, 0, 0)]
}
tracks/4/type = "method"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("../..")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0.06666667, 0.18333334),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [],
"method": &"OnParryboxActivated"
}, {
"args": [],
"method": &"OnParryboxDeactivated"
}]
}
tracks/5/type = "bezier"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("../../FPRig/Parry:rotation:x")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"handle_modes": PackedInt32Array(0, 0, 2, 2, 2, 0),
"points": PackedFloat32Array(0.9350104, -0.15, 0, 0.033333335, 0.17374629, 0.98194534, -0.01666667, 0.016720235, 0, 0, 1.4891908, -0.03333334, -0.06340563, 0, 0, 1.5010982, -0.005555555, 0, 0, 0, 1.3694806, -0.008333336, 0.021936258, 0, 0, 0.9350104, -0.03333333, 0.17374629, 0.033333335, 0.17374629),
"times": PackedFloat32Array(0, 0.083333336, 0.13333334, 0.16666667, 0.21666668, 0.3)
}
tracks/6/type = "bezier"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("../../FPRig/Parry:rotation:y")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"handle_modes": PackedInt32Array(0, 0, 2, 2, 2, 0),
"points": PackedFloat32Array(3.0957325, -0.15, 0, 0.05, -0.045176744, 2.8761902, -0.033333335, 0.30117726, 0, 0, 2.9792244, -0.03333334, -0.25362277, 0, 0, 2.9158187, -0.016666666, 0.11096001, 0, 0, 2.8365617, -0.01666668, -0.18834376, 0, 0, 3.0957325, -0.050000012, -0.21161652, 0.05, -0.045176744),
"times": PackedFloat32Array(0, 0.083333336, 0.13333334, 0.16666667, 0.21666668, 0.3)
}
tracks/7/type = "bezier"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("../../FPRig/Parry:rotation:z")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"handle_modes": PackedInt32Array(0, 0, 2, 2, 2, 0),
"points": PackedFloat32Array(-1.9789876, -0.15, 0, 0.016666668, 0.6069969, -1.5225792, -0.01666667, 0.26527464, 0, 0, -0.9026986, -0.011111112, -0.101292565, 0, 0, -0.90269864, -0.005555555, 9.934108e-09, 0, 0, -1.642684, -0.008333336, 0.1233309, 0, 0, -1.9789876, -0.050000012, 0.13937998, 0.016666668, 0.6069969),
"times": PackedFloat32Array(0, 0.083333336, 0.13333334, 0.16666667, 0.21666668, 0.3)
}
tracks/8/type = "value"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("../../FPRig/Parry:scale")
tracks/8/interp = 2
tracks/8/loop_wrap = true
tracks/8/keys = {
"times": PackedFloat32Array(0, 0.083333336, 0.13333334, 0.16666667, 0.3),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Vector3(1, 1, 1), Vector3(1.2, 1.2, 1.2), Vector3(1.65, 1, 1), Vector3(1, 1, 1), Vector3(1, 1, 1)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_0hyrq"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_0hyrq"]
_data = { _data = {
&"RESET": SubResource("Animation_urko7"), &"RESET": SubResource("Animation_urko7"),
@@ -379,7 +648,8 @@ _data = {
&"idle": SubResource("Animation_0hyrq"), &"idle": SubResource("Animation_0hyrq"),
&"jump_end": SubResource("Animation_1ay6d"), &"jump_end": SubResource("Animation_1ay6d"),
&"jump_start": SubResource("Animation_ubhf8"), &"jump_start": SubResource("Animation_ubhf8"),
&"mantle": SubResource("Animation_8abgy") &"mantle": SubResource("Animation_8abgy"),
&"parry": SubResource("Animation_ll12k")
} }
[node name="HeadSystem" type="Node3D" unique_id=2067407038] [node name="HeadSystem" type="Node3D" unique_id=2067407038]
@@ -399,6 +669,12 @@ transform = Transform3D(1, 0, 0, 0, 0.99999994, 0, 0, 0, 1, 0, 0, 0)
cast_shadow = 0 cast_shadow = 0
mesh = ExtResource("2_c5qep") mesh = ExtResource("2_c5qep")
[node name="Parry" type="Node3D" parent="FPRig" unique_id=1218775403]
transform = Transform3D(0.43521196, -1.1178209, 0.03266725, -0.65402746, -0.2828554, -0.96552634, 0.9071047, 0.33236945, -0.711823, -0.22145952, -0.19867475, -1.3653086)
[node name="ParryMesh" type="MeshInstance3D" parent="FPRig/Parry" unique_id=1993291456]
mesh = ExtResource("3_1ay6d")
[node name="CameraSmooth" type="Node3D" parent="." unique_id=2072010960] [node name="CameraSmooth" type="Node3D" parent="." unique_id=2072010960]
transform = Transform3D(0.9999998, -0.00011616429, 0, 0.00011616431, 0.99999964, 0, 0, 0, 0.99999976, 0, 0, 0) transform = Transform3D(0.9999998, -0.00011616429, 0, 0.00011616431, 0.99999964, 0, 0, 0, 0.99999976, 0, 0, 0)
@@ -451,6 +727,9 @@ parameters/OnMantle/request = 0
parameters/OnDie/active = false parameters/OnDie/active = false
parameters/OnDie/internal_active = false parameters/OnDie/internal_active = false
parameters/OnDie/request = 0 parameters/OnDie/request = 0
parameters/OnParry/active = false
parameters/OnParry/internal_active = false
parameters/OnParry/request = 0
[connection signal="GotHit" from="." to="CameraSmooth/Camera3D/OnGetHitShaker" method="play_shake"] [connection signal="GotHit" from="." to="CameraSmooth/Camera3D/OnGetHitShaker" method="play_shake"]
[connection signal="HitTarget" from="." to="CameraSmooth/Camera3D/OnHitShaker" method="play_shake"] [connection signal="HitTarget" from="." to="CameraSmooth/Camera3D/OnHitShaker" method="play_shake"]