From d8101979b972b72a67e69a37fb1e8ecbd11d1bf5 Mon Sep 17 00:00:00 2001 From: Lexi Quinn Date: Tue, 10 Feb 2026 02:48:14 +1100 Subject: [PATCH] added pipe rifle animation --- Enemies/BabyEyeDog/baby_eye_dog.tscn | 3 +- Enemies/ElderEyeDog/elder_eye_dog.tscn | 3 +- Enemies/EyeDog/eye_dog.tscn | 3 +- Gauntlet/gauntlet.glb | Bin 295876 -> 303452 bytes Gauntlet/gauntlet.glb.import | 14 +- Gauntlet/gauntlet_cassette_tex.png | Bin 2164 -> 0 bytes Gauntlet/gauntlet_gauntlet_test_sprite.png | Bin 5584 -> 0 bytes Gauntlet/gauntlet_mat.tres | 12 - Levels/Level2/specs.tres | 2 + Levels/Level3/specs.tres | 2 + Materials/cobblestone1/cobblestone1.png | Bin 852 -> 853 bytes Materials/metal1/metal1.png | Bin 0 -> 268 bytes .../metal1.png.import} | 6 +- .../steel1.tres => metal1/metal1.tres} | 2 +- Materials/metal2/metal2.png | Bin 0 -> 1702 bytes Materials/metal2/metal2.png.import | 41 +++ Materials/metal2/metal2.tres | 12 + Materials/metal3/metal3.png | Bin 0 -> 1476 bytes Materials/metal3/metal3.png.import | 41 +++ Materials/metal3/metal3.tres | 12 + Materials/metal4/metal4.png | Bin 0 -> 2111 bytes Materials/metal4/metal4.png.import | 41 +++ Materials/metal4/metal4.tres | 12 + Materials/steel1/steel1.png | Bin 489 -> 0 bytes Materials/wood2/wood2.png | Bin 0 -> 2055 bytes Materials/wood2/wood2.png.import | 41 +++ Materials/wood2/wood2.tres | 12 + PCs/FSM/building_state.gd | 2 + PCs/FSM/carding_state.gd | 2 + PCs/FSM/fighting_state.gd | 10 +- PCs/hero.gd | 25 +- PCs/hero.tscn | 275 ++++++++++++------ PCs/spring.gd | 41 +++ PCs/spring.gd.uid | 1 + PCs/view_movement.gd | 2 +- Scenes/CardPrinter/card_printer.tscn | 46 +-- Scenes/Menus/confirmation_popup.tscn | 1 + Scripts/Resources/player_graphics_settings.gd | 1 + Scripts/Weapons/hitscan_weapon.gd | 12 +- Scripts/Weapons/weapon.gd | 3 + Scripts/data.gd | 2 + Scripts/game.gd | 20 +- Shaders/mightyduke_ps1.gdshader | 3 +- Towers/Ascension/tower_stats.tres | 2 + Towers/Assault/PipePistolBullets.tres | 8 + Towers/Assault/tower_assault.tscn | 10 + Towers/Blowdart/blowdart.res | Bin 10536 -> 4347 bytes Towers/Blowdart/tower_stats.tres | 2 + Towers/BombLauncher/tower_stats.tres | 2 + Towers/Fireball/tower_stats.tres | 2 + Towers/Flamethrower/tower_stats.tres | 2 + Towers/Gatling/tower_gatling.gd | 2 +- Towers/GlueLauncher/tower_stats.tres | 2 + Towers/Icicle/tower_stats.tres | 2 + Towers/Overclock/overclock_tower.gd | 2 +- Towers/Overclock/tower_stats.tres | 2 + Towers/Reactor/tower_stats.tres | 2 + Towers/Refrigerator/tower_stats.tres | 2 + Towers/tower.gd | 18 +- UI/DamageParticle/damage_particle.gd | 3 +- UI/DamageParticle/damage_particle.tscn | 13 +- UI/Menus/GameEndScreen/game_end_screen.tscn | 1 + UI/Menus/MainMenu/main_menu.gd | 13 +- UI/Menus/MainMenu/main_menu.tscn | 1 + UI/Menus/MixingMenu/track_editor.gd | 9 +- UI/Menus/OptionsMenu/gameplay_options.gd | 6 +- UI/Menus/OptionsMenu/graphics_options.gd | 19 ++ UI/Menus/OptionsMenu/graphics_options.tscn | 41 ++- UI/Menus/OptionsMenu/options_menu.gd | 5 + UI/Menus/OptionsMenu/options_menu.tscn | 2 + UI/Menus/PauseMenu/pause_menu.tscn | 1 + Weapons/Ascension/weapon_stats.tres | 2 + Weapons/Assault/BoltGun.glb | Bin 40736 -> 27820 bytes Weapons/Assault/BoltGun.glb.import | 13 +- Weapons/Assault/gun_shot.wav | Bin 0 -> 72214 bytes Weapons/Assault/gun_shot.wav.import | 24 ++ Weapons/Assault/rifle.tscn | 34 ++- Weapons/Blowdart/weapon_stats.tres | 2 + Weapons/BombLauncher/weapon_stats.tres | 2 + Weapons/Fireball/weapon_stats.tres | 2 + Weapons/Flamethrower/weapon_stats.tres | 2 + Weapons/GlueLauncher/weapon_stats.tres | 2 + Weapons/Icicle/weapon_stats.tres | 2 + Weapons/Overclock/weapon_stats.tres | 2 + Weapons/Reactor/weapon_stats.tres | 2 + Weapons/Refrigerator/weapon_stats.tres | 2 + Weapons/Sniper/weapon_stats.tres | 2 + Worlds/GreenPlanet/Enemies/air_enemy.tscn | 3 +- .../GreenPlanet/Enemies/enemy_controller.gd | 5 +- Worlds/GreenPlanet/Enemies/land_enemy.tscn | 3 +- Worlds/GreenPlanet/Enemies/leaping_enemy.tscn | 3 +- Zones/Moat/scn_moat.tscn | 194 +----------- boombox.glb | Bin 0 -> 50544 bytes boombox.glb.import | 50 ++++ boombox_mat.tres | 12 + boombox_metal_aluminium.png | Bin 0 -> 553 bytes ...port => boombox_metal_aluminium.png.import | 10 +- boombox_road_02.png | Bin 0 -> 10222 bytes ...e.png.import => boombox_road_02.png.import | 10 +- cam_environment.tres | 11 + card_placing_tool.gd | 1 + click.wav | Bin 0 -> 5093 bytes click.wav.import | 24 ++ hit_detector.gd | 9 + hit_detector.gd.uid | 1 + metal2.png | Bin 0 -> 1294 bytes metal2.png.import | 41 +++ path_vfx.gd | 3 +- player_gym.tscn | 35 +++ project.godot | 7 +- spacecarpet.png | Bin 0 -> 748 bytes spacecarpet.png.import | 40 +++ wave_viewer.gd | 6 + 113 files changed, 1025 insertions(+), 415 deletions(-) delete mode 100644 Gauntlet/gauntlet_cassette_tex.png delete mode 100644 Gauntlet/gauntlet_gauntlet_test_sprite.png delete mode 100644 Gauntlet/gauntlet_mat.tres create mode 100644 Materials/metal1/metal1.png rename Materials/{steel1/steel1.png.import => metal1/metal1.png.import} (77%) rename Materials/{steel1/steel1.tres => metal1/metal1.tres} (91%) create mode 100644 Materials/metal2/metal2.png create mode 100644 Materials/metal2/metal2.png.import create mode 100644 Materials/metal2/metal2.tres create mode 100644 Materials/metal3/metal3.png create mode 100644 Materials/metal3/metal3.png.import create mode 100644 Materials/metal3/metal3.tres create mode 100644 Materials/metal4/metal4.png create mode 100644 Materials/metal4/metal4.png.import create mode 100644 Materials/metal4/metal4.tres delete mode 100644 Materials/steel1/steel1.png create mode 100644 Materials/wood2/wood2.png create mode 100644 Materials/wood2/wood2.png.import create mode 100644 Materials/wood2/wood2.tres create mode 100644 PCs/spring.gd create mode 100644 PCs/spring.gd.uid create mode 100644 Towers/Assault/PipePistolBullets.tres create mode 100644 Weapons/Assault/gun_shot.wav create mode 100644 Weapons/Assault/gun_shot.wav.import create mode 100644 boombox.glb create mode 100644 boombox.glb.import create mode 100644 boombox_mat.tres create mode 100644 boombox_metal_aluminium.png rename Gauntlet/gauntlet_cassette_tex.png.import => boombox_metal_aluminium.png.import (69%) create mode 100644 boombox_road_02.png rename Gauntlet/gauntlet_gauntlet_test_sprite.png.import => boombox_road_02.png.import (68%) create mode 100644 cam_environment.tres create mode 100644 click.wav create mode 100644 click.wav.import create mode 100644 hit_detector.gd create mode 100644 hit_detector.gd.uid create mode 100644 metal2.png create mode 100644 metal2.png.import create mode 100644 spacecarpet.png create mode 100644 spacecarpet.png.import diff --git a/Enemies/BabyEyeDog/baby_eye_dog.tscn b/Enemies/BabyEyeDog/baby_eye_dog.tscn index dd2f98a..dda9231 100644 --- a/Enemies/BabyEyeDog/baby_eye_dog.tscn +++ b/Enemies/BabyEyeDog/baby_eye_dog.tscn @@ -18,7 +18,7 @@ radius = 0.150315 [sub_resource type="ViewportTexture" id="ViewportTexture_1kwxq"] viewport_path = NodePath("SubViewport") -[node name="BabyEyeDog" type="CharacterBody3D" unique_id=1710427344 node_paths=PackedStringArray("status_manager", "movement_controller", "d_n") groups=["Enemies"]] +[node name="BabyEyeDog" type="CharacterBody3D" unique_id=1710427344 node_paths=PackedStringArray("status_manager", "movement_controller", "d_n", "health_bar") groups=["Enemies"]] collision_layer = 4 collision_mask = 0 script = ExtResource("1_8k5ts") @@ -26,6 +26,7 @@ status_manager = NodePath("StatusEffector") movement_controller = NodePath("PathingController") d_n = NodePath("Node3D") corpse_scene = ExtResource("2_vl30x") +health_bar = NodePath("SubViewport/HealthBar") metadata/_custom_type_script = "uid://ejqql2660u6h" [node name="Hitbox" type="CollisionShape3D" parent="." unique_id=351984421] diff --git a/Enemies/ElderEyeDog/elder_eye_dog.tscn b/Enemies/ElderEyeDog/elder_eye_dog.tscn index 7de085a..3ab1019 100644 --- a/Enemies/ElderEyeDog/elder_eye_dog.tscn +++ b/Enemies/ElderEyeDog/elder_eye_dog.tscn @@ -18,7 +18,7 @@ radius = 0.269705 [sub_resource type="ViewportTexture" id="ViewportTexture_1kwxq"] viewport_path = NodePath("SubViewport") -[node name="ElderEyeDog" type="CharacterBody3D" unique_id=1106613653 node_paths=PackedStringArray("status_manager", "movement_controller", "d_n") groups=["Enemies"]] +[node name="ElderEyeDog" type="CharacterBody3D" unique_id=1106613653 node_paths=PackedStringArray("status_manager", "movement_controller", "d_n", "health_bar") groups=["Enemies"]] collision_layer = 4 collision_mask = 0 script = ExtResource("1_17xxt") @@ -26,6 +26,7 @@ status_manager = NodePath("StatusEffector") movement_controller = NodePath("PathingController") d_n = NodePath("Node3D") corpse_scene = ExtResource("2_lirjc") +health_bar = NodePath("SubViewport/HealthBar") metadata/_custom_type_script = "uid://ejqql2660u6h" [node name="Hitbox" type="CollisionShape3D" parent="." unique_id=542685682] diff --git a/Enemies/EyeDog/eye_dog.tscn b/Enemies/EyeDog/eye_dog.tscn index 0097056..5eb9026 100644 --- a/Enemies/EyeDog/eye_dog.tscn +++ b/Enemies/EyeDog/eye_dog.tscn @@ -18,7 +18,7 @@ radius = 0.25 [sub_resource type="ViewportTexture" id="ViewportTexture_1kwxq"] viewport_path = NodePath("SubViewport") -[node name="EyeDog" type="CharacterBody3D" unique_id=1016179251 node_paths=PackedStringArray("status_manager", "movement_controller", "d_n") groups=["Enemies"]] +[node name="EyeDog" type="CharacterBody3D" unique_id=1016179251 node_paths=PackedStringArray("status_manager", "movement_controller", "d_n", "health_bar") groups=["Enemies"]] collision_layer = 4 collision_mask = 0 script = ExtResource("1_1dh2f") @@ -26,6 +26,7 @@ status_manager = NodePath("StatusEffector") movement_controller = NodePath("PathingController") d_n = NodePath("Node3D") corpse_scene = ExtResource("2_1dh2f") +health_bar = NodePath("SubViewport/HealthBar") metadata/_custom_type_script = "uid://ejqql2660u6h" [node name="Hitbox" type="CollisionShape3D" parent="." unique_id=1815903905] diff --git a/Gauntlet/gauntlet.glb b/Gauntlet/gauntlet.glb index e232bcf8527b21c1654b777351a77a3ce7422a94..902cb727cc12ef43f9744d4ada106eee45b66fa8 100644 GIT binary patch literal 303452 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 literal 295876 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

