initial commit
@@ -0,0 +1,4 @@
|
|||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# Normalize EOL for all files that Git considers text files.
|
||||||
|
* text=auto eol=lf
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Godot 4.2+ specific ignores
|
||||||
|
~*.dll
|
||||||
|
|
||||||
|
# Godot 4+ specific ignores
|
||||||
|
.godot/
|
||||||
|
.nomedia
|
||||||
|
/android/
|
||||||
|
|
||||||
|
# Godot-specific ignores
|
||||||
|
.import/
|
||||||
|
export.cfg
|
||||||
|
export_credentials.cfg
|
||||||
|
*.tmp
|
||||||
|
|
||||||
|
# Imported translations (automatically generated from CSV files)
|
||||||
|
*.translation
|
||||||
|
|
||||||
|
# Mono-specific ignores
|
||||||
|
.mono/
|
||||||
|
data_*/
|
||||||
|
mono_crash.*.json
|
||||||
|
After Width: | Height: | Size: 341 B |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://ds15hhsmjp3wc"
|
||||||
|
path="res://.godot/imported/stopwatch.png-b73c158978363763d92060f75a79b335.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/images/collectables/stopwatch.png"
|
||||||
|
dest_files=["res://.godot/imported/stopwatch.png-b73c158978363763d92060f75a79b335.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
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<rect x="8" y="10" width="16" height="16" rx="8" stroke="black" stroke-width="2"/>
|
||||||
|
<rect x="13" y="5" width="6" height="2" rx="1" fill="black"/>
|
||||||
|
<rect x="15" y="7" width="2" height="3" fill="black" fill-opacity="0.5"/>
|
||||||
|
<rect x="15" y="12" width="2" height="7" rx="1" fill="black"/>
|
||||||
|
<path d="M25.5 6C26.0523 6 26.5 6.44772 26.5 7V8.5H28C28.5523 8.5 29 8.94772 29 9.5C29 10.0523 28.5523 10.5 28 10.5H26.5V12C26.5 12.5523 26.0523 13 25.5 13C24.9477 13 24.5 12.5523 24.5 12V10.5H23C22.4477 10.5 22 10.0523 22 9.5C22 8.94772 22.4477 8.5 23 8.5H24.5V7C24.5 6.44772 24.9477 6 25.5 6Z" fill="black" fill-opacity="0.5"/>
|
||||||
|
<rect x="18.9623" y="15.135" width="2" height="4.99976" rx="1" transform="rotate(60 18.9623 15.135)" fill="black" fill-opacity="0.5"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 850 B |
@@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://desgj7lpexej7"
|
||||||
|
path="res://.godot/imported/stopwatch.svg-d39e3bbf3360b8ba0da7f6682c867797.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/images/collectables/stopwatch.svg"
|
||||||
|
dest_files=["res://.godot/imported/stopwatch.svg-d39e3bbf3360b8ba0da7f6682c867797.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
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=false
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0_16_2)">
|
||||||
|
<path d="M0 0L24 24L0 48V0Z" fill="white"/>
|
||||||
|
<path d="M24 0L48 24L24 48V0Z" fill="white"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_16_2">
|
||||||
|
<rect width="48" height="48" fill="white"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 329 B |
@@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://jscv4dmprutv"
|
||||||
|
path="res://.godot/imported/fastforward.svg-776e438727ff9eb49cd6794099a316cc.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/images/fastforward.svg"
|
||||||
|
dest_files=["res://.godot/imported/fastforward.svg-776e438727ff9eb49cd6794099a316cc.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
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=false
|
||||||
|
After Width: | Height: | Size: 10 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dbhwfxaqgogb3"
|
||||||
|
path="res://.godot/imported/gmtk-big.png-e7f9d1fe32a9dff7a88ad795779254e5.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/images/gmtk-big.png"
|
||||||
|
dest_files=["res://.godot/imported/gmtk-big.png-e7f9d1fe32a9dff7a88ad795779254e5.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
|
||||||
|
After Width: | Height: | Size: 33 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bt1fcckct5jax"
|
||||||
|
path="res://.godot/imported/gmtk.png-4143279bc1d6229b2e928421b7571d76.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/images/gmtk.png"
|
||||||
|
dest_files=["res://.godot/imported/gmtk.png-4143279bc1d6229b2e928421b7571d76.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
|
||||||
|
After Width: | Height: | Size: 12 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cs35h4es4e6p"
|
||||||
|
path="res://.godot/imported/gun1.png-bcc67654ab25c4fcc7aa1feec09a7a23.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/images/gun1.png"
|
||||||
|
dest_files=["res://.godot/imported/gun1.png-bcc67654ab25c4fcc7aa1feec09a7a23.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
|
||||||
|
After Width: | Height: | Size: 177 B |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://c3o7a2w3qyl4o"
|
||||||
|
path="res://.godot/imported/tile.png-4df97e3230f905e3df311a6634fd05fa.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/images/tile.png"
|
||||||
|
dest_files=["res://.godot/imported/tile.png-4df97e3230f905e3df311a6634fd05fa.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
|
||||||
|
After Width: | Height: | Size: 296 B |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://chofj1gn6jmyo"
|
||||||
|
path="res://.godot/imported/dashMachine.png-4142366c59d759e31ffe1366516e3ec0.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/images/upgrades/dashMachine.png"
|
||||||
|
dest_files=["res://.godot/imported/dashMachine.png-4142366c59d759e31ffe1366516e3ec0.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
|
||||||
|
After Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bigxhnmrmsg45"
|
||||||
|
path="res://.godot/imported/dumbbell.png-98fb91e608348a61cf93c5a7ae31c0f9.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/images/upgrades/dumbbell.png"
|
||||||
|
dest_files=["res://.godot/imported/dumbbell.png-98fb91e608348a61cf93c5a7ae31c0f9.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
|
||||||
|
After Width: | Height: | Size: 570 B |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cos44i12og7um"
|
||||||
|
path="res://.godot/imported/fasterFaster.png-298b6d01ba61ae4d886203968f54bd8f.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/images/upgrades/fasterFaster.png"
|
||||||
|
dest_files=["res://.godot/imported/fasterFaster.png-298b6d01ba61ae4d886203968f54bd8f.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
|
||||||
|
After Width: | Height: | Size: 249 B |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dtagaj8hyg6jd"
|
||||||
|
path="res://.godot/imported/firstAidKit.png-86f212f827658f2a63efa6133d4fd802.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/images/upgrades/firstAidKit.png"
|
||||||
|
dest_files=["res://.godot/imported/firstAidKit.png-86f212f827658f2a63efa6133d4fd802.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
|
||||||
|
After Width: | Height: | Size: 369 B |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://c3ltcwyo4wyml"
|
||||||
|
path="res://.godot/imported/rollback.png-fdeb88a75bb46b60d2a7e4f7908d1408.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/images/upgrades/rollback.png"
|
||||||
|
dest_files=["res://.godot/imported/rollback.png-fdeb88a75bb46b60d2a7e4f7908d1408.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
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://pb14cjjw7aa8"
|
||||||
|
path="res://.godot/imported/shotgun.png-576d03dc02854eb9a3e096114794bd2d.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/images/upgrades/shotgun.png"
|
||||||
|
dest_files=["res://.godot/imported/shotgun.png-576d03dc02854eb9a3e096114794bd2d.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
|
||||||
|
After Width: | Height: | Size: 784 B |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bo1pub5cp7i6"
|
||||||
|
path="res://.godot/imported/speedMayhem.png-f15c5bd3653d92af6a0b24ee98d2a75e.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/images/upgrades/speedMayhem.png"
|
||||||
|
dest_files=["res://.godot/imported/speedMayhem.png-f15c5bd3653d92af6a0b24ee98d2a75e.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
|
||||||
|
After Width: | Height: | Size: 285 B |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dx77bwsgen5o3"
|
||||||
|
path="res://.godot/imported/thoseWereTheDays.png-d1a0fcf468b867a6098b247d6eb71447.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/images/upgrades/thoseWereTheDays.png"
|
||||||
|
dest_files=["res://.godot/imported/thoseWereTheDays.png-d1a0fcf468b867a6098b247d6eb71447.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
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
[gd_scene format=3 uid="uid://d1ta1nxbedqad"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://ca8an62xpl0e4" path="res://assets/scripts/disposableParticles.gd" id="1_16fqk"]
|
||||||
|
|
||||||
|
[sub_resource type="Curve" id="Curve_xyegg"]
|
||||||
|
_data = [Vector2(0.49822062, 0.99999994), 0.0, 0.0, 0, 0, Vector2(0.99644125, 0), 0.0, 0.0, 0, 0]
|
||||||
|
point_count = 2
|
||||||
|
|
||||||
|
[sub_resource type="Gradient" id="Gradient_pymst"]
|
||||||
|
offsets = PackedFloat32Array(0, 0.68235296, 0.9882353)
|
||||||
|
colors = PackedColorArray(1, 1, 1, 1, 0.6, 0.6, 0.6, 1, 1, 1, 1, 0)
|
||||||
|
|
||||||
|
[node name="Blood" type="CPUParticles2D" unique_id=1387158673]
|
||||||
|
z_index = -1
|
||||||
|
emitting = false
|
||||||
|
amount = 10
|
||||||
|
lifetime = 5.0
|
||||||
|
one_shot = true
|
||||||
|
explosiveness = 1.0
|
||||||
|
spread = 180.0
|
||||||
|
gravity = Vector2(0, 0)
|
||||||
|
initial_velocity_min = 20.0
|
||||||
|
initial_velocity_max = 50.0
|
||||||
|
linear_accel_min = -50.0
|
||||||
|
linear_accel_max = -20.0
|
||||||
|
angle_min = -180.0
|
||||||
|
angle_max = 180.0
|
||||||
|
scale_amount_min = 4.0
|
||||||
|
scale_amount_max = 6.0
|
||||||
|
scale_amount_curve = SubResource("Curve_xyegg")
|
||||||
|
color = Color(0.89, 0, 0, 1)
|
||||||
|
color_ramp = SubResource("Gradient_pymst")
|
||||||
|
script = ExtResource("1_16fqk")
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
[gd_scene format=3 uid="uid://crv0gs7xtegi4"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://iwxi6s8i6j81" path="res://assets/scripts/enemy.gd" id="1_5q6ol"]
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_kvq5h"]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Polygon2D:scale")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(1, 1)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_kbpvo"]
|
||||||
|
resource_name = "shoot"
|
||||||
|
length = 0.4
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Polygon2D:scale")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.1, 0.4),
|
||||||
|
"transitions": PackedFloat32Array(0.13869622, 2, 0.73204285),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(1, 1), Vector2(0.5, 1.2), Vector2(1, 1)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_55kjn"]
|
||||||
|
_data = {
|
||||||
|
&"RESET": SubResource("Animation_kvq5h"),
|
||||||
|
&"shoot": SubResource("Animation_kbpvo")
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="Enemy" type="CharacterBody2D" unique_id=1421049985]
|
||||||
|
script = ExtResource("1_5q6ol")
|
||||||
|
|
||||||
|
[node name="Polygon2D" type="Polygon2D" parent="." unique_id=274914633]
|
||||||
|
position = Vector2(-13, 0)
|
||||||
|
rotation = 1.5707964
|
||||||
|
color = Color(0, 0.3333335, 1, 1)
|
||||||
|
polygon = PackedVector2Array(-15, 0, 15, 0, 0, -30)
|
||||||
|
|
||||||
|
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="." unique_id=1346650607]
|
||||||
|
visible = false
|
||||||
|
polygon = PackedVector2Array(-16, 15, -16, -15, 14, 0)
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1072188506]
|
||||||
|
libraries/ = SubResource("AnimationLibrary_55kjn")
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
[gd_scene format=3 uid="uid://etjisg8welsn"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://bemc80xgvtkd4" path="res://assets/scripts/enemy_bullet.gd" id="1_ptxui"]
|
||||||
|
|
||||||
|
[sub_resource type="SphereMesh" id="SphereMesh_xyegg"]
|
||||||
|
radius = 5.0
|
||||||
|
height = 10.0
|
||||||
|
|
||||||
|
[sub_resource type="CircleShape2D" id="CircleShape2D_c3msa"]
|
||||||
|
radius = 5.0
|
||||||
|
|
||||||
|
[node name="EnemyBullet" type="CharacterBody2D" unique_id=822797430]
|
||||||
|
z_index = 1
|
||||||
|
collision_layer = 2
|
||||||
|
collision_mask = 2
|
||||||
|
script = ExtResource("1_ptxui")
|
||||||
|
|
||||||
|
[node name="MeshInstance2D" type="MeshInstance2D" parent="." unique_id=903508644]
|
||||||
|
modulate = Color(0.6156863, 0, 1, 1)
|
||||||
|
mesh = SubResource("SphereMesh_xyegg")
|
||||||
|
|
||||||
|
[node name="hitme" type="Area2D" parent="." unique_id=194049910]
|
||||||
|
collision_layer = 2
|
||||||
|
collision_mask = 2
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="hitme" unique_id=711740605]
|
||||||
|
shape = SubResource("CircleShape2D_c3msa")
|
||||||
|
|
||||||
|
[connection signal="area_entered" from="hitme" to="." method="_on_area_entered"]
|
||||||
|
[connection signal="body_entered" from="hitme" to="." method="_on_body_entered"]
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
[gd_scene format=3 uid="uid://bjrqlhik55h8o"]
|
||||||
|
|
||||||
|
[ext_resource type="AudioStream" uid="uid://b7gupw3d7sfho" path="res://assets/sounds/explosion.wav" id="1_7lrd8"]
|
||||||
|
[ext_resource type="Script" uid="uid://ctjyxuafayafk" path="res://assets/scripts/explosionsfx.gd" id="2_458cp"]
|
||||||
|
|
||||||
|
[node name="ExplosionSFX" type="AudioStreamPlayer2D" unique_id=427221510]
|
||||||
|
stream = ExtResource("1_7lrd8")
|
||||||
|
autoplay = true
|
||||||
|
script = ExtResource("2_458cp")
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
[gd_scene format=3 uid="uid://dfwhpkgf77e5y"]
|
||||||
|
|
||||||
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_xyegg"]
|
||||||
|
size = Vector2(30, 30)
|
||||||
|
|
||||||
|
[sub_resource type="BoxMesh" id="BoxMesh_xyegg"]
|
||||||
|
size = Vector3(24, 24, 1)
|
||||||
|
|
||||||
|
[sub_resource type="Curve" id="Curve_xyegg"]
|
||||||
|
_data = [Vector2(0.41992885, 1), 0.0, 0.0, 0, 0, Vector2(1, 0.038095236), 0.0, 0.0, 0, 0]
|
||||||
|
point_count = 2
|
||||||
|
|
||||||
|
[node name="Pickupable" type="Area2D" unique_id=448556835]
|
||||||
|
collision_layer = 2
|
||||||
|
collision_mask = 2
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=2069397373]
|
||||||
|
shape = SubResource("RectangleShape2D_xyegg")
|
||||||
|
|
||||||
|
[node name="mainmesh" type="MeshInstance2D" parent="." unique_id=1578928066]
|
||||||
|
modulate = Color(4.415934, 4.415934, 4.415934, 1)
|
||||||
|
mesh = SubResource("BoxMesh_xyegg")
|
||||||
|
|
||||||
|
[node name="particles" type="CPUParticles2D" parent="." unique_id=871258801]
|
||||||
|
z_index = -1
|
||||||
|
emitting = false
|
||||||
|
amount = 30
|
||||||
|
lifetime = 10.0
|
||||||
|
one_shot = true
|
||||||
|
explosiveness = 1.0
|
||||||
|
spread = 180.0
|
||||||
|
gravity = Vector2(0, 0)
|
||||||
|
initial_velocity_min = 50.0
|
||||||
|
initial_velocity_max = 100.0
|
||||||
|
linear_accel_min = -100.0
|
||||||
|
linear_accel_max = -100.0
|
||||||
|
scale_amount_min = 3.0
|
||||||
|
scale_amount_max = 6.0
|
||||||
|
scale_amount_curve = SubResource("Curve_xyegg")
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
[gd_scene format=3 uid="uid://bqla58648mj8x"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dfwhpkgf77e5y" path="res://assets/scenes/pickupable.tscn" id="1_paivl"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://ds15hhsmjp3wc" path="res://assets/images/collectables/stopwatch.png" id="2_g8182"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://desgj7lpexej7" path="res://assets/images/collectables/stopwatch.svg" id="3_fb1sx"]
|
||||||
|
|
||||||
|
[node name="Pickupable" unique_id=448556835 instance=ExtResource("1_paivl")]
|
||||||
|
metadata/pickup = 1
|
||||||
|
|
||||||
|
[node name="mainmesh" parent="." index="1" unique_id=1578928066]
|
||||||
|
modulate = Color(0.53800005, 1, 0.16000003, 1)
|
||||||
|
|
||||||
|
[node name="Stopwatch" type="Sprite2D" parent="." index="2" unique_id=1633947504]
|
||||||
|
visible = false
|
||||||
|
texture = ExtResource("2_g8182")
|
||||||
|
|
||||||
|
[node name="particles" parent="." index="3" unique_id=871258801]
|
||||||
|
color = Color(0.5372549, 1, 0.16078432, 1)
|
||||||
|
|
||||||
|
[node name="Stopwatch2" type="Sprite2D" parent="." index="4" unique_id=2549464]
|
||||||
|
scale = Vector2(0.75, 0.75)
|
||||||
|
texture = ExtResource("3_fb1sx")
|
||||||
@@ -0,0 +1,175 @@
|
|||||||
|
[gd_scene format=3 uid="uid://bwlwbahelcq52"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://dbofvk7fso8po" path="res://assets/scripts/player.gd" id="1_rwm0n"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cs35h4es4e6p" path="res://assets/images/gun1.png" id="2_s027a"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://c3o7a2w3qyl4o" path="res://assets/images/tile.png" id="3_14505"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://de4sr2qpjr1w2" path="res://assets/sounds/shoot.wav" id="4_4wcc8"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://5b7eonllfufp" path="res://assets/sounds/hitHurt.wav" id="5_8sknh"]
|
||||||
|
[ext_resource type="Script" uid="uid://ca8an62xpl0e4" path="res://assets/scripts/disposableParticles.gd" id="6_0gfpk"]
|
||||||
|
|
||||||
|
[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_0gfpk"]
|
||||||
|
light_mode = 1
|
||||||
|
|
||||||
|
[sub_resource type="BoxMesh" id="BoxMesh_xyegg"]
|
||||||
|
size = Vector3(31, 31, 1)
|
||||||
|
|
||||||
|
[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_14505"]
|
||||||
|
light_mode = 1
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_s027a"]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("gun:scale")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(1, 1)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_14505"]
|
||||||
|
resource_name = "shoot"
|
||||||
|
length = 0.4
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("gun:scale")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.1, 0.4),
|
||||||
|
"transitions": PackedFloat32Array(0.13869628, 2.0000021, 0.7320437),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(1, 1), Vector2(1.2, 0.5), Vector2(1, 1)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_4wcc8"]
|
||||||
|
resource_name = "shoot_flip"
|
||||||
|
length = 0.4
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("gun:scale")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.1, 0.4),
|
||||||
|
"transitions": PackedFloat32Array(0.13869628, 2.0000021, 0.7320437),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(1, -1), Vector2(1.2, -0.5), Vector2(1, -1)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_4wcc8"]
|
||||||
|
_data = {
|
||||||
|
&"RESET": SubResource("Animation_s027a"),
|
||||||
|
&"shoot": SubResource("Animation_14505"),
|
||||||
|
&"shoot_flip": SubResource("Animation_4wcc8")
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_xyegg"]
|
||||||
|
size = Vector2(31, 31)
|
||||||
|
|
||||||
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_pymst"]
|
||||||
|
size = Vector2(24, 24)
|
||||||
|
|
||||||
|
[sub_resource type="Curve" id="Curve_14505"]
|
||||||
|
_data = [Vector2(0.66548043, 0.9809523), 0.0, 0.0, 0, 0, Vector2(1, 0.009523869), 0.0, 0.0, 0, 0]
|
||||||
|
point_count = 2
|
||||||
|
|
||||||
|
[sub_resource type="Gradient" id="Gradient_4wcc8"]
|
||||||
|
offsets = PackedFloat32Array(0.8745098, 1)
|
||||||
|
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0)
|
||||||
|
|
||||||
|
[node name="Player" type="CharacterBody2D" unique_id=1190467346]
|
||||||
|
script = ExtResource("1_rwm0n")
|
||||||
|
|
||||||
|
[node name="ColorRect" type="ColorRect" parent="." unique_id=1343075480]
|
||||||
|
visible = false
|
||||||
|
offset_left = -16.0
|
||||||
|
offset_top = -16.0
|
||||||
|
offset_right = 15.0
|
||||||
|
offset_bottom = 15.0
|
||||||
|
color = Color(1, 0, 0, 1)
|
||||||
|
|
||||||
|
[node name="Polygon2D" type="Polygon2D" parent="." unique_id=982630085]
|
||||||
|
material = SubResource("CanvasItemMaterial_0gfpk")
|
||||||
|
position = Vector2(-0.5, -0.5)
|
||||||
|
color = Color(1, 0, 0, 1)
|
||||||
|
polygon = PackedVector2Array(-15, -15, 16, -15, 16, 16, -15, 16)
|
||||||
|
|
||||||
|
[node name="MeshInstance2D" type="MeshInstance2D" parent="." unique_id=1817854395]
|
||||||
|
modulate = Color(0, 0, 0, 0.2509804)
|
||||||
|
mesh = SubResource("BoxMesh_xyegg")
|
||||||
|
|
||||||
|
[node name="Camera2D" type="Camera2D" parent="." unique_id=641690279]
|
||||||
|
position_smoothing_enabled = true
|
||||||
|
|
||||||
|
[node name="gun" type="Node2D" parent="." unique_id=1991256638]
|
||||||
|
|
||||||
|
[node name="sprite" type="Sprite2D" parent="gun" unique_id=404962107]
|
||||||
|
material = SubResource("CanvasItemMaterial_14505")
|
||||||
|
scale = Vector2(2, 2)
|
||||||
|
texture = ExtResource("2_s027a")
|
||||||
|
region_enabled = true
|
||||||
|
region_rect = Rect2(0, 112, 16, 16)
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=993544515]
|
||||||
|
libraries/ = SubResource("AnimationLibrary_4wcc8")
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=266552910]
|
||||||
|
visible = false
|
||||||
|
shape = SubResource("RectangleShape2D_xyegg")
|
||||||
|
|
||||||
|
[node name="hitbox" type="Area2D" parent="." unique_id=1769955622 groups=["playerHitbox"]]
|
||||||
|
visible = false
|
||||||
|
collision_layer = 2
|
||||||
|
collision_mask = 2
|
||||||
|
metadata/playerHitbox = 1
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="hitbox" unique_id=929455950]
|
||||||
|
shape = SubResource("RectangleShape2D_pymst")
|
||||||
|
debug_color = Color(0.37601954, 0.6145431, 0, 0.41960785)
|
||||||
|
|
||||||
|
[node name="PointLight2D" type="PointLight2D" parent="." unique_id=1388686543]
|
||||||
|
scale = Vector2(50, 50)
|
||||||
|
shadow_enabled = true
|
||||||
|
shadow_color = Color(0, 0, 0, 1)
|
||||||
|
texture = ExtResource("3_14505")
|
||||||
|
|
||||||
|
[node name="Timer" type="Timer" parent="." unique_id=1120887048]
|
||||||
|
wait_time = 0.05
|
||||||
|
autostart = true
|
||||||
|
ignore_time_scale = true
|
||||||
|
|
||||||
|
[node name="explode" type="CPUParticles2D" parent="." unique_id=1217002006]
|
||||||
|
z_index = -3
|
||||||
|
emitting = false
|
||||||
|
amount = 20
|
||||||
|
lifetime = 10.0
|
||||||
|
one_shot = true
|
||||||
|
explosiveness = 1.0
|
||||||
|
spread = 180.0
|
||||||
|
gravity = Vector2(0, 0)
|
||||||
|
initial_velocity_min = 20.0
|
||||||
|
initial_velocity_max = 50.0
|
||||||
|
linear_accel_min = -25.0
|
||||||
|
linear_accel_max = -25.0
|
||||||
|
scale_amount_min = 8.0
|
||||||
|
scale_amount_max = 16.0
|
||||||
|
scale_amount_curve = SubResource("Curve_14505")
|
||||||
|
color = Color(1, 0, 0, 1)
|
||||||
|
color_ramp = SubResource("Gradient_4wcc8")
|
||||||
|
script = ExtResource("6_0gfpk")
|
||||||
|
|
||||||
|
[node name="shootsfx" type="AudioStreamPlayer2D" parent="." unique_id=853884099]
|
||||||
|
stream = ExtResource("4_4wcc8")
|
||||||
|
|
||||||
|
[node name="hitsfx" type="AudioStreamPlayer2D" parent="." unique_id=640571283]
|
||||||
|
stream = ExtResource("5_8sknh")
|
||||||
|
|
||||||
|
[connection signal="area_entered" from="hitbox" to="." method="_on_hitbox_area_entered"]
|
||||||
|
[connection signal="timeout" from="Timer" to="." method="_on_framesave_timeout"]
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
[gd_scene format=3 uid="uid://7d67o6b6fcut"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://etjisg8welsn" path="res://assets/scenes/enemyBullet.tscn" id="1_3t5k8"]
|
||||||
|
[ext_resource type="Script" uid="uid://dnxmn06yejksk" path="res://assets/scripts/player_bullet.gd" id="2_qweep"]
|
||||||
|
|
||||||
|
[node name="EnemyBullet" unique_id=822797430 instance=ExtResource("1_3t5k8")]
|
||||||
|
z_index = 1
|
||||||
|
script = ExtResource("2_qweep")
|
||||||
|
|
||||||
|
[node name="MeshInstance2D" parent="." index="0" unique_id=903508644]
|
||||||
|
modulate = Color(1, 0, 0, 1)
|
||||||
|
|
||||||
|
[node name="hitme" parent="." index="1" unique_id=194049910]
|
||||||
|
z_index = 1
|
||||||
|
collision_layer = 16
|
||||||
|
collision_mask = 16
|
||||||
@@ -0,0 +1,213 @@
|
|||||||
|
[gd_scene format=3 uid="uid://bjptrvvfk00r"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://iwxi6s8i6j81" path="res://assets/scripts/enemy.gd" id="1_kvq5h"]
|
||||||
|
[ext_resource type="Script" uid="uid://ca8an62xpl0e4" path="res://assets/scripts/disposableParticles.gd" id="2_7yqym"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://5b7eonllfufp" path="res://assets/sounds/hitHurt.wav" id="2_ag6wx"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://d3ok8rhcq4kmr" path="res://assets/sounds/shootEnemy.wav" id="3_yw082"]
|
||||||
|
|
||||||
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_xyegg"]
|
||||||
|
size = Vector2(30, 30)
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_kvq5h"]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Polygon2D:scale")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(1, 1)]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("Polygon2D:rotation")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [1.5707964]
|
||||||
|
}
|
||||||
|
tracks/2/type = "value"
|
||||||
|
tracks/2/imported = false
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("Polygon2D:color")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Color(0.6166668, 0, 1, 1)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_ag6wx"]
|
||||||
|
resource_name = "flash"
|
||||||
|
length = 0.5
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = false
|
||||||
|
tracks/0/path = NodePath("Polygon2D:color")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0.06666667, 0.16666667, 0.3),
|
||||||
|
"transitions": PackedFloat32Array(3.605001, 3.732124, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Color(0.6166668, 0, 1, 1), Color(1, 1, 1, 1), Color(0.6156863, 0, 1, 1)]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("Polygon2D:scale")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.13333334, 0.5),
|
||||||
|
"transitions": PackedFloat32Array(4.1410594, 0.34151012, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(1, 1), Vector2(0.3, 0.3), Vector2(1, 1)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_kbpvo"]
|
||||||
|
resource_name = "shoot"
|
||||||
|
length = 0.4
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Polygon2D:scale")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.1, 0.4),
|
||||||
|
"transitions": PackedFloat32Array(0.13869622, 2, 0.73204285),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(1, 1), Vector2(1.2, 0.5), Vector2(1, 1)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_fg8cn"]
|
||||||
|
resource_name = "spawn"
|
||||||
|
length = 0.8
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Polygon2D:scale")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.33333334, 0.8),
|
||||||
|
"transitions": PackedFloat32Array(0.36602157, 1.0352651, 3.1383355),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(0, 0), Vector2(1.25, 1.25), Vector2(1, 1)]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("Polygon2D:rotation")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.6),
|
||||||
|
"transitions": PackedFloat32Array(1.8025008, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [0.0, 1.5707963267948966]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_55kjn"]
|
||||||
|
_data = {
|
||||||
|
&"RESET": SubResource("Animation_kvq5h"),
|
||||||
|
&"flash": SubResource("Animation_ag6wx"),
|
||||||
|
&"shoot": SubResource("Animation_kbpvo"),
|
||||||
|
&"spawn": SubResource("Animation_fg8cn")
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Curve" id="Curve_xyegg"]
|
||||||
|
_data = [Vector2(0.66548043, 0.9809523), 0.0, 0.0, 0, 0, Vector2(1, 0.009523869), 0.0, 0.0, 0, 0]
|
||||||
|
point_count = 2
|
||||||
|
|
||||||
|
[sub_resource type="Gradient" id="Gradient_pymst"]
|
||||||
|
offsets = PackedFloat32Array(0, 0.69411767, 0.69803923, 0.8745098, 1)
|
||||||
|
colors = PackedColorArray(1, 1, 1, 1, 0.48555556, 0.48555556, 0.48555556, 1, 0.46, 0.46, 0.46, 1, 0.51, 0.51, 0.51, 1, 1, 1, 1, 0)
|
||||||
|
|
||||||
|
[node name="Enemy" type="CharacterBody2D" unique_id=1421049985]
|
||||||
|
collision_layer = 16
|
||||||
|
collision_mask = 16
|
||||||
|
script = ExtResource("1_kvq5h")
|
||||||
|
metadata/enemy = 1
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1723115153]
|
||||||
|
visible = false
|
||||||
|
shape = SubResource("RectangleShape2D_xyegg")
|
||||||
|
|
||||||
|
[node name="Polygon2D" type="Polygon2D" parent="." unique_id=274914633]
|
||||||
|
rotation = 1.5707964
|
||||||
|
color = Color(0.6166668, 0, 1, 1)
|
||||||
|
polygon = PackedVector2Array(-14.999999, 15.000001, -14.999999, 15.000001, -15.000001, -14.999999, 14.999999, -15.000001, 15.000001, 14.999999)
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1072188506]
|
||||||
|
libraries/ = SubResource("AnimationLibrary_55kjn")
|
||||||
|
|
||||||
|
[node name="NavigationAgent2D" type="NavigationAgent2D" parent="." unique_id=1305506168]
|
||||||
|
|
||||||
|
[node name="Timer" type="Timer" parent="." unique_id=437715343]
|
||||||
|
wait_time = 0.1
|
||||||
|
autostart = true
|
||||||
|
|
||||||
|
[node name="RayCast2D" type="RayCast2D" parent="." unique_id=957428599]
|
||||||
|
target_position = Vector2(400, 0)
|
||||||
|
collision_mask = 512
|
||||||
|
|
||||||
|
[node name="explode" type="CPUParticles2D" parent="." unique_id=1638487851]
|
||||||
|
z_index = -3
|
||||||
|
emitting = false
|
||||||
|
amount = 20
|
||||||
|
lifetime = 10.0
|
||||||
|
one_shot = true
|
||||||
|
explosiveness = 1.0
|
||||||
|
spread = 180.0
|
||||||
|
gravity = Vector2(0, 0)
|
||||||
|
initial_velocity_min = 20.0
|
||||||
|
initial_velocity_max = 50.0
|
||||||
|
linear_accel_min = -25.0
|
||||||
|
linear_accel_max = -25.0
|
||||||
|
scale_amount_min = 8.0
|
||||||
|
scale_amount_max = 16.0
|
||||||
|
scale_amount_curve = SubResource("Curve_xyegg")
|
||||||
|
color = Color(0.45342964, 0.0022321118, 0.7445152, 1)
|
||||||
|
color_ramp = SubResource("Gradient_pymst")
|
||||||
|
script = ExtResource("2_7yqym")
|
||||||
|
|
||||||
|
[node name="ColorRect" type="ColorRect" parent="." unique_id=1205892242]
|
||||||
|
offset_left = -15.0
|
||||||
|
offset_top = -21.0
|
||||||
|
offset_right = 15.0
|
||||||
|
offset_bottom = -18.0
|
||||||
|
color = Color(1, 1, 1, 0.2509804)
|
||||||
|
|
||||||
|
[node name="health" type="ColorRect" parent="." unique_id=1962272317]
|
||||||
|
offset_left = -15.0
|
||||||
|
offset_top = -21.0
|
||||||
|
offset_right = 15.0
|
||||||
|
offset_bottom = -18.0
|
||||||
|
color = Color(0.8124417, 0, 0.111754455, 1)
|
||||||
|
|
||||||
|
[node name="hitsfx" type="AudioStreamPlayer2D" parent="." unique_id=2128530763]
|
||||||
|
stream = ExtResource("2_ag6wx")
|
||||||
|
|
||||||
|
[node name="shootsfx" type="AudioStreamPlayer2D" parent="." unique_id=408136521]
|
||||||
|
stream = ExtResource("3_yw082")
|
||||||
|
volume_db = -10.0
|
||||||
|
|
||||||
|
[node name="snappie" type="Timer" parent="." unique_id=807725500]
|
||||||
|
wait_time = 0.05
|
||||||
|
autostart = true
|
||||||
|
ignore_time_scale = true
|
||||||
|
|
||||||
|
[connection signal="timeout" from="Timer" to="." method="_on_new_path"]
|
||||||
|
[connection signal="timeout" from="snappie" to="." method="_on_snappie_timeout"]
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
[gd_scene format=3 uid="uid://dixc62oses4hl"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://chofj1gn6jmyo" path="res://assets/images/upgrades/dashMachine.png" id="1_efxjv"]
|
||||||
|
[ext_resource type="Script" uid="uid://b3rft2lmj60k0" path="res://assets/scripts/upgrade_ui.gd" id="1_v2t1u"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://dt154t2aall5d" path="res://assets/sounds/break.wav" id="3_64vnu"]
|
||||||
|
|
||||||
|
[sub_resource type="LabelSettings" id="LabelSettings_xyegg"]
|
||||||
|
|
||||||
|
[sub_resource type="Curve" id="Curve_xyegg"]
|
||||||
|
_data = [Vector2(0.5017794, 0.99047613), 0.0, 0.0, 0, 0, Vector2(1, 0.019047618), 0.0, 0.0, 0, 0]
|
||||||
|
point_count = 2
|
||||||
|
|
||||||
|
[node name="Control2" type="Control" unique_id=1424148917]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 0
|
||||||
|
offset_right = 48.0
|
||||||
|
offset_bottom = 48.0
|
||||||
|
script = ExtResource("1_v2t1u")
|
||||||
|
|
||||||
|
[node name="goldrect" type="ColorRect" parent="." unique_id=140383699]
|
||||||
|
visible = false
|
||||||
|
layout_mode = 0
|
||||||
|
offset_right = 48.0
|
||||||
|
offset_bottom = 48.0
|
||||||
|
color = Color(0.8, 0.6, 0, 1)
|
||||||
|
|
||||||
|
[node name="texture" type="TextureRect" parent="." unique_id=1844486601]
|
||||||
|
modulate = Color(1, 1, 1, 0)
|
||||||
|
layout_mode = 0
|
||||||
|
offset_right = 48.0
|
||||||
|
offset_bottom = 48.0
|
||||||
|
scale = Vector2(0.3, 0.3)
|
||||||
|
pivot_offset_ratio = Vector2(0.5, 0.5)
|
||||||
|
texture = ExtResource("1_efxjv")
|
||||||
|
|
||||||
|
[node name="progress" type="ColorRect" parent="." unique_id=1719328911]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 48.0
|
||||||
|
offset_right = 48.0
|
||||||
|
offset_bottom = 48.0
|
||||||
|
pivot_offset_ratio = Vector2(1, 0)
|
||||||
|
color = Color(0, 0, 0, 0.2509804)
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="." unique_id=568341339]
|
||||||
|
layout_mode = 1
|
||||||
|
offset_top = 25.0
|
||||||
|
offset_right = 48.0
|
||||||
|
offset_bottom = 48.0
|
||||||
|
pivot_offset_ratio = Vector2(1, 0)
|
||||||
|
text = "x1"
|
||||||
|
label_settings = SubResource("LabelSettings_xyegg")
|
||||||
|
horizontal_alignment = 2
|
||||||
|
|
||||||
|
[node name="particles" type="CPUParticles2D" parent="." unique_id=1967275328]
|
||||||
|
position = Vector2(24, 24)
|
||||||
|
emitting = false
|
||||||
|
one_shot = true
|
||||||
|
explosiveness = 1.0
|
||||||
|
spread = 180.0
|
||||||
|
gravity = Vector2(0, 0)
|
||||||
|
initial_velocity_min = 300.0
|
||||||
|
initial_velocity_max = 500.0
|
||||||
|
linear_accel_min = -500.0
|
||||||
|
linear_accel_max = -300.0
|
||||||
|
scale_amount_min = 4.0
|
||||||
|
scale_amount_max = 8.0
|
||||||
|
scale_amount_curve = SubResource("Curve_xyegg")
|
||||||
|
color = Color(1, 1, 1, 0.5019608)
|
||||||
|
|
||||||
|
[node name="breaksfx" type="AudioStreamPlayer2D" parent="." unique_id=1024345853]
|
||||||
|
stream = ExtResource("3_64vnu")
|
||||||
|
volume_db = -10.0
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
extends CPUParticles2D
|
||||||
|
|
||||||
|
var unlock := false
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
if unlock and not emitting:
|
||||||
|
queue_free()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://ca8an62xpl0e4
|
||||||
@@ -0,0 +1,176 @@
|
|||||||
|
extends CharacterBody2D
|
||||||
|
|
||||||
|
@onready var bullet = preload("res://assets/scenes/enemyBullet.tscn")
|
||||||
|
@onready var explosionSFX = preload("res://assets/scenes/explosionsfx.tscn")
|
||||||
|
|
||||||
|
@onready var player = $"../../Player"
|
||||||
|
@onready var poly = $"Polygon2D"
|
||||||
|
@onready var animations = $AnimationPlayer
|
||||||
|
@onready var healthBar = $health
|
||||||
|
@onready var healthBg = $ColorRect
|
||||||
|
@onready var nav_agent: NavigationAgent2D = $NavigationAgent2D
|
||||||
|
@onready var ray:= $RayCast2D
|
||||||
|
@onready var hitsfx = $hitsfx
|
||||||
|
@onready var shootsfx = $shootsfx
|
||||||
|
const RANGE = 400.0
|
||||||
|
|
||||||
|
var curShootVal := 1.0
|
||||||
|
var lock := true
|
||||||
|
@export var shootDelay := 1.0
|
||||||
|
|
||||||
|
var health := 100.0
|
||||||
|
var maxHealth := 100.0
|
||||||
|
|
||||||
|
var wave := 1
|
||||||
|
|
||||||
|
var flash := 0.0
|
||||||
|
|
||||||
|
var knockback := Vector2.ZERO
|
||||||
|
|
||||||
|
var frameData = {}
|
||||||
|
|
||||||
|
var transitioning := false
|
||||||
|
var transitionState = [false, false, false]
|
||||||
|
var targetState = []
|
||||||
|
|
||||||
|
var ticks = 0
|
||||||
|
var tickToDel = 0
|
||||||
|
|
||||||
|
func moveback(seconds):
|
||||||
|
if ticks < 5: return
|
||||||
|
|
||||||
|
print("lets go")
|
||||||
|
targetState = frameData[max(tickToDel, ticks - (int(floor(seconds)) * 20))]
|
||||||
|
transitioning = true
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
animations.play("spawn")
|
||||||
|
|
||||||
|
await get_tree().create_timer(0.7).timeout
|
||||||
|
lock = false
|
||||||
|
|
||||||
|
call_deferred("actor_setup")
|
||||||
|
|
||||||
|
func actor_setup() -> void:
|
||||||
|
await get_tree().physics_frame
|
||||||
|
if player:
|
||||||
|
nav_agent.target_position = player.global_position
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
healthBar.size.x += ((health / maxHealth) * healthBg.size.x - healthBar.size.x) * 5 * delta
|
||||||
|
|
||||||
|
if health < 0:
|
||||||
|
if player:
|
||||||
|
|
||||||
|
if Globals.unlockedUpgrades.get("firstAidKit", 0) > 0:
|
||||||
|
player.heal(randf_range(3,5))
|
||||||
|
else:
|
||||||
|
player.heal(randf_range(2,3))
|
||||||
|
|
||||||
|
get_node("explode").emitting = true
|
||||||
|
get_node("explode").unlock = true
|
||||||
|
get_node("explode").reparent(get_parent().get_parent())
|
||||||
|
|
||||||
|
var exlopsion = explosionSFX.instantiate()
|
||||||
|
get_parent().get_parent().add_child(exlopsion)
|
||||||
|
|
||||||
|
queue_free()
|
||||||
|
|
||||||
|
func _physics_process(delta: float) -> void:
|
||||||
|
if lock:
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
if transitioning:
|
||||||
|
|
||||||
|
position += (targetState[0] - position) * 5 * delta / Engine.time_scale
|
||||||
|
rotation += (targetState[1] - rotation) * 5 * delta / Engine.time_scale
|
||||||
|
velocity += (targetState[2] - velocity) * 5 * delta / Engine.time_scale
|
||||||
|
|
||||||
|
#
|
||||||
|
#position = position.round()
|
||||||
|
#rotation = round(rotation)
|
||||||
|
#velocity = velocity.round()
|
||||||
|
|
||||||
|
#print((position - targetState[0]).length(), " ", abs(rotation - targetState[1]), " ", (velocity - targetState[2]).length())
|
||||||
|
|
||||||
|
if (position - targetState[0]).length() < 2:
|
||||||
|
position = targetState[0]
|
||||||
|
transitionState[0] = true
|
||||||
|
if abs(rotation - targetState[1]) < 0.05:
|
||||||
|
rotation = targetState[1]
|
||||||
|
transitionState[1] = true
|
||||||
|
if (velocity - targetState[2]).length() < 2:
|
||||||
|
velocity = targetState[2]
|
||||||
|
transitionState[2] = true
|
||||||
|
|
||||||
|
if transitionState.count(true) == len(transitionState):
|
||||||
|
transitioning = false
|
||||||
|
transitionState = [false, false, false]
|
||||||
|
targetState = []
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
var nextpos := nav_agent.get_next_path_position()
|
||||||
|
|
||||||
|
ray.rotation += ray.get_angle_to(player.global_position)
|
||||||
|
|
||||||
|
var distance = global_position.distance_to(player.global_position)
|
||||||
|
ray.target_position.x = min(distance, 400)
|
||||||
|
if distance > RANGE and not ray.is_colliding():
|
||||||
|
poly.rotation += poly.get_angle_to(player.global_position) * 5 * delta
|
||||||
|
|
||||||
|
velocity.x += (cos(poly.rotation) * 200 - velocity.x) * 5 * delta
|
||||||
|
velocity.y += (sin(poly.rotation) * 200 - velocity.y) * 5 * delta
|
||||||
|
elif ray.is_colliding():
|
||||||
|
var newvel := (nextpos - global_position).normalized() * 200
|
||||||
|
poly.rotation += poly.get_angle_to(nextpos) * 5 * delta
|
||||||
|
velocity = newvel
|
||||||
|
|
||||||
|
#velocity += (newvel - velocity) * 5 * delta
|
||||||
|
|
||||||
|
#velocity.x += (cos(rotation) * 200 - velocity.x) * 5 * delta
|
||||||
|
#velocity.y += (sin(rotation) * 200 - velocity.y) * 5 * delta
|
||||||
|
else:
|
||||||
|
poly.rotation += poly.get_angle_to(player.global_position) * 5 * delta
|
||||||
|
#ray.rotation += ray.get_angle_to(player.global_position) * 5 * delta
|
||||||
|
|
||||||
|
curShootVal -= delta
|
||||||
|
|
||||||
|
if curShootVal <= 0:
|
||||||
|
var instantiated = bullet.instantiate()
|
||||||
|
instantiated.global_position = global_position
|
||||||
|
instantiated.rotation = poly.rotation
|
||||||
|
instantiated.velocity.x = cos(poly.rotation) * 500
|
||||||
|
instantiated.velocity.y = sin(poly.rotation) * 500
|
||||||
|
instantiated.dealtScale = 1.5 * pow(wave, 0.2)
|
||||||
|
get_parent().get_parent().add_child(instantiated)
|
||||||
|
|
||||||
|
animations.play("shoot")
|
||||||
|
shootsfx.play()
|
||||||
|
curShootVal = shootDelay
|
||||||
|
|
||||||
|
#velocity.x += (-cos(rotation) * 50 - velocity.x) / 5 * delta
|
||||||
|
#velocity.y += (-sin(rotation) * 50 - velocity.y) / 5 * delta
|
||||||
|
velocity.x += (-velocity.x) * 2 * delta
|
||||||
|
velocity.y += (-velocity.y) * 2 * delta
|
||||||
|
|
||||||
|
knockback += -knockback * 5 * delta
|
||||||
|
|
||||||
|
move_and_collide((velocity + knockback) * delta)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func _on_new_path() -> void:
|
||||||
|
if player:
|
||||||
|
nav_agent.target_position = player.global_position - Vector2(16, 16)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_snappie_timeout() -> void:
|
||||||
|
frameData[ticks] = [position, rotation, velocity]
|
||||||
|
ticks += 1
|
||||||
|
|
||||||
|
if ticks > 240:
|
||||||
|
frameData.erase(tickToDel)
|
||||||
|
tickToDel += 1
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://iwxi6s8i6j81
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
extends CharacterBody2D
|
||||||
|
|
||||||
|
@onready var playerP = $"../Player"
|
||||||
|
var max_collisions = 0
|
||||||
|
|
||||||
|
var dealtScale := 1.5
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
pass # Replace with function body.
|
||||||
|
|
||||||
|
|
||||||
|
func _physics_process(delta: float) -> void:
|
||||||
|
if playerP.transitioning: return
|
||||||
|
move_and_collide(velocity * delta)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_area_entered(area: Area2D) -> void:
|
||||||
|
if area.get_meta("playerHitbox", 0) != 0:
|
||||||
|
var player = area.get_parent()
|
||||||
|
|
||||||
|
player.speedScale = dealtScale * pow(0.8, Globals.unlockedUpgrades.get("rollback", 0))
|
||||||
|
player.speedUp = 0.5
|
||||||
|
player.damageScale += dealtScale * pow(0.8, Globals.unlockedUpgrades.get("rollback", 0))
|
||||||
|
player.knockback = Vector2(sin(rotation) * 500 * [0.5, -0.5].pick_random(), cos(rotation) * 500 * [0.5, -0.5].pick_random())
|
||||||
|
|
||||||
|
player.hitsfx.play()
|
||||||
|
|
||||||
|
queue_free()
|
||||||
|
|
||||||
|
|
||||||
|
func _on_body_entered(body: Node2D) -> void:
|
||||||
|
queue_free()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://bemc80xgvtkd4
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
extends AudioStreamPlayer2D
|
||||||
|
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
if not playing:
|
||||||
|
queue_free()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://ctjyxuafayafk
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
extends Node
|
||||||
|
|
||||||
|
var availableUpgrades := ["dumbbell","firstAidKit", "rollback", "fasterFaster", "speedMayhem", "thoseWereTheDays", "dashMachine", "shotgun"]
|
||||||
|
|
||||||
|
var upgradeDescriptions := {
|
||||||
|
"firstAidKit": "+50% time back",
|
||||||
|
"dumbbell": "+20% damage",
|
||||||
|
"rollback": "-20% speed up when taking damage",
|
||||||
|
"fasterFaster": "+15% speed",
|
||||||
|
"speedMayhem": "deal more damage with more speed",
|
||||||
|
"thoseWereTheDays": "every rollback, gain +10% damage",
|
||||||
|
"dashMachine": "just a better dash.",
|
||||||
|
"shotgun": "a shotgun. literally just a fricking shotgun."
|
||||||
|
}
|
||||||
|
|
||||||
|
var goldUpgradeDescriptionOverrides := {
|
||||||
|
"shotgun": "still a shotgun, but now shiny ooo",
|
||||||
|
"dashMachine": "dash everywhere, go wild.",
|
||||||
|
"stopwatch": "countdowns are 50% slower. its cool isn't it?",
|
||||||
|
"adrenaline": "when 5 seconds left on the health countdown, recieve a 75% buff on EVERYTHING.",
|
||||||
|
"threeWaves": "something is coming in three waves."
|
||||||
|
}
|
||||||
|
|
||||||
|
var unlockedUpgrades = {}
|
||||||
|
|
||||||
|
var DASH_WAIT := 3.0
|
||||||
|
var DASH_LENGTH := 1000.0
|
||||||
|
|
||||||
|
var UPGRADE_ORIG := 30.0
|
||||||
|
var UPGRADE_TIMERSTART := 30.0
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://ce6cecb4wunfi
|
||||||
@@ -0,0 +1,199 @@
|
|||||||
|
extends CharacterBody2D
|
||||||
|
|
||||||
|
|
||||||
|
const SPEED := 300.0
|
||||||
|
var health := 30.0 # represented in seconds
|
||||||
|
var newHealth := -1.0
|
||||||
|
|
||||||
|
@onready var bullet = preload("res://assets/scenes/playerBullet.tscn")
|
||||||
|
@onready var gun = $gun
|
||||||
|
@onready var gunSprite = $gun/sprite
|
||||||
|
@onready var animations = $AnimationPlayer
|
||||||
|
@onready var shootsfx = $shootsfx
|
||||||
|
@onready var hitsfx = $hitsfx
|
||||||
|
@onready var dashRect = $MeshInstance2D
|
||||||
|
@onready var poly = $Polygon2D
|
||||||
|
|
||||||
|
signal transitionStart(seconds)
|
||||||
|
|
||||||
|
var speedUp := 0.0
|
||||||
|
var speedScale := 2.0
|
||||||
|
var damageScale := 1.0
|
||||||
|
var minDamageScale := 1.0
|
||||||
|
|
||||||
|
var dashTimer := 0.0
|
||||||
|
|
||||||
|
var dashVel := Vector2.ZERO
|
||||||
|
var knockback := Vector2.ZERO
|
||||||
|
|
||||||
|
var flip := false
|
||||||
|
var ticks = 0
|
||||||
|
var tickToDel = 0
|
||||||
|
|
||||||
|
var frameData = {} # keep position, rotation and velocity for now
|
||||||
|
|
||||||
|
var amountTransition := 0.0
|
||||||
|
var transitioning := false
|
||||||
|
var transitionState = [false, false, false]
|
||||||
|
var targetState = []
|
||||||
|
|
||||||
|
var dead := false
|
||||||
|
|
||||||
|
func heal(seconds):
|
||||||
|
newHealth = health + seconds
|
||||||
|
transitionStart.emit(seconds)
|
||||||
|
#print(frameData)
|
||||||
|
targetState = frameData[max(tickToDel, ticks - (int(floor(seconds)) * 20))]
|
||||||
|
transitioning = true
|
||||||
|
|
||||||
|
func healNoMove(seconds):
|
||||||
|
newHealth = health + seconds
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
if damageScale > minDamageScale: damageScale -= delta
|
||||||
|
damageScale = max(damageScale, minDamageScale)
|
||||||
|
|
||||||
|
#ticks += 1
|
||||||
|
|
||||||
|
dashRect.position.y = 31 * dashTimer / Globals.DASH_WAIT / 2 - 31.0 / 2
|
||||||
|
dashRect.scale.y = dashTimer / Globals.DASH_WAIT
|
||||||
|
|
||||||
|
if health < 10:
|
||||||
|
poly.position = Vector2(randi_range(-(10 - health) / 5,(10 - health) / 5), randi_range(-(10 - health) / 5,(10 - health) / 5))
|
||||||
|
|
||||||
|
if health <= 0 and not dead:
|
||||||
|
$explode.emitting = true
|
||||||
|
$explode.unlock = true
|
||||||
|
$explode.reparent(get_parent())
|
||||||
|
$PointLight2D.reparent(get_parent())
|
||||||
|
dead = true
|
||||||
|
hide()
|
||||||
|
|
||||||
|
var grayscaleVal := 1.0
|
||||||
|
|
||||||
|
func _physics_process(delta: float) -> void:
|
||||||
|
if dead: return
|
||||||
|
|
||||||
|
if newHealth != -1:
|
||||||
|
health += (newHealth - health) * 3 * delta
|
||||||
|
|
||||||
|
if abs(health - newHealth) < 1:
|
||||||
|
health = newHealth
|
||||||
|
newHealth = -1
|
||||||
|
|
||||||
|
if transitioning:
|
||||||
|
|
||||||
|
grayscaleVal += - grayscaleVal * 10 * delta
|
||||||
|
|
||||||
|
position += (targetState[0] - position) * 5 * delta / Engine.time_scale
|
||||||
|
rotation += (targetState[1] - rotation) * 5 * delta / Engine.time_scale
|
||||||
|
velocity += (targetState[2] - velocity) * 5 * delta / Engine.time_scale
|
||||||
|
|
||||||
|
Engine.time_scale += (0.5 - Engine.time_scale) * 5 * delta / Engine.time_scale
|
||||||
|
|
||||||
|
#
|
||||||
|
#position = position.round()
|
||||||
|
#rotation = round(rotation)
|
||||||
|
#velocity = velocity.round()
|
||||||
|
|
||||||
|
#print((position - targetState[0]).length(), " ", abs(rotation - targetState[1]), " ", (velocity - targetState[2]).length())
|
||||||
|
|
||||||
|
if (position - targetState[0]).length() < 2:
|
||||||
|
position = targetState[0]
|
||||||
|
transitionState[0] = true
|
||||||
|
if abs(rotation - targetState[1]) < 0.05:
|
||||||
|
rotation = targetState[1]
|
||||||
|
transitionState[1] = true
|
||||||
|
if (velocity - targetState[2]).length() < 2:
|
||||||
|
velocity = targetState[2]
|
||||||
|
transitionState[2] = true
|
||||||
|
|
||||||
|
if transitionState.count(true) == len(transitionState):
|
||||||
|
transitioning = false
|
||||||
|
transitionState = [false, false, false]
|
||||||
|
targetState = []
|
||||||
|
health = ceil(health)
|
||||||
|
amountTransition = 0
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
grayscaleVal += (1-grayscaleVal) * 2 * delta
|
||||||
|
|
||||||
|
var direction := Input.get_vector("moveLeft", "moveRight", "moveUp", "moveDown")
|
||||||
|
velocity = direction * SPEED
|
||||||
|
|
||||||
|
if Globals.unlockedUpgrades.get("fasterFaster", 0) > 0:
|
||||||
|
velocity *= pow(1.15, Globals.unlockedUpgrades["fasterFaster"])
|
||||||
|
|
||||||
|
gun.rotation += gun.get_angle_to(get_global_mouse_position()) * 7 * delta
|
||||||
|
#print(fposmod(gun.rotation + PI, PI * 2) - PI)
|
||||||
|
var truerot = fposmod(gun.rotation + PI, PI * 2) - PI
|
||||||
|
if truerot < -PI / 2 or truerot > PI / 2:
|
||||||
|
gun.scale.y += (-1 - gun.scale.y) * 10 * delta
|
||||||
|
flip = true
|
||||||
|
else:
|
||||||
|
gun.scale.y += (1 - gun.scale.y) * 10 * delta
|
||||||
|
flip = false
|
||||||
|
|
||||||
|
|
||||||
|
var ang = gun.rotation + gun.get_angle_to(get_global_mouse_position())
|
||||||
|
if Input.is_action_just_pressed("dash") and dashTimer == 0:
|
||||||
|
dashVel = Vector2(cos(ang), sin(ang)) * Globals.DASH_LENGTH
|
||||||
|
dashTimer = Globals.DASH_WAIT
|
||||||
|
|
||||||
|
if dashTimer > 0: dashTimer -= delta
|
||||||
|
else: dashTimer = 0
|
||||||
|
|
||||||
|
if Input.is_action_just_pressed("shoot"):
|
||||||
|
if not animations.is_playing():
|
||||||
|
#var ang = gun.rotation + gun.get_angle_to(get_global_mouse_position())
|
||||||
|
var instantiated = bullet.instantiate()
|
||||||
|
instantiated.global_position = global_position
|
||||||
|
instantiated.velocity.x = cos(ang) * 700
|
||||||
|
instantiated.velocity.y = sin(ang) * 700
|
||||||
|
get_parent().add_child(instantiated)
|
||||||
|
|
||||||
|
shootsfx.play()
|
||||||
|
|
||||||
|
if flip: animations.play("shoot_flip")
|
||||||
|
else: animations.play("shoot")
|
||||||
|
|
||||||
|
#if Input.is_action_just_pressed("debugKey"):
|
||||||
|
#targetState = frameData[ticks - 40]
|
||||||
|
#transitioning = true
|
||||||
|
|
||||||
|
if speedUp > 0:
|
||||||
|
Engine.time_scale += (speedScale - Engine.time_scale) * delta / Engine.time_scale
|
||||||
|
speedUp -= delta / speedScale
|
||||||
|
else:
|
||||||
|
speedScale = 1
|
||||||
|
Engine.time_scale += (1 - Engine.time_scale) * 2 * delta / Engine.time_scale
|
||||||
|
|
||||||
|
velocity += knockback
|
||||||
|
velocity += dashVel
|
||||||
|
knockback += -knockback * 5 * delta
|
||||||
|
dashVel += -dashVel * 5 * delta
|
||||||
|
|
||||||
|
move_and_slide()
|
||||||
|
|
||||||
|
|
||||||
|
func _on_framesave_timeout() -> void:
|
||||||
|
frameData[ticks] = [position, rotation, velocity]
|
||||||
|
ticks += 1
|
||||||
|
|
||||||
|
if ticks > 240:
|
||||||
|
frameData.erase(tickToDel)
|
||||||
|
tickToDel += 1
|
||||||
|
|
||||||
|
|
||||||
|
func _on_hitbox_area_entered(area: Area2D) -> void:
|
||||||
|
var themeta = area.get_meta("pickup", 0)
|
||||||
|
#print("floyd")
|
||||||
|
#
|
||||||
|
if themeta != 0:
|
||||||
|
area.get_node("particles").emitting = true
|
||||||
|
area.get_node("particles").reparent(get_parent())
|
||||||
|
healNoMove(3)
|
||||||
|
area.queue_free()
|
||||||
|
|
||||||
|
$"../hud/AnimationPlayer2".play("global/popItUp")
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://dbofvk7fso8po
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
extends CharacterBody2D
|
||||||
|
|
||||||
|
@onready var player = $"../Player"
|
||||||
|
@onready var bloodParticles = preload("res://assets/scenes/blood.tscn")
|
||||||
|
|
||||||
|
var dmgtotal := float(randi_range(20,40))
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
print(dmgtotal)
|
||||||
|
|
||||||
|
if Globals.unlockedUpgrades.get("dumbbell", 0) > 0:
|
||||||
|
dmgtotal *= pow(1.5, Globals.unlockedUpgrades["dumbbell"])
|
||||||
|
if Globals.unlockedUpgrades.get("speedMayhem", 0) > 0:
|
||||||
|
dmgtotal *= pow(1 + (player.velocity.length() + player.dashVel.length()) / 400, Globals.unlockedUpgrades["speedMayhem"])
|
||||||
|
|
||||||
|
print(dmgtotal)
|
||||||
|
|
||||||
|
func _physics_process(delta: float) -> void:
|
||||||
|
if player.transitioning: return
|
||||||
|
|
||||||
|
move_and_collide(velocity * delta)
|
||||||
|
|
||||||
|
func _on_area_entered(area: Area2D) -> void:
|
||||||
|
print("yes")
|
||||||
|
|
||||||
|
queue_free()
|
||||||
|
|
||||||
|
|
||||||
|
func _on_body_entered(body: Node2D) -> void:
|
||||||
|
if body.get_meta("enemy", 0) == 1:
|
||||||
|
#body.get_node("explode").emitting = true
|
||||||
|
#body.get_node("explode").reparent(body.geat_parent())
|
||||||
|
|
||||||
|
body.health -= dmgtotal
|
||||||
|
body.knockback = Vector2(velocity.x * 0.5, velocity.y * 0.5)
|
||||||
|
body.hitsfx.play()
|
||||||
|
#AnimationPlayer.new().stop()
|
||||||
|
body.get_node("AnimationPlayer").stop()
|
||||||
|
body.get_node("AnimationPlayer").play("flash")
|
||||||
|
|
||||||
|
var bloodInsta = bloodParticles.instantiate()
|
||||||
|
bloodInsta.emitting = true
|
||||||
|
bloodInsta.unlock = true
|
||||||
|
bloodInsta.global_position = body.global_position
|
||||||
|
get_parent().add_child(bloodInsta)
|
||||||
|
|
||||||
|
#player.heal(randi_range(3,5))
|
||||||
|
|
||||||
|
#body.queue_free()
|
||||||
|
queue_free()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://dnxmn06yejksk
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
extends Control
|
||||||
|
|
||||||
|
@onready var texture = $texture
|
||||||
|
@onready var amountLabel = $Label
|
||||||
|
@onready var progressRect = $progress
|
||||||
|
|
||||||
|
@export var imDead := false
|
||||||
|
|
||||||
|
var upgradeID := ""
|
||||||
|
#var amount := 1
|
||||||
|
var timer := Globals.UPGRADE_TIMERSTART
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
if imDead and not $particles.emitting:
|
||||||
|
queue_free()
|
||||||
|
|
||||||
|
timer -= delta * Engine.time_scale
|
||||||
|
|
||||||
|
texture.scale += (Vector2(1, 1) - texture.scale) * 7 * delta
|
||||||
|
texture.modulate.a += (1 - texture.modulate.a) * 7 * delta
|
||||||
|
|
||||||
|
progressRect.position.x += (timer / Globals.UPGRADE_TIMERSTART * 48 - progressRect.position.x) * 5 * delta
|
||||||
|
progressRect.size.x += (48 - timer / Globals.UPGRADE_TIMERSTART * 48 - progressRect.size.x) * 5 * delta
|
||||||
|
|
||||||
|
amountLabel.text = str("x", Globals.unlockedUpgrades.get(upgradeID, -1))
|
||||||
|
|
||||||
|
if timer < 0 and not imDead:
|
||||||
|
Globals.unlockedUpgrades[upgradeID] -= 1
|
||||||
|
timer = Globals.UPGRADE_TIMERSTART
|
||||||
|
if Globals.unlockedUpgrades[upgradeID] == 0:
|
||||||
|
Globals.unlockedUpgrades.erase(upgradeID)
|
||||||
|
imDead = true
|
||||||
|
$texture.hide()
|
||||||
|
$progress.hide()
|
||||||
|
$Label.hide()
|
||||||
|
$goldrect.hide()
|
||||||
|
|
||||||
|
$breaksfx.play()
|
||||||
|
$particles.emitting = true
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://b3rft2lmj60k0
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
shader_type canvas_item;
|
||||||
|
|
||||||
|
uniform sampler2D t0 : hint_screen_texture;
|
||||||
|
uniform float bloom_spread = 1;
|
||||||
|
uniform float bloom_intensity = 2;
|
||||||
|
|
||||||
|
void fragment() {
|
||||||
|
ivec2 size = textureSize(t0, 0);
|
||||||
|
|
||||||
|
float uv_x = SCREEN_UV.x * float(size.x);
|
||||||
|
float uv_y = SCREEN_UV.y * float(size.y);
|
||||||
|
|
||||||
|
vec4 sum = vec4(0.0);
|
||||||
|
for (int n = 0; n < 9; ++n) {
|
||||||
|
uv_y = (SCREEN_UV.y * float(size.y)) + float(bloom_spread * float(n - 4));
|
||||||
|
vec4 h_sum = vec4(0.0);
|
||||||
|
h_sum += texelFetch(t0, ivec2(int(uv_x) - int(4.0 * bloom_spread), int(uv_y)), 0);
|
||||||
|
h_sum += texelFetch(t0, ivec2(int(uv_x) - int(3.0 * bloom_spread), int(uv_y)), 0);
|
||||||
|
h_sum += texelFetch(t0, ivec2(int(uv_x) - int(2.0 * bloom_spread), int(uv_y)), 0);
|
||||||
|
h_sum += texelFetch(t0, ivec2(int(uv_x) - int(bloom_spread), int(uv_y)), 0);
|
||||||
|
h_sum += texelFetch(t0, ivec2(int(uv_x), int(uv_y)), 0);
|
||||||
|
h_sum += texelFetch(t0, ivec2(int(uv_x) + int(bloom_spread), int(uv_y)), 0);
|
||||||
|
h_sum += texelFetch(t0, ivec2(int(uv_x) + int(2.0 * bloom_spread), int(uv_y)), 0);
|
||||||
|
h_sum += texelFetch(t0, ivec2(int(uv_x) + int(3.0 * bloom_spread), int(uv_y)), 0);
|
||||||
|
h_sum += texelFetch(t0, ivec2(int(uv_x) + int(4.0 * bloom_spread), int(uv_y)), 0);
|
||||||
|
sum += h_sum / 9.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
COLOR = texture(t0, SCREEN_UV) + ((sum / 9.0) * bloom_intensity);
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://c8ew170obieqd
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
shader_type canvas_item;
|
||||||
|
|
||||||
|
uniform sampler2D screen_texture : hint_screen_texture, repeat_disable;
|
||||||
|
uniform float saturation : hint_range(0.0, 1.0) = 1.0; // 0 = grayscale, 1 = full color
|
||||||
|
|
||||||
|
void fragment() {
|
||||||
|
vec4 tex = texture(screen_texture, SCREEN_UV);
|
||||||
|
float gray = dot(tex.rgb, vec3(0.299, 0.587, 0.114)); // luminance weights
|
||||||
|
vec3 result = mix(vec3(gray), tex.rgb, saturation);
|
||||||
|
COLOR = vec4(result, tex.a);
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://iv65e2k0fx0e
|
||||||
@@ -0,0 +1,168 @@
|
|||||||
|
shader_type canvas_item;
|
||||||
|
|
||||||
|
|
||||||
|
uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap;
|
||||||
|
|
||||||
|
|
||||||
|
uniform bool overlay = false;
|
||||||
|
|
||||||
|
uniform float scanlines_opacity : hint_range(0.0, 1.0) = 0.4;
|
||||||
|
uniform float scanlines_width : hint_range(0.0, 0.5) = 0.25;
|
||||||
|
uniform float grille_opacity : hint_range(0.0, 1.0) = 0.3;
|
||||||
|
uniform vec2 resolution = vec2(640.0, 480.0);
|
||||||
|
|
||||||
|
uniform bool pixelate = true;
|
||||||
|
|
||||||
|
uniform bool roll = true;
|
||||||
|
uniform float roll_speed = 8.0;
|
||||||
|
uniform float roll_size : hint_range(0.0, 100.0) = 15.0;
|
||||||
|
uniform float roll_variation : hint_range(0.1, 5.0) = 1.8;
|
||||||
|
uniform float distort_intensity : hint_range(0.0, 0.2) = 0.05;
|
||||||
|
|
||||||
|
uniform float noise_opacity : hint_range(0.0, 1.0) = 0.4;
|
||||||
|
uniform float noise_speed = 5.0;
|
||||||
|
|
||||||
|
uniform float static_noise_intensity : hint_range(0.0, 1.0) = 0.06;
|
||||||
|
|
||||||
|
uniform float aberration : hint_range(-1.0, 1.0) = 0.03;
|
||||||
|
uniform float brightness = 1.4;
|
||||||
|
uniform bool discolor = true;
|
||||||
|
|
||||||
|
uniform float warp_amount : hint_range(0.0, 5.0) = 1.0;
|
||||||
|
uniform bool clip_warp = false;
|
||||||
|
|
||||||
|
uniform float vignette_intensity = 0.4;
|
||||||
|
uniform float vignette_opacity : hint_range(0.0, 1.0) = 0.5;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
vec2 random(vec2 uv){
|
||||||
|
uv = vec2(dot(uv, vec2(127.1,311.7)), dot(uv, vec2(269.5,183.3)));
|
||||||
|
return -1.0 + 2.0 * fract(sin(uv) * 43758.5453123);
|
||||||
|
}
|
||||||
|
|
||||||
|
float noise(vec2 uv) {
|
||||||
|
vec2 uv_index = floor(uv);
|
||||||
|
vec2 uv_fract = fract(uv);
|
||||||
|
vec2 blur = smoothstep(0.0, 1.0, uv_fract);
|
||||||
|
|
||||||
|
return mix(
|
||||||
|
mix(dot(random(uv_index + vec2(0.0,0.0)), uv_fract - vec2(0.0,0.0)),
|
||||||
|
dot(random(uv_index + vec2(1.0,0.0)), uv_fract - vec2(1.0,0.0)), blur.x),
|
||||||
|
mix(dot(random(uv_index + vec2(0.0,1.0)), uv_fract - vec2(0.0,1.0)),
|
||||||
|
dot(random(uv_index + vec2(1.0,1.0)), uv_fract - vec2(1.0,1.0)), blur.x),
|
||||||
|
blur.y
|
||||||
|
) * 0.5 + 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
vec2 warp(vec2 uv){
|
||||||
|
vec2 delta = uv - 0.5;
|
||||||
|
float delta2 = dot(delta.xy, delta.xy);
|
||||||
|
float delta4 = delta2 * delta2;
|
||||||
|
float delta_offset = delta4 * warp_amount;
|
||||||
|
return uv + delta * delta_offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
float border (vec2 uv){
|
||||||
|
float radius = min(warp_amount, 0.08);
|
||||||
|
radius = max(min(min(abs(radius * 2.0), abs(1.0)), abs(1.0)), 1e-5);
|
||||||
|
vec2 abs_uv = abs(uv * 2.0 - 1.0) - vec2(1.0, 1.0) + radius;
|
||||||
|
float dist = length(max(vec2(0.0), abs_uv)) / radius;
|
||||||
|
float square = smoothstep(0.96, 1.0, dist);
|
||||||
|
return clamp(1.0 - square, 0.0, 1.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
float vignette(vec2 uv){
|
||||||
|
uv *= 1.0 - uv.xy;
|
||||||
|
float vignette = uv.x * uv.y * 15.0;
|
||||||
|
return pow(vignette, vignette_intensity * vignette_opacity);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void fragment()
|
||||||
|
{
|
||||||
|
vec2 uv = overlay ? warp(SCREEN_UV) : warp(UV);
|
||||||
|
vec2 text_uv = uv;
|
||||||
|
vec2 roll_uv = vec2(0.0);
|
||||||
|
float time = roll ? TIME : 0.0;
|
||||||
|
|
||||||
|
if (pixelate){
|
||||||
|
text_uv = ceil(uv * resolution) / resolution;
|
||||||
|
}
|
||||||
|
|
||||||
|
float roll_line = 0.0;
|
||||||
|
if (roll || noise_opacity > 0.0){
|
||||||
|
roll_line = smoothstep(0.3, 0.9, sin(uv.y * roll_size - (time * roll_speed)));
|
||||||
|
roll_line *= roll_line * smoothstep(0.3, 0.9, sin(uv.y * roll_size * roll_variation - (time * roll_speed * roll_variation)));
|
||||||
|
roll_uv = vec2((roll_line * distort_intensity * (1.-UV.x)), 0.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
vec4 text;
|
||||||
|
if (roll){
|
||||||
|
text.r = texture(SCREEN_TEXTURE, text_uv + roll_uv * 0.8 + vec2(aberration, 0.0) * .1).r;
|
||||||
|
text.g = texture(SCREEN_TEXTURE, text_uv + roll_uv * 1.2 - vec2(aberration, 0.0) * .1).g;
|
||||||
|
text.b = texture(SCREEN_TEXTURE, text_uv + roll_uv).b;
|
||||||
|
text.a = 1.0;
|
||||||
|
} else {
|
||||||
|
text.r = texture(SCREEN_TEXTURE, text_uv + vec2(aberration, 0.0) * .1).r;
|
||||||
|
text.g = texture(SCREEN_TEXTURE, text_uv - vec2(aberration, 0.0) * .1).g;
|
||||||
|
text.b = texture(SCREEN_TEXTURE, text_uv).b;
|
||||||
|
text.a = 1.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
float r = text.r;
|
||||||
|
float g = text.g;
|
||||||
|
float b = text.b;
|
||||||
|
|
||||||
|
uv = warp(UV);
|
||||||
|
|
||||||
|
if (grille_opacity > 0.0){
|
||||||
|
float g_r = smoothstep(0.85, 0.95, abs(sin(uv.x * (resolution.x * 3.14159265))));
|
||||||
|
r = mix(r, r * g_r, grille_opacity);
|
||||||
|
|
||||||
|
float g_g = smoothstep(0.85, 0.95, abs(sin(1.05 + uv.x * (resolution.x * 3.14159265))));
|
||||||
|
g = mix(g, g * g_g, grille_opacity);
|
||||||
|
|
||||||
|
float b_b = smoothstep(0.85, 0.95, abs(sin(2.1 + uv.x * (resolution.x * 3.14159265))));
|
||||||
|
b = mix(b, b * b_b, grille_opacity);
|
||||||
|
}
|
||||||
|
|
||||||
|
text.r = clamp(r * brightness, 0.0, 1.0);
|
||||||
|
text.g = clamp(g * brightness, 0.0, 1.0);
|
||||||
|
text.b = clamp(b * brightness, 0.0, 1.0);
|
||||||
|
|
||||||
|
float scanlines = 0.5;
|
||||||
|
if (scanlines_opacity > 0.0){
|
||||||
|
scanlines = smoothstep(scanlines_width, scanlines_width + 0.5, abs(sin(uv.y * (resolution.y * 3.14159265))));
|
||||||
|
text.rgb = mix(text.rgb, text.rgb * vec3(scanlines), scanlines_opacity);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (noise_opacity > 0.0){
|
||||||
|
float n = smoothstep(0.4, 0.5, noise(uv * vec2(2.0, 200.0) + vec2(10.0, (TIME * (noise_speed)))));
|
||||||
|
roll_line *= n * scanlines * clamp(random((ceil(uv * resolution) / resolution) + vec2(TIME * 0.8, 0.0)).x + 0.8, 0.0, 1.0);
|
||||||
|
text.rgb = clamp(mix(text.rgb, text.rgb + roll_line, noise_opacity), vec3(0.0), vec3(1.0));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (static_noise_intensity > 0.0){
|
||||||
|
text.rgb += clamp(random((ceil(uv * resolution) / resolution) + fract(TIME)).x, 0.0, 1.0) * static_noise_intensity;
|
||||||
|
}
|
||||||
|
|
||||||
|
text.rgb *= border(uv);
|
||||||
|
text.rgb *= vignette(uv);
|
||||||
|
|
||||||
|
if (clip_warp){
|
||||||
|
text.a = border(uv);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (discolor){
|
||||||
|
float saturation = 0.5;
|
||||||
|
float contrast = 1.2;
|
||||||
|
vec3 greyscale = vec3(text.r + text.g + text.b) / 3.;
|
||||||
|
text.rgb = mix(text.rgb, greyscale, saturation);
|
||||||
|
|
||||||
|
float midpoint = pow(0.5, 2.2);
|
||||||
|
text.rgb = (text.rgb - vec3(midpoint)) * contrast + midpoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
COLOR = text;
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://mbnolbvkgv2e
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://c74t2je247tit"
|
||||||
|
path="res://.godot/imported/blipSelect.wav-de258546cfca554e7f4e9bacf8531c7c.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sounds/blipSelect.wav"
|
||||||
|
dest_files=["res://.godot/imported/blipSelect.wav-de258546cfca554e7f4e9bacf8531c7c.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=2
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://dt154t2aall5d"
|
||||||
|
path="res://.godot/imported/break.wav-db0dc963ca187eba995ad2567e0eabb2.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sounds/break.wav"
|
||||||
|
dest_files=["res://.godot/imported/break.wav-db0dc963ca187eba995ad2567e0eabb2.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=2
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://b7gupw3d7sfho"
|
||||||
|
path="res://.godot/imported/explosion.wav-52e05e8d4b6600106c8dde082c90f915.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sounds/explosion.wav"
|
||||||
|
dest_files=["res://.godot/imported/explosion.wav-52e05e8d4b6600106c8dde082c90f915.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=2
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://5b7eonllfufp"
|
||||||
|
path="res://.godot/imported/hitHurt.wav-f5c862522ab53cfcebe43a49f03467c5.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sounds/hitHurt.wav"
|
||||||
|
dest_files=["res://.godot/imported/hitHurt.wav-f5c862522ab53cfcebe43a49f03467c5.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=2
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://cxub0psx0jhru"
|
||||||
|
path="res://.godot/imported/powerUp.wav-c3616ba4a45e0da0d67ac257bc645e97.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sounds/powerUp.wav"
|
||||||
|
dest_files=["res://.godot/imported/powerUp.wav-c3616ba4a45e0da0d67ac257bc645e97.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=2
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://de4sr2qpjr1w2"
|
||||||
|
path="res://.godot/imported/shoot.wav-05f65b79fd05091fd1b8b7ddc844694a.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sounds/shoot.wav"
|
||||||
|
dest_files=["res://.godot/imported/shoot.wav-05f65b79fd05091fd1b8b7ddc844694a.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=2
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://d3ok8rhcq4kmr"
|
||||||
|
path="res://.godot/imported/shootEnemy.wav-3f5ba9a06b9c4c7d11d05380df3970ab.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sounds/shootEnemy.wav"
|
||||||
|
dest_files=["res://.godot/imported/shootEnemy.wav-3f5ba9a06b9c4c7d11d05380df3970ab.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=2
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128"><rect width="124" height="124" x="2" y="2" fill="#363d52" stroke="#212532" stroke-width="4" rx="14"/><g fill="#fff" transform="translate(12.322 12.322)scale(.101)"><path d="M105 673v33q407 354 814 0v-33z"/><path fill="#478cbf" d="m105 673 152 14q12 1 15 14l4 67 132 10 8-61q2-11 15-15h162q13 4 15 15l8 61 132-10 4-67q3-13 15-14l152-14V427q30-39 56-81-35-59-83-108-43 20-82 47-40-37-88-64 7-51 8-102-59-28-123-42-26 43-46 89-49-7-98 0-20-46-46-89-64 14-123 42 1 51 8 102-48 27-88 64-39-27-82-47-48 49-83 108 26 42 56 81zm0 33v39c0 276 813 276 814 0v-39l-134 12-5 69q-2 10-14 13l-162 11q-12 0-16-11l-10-65H446l-10 65q-4 11-16 11l-162-11q-12-3-14-13l-5-69z"/><path d="M483 600c0 34 58 34 58 0v-86c0-34-58-34-58 0z"/><circle cx="725" cy="526" r="90"/><circle cx="299" cy="526" r="90"/></g><g fill="#414042" transform="translate(12.322 12.322)scale(.101)"><circle cx="307" cy="532" r="60"/><circle cx="717" cy="532" r="60"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 995 B |
@@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://c73c85sx637up"
|
||||||
|
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://icon.svg"
|
||||||
|
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.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
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=false
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
; Engine configuration file.
|
||||||
|
; It's best edited using the editor UI and not directly,
|
||||||
|
; since the parameters that go here are not all obvious.
|
||||||
|
;
|
||||||
|
; Format:
|
||||||
|
; [section] ; section goes between []
|
||||||
|
; param=value ; assign values to parameters
|
||||||
|
|
||||||
|
config_version=5
|
||||||
|
|
||||||
|
[application]
|
||||||
|
|
||||||
|
config/name="countdown mayhem"
|
||||||
|
run/main_scene="uid://beviqs1f22d1c"
|
||||||
|
config/features=PackedStringArray("4.7", "Forward Plus")
|
||||||
|
boot_splash/bg_color=Color(0, 0, 0, 1)
|
||||||
|
boot_splash/stretch_mode=0
|
||||||
|
boot_splash/image="uid://dbhwfxaqgogb3"
|
||||||
|
config/icon="res://icon.svg"
|
||||||
|
|
||||||
|
[autoload]
|
||||||
|
|
||||||
|
Globals="*uid://ce6cecb4wunfi"
|
||||||
|
|
||||||
|
[display]
|
||||||
|
|
||||||
|
window/size/viewport_width=1200
|
||||||
|
window/size/viewport_height=800
|
||||||
|
window/stretch/mode="canvas_items"
|
||||||
|
|
||||||
|
[global_group]
|
||||||
|
|
||||||
|
playerHitbox=""
|
||||||
|
|
||||||
|
[input]
|
||||||
|
|
||||||
|
moveLeft={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
moveRight={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
moveUp={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
moveDown={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
shoot={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(165, 19),"global_position":Vector2(174, 67),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
dash={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
[physics]
|
||||||
|
|
||||||
|
3d/physics_engine="Jolt Physics"
|
||||||
|
common/physics_interpolation=true
|
||||||
|
|
||||||
|
[rendering]
|
||||||
|
|
||||||
|
textures/canvas_textures/default_texture_filter=0
|
||||||
|
rendering_device/driver.windows="d3d12"
|
||||||
|
2d/snap/snap_2d_vertices_to_pixel=true
|
||||||
@@ -0,0 +1,201 @@
|
|||||||
|
extends Node2D
|
||||||
|
|
||||||
|
@onready var spawntimer = $spawntimer
|
||||||
|
@onready var player = $Player
|
||||||
|
@onready var healthBar = $hud/healthbar
|
||||||
|
@onready var healthWhite = $hud/healthwhite
|
||||||
|
@onready var healthBg = $hud/healthbg
|
||||||
|
@onready var healthLabel = $hud/healthlabel
|
||||||
|
@onready var slowdown = $hud/slowdown
|
||||||
|
@onready var upgradesHUD = $hud/upgrades
|
||||||
|
@onready var ff = $hud/ff
|
||||||
|
@onready var beep = $hud/beep
|
||||||
|
@onready var beep2 = $hud/beep2
|
||||||
|
|
||||||
|
@onready var waveBg = $hud/wavebg
|
||||||
|
@onready var waveBar = $hud/wavebar
|
||||||
|
@onready var waveLabel = $hud/wavetimerlabel
|
||||||
|
@onready var waveCountLabel = $hud/wavelabel
|
||||||
|
|
||||||
|
@onready var tilemap = $navigation/TileMapLayer
|
||||||
|
#func _ready() -> void:
|
||||||
|
#
|
||||||
|
|
||||||
|
@onready var shooter = preload("res://assets/scenes/shooter.tscn")
|
||||||
|
@onready var upgradeUI = preload("res://assets/scenes/upgradeUI.tscn")
|
||||||
|
|
||||||
|
var healthLast = 0
|
||||||
|
var baked := false
|
||||||
|
var rooms = []
|
||||||
|
|
||||||
|
var ticks := 0
|
||||||
|
var tickToDel := 0
|
||||||
|
|
||||||
|
var currentWave := 1
|
||||||
|
var waveTimer := 15.0
|
||||||
|
var untilNewWave := 15.0
|
||||||
|
|
||||||
|
var upgradeUnlocksPerTick = {0: [], 1: [], 2: [], 3: [], 4: [], 5: [], 6: [], 7: [], 8: [], 9: []}
|
||||||
|
|
||||||
|
# up, down, left, right
|
||||||
|
#var roomRules := [
|
||||||
|
#[
|
||||||
|
#[0, 1, 2, 3, 4, 5, 6, 7, 10], [], [1, 2, 3, 5, 6, 7], [1, 2, 3, 4, 5, 6]
|
||||||
|
#],
|
||||||
|
#[
|
||||||
|
#
|
||||||
|
#],
|
||||||
|
#[
|
||||||
|
#
|
||||||
|
#],
|
||||||
|
#[
|
||||||
|
#
|
||||||
|
#]
|
||||||
|
#]
|
||||||
|
|
||||||
|
@onready var patterns: Array[TileMapPattern] = []
|
||||||
|
|
||||||
|
func wfc():
|
||||||
|
pass
|
||||||
|
|
||||||
|
func appendUpgrade(upgradeID : String):
|
||||||
|
print(upgradeUnlocksPerTick)
|
||||||
|
Globals.unlockedUpgrades[upgradeID] = Globals.unlockedUpgrades.get(upgradeID, 0) + 1
|
||||||
|
upgradeUnlocksPerTick[ticks].append(upgradeID)
|
||||||
|
#TextureRect.new().texture.resource_path
|
||||||
|
|
||||||
|
var modified := false
|
||||||
|
for icon in upgradesHUD.get_children():
|
||||||
|
if icon.upgradeID == upgradeID:
|
||||||
|
#icon.amount += 1
|
||||||
|
modified = true
|
||||||
|
break
|
||||||
|
|
||||||
|
if not modified:
|
||||||
|
var instantiated = upgradeUI.instantiate()
|
||||||
|
instantiated.get_node("texture").texture = load(str("res://assets/images/upgrades/", upgradeID, ".png"))
|
||||||
|
instantiated.timer = Globals.UPGRADE_TIMERSTART
|
||||||
|
instantiated.upgradeID = upgradeID
|
||||||
|
#instantiated.get_node("animations").play("init")
|
||||||
|
upgradesHUD.add_child(instantiated)
|
||||||
|
|
||||||
|
$newupgrade/title.text = upgradeID.capitalize().to_lower()
|
||||||
|
$newupgrade/icon.texture = load(str("res://assets/images/upgrades/", upgradeID, ".png"))
|
||||||
|
$newupgrade/text.text = Globals.upgradeDescriptions[upgradeID]
|
||||||
|
|
||||||
|
$newupgrade/animations.stop()
|
||||||
|
$newupgrade/animations.play("newUpgrade")
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
#appendUpgrade("rollback")
|
||||||
|
|
||||||
|
for i in range(11):
|
||||||
|
patterns.append(tilemap.tile_set.get_pattern(i))
|
||||||
|
|
||||||
|
for y in range(-10,10):
|
||||||
|
for x in range(-10,10):
|
||||||
|
if randi_range(1, 100) < 50:
|
||||||
|
tilemap.set_pattern(Vector2i(x * 5, y * 5), patterns[randi_range(0, 7)])
|
||||||
|
else:
|
||||||
|
tilemap.set_pattern(Vector2i(x * 5, y * 5), patterns[8])
|
||||||
|
|
||||||
|
#tilemap.set_pattern(Vector2i(-12, -12), patterns[9])
|
||||||
|
#tilemap.set_pattern(Vector2i(4, -12), patterns[9])
|
||||||
|
#tilemap.set_pattern(Vector2i(-12, 4), patterns[9])
|
||||||
|
#tilemap.set_pattern(Vector2i(4, 4), patterns[9])
|
||||||
|
|
||||||
|
$navigation.bake_navigation_polygon()
|
||||||
|
|
||||||
|
var timer := 0.0
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
waveTimer -= delta
|
||||||
|
|
||||||
|
if not baked:
|
||||||
|
timer += delta
|
||||||
|
$bakewait/Label.text = "baking collisions"
|
||||||
|
for i in range(int(timer)):
|
||||||
|
$bakewait/Label.text += "."
|
||||||
|
|
||||||
|
if timer >= 4: timer = 0
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
$bg.global_position = player.global_position - $bg.size / 2
|
||||||
|
|
||||||
|
timer += delta / player.speedScale
|
||||||
|
|
||||||
|
if player.transitioning:
|
||||||
|
beep.pitch_scale = 1
|
||||||
|
elif player.health < 15:
|
||||||
|
beep.pitch_scale = 1 + 2 - (player.health / 15) * 2
|
||||||
|
else:
|
||||||
|
beep.pitch_scale = 1
|
||||||
|
|
||||||
|
if player.newHealth == -1 and not player.transitioning:
|
||||||
|
player.health -= delta * player.speedScale * player.damageScale
|
||||||
|
if healthLast != int(player.health):
|
||||||
|
beep.play()
|
||||||
|
$hud/AnimationPlayer.play("secondBig")
|
||||||
|
healthBar.size.x += (healthBg.size.x * (int(player.health) / 30.0) - healthBar.size.x) * 2 * delta
|
||||||
|
waveBar.size.x += (waveBg.size.x * (int(waveTimer) / untilNewWave) - waveBar.size.x) * 3 * delta
|
||||||
|
#healthWhite.size.x = healthBg.size.x * (int(player.health + 1) / 30.0)
|
||||||
|
healthBar.color.r = 1 - (int(player.health) / 30.0)
|
||||||
|
healthBar.color.g = (int(player.health) / 30.0)
|
||||||
|
|
||||||
|
healthLabel.text = str(int(player.health), "s")
|
||||||
|
waveLabel.text = str(int(waveTimer), "s")
|
||||||
|
|
||||||
|
beep2.global_position = player.global_position
|
||||||
|
|
||||||
|
if waveTimer < 0:
|
||||||
|
untilNewWave *= 1.2
|
||||||
|
waveTimer = untilNewWave
|
||||||
|
currentWave += 1
|
||||||
|
|
||||||
|
spawntimer.wait_time *= 0.9
|
||||||
|
|
||||||
|
appendUpgrade(Globals.availableUpgrades.pick_random())
|
||||||
|
|
||||||
|
waveCountLabel.text = str("wave ", currentWave)
|
||||||
|
beep2.play()
|
||||||
|
|
||||||
|
healthLast = int(player.health)
|
||||||
|
slowdown.material.set_shader_parameter('saturation', player.grayscaleVal)
|
||||||
|
#a
|
||||||
|
|
||||||
|
|
||||||
|
func _on_navigation_bake_finished() -> void:
|
||||||
|
$bakewait.queue_free()
|
||||||
|
baked = true
|
||||||
|
timer = 0
|
||||||
|
|
||||||
|
|
||||||
|
func _on_spawntimer_timeout() -> void:
|
||||||
|
var newEnemy = shooter.instantiate()
|
||||||
|
newEnemy.health = 100 * pow(currentWave, 0.7)
|
||||||
|
newEnemy.maxHealth = 100 * pow(currentWave, 0.7)
|
||||||
|
newEnemy.wave = currentWave
|
||||||
|
newEnemy.global_position = player.global_position + Vector2(randi_range(-500, 500), randi_range(-100, 100))
|
||||||
|
get_node("enemies").add_child(newEnemy)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_player_transition_start(seconds: Variant) -> void:
|
||||||
|
for enemy in get_node("enemies").get_children():
|
||||||
|
enemy.moveback(max(seconds, enemy.ticks / 20))
|
||||||
|
print("moveback1")
|
||||||
|
|
||||||
|
print(upgradeUnlocksPerTick, "\n", max(ticks - int(seconds) - 1,tickToDel))
|
||||||
|
for upgrade in upgradeUnlocksPerTick[max(ticks - int(seconds) - 1,tickToDel)]:
|
||||||
|
appendUpgrade(upgrade)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_upgradetick_timeout() -> void:
|
||||||
|
ticks += 1
|
||||||
|
if upgradeUnlocksPerTick.get(ticks, [67]) == [67]: upgradeUnlocksPerTick[ticks] = []
|
||||||
|
|
||||||
|
if ticks > 60:
|
||||||
|
upgradeUnlocksPerTick.erase(tickToDel)
|
||||||
|
tickToDel += 1
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://t7a5froys3xu
|
||||||