added some sound triggers and holes in the map

This commit is contained in:
Lexi Quinn 2023-12-17 02:02:16 +11:00
parent 046c4f5afb
commit e1a867d2a9
99 changed files with 1375 additions and 239 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ctjktwiq2fcjm"
path="res://.godot/imported/gun.png-6adaeb1547ed5ef4c0cdeaf82c51750f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Textures/gun.png"
dest_files=["res://.godot/imported/gun.png-6adaeb1547ed5ef4c0cdeaf82c51750f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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=0

View File

@ -1,9 +1,16 @@
[gd_scene load_steps=5 format=3 uid="uid://bbfm4i4xlkwdr"]
[gd_scene load_steps=7 format=3 uid="uid://bbfm4i4xlkwdr"]
[ext_resource type="PackedScene" uid="uid://dumiyjlnea4gq" path="res://Scenes/Towers/hitscan_tower.tscn" id="1_uadu5"]
[ext_resource type="Resource" uid="uid://bdmsiw45xxhiv" path="res://PCs/Universal/ClassCards/Assault/tower_stats.tres" id="2_gg1gn"]
[ext_resource type="Script" path="res://PCs/Universal/ClassCards/Assault/tower_assault.gd" id="2_olbck"]
[ext_resource type="ArrayMesh" uid="uid://oxjhqfwlcx5l" path="res://PCs/Universal/ClassCards/Assault/assaultmod.res" id="4_1d5pl"]
[ext_resource type="AudioStream" uid="uid://chrf1dcq2ujw0" path="res://PCs/Universal/ClassCards/Assault/shot1.wav" id="5_3eokp"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_dagyn"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("5_3eokp")
stream_0/weight = 1.0
[node name="AssaultTower" instance=ExtResource("1_uadu5")]
script = ExtResource("2_olbck")
@ -15,3 +22,6 @@ visible = false
[node name="Yaw" parent="." index="2"]
transform = Transform3D(0.4, 0, 0, 0, 0.4, 0, 0, 0, 0.4, 0, 0.910336, 0)
mesh = ExtResource("4_1d5pl")
[node name="AudioStreamPlayer3D" parent="Yaw" index="0"]
stream = SubResource("AudioStreamRandomizer_dagyn")

View File

@ -1,15 +1,25 @@
[gd_scene load_steps=5 format=3 uid="uid://2eehfcrsednw"]
[gd_scene load_steps=7 format=3 uid="uid://2eehfcrsednw"]
[ext_resource type="PackedScene" uid="uid://difwo7wlyqr3h" path="res://Scenes/Weapons/hitscan_weapon.tscn" id="1_wkxf7"]
[ext_resource type="Resource" uid="uid://smctw4ogm4rx" path="res://PCs/Universal/ClassCards/Assault/weapon_stats.tres" id="2_fnp5x"]
[ext_resource type="Texture2D" uid="uid://celay30i4soud" path="res://PCs/Universal/ClassCards/Assault/g_assault.png" id="3_kuj4t"]
[ext_resource type="AudioStream" uid="uid://chrf1dcq2ujw0" path="res://PCs/Universal/ClassCards/Assault/shot1.wav" id="4_gdaci"]
[sub_resource type="AtlasTexture" id="AtlasTexture_604rb"]
atlas = ExtResource("3_kuj4t")
region = Rect2(0, 0, 64, 64)
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_rhtcf"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("4_gdaci")
stream_0/weight = 1.0
[node name="HitscanWeapon" instance=ExtResource("1_wkxf7")]
stats = ExtResource("2_fnp5x")
[node name="Sprite3D" parent="." index="0"]
texture = SubResource("AtlasTexture_604rb")
[node name="AudioStreamPlayer3D" parent="." index="5"]
stream = SubResource("AudioStreamRandomizer_rhtcf")

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cu654fn5nke3n"
path="res://.godot/imported/shot1.wav-78e06a311d17e9a99b5460b8cf398081.sample"
[deps]
source_file="res://PCs/Universal/ClassCards/Blowdart/shot1.wav"
dest_files=["res://.godot/imported/shot1.wav-78e06a311d17e9a99b5460b8cf398081.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=0

View File

@ -1,10 +1,17 @@
[gd_scene load_steps=6 format=3 uid="uid://cq5q6c28pwi47"]
[gd_scene load_steps=8 format=3 uid="uid://cq5q6c28pwi47"]
[ext_resource type="PackedScene" uid="uid://dxwtlvv632ae8" path="res://Scenes/Towers/status_applying_tower.tscn" id="1_lnpfa"]
[ext_resource type="Script" path="res://PCs/Universal/ClassCards/Blowdart/tower_blowdart.gd" id="2_s3qd0"]
[ext_resource type="Resource" uid="uid://cbskijhnnj3kw" path="res://Resources/StatusEffects/poisoned.tres" id="3_ix50y"]
[ext_resource type="Resource" uid="uid://cfbap4o68urti" path="res://PCs/Universal/ClassCards/Blowdart/tower_stats.tres" id="4_1w7pa"]
[ext_resource type="ArrayMesh" uid="uid://yxho5jipkwi2" path="res://PCs/Universal/ClassCards/Blowdart/blowdart.res" id="5_2kqqw"]
[ext_resource type="AudioStream" uid="uid://cu654fn5nke3n" path="res://PCs/Universal/ClassCards/Blowdart/shot1.wav" id="6_t1f1q"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_kor5l"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("6_t1f1q")
stream_0/weight = 1.0
[node name="BlowdartTower" instance=ExtResource("1_lnpfa")]
script = ExtResource("2_s3qd0")
@ -17,3 +24,6 @@ visible = false
[node name="Yaw" parent="." index="2"]
transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0, 0.614838, 0)
mesh = ExtResource("5_2kqqw")
[node name="AudioStreamPlayer3D" parent="Yaw" index="0"]
stream = SubResource("AudioStreamRandomizer_kor5l")

View File

@ -1,15 +1,22 @@
[gd_scene load_steps=7 format=3 uid="uid://cy05ssd52exf0"]
[gd_scene load_steps=9 format=3 uid="uid://cy05ssd52exf0"]
[ext_resource type="PackedScene" uid="uid://nrdexcyatika" path="res://Scenes/Weapons/status_applying_weapon.tscn" id="1_t3gfv"]
[ext_resource type="Script" path="res://PCs/Universal/ClassCards/Blowdart/weapon_blowdart.gd" id="2_g1m1f"]
[ext_resource type="Resource" uid="uid://cbskijhnnj3kw" path="res://Resources/StatusEffects/poisoned.tres" id="3_wculg"]
[ext_resource type="Resource" uid="uid://c6e50linnk2i7" path="res://PCs/Universal/ClassCards/Blowdart/weapon_stats.tres" id="4_dwqec"]
[ext_resource type="Texture2D" uid="uid://dnlplq8duves3" path="res://PCs/Universal/ClassCards/Blowdart/blowdart.png" id="5_rvf06"]
[ext_resource type="AudioStream" uid="uid://cu654fn5nke3n" path="res://PCs/Universal/ClassCards/Blowdart/shot1.wav" id="6_bfygd"]
[sub_resource type="AtlasTexture" id="AtlasTexture_85web"]
atlas = ExtResource("5_rvf06")
region = Rect2(0, 0, 64, 64)
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_5ni0y"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("6_bfygd")
stream_0/weight = 1.0
[node name="BlowdartWeapon" instance=ExtResource("1_t3gfv")]
script = ExtResource("2_g1m1f")
status_stats = ExtResource("3_wculg")
@ -17,3 +24,6 @@ stats = ExtResource("4_dwqec")
[node name="Sprite3D" parent="." index="0"]
texture = SubResource("AtlasTexture_85web")
[node name="AudioStreamPlayer3D" parent="." index="5"]
stream = SubResource("AudioStreamRandomizer_5ni0y")

View File

@ -1,12 +1,19 @@
[gd_scene load_steps=5 format=3 uid="uid://c8oq5unisjqne"]
[gd_scene load_steps=7 format=3 uid="uid://c8oq5unisjqne"]
[ext_resource type="PackedScene" uid="uid://7f4dfphgiswr" path="res://Scenes/Projectiles/explosive_projectile.tscn" id="1_kf2wi"]
[ext_resource type="Script" path="res://PCs/Universal/ClassCards/BombLauncher/bomb_projectile.gd" id="2_qvo4u"]
[ext_resource type="Texture2D" uid="uid://b54d5dc4jmlau" path="res://PCs/Universal/ClassCards/BombLauncher/bomb.png" id="3_ilhep"]
[ext_resource type="AudioStream" uid="uid://qeav4v23p0dd" path="res://PCs/Universal/ClassCards/BombLauncher/shot1.wav" id="4_uh8y6"]
[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_bbpul"]
bounce = 0.6
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_sy5qq"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("4_uh8y6")
stream_0/weight = 1.0
[node name="Bomb" instance=ExtResource("1_kf2wi")]
physics_material_override = SubResource("PhysicsMaterial_bbpul")
gravity_scale = 1.0
@ -15,3 +22,6 @@ script = ExtResource("2_qvo4u")
[node name="Sprite3D" parent="." index="1"]
pixel_size = 0.015
texture = ExtResource("3_ilhep")
[node name="AudioStreamPlayer" parent="." index="2"]
stream = SubResource("AudioStreamRandomizer_sy5qq")

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://qeav4v23p0dd"
path="res://.godot/imported/shot1.wav-fa29c3f3a3731a42845971d7b6bc801d.sample"
[deps]
source_file="res://PCs/Universal/ClassCards/BombLauncher/shot1.wav"
dest_files=["res://.godot/imported/shot1.wav-fa29c3f3a3731a42845971d7b6bc801d.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=0

View File

@ -1,10 +1,17 @@
[gd_scene load_steps=6 format=3 uid="uid://d2cch7qrwocg8"]
[gd_scene load_steps=8 format=3 uid="uid://d2cch7qrwocg8"]
[ext_resource type="PackedScene" uid="uid://t0b32qb8eub2" path="res://Scenes/Towers/projectile_tower.tscn" id="1_r8hbo"]
[ext_resource type="Script" path="res://PCs/Universal/ClassCards/BombLauncher/tower_bomb_launcher.gd" id="2_vlaa6"]
[ext_resource type="PackedScene" uid="uid://c8oq5unisjqne" path="res://PCs/Universal/ClassCards/BombLauncher/bomb_projectile.tscn" id="3_562if"]
[ext_resource type="Resource" uid="uid://8eaecilvan23" path="res://PCs/Universal/ClassCards/BombLauncher/tower_stats.tres" id="4_xgwj1"]
[ext_resource type="ArrayMesh" uid="uid://cbuu5w43qins8" path="res://PCs/Universal/ClassCards/BombLauncher/bombamodel.res" id="5_yixga"]
[ext_resource type="AudioStream" uid="uid://qeav4v23p0dd" path="res://PCs/Universal/ClassCards/BombLauncher/shot1.wav" id="6_mc58j"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_svy8m"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("6_mc58j")
stream_0/weight = 1.0
[node name="BombLauncherTower" instance=ExtResource("1_r8hbo")]
script = ExtResource("2_vlaa6")
@ -17,3 +24,6 @@ visible = false
[node name="Yaw" parent="." index="2"]
transform = Transform3D(0.4, 0, 0, 0, 0.4, 0, 0, 0, 0.4, 0, 0.870628, 0)
mesh = ExtResource("5_yixga")
[node name="AudioStreamPlayer3D" parent="Yaw" index="0"]
stream = SubResource("AudioStreamRandomizer_svy8m")

View File

@ -1,15 +1,22 @@
[gd_scene load_steps=7 format=3 uid="uid://c3fqlkytyc62u"]
[gd_scene load_steps=9 format=3 uid="uid://c3fqlkytyc62u"]
[ext_resource type="PackedScene" uid="uid://bqdllitxbbpyp" path="res://Scenes/Weapons/projectile_weapon.tscn" id="1_gbycb"]
[ext_resource type="Script" path="res://PCs/Universal/ClassCards/BombLauncher/weapon_bomb_launcher.gd" id="2_g5ihb"]
[ext_resource type="Resource" uid="uid://co6eorobj1xuu" path="res://PCs/Universal/ClassCards/BombLauncher/weapon_stats.tres" id="3_73ol1"]
[ext_resource type="PackedScene" uid="uid://c8oq5unisjqne" path="res://PCs/Universal/ClassCards/BombLauncher/bomb_projectile.tscn" id="3_jxt6m"]
[ext_resource type="Texture2D" uid="uid://3qcdx7n440sc" path="res://PCs/Universal/ClassCards/BombLauncher/grenade_launcher.png" id="5_iyrt8"]
[ext_resource type="AudioStream" uid="uid://qeav4v23p0dd" path="res://PCs/Universal/ClassCards/BombLauncher/shot1.wav" id="6_rg62n"]
[sub_resource type="AtlasTexture" id="AtlasTexture_4fobv"]
atlas = ExtResource("5_iyrt8")
region = Rect2(0, 0, 64, 64)
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_l37cm"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("6_rg62n")
stream_0/weight = 1.0
[node name="BombLauncherWeapon" instance=ExtResource("1_gbycb")]
script = ExtResource("2_g5ihb")
projectile_scene = ExtResource("3_jxt6m")
@ -17,3 +24,6 @@ stats = ExtResource("3_73ol1")
[node name="Sprite3D" parent="." index="0"]
texture = SubResource("AtlasTexture_4fobv")
[node name="AudioStreamPlayer3D" parent="." index="3"]
stream = SubResource("AudioStreamRandomizer_l37cm")

View File

@ -1,9 +1,15 @@
[gd_scene load_steps=5 format=3 uid="uid://ddpixntjsbpqp"]
[gd_scene load_steps=7 format=3 uid="uid://ddpixntjsbpqp"]
[ext_resource type="PackedScene" uid="uid://beq6rn0babncg" path="res://Scenes/Projectiles/status_applying_projectile.tscn" id="1_a8cjq"]
[ext_resource type="Script" path="res://PCs/Universal/ClassCards/Fireball/fireball_projectile.gd" id="2_rin44"]
[ext_resource type="Resource" uid="uid://dbanx8taicddm" path="res://Resources/StatusEffects/on_fire.tres" id="3_vb4ff"]
[ext_resource type="Texture2D" uid="uid://baarbcx0nxi7w" path="res://PCs/Universal/ClassCards/Fireball/fireball_projectile.png" id="4_uua74"]
[ext_resource type="AudioStream" uid="uid://cxiluyamsxson" path="res://PCs/Universal/ClassCards/Fireball/shot1.wav" id="5_k3tme"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_bxaub"]
streams_count = 1
stream_0/stream = ExtResource("5_k3tme")
stream_0/weight = 1.0
[node name="Fireball" instance=ExtResource("1_a8cjq")]
script = ExtResource("2_rin44")
@ -11,3 +17,6 @@ status_stats = ExtResource("3_vb4ff")
[node name="Sprite3D" parent="." index="1"]
texture = ExtResource("4_uua74")
[node name="AudioStreamPlayer" parent="." index="2"]
stream = SubResource("AudioStreamRandomizer_bxaub")

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cxiluyamsxson"
path="res://.godot/imported/shot1.wav-a6c3d67021884f782a6abd99d0e98ec9.sample"
[deps]
source_file="res://PCs/Universal/ClassCards/Fireball/shot1.wav"
dest_files=["res://.godot/imported/shot1.wav-a6c3d67021884f782a6abd99d0e98ec9.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=0

View File

@ -1,10 +1,17 @@
[gd_scene load_steps=6 format=3 uid="uid://dwwgvgn0ds8tk"]
[gd_scene load_steps=8 format=3 uid="uid://dwwgvgn0ds8tk"]
[ext_resource type="PackedScene" uid="uid://t0b32qb8eub2" path="res://Scenes/Towers/projectile_tower.tscn" id="1_rkdu6"]
[ext_resource type="Script" path="res://PCs/Universal/ClassCards/Fireball/tower_fireball.gd" id="2_td8dh"]
[ext_resource type="PackedScene" uid="uid://ddpixntjsbpqp" path="res://PCs/Universal/ClassCards/Fireball/fireball_projectile.tscn" id="3_1akv8"]
[ext_resource type="Resource" uid="uid://dnvqghpwyuw84" path="res://PCs/Universal/ClassCards/Fireball/tower_stats.tres" id="4_uu77s"]
[ext_resource type="ArrayMesh" uid="uid://d34yiqnnaie8r" path="res://PCs/Universal/ClassCards/Fireball/magetowermesh.res" id="5_7rkfh"]
[ext_resource type="AudioStream" uid="uid://cxiluyamsxson" path="res://PCs/Universal/ClassCards/Fireball/shot1.wav" id="6_201kn"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_gwg27"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("6_201kn")
stream_0/weight = 1.0
[node name="FireballTower" instance=ExtResource("1_rkdu6")]
script = ExtResource("2_td8dh")
@ -17,3 +24,6 @@ mesh = ExtResource("5_7rkfh")
[node name="Yaw" parent="." index="2"]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 1.74532, 0)
[node name="AudioStreamPlayer3D" parent="Yaw" index="0"]
stream = SubResource("AudioStreamRandomizer_gwg27")

View File

@ -1,15 +1,22 @@
[gd_scene load_steps=7 format=3 uid="uid://dnwjfb4fexr0o"]
[gd_scene load_steps=9 format=3 uid="uid://dnwjfb4fexr0o"]
[ext_resource type="PackedScene" uid="uid://bqdllitxbbpyp" path="res://Scenes/Weapons/projectile_weapon.tscn" id="1_7k6fb"]
[ext_resource type="Script" path="res://PCs/Universal/ClassCards/Fireball/weapon_fireball.gd" id="2_nprco"]
[ext_resource type="PackedScene" uid="uid://ddpixntjsbpqp" path="res://PCs/Universal/ClassCards/Fireball/fireball_projectile.tscn" id="3_2j1mm"]
[ext_resource type="Resource" uid="uid://dhwhwicgpw7yh" path="res://PCs/Universal/ClassCards/Fireball/weapon_stats.tres" id="4_rqdnu"]
[ext_resource type="Texture2D" uid="uid://mwgpnnm3g3re" path="res://PCs/Universal/ClassCards/Fireball/fireball.png" id="5_r42ic"]
[ext_resource type="AudioStream" uid="uid://cxiluyamsxson" path="res://PCs/Universal/ClassCards/Fireball/shot1.wav" id="6_o5rjg"]
[sub_resource type="AtlasTexture" id="AtlasTexture_hfmm6"]
atlas = ExtResource("5_r42ic")
region = Rect2(0, 0, 64, 64)
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_6xq8y"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("6_o5rjg")
stream_0/weight = 1.0
[node name="FireballWeapon" instance=ExtResource("1_7k6fb")]
script = ExtResource("2_nprco")
projectile_scene = ExtResource("3_2j1mm")
@ -17,3 +24,6 @@ stats = ExtResource("4_rqdnu")
[node name="Sprite3D" parent="." index="0"]
texture = SubResource("AtlasTexture_hfmm6")
[node name="AudioStreamPlayer3D" parent="." index="3"]
stream = SubResource("AudioStreamRandomizer_6xq8y")

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://1j0rquv4awjs"
path="res://.godot/imported/shot1.wav-15ad34c3cdcc73672886a504b191d3b6.sample"
[deps]
source_file="res://PCs/Universal/ClassCards/Gatling/shot1.wav"
dest_files=["res://.godot/imported/shot1.wav-15ad34c3cdcc73672886a504b191d3b6.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=0

View File

@ -1,9 +1,16 @@
[gd_scene load_steps=5 format=3 uid="uid://bjuc3x7u3f271"]
[gd_scene load_steps=7 format=3 uid="uid://bjuc3x7u3f271"]
[ext_resource type="PackedScene" uid="uid://dumiyjlnea4gq" path="res://Scenes/Towers/hitscan_tower.tscn" id="1_su74p"]
[ext_resource type="Script" path="res://PCs/Universal/ClassCards/Gatling/tower_gatling.gd" id="2_ipjp1"]
[ext_resource type="Resource" uid="uid://nxl5wabgl36t" path="res://PCs/Universal/ClassCards/Gatling/tower_stats.tres" id="3_oicqw"]
[ext_resource type="ArrayMesh" uid="uid://dler7wcqj0bm6" path="res://PCs/Universal/ClassCards/Gatling/gattlemesh.res" id="4_wihc0"]
[ext_resource type="AudioStream" uid="uid://1j0rquv4awjs" path="res://PCs/Universal/ClassCards/Gatling/shot1.wav" id="5_vv714"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_wpani"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("5_vv714")
stream_0/weight = 1.0
[node name="GatlingTower" instance=ExtResource("1_su74p")]
script = ExtResource("2_ipjp1")
@ -15,3 +22,6 @@ visible = false
[node name="Yaw" parent="." index="2"]
transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0.426474, 0)
mesh = ExtResource("4_wihc0")
[node name="AudioStreamPlayer3D" parent="Yaw" index="0"]
stream = SubResource("AudioStreamRandomizer_wpani")

View File

@ -1,17 +1,27 @@
[gd_scene load_steps=6 format=3 uid="uid://dkxi1ssoa44jn"]
[gd_scene load_steps=8 format=3 uid="uid://dkxi1ssoa44jn"]
[ext_resource type="PackedScene" uid="uid://difwo7wlyqr3h" path="res://Scenes/Weapons/hitscan_weapon.tscn" id="1_fwlu5"]
[ext_resource type="Resource" uid="uid://cj2x1jvo8l4ot" path="res://PCs/Universal/ClassCards/Gatling/weapon_stats.tres" id="2_fnyjd"]
[ext_resource type="Texture2D" uid="uid://bjh6e8t8br6rq" path="res://PCs/Universal/ClassCards/Gatling/gatling.png" id="2_rv8ps"]
[ext_resource type="Script" path="res://PCs/Universal/ClassCards/Gatling/weapon_gatling.gd" id="2_wm4al"]
[ext_resource type="AudioStream" uid="uid://1j0rquv4awjs" path="res://PCs/Universal/ClassCards/Gatling/shot1.wav" id="5_gelfi"]
[sub_resource type="AtlasTexture" id="AtlasTexture_0im1y"]
atlas = ExtResource("2_rv8ps")
region = Rect2(0, 0, 64, 64)
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_778e1"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("5_gelfi")
stream_0/weight = 1.0
[node name="WeaponGatling" instance=ExtResource("1_fwlu5")]
script = ExtResource("2_wm4al")
stats = ExtResource("2_fnyjd")
[node name="Sprite3D" parent="." index="0"]
texture = SubResource("AtlasTexture_0im1y")
[node name="AudioStreamPlayer3D" parent="." index="5"]
stream = SubResource("AudioStreamRandomizer_778e1")

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://v3j5lw827y85"
path="res://.godot/imported/shot1.wav-db076f5c083450b42f0cdc587938c661.sample"
[deps]
source_file="res://PCs/Universal/ClassCards/GlueLauncher/shot1.wav"
dest_files=["res://.godot/imported/shot1.wav-db076f5c083450b42f0cdc587938c661.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=0

View File

@ -1,10 +1,17 @@
[gd_scene load_steps=6 format=3 uid="uid://bb44pintbwdcf"]
[gd_scene load_steps=8 format=3 uid="uid://bb44pintbwdcf"]
[ext_resource type="PackedScene" uid="uid://dxwtlvv632ae8" path="res://Scenes/Towers/status_applying_tower.tscn" id="1_r1dvg"]
[ext_resource type="Script" path="res://PCs/Universal/ClassCards/GlueLauncher/tower_glue_launcher.gd" id="2_ot8fu"]
[ext_resource type="Resource" uid="uid://d0643gfp52x3s" path="res://Resources/StatusEffects/sticky.tres" id="3_ibb53"]
[ext_resource type="Resource" uid="uid://bvkwgmbxje0dp" path="res://PCs/Universal/ClassCards/GlueLauncher/tower_stats.tres" id="4_etcd4"]
[ext_resource type="ArrayMesh" uid="uid://cehyrhbd7pu83" path="res://PCs/Universal/ClassCards/GlueLauncher/glue_launcher_model.res" id="5_dsftx"]
[ext_resource type="AudioStream" uid="uid://v3j5lw827y85" path="res://PCs/Universal/ClassCards/GlueLauncher/shot1.wav" id="6_lntow"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_r4ak7"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("6_lntow")
stream_0/weight = 1.0
[node name="GlueLauncherTower" instance=ExtResource("1_r1dvg")]
script = ExtResource("2_ot8fu")
@ -17,3 +24,6 @@ visible = false
[node name="Yaw" parent="." index="2"]
transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0.484804, 0)
mesh = ExtResource("5_dsftx")
[node name="AudioStreamPlayer3D" parent="Yaw" index="0"]
stream = SubResource("AudioStreamRandomizer_r4ak7")

View File

@ -1,15 +1,22 @@
[gd_scene load_steps=7 format=3 uid="uid://takm6diuy71m"]
[gd_scene load_steps=9 format=3 uid="uid://takm6diuy71m"]
[ext_resource type="PackedScene" uid="uid://nrdexcyatika" path="res://Scenes/Weapons/status_applying_weapon.tscn" id="1_7v0k2"]
[ext_resource type="Script" path="res://PCs/Universal/ClassCards/GlueLauncher/weapon_glue_launcher.gd" id="2_12ex2"]
[ext_resource type="Resource" uid="uid://d0643gfp52x3s" path="res://Resources/StatusEffects/sticky.tres" id="3_xtk6n"]
[ext_resource type="Resource" uid="uid://boj1ho5x0sxtq" path="res://PCs/Universal/ClassCards/GlueLauncher/weapon_stats.tres" id="4_c3ve8"]
[ext_resource type="Texture2D" uid="uid://oblavj8vj30n" path="res://PCs/Universal/ClassCards/GlueLauncher/glue_gun.png" id="5_obawu"]
[ext_resource type="AudioStream" uid="uid://v3j5lw827y85" path="res://PCs/Universal/ClassCards/GlueLauncher/shot1.wav" id="6_6qk7c"]
[sub_resource type="AtlasTexture" id="AtlasTexture_ehcsl"]
atlas = ExtResource("5_obawu")
region = Rect2(0, 0, 64, 64)
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_cc15t"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("6_6qk7c")
stream_0/weight = 1.0
[node name="GlueLauncherWeapon" instance=ExtResource("1_7v0k2")]
script = ExtResource("2_12ex2")
status_stats = ExtResource("3_xtk6n")
@ -17,3 +24,6 @@ stats = ExtResource("4_c3ve8")
[node name="Sprite3D" parent="." index="0"]
texture = SubResource("AtlasTexture_ehcsl")
[node name="AudioStreamPlayer3D" parent="." index="5"]
stream = SubResource("AudioStreamRandomizer_cc15t")

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dgqmtmty7ekmc"
path="res://.godot/imported/shot1.wav-d09921580ed339ffa76c05931456a288.sample"
[deps]
source_file="res://PCs/Universal/ClassCards/Icicle/shot1.wav"
dest_files=["res://.godot/imported/shot1.wav-d09921580ed339ffa76c05931456a288.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=0

View File

@ -1,10 +1,17 @@
[gd_scene load_steps=6 format=3 uid="uid://miawrarbb1up"]
[gd_scene load_steps=8 format=3 uid="uid://miawrarbb1up"]
[ext_resource type="PackedScene" uid="uid://t0b32qb8eub2" path="res://Scenes/Towers/projectile_tower.tscn" id="1_d6g88"]
[ext_resource type="Script" path="res://PCs/Universal/ClassCards/Icicle/tower_icicle.gd" id="2_qcpgh"]
[ext_resource type="PackedScene" uid="uid://dyurjxotdkf1u" path="res://PCs/Universal/ClassCards/Icicle/icicle_projectile.tscn" id="3_o4uqf"]
[ext_resource type="Resource" uid="uid://d34bfj5togyyt" path="res://PCs/Universal/ClassCards/Icicle/tower_stats.tres" id="4_3il5a"]
[ext_resource type="ArrayMesh" uid="uid://d34yiqnnaie8r" path="res://PCs/Universal/ClassCards/Fireball/magetowermesh.res" id="5_soa3a"]
[ext_resource type="AudioStream" uid="uid://dgqmtmty7ekmc" path="res://PCs/Universal/ClassCards/Icicle/shot1.wav" id="6_ce8qo"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_wmia4"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("6_ce8qo")
stream_0/weight = 1.0
[node name="IcicleTower" instance=ExtResource("1_d6g88")]
script = ExtResource("2_qcpgh")
@ -17,3 +24,6 @@ mesh = ExtResource("5_soa3a")
[node name="Yaw" parent="." index="2"]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 1.745, 0)
[node name="AudioStreamPlayer3D" parent="Yaw" index="0"]
stream = SubResource("AudioStreamRandomizer_wmia4")

View File

@ -1,15 +1,22 @@
[gd_scene load_steps=7 format=3 uid="uid://v3iuf4lt2iff"]
[gd_scene load_steps=9 format=3 uid="uid://v3iuf4lt2iff"]
[ext_resource type="PackedScene" uid="uid://bqdllitxbbpyp" path="res://Scenes/Weapons/projectile_weapon.tscn" id="1_oi7x1"]
[ext_resource type="Script" path="res://PCs/Universal/ClassCards/Icicle/weapon_icicle.gd" id="2_6wbx0"]
[ext_resource type="PackedScene" uid="uid://dyurjxotdkf1u" path="res://PCs/Universal/ClassCards/Icicle/icicle_projectile.tscn" id="3_cwl2u"]
[ext_resource type="Resource" uid="uid://ckjmym1ofww4" path="res://PCs/Universal/ClassCards/Icicle/weapon_stats.tres" id="4_r8ss5"]
[ext_resource type="Texture2D" uid="uid://mqo5qcghfit8" path="res://PCs/Universal/ClassCards/Icicle/icicle.png" id="5_iremk"]
[ext_resource type="AudioStream" uid="uid://dgqmtmty7ekmc" path="res://PCs/Universal/ClassCards/Icicle/shot1.wav" id="6_ilpsp"]
[sub_resource type="AtlasTexture" id="AtlasTexture_7uf3s"]
atlas = ExtResource("5_iremk")
region = Rect2(0, 0, 64, 64)
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_1vtjq"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("6_ilpsp")
stream_0/weight = 1.0
[node name="IcicleWeapon" instance=ExtResource("1_oi7x1")]
script = ExtResource("2_6wbx0")
projectile_scene = ExtResource("3_cwl2u")
@ -17,3 +24,6 @@ stats = ExtResource("4_r8ss5")
[node name="Sprite3D" parent="." index="0"]
texture = SubResource("AtlasTexture_7uf3s")
[node name="AudioStreamPlayer3D" parent="." index="3"]
stream = SubResource("AudioStreamRandomizer_1vtjq")

View File

@ -1,8 +1,15 @@
[gd_scene load_steps=4 format=3 uid="uid://p2vwo8ivben6"]
[gd_scene load_steps=6 format=3 uid="uid://p2vwo8ivben6"]
[ext_resource type="PackedScene" uid="uid://di2wwvkv4wov1" path="res://Scenes/Projectiles/homing_projectile.tscn" id="1_fnn4i"]
[ext_resource type="Script" path="res://PCs/Universal/ClassCards/RocketLauncher/rocket_projectile.gd" id="2_86up0"]
[ext_resource type="Texture2D" uid="uid://bode8mfmr3r1h" path="res://PCs/Universal/ClassCards/RocketLauncher/rocket.png" id="3_aonkx"]
[ext_resource type="AudioStream" uid="uid://n0w2kj5j2x4e" path="res://PCs/Universal/ClassCards/RocketLauncher/shot1.wav" id="4_i5kff"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_4rf40"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("4_i5kff")
stream_0/weight = 1.0
[node name="Rocket" instance=ExtResource("1_fnn4i")]
script = ExtResource("2_86up0")
@ -10,3 +17,6 @@ script = ExtResource("2_86up0")
[node name="Sprite3D" parent="." index="1"]
pixel_size = 0.013
texture = ExtResource("3_aonkx")
[node name="AudioStreamPlayer" parent="." index="2"]
stream = SubResource("AudioStreamRandomizer_4rf40")

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://n0w2kj5j2x4e"
path="res://.godot/imported/shot1.wav-18762deaf24e973b86a8e08bec34699a.sample"
[deps]
source_file="res://PCs/Universal/ClassCards/RocketLauncher/shot1.wav"
dest_files=["res://.godot/imported/shot1.wav-18762deaf24e973b86a8e08bec34699a.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=0

View File

@ -1,9 +1,16 @@
[gd_scene load_steps=5 format=3 uid="uid://b3q0f6w30nwsh"]
[gd_scene load_steps=7 format=3 uid="uid://b3q0f6w30nwsh"]
[ext_resource type="PackedScene" uid="uid://t0b32qb8eub2" path="res://Scenes/Towers/projectile_tower.tscn" id="1_su4lx"]
[ext_resource type="Script" path="res://PCs/Universal/ClassCards/RocketLauncher/tower_rocket_launcher.gd" id="2_33124"]
[ext_resource type="PackedScene" uid="uid://p2vwo8ivben6" path="res://PCs/Universal/ClassCards/RocketLauncher/rocket_projectile.tscn" id="3_8kvhb"]
[ext_resource type="ArrayMesh" uid="uid://dltxsh8ppubj3" path="res://PCs/Universal/ClassCards/RocketLauncher/rocket_launcher_model.res" id="4_1rycx"]
[ext_resource type="AudioStream" uid="uid://n0w2kj5j2x4e" path="res://PCs/Universal/ClassCards/RocketLauncher/shot1.wav" id="5_nd3i8"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_7k8gw"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("5_nd3i8")
stream_0/weight = 1.0
[node name="RocketLauncherTower" instance=ExtResource("1_su4lx")]
script = ExtResource("2_33124")
@ -15,3 +22,6 @@ visible = false
[node name="Yaw" parent="." index="2"]
transform = Transform3D(0.4, 0, 0, 0, 0.4, 0, 0, 0, 0.4, 0, 0.667653, 0)
mesh = ExtResource("4_1rycx")
[node name="AudioStreamPlayer3D" parent="Yaw" index="0"]
stream = SubResource("AudioStreamRandomizer_7k8gw")

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=10 format=3 uid="uid://bdp7icdejayvr"]
[gd_scene load_steps=12 format=3 uid="uid://bdp7icdejayvr"]
[ext_resource type="PackedScene" uid="uid://bqdllitxbbpyp" path="res://Scenes/Weapons/projectile_weapon.tscn" id="1_gxaua"]
[ext_resource type="Script" path="res://PCs/Universal/ClassCards/RocketLauncher/weapon_rocket_launcher.gd" id="2_8x1tf"]
@ -7,6 +7,7 @@
[ext_resource type="Resource" uid="uid://d2yo07m2mp2mp" path="res://PCs/Universal/ClassCards/RocketLauncher/weapon_stats.tres" id="3_i1hxj"]
[ext_resource type="Texture2D" uid="uid://by1y15lm0bppe" path="res://PCs/Universal/ClassCards/RocketLauncher/rocket_launcher.png" id="4_iygkf"]
[ext_resource type="Texture2D" uid="uid://cc2umukpibmx1" path="res://PCs/Universal/ClassCards/RocketLauncher/target_list.png" id="6_jlv88"]
[ext_resource type="AudioStream" uid="uid://n0w2kj5j2x4e" path="res://PCs/Universal/ClassCards/RocketLauncher/shot1.wav" id="8_genbv"]
[sub_resource type="AtlasTexture" id="AtlasTexture_f4p4w"]
atlas = ExtResource("4_iygkf")
@ -16,6 +17,12 @@ region = Rect2(0, 0, 64, 64)
atlas = ExtResource("6_jlv88")
region = Rect2(0, 0, 128, 128)
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_5w2i3"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("8_genbv")
stream_0/weight = 1.0
[node name="RocketLauncher" node_paths=PackedStringArray("targeting_raycast", "targeting_ui_rect") instance=ExtResource("1_gxaua")]
script = ExtResource("2_8x1tf")
target_icon_scene = ExtResource("3_2x5va")
@ -44,3 +51,6 @@ offset_bottom = 20.0
grow_horizontal = 2
grow_vertical = 2
texture = SubResource("AtlasTexture_ewxon")
[node name="AudioStreamPlayer3D" parent="." index="5"]
stream = SubResource("AudioStreamRandomizer_5w2i3")

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bixe14jkki8be"
path="res://.godot/imported/shot1.wav-13562b9b3eaf17be1db6ad31e447b748.sample"
[deps]
source_file="res://PCs/Universal/ClassCards/Sniper/shot1.wav"
dest_files=["res://.godot/imported/shot1.wav-13562b9b3eaf17be1db6ad31e447b748.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=0

View File

@ -1,9 +1,16 @@
[gd_scene load_steps=5 format=3 uid="uid://bt4qbc5lp4nhr"]
[gd_scene load_steps=7 format=3 uid="uid://bt4qbc5lp4nhr"]
[ext_resource type="PackedScene" uid="uid://dumiyjlnea4gq" path="res://Scenes/Towers/hitscan_tower.tscn" id="1_x1nem"]
[ext_resource type="Script" path="res://PCs/Universal/ClassCards/Sniper/tower_sniper.gd" id="2_v5fr7"]
[ext_resource type="Resource" uid="uid://eb0by6ba1d43" path="res://PCs/Universal/ClassCards/Sniper/tower_stats.tres" id="3_a0vis"]
[ext_resource type="ArrayMesh" uid="uid://bu35or5yc5j4c" path="res://PCs/Universal/ClassCards/Sniper/snipermodel.res" id="4_156p4"]
[ext_resource type="AudioStream" uid="uid://bixe14jkki8be" path="res://PCs/Universal/ClassCards/Sniper/shot1.wav" id="5_esi1l"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_johsd"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("5_esi1l")
stream_0/weight = 1.0
[node name="HitscanTower" instance=ExtResource("1_x1nem")]
script = ExtResource("2_v5fr7")
@ -15,3 +22,6 @@ visible = false
[node name="Yaw" parent="." index="2"]
transform = Transform3D(0.4, 0, 0, 0, 0.4, 0, 0, 0, 0.4, 0, 0.765984, 0)
mesh = ExtResource("4_156p4")
[node name="AudioStreamPlayer3D" parent="Yaw" index="0"]
stream = SubResource("AudioStreamRandomizer_johsd")

View File

@ -1,15 +1,22 @@
[gd_scene load_steps=7 format=3 uid="uid://bd65e03fscyxr"]
[gd_scene load_steps=9 format=3 uid="uid://bd65e03fscyxr"]
[ext_resource type="PackedScene" uid="uid://difwo7wlyqr3h" path="res://Scenes/Weapons/hitscan_weapon.tscn" id="1_6ph0d"]
[ext_resource type="Script" path="res://PCs/Universal/ClassCards/Sniper/weapon_sniper.gd" id="2_r0w4v"]
[ext_resource type="Texture2D" uid="uid://bepgxu7wtcl1i" path="res://PCs/Universal/ClassCards/Sniper/scopetest.png" id="3_fhx8q"]
[ext_resource type="Resource" uid="uid://3y7n1vdvf822" path="res://PCs/Universal/ClassCards/Sniper/weapon_stats.tres" id="3_mmfq3"]
[ext_resource type="Texture2D" uid="uid://cv2eycs1j0ho7" path="res://PCs/Universal/ClassCards/Sniper/g_sniper.png" id="4_ub37g"]
[ext_resource type="AudioStream" uid="uid://bixe14jkki8be" path="res://PCs/Universal/ClassCards/Sniper/shot1.wav" id="6_pd8iu"]
[sub_resource type="AtlasTexture" id="AtlasTexture_cussn"]
atlas = ExtResource("4_ub37g")
region = Rect2(0, 0, 64, 64)
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_x11yr"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("6_pd8iu")
stream_0/weight = 1.0
[node name="HitscanWeapon" node_paths=PackedStringArray("scope_mask") instance=ExtResource("1_6ph0d")]
script = ExtResource("2_r0w4v")
scope_mask = NodePath("CanvasLayer")
@ -28,3 +35,6 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("3_fhx8q")
[node name="AudioStreamPlayer3D" parent="." index="6"]
stream = SubResource("AudioStreamRandomizer_x11yr")

View File

@ -9,6 +9,7 @@ signal died
@export var camera: Camera3D
@export var gun_camera: Camera3D
@export var left_hand_sprite: Sprite3D
@export var card_sprites: Array[CardInHand]
@export var left_hand: Node3D
@export var right_hand: Node3D
@export var right_hand_animator: AnimationPlayer
@ -18,7 +19,6 @@ signal died
@export var hand_sprite: Sprite2D
@export var interaction_raycast: RayCast3D
@export var inventory: Inventory
@export var card: CardInHand
@export var gauntlet_card_1: CardInHand
@export var gauntlet_card_2: CardInHand
@export var pause_menu_scene: PackedScene
@ -29,6 +29,7 @@ signal died
@export var weapon_swap_timer: Timer
@export var ears: AudioListener3D
var inventory_selected_index := 0
var equipped_card
var offhand_card
var weapon: Weapon
@ -68,7 +69,8 @@ func _ready() -> void:
hud.set_visible(false)
if weapon != null:
weapon.set_raycast_origin(camera)
inventory.contents.append_array(hero_class.deck)
for card in hero_class.deck:
inventory.add(card)
sprite.texture.atlas = hero_class.texture
check_left_hand_valid()
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
@ -100,9 +102,9 @@ func _process(delta: float) -> void:
hud.unset_hover_text()
if edit_tool.is_looking_at_tower_base:
card.view_tower()
card_sprites[0].view_tower()
else:
card.view_weapon()
card_sprites[0].view_weapon()
if Input.is_action_just_pressed("Interact"):
edit_tool.interact()
if interaction_raycast.get_collider() is InteractButton:
@ -117,9 +119,11 @@ func _process(delta: float) -> void:
if Input.is_action_just_pressed("Secondary Fire"):
swap_weapons()
if Input.is_action_just_pressed("Select Next Card"):
inventory.increment_selected()
increment_selected()
$AudioStreamPlayer.play()
if Input.is_action_just_pressed("Select Previous Card"):
inventory.decrement_selected()
decrement_selected()
$AudioStreamPlayer.play()
if Input.is_action_just_pressed("Primary Fire"):
edit_tool.interact_key_held = true
if Input.is_action_just_released("Primary Fire"):
@ -160,6 +164,18 @@ func _process(delta: float) -> void:
check_left_hand_valid()
func increment_selected():
inventory_selected_index += 1
if inventory_selected_index >= inventory.contents.keys().size():
inventory_selected_index = 0
func decrement_selected():
inventory_selected_index -= 1
if inventory_selected_index < 0:
inventory_selected_index = inventory.contents.keys().size() - 1
func _unhandled_input(event: InputEvent) -> void:
if !is_multiplayer_authority() or paused:
return
@ -167,6 +183,8 @@ func _unhandled_input(event: InputEvent) -> void:
edit_tool.interact_key_held = false
if !ready_state:
ready_state = true
hud.shrink_wave_start_label()
$AudioStreamPlayer.play()
networked_set_ready_state.rpc(ready_state)
if event.is_action_pressed("Pause"):
var menu = pause_menu_scene.instantiate() as PauseMenu
@ -211,7 +229,6 @@ func exit_editing_mode(value):
gauntlet_sprite.set_visible(false)
weapons_active = false
hud.set_wave_count(value)
hud.shrink_wave_start_label()
if !weapon and offhand_weapon:
swap_weapons()
if weapon:
@ -233,21 +250,31 @@ func exit_editing_mode(value):
func check_left_hand_valid():
if !editing_mode:
return
if inventory.contents.size() == 0:
if inventory.size == 0:
left_hand_sprite.set_visible(false)
#gauntlet.texture.region = Rect2(64, 0, 64, 64)
else:
left_hand_sprite.set_visible(true)
#gauntlet.texture.region = Rect2(0, 0, 64, 64)
card.set_card(inventory.selected_item)
var selected_card = inventory.contents.keys()[inventory_selected_index]
for index in card_sprites.size():
if index < inventory.contents[selected_card]:
card_sprites[index].set_visible(true)
card_sprites[index].set_card(selected_card)
#card_sprites[index].view_weapon()
else:
card_sprites[index].set_visible(false)
func equip_weapon():
if weapon != null:
unequip_weapon()
return
if inventory.contents.size() > 0:
equipped_card = inventory.remove()
if inventory.size > 0:
$AudioStreamPlayer.play()
equipped_card = inventory.remove_at(inventory_selected_index)
if !inventory.contents.has(equipped_card):
decrement_selected()
networked_equip_weapon.rpc(Data.cards.find(equipped_card))
weapon = equipped_card.weapon_scene.instantiate()
weapon.energy_changed.connect(hud.set_weapon_energy)
@ -263,30 +290,11 @@ func equip_weapon():
check_left_hand_valid()
func equip_in_offhand():
if offhand_weapon != null:
unequip_weapon()
return
if inventory.contents.size() > 0:
offhand_card = inventory.remove()
networked_equip_offhand_weapon.rpc(Data.cards.find(offhand_card))
offhand_weapon = offhand_card.weapon_scene.instantiate()
offhand_weapon.energy_changed.connect(hud.set_weapon_energy)
#offhand_weapon.name = "weapon"
offhand_weapon.set_multiplayer_authority(multiplayer.get_unique_id())
#gauntlet_sprite.set_visible(false)
gauntlet_card_2.set_card(offhand_card)
gauntlet_card_2.view_weapon()
gauntlet_card_2.set_visible(true)
offhand_weapon.set_hero(self)
offhand_weapon.set_visible(false)
right_hand.add_child(offhand_weapon)
check_left_hand_valid()
func swap_weapons():
if !editing_mode:
weapons_active = false
if weapon or offhand_weapon:
$AudioStreamPlayer.play()
var temp = offhand_weapon
var temp_card = offhand_card
if weapon:
@ -327,6 +335,7 @@ func swap_weapons():
func _on_timer_timeout() -> void:
weapons_active = true
if weapon:
$AudioStreamPlayer.play()
weapon.set_visible(true)
@ -338,17 +347,7 @@ func unequip_weapon():
weapon = null
inventory.add(equipped_card)
equipped_card = null
check_left_hand_valid()
func unequip_offhand_weapon():
networked_unequip_offhand_weapon.rpc()
gauntlet_card_2.set_visible(false)
#gauntlet_sprite.set_visible(true)
offhand_weapon.queue_free()
offhand_weapon = null
inventory.add(offhand_card)
offhand_card = null
$AudioStreamPlayer.play()
check_left_hand_valid()
@ -368,27 +367,9 @@ func networked_equip_weapon(card_index):
right_hand.add_child(weapon)
@rpc("reliable")
func networked_equip_offhand_weapon(card_index):
equipped_card = Data.cards[card_index]
offhand_weapon = equipped_card.weapon_scene.instantiate()
offhand_weapon.set_multiplayer_authority(multiplayer.get_remote_sender_id())
#weapon.name = "weapon"
offhand_weapon.set_hero(self)
right_hand.add_child(offhand_weapon)
@rpc("reliable")
func networked_unequip_weapon():
weapon.queue_free()
weapon = null
inventory.add(equipped_card)
equipped_card = null
@rpc("reliable")
func networked_unequip_offhand_weapon():
offhand_weapon.queue_free()
offhand_weapon = null
inventory.add(equipped_card)
offhand_card = null

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=38 format=3 uid="uid://dxgxbtf68lcv5"]
[gd_scene load_steps=40 format=3 uid="uid://dxgxbtf68lcv5"]
[ext_resource type="Script" path="res://PCs/hero.gd" id="1_pihpe"]
[ext_resource type="Resource" uid="uid://b5pc3frhx467q" path="res://PCs/Red/red.tres" id="2_dbyo0"]
@ -23,6 +23,7 @@
[ext_resource type="Script" path="res://PCs/player_movement.gd" id="20_cfhw8"]
[ext_resource type="Shader" path="res://crosshair.gdshader" id="20_gxpgc"]
[ext_resource type="Texture2D" uid="uid://r202vo47jw1q" path="res://Assets/Textures/enemyhealth.png" id="21_apps2"]
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://shot1.wav" id="24_gg2dy"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_jbu13"]
@ -95,7 +96,13 @@ properties/1/path = NodePath(".:rotation")
properties/1/spawn = true
properties/1/replication_mode = 2
[node name="Hero" type="CharacterBody3D" node_paths=PackedStringArray("camera", "gun_camera", "left_hand_sprite", "left_hand", "right_hand", "right_hand_animator", "edit_tool", "gauntlet_sprite", "sprite", "hand_sprite", "interaction_raycast", "inventory", "card", "gauntlet_card_1", "gauntlet_card_2", "hud", "movement", "player_name_tag", "weapon_swap_timer", "ears")]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_wyb7c"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("24_gg2dy")
stream_0/weight = 1.0
[node name="Hero" type="CharacterBody3D" node_paths=PackedStringArray("camera", "gun_camera", "left_hand_sprite", "card_sprites", "left_hand", "right_hand", "right_hand_animator", "edit_tool", "gauntlet_sprite", "sprite", "hand_sprite", "interaction_raycast", "inventory", "gauntlet_card_1", "gauntlet_card_2", "hud", "movement", "player_name_tag", "weapon_swap_timer", "ears")]
collision_layer = 2
collision_mask = 37
script = ExtResource("1_pihpe")
@ -103,6 +110,7 @@ hero_class = ExtResource("2_dbyo0")
camera = NodePath("ViewMovement/Head")
gun_camera = NodePath("FirstPersonViewport/Head2")
left_hand_sprite = NodePath("FirstPersonViewport/Head2/LeftHand/Sprite3D")
card_sprites = [NodePath("FirstPersonViewport/Head2/LeftHand/SubViewport/Node2D"), NodePath("FirstPersonViewport/Head2/LeftHand/SubViewport/Node2D3"), NodePath("FirstPersonViewport/Head2/LeftHand/SubViewport/Node2D2")]
left_hand = NodePath("FirstPersonViewport/Head2/LeftHand")
right_hand = NodePath("FirstPersonViewport/Head2/RightHand")
right_hand_animator = NodePath("FirstPersonViewport/Head2/RightHand/AnimationPlayer")
@ -112,7 +120,6 @@ sprite = NodePath("EightDirectionSprite")
hand_sprite = NodePath("FirstPersonViewport/Head2/LeftHand/SubViewport/Sprite2D")
interaction_raycast = NodePath("ViewMovement/Head/RayCast3D")
inventory = NodePath("Inventory")
card = NodePath("FirstPersonViewport/Head2/LeftHand/SubViewport/Node2D")
gauntlet_card_1 = NodePath("FirstPersonViewport/Head2/LeftHand/SubViewport2/Node2D")
gauntlet_card_2 = NodePath("FirstPersonViewport/Head2/LeftHand/SubViewport3/Node2D")
pause_menu_scene = ExtResource("3_avnsx")
@ -184,13 +191,21 @@ transform = Transform3D(0.235, 0, 0, 0, 0.235, 0, 0, 0, 0.235, -0.665, -0.275, -
[node name="SubViewport" type="SubViewport" parent="FirstPersonViewport/Head2/LeftHand"]
transparent_bg = true
size = Vector2i(512, 1024)
render_target_update_mode = 4
[node name="Node2D2" parent="FirstPersonViewport/Head2/LeftHand/SubViewport" instance=ExtResource("4_mwtvp")]
position = Vector2(0, 48)
[node name="Node2D3" parent="FirstPersonViewport/Head2/LeftHand/SubViewport" instance=ExtResource("4_mwtvp")]
position = Vector2(0, 152)
[node name="Node2D" parent="FirstPersonViewport/Head2/LeftHand/SubViewport" instance=ExtResource("4_mwtvp")]
position = Vector2(0, 256)
[node name="Sprite2D" type="Sprite2D" parent="FirstPersonViewport/Head2/LeftHand/SubViewport"]
texture_filter = 1
position = Vector2(256, 256)
position = Vector2(256, 512)
scale = Vector2(8, 8)
texture = ExtResource("9_gxh2h")
@ -630,4 +645,8 @@ one_shot = true
[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."]
replication_config = SubResource("SceneReplicationConfig_tsiqi")
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = SubResource("AudioStreamRandomizer_wyb7c")
bus = &"SFX"
[connection signal="timeout" from="WeaponSwapTimer" to="." method="_on_timer_timeout"]

View File

@ -1,6 +1,13 @@
[gd_scene load_steps=2 format=3 uid="uid://6a277g802os0"]
[gd_scene load_steps=4 format=3 uid="uid://6a277g802os0"]
[ext_resource type="Script" path="res://Scripts/alert_popup.gd" id="1_cac03"]
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://shot1.wav" id="2_h7kij"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_veol0"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("2_h7kij")
stream_0/weight = 1.0
[node name="Control" type="PanelContainer"]
anchors_preset = 8
@ -24,4 +31,9 @@ layout_mode = 2
size_flags_horizontal = 8
text = "OK"
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = SubResource("AudioStreamRandomizer_veol0")
bus = &"SFX"
[connection signal="mouse_entered" from="VBoxContainer/Button" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="VBoxContainer/Button" to="." method="_on_button_pressed"]

View File

@ -1,4 +1,110 @@
[gd_scene format=3 uid="uid://bwc45ogto8thn"]
[gd_scene load_steps=3 format=3 uid="uid://bwc45ogto8thn"]
[node name="Audio" type="VBoxContainer"]
visible = false
[ext_resource type="Script" path="res://Scripts/audio_options.gd" id="1_avc0j"]
[sub_resource type="ImageTexture" id="ImageTexture_hvvdd"]
[node name="Audio" type="VBoxContainer" node_paths=PackedStringArray("master_input", "master_slider", "music_input", "music_slider", "sfx_input", "sfx_slider")]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_avc0j")
master_input = NodePath("Master/HBoxContainer/SpinBox")
master_slider = NodePath("Master/HBoxContainer/HSlider")
music_input = NodePath("Music/HBoxContainer/SpinBox")
music_slider = NodePath("Music/HBoxContainer/HSlider")
sfx_input = NodePath("SFX/HBoxContainer/SpinBox")
sfx_slider = NodePath("SFX/HBoxContainer/HSlider")
[node name="Master" type="HBoxContainer" parent="."]
layout_mode = 2
[node name="Label" type="Label" parent="Master"]
layout_mode = 2
size_flags_horizontal = 3
text = "Master"
horizontal_alignment = 1
vertical_alignment = 1
[node name="HBoxContainer" type="HBoxContainer" parent="Master"]
layout_mode = 2
size_flags_horizontal = 3
[node name="SpinBox" type="SpinBox" parent="Master/HBoxContainer"]
layout_mode = 2
theme_override_icons/updown = SubResource("ImageTexture_hvvdd")
value = 100.0
rounded = true
alignment = 1
update_on_text_changed = true
[node name="HSlider" type="HSlider" parent="Master/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 1
value = 100.0
[node name="Music" type="HBoxContainer" parent="."]
layout_mode = 2
[node name="Label" type="Label" parent="Music"]
layout_mode = 2
size_flags_horizontal = 3
text = "Music"
horizontal_alignment = 1
vertical_alignment = 1
[node name="HBoxContainer" type="HBoxContainer" parent="Music"]
layout_mode = 2
size_flags_horizontal = 3
[node name="SpinBox" type="SpinBox" parent="Music/HBoxContainer"]
layout_mode = 2
theme_override_icons/updown = SubResource("ImageTexture_hvvdd")
value = 100.0
rounded = true
alignment = 1
update_on_text_changed = true
[node name="HSlider" type="HSlider" parent="Music/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 1
value = 100.0
[node name="SFX" type="HBoxContainer" parent="."]
layout_mode = 2
[node name="Label" type="Label" parent="SFX"]
layout_mode = 2
size_flags_horizontal = 3
text = "SFX"
horizontal_alignment = 1
vertical_alignment = 1
[node name="HBoxContainer" type="HBoxContainer" parent="SFX"]
layout_mode = 2
size_flags_horizontal = 3
[node name="SpinBox" type="SpinBox" parent="SFX/HBoxContainer"]
layout_mode = 2
theme_override_icons/updown = SubResource("ImageTexture_hvvdd")
value = 100.0
rounded = true
alignment = 1
update_on_text_changed = true
[node name="HSlider" type="HSlider" parent="SFX/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 1
value = 100.0
[connection signal="value_changed" from="Master/HBoxContainer/SpinBox" to="." method="_on_master_spin_box_value_changed"]
[connection signal="value_changed" from="Master/HBoxContainer/HSlider" to="." method="_on_master_h_slider_value_changed"]
[connection signal="value_changed" from="Music/HBoxContainer/SpinBox" to="." method="_on_music_spin_box_value_changed"]
[connection signal="value_changed" from="Music/HBoxContainer/HSlider" to="." method="_on_music_h_slider_value_changed"]
[connection signal="value_changed" from="SFX/HBoxContainer/SpinBox" to="." method="_on_sfx_spin_box_value_changed"]
[connection signal="value_changed" from="SFX/HBoxContainer/HSlider" to="." method="_on_sfx_h_slider_value_changed"]

View File

@ -1,6 +1,13 @@
[gd_scene load_steps=2 format=3 uid="uid://f46qh73hrk4y"]
[gd_scene load_steps=4 format=3 uid="uid://f46qh73hrk4y"]
[ext_resource type="Script" path="res://Scripts/confirmation_popup.gd" id="1_x7akt"]
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://shot1.wav" id="2_hgqp4"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_22wuj"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("2_hgqp4")
stream_0/weight = 1.0
[node name="ConfirmationPopup" type="PanelContainer"]
anchors_preset = 8
@ -34,5 +41,11 @@ text = "Confirm"
layout_mode = 2
text = "Cancel"
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = SubResource("AudioStreamRandomizer_22wuj")
bus = &"SFX"
[connection signal="mouse_entered" from="VBoxContainer/HBoxContainer/Confirm" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="VBoxContainer/HBoxContainer/Confirm" to="." method="_on_confirm_pressed"]
[connection signal="mouse_entered" from="VBoxContainer/HBoxContainer/Cancel" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="VBoxContainer/HBoxContainer/Cancel" to="." method="_on_cancel_pressed"]

View File

@ -1,6 +1,13 @@
[gd_scene load_steps=2 format=3 uid="uid://dsydnch32qh2h"]
[gd_scene load_steps=4 format=3 uid="uid://dsydnch32qh2h"]
[ext_resource type="Script" path="res://Scripts/lost_game_screen.gd" id="1_1pne8"]
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://shot1.wav" id="2_sjvor"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_ddnd1"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("2_sjvor")
stream_0/weight = 1.0
[node name="Control" type="Control"]
layout_mode = 3
@ -32,6 +39,54 @@ offset_bottom = 26.0
grow_horizontal = 2
text = "You Lost"
[node name="Label2" type="Label" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 0.5
offset_left = -95.0
offset_top = 305.0
offset_right = 38.0
offset_bottom = 350.0
grow_horizontal = 2
text = "You Lost"
[node name="Label3" type="Label" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 0.5
offset_left = -897.0
offset_top = 120.0
offset_right = -509.0
offset_bottom = 165.0
grow_horizontal = 2
text = "Total games played: 315"
[node name="Label4" type="Label" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 0.5
offset_left = -901.0
offset_top = 178.0
offset_right = -513.0
offset_bottom = 223.0
grow_horizontal = 2
text = "Total wins"
[node name="Label5" type="Label" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 0.5
offset_left = -874.0
offset_top = 239.0
offset_right = -486.0
offset_bottom = 284.0
grow_horizontal = 2
text = "Total losses"
[node name="HBoxContainer" type="HBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 8
@ -54,5 +109,11 @@ text = "Play Again"
layout_mode = 2
text = "Quit to main menu"
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = SubResource("AudioStreamRandomizer_ddnd1")
bus = &"SFX"
[connection signal="mouse_entered" from="HBoxContainer/RestartButton" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="HBoxContainer/RestartButton" to="." method="_on_restart_button_pressed"]
[connection signal="mouse_entered" from="HBoxContainer/QuitButton" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="HBoxContainer/QuitButton" to="." method="_on_quit_button_pressed"]

View File

@ -1,13 +1,20 @@
[gd_scene load_steps=6 format=3 uid="uid://8yv7excojcg0"]
[gd_scene load_steps=8 format=3 uid="uid://8yv7excojcg0"]
[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://new_theme.tres" id="1_p1cib"]
[ext_resource type="Script" path="res://Scripts/main_menu.gd" id="2_ivytu"]
[ext_resource type="Texture2D" uid="uid://lvvnrb5jugum" path="res://Assets/Textures/logo_title.png" id="3_8jkeb"]
[ext_resource type="PackedScene" uid="uid://y1qa1g3ic8sp" path="res://Worlds/GreenPlanet/Levels/first_level.tscn" id="3_l8r4a"]
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://shot1.wav" id="5_4c4cl"]
[sub_resource type="ViewportTexture" id="ViewportTexture_5u75i"]
viewport_path = NodePath("SubViewport")
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_2jyua"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("5_4c4cl")
stream_0/weight = 1.0
[node name="MainMenu" type="Control" node_paths=PackedStringArray("bg_level")]
layout_mode = 3
anchors_preset = 15
@ -118,8 +125,21 @@ size = Vector2i(1920, 1080)
[node name="GridMap" parent="SubViewport" instance=ExtResource("3_l8r4a")]
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = SubResource("AudioStreamRandomizer_2jyua")
bus = &"SFX"
[node name="AudioListener3D" type="AudioListener3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 100, 0)
current = true
[connection signal="mouse_entered" from="MainControls/PlayButton" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="MainControls/PlayButton" to="." method="_on_play_button_pressed"]
[connection signal="mouse_entered" from="MainControls/MultiplayerButton" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="MainControls/MultiplayerButton" to="." method="_on_multiplayer_button_pressed"]
[connection signal="mouse_entered" from="MainControls/OptionsButton" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="MainControls/OptionsButton" to="." method="_on_options_button_pressed"]
[connection signal="mouse_entered" from="MainControls/QuitButton" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="MainControls/QuitButton" to="." method="_on_quit_button_pressed"]
[connection signal="mouse_entered" from="ProfileEditor/VBoxContainer/HBoxContainer/MarginContainer/DisplayNameEdit" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="ProfileEditor/VBoxContainer/HBoxContainer/MarginContainer/DisplayNameEdit" to="." method="_on_display_name_edit_pressed"]

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=7 format=3 uid="uid://cwvprrvk4l2k0"]
[gd_scene load_steps=9 format=3 uid="uid://cwvprrvk4l2k0"]
[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://new_theme.tres" id="1_l1spu"]
[ext_resource type="Script" path="res://Scripts/multiplayer_lobby.gd" id="2_nb860"]
@ -6,6 +6,13 @@
[ext_resource type="PackedScene" uid="uid://bvfit0sy2tnw4" path="res://Scenes/Menus/server_form.tscn" id="5_bqbwv"]
[ext_resource type="PackedScene" uid="uid://dqqitmhu66a7d" path="res://charselect.tscn" id="5_lvoo2"]
[ext_resource type="PackedScene" uid="uid://ddmg342ff2qaq" path="res://Scenes/UI/chatbox.tscn" id="6_wtqwd"]
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://shot1.wav" id="7_npnbo"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_cwnde"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("7_npnbo")
stream_0/weight = 1.0
[node name="multiplayer_lobby" type="Control" node_paths=PackedStringArray("server_form", "scoreboard", "loadout_editor", "chatbox")]
layout_mode = 3
@ -62,11 +69,16 @@ text = "Ready"
[node name="Chatbox" parent="." instance=ExtResource("6_wtqwd")]
layout_mode = 1
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = SubResource("AudioStreamRandomizer_cwnde")
bus = &"SFX"
[connection signal="player_connected" from="." to="Scoreboard" method="add_player"]
[connection signal="player_disconnected" from="." to="Scoreboard" method="remove_player"]
[connection signal="connect_button_pressed" from="ServerForm" to="." method="connect_to_server"]
[connection signal="connect_button_pressed" from="ServerForm" to="ServerForm" method="set_visible" binds= [false]]
[connection signal="host_button_pressed" from="ServerForm" to="." method="create_server"]
[connection signal="host_button_pressed" from="ServerForm" to="ServerForm" method="set_visible" binds= [false]]
[connection signal="mouse_entered" from="ReadyButton" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="ReadyButton" to="." method="ready_player"]
[connection signal="pressed" from="ReadyButton" to="ReadyButton" method="set_visible" binds= [false]]

View File

@ -1,7 +1,14 @@
[gd_scene load_steps=3 format=3 uid="uid://buvgdem68wtev"]
[gd_scene load_steps=5 format=3 uid="uid://buvgdem68wtev"]
[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://new_theme.tres" id="1_gaupv"]
[ext_resource type="Script" path="res://Scripts/pause_menu.gd" id="2_4pn2l"]
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://shot1.wav" id="3_q3xhn"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_n6ixr"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("3_q3xhn")
stream_0/weight = 1.0
[node name="Control" type="Control"]
layout_mode = 3
@ -55,7 +62,15 @@ text = "Quit to main menu"
layout_mode = 2
text = "Quit to desktop"
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = SubResource("AudioStreamRandomizer_n6ixr")
bus = &"SFX"
[connection signal="mouse_entered" from="PanelContainer/VBoxContainer/Resume" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="PanelContainer/VBoxContainer/Resume" to="." method="_on_resume_pressed"]
[connection signal="mouse_entered" from="PanelContainer/VBoxContainer/Options" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="PanelContainer/VBoxContainer/Options" to="." method="_on_options_pressed"]
[connection signal="mouse_entered" from="PanelContainer/VBoxContainer/QuitToMainMenu" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="PanelContainer/VBoxContainer/QuitToMainMenu" to="." method="_on_quit_to_main_menu_pressed"]
[connection signal="mouse_entered" from="PanelContainer/VBoxContainer/QuitToDesktop" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="PanelContainer/VBoxContainer/QuitToDesktop" to="." method="_on_quit_to_desktop_pressed"]

View File

@ -1,6 +1,13 @@
[gd_scene load_steps=2 format=3 uid="uid://bvfit0sy2tnw4"]
[gd_scene load_steps=4 format=3 uid="uid://bvfit0sy2tnw4"]
[ext_resource type="Script" path="res://Scripts/server_form.gd" id="1_43oaq"]
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://shot1.wav" id="2_2xblc"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_3o7ni"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("2_2xblc")
stream_0/weight = 1.0
[node name="ServerForm" type="PanelContainer"]
anchors_preset = 8
@ -20,6 +27,10 @@ script = ExtResource("1_43oaq")
layout_mode = 2
alignment = 1
[node name="Button" type="Button" parent="VBoxContainer"]
layout_mode = 2
text = "Back"
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
layout_mode = 2
@ -52,5 +63,13 @@ text = "Connect"
layout_mode = 2
text = "Host"
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = SubResource("AudioStreamRandomizer_3o7ni")
bus = &"SFX"
[connection signal="mouse_entered" from="VBoxContainer/Button" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="VBoxContainer/Button" to="." method="_on_button_pressed"]
[connection signal="mouse_entered" from="VBoxContainer/Connect" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="VBoxContainer/Connect" to="." method="_on_connect_pressed"]
[connection signal="mouse_entered" from="VBoxContainer/Host" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="VBoxContainer/Host" to="." method="_on_host_pressed"]

View File

@ -1,10 +1,17 @@
[gd_scene load_steps=6 format=3 uid="uid://176c6fuhg5ic"]
[gd_scene load_steps=8 format=3 uid="uid://176c6fuhg5ic"]
[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://new_theme.tres" id="1_2aur6"]
[ext_resource type="PackedScene" uid="uid://dpt3kpixawyby" path="res://Scenes/UI/scoreboard.tscn" id="1_423py"]
[ext_resource type="Script" path="res://Scripts/singleplayer_lobby.gd" id="1_nd17k"]
[ext_resource type="PackedScene" uid="uid://ddmg342ff2qaq" path="res://Scenes/UI/chatbox.tscn" id="3_l8xy3"]
[ext_resource type="PackedScene" uid="uid://dqqitmhu66a7d" path="res://charselect.tscn" id="5_vg5y0"]
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://shot1.wav" id="6_qgq1v"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_g5har"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("6_qgq1v")
stream_0/weight = 1.0
[node name="singleplayer_lobby" type="Control" node_paths=PackedStringArray("scoreboard", "loadout_editor", "chatbox")]
layout_mode = 3
@ -53,5 +60,10 @@ layout_mode = 1
visible = false
layout_mode = 1
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = SubResource("AudioStreamRandomizer_g5har")
bus = &"SFX"
[connection signal="mouse_entered" from="ReadyButton" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="ReadyButton" to="Scoreboard" method="set_player_ready_state" binds= [1, true]]
[connection signal="pressed" from="ReadyButton" to="ReadyButton" method="set_visible" binds= [false]]

View File

@ -1,6 +1,13 @@
[gd_scene load_steps=2 format=3 uid="uid://dccsyymk4uko6"]
[gd_scene load_steps=4 format=3 uid="uid://dccsyymk4uko6"]
[ext_resource type="Script" path="res://Scripts/text_input_popup.gd" id="1_ve6eb"]
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://shot1.wav" id="2_eqkxc"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_w0x7l"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("2_eqkxc")
stream_0/weight = 1.0
[node name="TextInputPopup" type="PanelContainer"]
anchors_preset = 8
@ -28,4 +35,9 @@ layout_mode = 2
text = "Confirm
"
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = SubResource("AudioStreamRandomizer_w0x7l")
bus = &"SFX"
[connection signal="mouse_entered" from="VBoxContainer/Button" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="VBoxContainer/Button" to="." method="_on_button_pressed"]

View File

@ -1,6 +1,13 @@
[gd_scene load_steps=2 format=3 uid="uid://ce0m8vbjbng6o"]
[gd_scene load_steps=4 format=3 uid="uid://ce0m8vbjbng6o"]
[ext_resource type="Script" path="res://Scripts/won_game_screen.gd" id="1_oa7nq"]
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://shot1.wav" id="2_553mv"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_dram5"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("2_553mv")
stream_0/weight = 1.0
[node name="Control" type="Control"]
layout_mode = 3
@ -32,6 +39,54 @@ offset_bottom = 23.0
grow_horizontal = 2
text = "You WIN :3"
[node name="Label2" type="Label" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 0.5
offset_left = -202.0
offset_top = 359.0
offset_right = 186.0
offset_bottom = 404.0
grow_horizontal = 2
text = "Your winrate is now: 80%"
[node name="Label3" type="Label" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 0.5
offset_left = -897.0
offset_top = 120.0
offset_right = -509.0
offset_bottom = 165.0
grow_horizontal = 2
text = "Total games played: 315"
[node name="Label4" type="Label" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 0.5
offset_left = -901.0
offset_top = 178.0
offset_right = -513.0
offset_bottom = 223.0
grow_horizontal = 2
text = "Total wins"
[node name="Label5" type="Label" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 0.5
offset_left = -874.0
offset_top = 239.0
offset_right = -486.0
offset_bottom = 284.0
grow_horizontal = 2
text = "Total losses"
[node name="HBoxContainer" type="HBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 8
@ -54,5 +109,11 @@ text = "play again :3"
layout_mode = 2
text = "quit to main menu :<"
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = SubResource("AudioStreamRandomizer_dram5")
bus = &"SFX"
[connection signal="mouse_entered" from="HBoxContainer/PlayButton" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="HBoxContainer/PlayButton" to="." method="_on_play_button_pressed"]
[connection signal="mouse_entered" from="HBoxContainer/QuitButton" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="HBoxContainer/QuitButton" to="." method="_on_quit_button_pressed"]

View File

@ -1,8 +1,47 @@
[gd_scene load_steps=3 format=3 uid="uid://7f4dfphgiswr"]
[gd_scene load_steps=8 format=3 uid="uid://7f4dfphgiswr"]
[ext_resource type="PackedScene" uid="uid://c8qjlgam6wuo0" path="res://Scenes/Projectiles/projectile.tscn" id="1_136w8"]
[ext_resource type="Script" path="res://Scripts/Projectiles/explosive_projectile.gd" id="2_3adg2"]
[sub_resource type="Gradient" id="Gradient_ia31t"]
offsets = PackedFloat32Array(0, 0.3, 0.681818, 1)
colors = PackedColorArray(1, 0.733333, 0, 1, 0.780392, 0.0352941, 0, 0.921569, 0, 0, 0, 0.87451, 0, 0, 0, 0.301961)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_iertm"]
gradient = SubResource("Gradient_ia31t")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_1wlqd"]
spread = 180.0
initial_velocity_min = 4.0
initial_velocity_max = 4.0
gravity = Vector3(0, 0, 0)
damping_min = 2.0
damping_max = 2.0
color_ramp = SubResource("GradientTexture1D_iertm")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_dqr5j"]
transparency = 1
vertex_color_use_as_albedo = true
[sub_resource type="BoxMesh" id="BoxMesh_5qmrv"]
material = SubResource("StandardMaterial3D_dqr5j")
size = Vector3(0.2, 0.2, 0.2)
[node name="ExplosiveProjectile" instance=ExtResource("1_136w8")]
script = ExtResource("2_3adg2")
explosion_range = 3.0
[node name="AudioStreamPlayer" type="AudioStreamPlayer3D" parent="." index="2"]
bus = &"SFX"
[node name="GPUParticles3D" type="GPUParticles3D" parent="." index="3"]
emitting = false
amount = 80
lifetime = 0.5
one_shot = true
explosiveness = 1.0
process_material = SubResource("ParticleProcessMaterial_1wlqd")
draw_pass_1 = SubResource("BoxMesh_5qmrv")
[connection signal="finished" from="AudioStreamPlayer" to="." method="_on_audio_stream_player_finished"]
[connection signal="finished" from="GPUParticles3D" to="." method="_on_gpu_particles_3d_finished"]

View File

@ -1,7 +1,6 @@
[gd_scene load_steps=8 format=3 uid="uid://bvqu1heobgboe"]
[gd_scene load_steps=6 format=3 uid="uid://bvqu1heobgboe"]
[ext_resource type="Script" path="res://Scripts/Towers/tower.gd" id="1_u8bfo"]
[ext_resource type="AudioStream" uid="uid://chrf1dcq2ujw0" path="res://PCs/Universal/ClassCards/Assault/shot1.wav" id="2_xijvj"]
[sub_resource type="Animation" id="Animation_vk4a8"]
resource_name = "shoot"
@ -13,11 +12,6 @@ _data = {
[sub_resource type="BoxMesh" id="BoxMesh_42byu"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_3kxtr"]
streams_count = 1
stream_0/stream = ExtResource("2_xijvj")
stream_0/weight = 1.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1ucq4"]
transparency = 1
cull_mode = 1
@ -44,7 +38,7 @@ mesh = SubResource("BoxMesh_42byu")
mesh = SubResource("BoxMesh_42byu")
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="Yaw"]
stream = SubResource("AudioStreamRandomizer_3kxtr")
bus = &"SFX"
[node name="MinimapIcon" type="Sprite3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0)

View File

@ -44,4 +44,5 @@ theme_override_styles/pressed = SubResource("StyleBoxEmpty_af3d2")
theme_override_styles/disabled = SubResource("StyleBoxEmpty_00m4l")
theme_override_styles/focus = SubResource("StyleBoxEmpty_rg2u8")
[connection signal="mouse_entered" from="Button" to="." method="_on_button_mouse_entered"]
[connection signal="pressed" from="Button" to="." method="_on_button_pressed"]

View File

@ -1,7 +1,6 @@
[gd_scene load_steps=7 format=3 uid="uid://b7nargdyg28fj"]
[gd_scene load_steps=5 format=3 uid="uid://b7nargdyg28fj"]
[ext_resource type="Script" path="res://Scripts/Weapons/weapon.gd" id="1_yo2gh"]
[ext_resource type="AudioStream" uid="uid://chrf1dcq2ujw0" path="res://PCs/Universal/ClassCards/Assault/shot1.wav" id="2_2a041"]
[sub_resource type="Animation" id="Animation_5krlx"]
length = 0.001
@ -40,12 +39,6 @@ _data = {
"shoot": SubResource("Animation_0rgpe")
}
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_leqfx"]
random_pitch = 1.2
streams_count = 1
stream_0/stream = ExtResource("2_2a041")
stream_0/weight = 1.0
[node name="Weapon" type="Node3D" node_paths=PackedStringArray("animator", "audio_player", "recharge_timer")]
script = ExtResource("1_yo2gh")
animator = NodePath("AnimationPlayer")
@ -67,6 +60,6 @@ wait_time = 3.0
one_shot = true
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."]
stream = SubResource("AudioStreamRandomizer_leqfx")
bus = &"SFX"
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]

View File

@ -1,9 +1,10 @@
[gd_scene load_steps=13 format=3 uid="uid://1b2ikdanl66b"]
[gd_scene load_steps=15 format=3 uid="uid://1b2ikdanl66b"]
[ext_resource type="Script" path="res://Scripts/card_printer.gd" id="1_7rhtj"]
[ext_resource type="PackedScene" uid="uid://dixtx38u4jhd7" path="res://Scenes/UI/card_hand.tscn" id="2_7ouw1"]
[ext_resource type="PackedScene" uid="uid://dsasunnk47n8o" path="res://Scenes/item_card.tscn" id="2_356ip"]
[ext_resource type="Script" path="res://Scripts/interact_button.gd" id="3_iia6u"]
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://shot1.wav" id="5_pf7c7"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_s02au"]
albedo_color = Color(0.203922, 0.592157, 0.592157, 1)
@ -29,6 +30,12 @@ size = Vector3(1.29447, 0.342125, 0.277604)
[sub_resource type="BoxShape3D" id="BoxShape3D_gv3t5"]
size = Vector3(0.763889, 0.773027, 0.0570252)
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_73g2w"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("5_pf7c7")
stream_0/weight = 1.0
[node name="CardPrinter" type="StaticBody3D" node_paths=PackedStringArray("cards", "button_collider", "button_box", "choice_colliders")]
script = ExtResource("1_7rhtj")
cards = [NodePath("SubViewport/Node2D"), NodePath("SubViewport2/Node2D"), NodePath("SubViewport3/Node2D")]
@ -143,6 +150,11 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.6825, 0.484672, 0)
size = Vector3(0.816972, 0.233429, 0.632978)
material = SubResource("StandardMaterial3D_s02au")
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.433459, 0.524183)
stream = SubResource("AudioStreamRandomizer_73g2w")
bus = &"SFX"
[connection signal="button_interacted" from="StaticBody3D" to="." method="_on_static_body_3d_button_interacted"]
[connection signal="button_interacted" from="StaticBody3D2" to="." method="retrieve_card"]
[connection signal="button_interacted" from="StaticBody3D3" to="." method="retrieve_card"]

View File

@ -4,6 +4,7 @@
[ext_resource type="Texture2D" uid="uid://cdnhe2mi5c5ln" path="res://Assets/Textures/dead_eye_dog.png" id="2_6ext7"]
[sub_resource type="SphereShape3D" id="SphereShape3D_shai7"]
radius = 0.200919
[node name="Node3D" type="RigidBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
@ -16,7 +17,6 @@ script = ExtResource("1_hdqtp")
shape = SubResource("SphereShape3D_shai7")
[node name="Sprite3D" type="Sprite3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.355108, 0)
pixel_size = 0.04
billboard = 1
texture_filter = 0

View File

@ -1,7 +1,8 @@
[gd_scene load_steps=5 format=3 uid="uid://dsasunnk47n8o"]
[gd_scene load_steps=7 format=3 uid="uid://dsasunnk47n8o"]
[ext_resource type="Script" path="res://Scripts/item_card.gd" id="1_f3ek5"]
[ext_resource type="Script" path="res://Scripts/float_and_spin.gd" id="2_yfdc3"]
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://shot1.wav" id="3_om63b"]
[sub_resource type="Curve" id="Curve_qb7ge"]
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.5, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
@ -10,6 +11,12 @@ point_count = 3
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_bf4ou"]
height = 1.0
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_ixwn8"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("3_om63b")
stream_0/weight = 1.0
[node name="Node3D" type="StaticBody3D"]
collision_layer = 8
collision_mask = 0
@ -28,3 +35,10 @@ radius = 0.1
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.7, 0)
shape = SubResource("CapsuleShape3D_bf4ou")
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.701401, 0)
stream = SubResource("AudioStreamRandomizer_ixwn8")
bus = &"SFX"
[connection signal="finished" from="AudioStreamPlayer3D" to="." method="_on_audio_stream_player_3d_finished"]

View File

@ -125,6 +125,7 @@ func disable_all_tower_frames():
func enable_non_path_tower_frames():
for frame in tower_frames:
if !astar.is_point_disabled(tower_frames.find(frame)):
frame.set_visible(true)
disable_path_tower_frames()

View File

@ -3,10 +3,14 @@ class_name ExplosiveProjectile
@export var explosion_range := 3.0
var exploded := false
var sound_done := false
var particles_done := false
func _process(delta: float) -> void:
super._process(delta)
if time_alive >= lifetime:
if !exploded and time_alive >= lifetime:
explode()
@ -15,13 +19,18 @@ func _on_body_entered(_body: Node) -> void:
func explode():
if is_multiplayer_authority():
if is_multiplayer_authority() and !exploded:
freeze = true
exploded = true
$CollisionShape3D.call_deferred("set_disabled", true)
for enemy in get_tree().get_nodes_in_group("Enemies"):
if global_position.distance_to(enemy.global_position) <= explosion_range:
hit(enemy)
networked_hit.rpc(get_tree().root.get_path_to(enemy))
networked_kill.rpc()
queue_free()
$Sprite3D.set_visible(false)
$GPUParticles3D.emitting = true
$AudioStreamPlayer.play()
func hit(target):
@ -41,3 +50,22 @@ func hit(target):
func networked_hit(target_node_path):
var target = get_tree().root.get_node(target_node_path)
hit(target)
@rpc("reliable")
func networked_kill():
$Sprite3D.set_visible(false)
$GPUParticles3D.emitting = true
$AudioStreamPlayer.play()
func _on_audio_stream_player_finished() -> void:
sound_done = true
if sound_done and particles_done:
queue_free()
func _on_gpu_particles_3d_finished() -> void:
particles_done = true
if sound_done and particles_done:
queue_free()

View File

@ -0,0 +1,23 @@
extends Resource
class_name PlayerAudioSettings
const SAVE_PATH := "user://audio_settings.tres"
@export var master := 100.0
@export var music := 100.0
@export var sfx := 100.0
func apply_audio_settings():
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), linear_to_db(master / 100.0))
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Music"), linear_to_db(music / 100.0))
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("SFX"), linear_to_db(sfx / 100.0))
func save_profile_to_disk():
ResourceSaver.save(self, SAVE_PATH)
static func load_profile_from_disk() -> PlayerAudioSettings:
if ResourceLoader.exists(SAVE_PATH):
return ResourceLoader.load(SAVE_PATH)
return PlayerAudioSettings.new()

View File

@ -0,0 +1,26 @@
extends Resource
class_name SaveStats
const SAVE_PATH := "user://save_stats.tres"
@export var wins: int
@export var losses: int
@export var twenty_game_history: Array[bool]
func add_game_outcome(outcome: bool) -> void:
if outcome:
wins += 1
else:
losses += 1
twenty_game_history.push_back(outcome)
if twenty_game_history.size() > 20:
twenty_game_history.pop_front()
func save_profile_to_disk():
ResourceSaver.save(self, SAVE_PATH)
static func load_profile_from_disk() -> SaveStats:
if ResourceLoader.exists(SAVE_PATH):
return ResourceLoader.load(SAVE_PATH)
return SaveStats.new()

View File

@ -61,8 +61,9 @@ func hold_trigger():
func release_trigger():
trigger_held = false
if trigger_held:
recharge_timer.start()
trigger_held = false
func hold_second_trigger():

View File

@ -11,3 +11,7 @@ func set_popup(prompt_text, dismiss_text):
func _on_button_pressed() -> void:
completed.emit()
queue_free()
func _on_button_mouse_entered() -> void:
$AudioStreamPlayer.play()

53
Scripts/audio_options.gd Normal file
View File

@ -0,0 +1,53 @@
extends VBoxContainer
@export var master_input: SpinBox
@export var master_slider: HSlider
@export var music_input: SpinBox
@export var music_slider: HSlider
@export var sfx_input: SpinBox
@export var sfx_slider: HSlider
func _ready() -> void:
master_input.value = Data.audio.master
master_slider.value = Data.audio.master
music_input.value = Data.audio.music
music_slider.value = Data.audio.music
sfx_input.value = Data.audio.sfx
sfx_slider.value = Data.audio.sfx
func _on_master_spin_box_value_changed(value: float) -> void:
master_slider.value = value
Data.audio.master = value
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), linear_to_db(value / 100.0))
func _on_master_h_slider_value_changed(value: float) -> void:
master_input.value = value
Data.audio.master = value
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), linear_to_db(value / 100.0))
func _on_music_spin_box_value_changed(value: float) -> void:
music_slider.value = value
Data.audio.music = value
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Music"), linear_to_db(value / 100.0))
func _on_music_h_slider_value_changed(value: float) -> void:
music_input.value = value
Data.audio.music = value
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Music"), linear_to_db(value / 100.0))
func _on_sfx_spin_box_value_changed(value: float) -> void:
sfx_slider.value = value
Data.audio.sfx = value
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("SFX"), linear_to_db(value / 100.0))
func _on_sfx_h_slider_value_changed(value: float) -> void:
sfx_input.value = value
Data.audio.sfx = value
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("SFX"), linear_to_db(value / 100.0))

View File

@ -7,6 +7,7 @@ var stats : Card
@export var description : RichTextLabel
@export var target_label : Label
func set_card(value):
stats = value
title_text.text = stats.display_name

View File

@ -53,9 +53,11 @@ func retrieve_card(i):
add_child(item)
button_collider.disabled = false
button_box.position = Vector3(0,0,0)
$AudioStreamPlayer3D.play()
func _on_static_body_3d_button_interacted(_value) -> void:
button_collider.disabled = true
button_box.position = Vector3(0,0,-0.2)
$AudioStreamPlayer3D.play()
randomize_cards()

View File

@ -5,8 +5,8 @@ signal completed(outcome)
func set_popup(prompt_text, confirm_text, cancel_text):
$VBoxContainer/Label.text = prompt_text
$VBoxContainer/HBoxContainer/MarginContainer/Confirm.text = confirm_text
$VBoxContainer/HBoxContainer/MarginContainer2/Cancel.text = cancel_text
$VBoxContainer/HBoxContainer/Confirm.text = confirm_text
$VBoxContainer/HBoxContainer/Cancel.text = cancel_text
func _on_confirm_pressed() -> void:
@ -17,3 +17,7 @@ func _on_confirm_pressed() -> void:
func _on_cancel_pressed() -> void:
completed.emit(false)
queue_free()
func _on_button_mouse_entered() -> void:
$AudioStreamPlayer.play()

View File

@ -5,9 +5,11 @@ var cards : Array[Card]
var enemies: Array[Enemy]
var keymaps: Array[PlayerKeymap]
var graphics: PlayerGraphicsSettings
var audio: PlayerAudioSettings
var preferences: PlayerPreferences
var player_profile: PlayerProfile
var player_keymap: PlayerKeymap
var save_stats: SaveStats
var wall_cost := 1
var printer_cost := 15
@ -25,10 +27,13 @@ var rarity_weights = {
func _ready() -> void:
graphics = PlayerGraphicsSettings.load_profile_from_disk()
graphics.apply_graphical_settings(get_viewport())
audio = PlayerAudioSettings.load_profile_from_disk()
audio.apply_audio_settings()
player_profile = PlayerProfile.load_profile_from_disk()
preferences = PlayerPreferences.load_profile_from_disk()
player_keymap = PlayerKeymap.load_profile_from_disk()
player_keymap.apply()
save_stats = SaveStats.load_profile_from_disk()
characters.append(preload("res://PCs/Red/red.tres"))
#characters.append(preload("res://PCs/Green/green.tres"))

View File

@ -127,7 +127,7 @@ func _process(delta: float) -> void:
func spawn_tower_preview():
delete_tower_preview()
last_tower_base = ray_collider
var card = inventory.selected_item
var card = inventory.contents.keys()[hero.inventory_selected_index]
last_card = card
tower_preview = card.turret_scene.instantiate() as Tower
tower_preview.stats = card.tower_stats
@ -168,7 +168,10 @@ func put_card_in_tower_base(tower_base: TowerBase):
if tower_base.has_card:
tower_base.remove_card()
else:
tower_base.add_card(inventory.remove(), multiplayer.get_unique_id())
var card = inventory.remove_at(hero.inventory_selected_index)
if !inventory.contents.has(card):
hero.decrement_selected()
tower_base.add_card(card, multiplayer.get_unique_id())
func set_progress_percent(value: float):

View File

@ -42,7 +42,7 @@ func parse_command(text : String, peer_id : int):
var gift_name = text.substr(6) as String
var gift = Data.cards[0]
for x in Data.cards:
if x.title == gift_name:
if x.display_name == gift_name:
gift = x
connected_players_nodes[peer_id].inventory.add(gift)
elif text.substr(1, 2) == "tr":
@ -232,6 +232,9 @@ func start_game():
objective_health = 120
wave = 0
level.a_star_graph_3d.make_grid()
level.generate_obstacles()
level.a_star_graph_3d.disable_all_tower_frames()
level.a_star_graph_3d.enable_non_path_tower_frames()
level.a_star_graph_3d.find_path()
set_upcoming_wave()
for peer_id in connected_players_nodes:
@ -257,6 +260,8 @@ func lose_game():
if game_active == false:
return
game_active = false
Data.save_stats.add_game_outcome(false)
Data.save_stats.save_profile_to_disk()
var menu = lose_game_scene.instantiate()
UILayer.add_child(menu)
lost_game.emit()
@ -269,6 +274,8 @@ func win_game():
if game_active == false:
return
game_active = false
Data.save_stats.add_game_outcome(true)
Data.save_stats.save_profile_to_disk()
var menu = won_game_scene.instantiate()
UILayer.add_child(menu)
won_game.emit()

View File

@ -5,18 +5,23 @@ signal item_added(item)
signal item_removed(item)
@export var max_size := 0
@export var contents : Array[Item] = []
var selected_index := 0
var selected_item : Item :
var contents = {}
var size : int :
get:
return contents[selected_index] if contents.size() > 0 else null
var x = 0
for key in contents:
x += contents[key]
return x
set(_value):
return
func add(item : Item) -> bool:
if item != null and contents.size() < max_size or max_size == 0:
contents.append(item)
if item != null and max_size == 0 or size < max_size:
if contents.has(item):
contents[item] += 1
else:
contents[item] = 1
item_added.emit(item)
networked_add.rpc(Data.cards.find(item))
return true
@ -24,50 +29,29 @@ func add(item : Item) -> bool:
func remove_at(index : int) -> Item:
if contents.size() <= 0:
return null
var item = contents[index]
contents.remove_at(index)
if selected_index >= contents.size() and selected_index > 0:
selected_index -= 1
var item = contents.keys()[index]
contents[item] -= 1
if contents[item] == 0:
contents.erase(item)
item_removed.emit(item)
networked_remove_at.rpc(index)
return item
func remove() -> Item:
return remove_at(selected_index)
func increment_selected():
if contents.size() > 0:
selected_index += 1
if selected_index >= contents.size():
selected_index = 0
networked_set_selected.rpc(selected_index)
func decrement_selected():
if contents.size() > 0:
selected_index -= 1
if selected_index < 0:
selected_index = contents.size() - 1
networked_set_selected.rpc(selected_index)
@rpc("reliable", "any_peer")
func networked_add(value):
contents.append(Data.cards[value])
item_added.emit(Data.cards[value])
var item = Data.cards[value]
if contents.has(item):
contents[item] += 1
else:
contents[item] = 0
item_added.emit(item)
@rpc("reliable", "any_peer")
func networked_remove_at(value):
var item = contents[value]
contents.remove_at(value)
var item = contents.keys[value]
contents[item] -= 1
if contents[item] == 0:
contents.erase(item)
item_removed.emit(item)
@rpc("reliable", "any_peer")
func networked_set_selected(value):
selected_index = value

View File

@ -5,10 +5,19 @@ class_name ItemCard
func pick_up() -> Card:
queue_free()
$CollisionShape3D.call_deferred("set_disabled", true)
$model/CSGSphere3D.set_visible(false)
$AudioStreamPlayer3D.play()
networked_pick_up.rpc()
return card
@rpc func networked_pick_up():
@rpc
func networked_pick_up():
$CollisionShape3D.call_deferred("set_disabled", true)
$model/CSGSphere3D.set_visible(false)
$AudioStreamPlayer3D.play()
func _on_audio_stream_player_3d_finished() -> void:
queue_free()

8
Scripts/killbox.gd Normal file
View File

@ -0,0 +1,8 @@
extends Area3D
class_name KillBox
@export var level: Level
func _on_body_entered(body: Node3D) -> void:
body.position = level.player_spawns[0].global_position

View File

@ -2,11 +2,38 @@ extends GridMap
class_name Level
@export var enemy_pool: Array[Enemy]
@export var player_spawns : Array[Node3D] = []
@export var enemy_spawns : Array[Node3D] = []
@export var enemy_goals : Array[Node3D] = []
@export var player_spawns: Array[Node3D]
@export var enemy_spawns: Array[Node3D]
@export var enemy_goals: Array[Node3D]
@export var corpses: Node3D
@export var a_star_graph_3d: AStarGraph3D
@export var cinematic_cam: CinematicCamManager
@export var printer: CardPrinter
@export var shop: ShopStand
@export var obstacle_scenes: Array[PackedScene]
func generate_obstacles():
var obstacle_count = randi_range(0, 5)
for index in obstacle_count:
var x = randi_range(0, a_star_graph_3d.grid_size.x - 1)
var y = randi_range(0, a_star_graph_3d.grid_size.y - 1)
var point_id = int(x * a_star_graph_3d.grid_size.y + y)
var chosen_obstacle = randi_range(0, obstacle_scenes.size() - 1)
var obstacle = obstacle_scenes[chosen_obstacle].instantiate() as GridMap
var orientations = [0, 90, 180, 270]
var chosen_orientation = orientations.pick_random()
obstacle.position = a_star_graph_3d.astar.get_point_position(point_id)
obstacle.set_rotation_degrees(Vector3(0, chosen_orientation, 0))
add_child(obstacle)
for cell in obstacle.get_used_cells():
var cell_pos = obstacle.to_global(obstacle.map_to_local(cell))
var map_coord = Vector3i(round(cell_pos.x), 0, round(cell_pos.z))
#print("cell_pos: " + str(cell_pos) + "cell.z" + str(cell_pos.z) + ", map_coord: " + str(map_coord))
var closest_point = a_star_graph_3d.astar.get_closest_point(cell_pos, true)
var closest_point_pos = a_star_graph_3d.astar.get_point_position(closest_point)
if closest_point_pos.distance_to(Vector3(cell_pos.x, closest_point_pos.y, cell_pos.z)) <= 0.5:
a_star_graph_3d.astar.set_point_disabled(closest_point)
if get_cell_item(map_coord) == 1:
set_cell_item(map_coord, INVALID_CELL_ITEM)
obstacle.queue_free()

View File

@ -1,6 +1,16 @@
extends Control
func _ready() -> void:
var wins = float(Data.save_stats.twenty_game_history.count(true))
var games = float(Data.save_stats.twenty_game_history.size())
var winrate = int((wins / games) * 100.0)
$Label2.text = "Your 20-game winrate is now: " + str(winrate) + "%!"
$Label3.text = "Total games: " + str(Data.save_stats.wins + Data.save_stats.losses)
$Label4.text = "Total wins: " + str(Data.save_stats.wins)
$Label5.text = "Total losses: " + str(Data.save_stats.losses)
func _on_quit_button_pressed() -> void:
Game.scene_switch_main_menu()
queue_free()
@ -9,3 +19,7 @@ func _on_quit_button_pressed() -> void:
func _on_restart_button_pressed() -> void:
Game.restart_game()
queue_free()
func _on_button_mouse_entered() -> void:
$AudioStreamPlayer.play()

View File

@ -22,9 +22,10 @@ func _ready() -> void:
spawn.signal_for_when_enemy_spawns.connect(increase_enemy_count)
spawn.spawn_wave(new_wave)
#these exist purely to make the enemies that spawn on the main menu happy
func enemy_died(_some_arg):
pass
func damage_goal():
func damage_goal(_some_arg1, _some_arg2):
pass
func increase_enemy_count():
pass
@ -65,3 +66,7 @@ func _on_options_button_pressed() -> void:
func _on_multiplayer_button_pressed() -> void:
Game.scene_switch_to_multiplayer_lobby()
func _on_button_mouse_entered() -> void:
$AudioStreamPlayer.play()

View File

@ -125,3 +125,7 @@ func add_player(new_player_profile_dict):
@rpc("any_peer", "reliable", "call_local")
func networked_ready_player(peer_id):
scoreboard.set_player_ready_state(peer_id, true)
func _on_button_mouse_entered() -> void:
$AudioStreamPlayer.play()

View File

@ -15,6 +15,8 @@ func _on_confirm_pressed() -> void:
graphics.save()
Data.graphics.apply_graphical_settings(get_viewport())
Data.graphics.save_profile_to_disk()
Data.audio.apply_audio_settings()
Data.audio.save_profile_to_disk()
Data.preferences.save_profile_to_disk()
Data.player_keymap.save_profile_to_disk()
queue_free()

View File

@ -44,3 +44,7 @@ func _on_quit_to_desktop_pressed() -> void:
func quit_game(confirmation):
if confirmation:
Game.quit_to_desktop()
func _on_button_mouse_entered() -> void:
$AudioStreamPlayer.play()

View File

@ -16,3 +16,11 @@ func get_server_ip() -> String:
return $VBoxContainer/HBoxContainer/ServerIP.text
func get_server_port() -> String:
return $VBoxContainer/HBoxContainer2/ServerPort.text
func _on_button_mouse_entered() -> void:
$AudioStreamPlayer.play()
func _on_button_pressed() -> void:
Game.scene_switch_main_menu()

View File

@ -44,3 +44,7 @@ func setup_the_ui():
loadout_editor.set_visible(true)
$ReadyButton.set_visible(true)
chatbox.set_visible(true)
func _on_button_mouse_entered() -> void:
$AudioStreamPlayer.play()

View File

@ -12,3 +12,7 @@ func set_popup(prompt_text, placeholder_text, confirm_text):
func _on_button_pressed() -> void:
completed.emit($VBoxContainer/LineEdit.text)
queue_free()
func _on_button_mouse_entered() -> void:
$AudioStreamPlayer.play()

View File

@ -25,7 +25,7 @@ var has_card : bool :
set(_value):
return
get:
return inventory.contents.size() != 0
return inventory.size != 0
func set_color(color: Color):
@ -44,7 +44,7 @@ func add_card(card: Card, caller_id: int) -> bool:
func remove_card():
Game.connected_players_nodes[tower.owner_id].add_card(inventory.remove())
Game.connected_players_nodes[tower.owner_id].add_card(inventory.remove_at(0))
networked_remove_tower.rpc()
@ -74,8 +74,8 @@ func set_west_wall(value : bool):
@rpc("reliable", "call_local", "any_peer")
func networked_spawn_tower(caller_id : int):
tower = inventory.selected_item.turret_scene.instantiate() as Tower
tower.stats = inventory.selected_item.tower_stats
tower = inventory.contents.keys()[0].turret_scene.instantiate() as Tower
tower.stats = inventory.contents.keys()[0].tower_stats
tower.name = "tower"
tower.base_name = name
tower.owner_id = caller_id

View File

@ -1,6 +1,16 @@
extends Control
func _ready() -> void:
var wins = float(Data.save_stats.twenty_game_history.count(true))
var games = float(Data.save_stats.twenty_game_history.size())
var winrate = int((wins / games) * 100.0)
$Label2.text = "Your 20-game winrate is now: " + str(winrate) + "%!"
$Label3.text = "Total games: " + str(Data.save_stats.wins + Data.save_stats.losses)
$Label4.text = "Total wins: " + str(Data.save_stats.wins)
$Label5.text = "Total losses: " + str(Data.save_stats.losses)
func _on_quit_button_pressed() -> void:
Game.scene_switch_main_menu()
queue_free()
@ -9,3 +19,7 @@ func _on_quit_button_pressed() -> void:
func _on_play_button_pressed() -> void:
Game.restart_game()
queue_free()
func _on_button_mouse_entered() -> void:
$AudioStreamPlayer.play()

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=42 format=3 uid="uid://y1qa1g3ic8sp"]
[gd_scene load_steps=48 format=3 uid="uid://y1qa1g3ic8sp"]
[ext_resource type="Script" path="res://Scripts/level.gd" id="1_ws6nn"]
[ext_resource type="PackedScene" uid="uid://d2yv447trxkwt" path="res://Scenes/enemy_spawner.tscn" id="3_5imwp"]
@ -8,19 +8,24 @@
[ext_resource type="Resource" uid="uid://boik1gnpl4v0a" path="res://Worlds/GreenPlanet/Enemies/dog_boss.tres" id="6_oty0h"]
[ext_resource type="Resource" uid="uid://dsgkwh3opyqtx" path="res://Worlds/GreenPlanet/Enemies/airenemy.tres" id="7_07st7"]
[ext_resource type="Resource" uid="uid://bffhb5krs5elm" path="res://Worlds/GreenPlanet/Enemies/airenemy2.tres" id="8_sf1ao"]
[ext_resource type="PackedScene" uid="uid://cjvgqek2phoq1" path="res://obstacle1.tscn" id="9_luxf3"]
[ext_resource type="PackedScene" uid="uid://1b2ikdanl66b" path="res://Scenes/card_constructor.tscn" id="9_r25gu"]
[ext_resource type="Script" path="res://Scripts/enemy_goal.gd" id="9_s3rd7"]
[ext_resource type="Script" path="res://Scripts/CinemaCam.gd" id="9_xuyhn"]
[ext_resource type="PackedScene" uid="uid://iohlxrso4bl8" path="res://Worlds/GreenPlanet/Decorations/tree.tscn" id="10_7v1co"]
[ext_resource type="PackedScene" uid="uid://dk0k7ndwhaenh" path="res://obstacle2.tscn" id="10_dsyfh"]
[ext_resource type="Script" path="res://Scripts/AStarGraph3D.gd" id="11_07ukk"]
[ext_resource type="Script" path="res://Scripts/visualized_path.gd" id="11_d7ofl"]
[ext_resource type="PackedScene" uid="uid://ds4sa5xyfgyo0" path="res://obstacle3.tscn" id="11_dfexu"]
[ext_resource type="AudioStream" uid="uid://chrf1dcq2ujw0" path="res://PCs/Universal/ClassCards/Assault/shot1.wav" id="11_l537x"]
[ext_resource type="PackedScene" uid="uid://sud13mytdwhv" path="res://obstacle4.tscn" id="12_mctwo"]
[ext_resource type="MeshLibrary" uid="uid://jfr8j8kycfa5" path="res://Worlds/GreenPlanet/tilemap.tres" id="12_ywwug"]
[ext_resource type="Texture2D" uid="uid://4gff4l03ibpm" path="res://Assets/Textures/scaffold.png" id="15_61y1c"]
[ext_resource type="PackedScene" uid="uid://d3h3lmlf3hljl" path="res://Worlds/GreenPlanet/Decorations/bush.tscn" id="16_lhsvw"]
[ext_resource type="Texture2D" uid="uid://cnvndwp3q7rke" path="res://Assets/Textures/dirt.png" id="17_oq0rj"]
[ext_resource type="PackedScene" uid="uid://7g3jev3v6d3l" path="res://Scenes/shop_stand.tscn" id="19_h6brl"]
[ext_resource type="Texture2D" uid="uid://r202vo47jw1q" path="res://Assets/Textures/enemyhealth.png" id="21_flsqn"]
[ext_resource type="Script" path="res://Scripts/killbox.gd" id="26_tuncf"]
[sub_resource type="Curve3D" id="Curve3D_3rdl2"]
_data = {
@ -117,6 +122,9 @@ texture_filter = 0
[sub_resource type="QuadMesh" id="QuadMesh_dyydf"]
material = SubResource("StandardMaterial3D_sugxr")
[sub_resource type="BoxShape3D" id="BoxShape3D_134um"]
size = Vector3(38.58, 1, 53.35)
[node name="GridMap" type="GridMap" node_paths=PackedStringArray("player_spawns", "enemy_spawns", "enemy_goals", "corpses", "a_star_graph_3d", "cinematic_cam", "printer", "shop")]
mesh_library = ExtResource("12_ywwug")
cell_size = Vector3(1, 1, 1)
@ -135,7 +143,8 @@ a_star_graph_3d = NodePath("AStarGraph3D")
cinematic_cam = NodePath("CinemaCam")
printer = NodePath("CardPrinter")
shop = NodePath("ShopStand")
metadata/_editor_floor_ = Vector3(-15, 0, 0)
obstacle_scenes = Array[PackedScene]([ExtResource("9_luxf3"), ExtResource("10_dsyfh"), ExtResource("11_dfexu"), ExtResource("12_mctwo")])
metadata/_editor_floor_ = Vector3(4, 0, 8)
[node name="CinemaCam" type="Node3D" parent="." node_paths=PackedStringArray("path_follows", "cameras")]
script = ExtResource("9_xuyhn")
@ -879,6 +888,7 @@ transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412,
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.5192, 0, -17.6837)
[node name="PlayerSpawnLocations" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.428, 0, 0)
[node name="PlayerSpawn1" type="Node3D" parent="PlayerSpawnLocations"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 1, -1)
@ -1115,4 +1125,14 @@ texture = ExtResource("21_flsqn")
[node name="Corpses" type="Node3D" parent="."]
[node name="Area3D" type="Area3D" parent="." node_paths=PackedStringArray("level")]
collision_mask = 2
script = ExtResource("26_tuncf")
level = NodePath("..")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -6.8471, 0)
shape = SubResource("BoxShape3D_134um")
[connection signal="body_entered" from="EnemyGoal/Area3D" to="EnemyGoal" method="_on_area_3d_body_entered"]
[connection signal="body_entered" from="Area3D" to="Area3D" method="_on_body_entered"]

File diff suppressed because one or more lines are too long

View File

@ -12,4 +12,9 @@ func _ready() -> void:
var card = hero_card_scene.instantiate()
card.set_hero(hero)
card.pressed.connect(func(x): hero_selected.emit(Data.characters.find(x)))
card.button_mouse_entered.connect(_on_button_mouse_entered)
hbox.add_child(card)
func _on_button_mouse_entered():
$AudioStreamPlayer.play()

View File

@ -1,7 +1,14 @@
[gd_scene load_steps=3 format=3 uid="uid://dqqitmhu66a7d"]
[gd_scene load_steps=5 format=3 uid="uid://dqqitmhu66a7d"]
[ext_resource type="Script" path="res://charselect.gd" id="1_h2h26"]
[ext_resource type="PackedScene" uid="uid://bnsf2degj5tio" path="res://Scenes/UI/hero_card.tscn" id="1_v2mfo"]
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://shot1.wav" id="3_o88ca"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_ehpk7"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("3_o88ca")
stream_0/weight = 1.0
[node name="Control" type="Control" node_paths=PackedStringArray("hbox")]
layout_mode = 3
@ -36,3 +43,7 @@ vertical_alignment = 1
[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/VBoxContainer"]
layout_mode = 2
alignment = 1
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = SubResource("AudioStreamRandomizer_ehpk7")
bus = &"SFX"

View File

@ -7,7 +7,7 @@ func set_sprite(tex: Texture):
func _ready() -> void:
var tween = create_tween()
tween.tween_interval(15.0)
tween.tween_interval(20.0)
tween.tween_property($Sprite3D, "modulate", Color(1.0, 1.0, 1.0, 0.0), 4.0)
tween.tween_callback(queue_free)

15
default_bus_layout.tres Normal file
View File

@ -0,0 +1,15 @@
[gd_resource type="AudioBusLayout" format=3 uid="uid://cb2keh5ut3qvu"]
[resource]
bus/1/name = &"Music"
bus/1/solo = false
bus/1/mute = false
bus/1/bypass_fx = false
bus/1/volume_db = 0.0
bus/1/send = &"Master"
bus/2/name = &"SFX"
bus/2/solo = false
bus/2/mute = false
bus/2/bypass_fx = false
bus/2/volume_db = 0.0
bus/2/send = &"Master"

View File

@ -1,6 +1,7 @@
extends PanelContainer
signal pressed(hero_class)
signal button_mouse_entered()
var hero_class: HeroClass
@ -13,3 +14,7 @@ func set_hero(hero: HeroClass):
func _on_button_pressed() -> void:
pressed.emit(hero_class)
func _on_button_mouse_entered() -> void:
button_mouse_entered.emit()

12
obstacle1.tscn Normal file
View File

@ -0,0 +1,12 @@
[gd_scene load_steps=2 format=3 uid="uid://cjvgqek2phoq1"]
[ext_resource type="MeshLibrary" uid="uid://jfr8j8kycfa5" path="res://Worlds/GreenPlanet/tilemap.tres" id="1_5n7rt"]
[node name="Node3D" type="GridMap"]
mesh_library = ExtResource("1_5n7rt")
cell_size = Vector3(1, 1, 1)
cell_center_x = false
cell_center_z = false
data = {
"cells": PackedInt32Array(0, 0, 0, 65535, 65534, 0, 0, 65534, 0, 1, 65534, 0, 2, 65535, 0, 2, 0, 0, 2, 1, 0, 1, 2, 0, 0, 2, 0, 65535, 2, 0, 65534, 1, 0, 65534, 0, 0, 65534, 65535, 0, 65535, 65535, 0, 0, 65535, 0, 1, 65535, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 65535, 1, 0, 65535, 0, 0)
}

12
obstacle2.tscn Normal file
View File

@ -0,0 +1,12 @@
[gd_scene load_steps=2 format=3 uid="uid://dk0k7ndwhaenh"]
[ext_resource type="MeshLibrary" uid="uid://jfr8j8kycfa5" path="res://Worlds/GreenPlanet/tilemap.tres" id="1_vcqgp"]
[node name="Node3D" type="GridMap"]
mesh_library = ExtResource("1_vcqgp")
cell_size = Vector3(1, 1, 1)
cell_center_x = false
cell_center_z = false
data = {
"cells": PackedInt32Array(0, 0, 0, 0, 65535, 0, 65535, 0, 0, 65535, 65535, 0, 65534, 65535, 0)
}

12
obstacle3.tscn Normal file
View File

@ -0,0 +1,12 @@
[gd_scene load_steps=2 format=3 uid="uid://ds4sa5xyfgyo0"]
[ext_resource type="MeshLibrary" uid="uid://jfr8j8kycfa5" path="res://Worlds/GreenPlanet/tilemap.tres" id="1_rgq2d"]
[node name="Node3D" type="GridMap"]
mesh_library = ExtResource("1_rgq2d")
cell_size = Vector3(1, 1, 1)
cell_center_x = false
cell_center_z = false
data = {
"cells": PackedInt32Array(0, 0, 0, 1, 0, 0, 1, 65535, 0, 2, 65534, 0, 2, 65535, 0, 0, 65535, 0, 0, 1, 0, 65535, 65535, 0, 65535, 65534, 0)
}

12
obstacle4.tscn Normal file
View File

@ -0,0 +1,12 @@
[gd_scene load_steps=2 format=3 uid="uid://sud13mytdwhv"]
[ext_resource type="MeshLibrary" uid="uid://jfr8j8kycfa5" path="res://Worlds/GreenPlanet/tilemap.tres" id="1_fmyjr"]
[node name="Node3D" type="GridMap"]
mesh_library = ExtResource("1_fmyjr")
cell_size = Vector3(1, 1, 1)
cell_center_x = false
cell_center_z = false
data = {
"cells": PackedInt32Array(0, 0, 0, 1, 0, 0, 0, 65535, 0, 0, 1, 0)
}

BIN
shot1.wav Normal file

Binary file not shown.

24
shot1.wav.import Normal file
View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dknygn5eyuhxt"
path="res://.godot/imported/shot1.wav-8cfbbb7b0ff749051ef7f7716ad4f12e.sample"
[deps]
source_file="res://shot1.wav"
dest_files=["res://.godot/imported/shot1.wav-8cfbbb7b0ff749051ef7f7716ad4f12e.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=0