|1lR;O5|BFO^Y%n}dsO7vp9(b-H8f@&l;YM(C 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 nkR1k44ofy`glX=O&z@g{q z;uumf=j~kIeCgwo$Nw8!*F<*pxOi_{Y|(ai&(0IvQcGQ#p9IKOX$C0l-Fkvuqslv< z^A~H?ia3qtaHD>C;?` zc5beD#x9|-^y{0&bMK#fch1IIS!*iS!=^Rs*MGO?W)RnVAk!kC@M>Dr$`A$yX=&*l z#n1hoeDnV$%kbyL)aW0p%6jDYe9r#!WBLC1g_`9&XCqb={S|5N(WxZSJ_H}3DX zzFZ{UxRTX_IrKa;!;{b2obE|-IxH`?s-K^duOijnxj|sT@zm`d6?#!GTcb}1f&*B7ChlN|)#rOXc4tcKfGN7k%Dg#r?)x-Z6#Qar)a2X!3_)h7!YoGCPaavTO zDg&c{OTp}Zh8If?8#0A4U8(v1WwPz>>J35*NoG*qd3fc?tAaK&ow5@!RhGA5HPdl`9> zw=nGe&Xj(#v5euj$c1zz#z!k=$VE!7pWORKm18#VmGno-g40>z&Xm7AcPo42wE1Q| zR-(@?8tl$qe?C$FWug{i+FdS@D>p4_V|05a>mLuwi!xlrnsMf#;MtR6$@kr7&4_A< zoU?M><1>5C6pDDiex84%W9D{-$uY-gAN*7G{La#?JKt*ao^fHgb%!N4ugre_zcnk2 z1cYt!_y0a$vDtLWCdq?|X|rT+PIk!2U3l-~`J2Cbc4+TyXLw+-bLSgv-6NCayz6hs z{Ls61U+U&F=BoAofA0U^rQDU_;W3*}C`s?<#Va-C4}Q1*T*^KDo?J-A_cet(Dh)>i zA68G#bL7r^&MB9asLyB{R&4p_+u3)e`ycQ4u<10Xdy1IxX|6D*MKc0Vcy;znC|J^< zb|`PP=+9H->x-W$<+HfxhQtPNdHa>`uRPwkTBOS>(Q@)p?xR9=pYE7W3HiR}e)0Ol z;o|2#;!@6uDk!T?o8lDa@kEAwUD1TeeCtHHDvF;9t$Pw%lfU#&NIs*Wpp}b&lY_5? zxBGgY1==lDr#Mw-IX0YsV*2Eb&qL-p)h0D-3rlwWD4KD;pRaIz*kSqlALoM8Z*eP5 zm|0Xc&GXcUt;de@mla%J`RMJ+Z~H2IO08-lt&g4GX4g82sZSul>5w4P%*)RzJT>pc zXeE6m|-T%S$E62WT7B~JE>HYQ>F5a#1Z|NrmGe(ZPq6hi* znEl(hzujN%pM3m$lLxGh^-B#HR)m%du*k`%OMA;?rnoe$uznl)A*@n#_gb+{n|`+} zXlW5?XlW2&Vro9Ttz~l;?~2_QnwOi-a%`wNethBeW9Dbo%KW4%ZrC_3y?G>geQ%mT z!!aH1+j*f6w`Lb`uQvSC`ZC3(!9pvZ;m7O6Tz0h~jVuaBBbTPPxVW8qci!p0`{L-2 z`>wqZaQyy{k>R3CAzNen^v$`#4(iO;LVd!^HL199< z{?V|yC_}FXi`f~9Dl)0;O>Ks542mo@>jmR~UfO8hC@7)KAgIXU_FQp>Xpq)zCYOXB zhQh^Dve}!J5|kbE_VZ}Y`D~uTCe7$|K4!D#L%|J}N>8^=&ov8R$zj>BxyAjkTf?VU zr#;&fRBTuTn7mzQa|^I?GqSMUX?n}n*VNA7x@^MUkp PU|{fc^>bP0l+XkKa&)x4 diff --git a/Gauntlet/gauntlet_gauntlet_test_sprite.png b/Gauntlet/gauntlet_gauntlet_test_sprite.png deleted file mode 100644 index a94ae340c1a5fac8f18855a97f8dd25fc4a81f30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5584 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 diff --git a/Gauntlet/gauntlet_mat.tres b/Gauntlet/gauntlet_mat.tres deleted file mode 100644 index 5eca275..0000000 --- a/Gauntlet/gauntlet_mat.tres +++ /dev/null @@ -1,12 +0,0 @@ -[gd_resource type="ShaderMaterial" format=3 uid="uid://b2rsi4vlkfpp1"] - -[ext_resource type="Shader" uid="uid://dq04j2s5foo2f" path="res://Shaders/mightyduke_ps1.gdshader" id="1_i1hsh"] -[ext_resource type="Texture2D" uid="uid://b5es3jtoiurk0" path="res://Gauntlet/gauntlet_gauntlet_test_sprite.png" id="2_vslqm"] - -[resource] -render_priority = 0 -shader = ExtResource("1_i1hsh") -shader_parameter/albedo = ExtResource("2_vslqm") -shader_parameter/jitter_z_coordinate = true -shader_parameter/jitter_depth_independent = true -shader_parameter/alpha_scissor = 1.0 diff --git a/Levels/Level2/specs.tres b/Levels/Level2/specs.tres index 2b061f4..2a6d7ba 100644 --- a/Levels/Level2/specs.tres +++ b/Levels/Level2/specs.tres @@ -18,6 +18,8 @@ [resource] script = ExtResource("2_y3kr2") +author = "PuppyFruitGames" +display_title = "Air Supply" hero_class = ExtResource("4_ldc6i") allowed_cards = Array[ExtResource("1_rchhl")]([ExtResource("2_geygk"), ExtResource("3_xdjpy")]) waves = Array[ExtResource("3_05rhi")]([ExtResource("7_siv73"), ExtResource("8_movdo"), ExtResource("9_w257w"), ExtResource("10_pdy4r"), ExtResource("11_526a4"), ExtResource("12_ebu2p"), ExtResource("13_o6362"), ExtResource("14_41aj4")]) diff --git a/Levels/Level3/specs.tres b/Levels/Level3/specs.tres index cc64fbe..a89fb77 100644 --- a/Levels/Level3/specs.tres +++ b/Levels/Level3/specs.tres @@ -18,6 +18,8 @@ [resource] script = ExtResource("5_kje1i") +author = "PuppyFruitGames" +display_title = "Cave" hero_class = ExtResource("4_5rrxx") allowed_cards = Array[ExtResource("1_ldkvi")]([ExtResource("2_0atj5"), ExtResource("3_sbxeq")]) waves = Array[ExtResource("6_gmv8c")]([ExtResource("7_43tyk"), ExtResource("8_2vql2"), ExtResource("9_e67hj"), ExtResource("10_vhtpf"), ExtResource("11_j5x11"), ExtResource("12_eb1oa"), ExtResource("13_j6jup"), ExtResource("14_xhn8o")]) diff --git a/Materials/cobblestone1/cobblestone1.png b/Materials/cobblestone1/cobblestone1.png index 3b52b6e86be891def6f26727580feca7e0b7cee9..920ea0b5d9d82ce10ad927812892c118108e8ce6 100644 GIT binary patch delta 817 zcmcb@c9m^{VLiX6i(^Pc>(p@TuE!1ny4-UY9~6>k=1=4~bg*fY?ZHDV!e<@TjD#&d zD5?c)X?A$QAfgU1n{Yba$J`gztMT zrgI9XTwCq4?^V>C(@Qe7FS6K1EqB!vd9&@Q$IP;X37Su{6?2bEX^?>6?PQ+`kEk?^~16krOhdo?=`Mjz~ z=j-*narvmf5PN`_yCqtEhF`{o>;9J*j!Q z_+8uN!!K_7R_yx{_|ia>qv`3~)B9u}%(9$*@?!~yVDj6*Bfl4M$e!!7JJgucwNRS- za+Ajeeg%_R_m2OX(LSkP=ECBo^ADb%KKlX3`$Ux8U!UC)^XJFU*L~s~=M^8!(K&4Ot6lJtmGUCPoLgEx3>jSWe$G6;BUAh2bZO!6 zH3^fxYIV0rhRoVF>G4a0>PLnP=M@?bjTu@&ybovPTh^a_zf#k3W25qA$%>N2n-VJbo>JKw z#PL|FuCcA(O2$a)O2LGKitnpEfBLi=?yE|yUA6kT!Tjb8v##yTX?V19SK{3BP3atb z(SMJ=U)kZZ;%I473iJP&Up6ORGp&?)UA6H+m8s16H!W=Hd!C;@%TZwmbN_xtoT?Nin{D`(+N$E&V5)NGx%Sg|9~-sogs_5FT-=k6bRCnhq@ zk`&%D$92xkmXC4Ltd`STFCI~BwG~szesf*9(ubQd5;_feQnG~hK_cJN|x`LO3!6= z$~E=Qx=s=NTiS8x=su2cmHVH5ewNsg*;M{7J$>KYGxOr_>!qc|-o8<`-8{f+Z)<>* zaLTmqOLlzh+zYp?%k|+byRyukl_#hC_r#3~rzYHd_pR(t&GyCh7CtMtKYm_aR@c94 z+s2#k?d$cI7w4y?op#OqQLA0mKRqZvv?uJkfAfL^+zVww^LF39{pWGP38#X88cR#2 z@;{WSiQUihBedt{zPQ&h{5Le}K1&LhOz&RE%fe)59TwdxmAoqH%&D5?QFZ&AHa`^2 zG+tc3ZTH@#SL#_0IMvwi@UK^9HIe+z&Av$Zz`4EmX4>xG7c21d_``(b=gU{Wp59nE zh4)yV>BE_9i3q9uxdmZS^}jE+ccb1pD`8N6vBu)rVZU z^mullxXJI2pRXUy(=dLiQPp?A`M-fvRsNATKfk_ZdblpvP1u0-eDLObTYJ}DlNJx( zlhUOr60LVikk6npv}tX1aPz#I@4lI(EACUD(qkOA*8Ju~_VYR2!ihJZE|LjZen63- z<-OSRIL}J0DaXHsglQWxDWw?+_@=H3SY1=EpYcyG<|HTUIUntU{Kb#TkDMuLA^#=YIwuYM;|9kwrX?S~9P2W}*9S(;}3MH?Pe$Uz~>9}4f?%3s>`^^-! z3qQY1I#e(EL8c^k^7M%-ug=L8GdLmmdPQT!)_txXOUho=5iQi&oulsAitdz`(%Z>FVdQ&MBb@0EDTH%>V!Z diff --git a/Materials/metal1/metal1.png b/Materials/metal1/metal1.png new file mode 100644 index 0000000000000000000000000000000000000000..2a3ca094ae959d95234bcb5d3d3679a2b7b5484c GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hEk44ofy`glX=O&z;Mjd z#WAE}&f6;+IhhzmTn>t^3uRX3Hryh>tbE!)z$M_J)WrjG)B1gO>EFySYk&N5vdZgU zUXyI@Z&x{)x7&Zx9r^u#<9{1{jaaQ8+`skLvzncCYI50MQ(qaf88k3XJ=d`ExWoYl zwh$}kWpc?3%n|`Fc@hp>NajgkVAh(;7~F5zz{sk44ofy`glX=O&z?R_Y z;uumfXK%E1-fJ(Or=@}l+#VA}cWiq2cm1Ia+E>MQ=i5N| zotHnqJBDMu;Ae~PANTa{P`>fr{%IB8^Vh1i?@M}^POxb|NlROPxNuJSzBsof9(#o1 z+$P*te&><>L-JFBmCRF_XP?jCuaA$H-5RrMSDO8+s7%N7+SIE4=Xcv4nyou1HFM^x zb>0Gf2j?bsE^_@j(GJ+> z&|7Qse(~b25F_UKw*ynRI_g!(bl)nllG*R;pnLApnvj0Q&zFAa8TYUCot(*K+Q4ae zc~!g1hx|0T<8Qvte_9nAU@gx$YtjFEAD4JdE%bTvFxI+8$Bjd-zasEN@yy^7g}oVK zFW8-g546rTn4U1TVa|H-+wbk8U(FUgm;8K|JFBkx3&Wc;!(N^Ktkm9a{jlk5neSce zlr!#8YhFxYayWn1!%8mFw%E8R_fU$vU{9Z+utvOcaOau4Bqpt!FC5%$1-A>g2rk(C zZkCG{(@MsvpI0UsEIV>4@t19S-kcRFC7KVa7CHZSVc5e^{XT;|WKrU`xB3BhMGPZC zQqSKBF;e6?ytXHR$A~LrUR|bU&*NALiC;Bm_0FBSVwHSWDsjTZ8NQGA+%y-K_*P^1 zWt-25IXe00+FZ^n%WP%|aNMGtcFTXm%aWF+o)Xi*+?K;G4B5MNI7E$S=;U5ijbaj3 zk1&*L21ryg&!{b3QB<&eWJ}^NQKD zB_edntG)dv6E6E~VDfAJ*`Uh3c}AXlvT|a&^foVsY+2#+;kL{*|D-28V-!qSevFad zP+-w>i}{kzF5FzpGkwqOwT#(bS531^xR>sHSSoTLsPvtP?aawWx3?W#s*t_3HE~0? z#j3-Lg{EvitmFUvY9mLP>mPqr{ChC_f%Gm5!Jw=2Uon*iKYJl*_q=(EW!lbN+A)S_lFwGL zOL}kK>$lwER~h5Orx`t*=}NNCtQ5lz>&z-)?bvblRWa+=n0dTu!V_ldrC8gx-?-oK zC4;B)SwD}&rW$E&`)^+aC*Q4eWMA~_$QyCH$)j#k7j4@2nhq zoI@uC_8T6aX__ED^>C!qq^Wx)8&B!GobBby+bplP*)UV$O`Fx!>yO{-o!ia+ zA5CDG`ak_>xBi)MyM#dYRcA`nB~PC-y_Da&*t7Vt<-GT$1*tcm->HjtoBr5Sc%i9Z zcK6P^Q>?A|SF}u1bMoero3pxxaklvV#gT=#=X`wNxcbm-%d2&rOs5<*on~gJ+)(uH zY=3BG)cE)Yqn6D-p1*8uPde21nMX(Pmd$gImCeg4DLl`3{Nll{LA;x!${*?Xm3RD8 z3;xUP^7L0^#961rux5*M-|XG4m9;8AJM-vM)#|UCuhcAJoGASGN4#!`ss`VmjV;fm zE>=v93ZI)Ko|3{P%vc~b({dV*Rs9Nww4H4Mk1sB+?vAm%`Qm`+afP@_vmIZobP0l+XkKX5lm( literal 0 HcmV?d00001 diff --git a/Materials/metal2/metal2.png.import b/Materials/metal2/metal2.png.import new file mode 100644 index 0000000..5340df7 --- /dev/null +++ b/Materials/metal2/metal2.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cqyco3cfvkj2d" +path.s3tc="res://.godot/imported/metal2.png-6f742cc96006a659b050c64d83e6c232.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://Materials/metal2/metal2.png" +dest_files=["res://.godot/imported/metal2.png-6f742cc96006a659b050c64d83e6c232.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Materials/metal2/metal2.tres b/Materials/metal2/metal2.tres new file mode 100644 index 0000000..c3b394f --- /dev/null +++ b/Materials/metal2/metal2.tres @@ -0,0 +1,12 @@ +[gd_resource type="ShaderMaterial" format=3 uid="uid://cjvmf0bl70x6q"] + +[ext_resource type="Shader" uid="uid://dq04j2s5foo2f" path="res://Shaders/mightyduke_ps1.gdshader" id="1_bk5kp"] +[ext_resource type="Texture2D" uid="uid://cqyco3cfvkj2d" path="res://Materials/metal2/metal2.png" id="2_at70c"] + +[resource] +render_priority = 0 +shader = ExtResource("1_bk5kp") +shader_parameter/albedo = ExtResource("2_at70c") +shader_parameter/jitter_z_coordinate = true +shader_parameter/jitter_depth_independent = true +shader_parameter/alpha_scissor = 1.0 diff --git a/Materials/metal3/metal3.png b/Materials/metal3/metal3.png new file mode 100644 index 0000000000000000000000000000000000000000..e2cafab8803936c1fd6ee7ae3ce02f02afa69c34 GIT binary patch literal 1476 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hEk44ofy`glX=O&z*^_& z;uumf=V+ASq}v8OQ!IZrbBEVCubPq>{G9dY4sG$eqf2)LFt05WZ&;&};iu%tz|zQ? zarf!#?eFDJbC&GAJN^3SjndK6QY&rcU)ww`HoEt)`1P{fX2ZSSfyY8340r6(JZ4@R zm;b%DF70$povnN{`-)(f>P`s{b_j>P8fi%-{x%<#IgY_(^#Hq z9p+dzL-J+Cm1R~7tbWefC&sqpLg}AE-)Z|_rR?4{)pkc+INQuiJ8np}i}-uzDxBL` zdHlAj+HI?b*0|#a;X;z4z5 zJ=VL{DP6WSck@tvrS{g!ar=ai^DbJYTW$Q7o;m5}cI{@bmD-InCij?ot4}Limlxi! zL+an;_uis&=WfW^V>N%Ov-$nE{A#^CcSTbduJ_a2t#S0LR#XW0n`_GFmx=bB$qE$h zlr?NAXG^X+Dw1H^b$NNlQHId;{xAkt!>5}jod4CKm0@l7tGVNITG=W0pya;r>uJ*K zLzbO1w(?~*W}0s;7<{vUt#2hG`G1v`Tw1!T zEb`Y5!LL@5qPN#=|Gk_!CNl8)jdD$I>2h7W%X~LEmAvM!G&z+%cggJ~%*o>KZltbL zkZ83Es(f=RX8M1R7dhMQmN`s&>{C~xpX{*p_p4JKMIx_^?bP>AR{LUhV&3Lymb+Ij zeE90n;)*GAXV&B_EX-kb6geOgw)fX|M&ncE7bm+O`C9frr)85>S9nl)zQv|W)qJ7d zOpEn&dPUz<+RAU`NH`Yu^SoNvyqUH+{yIw6v>xPTtyp1n@1~EdSll9!wjGC40$u7w zQoRBK#B-<4IddQ*Smtn{J4cIP!R6Nl#~1rN40LjyId`r#!@8R$PQ?wmVzY(Hy}ULW zd!4nkjkHoKu%4T(+`_QX>+JtU%H_>oT{%GwS8xAZ6U03KF58Xj?V-m?c~-})bXz3v zHshmDVS9w-tjANinyW(N7kts&*<87*X$zNe!CEHe?{ddCPwv~pXEO7SujHC3W~HL8 z9|~6nE0#{u@x8js;{7+{N6QMB&loJf^7V0GyHdNh=xhnUlnB#DnV~&_abc-Km7CeR zC%)pGviF9zM!=oYrc)NvHbe8AU^Tc_%!I^_oB9t8@Uz#oca6s~A zFO#bO%VevYw=C@+tz1|>;U;Hr@=Td+_fDq$c>HC9@9~|2&aD3G-o46P+Dm3l_l(S3 zZ5DR=lR9g}4dsn$?zWG2oiSK?`mA>B)GZxmZ};((?lQaj!{D)&TiD7j?WtT_ej7Ad zE_0H-Z|MG9qHVR8_MJJ(*P1t+3$#@I)MwFfUT@3A1hxecLKjy~Rnsi)$lmc`?%SjP z<|l|bt+RKS*{Ah%a^O(rk3BJ{nCb zQ|~`xpV%|A)udSAwbt_(@u$ys>GdB{jM@C#P*XufUYCI^3AUIvb5Wuv)iiX_9TDa6s7A7F;^ZiFfcH9y85}Sb4q9e0C*C*g#Z8m literal 0 HcmV?d00001 diff --git a/Materials/metal3/metal3.png.import b/Materials/metal3/metal3.png.import new file mode 100644 index 0000000..8d65b11 --- /dev/null +++ b/Materials/metal3/metal3.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dm0b3amlvatr2" +path.s3tc="res://.godot/imported/metal3.png-0cfca017b843cba9d7bf57296f81cfac.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://Materials/metal3/metal3.png" +dest_files=["res://.godot/imported/metal3.png-0cfca017b843cba9d7bf57296f81cfac.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Materials/metal3/metal3.tres b/Materials/metal3/metal3.tres new file mode 100644 index 0000000..86d2512 --- /dev/null +++ b/Materials/metal3/metal3.tres @@ -0,0 +1,12 @@ +[gd_resource type="ShaderMaterial" format=3 uid="uid://bte8u8o37f5mf"] + +[ext_resource type="Shader" uid="uid://dq04j2s5foo2f" path="res://Shaders/mightyduke_ps1.gdshader" id="1_2d3p0"] +[ext_resource type="Texture2D" uid="uid://dm0b3amlvatr2" path="res://Materials/metal3/metal3.png" id="2_p4hyf"] + +[resource] +render_priority = 0 +shader = ExtResource("1_2d3p0") +shader_parameter/albedo = ExtResource("2_p4hyf") +shader_parameter/jitter_z_coordinate = true +shader_parameter/jitter_depth_independent = true +shader_parameter/alpha_scissor = 1.0 diff --git a/Materials/metal4/metal4.png b/Materials/metal4/metal4.png new file mode 100644 index 0000000000000000000000000000000000000000..38befe72eff3b61f53c22d8ef17dd99e535e6e87 GIT binary patch literal 2111 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hEk44ofy`glX=O&!2Z+I z#WAE}&e|yZ>}XE``Mue_?_*X5Eafja-gsGMZm`Ka{acl z+r2#Q$us@ZipmOa{XJIKzomZr-I83n{ZmCxhDL_1vwJMz-*^4q3I~xp+dki0^7~us z0|~*2FH@%Z7|HbRwto`3iR+=#W2QwhGKZf;+}-1vx#6JSrrUWbRx?Z8_}!B;Z|~gl zc9HsBqFzdnzDa@hS{-?g)QbYh*( z#CmV4_Pp`vh90}d)G3QH9!ie9xb&NpL{=Ir;ul?jCS+3?0px6 zlJ9akD{Xh){njmP`e_$Wlc@UYok&X{ZeT<}G1#KMp|e$GV` zCl)+S4PB5cF5*?~aqhJ8nm3VGIu~XhUwvG&Ve_Y{yR<$?JeYL)%+572vu=88b9rC+ zB`qFgzT!0FG|lH>J08dV{Z`Pj>)o$kUGF{=m`uC+^wL+a^Ir|8eEI%!dFpxY^Ll=% zRx^Lf9Z2#Jj@wdfwJha(Wc`-Qx6=JrN3e}>B|(g)%x>y+nLo_ z%{*!U|L^UsH|uJz{V(5cKKCJrIJ5iq>?hw3KAh;IZX8+vd)AvLci;M&Pw(4Ubp8Im zQwJYTT(hsn?-xH`|E0qdLhmiUTQ<3+>G`P+{-PN%|Bdx8SzOy0nHpI8W&6`kzRc#w z&(**8cRKe+=xxkfyR`GJd`4Q@<29cqZqyJyzOav1IBULS#!1QbA2X8u%D3e{-^;S> z@5Q66(INWxH_SOw?h8pWodp zzCGuWD#OuTb+^y0KCSdB_*LgA;a*>x1KO@~H)S^^+nU?#wkSQFeoo`c@?7yR^91Hk zHJ^0VMcDnzuea6LpV~y6O_H9Rd}MWsbNAV;`}V#1^+s3xbCDENPnJQY=F_A(A3K(; zxbpbpmyq)pUG98tkU95#L#?jin#9SMUlq+flm0wWLiv+~ce?m;PtmL^ch?k1&z?8i zxF>eAfR1{`PZ7`jrneujSGy;8*1I?8tz_zPRKH^VQ|SAV`#XQvnB5O{=6PC?8rJ!U z!TTD+`3U{)#UIy1Jt+2M)ly_zKl9EKo=xd)a$@?Dk6T4P-E2LjJEyer$p4(e>Qn=x zj>h&$U5!T`Xf?0NX%yg!X4YNr+sCopSwlwhiK=}lQ}~r=1-4BE%d?-Qdrmoda8FaW zXK_RL{E0TIN|oPio9v!%+G%$?d()jmodx-u4rE(MEkB;vvtL8oec^`srFQ;3-}u}n z%7jTq99p~5%;U?^j@q=<&##8_vVY;Jd6`uiX?gaQiLz!~+7upkD^J+_>~5zy%f%Rf9zUa z*=?b#6>X9_m8JGZ_qf&1_r6`e+fvf!{fD3}DO2|vT1Kj-_q?B2Qha4W^oEG@ihE=J zbia9M@cQ_zJo{M*>B9LkLFazNNv81Zyz$K|T6fXuK)ph@drNBKJj|8&!!MKtxa3;< zt6jbORix8yX==;QBdcBbf9X^`ezVnTUZGCw{1aCiCS01kp4Dj0db9qHAF12Eck=Aw zjV@&?m(2LM%B$1;#?Ffz-1Bb4NJw2wDlvD`>3f^0#opt^S>Bu2#GzMz{!h`r%$@rM z91p&cO!lbXY|!~g`lqDY0oLtS22TE;S6#`Q9e3)_x8L59H9ud!|9yvVih|ybu)+Pky@I?dPnr z+wHq^4^F>3$N&5bOJ^Lq?Pbi$z`(%Z>FVdQ&MBb@09G|6r~m)} literal 0 HcmV?d00001 diff --git a/Materials/metal4/metal4.png.import b/Materials/metal4/metal4.png.import new file mode 100644 index 0000000..b75f43c --- /dev/null +++ b/Materials/metal4/metal4.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dt2ubnnfdcykk" +path.s3tc="res://.godot/imported/metal4.png-db412f5b429b6ba79691ae646cb6f861.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://Materials/metal4/metal4.png" +dest_files=["res://.godot/imported/metal4.png-db412f5b429b6ba79691ae646cb6f861.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Materials/metal4/metal4.tres b/Materials/metal4/metal4.tres new file mode 100644 index 0000000..df5866a --- /dev/null +++ b/Materials/metal4/metal4.tres @@ -0,0 +1,12 @@ +[gd_resource type="ShaderMaterial" format=3 uid="uid://dse5i3rqndtrf"] + +[ext_resource type="Shader" uid="uid://dq04j2s5foo2f" path="res://Shaders/mightyduke_ps1.gdshader" id="1_p857d"] +[ext_resource type="Texture2D" uid="uid://dt2ubnnfdcykk" path="res://Materials/metal4/metal4.png" id="2_gev3n"] + +[resource] +render_priority = 0 +shader = ExtResource("1_p857d") +shader_parameter/albedo = ExtResource("2_gev3n") +shader_parameter/jitter_z_coordinate = true +shader_parameter/jitter_depth_independent = true +shader_parameter/alpha_scissor = 1.0 diff --git a/Materials/steel1/steel1.png b/Materials/steel1/steel1.png deleted file mode 100644 index b05997b681adf3165f9db200e7295a5b4c0aa07c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 489 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hEk44ofy`glX=O&z_{4c z#WAE}&fD3JUWXF|TI1{fb+1rpx?b?~mM}+biQ+n&Htuje8@F&46gsKkDRon zR?Ibf`6M-M)5%A_7rvip@Og&k>fi0h)2u4l7}i`fWmqs}{qMBhEDRCPuIB8^kZ8^P zctppqSv{>#%4T{{FxTZrm78OOxGq0>*PRfzHrp#P%I1Dd{G!^u^?UwWX3X53-#jyP zhS>QvhqhFh&eoT5ON_GF%+;;2=E%xL9~K%v|MB<9O&f;*mUbh%3c)Fo`!|cXMD(m? zS2TNUZ~EZn)2$cHPhDhcd@u9hYK^9?Z%fLtukrbu?@a_JNj|T7lv{Vn#UpLb=g#dv z0|ReN`Y0>zo;b5ouUP0_wX}@%`>niv6OSjUh$*XYarB;(rQ~v#ZSAKcI(l6RA_p~^ z(x1O;4%oMA$I@HZvx~py7JN8*;=-N3WfuDc5=F%VBRbX73MXZ6as6;%=KY-dnD=&# zeQ!5}KhARWNV}6DFiBFruKUVQ-U*UV-x{6V{PU&Cw!<4`#e7?Ir0##LUw+8w@tk8z wYTnzs+00;1Qo6F1H|oJg3Cm@?QBUS?QGRd4X|iA*0|Nttr>mdKI;Vst0N%9TaR2}S diff --git a/Materials/wood2/wood2.png b/Materials/wood2/wood2.png new file mode 100644 index 0000000000000000000000000000000000000000..95d802a648a334d58e6b6a7af888e21b3e19b207 GIT binary patch literal 2055 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hEk44ofy`glX=O&z<$uv z#WAE}&eG`9dD4bFA!6MJKA0b2Xa4uUxbJV*9G)K!{x~uoHW2gGpZhk$X2}lDMx}32 zi!{3W6}Q$_*6gW2+a9|+_8jjQtNmM#f4ceYc<}cc7m59;_x@Ex*}s-~wmEcK#|HBY zCh}#uJMZmw{G4c>a-`|8@ec>iJsD>6pYJ)B|N4H$VXJcPkI$mBbF_YY z_&|)mw|MBiH5Mlp6@Qs9M`+*T8Js-}f9m!qv2MJ%>vH%b<{h!;Ru@I`g?c>G6SRy} zySC$Vd}v!;`m!|+A6D)Ve%3HON^HIG$;El?mNSK-e?MnBb0&A5d1PVt?WcEUZk@!{ zRycE$f{o6RldH2I1{l8*Ss-;h=>$hbUwy<8&5o^W*DZ}~f1bANjn13pCR?8|_vA5j zpKXt=)|r3zeZYiY68o|Pj^5X?+i}*>Z`$|e2MeOseZTs}=>Frg7V*i#>yC6@d-P@j zW5DsxHf8L!VVno_xmvDlQ7-PSyDjhkn$yyJN9;M-3x^m}p4l_GaOG{CB= z#)pUZX9yUFIPk?i;9niN?mM6BrVYCuo{0UqW$}WuMh$Ut^6%qs=oojHtYYy_IH*;; zku5ri_17cI=!tnI(ZNrvotl0>UU{}XR?5SoH*-~@$%*b)oQ@UKf0caJ+p$U1a(cn* zq7TPDUu6xMd|}hSbF-hFSU=N|_0i=+CynC{l$U?9Dc^bTcJj}fQ!KM)xij!=D$Bg^ zv(oLuL&2yNfyL(^*yZtDF4|k(m9kXB|JmYoYp3nl)!>}3H)F?^71th}3F`C@xtuE@f8K`{?XS+rBVU+OrRo@fr$Fx}|E@GP+PijR!OTS`Y zz$zKtuxs|N=IHtSRZ;88Uo%1kf zN@q8&PrP^H%n$QzGkCHSCUf;zEYk=}cxv@@=T|G08K%y%T|vM6I#)F{`Dd^7?!P%J zPe$4I+3Do($Ajfr=DvSe%u*5~dQ7_efJnW2=h-JxDtv;Qtc~j1{X+t`pWeCm&(FWF zy<7V|1Z9u&#jPnSQdldu*-B-#U#QzN{-V#!C%TR_II=D&52VA=cgF{M494@DCr#}(Y}<45p@ICGl@2^pmPX$ey!6RvaiF*b zmq(4$Eybj|K&!qp_j1i%3BK!J{@)@&B=+Eeqde{MS~C&cb*XoiW@r-o`Rhlwo}aI&yUQe$V~x?~ zJq+G+8m&}bWYxESRyOWl(;@nFk=1n(tLc@yrJT5x?R2&Vh=;3*>1D@Su9~*XCeQB8 zu4QS*^u3dJ@kI-+QQ94QDB^chOHjz<-9llB8|UdId0cxfZyFiHo%1EOvN1<0r08t# z3#lIQ$EW+eb{(>Lw)Vktp(i0P-*9OipT%Z)aj8iAefQRG<>_jbhoikR*XeJIS@GgI zXT+SdMOzGc<0LP2tuoxJc6pPB}h{HLCk;Wy&{$wJY9~)NI{qr}R9kPvCG&aO?Hf(6!>q>yoAK zO6=^_uzP-V>$V39&zR!as{cE3BTE2dU``~<7E zh<~8H|Mlnl&sbNT3)^cyug3C?mFYwU9Tzr-J3m$^9Lm=z*qVDj`-AZ_-nv-BC$BQt z-L!gz(`WT1D4yd@*cCasSu|v=LG71w0 zuFcV)=HY(-Lyv=PBW9^sCef{slzYIK6Z$HwRvTge2bprL} z&*c7opT6Sx@|OY8_hgnYI{aYD?0pIcTXqDzJnR1V@QF)XUOdtZICg)jBl~RQN^f&# zfpZ6aInF%!#h??T7EyA`D=^&ZbVy$q_ljT3lb6j^c=9#S`_9xOd41K-{BD&tZ~7W7 zy+>s!w}$fB{p+?qD{wrv-D`t^Z+(vAx!x@|lcbeI6%MAIQa^w3*2lDcJuF+dmCtNn kSu}Tzopr07ud8L;wH) literal 0 HcmV?d00001 diff --git a/Materials/wood2/wood2.png.import b/Materials/wood2/wood2.png.import new file mode 100644 index 0000000..c027b43 --- /dev/null +++ b/Materials/wood2/wood2.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b4g8dpvrrua6x" +path.s3tc="res://.godot/imported/wood2.png-6430169410047c3db7cf84bc7baf0df3.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://Materials/wood2/wood2.png" +dest_files=["res://.godot/imported/wood2.png-6430169410047c3db7cf84bc7baf0df3.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Materials/wood2/wood2.tres b/Materials/wood2/wood2.tres new file mode 100644 index 0000000..a6bff32 --- /dev/null +++ b/Materials/wood2/wood2.tres @@ -0,0 +1,12 @@ +[gd_resource type="ShaderMaterial" format=3 uid="uid://bxmmwv17kc3uw"] + +[ext_resource type="Shader" uid="uid://dq04j2s5foo2f" path="res://Shaders/mightyduke_ps1.gdshader" id="1_erulm"] +[ext_resource type="Texture2D" uid="uid://b4g8dpvrrua6x" path="res://Materials/wood2/wood2.png" id="2_ylktm"] + +[resource] +render_priority = 0 +shader = ExtResource("1_erulm") +shader_parameter/albedo = ExtResource("2_ylktm") +shader_parameter/jitter_z_coordinate = true +shader_parameter/jitter_depth_independent = true +shader_parameter/alpha_scissor = 1.0 diff --git a/PCs/FSM/building_state.gd b/PCs/FSM/building_state.gd index bb7a218..8a30120 100644 --- a/PCs/FSM/building_state.gd +++ b/PCs/FSM/building_state.gd @@ -48,3 +48,5 @@ func process_state(_delta: float) -> void: hero.unready_self() else: hero.ready_self() + if !hero.game_manager and Input.is_action_just_pressed("Ready"): + hero.enter_fighting_state() diff --git a/PCs/FSM/carding_state.gd b/PCs/FSM/carding_state.gd index 17a0c7c..1b59d29 100644 --- a/PCs/FSM/carding_state.gd +++ b/PCs/FSM/carding_state.gd @@ -74,6 +74,8 @@ func process_state(_delta: float) -> void: hero.unready_self() else: hero.ready_self() + if !hero.game_manager and Input.is_action_just_pressed("Ready"): + hero.enter_fighting_state() func swap_to_slot(num: int) -> void: diff --git a/PCs/FSM/fighting_state.gd b/PCs/FSM/fighting_state.gd index c385888..e7077b9 100644 --- a/PCs/FSM/fighting_state.gd +++ b/PCs/FSM/fighting_state.gd @@ -16,7 +16,7 @@ func enter_state() -> void: hero.weapons[hero.equipped_weapon].current_energy = hero.weapons[hero.equipped_weapon].max_energy #this had to be commented out coz the new energy bar thinks "energy changed" is "energy used" #weapons[equipped_weapon].energy_changed.emit(weapons[equipped_weapon].current_energy) - if hero.game_manager.card_gameplay: + if hero.game_manager and hero.game_manager.card_gameplay: for x: int in hero.hand.contents.size(): hero.discard_pile.add(hero.hand.remove_at(hero.hand.contents.size() - 1)) hero.weapon_swap_timer.start() @@ -43,10 +43,14 @@ func exit_state() -> void: hero.hud.grow_wave_start_label() #hero.hud.primary_duration.visible = true #hero.hud.secondary_duration.visible = true - if hero.game_manager.card_gameplay: + if hero.game_manager and hero.game_manager.card_gameplay: hero.hud.energy_label.visible = true +func play_shoot_animation() -> void: + hero.anim_tree.set("parameters/OneShot/request", AnimationNodeOneShot.ONE_SHOT_REQUEST_FIRE) + + func process_state(_delta: float) -> void: if hero.weapons[hero.equipped_weapon] and hero.weapons_active: if Input.is_action_just_pressed("Primary Fire"): @@ -70,3 +74,5 @@ func process_state(_delta: float) -> void: if Input.is_action_just_pressed("Swap Weapons"): if hero.weapons[0] and hero.weapons[1]: hero.swap_weapons() + if !hero.game_manager and Input.is_action_just_pressed("Ready"): + hero.exit_fighting_state() diff --git a/PCs/hero.gd b/PCs/hero.gd index 529eed8..c8baaed 100644 --- a/PCs/hero.gd +++ b/PCs/hero.gd @@ -2,7 +2,10 @@ class_name Hero extends CharacterBody3D signal ready_state_changed(state: bool) +signal placed_tower(tower: Tower) +@export var subviewport1: SubViewport +@export var subviewport2: SubViewport @export var wave_preview_scene: PackedScene @export var hero_class: HeroClass @export var camera: Camera3D @@ -94,11 +97,18 @@ var distance_travelled: float = 0.0 var foot_stepping: bool = false +func set_resolution(size: Vector2) -> void: + $FirstPersonViewport.size = size + $SubViewport.size = size + + func set_zoom_factor(value: float) -> void: movement.zoom_factor = value func _ready() -> void: + Data.resolution_changed.connect(set_resolution) + set_resolution(Vector2(1920, 1080) * Data.graphics.resolution_scaling) hud.disable_card_gameplay_ui() if game_manager: if game_manager.card_gameplay: @@ -362,15 +372,15 @@ func draw_to_hand_size() -> void: func equip_weapon(slot: int = 0) -> void: if weapons[slot] != null: unequip_weapon(slot) - if !game_manager.card_gameplay or hand.size == 1: + if hand.size == 1 or (!game_manager or !game_manager.card_gameplay): return if hand.size == 0: return var energy_cost: int = selected_card.cost - if game_manager.card_gameplay and energy < energy_cost: + if game_manager and game_manager.card_gameplay and energy < energy_cost: return if hand.size > 0: - if game_manager.card_gameplay: + if game_manager and game_manager.card_gameplay: energy -= energy_cost place_card_audio.play() cards[slot] = hand.remove_at(hand.contents.find(selected_card)) @@ -378,7 +388,7 @@ func equip_weapon(slot: int = 0) -> void: hud.hot_wheel.update_cassettes(get_wheel_cards()) #card_sprites[hand_selected_index].queue_free() #card_sprites.remove_at(hand_selected_index) - if game_manager.card_gameplay: + if game_manager and game_manager.card_gameplay: discard_pile.add(cards[slot]) #TODO: Alternate thing to do with the hand i guess #if !inventory.contents.has(cards[slot]): @@ -387,6 +397,7 @@ func equip_weapon(slot: int = 0) -> void: weapons[slot].stats = cards[slot].weapon_stats weapons[slot].name = str(weapons_spawn_count) weapons[slot].duration = 1 + weapons[slot].fired.connect(fighting_state.play_shoot_animation) weapons_spawn_count += 1 weapons[slot].set_multiplayer_authority(multiplayer.get_unique_id()) if slot == 0: @@ -442,8 +453,12 @@ func unequip_weapon(slot: int = 0) -> void: hud.set_secondary_button(null) weapons[slot].queue_free() weapons[slot] = null - if !game_manager.card_gameplay: + if !game_manager or !game_manager.card_gameplay: add_card(cards[slot]) cards[slot] = null place_card_audio.play() hud.hot_wheel.update_cassettes(get_wheel_cards()) + + +func _on_hitbox_took_damage(amount: int, damage_type: int, pos: Vector3) -> void: + pass # Replace with function body. diff --git a/PCs/hero.tscn b/PCs/hero.tscn index 82cf331..1140837 100644 --- a/PCs/hero.tscn +++ b/PCs/hero.tscn @@ -19,6 +19,8 @@ [ext_resource type="Script" uid="uid://ckkioruqgbs8p" path="res://Scripts/minimap_cam.gd" id="12_3hpi3"] [ext_resource type="PackedScene" uid="uid://clgbmveluyewe" path="res://card_hand.glb" id="12_r2yb6"] [ext_resource type="PackedScene" uid="uid://4g0vatb73duj" path="res://Scenes/Cassette/cassette.glb" id="13_7immr"] +[ext_resource type="Environment" uid="uid://cpn2no3e8s361" path="res://cam_environment.tres" id="13_vkt85"] +[ext_resource type="Script" uid="uid://dkhl8u8p6gmlu" path="res://PCs/spring.gd" id="15_0ehim"] [ext_resource type="Texture2D" uid="uid://c60fh34ttgcvh" path="res://Assets/Textures/minimap_player.png" id="15_nhlam"] [ext_resource type="Texture2D" uid="uid://chhmkmlfrobhu" path="res://Assets/Textures/bubble.png" id="15_q3yot"] [ext_resource type="Texture2D" uid="uid://cqnapc8cscl7i" path="res://Assets/Textures/border.png" id="16_x1xjr"] @@ -77,33 +79,38 @@ [ext_resource type="AudioStream" uid="uid://b2p1egvjy6w1b" path="res://Audio/MGWSoundDesign/PavementTiles_Mono_05.wav" id="71_dx4x6"] [ext_resource type="AudioStream" uid="uid://dbpecjrivtwav" path="res://Audio/MGWSoundDesign/DirtRoad_Mono_05.wav" id="71_n0bvw"] -[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_jbu13"] -radius = 0.3 -height = 1.8 - [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_o55s8"] animation = &"read" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_h1yfy"] animation = &"hold_gun" +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_0ehim"] +animation = &"shoot" + [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_r2yb6"] animation = &"point" [sub_resource type="AnimationNodeBlend3" id="AnimationNodeBlend3_o55s8"] +[sub_resource type="AnimationNodeOneShot" id="AnimationNodeOneShot_vkt85"] + [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_hueaw"] -graph_offset = Vector2(-378.649, 125.099) -nodes/output/position = Vector2(460, 140) +graph_offset = Vector2(-111.22443, 243.4039) +nodes/output/position = Vector2(640, 240) nodes/Animation/node = SubResource("AnimationNodeAnimation_r2yb6") nodes/Animation/position = Vector2(-80, 120) "nodes/Animation 2/node" = SubResource("AnimationNodeAnimation_o55s8") "nodes/Animation 2/position" = Vector2(-180, 300) "nodes/Animation 3/node" = SubResource("AnimationNodeAnimation_h1yfy") -"nodes/Animation 3/position" = Vector2(0, 400) +"nodes/Animation 3/position" = Vector2(20, 420) nodes/Blend3/node = SubResource("AnimationNodeBlend3_o55s8") nodes/Blend3/position = Vector2(200, 140) -node_connections = [&"output", 0, &"Blend3", &"Blend3", 0, &"Animation", &"Blend3", 1, &"Animation 2", &"Blend3", 2, &"Animation 3"] +nodes/OneShot/node = SubResource("AnimationNodeOneShot_vkt85") +nodes/OneShot/position = Vector2(420, 300) +"nodes/Animation 4/node" = SubResource("AnimationNodeAnimation_0ehim") +"nodes/Animation 4/position" = Vector2(180, 620) +node_connections = [&"output", 0, &"OneShot", &"Blend3", 0, &"Animation", &"Blend3", 1, &"Animation 2", &"Blend3", 2, &"Animation 3", &"OneShot", 0, &"Blend3", &"OneShot", 1, &"Animation 4"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_hueaw"] animation = &"card_hand_read" @@ -114,7 +121,7 @@ animation = &"card_hand_away" [sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_4eel5"] [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_xav2s"] -graph_offset = Vector2(-384.382, 132.11) +graph_offset = Vector2(-526.5509, 82.68187) nodes/Animation/node = SubResource("AnimationNodeAnimation_p46gp") nodes/Animation/position = Vector2(-147.04, 210.816) "nodes/Animation 2/node" = SubResource("AnimationNodeAnimation_hueaw") @@ -123,11 +130,15 @@ nodes/Blend2/node = SubResource("AnimationNodeBlend2_4eel5") nodes/Blend2/position = Vector2(120, 200) node_connections = [&"output", 0, &"Blend2", &"Blend2", 0, &"Animation 2", &"Blend2", 1, &"Animation"] +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_jbu13"] +radius = 0.3 +height = 1.8 + [sub_resource type="Environment" id="Environment_cilxe"] background_mode = 1 background_color = Color(0.282353, 0.615686, 0.278431, 1) -[sub_resource type="AtlasTexture" id="AtlasTexture_r3lbl"] +[sub_resource type="AtlasTexture" id="AtlasTexture_vkt85"] resource_local_to_scene = true atlas = ExtResource("6_yyp8i") region = Rect2(0, 0, 96, 96) @@ -135,6 +146,9 @@ region = Rect2(0, 0, 96, 96) [sub_resource type="ViewportTexture" id="ViewportTexture_m3ots"] viewport_path = NodePath("NametagViewport") +[sub_resource type="ViewportTexture" id="ViewportTexture_r3lbl"] +viewport_path = NodePath("SubViewport") + [sub_resource type="ViewportTexture" id="ViewportTexture_mk87g"] viewport_path = NodePath("FirstPersonViewport") @@ -218,20 +232,21 @@ stream_2/stream = ExtResource("69_c5gvc") stream_3/stream = ExtResource("70_sewk0") stream_4/stream = ExtResource("71_n0bvw") -[node name="Hero" type="CharacterBody3D" unique_id=1918171232 node_paths=PackedStringArray("camera", "gun_camera", "left_hand", "right_hand", "edit_tool", "carding_tool", "sprite", "interaction_raycast", "draw_pile", "hand", "discard_pile", "hud", "movement", "player_name_tag", "weapon_swap_timer", "editing_states", "fighting_state", "default_state", "ears", "place_card_audio", "swap_card_audio", "ready_audio", "unready_audio", "fullpower_audio", "zeropower_audio", "swap_off_audio", "swap_on_audio", "anim_tree", "anim_tree2", "weapon_pivot", "cassette", "left_hand_model", "gauntlet_model")] +[node name="Hero" type="CharacterBody3D" unique_id=1918171232 node_paths=PackedStringArray("subviewport1", "camera", "gun_camera", "left_hand", "right_hand", "edit_tool", "carding_tool", "sprite", "interaction_raycast", "draw_pile", "hand", "discard_pile", "hud", "movement", "player_name_tag", "weapon_swap_timer", "editing_states", "fighting_state", "default_state", "ears", "place_card_audio", "swap_card_audio", "ready_audio", "unready_audio", "fullpower_audio", "zeropower_audio", "swap_off_audio", "swap_on_audio", "anim_tree", "anim_tree2", "weapon_pivot", "cassette", "left_hand_model", "gauntlet_model")] collision_layer = 2 collision_mask = 37 script = ExtResource("1_pihpe") +subviewport1 = NodePath("FirstPersonViewport") wave_preview_scene = ExtResource("2_o55s8") hero_class = ExtResource("2_dbyo0") -camera = NodePath("ViewMovement/Head") +camera = NodePath("SubViewport/Head") gun_camera = NodePath("FirstPersonViewport/Head2") -left_hand = NodePath("FirstPersonViewport/Head2/RightHand/card_hand") -right_hand = NodePath("FirstPersonViewport/Head2/RightHand") -edit_tool = NodePath("ViewMovement/Head/EditTool") -carding_tool = NodePath("ViewMovement/Head/CardPlacingTool") +left_hand = NodePath("FirstPersonViewport/Head2/ViewMovement/RightHand/card_hand") +right_hand = NodePath("FirstPersonViewport/Head2/ViewMovement/RightHand") +edit_tool = NodePath("SubViewport/Head/EditTool") +carding_tool = NodePath("SubViewport/Head/CardPlacingTool") sprite = NodePath("EightDirectionSprite") -interaction_raycast = NodePath("ViewMovement/Head/RayCast3D") +interaction_raycast = NodePath("SubViewport/Head/RayCast3D") draw_pile = NodePath("DrawPile") hand = NodePath("Hand") discard_pile = NodePath("DiscardPile") @@ -254,73 +269,46 @@ fullpower_audio = NodePath("FullPowerAudio") zeropower_audio = NodePath("ZeroPowerAudio") swap_off_audio = NodePath("SwapOffAudio") swap_on_audio = NodePath("SwapOnAudio") -anim_tree = NodePath("FirstPersonViewport/Head2/RightHand/AnimationTree") -anim_tree2 = NodePath("FirstPersonViewport/Head2/RightHand/AnimationTree2") -weapon_pivot = NodePath("FirstPersonViewport/Head2/RightHand/gauntlet/Gauntlet/Skeleton3D/Node3D") -cassette = NodePath("FirstPersonViewport/Head2/RightHand/card_hand/Empty_001") -left_hand_model = NodePath("FirstPersonViewport/Head2/RightHand/card_hand") -gauntlet_model = NodePath("FirstPersonViewport/Head2/RightHand/gauntlet") - -[node name="AudioListener3D" type="AudioListener3D" parent="." unique_id=1396328287] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0) - -[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=1279010072] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9, 0) -shape = SubResource("CapsuleShape3D_jbu13") - -[node name="ViewMovement" type="Node3D" parent="." unique_id=2029540853 node_paths=PackedStringArray("player", "camera", "focus_raycast")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.62, 0) -script = ExtResource("4_mhexa") -player = NodePath("..") -camera = NodePath("Head") -focus_raycast = NodePath("Head/RayCast3D") -head_bob_amplitude = 0.09 -head_bob_frequency = 7.0 -enable_strafe_tilt = true -tilt_amount_x = 0.8 - -[node name="Head" type="Camera3D" parent="ViewMovement" unique_id=614493089] -keep_aspect = 0 -cull_mask = 1048569 -fov = 100.0 - -[node name="EditTool" parent="ViewMovement/Head" unique_id=899304678 node_paths=PackedStringArray("hero") instance=ExtResource("5_jlxb3")] -hero = NodePath("../../..") - -[node name="RayCast3D" type="RayCast3D" parent="ViewMovement/Head" unique_id=302302801] -target_position = Vector3(0, 0, -2) -collision_mask = 24 - -[node name="CardPlacingTool" parent="ViewMovement/Head" unique_id=1227455090 node_paths=PackedStringArray("hero") instance=ExtResource("8_7d213")] -hero = NodePath("../../..") - -[node name="RayCast3D" type="RayCast3D" parent="ViewMovement" unique_id=522176621] -target_position = Vector3(0, 0, -100) -collision_mask = 65535 +anim_tree = NodePath("FirstPersonViewport/Head2/ViewMovement/RightHand/AnimationTree") +anim_tree2 = NodePath("FirstPersonViewport/Head2/ViewMovement/RightHand/AnimationTree2") +weapon_pivot = NodePath("FirstPersonViewport/Head2/ViewMovement/RightHand/gauntlet/Gauntlet/Skeleton3D/BoneAttachment3D") +cassette = NodePath("FirstPersonViewport/Head2/ViewMovement/RightHand/card_hand/Empty_001") +left_hand_model = NodePath("FirstPersonViewport/Head2/ViewMovement/RightHand/card_hand") +gauntlet_model = NodePath("FirstPersonViewport/Head2/ViewMovement/RightHand/gauntlet") +distance_between_steps = 1.9 [node name="FirstPersonViewport" type="SubViewport" parent="." unique_id=785328163] transparent_bg = true -size = Vector2i(640, 360) +audio_listener_enable_3d = true +size = Vector2i(1920, 1080) render_target_update_mode = 4 [node name="Head2" type="Camera3D" parent="FirstPersonViewport" unique_id=1933686603 node_paths=PackedStringArray("clone_camera")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.62, 0) cull_mask = 2 +environment = ExtResource("13_vkt85") fov = 60.0 script = ExtResource("11_4sdwe") -clone_camera = NodePath("../../ViewMovement/Head") +clone_camera = NodePath("../../SubViewport/Head") -[node name="RightHand" type="Node3D" parent="FirstPersonViewport/Head2" unique_id=729288273 node_paths=PackedStringArray("player")] -script = ExtResource("7_14ugt") +[node name="ViewMovement" type="Node3D" parent="FirstPersonViewport/Head2" unique_id=1191655688 node_paths=PackedStringArray("player", "camera")] +script = ExtResource("4_mhexa") player = NodePath("../../..") +camera = NodePath("RightHand") +head_bob_amplitude = 0.01 +metadata/_custom_type_script = "uid://cij76at0nbs1v" + +[node name="RightHand" type="Node3D" parent="FirstPersonViewport/Head2/ViewMovement" unique_id=729288273 node_paths=PackedStringArray("player")] +script = ExtResource("7_14ugt") +player = NodePath("../../../..") enable_strafe_tilt = true tilt_amount_x = 2.0 tilt_amount_y = 1.0 -weapon_rotation_amount = 0.3 +weapon_rotation_amount = 0.4 -[node name="gauntlet" parent="FirstPersonViewport/Head2/RightHand" unique_id=75711217 instance=ExtResource("11_h1yfy")] +[node name="gauntlet" parent="FirstPersonViewport/Head2/ViewMovement/RightHand" unique_id=681208948 instance=ExtResource("11_h1yfy")] -[node name="Skeleton3D" parent="FirstPersonViewport/Head2/RightHand/gauntlet/Gauntlet" parent_id_path=PackedInt32Array(75711217, 838866754) index="0" unique_id=1318948419] +[node name="Skeleton3D" parent="FirstPersonViewport/Head2/ViewMovement/RightHand/gauntlet/Gauntlet" parent_id_path=PackedInt32Array(681208948, 1347385208) index="0" unique_id=1920539554] bones/0/position = Vector3(0.28492117, -0.2668743, 0.1757814) bones/0/rotation = Quaternion(-0.4969382, -0.50358063, 0.49639297, 0.5030438) bones/5/rotation = Quaternion(-0.38194385, -0.19379175, 0.8146388, -0.39105925) @@ -339,21 +327,23 @@ bones/20/rotation = Quaternion(0.41824344, 0.0010558192, 0.0022930033, 0.9083314 bones/21/rotation = Quaternion(0.61313385, -0.33047637, -0.34370533, 0.6298563) bones/22/rotation = Quaternion(-0.002244999, 0.0020464794, 0.6736945, 0.7390037) -[node name="Cube" parent="FirstPersonViewport/Head2/RightHand/gauntlet/Gauntlet/Skeleton3D" index="0" unique_id=403437350] +[node name="Cube" parent="FirstPersonViewport/Head2/ViewMovement/RightHand/gauntlet/Gauntlet/Skeleton3D" index="0" unique_id=463690888] layers = 2 -[node name="door" parent="FirstPersonViewport/Head2/RightHand/gauntlet/Gauntlet/Skeleton3D" index="1" unique_id=1100068149] +[node name="door" parent="FirstPersonViewport/Head2/ViewMovement/RightHand/gauntlet/Gauntlet/Skeleton3D" index="1" unique_id=853695899] layers = 2 -[node name="door_001" parent="FirstPersonViewport/Head2/RightHand/gauntlet/Gauntlet/Skeleton3D" index="2" unique_id=1162616444] +[node name="door_001" parent="FirstPersonViewport/Head2/ViewMovement/RightHand/gauntlet/Gauntlet/Skeleton3D" index="2" unique_id=51292188] layers = 2 -[node name="Node3D" type="Node3D" parent="FirstPersonViewport/Head2/RightHand/gauntlet/Gauntlet/Skeleton3D" index="3" unique_id=1528034935] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.257481, -0.237301, -0.452066) +[node name="BoneAttachment3D" type="BoneAttachment3D" parent="FirstPersonViewport/Head2/ViewMovement/RightHand/gauntlet/Gauntlet/Skeleton3D" index="3" unique_id=1916743669] +transform = Transform3D(0.9996732, 0.002340883, 0.02545051, -0.0023422316, 0.999997, 2.1509419e-05, -0.025450272, -8.0959755e-05, 0.99967617, 0.22945356, -0.23003688, -0.4849847) +bone_name = "Plane" +bone_idx = 23 -[node name="card_hand" parent="FirstPersonViewport/Head2/RightHand" unique_id=1949070143 instance=ExtResource("12_r2yb6")] +[node name="card_hand" parent="FirstPersonViewport/Head2/ViewMovement/RightHand" unique_id=1949070143 instance=ExtResource("12_r2yb6")] -[node name="Skeleton3D" parent="FirstPersonViewport/Head2/RightHand/card_hand/Armature" parent_id_path=PackedInt32Array(1949070143, 779813012) index="0" unique_id=1687711431] +[node name="Skeleton3D" parent="FirstPersonViewport/Head2/ViewMovement/RightHand/card_hand/Armature" parent_id_path=PackedInt32Array(1949070143, 779813012) index="0" unique_id=1687711431] bones/0/position = Vector3(0.003709482, 0.14446077, 0.042393185) bones/0/rotation = Quaternion(-0.03916115, -0.009479229, 0.7379919, 0.67360556) bones/1/rotation = Quaternion(0.033827104, 0.020153234, -0.037197568, 0.99853194) @@ -386,29 +376,85 @@ bones/23/rotation = Quaternion(-0.04489054, -0.044890743, 0.70568043, 0.7056804) bones/24/position = Vector3(-2.8036966, 0.39121616, -0.41559562) bones/24/rotation = Quaternion(-0.084565006, -0.08456521, 0.70203185, 0.7020319) -[node name="Body_004" parent="FirstPersonViewport/Head2/RightHand/card_hand/Armature/Skeleton3D" index="0" unique_id=330536477] +[node name="Body_004" parent="FirstPersonViewport/Head2/ViewMovement/RightHand/card_hand/Armature/Skeleton3D" index="0" unique_id=330536477] layers = 2 -[node name="Empty_001" parent="FirstPersonViewport/Head2/RightHand/card_hand" index="1" unique_id=124279582] +[node name="Empty_001" parent="FirstPersonViewport/Head2/ViewMovement/RightHand/card_hand" index="1" unique_id=124279582] transform = Transform3D(0.996286, -0.0860546, -0.00298578, -0.00927826, -0.0728151, -0.997302, 0.0856051, 0.993626, -0.0733431, -0.086853, -0.100784, -0.288736) -[node name="cassette" parent="FirstPersonViewport/Head2/RightHand/card_hand/Empty_001" index="0" unique_id=1368647028 instance=ExtResource("13_7immr")] +[node name="cassette" parent="FirstPersonViewport/Head2/ViewMovement/RightHand/card_hand/Empty_001" index="0" unique_id=1368647028 instance=ExtResource("13_7immr")] -[node name="Cassette" parent="FirstPersonViewport/Head2/RightHand/card_hand/Empty_001/cassette" index="0" unique_id=360288089] +[node name="Cassette" parent="FirstPersonViewport/Head2/ViewMovement/RightHand/card_hand/Empty_001/cassette" index="0" unique_id=360288089] layers = 2 -[node name="AnimationTree" type="AnimationTree" parent="FirstPersonViewport/Head2/RightHand" unique_id=1068524091] +[node name="AnimationTree" type="AnimationTree" parent="FirstPersonViewport/Head2/ViewMovement/RightHand" unique_id=1068524091] root_node = NodePath("../gauntlet") tree_root = SubResource("AnimationNodeBlendTree_hueaw") anim_player = NodePath("../gauntlet/AnimationPlayer") parameters/Blend3/blend_amount = 1.0 +parameters/OneShot/active = false +parameters/OneShot/internal_active = false +parameters/OneShot/request = 0 -[node name="AnimationTree2" type="AnimationTree" parent="FirstPersonViewport/Head2/RightHand" unique_id=2004934987] +[node name="AnimationTree2" type="AnimationTree" parent="FirstPersonViewport/Head2/ViewMovement/RightHand" unique_id=2004934987] root_node = NodePath("../card_hand") tree_root = SubResource("AnimationNodeBlendTree_xav2s") anim_player = NodePath("../card_hand/AnimationPlayer") parameters/Blend2/blend_amount = 0.0 +[node name="SubViewport" type="SubViewport" parent="." unique_id=615109350] +size = Vector2i(1920, 1080) + +[node name="Head" type="Camera3D" parent="SubViewport" unique_id=614493089] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.62, 0) +keep_aspect = 0 +cull_mask = 1048569 +environment = ExtResource("13_vkt85") +fov = 100.0 + +[node name="EditTool" parent="SubViewport/Head" unique_id=899304678 node_paths=PackedStringArray("hero") instance=ExtResource("5_jlxb3")] +hero = NodePath("../../..") + +[node name="RayCast3D" type="RayCast3D" parent="SubViewport/Head" unique_id=302302801] +target_position = Vector3(0, 0, -2) +collision_mask = 24 + +[node name="CardPlacingTool" parent="SubViewport/Head" unique_id=1227455090 node_paths=PackedStringArray("hero") instance=ExtResource("8_7d213")] +hero = NodePath("../../..") + +[node name="AudioListener3D" type="AudioListener3D" parent="." unique_id=1396328287] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=1279010072] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9, 0) +shape = SubResource("CapsuleShape3D_jbu13") + +[node name="ViewMovement" type="Node3D" parent="." unique_id=2029540853 node_paths=PackedStringArray("player", "camera", "focus_raycast")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.62, 0) +script = ExtResource("4_mhexa") +player = NodePath("..") +camera = NodePath("Node3D") +focus_raycast = NodePath("../SubViewport/Head/RayCast3D") +head_bob_max_effect_speed = 4.5 +head_bob_amplitude = 0.09 +head_bob_frequency = 7.0 +enable_strafe_tilt = true +tilt_amount_x = 0.8 + +[node name="RayCast3D" type="RayCast3D" parent="ViewMovement" unique_id=522176621] +target_position = Vector3(0, 0, -100) +collision_mask = 65535 + +[node name="Node3D" type="Node3D" parent="ViewMovement" unique_id=2137069228 node_paths=PackedStringArray("hero", "hud")] +script = ExtResource("15_0ehim") +hero = NodePath("../..") +hud = NodePath("../../HUD") +hud_affect = 40.0 +Damping = 20.0 + +[node name="RemoteTransform3D" type="RemoteTransform3D" parent="ViewMovement/Node3D" unique_id=1038602523] +remote_path = NodePath("../../../SubViewport/Head") + [node name="MiniMapViewport" type="SubViewport" parent="." unique_id=384727742] size = Vector2i(256, 256) render_target_update_mode = 4 @@ -440,7 +486,7 @@ vertical_alignment = 1 [node name="EightDirectionSprite" parent="." unique_id=438977751 instance=ExtResource("2_ib0t5")] transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0.915529, 0) -texture = SubResource("AtlasTexture_r3lbl") +texture = SubResource("AtlasTexture_vkt85") [node name="MinimapIcon" type="Sprite3D" parent="." unique_id=1797025603] transform = Transform3D(4, 0, 0, 0, 0.0698095, 3.99939, 0, -3.99939, 0.0698095, 0, 2.86288, 0) @@ -471,13 +517,35 @@ script = ExtResource("6_cf5ap") script = ExtResource("20_cfhw8") player = NodePath("..") head = NodePath("../ViewMovement") +hard_speed_limit = 4.5 toggle_sprint = true max_look_down_angle = 80.0 max_look_up_angle = 80.0 -air_control = 0.3 +air_control = 0.6 enable_jumping = true -time_to_floor = 0.27 -weapon_holder = NodePath("../FirstPersonViewport/Head2/RightHand") +time_to_peak = 0.34 +time_to_floor = 0.28 +weapon_holder = NodePath("../FirstPersonViewport/Head2/ViewMovement/RightHand") + +[node name="PostFx" type="CanvasLayer" parent="." unique_id=589280060] + +[node name="TextureRect" type="TextureRect" parent="PostFx" unique_id=1140046628] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = SubResource("ViewportTexture_r3lbl") + +[node name="FirstPersonCam" type="TextureRect" parent="PostFx" unique_id=1345632904] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = SubResource("ViewportTexture_mk87g") [node name="HUD" type="CanvasLayer" parent="." unique_id=499382586 node_paths=PackedStringArray("player", "wave_count", "currency_count", "minimap_outline", "minimap", "minimap_cam", "minimap_viewport", "fps_label", "hover_text", "enemy_sprites", "enemy_counts", "wave_start_label", "place_text", "swap_text", "energy_label", "blank_cassette_label", "feature_preview", "hot_wheel", "shield_ui", "currencies", "energy_pips", "enemy_count_label", "primary_button", "secondary_button", "slots")] script = ExtResource("8_yl6ka") @@ -509,15 +577,6 @@ secondary_button = NodePath("VBoxContainer2/HBoxContainer2/Button2") null_icon = ExtResource("22_o55s8") slots = NodePath("VBoxContainer2") -[node name="FirstPersonCam" type="TextureRect" parent="HUD" unique_id=1345632904] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -mouse_filter = 2 -texture = SubResource("ViewportTexture_mk87g") - [node name="Minimap" type="TextureRect" parent="HUD" unique_id=614380579] visible = false anchors_preset = 1 @@ -948,34 +1007,42 @@ replication_config = SubResource("SceneReplicationConfig_tsiqi") [node name="PlaceCardAudio" type="AudioStreamPlayer" parent="." unique_id=1230517992] stream = SubResource("AudioStreamRandomizer_wyb7c") +volume_db = -9.936 bus = &"SFX" [node name="SwapCardAudio" type="AudioStreamPlayer" parent="." unique_id=382203637] stream = SubResource("AudioStreamRandomizer_0lyoo") +volume_db = -9.936 bus = &"SFX" [node name="ReadyAudio" type="AudioStreamPlayer" parent="." unique_id=1512085855] stream = SubResource("AudioStreamRandomizer_evsqr") +volume_db = -12.0 bus = &"SFX" [node name="UnreadyAudio" type="AudioStreamPlayer" parent="." unique_id=12065125] stream = SubResource("AudioStreamRandomizer_pc8yw") +volume_db = -11.989 bus = &"SFX" [node name="FullPowerAudio" type="AudioStreamPlayer" parent="." unique_id=204432375] stream = ExtResource("37_sa2xu") +volume_db = -21.86 bus = &"SFX" [node name="ZeroPowerAudio" type="AudioStreamPlayer" parent="." unique_id=842811877] stream = ExtResource("36_cd8og") +volume_db = -13.911 bus = &"SFX" [node name="SwapOffAudio" type="AudioStreamPlayer" parent="." unique_id=2115799468] stream = ExtResource("40_pnv0q") +volume_db = -13.679 bus = &"SFX" [node name="SwapOnAudio" type="AudioStreamPlayer" parent="." unique_id=1891077839] stream = ExtResource("41_hussy") +volume_db = -10.599 bus = &"SFX" [node name="BuildingState" type="Node" parent="." unique_id=744789457 node_paths=PackedStringArray("swap_state", "hero")] @@ -1016,27 +1083,43 @@ size = 2.243 [node name="GrassFootSteps" type="AudioStreamPlayer" parent="." unique_id=1334135194] stream = SubResource("AudioStreamRandomizer_r3lbl") +volume_db = -12.0 +bus = &"SFX" [node name="GrassFootSteps2" type="AudioStreamPlayer" parent="." unique_id=1888481320] stream = SubResource("AudioStreamRandomizer_r3lbl") +volume_db = -12.0 +bus = &"SFX" [node name="BrickFootSteps" type="AudioStreamPlayer" parent="." unique_id=1472210643] stream = SubResource("AudioStreamRandomizer_0ehim") +volume_db = -12.0 +bus = &"SFX" [node name="BrickFootSteps2" type="AudioStreamPlayer" parent="." unique_id=584609189] stream = SubResource("AudioStreamRandomizer_0ehim") +volume_db = -12.0 +bus = &"SFX" [node name="StoneFootSteps" type="AudioStreamPlayer" parent="." unique_id=1254189615] stream = SubResource("AudioStreamRandomizer_u2rve") +volume_db = -12.0 +bus = &"SFX" [node name="StoneFootSteps2" type="AudioStreamPlayer" parent="." unique_id=1184202084] stream = SubResource("AudioStreamRandomizer_u2rve") +volume_db = -12.0 +bus = &"SFX" [node name="DirtFootSteps" type="AudioStreamPlayer" parent="." unique_id=1056313659] stream = SubResource("AudioStreamRandomizer_vkt85") +volume_db = -12.0 +bus = &"SFX" [node name="DirtFootSteps2" type="AudioStreamPlayer" parent="." unique_id=1806375267] stream = SubResource("AudioStreamRandomizer_vkt85") +volume_db = -12.0 +bus = &"SFX" [node name="RayCast3D" type="RayCast3D" parent="." unique_id=1935479077] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.43043494, 0) @@ -1044,7 +1127,7 @@ target_position = Vector3(0, -11.465, 0) [connection signal="timeout" from="WeaponSwapTimer" to="." method="_on_timer_timeout"] -[editable path="FirstPersonViewport/Head2/RightHand/gauntlet"] -[editable path="FirstPersonViewport/Head2/RightHand/card_hand"] -[editable path="FirstPersonViewport/Head2/RightHand/card_hand/Empty_001/cassette"] +[editable path="FirstPersonViewport/Head2/ViewMovement/RightHand/gauntlet"] +[editable path="FirstPersonViewport/Head2/ViewMovement/RightHand/card_hand"] +[editable path="FirstPersonViewport/Head2/ViewMovement/RightHand/card_hand/Empty_001/cassette"] [editable path="CoinViewport/Coin"] diff --git a/PCs/spring.gd b/PCs/spring.gd new file mode 100644 index 0000000..62cec70 --- /dev/null +++ b/PCs/spring.gd @@ -0,0 +1,41 @@ +class_name Spring +extends Node3D + +@export var hero: Hero +@export var hud: HUD + +@export var hud_affect: float +@export var affect: Node3D + +@export var AccelerationScale: float = 200.0 +@export var MaxAcceleration: float = 0.3 +@export var Rebound: float = 2.0 +@export var Damping: float = 14.0 + +var previousVelocity: Vector3; +var AccumulatedDifferential: Vector3; +var AccumulatedDeflection: Vector3; + + +func _process(delta: float) -> void: + var current_velocity: Vector3 = hero.velocity + var acceleration: Vector3 = previousVelocity - current_velocity + + acceleration /= AccelerationScale; + + if (acceleration.length() > MaxAcceleration): + acceleration = acceleration.normalized() * MaxAcceleration; + + AccumulatedDifferential += acceleration; + AccumulatedDeflection += AccumulatedDifferential; + AccumulatedDifferential -= AccumulatedDeflection * Rebound * delta; + AccumulatedDeflection -= AccumulatedDeflection * Damping * delta; + + previousVelocity = current_velocity; + + position.y = AccumulatedDeflection.y + if affect: + affect.position.y = AccumulatedDeflection.y + affect.position.x = AccumulatedDeflection.z + if hud: + hud.offset = Vector2(AccumulatedDeflection.x, AccumulatedDeflection.y) * hud_affect diff --git a/PCs/spring.gd.uid b/PCs/spring.gd.uid new file mode 100644 index 0000000..aa29cdb --- /dev/null +++ b/PCs/spring.gd.uid @@ -0,0 +1 @@ +uid://dkhl8u8p6gmlu diff --git a/PCs/view_movement.gd b/PCs/view_movement.gd index d1be63a..bd8e881 100644 --- a/PCs/view_movement.gd +++ b/PCs/view_movement.gd @@ -4,7 +4,7 @@ extends Node3D @export var player: CharacterBody3D @export_category("Bobbing") -@export var camera: Camera3D +@export var camera: Node3D @export var focus_raycast: RayCast3D @export var enable_head_bob: bool = true @export var head_bob_max_effect_speed: float = 4.317 diff --git a/Scenes/CardPrinter/card_printer.tscn b/Scenes/CardPrinter/card_printer.tscn index 225c7e8..a8121e4 100644 --- a/Scenes/CardPrinter/card_printer.tscn +++ b/Scenes/CardPrinter/card_printer.tscn @@ -3,13 +3,14 @@ [ext_resource type="Script" uid="uid://bivtfdl3p1brv" path="res://Scenes/CardPrinter/card_printer.gd" id="1_qft15"] [ext_resource type="PackedScene" uid="uid://bcvjgl0s1wp8y" path="res://UI/Menus/RadioMenu/choose_card_screen.tscn" id="2_kpujb"] [ext_resource type="Script" uid="uid://dkfswql8ui0bt" path="res://Scripts/interact_button.gd" id="4_eavi1"] +[ext_resource type="PackedScene" uid="uid://ca1y03riauk7v" path="res://boombox.glb" id="5_8jpsw"] [ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="5_m033a"] [sub_resource type="BoxShape3D" id="BoxShape3D_0ebt5"] -size = Vector3(3.00441, 1.21416, 2.14176) +size = Vector3(3.00441, 0.9920776, 1.2781768) [sub_resource type="BoxShape3D" id="BoxShape3D_ikdwj"] -size = Vector3(0.57883, 0.375308, 0.190803) +size = Vector3(0.8920957, 1.1780555, 0.653507) [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_73g2w"] random_pitch = 1.1 @@ -17,7 +18,7 @@ streams_count = 1 stream_0/stream = ExtResource("5_m033a") [sub_resource type="BoxShape3D" id="BoxShape3D_21y4o"] -size = Vector3(2.11176, 1.16345, 0.664978) +size = Vector3(3.1602442, 1.6259993, 1.007927) [node name="CardPrinter" type="StaticBody3D" unique_id=459800869 node_paths=PackedStringArray("button", "button_collider")] script = ExtResource("1_qft15") @@ -26,9 +27,12 @@ button_collider = NodePath("StaticBody3D/CollisionShape3D2") card_selection_menu = ExtResource("2_kpujb") [node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=30960146] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.000722647, 0.607083, -0.000626981) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0007226467, 0.47737724, 0.562555) shape = SubResource("BoxShape3D_0ebt5") +[node name="boombox" parent="." unique_id=1990632876 instance=ExtResource("5_8jpsw")] +transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 0.03968942, 1.5274034, 0.27377868) + [node name="StaticBody3D" type="StaticBody3D" parent="." unique_id=427437411] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.847404, 0.610684) collision_layer = 16 @@ -37,7 +41,7 @@ script = ExtResource("4_eavi1") press_cost = 1 [node name="CollisionShape3D2" type="CollisionShape3D" parent="StaticBody3D" unique_id=914833676] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00542301, 0.653175, 0.254328) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.11519222, 0.80499697, 0.5172301) shape = SubResource("BoxShape3D_ikdwj") [node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="StaticBody3D" unique_id=2125771228] @@ -45,46 +49,28 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.578748, -0.587001) stream = SubResource("AudioStreamRandomizer_73g2w") bus = &"SFX" -[node name="CSGBox3D" type="CSGBox3D" parent="." unique_id=1403603208] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.76287, 0.437195) -size = Vector3(2.1, 1.21, 0.66) - -[node name="CSGBox3D2" type="CSGBox3D" parent="." unique_id=1998404784] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.50532, 0.844074) -size = Vector3(0.57, 0.365, 0.22) - [node name="CSGBox3D3" type="CSGBox3D" parent="." unique_id=1739651585] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.07889, 0) -size = Vector3(3.01, 0.275, 2.145) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.83318865, 0.5436785) +size = Vector3(3.01, 0.275, 1.3083398) [node name="CSGBox3D4" type="CSGBox3D" parent="." unique_id=1331903082] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.17866, 0.464503, 0.722973) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.2236495, 0.46450287, 0.9188268) size = Vector3(0.355, 1, 0.37) [node name="CSGBox3D5" type="CSGBox3D" parent="." unique_id=792536346] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.20564, 0.464503, 0.744042) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.2526929, 0.46450287, 0.9501231) size = Vector3(0.355, 1, 0.37) [node name="CSGBox3D6" type="CSGBox3D" parent="." unique_id=924404615] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.21651, 0.464503, -0.703903) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.2410457, 0.46450287, 0.15670347) size = Vector3(0.355, 1, 0.37) [node name="CSGBox3D7" type="CSGBox3D" parent="." unique_id=1351624555] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.20425, 0.464503, -0.796043) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.2410758, 0.46450287, 0.1566062) size = Vector3(0.355, 1, 0.37) -[node name="CSGCylinder3D" type="CSGCylinder3D" parent="." unique_id=1627726465] -transform = Transform3D(0.791895, -0.610657, 0, 0.610657, 0.791895, 0, 0, 0, 1, -0.894404, 2.86265, 0.47663) -radius = 0.131 -height = 1.627 - -[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="." unique_id=2001644920] -transform = Transform3D(0.74906, 0.662502, 0, -0.662502, 0.74906, 0, 0, 0, 1, 1.08608, 2.86265, 0.47663) -radius = 0.131 -height = 1.627 - [node name="CollisionShape3D2" type="CollisionShape3D" parent="." unique_id=1288587195] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00228882, 1.78986, 0.431061) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0032413006, 1.7864776, 0.59116006) shape = SubResource("BoxShape3D_21y4o") [connection signal="button_interacted" from="StaticBody3D" to="." method="_on_static_body_3d_button_interacted"] diff --git a/Scenes/Menus/confirmation_popup.tscn b/Scenes/Menus/confirmation_popup.tscn index 6efe9bf..2bb2db6 100644 --- a/Scenes/Menus/confirmation_popup.tscn +++ b/Scenes/Menus/confirmation_popup.tscn @@ -46,6 +46,7 @@ text = "Confirm" [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="." unique_id=195190349] stream = SubResource("AudioStreamRandomizer_22wuj") +volume_db = -10.665 bus = &"SFX" [connection signal="mouse_entered" from="VBoxContainer/HBoxContainer/Cancel" to="." method="_on_button_mouse_entered"] diff --git a/Scripts/Resources/player_graphics_settings.gd b/Scripts/Resources/player_graphics_settings.gd index d15e2b0..58f3320 100644 --- a/Scripts/Resources/player_graphics_settings.gd +++ b/Scripts/Resources/player_graphics_settings.gd @@ -9,6 +9,7 @@ const SAVE_PATH: String = "user://graphics_settings.tres" @export var windowed_mode: int = 0 @export var vertex_jitter: float = 0.2 @export var affine_warping: float = 1.0 +@export var resolution_scaling: float = 1.0 func apply_graphical_settings(viewport: Viewport) -> void: diff --git a/Scripts/Weapons/hitscan_weapon.gd b/Scripts/Weapons/hitscan_weapon.gd index 0026145..1d0cd2d 100644 --- a/Scripts/Weapons/hitscan_weapon.gd +++ b/Scripts/Weapons/hitscan_weapon.gd @@ -10,9 +10,12 @@ var attack_range: float = 0.0 func _ready() -> void: super._ready() attack_range = stats.get_attribute("Range") - raycast.target_position = Vector3(0, 0, -attack_range) - #range_debug_indicator.radius = attack_range + + +func _process(delta: float) -> void: + super._process(delta) raycast.global_position = hero.camera.global_position + raycast.target_position = Vector3(0, 0, -attack_range) func shoot() -> void: @@ -23,6 +26,11 @@ func shoot() -> void: var hitbox: Hitbox = target.shape_owner_get_owner(raycast.get_collider_shape()) hit(hitbox, raycast.get_collision_point()) networked_hit.rpc(get_tree().root.get_path_to(hitbox), raycast.get_collision_point()) + if particle_emitter: + particle_emitter.global_position = raycast.get_collision_point() + particle_emitter.process_material.direction = raycast.get_collision_normal() + particle_emitter.restart() + particle_emitter.emitting = true func hit(hitbox: Hitbox, hit_pos: Vector3) -> void: diff --git a/Scripts/Weapons/weapon.gd b/Scripts/Weapons/weapon.gd index 1090105..84b42ad 100644 --- a/Scripts/Weapons/weapon.gd +++ b/Scripts/Weapons/weapon.gd @@ -4,11 +4,13 @@ extends Node3D signal energy_spent(energy: int, type: Data.EnergyType) signal energy_recharged(energy: int, type: Data.EnergyType) signal energy_changed(energy: float) +signal fired() @export var stats: CardText @export var animator: AnimationPlayer @export var audio_player: AudioStreamPlayer3D @export var recharge_timer: Timer +@export var particle_emitter: GPUParticles3D var hero: Hero var trigger_held: bool = false @@ -98,6 +100,7 @@ func shoot() -> void: recharging = false recharge_speed = 0.0 recharge_timer.stop() + fired.emit() @rpc diff --git a/Scripts/data.gd b/Scripts/data.gd index 46408a3..db75ab0 100644 --- a/Scripts/data.gd +++ b/Scripts/data.gd @@ -1,5 +1,7 @@ extends Node +signal resolution_changed(size: Vector2) + var characters: Array[HeroClass] var cards: Array[Card] #var keymaps: Array[PlayerKeymap] diff --git a/Scripts/game.gd b/Scripts/game.gd index 8c06ef6..2fefeb5 100644 --- a/Scripts/game.gd +++ b/Scripts/game.gd @@ -33,6 +33,7 @@ var card_gameplay: bool = false var level_layout: FlowFieldData var level_config: LevelConfig var starting_endless: bool = false +var rhythm_notifier: RhythmNotifier #TODO: Create a reference to some generic Lobby object that wraps the multiplayer players list stuff @@ -107,6 +108,10 @@ func get_upcoming_waves(wave_count: int) -> Array[WaveConfig]: return waves +func connect_tower_to_music(tower: Tower) -> void: + rhythm_notifier.beats(1).connect(tower.shoot) + + func spawn_level(scene: PackedScene) -> void: level = scene.instantiate() as Level var flow_field: FlowField = FlowField.new() @@ -133,6 +138,7 @@ func spawn_players() -> void: player_array.sort() for peer_id: int in player_array: var player: Hero = player_scene.instantiate() as Hero + player.placed_tower.connect(connect_tower_to_music) player.name = str(peer_id) player.game_manager = self player.edit_tool.level = level @@ -199,16 +205,16 @@ func set_wave_to_spawners(wave_thing: WaveConfig, wave_number: int) -> void: func set_upcoming_wave() -> void: if is_multiplayer_authority(): - print(wave) - print(level_config.waves.size()) + #print(wave) + #print(level_config.waves.size()) if wave > level_config.waves.size(): - print("added new wave on top") + #print("added new wave on top") var spawn_power: int = WaveManager.calculate_spawn_power(wave, connected_players_nodes.size()) var new_wave: WaveConfig = WaveManager.generate_wave(spawn_power, level.enemy_pool, level.enemy_spawns.size()) level_config.waves.append(new_wave) var new_wave: WaveConfig = get_upcoming_waves(1)[0] - print(new_wave) + #print(new_wave) set_wave_to_spawners(new_wave, wave) temp_set_upcoming_wave(new_wave, WaveManager.calculate_pot(wave, connected_players_nodes.size())) @@ -265,7 +271,7 @@ func damage_goal(enemy: Enemy, penalty: int) -> void: func end_wave() -> void: - print("wave endedZ") + #print("wave endedZ") wave += 1 Data.save_data.check_high_score(level_config.display_title, wave, starting_endless) for peer_id: int in connected_players_nodes: @@ -329,6 +335,10 @@ func setup() -> void: wave = 1 stats = RoundStats.new() wave_limit = level_config.waves.size() + rhythm_notifier = RhythmNotifier.new() + add_child(rhythm_notifier) + rhythm_notifier.bpm = 120 + rhythm_notifier.running = true game_setup.emit() diff --git a/Shaders/mightyduke_ps1.gdshader b/Shaders/mightyduke_ps1.gdshader index 6accff8..fa337ba 100644 --- a/Shaders/mightyduke_ps1.gdshader +++ b/Shaders/mightyduke_ps1.gdshader @@ -48,7 +48,8 @@ void fragment() { uv /= (VERTEX.z); uv = mix(perspective_uv, uv, affine_amount); - ALBEDO = texture(albedo, uv).rgb; + ALBEDO = texture(albedo, uv).rgb * COLOR.rgb; + //ALBEDO = texture(albedo, uv).rgb; ALPHA = texture(albedo, uv).a; ALPHA_SCISSOR_THRESHOLD = alpha_scissor; } \ No newline at end of file diff --git a/Towers/Ascension/tower_stats.tres b/Towers/Ascension/tower_stats.tres index 5df639e..f922052 100644 --- a/Towers/Ascension/tower_stats.tres +++ b/Towers/Ascension/tower_stats.tres @@ -2,6 +2,7 @@ [ext_resource type="Script" uid="uid://bsuinotkvh7eu" path="res://Scripts/Resources/feature.gd" id="1_tiqmf"] [ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_bpl71"] +[ext_resource type="Resource" uid="uid://dfup264h2pun7" path="res://Scripts/Features/HeavyRounds/heavy_rounds_feature.tres" id="2_imnjp"] [resource] script = ExtResource("2_bpl71") @@ -10,5 +11,6 @@ attributes = Dictionary[String, float]({ "Fire Delay": 9999.0, "Range": 1.0 }) +features = Array[ExtResource("1_tiqmf")]([ExtResource("2_imnjp")]) text = "DESC_TOWER_PLATFORM_DASH" metadata/_custom_type_script = "uid://dg7gxxqfqxcmc" diff --git a/Towers/Assault/PipePistolBullets.tres b/Towers/Assault/PipePistolBullets.tres new file mode 100644 index 0000000..7b721ff --- /dev/null +++ b/Towers/Assault/PipePistolBullets.tres @@ -0,0 +1,8 @@ +[gd_resource type="ParticleProcessMaterial" format=3 uid="uid://3m464q2bkdkm"] + +[resource] +direction = Vector3(0, 0, -1) +spread = 40.0 +initial_velocity_min = 10.0 +initial_velocity_max = 10.0 +gravity = Vector3(0, 0, 0) diff --git a/Towers/Assault/tower_assault.tscn b/Towers/Assault/tower_assault.tscn index 9ae5cbc..14ee089 100644 --- a/Towers/Assault/tower_assault.tscn +++ b/Towers/Assault/tower_assault.tscn @@ -5,10 +5,17 @@ [ext_resource type="Script" uid="uid://djp7tepdsda8w" path="res://Scripts/effect.gd" id="3_75shm"] [ext_resource type="ArrayMesh" uid="uid://oxjhqfwlcx5l" path="res://Towers/Assault/assaultmod.res" id="4_1d5pl"] [ext_resource type="Script" uid="uid://chy7bx8dlwgs0" path="res://Scripts/StatusEffects/status_effect.gd" id="4_lkplr"] +[ext_resource type="AudioStream" uid="uid://ciyphup4n1sbi" path="res://click.wav" id="6_g00m4"] [sub_resource type="Resource" id="Resource_c6gqc"] script = ExtResource("3_75shm") +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_q14kf"] +random_pitch = 1.005793 +random_volume_offset_db = 0.2 +streams_count = 1 +stream_0/stream = ExtResource("6_g00m4") + [node name="DirectAffectTower" unique_id=252570832 instance=ExtResource("1_cn3qe")] stats = ExtResource("2_gg1gn") effect = SubResource("Resource_c6gqc") @@ -19,3 +26,6 @@ visible = false [node name="Yaw" parent="." index="2" unique_id=36855242] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 1.2058, 0) mesh = ExtResource("4_1d5pl") + +[node name="AudioStreamPlayer3D" parent="Yaw" index="0" unique_id=1877101855] +stream = SubResource("AudioStreamRandomizer_q14kf") diff --git a/Towers/Blowdart/blowdart.res b/Towers/Blowdart/blowdart.res index 7b9a96c6b24c79a83e04ca248e04aedabaed66f8..bbbf03734816fe49a83a9a69b8525ef2ff43f8b1 100644 GIT binary patch delta 4138 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 literal 10536 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 void: current_time_between_shots = lerpf(time_between_shots, final_time_between_shots, progress) if time_since_firing >= current_time_between_shots: time_since_firing -= current_time_between_shots - shoot() + #shoot(0) diff --git a/Towers/GlueLauncher/tower_stats.tres b/Towers/GlueLauncher/tower_stats.tres index b2fc2ca..67bbb2b 100644 --- a/Towers/GlueLauncher/tower_stats.tres +++ b/Towers/GlueLauncher/tower_stats.tres @@ -2,6 +2,7 @@ [ext_resource type="Script" uid="uid://bsuinotkvh7eu" path="res://Scripts/Resources/feature.gd" id="1_qb1t6"] [ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_226sm"] +[ext_resource type="Resource" uid="uid://dfup264h2pun7" path="res://Scripts/Features/HeavyRounds/heavy_rounds_feature.tres" id="2_m4him"] [resource] script = ExtResource("2_226sm") @@ -11,4 +12,5 @@ attributes = Dictionary[String, float]({ "Fire Delay": 2.0, "Range": 10.0 }) +features = Array[ExtResource("1_qb1t6")]([ExtResource("2_m4him")]) text = "DESC_TOWER_GLUE" diff --git a/Towers/Icicle/tower_stats.tres b/Towers/Icicle/tower_stats.tres index 51f8b7b..8e98a45 100644 --- a/Towers/Icicle/tower_stats.tres +++ b/Towers/Icicle/tower_stats.tres @@ -1,6 +1,7 @@ [gd_resource type="Resource" script_class="CardText" format=3 uid="uid://d34bfj5togyyt"] [ext_resource type="Script" uid="uid://bsuinotkvh7eu" path="res://Scripts/Resources/feature.gd" id="1_ju6am"] +[ext_resource type="Resource" uid="uid://dfup264h2pun7" path="res://Scripts/Features/HeavyRounds/heavy_rounds_feature.tres" id="2_6ypa3"] [ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_dorn5"] [resource] @@ -11,4 +12,5 @@ attributes = Dictionary[String, float]({ "Fire Delay": 3.0, "Range": 15.0 }) +features = Array[ExtResource("1_ju6am")]([ExtResource("2_6ypa3")]) text = "DESC_TOWER_ICE_SPIKE" diff --git a/Towers/Overclock/overclock_tower.gd b/Towers/Overclock/overclock_tower.gd index 6830b3d..178ac88 100644 --- a/Towers/Overclock/overclock_tower.gd +++ b/Towers/Overclock/overclock_tower.gd @@ -1,7 +1,7 @@ class_name OverclockTower extends Tower -func shoot() -> void: +func shoot(count: int) -> void: #affector.apply_effect(effect, target_finder.targets) for tower: TowerBase in get_tree().get_nodes_in_group("TowerBases"): if tower.tower and tower.tower.stats != stats: diff --git a/Towers/Overclock/tower_stats.tres b/Towers/Overclock/tower_stats.tres index 87ef569..4e8e159 100644 --- a/Towers/Overclock/tower_stats.tres +++ b/Towers/Overclock/tower_stats.tres @@ -2,6 +2,7 @@ [ext_resource type="Script" uid="uid://bsuinotkvh7eu" path="res://Scripts/Resources/feature.gd" id="1_0swcp"] [ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_fax6y"] +[ext_resource type="Resource" uid="uid://dfup264h2pun7" path="res://Scripts/Features/HeavyRounds/heavy_rounds_feature.tres" id="2_v0e26"] [resource] script = ExtResource("2_fax6y") @@ -10,5 +11,6 @@ attributes = Dictionary[String, float]({ "Fire Delay": 0.0, "Range": 4.0 }) +features = Array[ExtResource("1_0swcp")]([ExtResource("2_v0e26")]) text = "DESC_TOWER_SPEED_INCREASER" metadata/_custom_type_script = "uid://dg7gxxqfqxcmc" diff --git a/Towers/Reactor/tower_stats.tres b/Towers/Reactor/tower_stats.tres index 6073763..643eb8e 100644 --- a/Towers/Reactor/tower_stats.tres +++ b/Towers/Reactor/tower_stats.tres @@ -2,6 +2,7 @@ [ext_resource type="Script" uid="uid://bsuinotkvh7eu" path="res://Scripts/Resources/feature.gd" id="1_8hcmy"] [ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_8w61k"] +[ext_resource type="Resource" uid="uid://dfup264h2pun7" path="res://Scripts/Features/HeavyRounds/heavy_rounds_feature.tres" id="2_cqn8u"] [resource] script = ExtResource("2_8w61k") @@ -10,4 +11,5 @@ attributes = Dictionary[String, float]({ "Fire Delay": 4.0, "Range": 30.0 }) +features = Array[ExtResource("1_8hcmy")]([ExtResource("2_cqn8u")]) text = "DESC_TOWER_RADIATION" diff --git a/Towers/Refrigerator/tower_stats.tres b/Towers/Refrigerator/tower_stats.tres index 7b4594b..f322498 100644 --- a/Towers/Refrigerator/tower_stats.tres +++ b/Towers/Refrigerator/tower_stats.tres @@ -1,6 +1,7 @@ [gd_resource type="Resource" script_class="CardText" format=3 uid="uid://st0qrut5nxrm"] [ext_resource type="Script" uid="uid://bsuinotkvh7eu" path="res://Scripts/Resources/feature.gd" id="1_mfkpu"] +[ext_resource type="Resource" uid="uid://dfup264h2pun7" path="res://Scripts/Features/HeavyRounds/heavy_rounds_feature.tres" id="2_ig77i"] [ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_w4q6a"] [resource] @@ -11,4 +12,5 @@ attributes = Dictionary[String, float]({ "Fire Delay": 1.0, "Range": 3.0 }) +features = Array[ExtResource("1_mfkpu")]([ExtResource("2_ig77i")]) text = "DESC_TOWER_FREEZER" diff --git a/Towers/tower.gd b/Towers/tower.gd index dc6cc60..5217cae 100644 --- a/Towers/tower.gd +++ b/Towers/tower.gd @@ -61,7 +61,8 @@ func _physics_process(_delta: float) -> void: if time_since_firing >= time_between_shots: time_since_firing -= time_between_shots if affector: - shoot() + pass + #shoot() func aim() -> void: @@ -70,14 +71,15 @@ func aim() -> void: pitch_model.rotation.x = 0.0 -func shoot() -> void: - affector.apply_effect(effect, target_finder.targets) - animator.play("shoot") - audio_player.play() - if is_multiplayer_authority(): - networked_shoot.rpc() +func shoot(count: int) -> void: + if target_finder.targets.size() > 0 and affector: + affector.apply_effect(effect, target_finder.targets) + animator.play("shoot") + audio_player.play() + if is_multiplayer_authority(): + networked_shoot.rpc() @rpc("reliable") func networked_shoot() -> void: - shoot() + shoot(0) diff --git a/UI/DamageParticle/damage_particle.gd b/UI/DamageParticle/damage_particle.gd index 90e95ff..6023b92 100644 --- a/UI/DamageParticle/damage_particle.gd +++ b/UI/DamageParticle/damage_particle.gd @@ -1,7 +1,7 @@ class_name DamageParticle extends Sprite3D -@onready var label: Label = $SubViewport/Label +@export var label: Label var time_alive: float = 0.0 var movement_speed: float = 1.0 var movement_vector: Vector3 @@ -13,6 +13,7 @@ func _ready() -> void: var phi: float = randf_range(0, 2 * PI) var vector: Vector3 = Vector3(sqrt(1 - pow(z, 2)) * cos(phi), z, sqrt(1 - pow(z, 2)) * sin(phi)) movement_vector = vector.normalized() + visible = true func set_number(num: int) -> void: diff --git a/UI/DamageParticle/damage_particle.tscn b/UI/DamageParticle/damage_particle.tscn index e470c42..f8bc624 100644 --- a/UI/DamageParticle/damage_particle.tscn +++ b/UI/DamageParticle/damage_particle.tscn @@ -2,23 +2,26 @@ [ext_resource type="Script" uid="uid://blt7umrgo3tfh" path="res://UI/DamageParticle/damage_particle.gd" id="1_lgvaq"] -[sub_resource type="ViewportTexture" id="ViewportTexture_ppqlh"] +[sub_resource type="ViewportTexture" id="ViewportTexture_fiibr"] viewport_path = NodePath("SubViewport") -[node name="Node3D" type="Sprite3D" unique_id=1014123125] +[node name="Node3D" type="Sprite3D" unique_id=1014123125 node_paths=PackedStringArray("label")] +visible = false pixel_size = 0.005 billboard = 1 no_depth_test = true fixed_size = true +alpha_cut = 1 texture_filter = 2 render_priority = 1 -texture = SubResource("ViewportTexture_ppqlh") +texture = SubResource("ViewportTexture_fiibr") script = ExtResource("1_lgvaq") +label = NodePath("SubViewport/Label") [node name="SubViewport" type="SubViewport" parent="." unique_id=1770696222] transparent_bg = true -size = Vector2i(172, 57) -render_target_update_mode = 4 +size = Vector2i(37, 21) +render_target_update_mode = 1 [node name="Label" type="Label" parent="SubViewport" unique_id=1905792669] anchors_preset = 15 diff --git a/UI/Menus/GameEndScreen/game_end_screen.tscn b/UI/Menus/GameEndScreen/game_end_screen.tscn index d121892..13ba59f 100644 --- a/UI/Menus/GameEndScreen/game_end_screen.tscn +++ b/UI/Menus/GameEndScreen/game_end_screen.tscn @@ -138,6 +138,7 @@ text = "BUTTON_MAIN_MENU" [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="." unique_id=1265670542] stream = SubResource("AudioStreamRandomizer_dram5") +volume_db = -10.599 bus = &"SFX" [connection signal="mouse_entered" from="VBoxContainer/Buttons/ContinueButton" to="." method="_on_button_mouse_entered"] diff --git a/UI/Menus/MainMenu/main_menu.gd b/UI/Menus/MainMenu/main_menu.gd index cc68bc7..cb955f0 100644 --- a/UI/Menus/MainMenu/main_menu.gd +++ b/UI/Menus/MainMenu/main_menu.gd @@ -37,6 +37,11 @@ func _ready() -> void: # spawn.spawn_wave() +func _unhandled_input(event: InputEvent) -> void: + if event.is_action_pressed("Pause"): + return_to_main_menu() + + #these exist purely to make the enemies that spawn on the main menu happy func enemy_died(_some_arg: Enemy) -> void: pass @@ -105,7 +110,13 @@ func open_game_menu() -> void: func _on_back_button_pressed() -> void: main_controls.visible = true game_select_menu.visible = false - + + +func return_to_main_menu() -> void: + main_controls.visible = true + game_select_menu.visible = false + profile_controls.visible = false + mods_controls.visible = false func generate_seed() -> void: diff --git a/UI/Menus/MainMenu/main_menu.tscn b/UI/Menus/MainMenu/main_menu.tscn index 18f7106..d38c5bc 100644 --- a/UI/Menus/MainMenu/main_menu.tscn +++ b/UI/Menus/MainMenu/main_menu.tscn @@ -100,6 +100,7 @@ text = "BUTTON_QUIT" [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="." unique_id=422058960] stream = SubResource("AudioStreamRandomizer_2jyua") +volume_db = -10.599 bus = &"SFX" [node name="GameSelectMenu" type="PanelContainer" parent="." unique_id=1604474538] diff --git a/UI/Menus/MixingMenu/track_editor.gd b/UI/Menus/MixingMenu/track_editor.gd index 4e505d5..130285f 100644 --- a/UI/Menus/MixingMenu/track_editor.gd +++ b/UI/Menus/MixingMenu/track_editor.gd @@ -86,12 +86,19 @@ func select_card(option: int) -> void: tower_feature_uis = [] for feature_ui: FeatureUI in weapon_feature_uis: feature_ui.queue_free() + for price_panel: PricePanel in tower_prices: + price_panel.visible = true + for price_panel: PricePanel in weapon_prices: + price_panel.visible = true + cost = 0 + price_label.text = tr(PRICE_STR) + str(cost) + confirm_button.disabled = false weapon_feature_uis = [] card_selected = cards[option] temp_card = card_selected.duplicate() temp_card.tower_stats = temp_card.tower_stats.get_duplicate() temp_card.weapon_stats = temp_card.weapon_stats.get_duplicate() - card_desc.set_card(temp_card, check_button_pressed) + press_check_button(check_button_pressed) for feature: Feature in temp_card.tower_stats.features: add_feature(feature, 0, false) for feature: Feature in temp_card.weapon_stats.features: diff --git a/UI/Menus/OptionsMenu/gameplay_options.gd b/UI/Menus/OptionsMenu/gameplay_options.gd index 2d66b9b..5ffcac6 100644 --- a/UI/Menus/OptionsMenu/gameplay_options.gd +++ b/UI/Menus/OptionsMenu/gameplay_options.gd @@ -52,15 +52,15 @@ func _on_mouse_sens_h_slider_value_changed(value: float) -> void: func _on_option_button_item_selected(index: int) -> void: - print(index) + #print(index) if index == 0: get_tree().root.size = Vector2i(320, 240) #DisplayServer.window_set_size(Vector2i(320, 240)) - print(get_tree().root.size) + #print(get_tree().root.size) if index == 1: get_tree().root.size = Vector2i(1920, 1080) #DisplayServer.window_set_size(Vector2i(1920, 1080)) - print(get_tree().root.size) + #print(get_tree().root.size) func _on_spin_box_value_changed(value: float) -> void: diff --git a/UI/Menus/OptionsMenu/graphics_options.gd b/UI/Menus/OptionsMenu/graphics_options.gd index d9e5231..d316982 100644 --- a/UI/Menus/OptionsMenu/graphics_options.gd +++ b/UI/Menus/OptionsMenu/graphics_options.gd @@ -10,6 +10,8 @@ extends VBoxContainer @export var vertex_jitter_slider: HSlider @export var affine_warping_input: SpinBox @export var affine_warping_slider: HSlider +@export var resolution_scaling_input: SpinBox +@export var resolution_scaling_slider: HSlider func _ready() -> void: @@ -22,6 +24,8 @@ func _ready() -> void: vertex_jitter_slider.value = Data.graphics.vertex_jitter affine_warping_input.value = Data.graphics.affine_warping affine_warping_slider.value = Data.graphics.affine_warping + resolution_scaling_slider.value = Data.graphics.resolution_scaling + resolution_scaling_input.value = Data.graphics.resolution_scaling func save() -> void: @@ -31,6 +35,7 @@ func save() -> void: Data.graphics.windowed_mode = window_dropdown.selected Data.graphics.vertex_jitter = vertex_jitter_slider.value Data.graphics.affine_warping = affine_warping_slider.value + Data.graphics.resolution_scaling = resolution_scaling_slider.value func _on_fov_spin_box_value_changed(value: float) -> void: @@ -73,3 +78,17 @@ func _on_affine_warping_spin_box_value_changed(value: float) -> void: func _on_affine_warping_h_slider_value_changed(value: float) -> void: affine_warping_input.value = value Data.graphics.affine_warping = value + + +func _on_resolution_scaling_spin_box_value_changed(value: float) -> void: + if value < 0.0: + value = 0.0 + if value > 1.0: + value = 1.0 + resolution_scaling_slider.value = value + Data.resolution_changed.emit(Vector2(1920, 1080) * value) + + +func _on_resolution_scaling_h_slider_value_changed(value: float) -> void: + resolution_scaling_input.value = value + Data.resolution_changed.emit(Vector2(1920, 1080) * value) diff --git a/UI/Menus/OptionsMenu/graphics_options.tscn b/UI/Menus/OptionsMenu/graphics_options.tscn index 4abd76d..5890ac1 100644 --- a/UI/Menus/OptionsMenu/graphics_options.tscn +++ b/UI/Menus/OptionsMenu/graphics_options.tscn @@ -4,7 +4,7 @@ [sub_resource type="ImageTexture" id="ImageTexture_03x6q"] -[node name="Graphics" type="VBoxContainer" unique_id=1842224615 node_paths=PackedStringArray("fov_input", "fov_slider", "vsync_dropdown", "aa_dropdown", "window_dropdown", "vertex_jitter_input", "vertex_jitter_slider", "affine_warping_input", "affine_warping_slider")] +[node name="Graphics" type="VBoxContainer" unique_id=1842224615 node_paths=PackedStringArray("fov_input", "fov_slider", "vsync_dropdown", "aa_dropdown", "window_dropdown", "vertex_jitter_input", "vertex_jitter_slider", "affine_warping_input", "affine_warping_slider", "resolution_scaling_input", "resolution_scaling_slider")] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 @@ -20,6 +20,43 @@ vertex_jitter_input = NodePath("VextexJitter/HBoxContainer/SpinBox") vertex_jitter_slider = NodePath("VextexJitter/HBoxContainer/HSlider") affine_warping_input = NodePath("AffineWarping/HBoxContainer/SpinBox") affine_warping_slider = NodePath("AffineWarping/HBoxContainer/HSlider") +resolution_scaling_input = NodePath("ResolutionScaling/HBoxContainer/SpinBox") +resolution_scaling_slider = NodePath("ResolutionScaling/HBoxContainer/HSlider") + +[node name="ResolutionScaling" type="HBoxContainer" parent="." unique_id=1230619872] +layout_mode = 2 +alignment = 1 + +[node name="Label" type="Label" parent="ResolutionScaling" unique_id=550655132] +layout_mode = 2 +size_flags_horizontal = 3 +text = "OPTION_RESOLUTION_SCALING" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="ResolutionScaling" unique_id=1042104415] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="SpinBox" type="SpinBox" parent="ResolutionScaling/HBoxContainer" unique_id=3787654] +layout_mode = 2 +theme_override_icons/updown = SubResource("ImageTexture_03x6q") +max_value = 1.0 +step = 0.01 +value = 0.2 +allow_greater = true +allow_lesser = true +alignment = 1 +update_on_text_changed = true + +[node name="HSlider" type="HSlider" parent="ResolutionScaling/HBoxContainer" unique_id=608837003] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 1 +max_value = 1.0 +step = 0.01 +value = 0.2 +scrollable = false [node name="FOV" type="HBoxContainer" parent="." unique_id=693078328] layout_mode = 2 @@ -194,6 +231,8 @@ step = 0.01 value = 1.0 scrollable = false +[connection signal="value_changed" from="ResolutionScaling/HBoxContainer/SpinBox" to="." method="_on_resolution_scaling_spin_box_value_changed"] +[connection signal="value_changed" from="ResolutionScaling/HBoxContainer/HSlider" to="." method="_on_resolution_scaling_h_slider_value_changed"] [connection signal="value_changed" from="FOV/HBoxContainer/SpinBox" to="." method="_on_fov_spin_box_value_changed"] [connection signal="value_changed" from="FOV/HBoxContainer/HSlider" to="." method="_on_fov_h_slider_value_changed"] [connection signal="value_changed" from="VextexJitter/HBoxContainer/SpinBox" to="." method="_on_vertex_jitter_spin_box_value_changed"] diff --git a/UI/Menus/OptionsMenu/options_menu.gd b/UI/Menus/OptionsMenu/options_menu.gd index 176fcb3..d1e750d 100644 --- a/UI/Menus/OptionsMenu/options_menu.gd +++ b/UI/Menus/OptionsMenu/options_menu.gd @@ -20,6 +20,11 @@ func set_tab_locale() -> void: audio.name = tr("OPTIONS_TAB_AUDIO") +func _unhandled_input(event: InputEvent) -> void: + if event.is_action_pressed("Pause"): + queue_free() + + func _on_cancel_pressed() -> void: queue_free() diff --git a/UI/Menus/OptionsMenu/options_menu.tscn b/UI/Menus/OptionsMenu/options_menu.tscn index 6c53cea..4f57621 100644 --- a/UI/Menus/OptionsMenu/options_menu.tscn +++ b/UI/Menus/OptionsMenu/options_menu.tscn @@ -69,6 +69,8 @@ text = "BUTTON_CONFIRM" [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="." unique_id=103920719] stream = SubResource("AudioStreamRandomizer_5otwj") +volume_db = -9.937 +bus = &"SFX" [connection signal="mouse_entered" from="VBoxContainer/HBoxContainer/Cancel" to="." method="_on_button_hovered"] [connection signal="pressed" from="VBoxContainer/HBoxContainer/Cancel" to="." method="_on_cancel_pressed"] diff --git a/UI/Menus/PauseMenu/pause_menu.tscn b/UI/Menus/PauseMenu/pause_menu.tscn index aa19d99..9de596b 100644 --- a/UI/Menus/PauseMenu/pause_menu.tscn +++ b/UI/Menus/PauseMenu/pause_menu.tscn @@ -61,6 +61,7 @@ text = "BUTTON_QUIT" [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="." unique_id=1218417780] stream = SubResource("AudioStreamRandomizer_n6ixr") +volume_db = -11.261 bus = &"SFX" [connection signal="mouse_entered" from="PanelContainer/VBoxContainer/Resume" to="." method="_on_button_mouse_entered"] diff --git a/Weapons/Ascension/weapon_stats.tres b/Weapons/Ascension/weapon_stats.tres index dab77d1..a602de1 100644 --- a/Weapons/Ascension/weapon_stats.tres +++ b/Weapons/Ascension/weapon_stats.tres @@ -1,6 +1,7 @@ [gd_resource type="Resource" script_class="CardText" format=3 uid="uid://do05i1xtdwfqk"] [ext_resource type="Script" uid="uid://bsuinotkvh7eu" path="res://Scripts/Resources/feature.gd" id="1_c5ghd"] +[ext_resource type="Resource" uid="uid://dfup264h2pun7" path="res://Scripts/Features/HeavyRounds/heavy_rounds_feature.tres" id="2_5pac0"] [ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_hwijr"] [resource] @@ -11,5 +12,6 @@ attributes = Dictionary[String, float]({ "Energy": 5.0, "Fire Delay": 2.0 }) +features = Array[ExtResource("1_c5ghd")]([ExtResource("2_5pac0")]) text = "DESC_WEAPON_PLATFORM_DASH" metadata/_custom_type_script = "uid://dg7gxxqfqxcmc" diff --git a/Weapons/Assault/BoltGun.glb b/Weapons/Assault/BoltGun.glb index 53e6269289886da9672b056e20001ae2486db75b..6856c5dadb5182b8a4aeee1230a00f365664fd88 100644 GIT binary patch literal 27820 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 literal 40736 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 diff --git a/Weapons/Assault/BoltGun.glb.import b/Weapons/Assault/BoltGun.glb.import index 853d3fe..168789b 100644 --- a/Weapons/Assault/BoltGun.glb.import +++ b/Weapons/Assault/BoltGun.glb.import @@ -22,7 +22,7 @@ nodes/import_as_skeleton_bones=false nodes/use_name_suffixes=true nodes/use_node_type_suffixes=true meshes/ensure_tangents=true -meshes/generate_lods=true +meshes/generate_lods=false meshes/create_shadow_meshes=true meshes/light_baking=1 meshes/lightmap_texel_size=0.2 @@ -39,10 +39,15 @@ materials/extract_format=0 materials/extract_path="" _subresources={ "materials": { -"steel1": { +"metal3": { "use_external/enabled": true, -"use_external/fallback_path": "res://Materials/steel1/steel1.tres", -"use_external/path": "uid://qq11jacogcec" +"use_external/fallback_path": "res://Materials/metal3/metal3.tres", +"use_external/path": "uid://bte8u8o37f5mf" +}, +"metal4": { +"use_external/enabled": true, +"use_external/fallback_path": "res://Materials/metal4/metal4.tres", +"use_external/path": "uid://dse5i3rqndtrf" }, "wood1": { "use_external/enabled": true, diff --git a/Weapons/Assault/gun_shot.wav b/Weapons/Assault/gun_shot.wav new file mode 100644 index 0000000000000000000000000000000000000000..f895cab237db36bde65269308c63fe6886e397bd GIT binary patch literal 72214 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

l~7#Rs_s6yl&& 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 UG$^IvG$bUz)sTUKK@f}m0C=j#egFUf literal 0 HcmV?d00001 diff --git a/Weapons/Assault/gun_shot.wav.import b/Weapons/Assault/gun_shot.wav.import new file mode 100644 index 0000000..4ec2064 --- /dev/null +++ b/Weapons/Assault/gun_shot.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://gojj0xkvjwvm" +path="res://.godot/imported/gun_shot.wav-64186ca30dc40bcd0f9c1f8f141c0c10.sample" + +[deps] + +source_file="res://Weapons/Assault/gun_shot.wav" +dest_files=["res://.godot/imported/gun_shot.wav-64186ca30dc40bcd0f9c1f8f141c0c10.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/Weapons/Assault/rifle.tscn b/Weapons/Assault/rifle.tscn index 383688a..6d61826 100644 --- a/Weapons/Assault/rifle.tscn +++ b/Weapons/Assault/rifle.tscn @@ -2,20 +2,27 @@ [ext_resource type="Script" uid="uid://bp3o5klntwmhd" path="res://Scripts/Weapons/hitscan_weapon.gd" id="1_yvp43"] [ext_resource type="Resource" uid="uid://smctw4ogm4rx" path="res://Weapons/Assault/weapon_stats.tres" id="2_2k4c7"] -[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="2_5wfsb"] +[ext_resource type="AudioStream" uid="uid://gojj0xkvjwvm" path="res://Weapons/Assault/gun_shot.wav" id="3_5wfsb"] [ext_resource type="PackedScene" uid="uid://bjjlhmhfytbvm" path="res://Weapons/Assault/BoltGun.glb" id="4_5wfsb"] +[ext_resource type="Material" uid="uid://3m464q2bkdkm" path="res://Towers/Assault/PipePistolBullets.tres" id="5_1hdrg"] +[ext_resource type="Material" uid="uid://cj14tx36js7n2" path="res://boombox_mat.tres" id="6_1hdrg"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_1hdrg"] -random_pitch = 1.1 +random_pitch = 1.0832878 streams_count = 1 -stream_0/stream = ExtResource("2_5wfsb") +stream_0/stream = ExtResource("3_5wfsb") -[node name="Rifle" type="Node3D" unique_id=1518167828 node_paths=PackedStringArray("raycast", "audio_player", "recharge_timer")] +[sub_resource type="QuadMesh" id="QuadMesh_jw2fc"] +material = ExtResource("6_1hdrg") +size = Vector2(0.125, 0.125) + +[node name="Rifle" type="Node3D" unique_id=1518167828 node_paths=PackedStringArray("raycast", "audio_player", "recharge_timer", "particle_emitter")] script = ExtResource("1_yvp43") raycast = NodePath("RayCast3D") stats = ExtResource("2_2k4c7") audio_player = NodePath("AudioStreamPlayer3D") recharge_timer = NodePath("Timer") +particle_emitter = NodePath("HitParticle") metadata/_custom_type_script = "uid://bp3o5klntwmhd" [node name="RayCast3D" type="RayCast3D" parent="." unique_id=1349784403] @@ -30,7 +37,22 @@ one_shot = true stream = SubResource("AudioStreamRandomizer_1hdrg") bus = &"SFX" -[node name="BoltGun" parent="." unique_id=566167059 instance=ExtResource("4_5wfsb")] -transform = Transform3D(-0.07, 0, -1.0569706e-08, 0, 0.07, 0, 1.0569706e-08, 0, -0.07, 0, 0.15755616, -0.10932771) +[node name="BoltGun" parent="." unique_id=1115474442 instance=ExtResource("4_5wfsb")] + +[node name="Cube_001" parent="BoltGun" index="0" unique_id=1262514348] +layers = 2 + +[node name="HitParticle" type="GPUParticles3D" parent="." unique_id=76894935] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.086717755, -1.0784638) +emitting = false +amount = 5 +lifetime = 0.2 +one_shot = true +explosiveness = 1.0 +transform_align = 3 +process_material = ExtResource("5_1hdrg") +draw_pass_1 = SubResource("QuadMesh_jw2fc") [connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"] + +[editable path="BoltGun"] diff --git a/Weapons/Blowdart/weapon_stats.tres b/Weapons/Blowdart/weapon_stats.tres index b05123e..545bda9 100644 --- a/Weapons/Blowdart/weapon_stats.tres +++ b/Weapons/Blowdart/weapon_stats.tres @@ -1,6 +1,7 @@ [gd_resource type="Resource" script_class="CardText" format=3 uid="uid://c6e50linnk2i7"] [ext_resource type="Script" uid="uid://bsuinotkvh7eu" path="res://Scripts/Resources/feature.gd" id="1_uay7i"] +[ext_resource type="Resource" uid="uid://dfup264h2pun7" path="res://Scripts/Features/HeavyRounds/heavy_rounds_feature.tres" id="2_i8iri"] [ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_lbj0i"] [resource] @@ -12,4 +13,5 @@ attributes = Dictionary[String, float]({ "Fire Delay": 0.8, "Range": 15.0 }) +features = Array[ExtResource("1_uay7i")]([ExtResource("2_i8iri")]) text = "DESC_WEAPON_POISON" diff --git a/Weapons/BombLauncher/weapon_stats.tres b/Weapons/BombLauncher/weapon_stats.tres index f2f34cb..9c8d07a 100644 --- a/Weapons/BombLauncher/weapon_stats.tres +++ b/Weapons/BombLauncher/weapon_stats.tres @@ -1,6 +1,7 @@ [gd_resource type="Resource" script_class="CardText" format=3 uid="uid://co6eorobj1xuu"] [ext_resource type="Script" uid="uid://bsuinotkvh7eu" path="res://Scripts/Resources/feature.gd" id="1_gv6l8"] +[ext_resource type="Resource" uid="uid://dfup264h2pun7" path="res://Scripts/Features/HeavyRounds/heavy_rounds_feature.tres" id="2_82nig"] [ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_fe8lx"] [resource] @@ -12,4 +13,5 @@ attributes = Dictionary[String, float]({ "Fire Delay": 2.0, "Range": 10.0 }) +features = Array[ExtResource("1_gv6l8")]([ExtResource("2_82nig")]) text = "DESC_WEAPON_BOMB" diff --git a/Weapons/Fireball/weapon_stats.tres b/Weapons/Fireball/weapon_stats.tres index 6ec8cff..b07de4a 100644 --- a/Weapons/Fireball/weapon_stats.tres +++ b/Weapons/Fireball/weapon_stats.tres @@ -1,6 +1,7 @@ [gd_resource type="Resource" script_class="CardText" format=3 uid="uid://dhwhwicgpw7yh"] [ext_resource type="Script" uid="uid://bsuinotkvh7eu" path="res://Scripts/Resources/feature.gd" id="1_ehd58"] +[ext_resource type="Resource" uid="uid://dfup264h2pun7" path="res://Scripts/Features/HeavyRounds/heavy_rounds_feature.tres" id="2_jskjg"] [ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_yto3f"] [resource] @@ -12,4 +13,5 @@ attributes = Dictionary[String, float]({ "Fire Delay": 2.0, "Range": 15.0 }) +features = Array[ExtResource("1_ehd58")]([ExtResource("2_jskjg")]) text = "DESC_WEAPON_FIREBALL" diff --git a/Weapons/Flamethrower/weapon_stats.tres b/Weapons/Flamethrower/weapon_stats.tres index fe63cbd..5e74cf4 100644 --- a/Weapons/Flamethrower/weapon_stats.tres +++ b/Weapons/Flamethrower/weapon_stats.tres @@ -2,6 +2,7 @@ [ext_resource type="Script" uid="uid://bsuinotkvh7eu" path="res://Scripts/Resources/feature.gd" id="1_rinww"] [ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_drgp3"] +[ext_resource type="Resource" uid="uid://dfup264h2pun7" path="res://Scripts/Features/HeavyRounds/heavy_rounds_feature.tres" id="2_ufd52"] [resource] script = ExtResource("2_drgp3") @@ -12,4 +13,5 @@ attributes = Dictionary[String, float]({ "Fire Delay": 0.4, "Range": 3.0 }) +features = Array[ExtResource("1_rinww")]([ExtResource("2_ufd52")]) text = "DESC_WEAPON_FLAMETHROWER" diff --git a/Weapons/GlueLauncher/weapon_stats.tres b/Weapons/GlueLauncher/weapon_stats.tres index 14a8187..99df504 100644 --- a/Weapons/GlueLauncher/weapon_stats.tres +++ b/Weapons/GlueLauncher/weapon_stats.tres @@ -1,6 +1,7 @@ [gd_resource type="Resource" script_class="CardText" format=3 uid="uid://boj1ho5x0sxtq"] [ext_resource type="Script" uid="uid://bsuinotkvh7eu" path="res://Scripts/Resources/feature.gd" id="1_58qpp"] +[ext_resource type="Resource" uid="uid://dfup264h2pun7" path="res://Scripts/Features/HeavyRounds/heavy_rounds_feature.tres" id="2_lo73o"] [ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_nlx26"] [resource] @@ -12,4 +13,5 @@ attributes = Dictionary[String, float]({ "Fire Delay": 0.5, "Range": 13.0 }) +features = Array[ExtResource("1_58qpp")]([ExtResource("2_lo73o")]) text = "DESC_WEAPON_GLUE" diff --git a/Weapons/Icicle/weapon_stats.tres b/Weapons/Icicle/weapon_stats.tres index fc98c8f..439408d 100644 --- a/Weapons/Icicle/weapon_stats.tres +++ b/Weapons/Icicle/weapon_stats.tres @@ -2,6 +2,7 @@ [ext_resource type="Script" uid="uid://bsuinotkvh7eu" path="res://Scripts/Resources/feature.gd" id="1_5i8ch"] [ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_5m6w7"] +[ext_resource type="Resource" uid="uid://dfup264h2pun7" path="res://Scripts/Features/HeavyRounds/heavy_rounds_feature.tres" id="2_52d2e"] [resource] script = ExtResource("2_5m6w7") @@ -12,4 +13,5 @@ attributes = Dictionary[String, float]({ "Fire Delay": 2.0, "Range": 15.0 }) +features = Array[ExtResource("1_5i8ch")]([ExtResource("2_52d2e")]) text = "DESC_WEAPON_ICE_SPIKE" diff --git a/Weapons/Overclock/weapon_stats.tres b/Weapons/Overclock/weapon_stats.tres index 18e378b..dacd2e4 100644 --- a/Weapons/Overclock/weapon_stats.tres +++ b/Weapons/Overclock/weapon_stats.tres @@ -1,6 +1,7 @@ [gd_resource type="Resource" script_class="CardText" format=3 uid="uid://d3qmy6puuh1gl"] [ext_resource type="Script" uid="uid://bsuinotkvh7eu" path="res://Scripts/Resources/feature.gd" id="1_m84e5"] +[ext_resource type="Resource" uid="uid://dfup264h2pun7" path="res://Scripts/Features/HeavyRounds/heavy_rounds_feature.tres" id="2_gglou"] [ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_rl1ek"] [resource] @@ -13,5 +14,6 @@ attributes = Dictionary[String, float]({ "Fire Delay": 0.3, "Range": 100.0 }) +features = Array[ExtResource("1_m84e5")]([ExtResource("2_gglou")]) text = "DESC_WEAPON_SPEED_INCREASER" metadata/_custom_type_script = "uid://dg7gxxqfqxcmc" diff --git a/Weapons/Reactor/weapon_stats.tres b/Weapons/Reactor/weapon_stats.tres index a729b8b..30f1ffb 100644 --- a/Weapons/Reactor/weapon_stats.tres +++ b/Weapons/Reactor/weapon_stats.tres @@ -2,6 +2,7 @@ [ext_resource type="Script" uid="uid://bsuinotkvh7eu" path="res://Scripts/Resources/feature.gd" id="1_2higs"] [ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_ahbcx"] +[ext_resource type="Resource" uid="uid://dfup264h2pun7" path="res://Scripts/Features/HeavyRounds/heavy_rounds_feature.tres" id="2_h1dig"] [resource] script = ExtResource("2_ahbcx") @@ -12,4 +13,5 @@ attributes = Dictionary[String, float]({ "Fire Delay": 0.5, "Range": 3.0 }) +features = Array[ExtResource("1_2higs")]([ExtResource("2_h1dig")]) text = "DESC_WEAPON_RADIATION" diff --git a/Weapons/Refrigerator/weapon_stats.tres b/Weapons/Refrigerator/weapon_stats.tres index 4bc4980..8bdd6b6 100644 --- a/Weapons/Refrigerator/weapon_stats.tres +++ b/Weapons/Refrigerator/weapon_stats.tres @@ -1,6 +1,7 @@ [gd_resource type="Resource" script_class="CardText" format=3 uid="uid://5l758yxfpi1e"] [ext_resource type="Script" uid="uid://bsuinotkvh7eu" path="res://Scripts/Resources/feature.gd" id="1_18tr7"] +[ext_resource type="Resource" uid="uid://dfup264h2pun7" path="res://Scripts/Features/HeavyRounds/heavy_rounds_feature.tres" id="2_h4hr6"] [ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_wny82"] [resource] @@ -12,4 +13,5 @@ attributes = Dictionary[String, float]({ "Fire Delay": 0.5, "Range": 3.0 }) +features = Array[ExtResource("1_18tr7")]([ExtResource("2_h4hr6")]) text = "DESC_WEAPON_FREEZER" diff --git a/Weapons/Sniper/weapon_stats.tres b/Weapons/Sniper/weapon_stats.tres index ef26a6e..0d153d4 100644 --- a/Weapons/Sniper/weapon_stats.tres +++ b/Weapons/Sniper/weapon_stats.tres @@ -2,6 +2,7 @@ [ext_resource type="Script" uid="uid://bsuinotkvh7eu" path="res://Scripts/Resources/feature.gd" id="1_y0q7b"] [ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_qyvv8"] +[ext_resource type="Resource" uid="uid://bij61ul87ka0r" path="res://Scripts/Features/ExtendedBarrel/extended_barrel_feature.tres" id="2_ydgyt"] [resource] script = ExtResource("2_qyvv8") @@ -12,4 +13,5 @@ attributes = Dictionary[String, float]({ "Fire Delay": 0.9, "Range": 100.0 }) +features = Array[ExtResource("1_y0q7b")]([ExtResource("2_ydgyt")]) text = "DESC_WEAPON_SNIPER" diff --git a/Worlds/GreenPlanet/Enemies/air_enemy.tscn b/Worlds/GreenPlanet/Enemies/air_enemy.tscn index 5bee4d5..1950842 100644 --- a/Worlds/GreenPlanet/Enemies/air_enemy.tscn +++ b/Worlds/GreenPlanet/Enemies/air_enemy.tscn @@ -10,7 +10,7 @@ [sub_resource type="ViewportTexture" id="ViewportTexture_ss5ir"] viewport_path = NodePath("SubViewport") -[node name="Dog" type="CharacterBody3D" unique_id=208032021 node_paths=PackedStringArray("status_manager", "movement_controller", "d_n") groups=["Enemies"]] +[node name="Dog" type="CharacterBody3D" unique_id=208032021 node_paths=PackedStringArray("status_manager", "movement_controller", "d_n", "health_bar") groups=["Enemies"]] collision_layer = 4 collision_mask = 3 motion_mode = 1 @@ -19,6 +19,7 @@ status_manager = NodePath("StatusEffector") movement_controller = NodePath("BeeliningController") d_n = NodePath("Node3D") corpse_scene = ExtResource("2_aed6c") +health_bar = NodePath("SubViewport/HealthBar") [node name="Sprite3D" type="Sprite3D" parent="." unique_id=2020998819] transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0, 0.637873, 0) diff --git a/Worlds/GreenPlanet/Enemies/enemy_controller.gd b/Worlds/GreenPlanet/Enemies/enemy_controller.gd index f7a75b7..5f51c65 100644 --- a/Worlds/GreenPlanet/Enemies/enemy_controller.gd +++ b/Worlds/GreenPlanet/Enemies/enemy_controller.gd @@ -11,6 +11,7 @@ signal health_changed(health: int) @export var d_n: Node3D #@export var sprite: Sprite3D @export var corpse_scene: PackedScene +@export var health_bar: HealthBar var damage_particle_scene: PackedScene = preload("res://UI/DamageParticle/damage_particle.tscn") var current_health: int @@ -23,8 +24,8 @@ var alive: bool = true func _ready() -> void: max_health = stats.health current_health = stats.health - health_changed.connect($SubViewport/HealthBar.on_health_changed) - $SubViewport/HealthBar.setup(stats.health) + health_changed.connect(health_bar.on_health_changed) + health_bar.setup(stats.health) movement_speed = stats.movement_speed status_manager.enemy = self diff --git a/Worlds/GreenPlanet/Enemies/land_enemy.tscn b/Worlds/GreenPlanet/Enemies/land_enemy.tscn index 2c89d0a..eec366d 100644 --- a/Worlds/GreenPlanet/Enemies/land_enemy.tscn +++ b/Worlds/GreenPlanet/Enemies/land_enemy.tscn @@ -21,7 +21,7 @@ region = Rect2(0, 0, 32, 32) [sub_resource type="ViewportTexture" id="ViewportTexture_4tj6k"] viewport_path = NodePath("SubViewport") -[node name="WalkingEnemy" type="CharacterBody3D" unique_id=180331738 node_paths=PackedStringArray("status_manager", "movement_controller", "d_n") groups=["Enemies"]] +[node name="WalkingEnemy" type="CharacterBody3D" unique_id=180331738 node_paths=PackedStringArray("status_manager", "movement_controller", "d_n", "health_bar") groups=["Enemies"]] collision_layer = 4 collision_mask = 3 script = ExtResource("1_fwsjt") @@ -29,6 +29,7 @@ status_manager = NodePath("StatusEffector") movement_controller = NodePath("PathingController") d_n = NodePath("Node3D") corpse_scene = ExtResource("2_y7h25") +health_bar = NodePath("SubViewport/HealthBar") [node name="DirectionSprite" parent="." unique_id=447693926 instance=ExtResource("2_o7jmg")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.585, 0) diff --git a/Worlds/GreenPlanet/Enemies/leaping_enemy.tscn b/Worlds/GreenPlanet/Enemies/leaping_enemy.tscn index 11801e7..544a480 100644 --- a/Worlds/GreenPlanet/Enemies/leaping_enemy.tscn +++ b/Worlds/GreenPlanet/Enemies/leaping_enemy.tscn @@ -37,7 +37,7 @@ viewport_path = NodePath("SubViewport5") [sub_resource type="ViewportTexture" id="ViewportTexture_5u3uw"] viewport_path = NodePath("SubViewport6") -[node name="LeapingEnemy" type="CharacterBody3D" unique_id=1033726948 node_paths=PackedStringArray("status_manager", "movement_controller", "d_n") groups=["Enemies"]] +[node name="LeapingEnemy" type="CharacterBody3D" unique_id=1033726948 node_paths=PackedStringArray("status_manager", "movement_controller", "d_n", "health_bar") groups=["Enemies"]] collision_layer = 4 collision_mask = 3 script = ExtResource("1_joiuq") @@ -45,6 +45,7 @@ status_manager = NodePath("StatusEffector") movement_controller = NodePath("LeapingController") d_n = NodePath("Node3D") corpse_scene = ExtResource("2_ssgps") +health_bar = NodePath("SubViewport/HealthBar") [node name="Health" type="Node" parent="." unique_id=1287231964] script = ExtResource("3_dhcpw") diff --git a/Zones/Moat/scn_moat.tscn b/Zones/Moat/scn_moat.tscn index 3a4aac9..447a8ee 100644 --- a/Zones/Moat/scn_moat.tscn +++ b/Zones/Moat/scn_moat.tscn @@ -20,195 +20,6 @@ [ext_resource type="Texture2D" uid="uid://dqrfgw65d0sq8" path="res://Assets/Textures/bridge_map.png" id="28_6od8s"] [ext_resource type="PackedScene" uid="uid://ca174636iktc6" path="res://Zones/Moat/mesh_moat.glb" id="30_ttr7n"] -[sub_resource type="Shader" id="Shader_6od8s"] -code = "shader_type sky; -render_mode use_debanding; - -uniform vec4 sky_top_color : source_color = vec4(0.385, 0.454, 0.55, 1.0); -uniform vec4 sky_horizon_color : source_color = vec4(0.646, 0.656, 0.67, 1.0); -uniform float sky_curve : hint_range(0, 1) = 0.15; -uniform float sky_energy = 1.0; // In Lux. -uniform sampler2D sky_cover : filter_linear, source_color, hint_default_black; -uniform vec4 sky_cover_modulate : source_color = vec4(1.0, 1.0, 1.0, 1.0); -uniform vec4 ground_bottom_color : source_color = vec4(0.2, 0.169, 0.133, 1.0); -uniform vec4 ground_horizon_color : source_color = vec4(0.646, 0.656, 0.67, 1.0); -uniform float ground_curve : hint_range(0, 1) = 0.02; -uniform float ground_energy = 1.0; -uniform float sun_angle_max = 30.0; -uniform float sun_curve : hint_range(0, 1) = 0.15; -uniform float exposure : hint_range(0, 128) = 1.0; - -// Wind offset direction (x and y only) -uniform vec2 wind_offset_direction = vec2(0.5, 0.1); // Control direction of offset (x, y) -uniform float wind_speed : hint_range(0.0, 25.0) = 1.0; // Speed of the noise movement over time - -// Cloud change settings -uniform bool clouds_change = true; // Whether to change the cloud layer or not -uniform float cloud_change_rate : hint_range(0.0, 5.0) = .40; // Rate at which the cloud effect changes - -// Pole blending parameters -uniform float pole_blend_shape : hint_range(0.0, 2.0) = 0.05; // How much the noise affects the blend shape -uniform float pole_blend_strength : hint_range(0, 1) = 0.05; // Control blending intensity at poles -uniform float pole_blend_brightness : hint_range(0.0, 1.0) = .3; - -// Horizon blending parameters - similar to pole blending -uniform float horizon_blend_shape : hint_range(0.0, 2.0) = 0.05; // How much the noise affects the horizon blend shape -uniform float horizon_blend_strength : hint_range(0, 1) = 0.05; // Control blending intensity at horizon -uniform float horizon_blend_brightness : hint_range(0.0, 1.0) = .3; -uniform float horizon_blend_width : hint_range(0.0, 0.5) = 0.1; // Width of the horizon blend region - -void sky() { - float v_angle = acos(clamp(EYEDIR.y, -1.0, 1.0)); - float c = (1.0 - v_angle / (PI * 0.5)); - vec3 sky = mix(sky_horizon_color.rgb, sky_top_color.rgb, clamp(1.0 - pow(1.0 - c, 1.0 / sky_curve), 0.0, 1.0)); - sky *= sky_energy; - - if (LIGHT0_ENABLED) { - float sun_angle = acos(dot(LIGHT0_DIRECTION, EYEDIR)); - if (sun_angle < LIGHT0_SIZE) { - sky = LIGHT0_COLOR * LIGHT0_ENERGY; - } else if (sun_angle < sun_angle_max) { - float c2 = (sun_angle - LIGHT0_SIZE) / (sun_angle_max - LIGHT0_SIZE); - sky = mix(LIGHT0_COLOR * LIGHT0_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0)); - } - } - - if (LIGHT1_ENABLED) { - float sun_angle = acos(dot(LIGHT1_DIRECTION, EYEDIR)); - if (sun_angle < LIGHT1_SIZE) { - sky = LIGHT1_COLOR * LIGHT1_ENERGY; - } else if (sun_angle < sun_angle_max) { - float c2 = (sun_angle - LIGHT1_SIZE) / (sun_angle_max - LIGHT1_SIZE); - sky = mix(LIGHT1_COLOR * LIGHT1_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0)); - } - } - - if (LIGHT2_ENABLED) { - float sun_angle = acos(dot(LIGHT2_DIRECTION, EYEDIR)); - if (sun_angle < LIGHT2_SIZE) { - sky = LIGHT2_COLOR * LIGHT2_ENERGY; - } else if (sun_angle < sun_angle_max) { - float c2 = (sun_angle - LIGHT2_SIZE) / (sun_angle_max - LIGHT2_SIZE); - sky = mix(LIGHT2_COLOR * LIGHT2_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0)); - } - } - - if (LIGHT3_ENABLED) { - float sun_angle = acos(dot(LIGHT3_DIRECTION, EYEDIR)); - if (sun_angle < LIGHT3_SIZE) { - sky = LIGHT3_COLOR * LIGHT3_ENERGY; - } else if (sun_angle < sun_angle_max) { - float c2 = (sun_angle - LIGHT3_SIZE) / (sun_angle_max - LIGHT3_SIZE); - sky = mix(LIGHT3_COLOR * LIGHT3_ENERGY, sky, clamp(1.0 - pow(1.0 - c2, 1.0 / sun_curve), 0.0, 1.0)); - } - } - - // Sample the sky cover texture with dynamic offset (only x and y direction) - vec2 noise_coords = SKY_COORDS.xy + wind_offset_direction * wind_speed * TIME * 0.01; - - // Wrap UVs to keep tiling seamless - noise_coords = mod(noise_coords, 1.0); - - // Sample the original noise texture - vec4 sky_cover_texture = texture(sky_cover, noise_coords); - - // Sample flipped noise for Z-offset effect - vec4 flipped_noise = texture(sky_cover, vec2(noise_coords.x, 1.0 - noise_coords.y)); - - // Z blending (cloud change) logic - float cloud_blend_factor = 0.0; - if (clouds_change) { - // Use a sine wave to blend clouds smoothly over time based on the cloud_change_rate - cloud_blend_factor = 0.5 + 0.5 * sin(TIME * cloud_change_rate); - } - - // Blend between the original and flipped noise using cloud_blend_factor - vec4 blended_noise_texture = mix(sky_cover_texture, flipped_noise, cloud_blend_factor); - - // Pole blending - float base_pole_blend_factor = abs(EYEDIR.y); // Original blend factor (circular) - float noise_pole_blend = blended_noise_texture.r * pole_blend_shape; - float pole_blend_factor = smoothstep(1.0 - pole_blend_strength, 1.0, base_pole_blend_factor + noise_pole_blend); - - // Horizon blending - detect when we're near the horizon - float horizon_distance = abs(EYEDIR.y); // This will be close to 0 near the horizon - float horizon_factor = 1.0 - smoothstep(0.0, horizon_blend_width, horizon_distance); - float noise_horizon_blend = blended_noise_texture.g * horizon_blend_shape; - float horizon_blend_factor = smoothstep(1.0 - horizon_blend_strength, 1.0, horizon_factor + noise_horizon_blend); - - // Combine both blend factors (poles and horizon) - float combined_blend_factor = max(pole_blend_factor, horizon_blend_factor); - - // Blend noise with brightness value based on the combined factor - vec3 blended_noise = mix(blended_noise_texture.rgb, vec3(pole_blend_brightness), pole_blend_factor); - blended_noise = mix(blended_noise, vec3(horizon_blend_brightness), horizon_blend_factor); - - sky += (blended_noise * sky_cover_modulate.rgb) * blended_noise_texture.a * sky_cover_modulate.a * sky_energy; - - // Ground blending - c = (v_angle - (PI * 0.5)) / (PI * 0.5); - vec3 ground = mix(ground_horizon_color.rgb, ground_bottom_color.rgb, clamp(1.0 - pow(1.0 - c, 1.0 / ground_curve), 0.0, 1.0)); - ground *= ground_energy; - - COLOR = mix(ground, sky, step(0.0, EYEDIR.y)) * exposure; -}" - -[sub_resource type="Gradient" id="Gradient_dj4cy"] -offsets = PackedFloat32Array(0.151786, 0.5625, 1) -colors = PackedColorArray(0, 0, 0, 1, 0.565217, 0.565217, 0.565217, 1, 1, 1, 1, 1) - -[sub_resource type="FastNoiseLite" id="FastNoiseLite_ttr7n"] -noise_type = 3 -domain_warp_enabled = true - -[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_r4es0"] -width = 1024 -height = 1024 -noise = SubResource("FastNoiseLite_ttr7n") -color_ramp = SubResource("Gradient_dj4cy") -seamless = true - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_4gdda"] -shader = SubResource("Shader_6od8s") -shader_parameter/sky_top_color = Color(0.25262, 0.408375, 0.692798, 1) -shader_parameter/sky_horizon_color = Color(0.48476, 0.638261, 0.884351, 1) -shader_parameter/sky_curve = 0.0349887 -shader_parameter/sky_energy = 1.0 -shader_parameter/sky_cover = SubResource("NoiseTexture2D_r4es0") -shader_parameter/sky_cover_modulate = Color(1, 1, 1, 1) -shader_parameter/ground_bottom_color = Color(0.121409, 0.203944, 0.437026, 1) -shader_parameter/ground_horizon_color = Color(0.486275, 0.639216, 0.882353, 1) -shader_parameter/ground_curve = 0.02 -shader_parameter/ground_energy = 1.0 -shader_parameter/sun_angle_max = 0.523599 -shader_parameter/sun_curve = 0.15 -shader_parameter/exposure = 1.0 -shader_parameter/wind_offset_direction = Vector2(0.5, 0.1) -shader_parameter/wind_speed = 0.0 -shader_parameter/clouds_change = true -shader_parameter/cloud_change_rate = 0.4 -shader_parameter/pole_blend_shape = 0.05 -shader_parameter/pole_blend_strength = 0.05 -shader_parameter/pole_blend_brightness = 0.3 -shader_parameter/horizon_blend_shape = 0.05 -shader_parameter/horizon_blend_strength = 0.05 -shader_parameter/horizon_blend_brightness = 0.3 -shader_parameter/horizon_blend_width = 0.1 - -[sub_resource type="Sky" id="Sky_t42h5"] -sky_material = SubResource("ShaderMaterial_4gdda") - -[sub_resource type="Environment" id="Environment_l41d0"] -background_mode = 2 -sky = SubResource("Sky_t42h5") -tonemap_mode = 4 -ssao_detail = 0.0 -fog_enabled = true -fog_mode = 1 -fog_density = 1.0 -fog_depth_begin = 50.0 -fog_depth_end = 200.0 - [sub_resource type="BoxShape3D" id="BoxShape3D_awjk1"] size = Vector3(3.6270146, 6.87512, 10) @@ -229,9 +40,6 @@ obstacles = Array[PackedScene]([ExtResource("7_6tcu8")]) metadata/_custom_type_script = "uid://cvejbo3srx8py" metadata/_editor_floor_ = Vector3(4, -10, 8) -[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1448536340] -environment = SubResource("Environment_l41d0") - [node name="EnemyGoal" type="Node3D" parent="." unique_id=1521533989 node_paths=PackedStringArray("audio_player")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 40.123978, 0.5, 0) script = ExtResource("9_s3rd7") @@ -294,7 +102,7 @@ type = 2 dest = NodePath("../EnemyGoal") enemy_path = NodePath("../Enemies") -[node name="CardPrinter" parent="." unique_id=99304729 instance=ExtResource("9_r25gu")] +[node name="CardPrinter" parent="." unique_id=459800869 instance=ExtResource("9_r25gu")] transform = Transform3D(-0.999501, 0, 0.0315681, 0, 1, 0, -0.0315681, 0, -0.999501, 33.0068, 0.499996, 17.3317) [node name="PlayerSpawnLocations" type="Node3D" parent="." unique_id=1727305710] diff --git a/boombox.glb b/boombox.glb new file mode 100644 index 0000000000000000000000000000000000000000..c708a827aa8fe57a0ed361dc7025f9ebfc8ece9e GIT binary patch literal 50544 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

P@I(6yt5^|E$s>C5Ul z9n4d<^lyIfO2;GRL%Pb7SKg;>d|nmptjKd|T5Frzx(FJQ*YWseV_St+{~U3xa-5Zmn#&!e=6B} z1;5LZ{%ADw-SOks|Fm2xbya3bwES$T@Lp13N_KFWTD~zqA5&t$qdiuKBIJ9No*(`v zsSslC)7;MR;-dP6N!vOURCt%WNlahh7C*r!Fy=+d<)6|=?0fW{rktL@^z7x=ID2#B z-w(a4wuCR~`h9lAcz0>P%$e`G$WZiaFptn>u5yM|vkV$1Ip{E%&U3W5yhX;) zOp5WG&C1AgFFWnBBh_oBPFrlV?1eh>sbZCj&rNpwxpP>YKUx0t@3P07u8w{y7AyJ% zhsRw`&wA}xzi8Q$#o32i{(f<87uvnLb-Rh!#>Mx={0~&Du9z^ZL3(zW$*fl^ImI3Q#rdpjn}PJ|8*C$ zmcw?-SHYe|=hkbB9PBMBlWX|E=%RSe)3s{O(*Xp?3pTG4ieK0h()VGZ z`k{l@*WY(x=3rqjXRJ5v(^$$?o9J>R>DaClticOPKXGN{9#JvZOZBScP`qR2S1ru9 zLFn~c#ZKLcPC6we)*FnxcPRW-4)~eKuWZGo^!W1rU7ON0O82>UDZLeZp1CS+S@Yt( z+YTyc?b$vdz0CTWm7!1E)g@Doo!Yy^Gj#G?$1`6yv9QTn^#nTC&Rou!enCC^b>XEx zty>HiL-szgeR{61T>s+HPNTXopYn%StON`Ds?2pVw`sbVAMcnotxKY}ee1%I%-wd! zj!m@RxOtVQZ}8ly7I(Ll+ZT2wE)%z3F|%%0Kj#_u9?jnq*Ph(Xx9G}KJEe`&t*sXD zEwfXu(robd32J?AxM^Nn`az9}em^@FpR;{+Brw4E<&mGPzj@o&6;zwgW7N0ad_7lH zE9v%UNy*O>7mJwMlrKAeM1oIRN!R`JVZXm`));bXdTFnEXgW(yM&$e|o#jbhbJ~wx z?(Wzs?QYz>aF74CX%-e9OYH*A9{P4suicnkqSWM=-*aa!!F!yBZR+O^T-OfJe8u7T zLSS;}@pHvGOGVCdW>lFpQfv(}+bN~Ld TU)DNPtwSSqI%xkK;$l_+nBzk3 literal 0 HcmV?d00001 diff --git a/boombox.glb.import b/boombox.glb.import new file mode 100644 index 0000000..cb586ac --- /dev/null +++ b/boombox.glb.import @@ -0,0 +1,50 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://ca1y03riauk7v" +path="res://.godot/imported/boombox.glb-d3fb0997bada8ca92c4ca4e2d947043e.scn" + +[deps] + +source_file="res://boombox.glb" +dest_files=["res://.godot/imported/boombox.glb-d3fb0997bada8ca92c4ca4e2d947043e.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=false +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={ +"materials": { +"Material.002": { +"use_external/enabled": true, +"use_external/fallback_path": "res://boombox_mat.tres", +"use_external/path": "uid://cj14tx36js7n2" +} +} +} +gltf/naming_version=2 +gltf/embedded_image_handling=1 diff --git a/boombox_mat.tres b/boombox_mat.tres new file mode 100644 index 0000000..c829885 --- /dev/null +++ b/boombox_mat.tres @@ -0,0 +1,12 @@ +[gd_resource type="ShaderMaterial" format=3 uid="uid://cj14tx36js7n2"] + +[ext_resource type="Shader" uid="uid://dq04j2s5foo2f" path="res://Shaders/mightyduke_ps1.gdshader" id="1_hjeft"] +[ext_resource type="Texture2D" uid="uid://bhry0r8w4jmop" path="res://metal2.png" id="2_hjeft"] + +[resource] +render_priority = 0 +shader = ExtResource("1_hjeft") +shader_parameter/albedo = ExtResource("2_hjeft") +shader_parameter/jitter_z_coordinate = true +shader_parameter/jitter_depth_independent = true +shader_parameter/alpha_scissor = 1.0 diff --git a/boombox_metal_aluminium.png b/boombox_metal_aluminium.png new file mode 100644 index 0000000000000000000000000000000000000000..021db6151d720f2099c97ca3759148b5f4ce7c87 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4kiW$23787oeT^NIwh_VCC){ui6xo&c?uz! zxv31{sVNFZ77D(JMG8g+h87BjmR80lR)&@ex(22O2In~rUtnNhU@!6Xb!C6VEF-R_ zzO{=ng@J*Av%n*=n1O*?2!t6g-L3n>z`($g?&#~tz_78O`%fY(0|R4&r;B4q#jUrq zy!%=VcwE>G3jTK&IPBYNnjd&K^K8$?C)+nWH7KpRq4;uI>d(TGSoK5u-q%*dPUrt# zE57!5<*$Ny&(FWtkt=yUZK9BXZxtik>_b@zvDat+ihFr|yH(%e_S@Tj7D%-5vo4Wu zgeX|8_?)rAJKn~3GXKLUoAC3h6%+Pb{No7SEWzw4#V^|!o-?e6LaGA*iP{I&h`x|KIx%QG-AFnGH9xvXw}k literal 0 HcmV?d00001 diff --git a/Gauntlet/gauntlet_cassette_tex.png.import b/boombox_metal_aluminium.png.import similarity index 69% rename from Gauntlet/gauntlet_cassette_tex.png.import rename to boombox_metal_aluminium.png.import index f23a05a..be48b84 100644 --- a/Gauntlet/gauntlet_cassette_tex.png.import +++ b/boombox_metal_aluminium.png.import @@ -2,20 +2,20 @@ importer="texture" type="CompressedTexture2D" -uid="uid://c7euohgr24npi" -path.s3tc="res://.godot/imported/gauntlet_cassette_tex.png-e9c09eb8277eaea99bb6a0798e69a42d.s3tc.ctex" +uid="uid://cfejjpssis218" +path.s3tc="res://.godot/imported/boombox_metal_aluminium.png-11f6ed83de652bab16152a3783bdf7d5.s3tc.ctex" metadata={ "imported_formats": ["s3tc_bptc"], "vram_texture": true } generator_parameters={ -"md5": "8ffcdbb0faa5691927b8256d695d090b" +"md5": "1bf5ff62cbe7a4cc971555c7674a5a4d" } [deps] -source_file="res://Gauntlet/gauntlet_cassette_tex.png" -dest_files=["res://.godot/imported/gauntlet_cassette_tex.png-e9c09eb8277eaea99bb6a0798e69a42d.s3tc.ctex"] +source_file="res://boombox_metal_aluminium.png" +dest_files=["res://.godot/imported/boombox_metal_aluminium.png-11f6ed83de652bab16152a3783bdf7d5.s3tc.ctex"] [params] diff --git a/boombox_road_02.png b/boombox_road_02.png new file mode 100644 index 0000000000000000000000000000000000000000..6d0a5769bbb2a3af30344eace036f12f3ae72f1d GIT binary patch literal 10222 zcmeAS@N?(olHy`uVBq!ia0y~yU}#`qU~u4IVqjp1-SR?%fq_A%#5JPCxhOTUBr`ux zAtW<5l_9t^Pr=AU!7VjO!N|bSQo+#7%FxKl$WlSqz|_DX=xjwS0|NtliKnkC`(q{v zQ69DHHZI>77#KJUJR*x37`TN%nDNrxx<3pI3@qu6zK#qG8~eHcB(gFvsJnW)IEGZ* zij6rrN#$hjS6!vmRkI(y;dYJ7Sk}DG>V(e~$6YV}+dHJ~>fEyM#LSmVjgkw+?^QRX z2VK2v8yPxNP_96SpTFUG{r~OtZx^fomimz#|Ge+|FNgXrHU_Pzf5 zEp`4@{~PRYSH9i(=AD{YG=J*T_}}|(n@X>1R+l}@dg+bYj@WZ^FKs`4W0j&|jKKQ0 zYRWH7?b7Cd6#sME|Ifz$M}fhc)Ma9(|9$bs^L2F8=K9>oX7R?5tcz~9_}@xL+e}Y* z?H^-ic3+UY4`Rk^{b_f|Z~uzipSbCpe(GDZX(ejHTREV#^ZPeWPCX1i*(-)lSX z9-VU6W}#Y$(&p@+bC#|V+GXqc=-ExCx4HV)UtiIz-sqIey^crsqVmjRCX*+9J9*|u zfuqUxmru&C|66A8`IVp1NuP(dSrfy~&UgM&cKNi|U%5}60UM&WRGPTkEVkv~*{=J| zqTSjgW6RsunzuCr&iPnxwq3LT_eb_0@-a->hZh|_qskF(6`b{p?}e`Gfu&_Xv%h=4 z+dk<}^PMUCWIujj&2m&f(7i;!`D6F&?-^q9Z+fSfZf(8w?biG0SO4YT-en?nZ9(ZS z31c0J`FYFU2w2Tqbz<$q^^YdEDtWxR(zRj9=HHuMPPD33_Tjs9(3w|b>AhaxMN@v} zojmd`b@j!g+V(HBTAyow+HN^-uD$lI@~Qh5N(d@H6jtC6_FZ_Z?8a_8pPeel4hm&) zKYsAo)8yNsLled7WwyD@m}fiT@9y{PVzC>in-sJ~c5h7MNY2^L`zcm*laOnK5gmo`FYY_WzX)Q zSv~e9E?ufW*-Br?XyzW?F~O z{<}`=m1D&-eg2c;)i)aRpRkK2m!FUl3iK)7eJ*OUW`5Wi%@%=g!rdo7Y&Ox~dzNXU z^U9V0!@TX8#U=sKJ73=|+snmjVRW!o+Wawxd_%h26z(30Te;F{T0DodSn^G8SIxR& zIsb0G-@;2A1+67Z3@$59ak|sWYW&A3<(vLfh8gVB8x-DLoEUT>h@;cA_1CiqwL_t8 z+UL5g^4xZ~|GjJfXGMgG(h`P4AGlu$pR-!zwX`s$-;+mzA=L97+q~oVT>sBsqPb4y zgKnCz^&Pk6?8eK_N6)zu|E|zeQR*RIl~(7}fF;&GC3oeEj7~b27d=U@&gsAKGkkXM z0$v^SCARFj=k9VVnwqXXtvbt5{)*7&iaVvO|If@&DVdaU{=%xyHpi}{-{-bb$j@)` za|-zOtL!%0mHD4SVjeCwZBF&v z<0Pg~^%b@nRgK!2TQ~y**8Tgp-CoFIc9WUs6T{jMJ=p@~v&wSJHNUbHFaBMe(L) ztLJV=EmoeoV4sGOYM0x(T)QWR2p zU)O^JIk&@~alCnVMA=okDc;4@L6c2n$qb)%|FyxIyRV#@*C##CUpLk>_tm_uhDrW^ zr(28NnpCA^aOCabJuRpB1?BpxewtP9J$>}zJ^8meEcFTj@-|#$CsNq+`_62S&P%*d zyU6yP|MwF|mcI~Od$Qz7!}1T89Qu14oj0^*q-bQdE>jfHi}+S3vne&D^3e1fCX+;W z9X-gQ8P;&D_4&MK{QWH5c9Oe=Y~L4_u^TskT>e~dsr1Ah4RZt)nwM@>@DU2+N(|yW zT0UcnQfAZ1={usntx@HS{LR+7=xo1-^qfVC|6U7vtL+l6YJ7jzX`aCMl*1z1qlz}% ze<{IHxq5@n`sNKwSgzHT?zEZ7HbXr?&04Ma5lfUjBQJ~Ffri?@SEqM9yD;&MW{~*a zP}{&si^FEki0z!C5V>QiSJ>A%$v@mUr)tkiZ8EUDQ&E>PsZV&q<0rc_HXUbG=Q*_c z%#SI}e_kBPtg1`Z?e#RhKkaVuk@VCm<0y{JOpXUS`78BVbAN^1`Tz6h%_rL$=NKHQ z362q*a^m2(l3z+c9S#N?OyV|rC}J13;^e=rJZ_FoWe%Gry_h66S#qD&lu0Y+=8E0e z76b`byeQY*ee%&4a)79H@+ZSy26;!RhR=bSz!zQJi_MY7DPd}acd$GU# z{u#;29krebf?k)GdS89KZ8KjL+ot>zFRF6t#LX_$r^Ip;2~DsnJ-$$G(g#1j1B*LK zVxDO{cW}+zcUmylZ|R>a{F9{wZ2}e~oxf6B{NTp>ga8(MmuGxZpA~AjcC$n(cm4L8 z_$gcQtxc4*XrR)hu)Ta6CfxbG)5}pO@4Q@UwF-*|52HHY?%u^4PrlF!oiHmQ+`)EM z-x!3aJw_QUu=TGwM(0aLM z`jf1@GGq1)&s+t+%&=VM%%v&u_G+cWHO)7_4?kj?J1au{*?~vrJ}5t%y0_)6N3+T% zN!^_m3~P#yJ3XBH@=@#kMJJS}d8T+x+${Fw`Tm(XyC(<67#d!_$$Z^Ocbe#yGihR* zbvjZu+!D0$Z}&B{KI^F|=TgFHH%I2H(cBpRCDO0X&rjHyd?|o8Eq%LXR4G?5YlB?q z^n)rfztx#y-kpxKwT<*)+Zvh~>T^PH`@x@L6Zsa$t~XzKsA2MSm8p$VDjCN6A54>a zWpOe&{Ak11BEixLa~CKDpZzZHvDQ3vipc!K^GolqoAh3u zi%V@PJ}+EKl-HYPGBNG!$w{lJ`JY|3Mlt{7l}kY-MpxG;GzPtniTL~Mwf;(0%S)`^ z)t5Xe+MxH&>&Xj zZ0~X}x@GSYu1gA`&P(5KVlJO?^WzQAI&;^9hp%bHMNMhhX5hPOjz+TzlLBw2d%w9d7yeZP&7s zw@$OpzbiQVMcsM*jk3!_;y&GkDqsWP>((+=ddd59{t8G8HaU^op#-`w_%&myRdC$B`1}(8VyER18*-~fK5a4F;d(*z(%-nC5YK|dNrhit8k}Go zj=emc8w^htSQRt8tvEO>+s*G>5DV9|8*=N7wToU|Q#s>*Y|kQ&^X_)L)K~2=&NM8T z=EODEG~H9p%j#ap0^WIP?cO)oPB=V0yXU6TmI{^7TmJhPXD9bH?O7eO)1&z3B4$Y9=S z=fxHOOuOvX?qZc?^Y=cR=Tf}LEmn7pj+#ZvM6DX7>!z$LmoLt@l#J%Lk?@+MlFL+b zGN~)z&g$^>c6C1z7VTdkwMOLAl=(d8Z9>Ffd!7B^%HcP)D~`3qUgyTwBTIPJTHRFk z`g`2|&%>8RiJYk#a$d*9>o|4T*!ZKAg8qNF75c{hy}t;^Q&I& zb$+I51y^4R<17`U^*Q}JvJO@mY~xj#ys-AXmtUI7@z$p{NtJzu6Q3Hc3k`ezn*V<7 zMj@=gv-T5GW1np31D4H{tu=6#=WP-39ls z1R9iU+^wE)NVd}G&Yhfxp{u*r?W#;Z+n;~zA48@}|AB3iYh+Raz0)S1`zA1X4r9xe zl@9iIA{ufwd4wv3uG*ZvIZ>hWN)TJK6W7G41tH3B)-8E^BJ0Yt1$jH}23!o@Vm#Az zHothNwO`>h9lyPM_B^RMpXxJh`)gmuFx~vnnNzarju$FF*W)#n-6-?q=~H2**wi+` zH7eD2A85Q$n#RM-vAR0lA}V!(-Qn3&cgjaj(QmzS(PzUGuN!Pidrv&)Tfa%wPOhhM zF7uDh-?eIt^Ntkl_q{9J=@e+4rL|G~`rp(l{@mqR=eDJ7H2r;puT6e4!!8k%c^5YK zGMr+SWscN#e9gPkz@Kl4a6_W~pAUN{PxqQ$!I*b(!t%C#PI+;REq)8z!exyn{Zos} z>ACFV{<6Mo+pmy({Uy!|Bu#>pUGGi%QyaESaLbV=(sCW=Q@$PFZO*RQo2MVl_|S0A znYkzKMQ0dS%$(h{=M48z&Lg^FuS2C;Usj7VPqk^+_Ksun?x~rn=@-;5_347T4)biT z&yy}2zrXiW{<7+U&CL-VQz!cToFW{fu9>IEbZ?{NHrmHo0pmo}|deD^4ZYeVp=bjMle)OKW5UP_HEKB8K*)Kfy*Z(Ce~ z;S%{XFL<8FXQnqFSx|qXd!d5e#X_U~DXfCA`frT2mCdRvni=i0F;g$6I zCfnhNy>AZ0mUYI>anF)2+rDKhW6PYSpP%2p^yxCIb-|lMqS2durJ`T4zq=ePne@SU zchcl8ODAm(ffJX{>`K@;tuQ2E3L}5x(mdZ-x417YCSprex2?M?X&H7?l>e=y&L&$G zu2+vOatoJfRIBd{G4`A}xp&1j))&s1Iaj<|Vq#Rn4t<#+B4Hn~(Twfwp+lL=SIc+!Y! zp7rj1zkL3`Pw(!gub(Hj+2ymGmgtNFa-de*Ld_@167J>!oGgulcxaQ!d9I-!E%xtbWD+`}Oay zess{iWVVg+@8f#c@B4E}@6-1A_A@p`bJWyDdEdIfuQod|`S!2RmoNYR{{H`;>+yC6 zXD=86{(rXrccP=~Z1_g`4dox1>X#WSerP!E`fMeaYR>htP5(YUd|GwG zy!&qH$-mv(#Tni_d~1Hh>XrHjE&g2@FEawux^7LV(fji2g?yezXTqg|l^3$K`jggZ zZmwkPW}E%cr`Sn*rAl+-?aXz@w=io*8##SBKD$!!m=?cQYDKqT*MSe}5r;p%tlCo< zciTd%iu+aW6#n@->(8v8r@!oe_YS}1+cwQg(w(&D|Bk&ir@kDBUhV(w^z!X*Z%*5G zIO|Muaco-4?1RQC$9zi597I`4la_y4rTXRYmOF3jT&8U<|55XE%gxp58IJ$H99*+RW$)+d*erQ`dE3&>Yg&JX?9DZIzO1xUhi~qbMkCG1 zvOZhnbxLPGnRYhBV)^|&v29Xk1N*hFE63*tuF(3KE1eOOlaPOnt5fGg`L@fa-=>u{ zIj%NsKCb}K4HUtN8DoBZD$jI4Wm zKEK>_FXWyS)5XfQ&!?Z)+@H0rxBf3fc=~=Ln~IbQ(aYYK9gA%W5+&D6efub3^{b#) zyRUa_lASwK|3!zy(!W2hS}%-w|COQm_P69cG3!?!Jb8N4w7)-pzWn<7y0zfypUj&h zjKA9deS5jx|M7{hKZ|~Ty8HTk7(>@;&z~mCIXCKQ@ULmMUCZ{b%*EvPn^Jp*c2}|3 zeDkU|i~1aEsvFlEB+h&*ty5t)%|5=~%ytdi^Xy;$R+sPpv#b8j_w)B+?5dqa&o4>) zZFlMN{JLMIGW!16)xT5JF1^)XQ9qeoxXJEb!*ul{Zuei6o?gRN|Km%M?eXKeKYzZN zzu$EF%sAbvc3Fo1Uw+yWBX&Ez`on70ziV#`$IhF#qgnP%QCxl9%@A*co&TPF4qrb% z@XMwTktg*_OwO&4c~ZLO^yka%)5V`UY=14P^#AexKgB`fzEk=`qlE3*+&UI@n)v?} zSfRFgrM%dUAH~t2rKZ-uujS z#_e)5_0HmRS)HuABKZwXpHJL-XmZO<)}Q5k?i$Upc&Whk5&*q&={*~;i zGthJIKXh!(F)PuxA-n-XN!{DcElNH(vZpPpc-P3XPw2vd=jI##&TX*Bn()XcBGxnY zcBgrWE$e2jrgM4Ox8yZuORhi0%;7s}M)XtH&9)Brt>2#%Hxz0Lc*r+lf5WY1Y3Gjf z7~HdYv2|-=!BZ&(g-ojmsU2PMJrCK;vkyqBMQ(F`b;Ee=v&mwwCLG(4P|O}tXZ((1 zZH95`ecx}3E}xML+0qd2yL`oR5#2XuRtw(Xm^kC3paS1}(}T|UYgAURV_5j;+m$u5 z7w?Hn=ievnlC*y6dxxVom%SZXjJ8T?-YVs(y>_#E!XoQq)<&21elniP=KEs-Yhvt~ zi-KRd zv+b_rsu?E}-`UPCnDp!P;#g&Of4}*A1J>{#SE{-BInngqRCkjPtNu*7`uBNh|4JL@ zTVl?PAc&0{iYAGv*J>R7JqKD*O+h3z8S ztal~VKCG6Dot7{0l6-aH_rgxlhRfKnETt}Mf-Pw5&A}QY9{ZY%hFE8hH`|eaOa(HikPKE!Dq7JdUE2eIh zmEY&F?x5Y|L)_VZSE`LpaO8gfRlIKh--o-;UD>~4fz;ZW{92EsZP>%x&D~B_XIyz! zATG(fJ5F%+VzZ0E@@6I>m8+k49osu|!+E!mr?m$s1zngMD#HKHGK<0UtYfUIL+iRn zk3~2AX`g5xdUxZ*B!;WD$JUwWUw>)%^i?iHaYAFjk2n!Y&4?#&QfC%UkLWkF+8VR! z*NWWajoMN3*k={9OTKCr)vb5;zqhb#Q{Hhl;rGdbh6lV=U&)kD zJ}QJZ6~<5WzHvke;mT~yL-X)$NDn^;he6i;WRA;aSS$*YGUR~X@tch92_B6*d zfjK%?S|0z|FiR-uxl)Y!#TT}-4v4g5=LH>?S)8}|?AiTOufMxz${}cQb(-U5Pu}Y` zi;jEFdRt>xTxhzfU&4`h7Wca=zi)nAJa4Dj*Qs+}PPmY_=5OU{v&x)h?_6WIZC3SN zIPXwP*N-o=Cgtb`PP}C6TqdL2c2n@7&dg1|97QRoofz9WxVOETzFW90Muwq-wPpSE zz7z7T-VZM{91Gc{Fl9w@{^ke&1d9r`#`0}gZ56WUCFAbXwo{k|OC}oUJn_4^b*A#y z&t+wmJ8$+aOS|w|bWMj9Kkvd*Gqb#nyv0{>{JgStnfaBA4Rc@ZV{eQP4v=bhW54n* zZyKnflHR-CtXwDE3Db(?rlR4#luUAq`R-awvdY@Gut1qxx zepy){*wihu6or5!EK-W{Cu;z{@-4|zvm|Z z)|@Y#tKWCLTKL&>P0AIYQ*)LVeC4z_^|M>W;iahiR&Tku8PhUu?3gfR>X~CFgjnx1 zHXSosB74`|NU2s_V@7F?myD?6)Hz$e*PiJxueMkCovM2K6kEfwHNM^H>YFzI`M06! z;;LWjA@5mOZrltLZkzq-?z51&OZP1b>j_%7>&D{Z`8_FtHD7-=uqPb|GzdC1!+na_ zO8J(Re^$=Qdvf6Ws)YyMyG+w+I)Ae2;on%}?!tZT{?jiv+N88b%9?5>{kA;L+mGdPQp1hsg{Y2;J2VUX* zoMn5y-JWuB&Xn-v;;kR<&r#{{s|mb#@vZC*Q-%zcnN}T1|FZi2q{?5pRH?Vhu1#{M z;BTIe#~1fY$6m77QZr@A`bj&CEP5ZlR5$&Uvej+p?5B5^vz<@So|qNlzcgTF=|aQM zxr+}j`}6B}{SQHb6=(G7%Q`YPEIReF`jjxo+#Ff%d3T=|KA+)ivg59Q>W5n1_+>ih z7w)~p;VUI;_j=JhXWk&2OA#QBS6-;L=Yqwl7WBMn_H9~xnz7p@6xTkc?XqOAl6IsF( z{i#ObOUNxH)sQ61%}<}SN6iQqy>Aq8qP$mN!JYS)?I-dT94W65ujtR}Z>TT(EMN6c z?r&$D#LoQJ0xDuH`WJ;7jGlij(|tAjd(O4n=O*#zs`pA3wKEu{(1AHJ}>uu3m`WA&lwZ=Rh@I(TKZwfdV=dvD(goV`m}#vtVU z@*7&=&)#nR|3tQZ+u1d7>{~e&X3pLqY;)}BjrIE`}n+W6I`@MdMxu0xp7601rm$CjN zcgY)##hq6Ie{S#EYxP38a`T@VyY{%dU+>^tlEL96_2TOC5kr|tHY|_Pz zd<#9Q?T>otSyapwQ3!1~v^XW?iQAK{Wm|&}7*3nAwEV>e&(@j)Gj1CNi`f?{@JUGo zp7GqQKV5T@L1+2(V-A-J*4>btawV8|!m^J7hkJ{v7O`^XK4y^4$qjD}s_hS6za%K9 zOp5Dmanh#BV-j0RIa-7C_Wi%N?|pmd1&P~tvucd_j>gHy1uVHVvEWnBs_-*g&$;M( zx$?D7vvAD(aAu>(ghKYG7cR4G+Nl%dxzo<*3}4Gzw>2IQ&d7(b|2@+GJ1{~a{YGl+ z9FgQ-FJqUNFL<|BqwblTVtMs9_Nu}=%v;T;ZFW*R@R+^-=*3!Bsf&9L%w$qFlbO^M zcDTAdC;e4_;P!{gzM6b~GZx!F-51Mcn4rYpc=3rvgcR2?FJ=~_brM=~{F66q3OntW zz2nb;2G`iT2iI0hFSIbd_z}-j$K^>xt-2jZafo|9CS;YK2~ok zu2=u&qx$5dLEj;VP2Fq4><*r}V(Yom?cV}FQP=6u7cJWz<&GY@%i&ctb^q*7~>XrK2ve`|J#W}6#+p^E+0I@Z zZoNHIPiW7fN1}@5c_&IEbT#fu-=CXgtiHiSv_mO=vP0L77S_w!v86Ao=X5Yn+0wuH z!7Ck)ln?1DPhNSSw()sYw6h}5rD?_4R~nPn%sX1S@T9GjVv)#0muD}QNOCCkc~5?_ zYkBoyW6gJ0I>YYonDYGh=OfcsaZPWlI9JV}Yn0d1e#;t3!<@cyY}>lOSiOZubH z%y-9+U;oo`snk`OCDHP;rNVnjg(=y=Wor4x{CrG_0gv`r9g2|eQF?y(pQJ*Fy-#yH z!;6dR7bb1%P*CAr?j|vPfm{3ppTL+GDVKjrAF=Pzdzx~30@JgXU*qh}jekG%vf2{9 zr0e(D6_4-lzv11b{W531=ORPVufaS*m$}LrR?RYKoaCUxWIE5$;_?<5Lo+GHb2cj@ z&%Nxl%Z^m9nL2H;&9WEj%%_S~EelThVjCCV7xO<*vASZytOn`XVJ5R)t?0};`jgvl<5X82 zU(dLVu2nZ*GIRZL;_O+Ivg4-3O2wvqkLFl6Jl>$bcTeT)0ySQ@R{hsq%vuiHEnfwD z7M)wKEpo88s7$Wm1EY)LIZxNBIZqeF9bDopSmLuNV445rml82DF4_CeL{DtmoT~jm z=X*=ohDTy&d1G}}YTbCfDJN5X$;W0diz91f-&^s7pPpcw*wq%wdvD|Wxc)DP)}QBm zyyS`Mr|kFVBTF81XGyHA_%5%o$$#?NSw4a1PhQ~c{XY3}+U1Fzv-g%(9=@3{lhgnC z6$yv8f|DnHI<2}XP_0DwtzP-Z<~jz$Whzr+ilhU4w=CGaPAGn1Pe|W~h3bb6USEIT zg_(ney_~V$v`=FxS8bxpk)&h0POt_qDE-8hm3u_RTrbtDl0)&1nP0Uq-v*)AZxuUr zCpzhrlvr;t^4_8FS2^HkBEPZ~m(t_Q`*&?h(~z`!hFgfUa=A^?5i@@$=s&tVt%}1*0e5(-uA5vLo#>U9XmGBe&gm< zp1#3zr&`?IQf^<^nYc{ce#OkXUHzPA+

CPh5L)H{YTwPwkX8PPevNz_-j!xk|Ia z+b5{?x#6aHZRrO!Ci?yCSbWa*)seseY?c@IT?}jt8|tpdCh4*cDcJ_tF*gu z^TIv;+ooAqcr3LGID6>ZMZI=oc8OAxV}8$_xdiWV8n&sQJ8)e)K=T!c;|qbwp~ue^ z>ns&H%b8v2nOn}Z=F$~If2%p6mU{&n)C`jYVr<0(!mn2p_y)R$d(Zv*(|%d&OtlV; S)aeWi3=E#GelF{r5}E*qsJfH@ literal 0 HcmV?d00001 diff --git a/Gauntlet/gauntlet_gauntlet_test_sprite.png.import b/boombox_road_02.png.import similarity index 68% rename from Gauntlet/gauntlet_gauntlet_test_sprite.png.import rename to boombox_road_02.png.import index ab5289e..3ba9c9c 100644 --- a/Gauntlet/gauntlet_gauntlet_test_sprite.png.import +++ b/boombox_road_02.png.import @@ -2,20 +2,20 @@ importer="texture" type="CompressedTexture2D" -uid="uid://b5es3jtoiurk0" -path.s3tc="res://.godot/imported/gauntlet_gauntlet_test_sprite.png-467bd17e9c858b14d9a4801c21138a65.s3tc.ctex" +uid="uid://dtdp1y7dvcook" +path.s3tc="res://.godot/imported/boombox_road_02.png-b793a6d4d8e2715bc0ef964756a97946.s3tc.ctex" metadata={ "imported_formats": ["s3tc_bptc"], "vram_texture": true } generator_parameters={ -"md5": "ca126739c083c78c7d5305887ee9d27b" +"md5": "77c6adf66e10f09a997e096353d67627" } [deps] -source_file="res://Gauntlet/gauntlet_gauntlet_test_sprite.png" -dest_files=["res://.godot/imported/gauntlet_gauntlet_test_sprite.png-467bd17e9c858b14d9a4801c21138a65.s3tc.ctex"] +source_file="res://boombox_road_02.png" +dest_files=["res://.godot/imported/boombox_road_02.png-b793a6d4d8e2715bc0ef964756a97946.s3tc.ctex"] [params] diff --git a/cam_environment.tres b/cam_environment.tres new file mode 100644 index 0000000..95d1e99 --- /dev/null +++ b/cam_environment.tres @@ -0,0 +1,11 @@ +[gd_resource type="Environment" format=3 uid="uid://cpn2no3e8s361"] + +[resource] +ambient_light_source = 2 +ambient_light_color = Color(0.5609549, 0.5609549, 0.5609549, 1) +tonemap_mode = 4 +fog_enabled = true +fog_mode = 1 +fog_light_color = Color(0.608, 0.64, 0.60959995, 1) +fog_density = 1.0 +fog_depth_begin = 30.0 diff --git a/card_placing_tool.gd b/card_placing_tool.gd index 229964f..55387ef 100644 --- a/card_placing_tool.gd +++ b/card_placing_tool.gd @@ -55,6 +55,7 @@ func place_card(tower_base: TowerBase) -> void: hero.decrement_selected() hero.hud.hot_wheel.update_cassettes(hero.get_wheel_cards()) tower_base.add_card(card, multiplayer.get_unique_id()) + hero.placed_tower.emit(tower_base.tower) hero.place_card_audio.play() if hero.game_manager.card_gameplay: hero.discard_pile.add(card) diff --git a/click.wav b/click.wav new file mode 100644 index 0000000000000000000000000000000000000000..281646319897ea22eed7a1edeb2b30cff45aef99 GIT binary patch literal 5093 zcmWIYbaT5a%)k)t80MOmTcRMqz`(%Bz{udTh5?Kj88{eH5=#FYy125Y4#WcC`uh6LS-tJeO^pquiTUN#wRQE)Q@h)m8ygxLJE0n? zr4SRkI>7P`6Q^~zf)qN5c_bHBRM$>?zIApV$S6&(l){Rd+PcFB7ES~iQeFTyxW0aF ze+SsiRxsJnkP?s%a!h@FR0f331RGRWUw>&e#Ma!rGLW0fi-aAOcMw*Mfoqh9lC7z+o{FYG#Rj9K@`pOCV-sdn7^Z znb6zT+}POA01iA*C@z>k0qmC+sMdygFwbdvCWH0Ny|{W>4=AJ@oZ=y-W*^>d(ZYsk$lgG7is)W-TA zuzd{;4U1M!2QeEPQseRcAxi7(mqU|4$J!aa zZJ@MK3yMyVxAQU~&Z@71iL8JrwuFV%p7k>!M&}nn6=g#FUtd2JYH&j(G)2@;T{Z=h zyfW-!a>0J@*g6O7;f4n9IH(W%`r08WCLa>C_4UnAT@4Mn~2~M&N z4Lu7dL7CHFjQSdoIiS#YGziInIPBPtc@x0unz}$q4CL7qzm!6VJEl+X0cFF6hKB5X zNcO3(Upk`~>di@zl-AHt83|5fb@lc6foVk*;DBj`g>*v;OnpN$*dmY>RdKmcuh;Kc z2s6hcI323F7p|oTl=4A&upv7elwd%qeD=gna1w85oeOb#Lqjvv_YDmo-$8JYYkXcA zIH+dMgqb&M7A%|s0#c!#tbvEh#*NTuKr$xMG9s(E5~O7Ej`=W)gVLZ;Sifq~WKbwH zHZ;`1!nVG)7@At^>nkDos=mIyvIJ}h$Z6XagX6KWp`of2Txx&>3t?HNz7Ouk22*E9 zIMvm6A6pI!i7<~usK4s>Z-$3}NoWQ%@ao_u)vvv@4rW+NG${N)Zft=GH8do{^whV& z1F&KKM5vD%il8Re*H^{nz(PL@8XWcY^;g!8gHObn+FO>hzT97;BpmY2uKEs zvs1xED2Ueu3M;6ZB19Oqg3Be4wuT01)&X(a5XL3z2Ba30Lt?TLoS;C))%RW5FuNa` zq63}a0WfvW1W*WoJWv5jg(&b&!5x<)!2q)v}Xd`#+oWfl@0R2j&&gSLqY`M{`y4+ zmQL+~X7Lc$IJiwy;Gzu;MM#!zMJR8m1m}H_;q~=hi0E&~g_}~3R7y59w8ESV3UXx4 zd2kok*Z0pw1YScR!Y}nXY2au9hwxH_*BfT_!xKXtq%;D%s1Z{1gRE+3LPT#vs(*5R z88lovCn8)_oC#0=^6+9H zjk|`1hBPD{^+=hcp>sAoc{MbYA&jlBPl(Scfd}E5Wz!IO$2&N+0OrB^WeX;Ex4}Z9 z0~*gDw=@*zmsWuaI4LJtR%Q4_4Sh$Bc;p2 zkTj4_p$fsif)Vo}0RlFyp$pkRHR**&KFUCG!;XbWZbd2+8X77ikhQfSg-=66BdCQ3 zvlyvL0tFayWHvOUA^D`fz8n$$peh5NW`#W1v0|06Sh{^*;KE&?&dTg!gED^eSIHl*d&Cc=ED+feSLiks_Q1sKyhzQ3bNXIP)>$h3i1Fdu0n~E z`YuqgASv%filK&vhSJ2`5>R}@ykCV9-1YTSA@Kwa)rJPt@Tjjx@p65AV>c*Y!BtnH z8s3Z)S`7^iO{h_VR6~Ozt-TL5&R}H+)VBpF&aQ9oKnX(B=&!GDX=y^q8@;H?iz72o zJc1S<4bx{$=mL2RYIj3YJSev!sx**$kufM+!qZSgLqq4BN#G(09xzcUdEmSO3-(Sl z`G$!-s4hec$$GS0($LV*iV^?~4Gri~S>Mrv8vYH{WoWTokKv`lBGkg6z8M@4aE~-J zG+-FpP=j15)YsRSmQ++Dn_P#?0fk!!C~%R??0^I}LIm9}b)dWj3p|hs;7oxW void: + #var sphere: CSGSphere3D = CSGSphere3D.new() + #add_child(sphere) + #sphere.global_position = pos + pass diff --git a/hit_detector.gd.uid b/hit_detector.gd.uid new file mode 100644 index 0000000..c284c83 --- /dev/null +++ b/hit_detector.gd.uid @@ -0,0 +1 @@ +uid://1cqp2ke7peqt diff --git a/metal2.png b/metal2.png new file mode 100644 index 0000000000000000000000000000000000000000..a1b8a19bf0f0aa09c79425b066ccbe60a94ac0d7 GIT binary patch literal 1294 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hEk44ofy`glX=O&z;eRV z#WAE}&e15#qQ?dTEfK$(%&w~4`oI6U-4eTzm#%XxAIZp{;5wqtY@ALjJapGuk4uu*I`rRIoB6hw#*j2Ym?n< zw&#FY@0$X){@-s4x?aAzzUf=Wr>NgI8TMpqZf_~g(0si1q{WohE9(2>m75}MH}pt! zip;zmbS*=~%QEQLF+HObAEvNvEUl2=zu9!&MNyYUJipt@GcBFA}TfWjVC4hMnY?%^a{UZHcP$YTa3KQ>t?sw%w?@(KOvEXx`DQ zH#gsk(tk4Zp0C~~K1-wg*y`#t9J#SeZk+tmbxXs%_Hf};%a2}d&v<=qnQAvJm4ER* z_5OF;Puo_V_`rI)FSMlcbW1erk7E((onrSzCsxei%wpU8K6HWbnZhlpUn38OsR}Rd zI43E(*Js_b{NKG!>Vm10E}G8z>~lR>`U=Y$8_7#)O zZ&GhRdGs^W`LM4ZI#F}i2BaN1UcAd*f9`p=$hK?K{aW{46ccs5=d$I)IjsxF4MHj_ zjx?NTJ9}mA)mFW9>6IID_DucRwf0Q+ERJ2yn>9XVimgy^%DV9KqDGc(Sx(wRiS~;p zMEBHx+mkr=Q^ftH^VGHWB&l^+v~98Y_3egY`|{aKpPjCg?%DS=NBdgFX7|0;ZCwd$ zf=0%ZxbEF-vf_K}+}}amo?iC@6Zg8?N1jHTY1~sX|q|wP2p9Hg6TH1 ztS9gN`ko`~t?6BV9|NITfrn?7ChVO_|m39^U|j)$r(4l zSv1d=BA-Fl{oE7thcad8c++Vz(FPh)mS^L9}eP&12NL-Ho z{WFv2WQX{oYqt}!KkmNvd#T+u%Lw`NFVesFaU@vJe|SZbc}u|c8FSSa3#rz=4XrLv zV^8?BC*;L7*;AZttw*+%k;UKeh}Q=%Nrc3_J%4GX*50pb zuKfN!0o4MUZ$0cbZ#j7(TKnyqFBb}|MB_|_%4f!9cc0ksgR%Ll=0E0?i}U7I{C{P_ Qz`(%Z>FVdQ&MBb@0L3bNDgXcg literal 0 HcmV?d00001 diff --git a/metal2.png.import b/metal2.png.import new file mode 100644 index 0000000..bef7c05 --- /dev/null +++ b/metal2.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bhry0r8w4jmop" +path.s3tc="res://.godot/imported/metal2.png-c57b55fcc0737dfa62e1ad34c1ec8edf.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://metal2.png" +dest_files=["res://.godot/imported/metal2.png-c57b55fcc0737dfa62e1ad34c1ec8edf.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/path_vfx.gd b/path_vfx.gd index 2850fa9..2af3834 100644 --- a/path_vfx.gd +++ b/path_vfx.gd @@ -29,7 +29,7 @@ func path(path_points: Array[Vector3]) -> void: if path_points.size() > 2: vertices.append_array(get_quad(path_points[x], path_points[x + 1], Vector3.ZERO, path_points[x + 2])) else: - print("go1") + #print("go1") vertices.append_array(get_quad(path_points[x], path_points[x + 1], Vector3.ZERO, Vector3.ZERO)) #Add UVs @@ -108,7 +108,6 @@ func get_quad(start_point: Vector3, end_point: Vector3, head_point: Vector3, tai if head_point != Vector3.ZERO: head_to_start = Vector2(start_point.x, start_point.z) - Vector2(head_point.x, head_point.z) var start_to_end: Vector2 = Vector2(end_point.x, end_point.z) - Vector2(start_point.x, start_point.z) - var end_to_start: Vector2 = Vector2(start_point.x, start_point.z) - Vector2(end_point.x, end_point.z) var end_to_tail: Vector2 if tail_point != Vector3.ZERO: end_to_tail = Vector2(tail_point.x, tail_point.z) - Vector2(end_point.x, end_point.z) diff --git a/player_gym.tscn b/player_gym.tscn index d458503..5000a0b 100644 --- a/player_gym.tscn +++ b/player_gym.tscn @@ -5,6 +5,12 @@ [ext_resource type="Texture2D" uid="uid://bct2kqajrdfxl" path="res://Materials/bricks1/bricks1.png" id="3_lefvv"] [ext_resource type="Texture2D" uid="uid://b2prrul2qc8j2" path="res://Materials/cobblestone1/cobblestone1.png" id="4_ygwa6"] [ext_resource type="Texture2D" uid="uid://cnvndwp3q7rke" path="res://Materials/dirt1/dirt1.png" id="5_h6d8o"] +[ext_resource type="Script" uid="uid://1cqp2ke7peqt" path="res://hit_detector.gd" id="6_h6d8o"] +[ext_resource type="Resource" uid="uid://bdkcwve6d35gl" path="res://Worlds/TestingRange/Enemies/dummy.tres" id="7_1t6mq"] +[ext_resource type="Script" uid="uid://cummt2be3r1gq" path="res://Scripts/hitbox.gd" id="7_10hvj"] +[ext_resource type="Material" uid="uid://bxmmwv17kc3uw" path="res://Materials/wood2/wood2.tres" id="8_fxx58"] +[ext_resource type="PackedScene" uid="uid://hjq3nrnumklp" path="res://UI/EnemyHealthBar/health_bar.tscn" id="9_1t6mq"] +[ext_resource type="Script" uid="uid://cojjgevmbhwal" path="res://Scripts/status_effector.gd" id="10_74ojh"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_lefvv"] sky_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1) @@ -45,6 +51,9 @@ albedo_texture = ExtResource("5_h6d8o") uv1_scale = Vector3(10, 10, 10) texture_filter = 2 +[sub_resource type="BoxShape3D" id="BoxShape3D_1t6mq"] +size = Vector3(3, 3, 3) + [node name="PlayerGym" type="StaticBody3D" unique_id=176934332 groups=["grass"]] [node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1918125291] @@ -95,3 +104,29 @@ size = Vector3(10, 1, 10) [node name="CollisionShape3D" type="CollisionShape3D" parent="DirtPatch" unique_id=1840066499] shape = SubResource("BoxShape3D_6o6pr") + +[node name="StaticBody3D" type="CharacterBody3D" parent="." unique_id=1736737125 node_paths=PackedStringArray("status_manager", "health_bar")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.146767, 2.0000002, 1.4915252) +collision_layer = 4 +script = ExtResource("6_h6d8o") +stats = ExtResource("7_1t6mq") +status_manager = NodePath("StatusEffector") +health_bar = NodePath("HealthBar") +metadata/_custom_type_script = "uid://1cqp2ke7peqt" + +[node name="CSGBox3D" type="CSGBox3D" parent="StaticBody3D" unique_id=612131976] +material_override = ExtResource("8_fxx58") +size = Vector3(3, 3, 3) + +[node name="Hitbox" type="CollisionShape3D" parent="StaticBody3D" unique_id=656436221] +shape = SubResource("BoxShape3D_1t6mq") +script = ExtResource("7_10hvj") +metadata/_custom_type_script = "uid://cummt2be3r1gq" + +[node name="HealthBar" parent="StaticBody3D" unique_id=411371062 instance=ExtResource("9_1t6mq")] + +[node name="StatusEffector" type="Node" parent="StaticBody3D" unique_id=1768631767] +script = ExtResource("10_74ojh") +metadata/_custom_type_script = "uid://cojjgevmbhwal" + +[connection signal="took_damage" from="StaticBody3D/Hitbox" to="StaticBody3D" method="_on_hitbox_took_damage"] diff --git a/project.godot b/project.godot index 4c86e49..4204f50 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="Decked Out Defense" -config/version="0.3.5" +config/version="0.3.6" run/main_scene="uid://d2k8y13qfvch0" config/features=PackedStringArray("4.6", "Forward Plus") boot_splash/show_image=false @@ -28,9 +28,10 @@ gdscript/warnings/inferred_declaration=2 [display] -window/size/viewport_width=640 -window/size/viewport_height=360 +window/size/viewport_width=1920 +window/size/viewport_height=1080 window/stretch/mode="viewport" +window/stretch/scale=3.0 window/stretch/scale_mode="integer" [editor] diff --git a/spacecarpet.png b/spacecarpet.png new file mode 100644 index 0000000000000000000000000000000000000000..074228dad373d8fbe11c3beb13aeba9411ed8f09 GIT binary patch literal 748 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hEk44ofy`glX=O&z_iTM z#WAE}&fDm{c}#{p-#)TTjauo@RvnO@@nk`k6rmf(6aB02xb4C`%30dpKS9mB) zx^!u4sMo_;j1ti+d^Tkr;K_e4|9qZ_CSyBqtX#XTYOB|RRR8O1u6v)$zABNtLF?eP z?#1NN7Wi#>>`OZvxn^$ZWqcee3hpC-rKimmDyvyk~I0yLs(_In%ctRXfPwy~9?@ z`{vS%0TT_r<>&m6R(kpM-qE0mj8~4|oRg<_U@9Y+Z^&TjykfsE=XVu}Tn4t6+k7PR zr5dhH7Y*`w>MCjP$(iv^M4YYQ#j=kDlbFvQspe!z4>}vXsQq5?i#Vnz_fL~@R(VeN zTsL2BOGH@Gj}Je;*3K(B?9BBoI?3`&)tqAwrZHE&;b681Yg()B!WngJv*ZQm!y(O~ z5C1k~Oi(@WS81_(PwmeAs%nyFe8WPXAO9RZ*V=_~frZk^7cc*aahgjrtZho$dhfvJ z)2mO#gzfhI-mb{AHOA?rsaorV@csqQV!q2Rd~r8nU&KA51y9c{m7LW)=kvVd?=OE` z@cCp>dqW_ void: + if event.is_action_pressed("Pause"): + queue_free() + closed.emit() + + func set_waves(waves: Array[WaveConfig], starting_wave_number: int) -> void: var i: int = starting_wave_number for wave: WaveConfig in waves: