Extensive work on animations and partially functional level keys, new UI gears but needs rounding error correction. Particle preloader added.

This commit is contained in:
2026-04-07 06:43:12 -04:00
parent 86f655ff07
commit 39401ff04f
128 changed files with 42916 additions and 120860 deletions

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cixnfx8rumycv"
path="res://.godot/imported/Launch_Strike_Hit_Impact_8Bit_ChipSound.wav-eb8a105f2276b58fa67752cd0d986859.sample"
[deps]
source_file="res://audio/sounds/Launch_Strike_Hit_Impact_8Bit_ChipSound.wav"
dest_files=["res://.godot/imported/Launch_Strike_Hit_Impact_8Bit_ChipSound.wav-eb8a105f2276b58fa67752cd0d986859.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

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://yk7el04tirb"
path="res://.godot/imported/MALE VOICE DEFENSE SHOUT - Defensive Block or Damaged Hurt Submissive Short Interjection Yell - 039.wav-935b3e97947ca8710c7ea343eb050096.sample"
[deps]
source_file="res://audio/sounds/MALE VOICE DEFENSE SHOUT - Defensive Block or Damaged Hurt Submissive Short Interjection Yell - 039.wav"
dest_files=["res://.godot/imported/MALE VOICE DEFENSE SHOUT - Defensive Block or Damaged Hurt Submissive Short Interjection Yell - 039.wav-935b3e97947ca8710c7ea343eb050096.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

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://c8eskllw2h8px"
path="res://.godot/imported/MALE VOICE DEFENSE SHOUT - Defensive Block or Damaged Hurt Submissive Short Interjection Yell - 041.wav-d80165d64cf6eede57283ebdcdeff9bd.sample"
[deps]
source_file="res://audio/sounds/MALE VOICE DEFENSE SHOUT - Defensive Block or Damaged Hurt Submissive Short Interjection Yell - 041.wav"
dest_files=["res://.godot/imported/MALE VOICE DEFENSE SHOUT - Defensive Block or Damaged Hurt Submissive Short Interjection Yell - 041.wav-d80165d64cf6eede57283ebdcdeff9bd.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

View File

@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://curasc4oee3la"
path="res://.godot/imported/MALE VOICE DEFENSE SHOUT - Defensive Block or Damaged Hurt Submissive Short Interjection Yell - 049.mp3-61462a687da5aa80b267059a943a6b34.mp3str"
[deps]
source_file="res://audio/sounds/MALE VOICE DEFENSE SHOUT - Defensive Block or Damaged Hurt Submissive Short Interjection Yell - 049.mp3"
dest_files=["res://.godot/imported/MALE VOICE DEFENSE SHOUT - Defensive Block or Damaged Hurt Submissive Short Interjection Yell - 049.mp3-61462a687da5aa80b267059a943a6b34.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://lv3iph01r6hd"
path="res://.godot/imported/MALE VOICE DEFENSE SHOUT - Defensive Block or Damaged Hurt Submissive Short Interjection Yell - 054.wav-a89ac7da0bff21def88c52e380dd6faf.sample"
[deps]
source_file="res://audio/sounds/MALE VOICE DEFENSE SHOUT - Defensive Block or Damaged Hurt Submissive Short Interjection Yell - 054.wav"
dest_files=["res://.godot/imported/MALE VOICE DEFENSE SHOUT - Defensive Block or Damaged Hurt Submissive Short Interjection Yell - 054.wav-a89ac7da0bff21def88c52e380dd6faf.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

Binary file not shown.

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cmocbosbfv3pt"
path="res://.godot/imported/Percussive (43), UI SFX, MGUSP1.wav-29d42d487199dae6a2539f19847503a1.sample"
[deps]
source_file="res://audio/sounds/Percussive (43), UI SFX, MGUSP1.wav"
dest_files=["res://.godot/imported/Percussive (43), UI SFX, MGUSP1.wav-29d42d487199dae6a2539f19847503a1.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

Binary file not shown.

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bqgr68occsqbb"
path="res://.godot/imported/Percussive (98), UI SFX, MGUSP1.wav-d7d99c590ff88db1ab398289b844c6c5.sample"
[deps]
source_file="res://audio/sounds/Percussive (98), UI SFX, MGUSP1.wav"
dest_files=["res://.godot/imported/Percussive (98), UI SFX, MGUSP1.wav-d7d99c590ff88db1ab398289b844c6c5.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

Binary file not shown.

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://805xro6bopvq"
path="res://.godot/imported/Stealth_Surveillanc_Sci_Fi_UI_7.wav-dc73211610db8f19dec3ea72ab03e178.sample"
[deps]
source_file="res://audio/sounds/Stealth_Surveillanc_Sci_Fi_UI_7.wav"
dest_files=["res://.godot/imported/Stealth_Surveillanc_Sci_Fi_UI_7.wav-dc73211610db8f19dec3ea72ab03e178.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

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://0bjxsruy7we8"
path="res://.godot/imported/Swordish_Strike_Hit_Impact_8Bit_ChipSound.wav-aff4c2c2a818d34d07d075d84a3dcf23.sample"
[deps]
source_file="res://audio/sounds/Swordish_Strike_Hit_Impact_8Bit_ChipSound.wav"
dest_files=["res://.godot/imported/Swordish_Strike_Hit_Impact_8Bit_ChipSound.wav-aff4c2c2a818d34d07d075d84a3dcf23.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

View File

@@ -72,3 +72,6 @@ Wall Impact - BEAM Wood Ceiling Drop On Concrete.wav
****OTBTechno
Trap Alert - 134688__otbtechno__bike-bell.wav
****Arcade Origins
Stealth_Surveillanc_Sci_Fi_UI_7.wav

View File

@@ -1,7 +1,7 @@
[gd_resource type="Resource" script_class="PawnBaseData" load_steps=9 format=3 uid="uid://yosnkcj4ci4v"]
[gd_resource type="Resource" script_class="PawnBaseData" format=3 uid="uid://yosnkcj4ci4v"]
[ext_resource type="AudioStream" uid="uid://dhlg3pk3tbirp" path="res://external/sample audio/a.wav" id="1_mtelv"]
[ext_resource type="PackedScene" uid="uid://c3s6gqy0s5kus" path="res://templates/pawns/a.tscn" id="2_mtelv"]
[ext_resource type="PackedScene" uid="uid://bnae77rxqldu8" path="res://templates/pawns/a.tscn" id="2_mtelv"]
[ext_resource type="Texture2D" uid="uid://13pdg1vs81as" path="res://external/test portraits/a.png" id="3_qt3l7"]
[ext_resource type="Script" uid="uid://c53ohdio1ksp1" path="res://data/pawn_base_data.gd" id="4_3x7pt"]
[ext_resource type="Script" uid="uid://b0b1107c0d807" path="res://data/hackset.gd" id="5_lwcbw"]

View File

@@ -1,7 +1,7 @@
[gd_resource type="Resource" script_class="PawnBaseData" load_steps=9 format=3 uid="uid://6s8tqfssrt5i"]
[gd_resource type="Resource" script_class="PawnBaseData" format=3 uid="uid://6s8tqfssrt5i"]
[ext_resource type="AudioStream" uid="uid://bqu2otr8b1oj6" path="res://external/sample audio/f.wav" id="1_2oi4n"]
[ext_resource type="PackedScene" uid="uid://cwrxbjgwbiv81" path="res://templates/pawns/f.tscn" id="2_2oi4n"]
[ext_resource type="PackedScene" path="res://templates/pawns/f.scn" id="2_2oi4n"]
[ext_resource type="Texture2D" uid="uid://c265jqwykqc2s" path="res://external/test portraits/f.png" id="3_ttwdt"]
[ext_resource type="Script" uid="uid://c53ohdio1ksp1" path="res://data/pawn_base_data.gd" id="4_mlun8"]
[ext_resource type="Script" uid="uid://b0b1107c0d807" path="res://data/hackset.gd" id="5_2hgkw"]

BIN
experimental/6-gear A.PNG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://r7grey8tumrp"
path="res://.godot/imported/t-gas.png-110c34a22ea1a82475e91c8498c0628f.ctex"
uid="uid://shamqwdbum3p"
path="res://.godot/imported/6-gear A.PNG-b470f78247c1e639d18dc69f6be3877f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://visuals/images/icons/t-gas.png"
dest_files=["res://.godot/imported/t-gas.png-110c34a22ea1a82475e91c8498c0628f.ctex"]
source_file="res://experimental/6-gear A.PNG"
dest_files=["res://.godot/imported/6-gear A.PNG-b470f78247c1e639d18dc69f6be3877f.ctex"]
[params]

BIN
experimental/6-gear B.PNG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://hiwrcar5fnyk"
path="res://.godot/imported/switch.png-faeee8f01855199353420145e0057175.ctex"
uid="uid://bpw48bv0iin7a"
path="res://.godot/imported/6-gear B.PNG-fbb48a632a1891c0df07b5cc219ef5d7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://visuals/images/icons/switch.png"
dest_files=["res://.godot/imported/switch.png-faeee8f01855199353420145e0057175.ctex"]
source_file="res://experimental/6-gear B.PNG"
dest_files=["res://.godot/imported/6-gear B.PNG-fbb48a632a1891c0df07b5cc219ef5d7.ctex"]
[params]

BIN
experimental/6-gear C.PNG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

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

BIN
experimental/7-gear A.PNG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bcv3f38cib5xk"
path="res://.godot/imported/mine.png-61c03f8ab0a54680707f43a6d5376fb0.ctex"
uid="uid://hghnoa2adt0l"
path="res://.godot/imported/7-gear A.PNG-68acb4735eabf46cea15b613969428fc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://visuals/images/icons/mine.png"
dest_files=["res://.godot/imported/mine.png-61c03f8ab0a54680707f43a6d5376fb0.ctex"]
source_file="res://experimental/7-gear A.PNG"
dest_files=["res://.godot/imported/7-gear A.PNG-68acb4735eabf46cea15b613969428fc.ctex"]
[params]

BIN
experimental/7-gear B.PNG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

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

BIN
experimental/7-gear C.PNG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

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

BIN
experimental/8-gear A.PNG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

View File

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

BIN
experimental/8-gear B.PNG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

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

BIN
experimental/8-gear C.PNG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://hur0cc3h4tdw"
path="res://.godot/imported/8-gear C.PNG-ed28dac720a849ba2c66abca53d33c83.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://experimental/8-gear C.PNG"
dest_files=["res://.godot/imported/8-gear C.PNG-ed28dac720a849ba2c66abca53d33c83.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

View File

@@ -127,6 +127,10 @@ func _ready() -> void:
func _enter_tree() -> void:
if autoplay: preview = true
func restart():
play()
func play():
var anim : AnimationPlayer = _get_anim()
_reset_particles()
@@ -178,15 +182,15 @@ func _reset_particles():
for p in _get_particles():
p.restart()
func _set_shader_params(name : String, value) -> void:
func _set_shader_params(param_name : String, value) -> void:
for p in _get_particles():
if is_instance_valid(p):
if p.material_override is ShaderMaterial:
p.material_override.set("shader_parameter/" + name, value)
p.material_override.set("shader_parameter/" + param_name, value)
for m in _get_meshinstances():
if is_instance_valid(m):
if m.material_override is ShaderMaterial:
m.material_override.set("shader_parameter/" + name, value)
m.material_override.set("shader_parameter/" + param_name, value)
func _set_mesh_resolutions(value : int) -> void:
for m in _get_meshes(): if is_instance_valid(m):

File diff suppressed because it is too large Load Diff

1
external/datablock.bbmodel vendored Normal file
View File

@@ -0,0 +1 @@
{"meta":{"format_version":"5.0","model_format":"free","box_uv":false},"name":"datablock","model_identifier":"datablock","visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":8,"height":8},"elements":[{"name":"mesh","color":0,"origin":[0,0,0],"rotation":[45,45,0],"shading":"flat","export":true,"visibility":true,"locked":false,"render_order":"default","allow_mirror_modeling":true,"vertices":{"o5B1":[0.5,1,0.5],"Oaf3":[0.5,1,-0.5],"Wtsa":[0.5,0,0.5],"hCEz":[0.5,0,-0.5],"i5A2":[-0.5,1,0.5],"bt32":[-0.5,1,-0.5],"JLlG":[-0.5,0,0.5],"uOfW":[-0.5,0,-0.5]},"faces":{"QzSYz2UY":{"uv":{"hCEz":[64,64],"Oaf3":[64,0],"Wtsa":[0,64],"o5B1":[0,0]},"vertices":["Oaf3","o5B1","Wtsa","hCEz"],"texture":0},"qT4mlH90":{"uv":{"uOfW":[0,64],"JLlG":[64,64],"bt32":[0,0],"i5A2":[64,0]},"vertices":["JLlG","i5A2","bt32","uOfW"],"texture":0},"0nU2it28":{"uv":{"bt32":[0,0],"i5A2":[0,64],"Oaf3":[64,0],"o5B1":[64,64]},"vertices":["i5A2","o5B1","Oaf3","bt32"],"texture":0},"5B4zBPLy":{"uv":{"uOfW":[0,64],"hCEz":[64,64],"JLlG":[0,0],"Wtsa":[64,0]},"vertices":["hCEz","Wtsa","JLlG","uOfW"],"texture":0},"f568dEDZ":{"uv":{"JLlG":[0,64],"Wtsa":[64,64],"i5A2":[0,0],"o5B1":[64,0]},"vertices":["Wtsa","o5B1","i5A2","JLlG"],"texture":0},"kaxCcvYn":{"uv":{"uOfW":[64,64],"bt32":[64,0],"hCEz":[0,64],"Oaf3":[0,0]},"vertices":["bt32","Oaf3","hCEz","uOfW"],"texture":0}},"type":"mesh","uuid":"4ad894da-4ff9-c215-8d26-ab5fb23fdf65"}],"groups":[],"outliner":["4ad894da-4ff9-c215-8d26-ab5fb23fdf65"],"textures":[{"name":"texture.png","relative_path":"../models/texture.png","folder":"block","namespace":"","id":"0","group":"","width":32,"height":32,"uv_width":64,"uv_height":64,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","render_mode":"default","render_sides":"auto","pbr_channel":"color","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":true,"uuid":"ed7ef709-d823-3770-8ed8-e74384bd0686","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABD0lEQVR4AeyVwRGCMBRE/9CF3rAGbvRAG9IBNdABtkEPnKAGuWEZyMvwM8GBE5PIIYwr34D7ljUzJvN69H0/h9SKnRNZjmEYlvft6zNNgrqukzPCA23dRZSZ6MBNgIqiEPQsS0F1XcsZ4YHwRDBgEQi2aYAP73HkFEQuywbQp/Sd4JdjA/gGH/lfI4BuiqOUPtaVeY0G3F3p42n3PJV5jQb2EoZaiw3EBmIDsYHYQGzANPBI01D/PZajTBPArv5hMAFu93twtDJNgOB0B2gDVFUlyLnmZYSB1NwG0E2hF3yeXVaSZZlh8ZvkeS5t2xq9mkYQac8ID6S+MGABhW0aYGDBFTchvnBGeCDXm1mZXwAAAP//DIKnpQAAAAZJREFUAwBiYyjAq+VNhQAAAABJRU5ErkJggg=="}],"export_options":{"gltf":{"encoding":"ascii","scale":1,"embed_textures":true,"armature":false,"animations":true}}}

Binary file not shown.

View File

@@ -1,42 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://dwenaeppgwkn4"
path="res://.godot/imported/UAL1_Standard.glb-6503a3aa446f38ec7ef32097f30b4b72.scn"
[deps]
source_file="res://models/UAL1_Standard.glb"
dest_files=["res://.godot/imported/UAL1_Standard.glb-6503a3aa446f38ec7ef32097f30b4b72.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=0.4
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
gltf/naming_version=2
gltf/embedded_image_handling=1

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,55 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://b7xxo1oaae66d"
path="res://.godot/imported/SK_Character_Male_NoFace_01.fbx-f790aa20ed8452a9a88678f11cd891a4.scn"
[deps]
source_file="res://models/pawns/SK_Character_Male_NoFace_01.fbx"
dest_files=["res://.godot/imported/SK_Character_Male_NoFace_01.fbx-f790aa20ed8452a9a88678f11cd891a4.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={
"nodes": {
"PATH:AnimationPlayer": {
"import/skip_import": true
},
"PATH:Root/Skeleton3D": {
"retarget/bone_map": Object(BoneMap,"resource_local_to_scene":false,"resource_name":"","profile":Object(SkeletonProfileHumanoid,"resource_local_to_scene":false,"resource_name":"","root_bone":&"Root","scale_base_bone":&"Hips","group_size":4,"bone_size":56,"script":null)
,"bonemap":null,"bone_map/Root":&"","bone_map/Hips":&"Pelvis","bone_map/Spine":&"spine_01","bone_map/Chest":&"spine_02","bone_map/UpperChest":&"spine_03","bone_map/Neck":&"neck_01","bone_map/Head":&"head","bone_map/LeftEye":&"","bone_map/RightEye":&"","bone_map/Jaw":&"","bone_map/LeftShoulder":&"clavicle_l","bone_map/LeftUpperArm":&"UpperArm_L","bone_map/LeftLowerArm":&"lowerarm_l","bone_map/LeftHand":&"Hand_L","bone_map/LeftThumbMetacarpal":&"thumb_01_l","bone_map/LeftThumbProximal":&"thumb_02_l","bone_map/LeftThumbDistal":&"thumb_03_l","bone_map/LeftIndexProximal":&"indexFinger_02_l","bone_map/LeftIndexIntermediate":&"indexFinger_03_l","bone_map/LeftIndexDistal":&"indexFinger_04_l","bone_map/LeftMiddleProximal":&"","bone_map/LeftMiddleIntermediate":&"","bone_map/LeftMiddleDistal":&"","bone_map/LeftRingProximal":&"","bone_map/LeftRingIntermediate":&"","bone_map/LeftRingDistal":&"","bone_map/LeftLittleProximal":&"","bone_map/LeftLittleIntermediate":&"","bone_map/LeftLittleDistal":&"","bone_map/RightShoulder":&"clavicle_r","bone_map/RightUpperArm":&"UpperArm_R","bone_map/RightLowerArm":&"lowerarm_r","bone_map/RightHand":&"Hand_R","bone_map/RightThumbMetacarpal":&"thumb_01_r","bone_map/RightThumbProximal":&"thumb_02_r","bone_map/RightThumbDistal":&"thumb_03_r","bone_map/RightIndexProximal":&"indexFinger_02_r","bone_map/RightIndexIntermediate":&"indexFinger_03_r","bone_map/RightIndexDistal":&"indexFinger_04_r","bone_map/RightMiddleProximal":&"","bone_map/RightMiddleIntermediate":&"","bone_map/RightMiddleDistal":&"","bone_map/RightRingProximal":&"","bone_map/RightRingIntermediate":&"","bone_map/RightRingDistal":&"","bone_map/RightLittleProximal":&"","bone_map/RightLittleIntermediate":&"","bone_map/RightLittleDistal":&"","bone_map/LeftUpperLeg":&"Thigh_L","bone_map/LeftLowerLeg":&"calf_l","bone_map/LeftFoot":&"Foot_L","bone_map/LeftToes":&"toes_l","bone_map/RightUpperLeg":&"Thigh_R","bone_map/RightLowerLeg":&"calf_r","bone_map/RightFoot":&"Foot_R","bone_map/RightToes":&"toes_r","script":null)
}
}
}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1
fbx/naming_version=2

BIN
models/pawns/lowres.glb Normal file

Binary file not shown.

View File

@@ -0,0 +1,50 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://c1cxwacr53dlx"
path="res://.godot/imported/lowres.glb-7ddf254d76a9fd33aa4fc7aa1fc94202.scn"
[deps]
source_file="res://models/pawns/lowres.glb"
dest_files=["res://.godot/imported/lowres.glb-7ddf254d76a9fd33aa4fc7aa1fc94202.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={
"nodes": {
"PATH:Root/Skeleton3D": {
"retarget/bone_map": Object(BoneMap,"resource_local_to_scene":false,"resource_name":"","profile":Object(SkeletonProfileHumanoid,"resource_local_to_scene":false,"resource_name":"","root_bone":&"Root","scale_base_bone":&"Hips","group_size":4,"bone_size":56,"script":null)
,"bonemap":null,"bone_map/Root":&"","bone_map/Hips":&"Pelvis","bone_map/Spine":&"spine_01","bone_map/Chest":&"spine_02","bone_map/UpperChest":&"spine_03","bone_map/Neck":&"neck_01","bone_map/Head":&"head","bone_map/LeftEye":&"","bone_map/RightEye":&"","bone_map/Jaw":&"","bone_map/LeftShoulder":&"clavicle_l","bone_map/LeftUpperArm":&"UpperArm_L","bone_map/LeftLowerArm":&"lowerarm_l","bone_map/LeftHand":&"Hand_L","bone_map/LeftThumbMetacarpal":&"thumb_01_l","bone_map/LeftThumbProximal":&"thumb_02_l","bone_map/LeftThumbDistal":&"thumb_03_l","bone_map/LeftIndexProximal":&"indexFinger_02_l","bone_map/LeftIndexIntermediate":&"indexFinger_03_l","bone_map/LeftIndexDistal":&"indexFinger_04_l","bone_map/LeftMiddleProximal":&"","bone_map/LeftMiddleIntermediate":&"","bone_map/LeftMiddleDistal":&"","bone_map/LeftRingProximal":&"","bone_map/LeftRingIntermediate":&"","bone_map/LeftRingDistal":&"","bone_map/LeftLittleProximal":&"","bone_map/LeftLittleIntermediate":&"","bone_map/LeftLittleDistal":&"","bone_map/RightShoulder":&"clavicle_r","bone_map/RightUpperArm":&"UpperArm_R","bone_map/RightLowerArm":&"lowerarm_r","bone_map/RightHand":&"Hand_R","bone_map/RightThumbMetacarpal":&"thumb_01_r","bone_map/RightThumbProximal":&"thumb_02_r","bone_map/RightThumbDistal":&"thumb_03_r","bone_map/RightIndexProximal":&"indexFinger_02_r","bone_map/RightIndexIntermediate":&"indexFinger_03_r","bone_map/RightIndexDistal":&"indexFinger_04_r","bone_map/RightMiddleProximal":&"","bone_map/RightMiddleIntermediate":&"","bone_map/RightMiddleDistal":&"","bone_map/RightRingProximal":&"","bone_map/RightRingIntermediate":&"","bone_map/RightRingDistal":&"","bone_map/RightLittleProximal":&"","bone_map/RightLittleIntermediate":&"","bone_map/RightLittleDistal":&"","bone_map/LeftUpperLeg":&"Thigh_L","bone_map/LeftLowerLeg":&"calf_l","bone_map/LeftFoot":&"Foot_L","bone_map/LeftToes":&"toes_l","bone_map/RightUpperLeg":&"Thigh_R","bone_map/RightLowerLeg":&"calf_r","bone_map/RightFoot":&"Foot_R","bone_map/RightToes":&"toes_r","script":null)
}
}
}
gltf/naming_version=2
gltf/embedded_image_handling=1

35004
models/pawns/pawn.glb.import Normal file

File diff suppressed because it is too large Load Diff

BIN
models/texture.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 B

View File

@@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://coe2q8jdu47it"
path="res://.godot/imported/gas.png-783a91dcbb9fb95ccef91a4b0ead1602.ctex"
uid="uid://c55md6vd30b3u"
path="res://.godot/imported/texture.png-0fc5fbb9aadfc4530cb9dbc77528bc2b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://visuals/images/icons/gas.png"
dest_files=["res://.godot/imported/gas.png-783a91dcbb9fb95ccef91a4b0ead1602.ctex"]
source_file="res://models/texture.png"
dest_files=["res://.godot/imported/texture.png-0fc5fbb9aadfc4530cb9dbc77528bc2b.ctex"]
[params]

View File

@@ -9,14 +9,15 @@
[ext_resource type="Texture2D" uid="uid://dri0a20l6kpbj" path="res://visuals/images/icon.svg" id="7_cttrw"]
[ext_resource type="AudioStream" uid="uid://cr0n18se6jnig" path="res://audio/music/Industrial Matts Fridge Intensity 2.wav" id="9_d3ajt"]
[ext_resource type="Script" uid="uid://b5npi1ys4lnf4" path="res://scripts/multiplayer_level_setup.gd" id="9_owm7e"]
[ext_resource type="PackedScene" uid="uid://dyvov4i48mqoi" path="res://templates/datablock_pickup.tscn" id="10_owm7e"]
[ext_resource type="PackedScene" uid="uid://dyvov4i48mqoi" path="res://templates/datakey_collectable.tscn" id="10_owm7e"]
[ext_resource type="Script" uid="uid://clqnjqolkujea" path="res://scripts/combat_target.gd" id="11_0nmat"]
[ext_resource type="Script" uid="uid://cpemfkebfflnv" path="res://scripts/collectable_depot.gd" id="12_0fg7r"]
[sub_resource type="Environment" id="Environment_x4b8f"]
background_mode = 1
ambient_light_color = Color(1, 1, 1, 1)
reflected_light_source = 1
tonemap_white = 16.0
glow_enabled = true
fog_mode = 1
fog_light_color = Color(0.21401742, 0.23577034, 0.2696176, 1)
fog_light_energy = 0.0
@@ -65,6 +66,12 @@ _surfaces = [{
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_tlwuy")
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_0fg7r"]
data = PackedVector3Array(-0.25, -0.5, 0.25, -0.25, -0.5, -0.25, -0.25, 0.5, -0.25, 0.25, -0.5, -0.25, -0.25, -0.5, -0.25, -0.25, -0.5, 0.25, -0.25, 0.5, -0.25, -0.25, -0.5, -0.25, 0.25, -0.5, -0.25, -0.25, 0.5, -0.25, -0.25, 0.5, 0.25, -0.25, -0.5, 0.25, -0.25, -0.5, 0.25, -0.25, 0.5, 0.25, 0.25, 0.5, 0.25, 0.25, 0.5, 0.25, -0.25, 0.5, 0.25, -0.25, 0.5, -0.25, -0.25, -0.5, 0.25, 0.25, -0.5, 0.25, 0.25, -0.5, -0.25, 0.25, 0.5, 0.25, 0.25, -0.5, 0.25, -0.25, -0.5, 0.25, 0.25, -0.5, -0.25, 0.25, -0.5, 0.25, 0.25, 0.5, 0.25, 0.25, -0.5, -0.25, 0.25, 0.5, -0.25, -0.25, 0.5, -0.25, -0.25, 0.5, -0.25, 0.25, 0.5, -0.25, 0.25, 0.5, 0.25, 0.25, 0.5, 0.25, 0.25, 0.5, -0.25, 0.25, -0.5, -0.25)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cttrw"]
albedo_color = Color(0.19, 0.19, 0.19, 1)
[node name="Manufactory Level" type="Node3D" unique_id=2007761685]
process_mode = 4
script = ExtResource("1_0a1dj")
@@ -80,13 +87,14 @@ layer = 1000
[node name="HUD" parent="CanvasLayer" unique_id=195816212 instance=ExtResource("2_uckv6")]
[node name="SubViewportContainer" parent="CanvasLayer/HUD/Control/PanelContainer/HBoxContainer/VBoxContainer3/PanelContainer3" index="0"]
[node name="SubViewportContainer" parent="CanvasLayer/HUD/Control/PanelContainer/HBoxContainer/VBoxContainer3/PanelContainer3" parent_id_path=PackedInt32Array(195816212, 639968871) index="0" unique_id=2026750430]
stretch = true
[node name="SubViewport" parent="CanvasLayer/HUD/Control/PanelContainer/HBoxContainer/VBoxContainer3/PanelContainer3/SubViewportContainer" index="0"]
[node name="SubViewport" parent="CanvasLayer/HUD/Control/PanelContainer/HBoxContainer/VBoxContainer3/PanelContainer3/SubViewportContainer" index="0" unique_id=774342722]
size = Vector2i(2, 2)
size_2d_override = Vector2i(250, 130)
[node name="Camera3D" parent="CanvasLayer/HUD/Control/PanelContainer/HBoxContainer/VBoxContainer3/PanelContainer3/SubViewportContainer/SubViewport" index="0"]
[node name="Camera3D" parent="CanvasLayer/HUD/Control/PanelContainer/HBoxContainer/VBoxContainer3/PanelContainer3/SubViewportContainer/SubViewport" index="0" unique_id=1409788025]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -4.5, 11000, 3)
keep_aspect = 1
size = 12.0
@@ -214,6 +222,7 @@ metadata/_editor_floor_ = Vector3(0, -1, 0)
[node name="SpotLight3D" type="SpotLight3D" parent="." unique_id=37271490]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -0.5129843, 6.6643066, -0.1329956)
light_specular = 0.0
shadow_enabled = true
spot_range = 5.378
spot_attenuation = -2.16
spot_angle = 36.82
@@ -421,29 +430,29 @@ autoplay = true
unique_name_in_owner = true
script = ExtResource("9_owm7e")
[node name="Datablock Pickup" parent="." unique_id=1877046457 instance=ExtResource("10_owm7e")]
[node name="Datakey Collectable" parent="." unique_id=1877046457 instance=ExtResource("10_owm7e")]
transform = Transform3D(0.99999994, 0, 0, 0, 0.9426415, -0.33380684, 0, 0.33380687, 0.94264144, 0.5, 1.790432, 0.5)
type = 3
[node name="Datablock Pickup2" parent="." unique_id=150000037 instance=ExtResource("10_owm7e")]
transform = Transform3D(0.99999994, 0, 0, 0, 0.9426415, -0.33380684, 0, 0.33380687, 0.94264144, 1.6036651, 1.790432, 0.5)
type = 3
[node name="StaticBody3D" type="StaticBody3D" parent="." unique_id=2081909019 groups=["combat"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.4438734, 1.9944642, -1.5034182)
collision_layer = 2
collision_mask = 3
script = ExtResource("11_0nmat")
[node name="Datablock Pickup3" parent="." unique_id=1762645391 instance=ExtResource("10_owm7e")]
transform = Transform3D(0.99999994, 0, 0, 0, 0.9426415, -0.33380684, 0, 0.33380687, 0.94264144, 1.6036651, 1.790432, 1.2620864)
type = 3
[node name="CSGBox3D" type="CSGBox3D" parent="StaticBody3D" unique_id=215933218]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
size = Vector3(0.5, 1, 0.5)
[node name="Datablock Pickup4" parent="." unique_id=1738016273 instance=ExtResource("10_owm7e")]
transform = Transform3D(0.99999994, 0, 0, 0, 0.9426415, -0.33380684, 0, 0.33380687, 0.94264144, 2.623424, 1.790432, 1.2620864)
type = 3
[node name="CSGBakedCollisionShape3D" type="CollisionShape3D" parent="StaticBody3D" unique_id=805679684]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
shape = SubResource("ConcavePolygonShape3D_0fg7r")
[node name="Datablock Pickup5" parent="." unique_id=1023893103 instance=ExtResource("10_owm7e")]
transform = Transform3D(0.99999994, 0, 0, 0, 0.9426415, -0.33380684, 0, 0.33380687, 0.94264144, 3.47398, 1.790432, 1.2620864)
type = 3
[node name="Datablock Pickup6" parent="." unique_id=1468142867 instance=ExtResource("10_owm7e")]
transform = Transform3D(0.99999994, 0, 0, 0, 0.9426415, -0.33380684, 0, 0.33380687, 0.94264144, 3.47398, 1.790432, -0.07430935)
type = 3
[node name="CollectableDepot" type="CSGCylinder3D" parent="." unique_id=1792215007]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.479931, 2.1232398, 0.5399784)
height = 0.142
cone = true
material = SubResource("StandardMaterial3D_cttrw")
script = ExtResource("12_0fg7r")
[connection signal="spawned" from="PawnSpawner" to="MultiplayerLevelSetup" method="_on_pawn_spawner_spawned"]
[connection signal="spawned" from="CameraSpawner" to="MultiplayerLevelSetup" method="_on_camera_spawner_spawned"]

View File

@@ -1,6 +1,7 @@
[gd_scene format=3 uid="uid://cjnws52vwfxvq"]
[ext_resource type="Script" uid="uid://dep7nr2nkdmga" path="res://scripts/multiplayer_setup.gd" id="1_lckj3"]
[ext_resource type="PackedScene" uid="uid://c7wcgttd3ycrc" path="res://experimental/gear background.tscn" id="2_hmj53"]
[node name="MultiplayerSetup" type="MultiplayerSpawner" unique_id=176078763 groups=["level_spawner"]]
_spawnable_scenes = PackedStringArray("uid://ti65jukt8gvs", "uid://ck4x56txf676a", "uid://dewb10lmvj1yy")
@@ -16,6 +17,9 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="Gear Background" parent="Setup" unique_id=1112528005 instance=ExtResource("2_hmj53")]
layout_mode = 1
[node name="Panel" type="PanelContainer" parent="Setup" unique_id=774991646]
custom_minimum_size = Vector2(400, 400)
layout_mode = 1

View File

@@ -1,9 +1,11 @@
[gd_scene load_steps=3 format=3 uid="uid://dq5mtoakhfxx4"]
[gd_scene format=3 uid="uid://dq5mtoakhfxx4"]
[ext_resource type="Texture2D" uid="uid://cp188cfq4qeas" path="res://external/progress_over.png" id="1_wa8kr"]
[ext_resource type="Texture2D" uid="uid://g7k311jjr73e" path="res://external/progress_fill.png" id="2_0fdvr"]
[node name="Node2D" type="Control"]
[node name="Node2D" type="Control" unique_id=730141545]
z_index = 100
z_as_relative = false
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
@@ -11,7 +13,7 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="ColorRect" type="ColorRect" parent="."]
[node name="ColorRect" type="ColorRect" parent="." unique_id=775624051]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
@@ -22,7 +24,7 @@ size_flags_horizontal = 3
size_flags_vertical = 3
color = Color(0, 0, 0, 1)
[node name="RichTextLabel" type="RichTextLabel" parent="."]
[node name="RichTextLabel" type="RichTextLabel" parent="." unique_id=470764481]
layout_mode = 0
offset_left = 160.0
offset_top = 413.0
@@ -34,7 +36,7 @@ text = "LOADING V-REP . . ."
fit_content = true
scroll_active = false
[node name="TextureProgressBar" type="TextureProgressBar" parent="."]
[node name="TextureProgressBar" type="TextureProgressBar" parent="." unique_id=1473719645]
texture_filter = 1
layout_mode = 0
offset_left = 133.0
@@ -49,7 +51,7 @@ stretch_margin_bottom = 10
texture_over = ExtResource("1_wa8kr")
texture_progress = ExtResource("2_0fdvr")
[node name="RichTextLabel2" type="RichTextLabel" parent="."]
[node name="RichTextLabel2" type="RichTextLabel" parent="." unique_id=1616927201]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5

View File

@@ -19,6 +19,7 @@ var pawns : Dictionary = {
const blinder_template = preload("res://templates/blinder.tscn")
const one_shot_template = preload("res://templates/one_shot.tscn")
const level_loading_template = preload("res://scenes/vrep_loading.tscn")
const story_level = preload("res://scenes/manufactory.tscn")
const vs_com_level = preload("res://scenes/test_level.tscn")
@@ -29,6 +30,7 @@ var cmd_args : Dictionary = {}
var player : PawnController
var hud : HUD
var level : Level
var level_loading
var mode : Modes = Modes.STORY
var multiplayer_game : bool = false
var num_players : int = 1
@@ -64,6 +66,10 @@ func setup_player(pc : PawnController) -> void:
func is_multiplayer() -> bool:
return multiplayer_game
@rpc("call_local", "any_peer", "reliable")
func show_level_loading() -> void:
level_loading = level_loading_template.instantiate()
add_child(level_loading)
func start_level(pawn_dict : Dictionary[int, StringName]) -> void:
pawns_selected = pawn_dict
@@ -73,31 +79,41 @@ func start_level(pawn_dict : Dictionary[int, StringName]) -> void:
for i in Multiplayer.players.values():
level_synced[i] = false
level_synced[1] = true
show_level_loading.rpc()
match(mode):
Modes.STORY:
switch_scene(story_level, false)
Modes.VS_COM:
switch_scene(vs_com_level, false)
Modes.VS_MAN:
switch_scene(vs_man_level)
switch_scene(vs_man_level, true)
func switch_scene(packed_scene : PackedScene, spawn : bool = true) -> void:
func switch_scene(packed_scene : PackedScene, spawn : bool = true, is_level : bool = true) -> void:
var blinder = blinder_template.instantiate() as TextureRect
var tween = create_tween()
blinder.self_modulate.a = 0
add_child(blinder)
tween.tween_property(blinder, "self_modulate:a", 1, .15)
await tween.tween_property(blinder, "self_modulate:a", 1, .15).finished
tween = create_tween()
if spawn:
var spawner = get_tree().get_first_node_in_group("level_spawner") as MultiplayerSpawner
tween.tween_callback(spawner.add_child.bind(packed_scene.instantiate(), true))
tween.tween_callback(spawner.add_child.bind(packed_scene.instantiate(), true)).finished
var current_scene = get_tree().get_first_node_in_group("scenes")
if current_scene:
tween.tween_callback(current_scene.queue_free)
current_scene.process_mode=Node.PROCESS_MODE_DISABLED
else:
tween.tween_callback(get_tree().change_scene_to_packed.bind(packed_scene))
tween.tween_callback(get_tree().change_scene_to_packed.bind(packed_scene)).finished
if is_level:
await tween.tween_interval(0.1).finished
tween = create_tween()
level.level_started.connect(level_loading.queue_free)
tween.tween_property(blinder, "self_modulate:a", 0, .15)
tween.tween_callback(blinder.queue_free)
else:
tween.tween_property(blinder, "self_modulate:a", 0, .15)
tween.tween_callback(blinder.queue_free)
@rpc("call_local", "any_peer", "reliable")
func start_pawn_select(mplayer : bool) -> void:
@@ -139,8 +155,6 @@ func check_level_ready() -> void:
for id in level_synced:
if level_synced[id] == false:
level_ready = false
if level_ready:
level.setup()
func oneshot(stream : AudioStream) -> void:
var shot = one_shot_template.instantiate()
@@ -149,3 +163,6 @@ func oneshot(stream : AudioStream) -> void:
level.add_child(shot)
else:
add_child(shot)
func go_to_title_screen() -> void:
get_tree().change_scene_to_file("res://scenes/title_screen.tscn")

View File

@@ -87,6 +87,7 @@ func _process(delta : float) -> void:
pawns_selected[selector.player_id] = portraits[selector.selection].pawn.name
if locked:
Game.start_level(pawns_selected)
process_mode = Node.PROCESS_MODE_DISABLED
if selectors[Multiplayer.id].selected != false:
return

View File

@@ -1,8 +1,8 @@
class_name Pickup extends Area3D
class_name Collectable extends Area3D
enum Type{
DATABLOCK,
DATAKEY,
INTEGRITY,
SCAN,
BASIC_HACK,
@@ -13,5 +13,5 @@ enum Type{
func _on_body_entered(body: Node3D) -> void:
if body is PawnController:
body.pickup(type)
body.collect(type)
queue_free()

View File

@@ -0,0 +1,18 @@
extends CSGCylinder3D
var time_remaining : float
var collectable : Collectable
func generate_collectable() -> void:
pass
func _process(delta: float) -> void:
if time_remaining > 0:
time_remaining -= delta
if time_remaining <= 0 and collectable == null:
generate_collectable()
time_remaining = Game.level.collectable_drop_time
func _on_collectable_collected() -> void:
collectable = null

View File

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

View File

@@ -1 +1,11 @@
class_name CombatTarget extends StaticBody3D
func can_hurt() -> bool:
return true
func can_poison() -> bool:
return false
func hurt(amt : int) -> void:
pass

View File

@@ -10,20 +10,20 @@ const action_value : Dictionary[String, int] = {
const icon_textures : Array = [
{
"normal" : preload("res://visuals/images/icons/button-detonate.png"),
"pressed" : preload("res://visuals/images/icons/button-detonate-hit.png")
"normal" : preload("res://visuals/images/icons/detect button.png"),
"pressed" : preload("res://visuals/images/icons/lit detect button.png")
},
{
"normal" : preload("res://visuals/images/icons/button-hack.png"),
"pressed" : preload("res://visuals/images/icons/button-hack-hit.png")
"normal" : preload("res://visuals/images/icons/install button.png"),
"pressed" : preload("res://visuals/images/icons/lit install button.png")
},
{
"normal" : preload("res://visuals/images/icons/button-detect.png"),
"pressed" : preload("res://visuals/images/icons/button-detect-hit.png")
"normal" : preload("res://visuals/images/icons/switch button.png"),
"pressed" : preload("res://visuals/images/icons/lit switch button.png")
},
{
"normal" : preload("res://visuals/images/icons/button-attack.png"),
"pressed" : preload("res://visuals/images/icons/button-attack-hit.png")
"normal" : preload("res://visuals/images/icons/melee attack button.png"),
"pressed" : preload("res://visuals/images/icons/lit melee attack button.png")
},
]

View File

@@ -24,4 +24,5 @@ func setup(h_owner, dam) -> void:
func _on_body_entered(body: Node3D) -> void:
if body.can_hurt():
body.hurt(damage)
if body.can_poison():
body.poison(damage, 2.0)

View File

@@ -5,6 +5,7 @@ class_name HUD extends Control
@onready var p2_healthbar : HealthBar = %P2HealthBar
@onready var control_display : ControlDisplay = %ControlDisplay
@onready var ammo_label : Label = %AmmoLabel
#@onready var keys_display : LevelKeysDisplay = %LevelKeysDisplay
func _ready() -> void:
Game.hud = self
@@ -28,3 +29,6 @@ func set_ammo(ammo : int) -> void:
func _on_ammo_changed(current : int, _max_amt : int) -> void:
set_ammo(current)
func _on_keys_changed() -> void:
#keys_display.update()
pass

View File

@@ -12,6 +12,7 @@ const map_marker_templates : Dictionary[String, PackedScene] = {
const pawn_controller = preload("res://templates/pawn_controller.tscn")
const hack_template = preload("res://templates/hack.tscn")
const camera_template = preload("res://templates/pawn_camera.tscn")
const particle_preloader_template = preload("res://templates/particle_preloader.tscn")
const camera_offset = Vector3(0, 10, 5.25)
@@ -27,15 +28,25 @@ const camera_offset = Vector3(0, 10, 5.25)
@onready var multiplayer_level_setup : MultiplayerLevelSetup = %MultiplayerLevelSetup
@export var difficulty : int = 1
var keys : Array[int] = []
@export var max_keys = 7
var hacks : Dictionary[Vector3i, Hack] = {}
var pawns : Dictionary[int, PawnController] = {}
var cameras : Dictionary[int, PawnCamera] = {}
var map_markers : Dictionary[Object, MapMarker] = {}
signal level_started()
signal keys_changed()
func _ready() -> void:
var preloader = particle_preloader_template.instantiate()
add_child(preloader)
process_mode=Node.PROCESS_MODE_DISABLED
Game.level = self
if max_keys > 0 and Game.hud:
keys_changed.connect(Game.hud._on_keys_changed)
keys_changed.emit()
if Game.mode == Game.Modes.STORY:
setup()
#add_level_hack.call_deferred(Hack.Type.PURGE, Vector3.ZERO, Vector3i(-2,2,0))
@@ -66,7 +77,7 @@ func spawn_players_singleplayer() -> void:
pc.setup(1, Game.pawns_selected[1])
add_pawn_camera(pc)
cameras[1].register_pawn(1)
process_mode=Node.PROCESS_MODE_INHERIT
start_level()
func spawn_players_multiplayer() -> void:
var count = 0
@@ -107,7 +118,10 @@ func spawn_players_multiplayer() -> void:
@rpc("authority", "call_local")
func start_level() -> void:
await get_tree().create_timer(3.0).timeout
Game.hud.visible = true
process_mode=Node.PROCESS_MODE_INHERIT
level_started.emit()
func is_square_detected(crd) -> bool:
@@ -222,3 +236,62 @@ func add_level_hack(type : Hack.Type, facing : Vector3, crd : Vector3i) -> void:
var hack = hack_template.instantiate()
hack.setup(type, facing, -1)
add_hack(hack, crd)
func show_win_screen() -> void:
#TODO: INITIATE WIN SCREEN
pass
func show_lose_screen() -> void:
#TODO: INITIATE LOSE SCREEN
pass
@rpc("authority", "call_local")
func end_level(winner_id : int) -> void:
if Multiplayer.id == winner_id:
show_win_screen()
else:
show_lose_screen()
var win_tween := create_tween()
win_tween.set_pause_mode(Tween.TWEEN_PAUSE_PROCESS)
win_tween.tween_property(get_tree(), "paused", true, 0)
win_tween.tween_interval(5)
win_tween.tween_property(get_tree(), "paused", false, 0)
#TODO: MOVE TO THE REMATCH SCREEN
func check_survival_win() -> void:
var dead = 0
var last_living = -1
for pc : PawnController in pawns.values():
if pc.is_dead():
dead += 1
else:
last_living = pc.id
if dead == len(pawns) - 1:
end_level.rpc(last_living)
func check_data_win() -> void:
var pcounts : Dictionary = {}
for id in pawns.keys():
pcounts[id] = 0
var highest = 0
var high_id = -1
for key in keys:
pcounts[key] += 1
if pcounts[key] > highest:
highest = pcounts[key]
high_id = key
if highest >= ceil(max_keys / 2.0):
end_level.rpc(high_id)
@rpc("any_peer", "call_local")
func award_data_key(player_id : int) -> void:
if len(keys) >= max_keys:
return
keys.append(player_id)
keys_changed.emit()
if Multiplayer.is_host():
check_data_win()

View File

@@ -0,0 +1,19 @@
extends Control
var keys_slots : Array = []
func _ready() -> void:
for slot : LevelKeysSlot in $KeyIcons.get_children():
slot.reset()
keys_slots.append(slot)
func update() -> void:
if Game.level == null:
return
#keys = Game.level.keys
#for i in range(len(keys_slots)):
#if i < len(keys):
#keys_slots[i].set(keys[i])
#else:
#keys_slots[i].visible = false
pass

View File

@@ -0,0 +1 @@
uid://3imn5hdj8u25

View File

@@ -0,0 +1,7 @@
class_name LevelKeysSlot extends TextureRect
func reset() -> void:
#TODO: Make this reset their appearance and visibility
visible = false
pass

View File

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

View File

@@ -1,23 +1 @@
extends MultiplayerSpawner
func _ready() -> void:
print(Multiplayer.get_local_ip())
if Game.net_test:
await get_tree().create_timer(0.25).timeout
Multiplayer.join_game("123")
else:
Multiplayer.handle = "456"
Multiplayer.become_host()
await get_tree().create_timer(2).timeout
var pids = Multiplayer.players.values()
if Multiplayer.is_host():
var ps : Dictionary[int, PawnBaseData] = {
pids[0] : load("res://data/pawns/van_reily.tres"),
pids[1] : load("res://data/pawns/lou_riche.tres")
}
Game.start_level(ps)
func _on_level_spawned(_node: Node) -> void:
Game.level_spawned.rpc_id(1, Multiplayer.id)

View File

@@ -0,0 +1,11 @@
extends Node3D
signal finished()
func _ready() -> void:
for child in get_children():
child.restart()
await get_tree().create_timer(.1).timeout
finished.emit()
queue_free()

View File

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

View File

@@ -52,9 +52,9 @@ var poison_strength : int = 0
var poison_time_remaining : float = 0
var poison_pulse_timer : float
var melee_range : float = 3.0
var melee_range : float = 1.25
var can_melee : bool = false
var ranged_range : float = 6
var ranged_range : float = 7
var attack_timer : float = 0
var melee_recovery_time : float = .75
var ranged_recovery_time : float = 0.25
@@ -348,14 +348,16 @@ func check_attack_target() -> void:
var ranged_sq = ranged_range * ranged_range
var melee_sq = melee_range * melee_range
var space_state = get_world_3d().direct_space_state
var list = get_tree().get_nodes_in_group("combat")
combat_target = null
# use global coordinates, not local to node
for target : Node3D in get_tree().get_nodes_in_group("combat"):
if target == self:
continue
#Check to see if they're within the correct direction
var angle = abs(facing.angle_to(target.global_position - global_position))
var xz_diff = (target.global_position - global_position).normalized()
xz_diff.y = 0
var angle = abs(facing.angle_to(xz_diff))
if angle > PI / 4.0:
continue
#Determine if they're within shot range
@@ -364,8 +366,8 @@ func check_attack_target() -> void:
continue
#Raycast to see if they're a valid target
var start = global_position + Vector3(0,1,0)
var end = target.global_position + Vector3(0,1,0)
var start = global_position + Vector3(0,.5,0)
var end = target.global_position + Vector3(0,.5,0)
var query = PhysicsRayQueryParameters3D.create(start, end, 1|2, [self])
var result = space_state.intersect_ray(query)
if !result or (result.collider is not PawnController and result.collider is not CombatTarget):
@@ -384,6 +386,8 @@ func check_attack_target() -> void:
can_melee = false
if ranged_closest != null:
combat_target = ranged_closest
else:
combat_target = null
combat_target_changed.emit(melee_closest != null)
func try_install_hack() -> void:
@@ -629,6 +633,9 @@ func detonate() -> void:
for hack : Hack in switch_list:
hack.activate()
func can_poison() -> bool:
return true
func is_poisoned() -> bool:
return poison_time_remaining > 0
@@ -699,7 +706,8 @@ func _on_melee_hit(_body : Node3D) -> void:
#TODO: WRITE THE MELEE DAMAGE CODE
pass
func is_flung() -> bool:
return state == State.FLUNG
func is_attacking() -> bool:
return state == State.RANGED_ATTACKING or state == State.MELEE_ATTACKING
@@ -742,6 +750,7 @@ func add_hack(type : Hack.Type) -> void:
hack_list_changed.emit(data.hacks, data.active_hack)
func add_random_hack(advanced : bool) -> void:
if !advanced:
#Get their current hack list
var choices : Dictionary = {
Hack.Type.DESTROY: true,
@@ -763,9 +772,12 @@ func add_random_hack(advanced : bool) -> void:
#TODO: Add random hack spawning using RPCs
pass
func pickup(type : Pickup.Type) -> void:
func collect_data_key() -> void:
Game.level.award_data_key.rpc(id)
func collect(type : Collectable.Type) -> void:
if id != Multiplayer.id:
return
match(type):
Pickup.Type.DATABLOCK: print("Datablock picked up!")
Pickup.Type.BASIC_HACK: add_random_hack(false)
Collectable.Type.DATAKEY: collect_data_key()
Collectable.Type.BASIC_HACK: add_random_hack(false)

View File

@@ -74,7 +74,7 @@ func _process(_delta: float) -> void:
switch_menu(wrapi(menu_choice + menu_dir, 0, len(menu_list)))
if Input.is_action_just_pressed("ui_accept"):
Game.mode = menu_list[menu_choice].mode
Game.switch_scene(menu_list[menu_choice].scene, false)
Game.switch_scene(menu_list[menu_choice].scene, false, false)
func switch_menu(new_choice : int) -> void:

14
scripts/ui_gear.gd Normal file
View File

@@ -0,0 +1,14 @@
extends Sprite2D
@export var gradient : Gradient
@export var teeth : int = 1
@export var time_per_tooth : float = 5.0
@export var clockwise : bool
var step : float
func _ready() -> void:
step = 2.0 * PI / (teeth * time_per_tooth)
modulate = gradient.sample(randf())
func _process(delta: float) -> void:
var angle = step * delta
rotate(angle if clockwise else -angle)

1
scripts/ui_gear.gd.uid Normal file
View File

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

View File

@@ -18,10 +18,12 @@
[ext_resource type="Texture2D" uid="uid://c1g5jy6w66rys" path="res://visuals/images/icons/install button.png" id="15_wc04a"]
[ext_resource type="Texture2D" uid="uid://b2tu6cwb6xftx" path="res://visuals/images/icons/lit install button.png" id="16_aid7k"]
[ext_resource type="Texture2D" uid="uid://cm8jpwerkad5s" path="res://external/empty key.png" id="17_gomyg"]
[ext_resource type="Script" uid="uid://3imn5hdj8u25" path="res://scripts/level_keys_display.gd" id="17_jiiqv"]
[ext_resource type="Texture2D" uid="uid://bxs0jj4y4clvv" path="res://visuals/images/icons/detect button.png" id="17_rpucv"]
[ext_resource type="Texture2D" uid="uid://buh1sm00l81u5" path="res://visuals/images/icons/gun.png" id="18_iv5le"]
[ext_resource type="Texture2D" uid="uid://dney1f72lglvc" path="res://external/data key.png" id="18_jiiqv"]
[ext_resource type="Texture2D" uid="uid://bxxm3c2lpmr4f" path="res://visuals/images/icons/lit detect button.png" id="18_yda1o"]
[ext_resource type="Script" uid="uid://b271comgnsm7k" path="res://scripts/level_keys_slot.gd" id="19_jf5vi"]
[ext_resource type="Texture2D" uid="uid://diyks5oxgidoo" path="res://visuals/images/icons/ranged attack button.png" id="19_k0acs"]
[ext_resource type="Texture2D" uid="uid://0ujjkgwiyveu" path="res://visuals/images/icons/lit ranged attack button.png" id="20_vhta5"]
[ext_resource type="Texture2D" uid="uid://barbcaa2xvgkk" path="res://visuals/images/icons/switch button.png" id="21_iv5le"]
@@ -37,6 +39,9 @@ gradient = SubResource("Gradient_1ghxf")
width = 1
[node name="HUD" type="Control" unique_id=1043151471]
visible = false
z_index = -4096
z_as_relative = false
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
@@ -328,7 +333,7 @@ fsr_sharpness = 2.0
canvas_item_default_texture_filter = 0
gui_disable_input = true
size = Vector2i(392, 204)
render_target_update_mode = 4
render_target_update_mode = 0
[node name="Camera3D" type="Camera3D" parent="Control/PanelContainer/HBoxContainer/VBoxContainer3/PanelContainer3/SubViewportContainer/SubViewport" unique_id=1409788025]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0, 11000, 0)
@@ -336,18 +341,20 @@ keep_aspect = 0
projection = 1
size = 25.0
[node name="Control2" type="Control" parent="Control/PanelContainer/HBoxContainer" unique_id=553237569]
[node name="LevelKeysDisplay" type="Control" parent="Control/PanelContainer/HBoxContainer" unique_id=553237569]
unique_name_in_owner = true
custom_minimum_size = Vector2(165, 0)
layout_mode = 2
script = ExtResource("17_jiiqv")
[node name="Control" type="Control" parent="Control/PanelContainer/HBoxContainer/Control2" unique_id=796737501]
[node name="KeyIcons" type="Control" parent="Control/PanelContainer/HBoxContainer/LevelKeysDisplay" unique_id=796737501]
anchors_preset = 0
offset_left = 4.0
offset_top = 73.0
offset_right = 44.0
offset_bottom = 113.0
[node name="TextureRect" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/Control2/Control" unique_id=1455316834]
[node name="TextureRect" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/LevelKeysDisplay/KeyIcons" unique_id=1455316834]
modulate = Color(1, 0, 0, 1)
custom_minimum_size = Vector2(70, 70)
layout_mode = 0
@@ -355,8 +362,9 @@ offset_right = 70.0
offset_bottom = 70.0
texture = ExtResource("17_gomyg")
expand_mode = 1
script = ExtResource("19_jf5vi")
[node name="Label" type="Label" parent="Control/PanelContainer/HBoxContainer/Control2/Control/TextureRect" unique_id=1233588231]
[node name="Label" type="Label" parent="Control/PanelContainer/HBoxContainer/LevelKeysDisplay/KeyIcons/TextureRect" unique_id=1233588231]
layout_mode = 0
offset_left = 22.0
offset_top = 6.0
@@ -367,7 +375,7 @@ text = "1"
horizontal_alignment = 1
vertical_alignment = 1
[node name="TextureRect2" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/Control2/Control" unique_id=429479574]
[node name="TextureRect2" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/LevelKeysDisplay/KeyIcons" unique_id=429479574]
modulate = Color(0.110000014, 0.45116657, 1, 1)
custom_minimum_size = Vector2(70, 70)
layout_mode = 0
@@ -376,8 +384,20 @@ offset_right = 141.0
offset_bottom = 70.0
texture = ExtResource("18_jiiqv")
expand_mode = 1
script = ExtResource("19_jf5vi")
[node name="TextureRect3" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/Control2/Control" unique_id=1785911862]
[node name="Label" type="Label" parent="Control/PanelContainer/HBoxContainer/LevelKeysDisplay/KeyIcons/TextureRect2" unique_id=1011355361]
layout_mode = 0
offset_left = 22.0
offset_top = 6.0
offset_right = 45.0
offset_bottom = 61.0
theme_override_font_sizes/font_size = 40
text = "1"
horizontal_alignment = 1
vertical_alignment = 1
[node name="TextureRect3" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/LevelKeysDisplay/KeyIcons" unique_id=1785911862]
custom_minimum_size = Vector2(70, 70)
layout_mode = 0
offset_left = 142.0
@@ -385,8 +405,20 @@ offset_right = 212.0
offset_bottom = 70.0
texture = ExtResource("18_jiiqv")
expand_mode = 1
script = ExtResource("19_jf5vi")
[node name="TextureRect4" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/Control2/Control" unique_id=1046935539]
[node name="Label" type="Label" parent="Control/PanelContainer/HBoxContainer/LevelKeysDisplay/KeyIcons/TextureRect3" unique_id=1945607791]
layout_mode = 0
offset_left = 22.0
offset_top = 6.0
offset_right = 45.0
offset_bottom = 61.0
theme_override_font_sizes/font_size = 40
text = "1"
horizontal_alignment = 1
vertical_alignment = 1
[node name="TextureRect4" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/LevelKeysDisplay/KeyIcons" unique_id=1046935539]
custom_minimum_size = Vector2(70, 70)
layout_mode = 0
offset_left = 213.0
@@ -394,8 +426,20 @@ offset_right = 283.0
offset_bottom = 70.0
texture = ExtResource("18_jiiqv")
expand_mode = 1
script = ExtResource("19_jf5vi")
[node name="TextureRect5" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/Control2/Control" unique_id=975918224]
[node name="Label" type="Label" parent="Control/PanelContainer/HBoxContainer/LevelKeysDisplay/KeyIcons/TextureRect4" unique_id=374824282]
layout_mode = 0
offset_left = 22.0
offset_top = 6.0
offset_right = 45.0
offset_bottom = 61.0
theme_override_font_sizes/font_size = 40
text = "1"
horizontal_alignment = 1
vertical_alignment = 1
[node name="TextureRect5" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/LevelKeysDisplay/KeyIcons" unique_id=975918224]
custom_minimum_size = Vector2(70, 70)
layout_mode = 0
offset_left = 284.0
@@ -403,8 +447,20 @@ offset_right = 354.0
offset_bottom = 70.0
texture = ExtResource("18_jiiqv")
expand_mode = 1
script = ExtResource("19_jf5vi")
[node name="TextureRect6" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/Control2/Control" unique_id=625210737]
[node name="Label" type="Label" parent="Control/PanelContainer/HBoxContainer/LevelKeysDisplay/KeyIcons/TextureRect5" unique_id=191777328]
layout_mode = 0
offset_left = 22.0
offset_top = 6.0
offset_right = 45.0
offset_bottom = 61.0
theme_override_font_sizes/font_size = 40
text = "1"
horizontal_alignment = 1
vertical_alignment = 1
[node name="TextureRect6" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/LevelKeysDisplay/KeyIcons" unique_id=625210737]
custom_minimum_size = Vector2(70, 70)
layout_mode = 0
offset_left = 35.0
@@ -413,8 +469,20 @@ offset_right = 105.0
offset_bottom = 124.0
texture = ExtResource("18_jiiqv")
expand_mode = 1
script = ExtResource("19_jf5vi")
[node name="TextureRect7" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/Control2/Control" unique_id=1245961877]
[node name="Label" type="Label" parent="Control/PanelContainer/HBoxContainer/LevelKeysDisplay/KeyIcons/TextureRect6" unique_id=496418171]
layout_mode = 0
offset_left = 22.0
offset_top = 6.0
offset_right = 45.0
offset_bottom = 61.0
theme_override_font_sizes/font_size = 40
text = "1"
horizontal_alignment = 1
vertical_alignment = 1
[node name="TextureRect7" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/LevelKeysDisplay/KeyIcons" unique_id=1245961877]
custom_minimum_size = Vector2(70, 70)
layout_mode = 0
offset_left = 106.0
@@ -423,8 +491,20 @@ offset_right = 176.0
offset_bottom = 124.0
texture = ExtResource("18_jiiqv")
expand_mode = 1
script = ExtResource("19_jf5vi")
[node name="TextureRect8" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/Control2/Control" unique_id=378708755]
[node name="Label" type="Label" parent="Control/PanelContainer/HBoxContainer/LevelKeysDisplay/KeyIcons/TextureRect7" unique_id=685392140]
layout_mode = 0
offset_left = 22.0
offset_top = 6.0
offset_right = 45.0
offset_bottom = 61.0
theme_override_font_sizes/font_size = 40
text = "1"
horizontal_alignment = 1
vertical_alignment = 1
[node name="TextureRect8" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/LevelKeysDisplay/KeyIcons" unique_id=378708755]
custom_minimum_size = Vector2(70, 70)
layout_mode = 0
offset_left = 177.0
@@ -433,8 +513,20 @@ offset_right = 247.0
offset_bottom = 124.0
texture = ExtResource("18_jiiqv")
expand_mode = 1
script = ExtResource("19_jf5vi")
[node name="TextureRect9" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/Control2/Control" unique_id=1740281858]
[node name="Label" type="Label" parent="Control/PanelContainer/HBoxContainer/LevelKeysDisplay/KeyIcons/TextureRect8" unique_id=258308481]
layout_mode = 0
offset_left = 22.0
offset_top = 6.0
offset_right = 45.0
offset_bottom = 61.0
theme_override_font_sizes/font_size = 40
text = "1"
horizontal_alignment = 1
vertical_alignment = 1
[node name="TextureRect9" type="TextureRect" parent="Control/PanelContainer/HBoxContainer/LevelKeysDisplay/KeyIcons" unique_id=1740281858]
custom_minimum_size = Vector2(70, 70)
layout_mode = 0
offset_left = 248.0
@@ -443,8 +535,20 @@ offset_right = 318.0
offset_bottom = 124.0
texture = ExtResource("18_jiiqv")
expand_mode = 1
script = ExtResource("19_jf5vi")
[node name="Label" type="Label" parent="Control/PanelContainer/HBoxContainer/Control2" unique_id=1986296155]
[node name="Label" type="Label" parent="Control/PanelContainer/HBoxContainer/LevelKeysDisplay/KeyIcons/TextureRect9" unique_id=1252017015]
layout_mode = 0
offset_left = 22.0
offset_top = 6.0
offset_right = 45.0
offset_bottom = 61.0
theme_override_font_sizes/font_size = 40
text = "1"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Label" type="Label" parent="Control/PanelContainer/HBoxContainer/LevelKeysDisplay" unique_id=1986296155]
layout_mode = 0
offset_left = 20.0
offset_top = -2.0

View File

@@ -1,7 +1,7 @@
[gd_scene load_steps=8 format=4 uid="uid://dyvov4i48mqoi"]
[gd_scene format=4 uid="uid://dyvov4i48mqoi"]
[ext_resource type="Script" uid="uid://du3s0b1kotb6l" path="res://scripts/collectable.gd" id="1_mbwd5"]
[ext_resource type="Texture2D" uid="uid://b7s2n7xcvntpl" path="res://models/datablock_0.png" id="2_vuv4s"]
[ext_resource type="Script" uid="uid://du3s0b1kotb6l" path="res://scripts/collectable.gd" id="1_qkhpq"]
[ext_resource type="Texture2D" uid="uid://b7s2n7xcvntpl" path="res://models/datablock_0.png" id="2_awic7"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ucvlk"]
resource_name = "material_0"
@@ -9,7 +9,7 @@ transparency = 2
alpha_scissor_threshold = 0.05
alpha_antialiasing_mode = 0
cull_mode = 2
albedo_texture = ExtResource("2_vuv4s")
albedo_texture = ExtResource("2_awic7")
texture_filter = 0
texture_repeat = false
@@ -52,29 +52,29 @@ specular_mode = 1
disable_ambient_light = true
disable_fog = true
disable_specular_occlusion = true
albedo_texture = ExtResource("2_vuv4s")
albedo_texture = ExtResource("2_awic7")
emission_enabled = true
emission = Color(1, 1, 1, 1)
emission_energy_multiplier = 1.66
emission_operator = 1
emission_texture = ExtResource("2_vuv4s")
emission_texture = ExtResource("2_awic7")
texture_filter = 0
[sub_resource type="BoxShape3D" id="BoxShape3D_5c3s5"]
size = Vector3(0.6, 0.6, 0.6)
[node name="Datablock Pickup" type="Area3D"]
[node name="Datakey Collectable" type="Area3D" unique_id=829925049]
collision_layer = 0
collision_mask = 2
script = ExtResource("1_mbwd5")
script = ExtResource("1_qkhpq")
[node name="mesh" type="MeshInstance3D" parent="."]
[node name="mesh" type="MeshInstance3D" parent="." unique_id=351493120]
transform = Transform3D(0.21338832, -0.036611654, 0.125, 0.125, 0.125, -0.17677669, -0.036611654, 0.21338832, 0.125, 0.0036189556, 0.63486314, -0.1206578)
mesh = SubResource("ArrayMesh_v5j1m")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_lnid6")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=1633579945]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.63486314, 0)
shape = SubResource("BoxShape3D_5c3s5")

View File

@@ -45,6 +45,7 @@ _surfaces = [{
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_4gip8"]
resource_local_to_scene = true
resource_name = "blockbench_export_mesh"
_surfaces = [{
"aabb": AABB(-0.59375, 0.4375, -0.69375, 1.1875, 0.125, 1.3875),

View File

@@ -0,0 +1,93 @@
[gd_scene format=3 uid="uid://blr4vdwnwgflw"]
[ext_resource type="Script" uid="uid://wgdonh5sgkbj" path="res://scripts/particle_preloader.gd" id="1_ujj5j"]
[ext_resource type="PackedScene" uid="uid://bflg720h1w3d3" path="res://experimental/BinbunVFX/impact_explosions/effects/explosion/vfx_explosion_01.tscn" id="2_hv0mh"]
[ext_resource type="PackedScene" uid="uid://dato0qpbqvwnj" path="res://experimental/BinbunVFX/impact_explosions/effects/explosion/vfx_explosion_02.tscn" id="3_53l37"]
[ext_resource type="PackedScene" uid="uid://cdsloy1kvhikp" path="res://experimental/BinbunVFX/impact_explosions/effects/explosion/vfx_explosion_03.tscn" id="4_tjw5m"]
[ext_resource type="PackedScene" uid="uid://cl82y5gxnb8d6" path="res://experimental/BinbunVFX/impact_explosions/effects/explosion/vfx_explosion_04.tscn" id="5_6v5k1"]
[ext_resource type="PackedScene" uid="uid://shl0iw1x775r" path="res://experimental/BinbunVFX/impact_explosions/effects/explosion/vfx_explosion_05.tscn" id="6_ohors"]
[ext_resource type="PackedScene" uid="uid://bjru1p8jhdp1b" path="res://experimental/BinbunVFX/impact_explosions/effects/explosion/vfx_explosion_06.tscn" id="7_adiwo"]
[ext_resource type="Texture2D" uid="uid://qs7mgm4vors6" path="res://visuals/textures/T_smoke_b7.png" id="8_3qfno"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_iiolj"]
transparency = 1
vertex_color_use_as_albedo = true
vertex_color_is_srgb = true
albedo_texture = ExtResource("8_3qfno")
billboard_mode = 3
billboard_keep_scale = true
particles_anim_h_frames = 1
particles_anim_v_frames = 1
particles_anim_loop = false
proximity_fade_enabled = true
[sub_resource type="Curve" id="Curve_ycwsw"]
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.25201073, 0.5114823), 1.9835948, 1.9835948, 0, 0, Vector2(0.81233245, 0.4979124), -1.8980947, -1.8980947, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
point_count = 4
[sub_resource type="CurveTexture" id="CurveTexture_6ouu1"]
curve = SubResource("Curve_ycwsw")
[sub_resource type="Gradient" id="Gradient_p2vhn"]
offsets = PackedFloat32Array(0, 0.5129683, 1)
colors = PackedColorArray(0, 1, 0, 1, 0.5660992, 0.4395883, 0.22195616, 1, 0.46846813, 0.00015392214, 0.46846473, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_3hj10"]
gradient = SubResource("Gradient_p2vhn")
use_hdr = true
[sub_resource type="Curve" id="Curve_5qnhd"]
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.36461127, 0.4979124), 0.0, 0.0, 0, 0, Vector2(0.71581775, 0.5318372), 0.0, 0.0, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0]
point_count = 4
[sub_resource type="CurveTexture" id="CurveTexture_qumvk"]
curve = SubResource("Curve_5qnhd")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_8dlm7"]
particle_flag_rotate_y = true
emission_shape = 3
emission_box_extents = Vector3(0.35, 0.1, 0.35)
angle_min = -179.99998
angle_max = 180.00002
direction = Vector3(0, 1, 0)
spread = 0.0
initial_velocity_min = 1.0
initial_velocity_max = 1.5
angular_velocity_min = -50.000015
angular_velocity_max = 49.99998
gravity = Vector3(0, 0, 0)
scale_max = 1.35
scale_curve = SubResource("CurveTexture_qumvk")
color = Color(1.5257139, 1.5257139, 1.5257139, 1)
color_ramp = SubResource("GradientTexture1D_3hj10")
alpha_curve = SubResource("CurveTexture_6ouu1")
[sub_resource type="QuadMesh" id="QuadMesh_pkgnv"]
[node name="Particle Preloader" type="Node3D" unique_id=1060355138]
process_mode = 3
script = ExtResource("1_ujj5j")
[node name="VFXExplosion_01" parent="." unique_id=1915848858 instance=ExtResource("2_hv0mh")]
[node name="VFXExplosion_02" parent="." unique_id=1672456492 instance=ExtResource("3_53l37")]
[node name="VFXExplosion_03" parent="." unique_id=1493313628 instance=ExtResource("4_tjw5m")]
[node name="VFXExplosion_04" parent="." unique_id=1390196907 instance=ExtResource("5_6v5k1")]
[node name="VFXExplosion_05" parent="." unique_id=2086130807 instance=ExtResource("6_ohors")]
[node name="VFXExplosion_06" parent="." unique_id=780537582 instance=ExtResource("7_adiwo")]
[node name="ParticleFX" type="GPUParticles3D" parent="." unique_id=1139919787]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0, 0.5)
material_override = SubResource("StandardMaterial3D_iiolj")
emitting = false
amount = 25
one_shot = true
explosiveness = 0.18
fixed_fps = 60
process_material = SubResource("ParticleProcessMaterial_8dlm7")
draw_pass_1 = SubResource("QuadMesh_pkgnv")

View File

@@ -11,7 +11,7 @@
[ext_resource type="Script" uid="uid://cvuoq81ipid2o" path="res://scripts/pawn_input.gd" id="22_pnc3q"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_a5wj7"]
radius = 0.25
radius = 0.22
height = 0.75
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_h27ep"]
@@ -50,10 +50,7 @@ floor_constant_speed = true
floor_max_angle = 0.93549645
floor_snap_length = 1.0
script = ExtResource("1_h27ep")
pawn_name = null
speed = 2.25
id = null
state = null
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=1404919876]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.375, 0)

BIN
templates/pawns/a.scn Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

BIN
templates/pawns/b.scn Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

BIN
templates/pawns/c.scn Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

BIN
templates/pawns/d.scn Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

BIN
templates/pawns/e.scn Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

BIN
templates/pawns/f.scn Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -1,40 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://lyw6lp8xkiy3"
path="res://.godot/imported/button-attack-hit.png-d7e4a89fb392a5df3773a46ec9552aa0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://visuals/images/icons/button-attack-hit.png"
dest_files=["res://.godot/imported/button-attack-hit.png-d7e4a89fb392a5df3773a46ec9552aa0.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -1,40 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://0aggjegou04w"
path="res://.godot/imported/button-attack.png-aae1d515aaf5dd607c4796e9455110fd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://visuals/images/icons/button-attack.png"
dest_files=["res://.godot/imported/button-attack.png-aae1d515aaf5dd607c4796e9455110fd.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -1,40 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dsvto2ala6jgl"
path="res://.godot/imported/button-detect-hit.png-0a631165f030cd9b654f89a609007a8a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://visuals/images/icons/button-detect-hit.png"
dest_files=["res://.godot/imported/button-detect-hit.png-0a631165f030cd9b654f89a609007a8a.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

Some files were not shown because too many files have changed in this diff Show More