Compare commits
92 Commits
271b0ede0d
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
549aa9f7ac | ||
| af3fc06e12 | |||
| 7bf559a800 | |||
|
|
54b044142d | ||
| 568eb9e6e0 | |||
| f3528d897c | |||
| ce7576731c | |||
| 6138957524 | |||
| 17f2003fe0 | |||
| 915a6ed72c | |||
| 7599d3a665 | |||
| 37180e2def | |||
| a5d36734ef | |||
| 4d8fbda71b | |||
| ba9c1e320e | |||
| 28a29a88fe | |||
| 5788c41731 | |||
| cb1cad1271 | |||
| 51307c0d40 | |||
|
|
81a56986ac | ||
| ebf9f6c117 | |||
| ed28a4bb70 | |||
| f0f02bbd17 | |||
| f67963b129 | |||
| 29140712f6 | |||
| f7008b40ff | |||
| 9256c0a09e | |||
| 4309111382 | |||
| 929629a826 | |||
|
|
5362240120 | ||
|
|
8e363587b9 | ||
| 833ad3209e | |||
| 4b840bbe7f | |||
| 379ef0189c | |||
| 8a923f04c4 | |||
| 5405c33192 | |||
| 7733032397 | |||
| 41adf908a5 | |||
| f4c0944afa | |||
| aac5fbd297 | |||
| 5acfb9300c | |||
| d7dd58b5df | |||
| d536aa2014 | |||
| f8cca640a6 | |||
| f180d4cacd | |||
| ed4ebfafac | |||
| b9e66d9f93 | |||
| c645c56fb8 | |||
| 5eaa5fc91e | |||
| 69fed8d403 | |||
| 83b4d90ccb | |||
| 64f5ec8a5d | |||
| d0ea3eeec1 | |||
| 4e3b200a8d | |||
| ef3045b3d2 | |||
| 2d2dea616c | |||
| 75bbe25929 | |||
| 59a77d084c | |||
| 316651f409 | |||
| ad48e723d5 | |||
| b315a90720 | |||
| 4d0b0196e6 | |||
| 0be97870dc | |||
| 5aff65d384 | |||
| a6a8f5e893 | |||
| e27fe40420 | |||
| c2239d240e | |||
| c32bbfe45a | |||
| a8ea40dee8 | |||
| 70bf65887c | |||
| b29f7ce75b | |||
| 8523d6b64f | |||
| bf60e2dd9e | |||
| 0bd39bfd51 | |||
| 3738f24705 | |||
| 8eeca13607 | |||
| 6ff28bce60 | |||
| 1ae76971f7 | |||
| 43f2da2f4b | |||
| 53d8129cbb | |||
| aa9b5a1793 | |||
| c8d0eefd7e | |||
| 23f20f08e0 | |||
| f7417d0afd | |||
| a15973a621 | |||
| 23443546b2 | |||
| cf2642be2c | |||
| 7764644b90 | |||
| 071010f652 | |||
| 9b5a94bfab | |||
| 736060d6ca | |||
| cff32e0fb9 |
BIN
Animations/Alegreya-Regular.ttf
Normal file
BIN
Animations/Alegreya-Regular.ttf
Normal file
Binary file not shown.
33
Animations/Alegreya-Regular.ttf.import
Normal file
33
Animations/Alegreya-Regular.ttf.import
Normal file
@@ -0,0 +1,33 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://bu2j6b01rdsf6"
|
||||
path="res://.godot/imported/Alegreya-Regular.ttf-2cd913ccea05a4852bcc67731f6ca49e.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Animations/Alegreya-Regular.ttf"
|
||||
dest_files=["res://.godot/imported/Alegreya-Regular.ttf-2cd913ccea05a4852bcc67731f6ca49e.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
||||
BIN
Animations/GameEnding.res
Normal file
BIN
Animations/GameEnding.res
Normal file
Binary file not shown.
BIN
Animations/OnHitHedron.res
Normal file
BIN
Animations/OnHitHedron.res
Normal file
Binary file not shown.
BIN
Animations/OnHitOrb.res
Normal file
BIN
Animations/OnHitOrb.res
Normal file
Binary file not shown.
BIN
Animations/OnHitPyramid.res
Normal file
BIN
Animations/OnHitPyramid.res
Normal file
Binary file not shown.
14
Animations/ProjectileAnimations.tscn
Normal file
14
Animations/ProjectileAnimations.tscn
Normal file
@@ -0,0 +1,14 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://dykvpgrjto227"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_7sp5o"]
|
||||
resource_name = "ProjectileAnimation"
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_1g8r3"]
|
||||
_data = {
|
||||
"ProjectileAnimation": SubResource("Animation_7sp5o")
|
||||
}
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer"]
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_1g8r3")
|
||||
}
|
||||
219
Animations/UIAnimations.tscn
Normal file
219
Animations/UIAnimations.tscn
Normal file
@@ -0,0 +1,219 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://cjl20bs56430j"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://b1ucutlpx3fnp" path="res://UI/INTRO LORE.png" id="1_f4dp3"]
|
||||
[ext_resource type="Texture2D" uid="uid://haxbuoepqn2b" path="res://UI/LEVEL DROP 1.png" id="2_r3e0d"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_3u8q8"]
|
||||
resource_name = "FirstLevel"
|
||||
length = 5.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("DissolveRect:modulate")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 1),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("FirstLevelSplash:visible")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 5),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("LoreSplash:visible")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 5),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [false, false]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("DissolveRect:visible")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0, 5),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_qsjit"]
|
||||
resource_name = "IntroLore"
|
||||
length = 10.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("DissolveRect:modulate")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 3, 7.5, 10),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("DissolveRect:visible")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 10),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("LoreSplash:visible")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 10),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("FirstLevelSplash:visible")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_fm0re"]
|
||||
resource_name = "RESET"
|
||||
length = 0.1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("DissolveRect:modulate")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 0)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("FirstLevelSplash:visible")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("DissolveRect:visible")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("LoreSplash:visible")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_ghusn"]
|
||||
resource_name = "fade_out"
|
||||
length = 3.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("DissolveRect:modulate")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 3),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_iabf8"]
|
||||
_data = {
|
||||
"FirstLevel": SubResource("Animation_3u8q8"),
|
||||
"IntroLore": SubResource("Animation_qsjit"),
|
||||
"RESET": SubResource("Animation_fm0re"),
|
||||
"fade_out": SubResource("Animation_ghusn")
|
||||
}
|
||||
|
||||
[node name="UIAnimations" type="CanvasLayer"]
|
||||
|
||||
[node name="DissolveRect" type="ColorRect" parent="."]
|
||||
visible = false
|
||||
modulate = Color(1, 1, 1, 0)
|
||||
z_index = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
color = Color(0, 0, 0, 1)
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_iabf8")
|
||||
}
|
||||
|
||||
[node name="LoreSplash" type="TextureRect" parent="."]
|
||||
visible = false
|
||||
show_behind_parent = true
|
||||
offset_right = 1920.0
|
||||
offset_bottom = 1080.0
|
||||
texture = ExtResource("1_f4dp3")
|
||||
|
||||
[node name="FirstLevelSplash" type="TextureRect" parent="."]
|
||||
z_index = -2
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("2_r3e0d")
|
||||
BIN
Audio/BGM/An-Imitation-of-Heaven.ogg
Normal file
BIN
Audio/BGM/An-Imitation-of-Heaven.ogg
Normal file
Binary file not shown.
19
Audio/BGM/An-Imitation-of-Heaven.ogg.import
Normal file
19
Audio/BGM/An-Imitation-of-Heaven.ogg.import
Normal file
@@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://i80n0wsjidwy"
|
||||
path="res://.godot/imported/An-Imitation-of-Heaven.ogg-12654ddfdf5a8cd77d3da6d43ce88131.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Audio/BGM/An-Imitation-of-Heaven.ogg"
|
||||
dest_files=["res://.godot/imported/An-Imitation-of-Heaven.ogg-12654ddfdf5a8cd77d3da6d43ce88131.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=true
|
||||
loop_offset=0.0
|
||||
bpm=0.0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
BIN
Audio/BGM/BossTheme.ogg
Normal file
BIN
Audio/BGM/BossTheme.ogg
Normal file
Binary file not shown.
19
Audio/BGM/BossTheme.ogg.import
Normal file
19
Audio/BGM/BossTheme.ogg.import
Normal file
@@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://cb3wcnvvmogkh"
|
||||
path="res://.godot/imported/BossTheme.ogg-459b51256339e59464889a4669185554.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Audio/BGM/BossTheme.ogg"
|
||||
dest_files=["res://.godot/imported/BossTheme.ogg-459b51256339e59464889a4669185554.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=true
|
||||
loop_offset=0.0
|
||||
bpm=0.0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
BIN
Audio/BGM/GameEnding.ogg
Normal file
BIN
Audio/BGM/GameEnding.ogg
Normal file
Binary file not shown.
19
Audio/BGM/GameEnding.ogg.import
Normal file
19
Audio/BGM/GameEnding.ogg.import
Normal file
@@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://bjr3v62ssdsg8"
|
||||
path="res://.godot/imported/GameEnding.ogg-2b922cb2ed68cfb8198d59aa5e820136.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Audio/BGM/GameEnding.ogg"
|
||||
dest_files=["res://.godot/imported/GameEnding.ogg-2b922cb2ed68cfb8198d59aa5e820136.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
BIN
Audio/BGM/GameOverTheme.ogg
Normal file
BIN
Audio/BGM/GameOverTheme.ogg
Normal file
Binary file not shown.
19
Audio/BGM/GameOverTheme.ogg.import
Normal file
19
Audio/BGM/GameOverTheme.ogg.import
Normal file
@@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://bjiskpj5g86sr"
|
||||
path="res://.godot/imported/GameOverTheme.ogg-4305545c9f4c8e8c96ca0f12024e0581.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Audio/BGM/GameOverTheme.ogg"
|
||||
dest_files=["res://.godot/imported/GameOverTheme.ogg-4305545c9f4c8e8c96ca0f12024e0581.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
BIN
Audio/BGM/LevelTheme.ogg
Normal file
BIN
Audio/BGM/LevelTheme.ogg
Normal file
Binary file not shown.
19
Audio/BGM/LevelTheme.ogg.import
Normal file
19
Audio/BGM/LevelTheme.ogg.import
Normal file
@@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://bti387lu4dnfp"
|
||||
path="res://.godot/imported/LevelTheme.ogg-59eab2762fa29514e6a1603812a098df.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Audio/BGM/LevelTheme.ogg"
|
||||
dest_files=["res://.godot/imported/LevelTheme.ogg-59eab2762fa29514e6a1603812a098df.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=true
|
||||
loop_offset=0.0
|
||||
bpm=0.0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
BIN
Audio/BGM/OpeningTheme.ogg
Normal file
BIN
Audio/BGM/OpeningTheme.ogg
Normal file
Binary file not shown.
19
Audio/BGM/OpeningTheme.ogg.import
Normal file
19
Audio/BGM/OpeningTheme.ogg.import
Normal file
@@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://c1cot3ppc44rn"
|
||||
path="res://.godot/imported/OpeningTheme.ogg-3e12ca3ad85ca7dd71d6f3b774212a5d.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Audio/BGM/OpeningTheme.ogg"
|
||||
dest_files=["res://.godot/imported/OpeningTheme.ogg-3e12ca3ad85ca7dd71d6f3b774212a5d.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
BIN
Audio/BGM/TitleTheme.ogg
Normal file
BIN
Audio/BGM/TitleTheme.ogg
Normal file
Binary file not shown.
19
Audio/BGM/TitleTheme.ogg.import
Normal file
19
Audio/BGM/TitleTheme.ogg.import
Normal file
@@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://dgskdjt8opeep"
|
||||
path="res://.godot/imported/TitleTheme.ogg-955f1f76f6a13fdf046575d6a1db7cdb.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Audio/BGM/TitleTheme.ogg"
|
||||
dest_files=["res://.godot/imported/TitleTheme.ogg-955f1f76f6a13fdf046575d6a1db7cdb.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
BIN
Audio/SFX/Green Wave.wav
Normal file
BIN
Audio/SFX/Green Wave.wav
Normal file
Binary file not shown.
24
Audio/SFX/Green Wave.wav.import
Normal file
24
Audio/SFX/Green Wave.wav.import
Normal file
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://m8mvw8acs5sk"
|
||||
path="res://.godot/imported/Green Wave.wav-37c8c5d4e55a4f75373d32dea994cfb2.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Audio/SFX/Green Wave.wav"
|
||||
dest_files=["res://.godot/imported/Green Wave.wav-37c8c5d4e55a4f75373d32dea994cfb2.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
BIN
Audio/SFX/HitObstacle.wav
Normal file
BIN
Audio/SFX/HitObstacle.wav
Normal file
Binary file not shown.
24
Audio/SFX/HitObstacle.wav.import
Normal file
24
Audio/SFX/HitObstacle.wav.import
Normal file
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://6yf38ykqn31u"
|
||||
path="res://.godot/imported/HitObstacle.wav-1156edf3c0f09f2940143fa0f6a748cd.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Audio/SFX/HitObstacle.wav"
|
||||
dest_files=["res://.godot/imported/HitObstacle.wav-1156edf3c0f09f2940143fa0f6a748cd.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=true
|
||||
edit/normalize=true
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
BIN
Audio/SFX/blue laser.wav
Normal file
BIN
Audio/SFX/blue laser.wav
Normal file
Binary file not shown.
24
Audio/SFX/blue laser.wav.import
Normal file
24
Audio/SFX/blue laser.wav.import
Normal file
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://cw1jlubd7wmw6"
|
||||
path="res://.godot/imported/blue laser.wav-5e8b70a304fc5338c8524b97764b7983.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Audio/SFX/blue laser.wav"
|
||||
dest_files=["res://.godot/imported/blue laser.wav-5e8b70a304fc5338c8524b97764b7983.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
BIN
Audio/SFX/capricorn laeser.wav
Normal file
BIN
Audio/SFX/capricorn laeser.wav
Normal file
Binary file not shown.
24
Audio/SFX/capricorn laeser.wav.import
Normal file
24
Audio/SFX/capricorn laeser.wav.import
Normal file
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://bykwwct1not4e"
|
||||
path="res://.godot/imported/capricorn laeser.wav-e259c68bab0b4c7191a36ee3264b5080.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Audio/SFX/capricorn laeser.wav"
|
||||
dest_files=["res://.godot/imported/capricorn laeser.wav-e259c68bab0b4c7191a36ee3264b5080.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
BIN
Audio/SFX/fires of sinai.wav
Normal file
BIN
Audio/SFX/fires of sinai.wav
Normal file
Binary file not shown.
24
Audio/SFX/fires of sinai.wav.import
Normal file
24
Audio/SFX/fires of sinai.wav.import
Normal file
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://baom7a44bk3ga"
|
||||
path="res://.godot/imported/fires of sinai.wav-1a9ff5f1036ece37bc4917ce57d3bdc3.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Audio/SFX/fires of sinai.wav"
|
||||
dest_files=["res://.godot/imported/fires of sinai.wav-1a9ff5f1036ece37bc4917ce57d3bdc3.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
BIN
Audio/SFX/grass cutter.wav
Normal file
BIN
Audio/SFX/grass cutter.wav
Normal file
Binary file not shown.
24
Audio/SFX/grass cutter.wav.import
Normal file
24
Audio/SFX/grass cutter.wav.import
Normal file
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://ce40y3hln3twm"
|
||||
path="res://.godot/imported/grass cutter.wav-a1d064084e4b99441c81e6e9eff2171f.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Audio/SFX/grass cutter.wav"
|
||||
dest_files=["res://.godot/imported/grass cutter.wav-a1d064084e4b99441c81e6e9eff2171f.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
BIN
Audio/SFX/hit.ogg
Normal file
BIN
Audio/SFX/hit.ogg
Normal file
Binary file not shown.
19
Audio/SFX/hit.ogg.import
Normal file
19
Audio/SFX/hit.ogg.import
Normal file
@@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://fjla2rrw6ilt"
|
||||
path="res://.godot/imported/hit.ogg-2e022f04d34e894511a1026c55efba44.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Audio/SFX/hit.ogg"
|
||||
dest_files=["res://.godot/imported/hit.ogg-2e022f04d34e894511a1026c55efba44.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
BIN
Audio/SFX/midboss hurt.wav
Normal file
BIN
Audio/SFX/midboss hurt.wav
Normal file
Binary file not shown.
24
Audio/SFX/midboss hurt.wav.import
Normal file
24
Audio/SFX/midboss hurt.wav.import
Normal file
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://crto2nljfvqnm"
|
||||
path="res://.godot/imported/midboss hurt.wav-b768cd6fcf34fd0984547cddbaaf5a33.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Audio/SFX/midboss hurt.wav"
|
||||
dest_files=["res://.godot/imported/midboss hurt.wav-b768cd6fcf34fd0984547cddbaaf5a33.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
BIN
Audio/SFX/misc1.wav
Normal file
BIN
Audio/SFX/misc1.wav
Normal file
Binary file not shown.
24
Audio/SFX/misc1.wav.import
Normal file
24
Audio/SFX/misc1.wav.import
Normal file
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://cgun34h06gvpv"
|
||||
path="res://.godot/imported/misc1.wav-e68c4672f0116c612b7fe4a5dfb0747a.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Audio/SFX/misc1.wav"
|
||||
dest_files=["res://.godot/imported/misc1.wav-e68c4672f0116c612b7fe4a5dfb0747a.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
BIN
Audio/SFX/ominous.wav
Normal file
BIN
Audio/SFX/ominous.wav
Normal file
Binary file not shown.
24
Audio/SFX/ominous.wav.import
Normal file
24
Audio/SFX/ominous.wav.import
Normal file
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://cat08h84wm5gm"
|
||||
path="res://.godot/imported/ominous.wav-cb3b113d76b47064dc0bc8b7372966f4.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Audio/SFX/ominous.wav"
|
||||
dest_files=["res://.godot/imported/ominous.wav-cb3b113d76b47064dc0bc8b7372966f4.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
BIN
Audio/SFX/select.wav
Normal file
BIN
Audio/SFX/select.wav
Normal file
Binary file not shown.
24
Audio/SFX/select.wav.import
Normal file
24
Audio/SFX/select.wav.import
Normal file
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://cdps3mfvdxdud"
|
||||
path="res://.godot/imported/select.wav-2635c7b58e339437700447f3d280ad9e.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Audio/SFX/select.wav"
|
||||
dest_files=["res://.godot/imported/select.wav-2635c7b58e339437700447f3d280ad9e.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
BIN
Audio/SFX/shooting.wav
Normal file
BIN
Audio/SFX/shooting.wav
Normal file
Binary file not shown.
24
Audio/SFX/shooting.wav.import
Normal file
24
Audio/SFX/shooting.wav.import
Normal file
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://cfj82os5p8i4p"
|
||||
path="res://.godot/imported/shooting.wav-4967743545d2cccc1eb9a59a59c75130.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Audio/SFX/shooting.wav"
|
||||
dest_files=["res://.godot/imported/shooting.wav-4967743545d2cccc1eb9a59a59c75130.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
17
Audio/Scripts/BGMPlayer.cs
Normal file
17
Audio/Scripts/BGMPlayer.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using Godot;
|
||||
|
||||
public partial class BGMPlayer : AudioStreamPlayer
|
||||
{
|
||||
public void SetBGMFromFilepath(string path)
|
||||
{
|
||||
var audioStream = ResourceLoader.Load<AudioStream>(path);
|
||||
if (Stream != audioStream)
|
||||
Stream = audioStream;
|
||||
}
|
||||
|
||||
public void PlayBGM()
|
||||
{
|
||||
if (!Playing)
|
||||
Play();
|
||||
}
|
||||
}
|
||||
54
Enemies/Attacks/EnemyBullet.tscn
Normal file
54
Enemies/Attacks/EnemyBullet.tscn
Normal file
@@ -0,0 +1,54 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://rlxnnw4yay7e"]
|
||||
|
||||
[ext_resource type="Script" path="res://Player/Base/Projectile.cs" id="1_ex3g8"]
|
||||
[ext_resource type="Texture2D" uid="uid://dd71tdgrgic46" path="res://Textures/Projectiles/LB ORB.png" id="2_6l2aj"]
|
||||
|
||||
[sub_resource type="Curve3D" id="Curve3D_eve6n"]
|
||||
_data = {
|
||||
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, -3),
|
||||
"tilts": PackedFloat32Array(0, 0)
|
||||
}
|
||||
point_count = 2
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_e4v7f"]
|
||||
height = 2.72407
|
||||
radius = 0.154574
|
||||
|
||||
[node name="EnemyBullet" type="Path3D"]
|
||||
curve = SubResource("Curve3D_eve6n")
|
||||
script = ExtResource("1_ex3g8")
|
||||
|
||||
[node name="PathFollow3D" type="PathFollow3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
||||
loop = false
|
||||
tilt_enabled = false
|
||||
|
||||
[node name="RigidBody3D" type="RigidBody3D" parent="PathFollow3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
|
||||
collision_layer = 0
|
||||
collision_mask = 3
|
||||
gravity_scale = 0.0
|
||||
continuous_cd = true
|
||||
max_contacts_reported = 10
|
||||
contact_monitor = true
|
||||
can_sleep = false
|
||||
lock_rotation = true
|
||||
freeze = true
|
||||
freeze_mode = 1
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="PathFollow3D/RigidBody3D"]
|
||||
transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0.0111055, 1.02602, 0)
|
||||
shape = SubResource("CylinderShape3D_e4v7f")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="PathFollow3D/RigidBody3D/CollisionShape3D"]
|
||||
transform = Transform3D(0.08, 0, 0, 0, 0.08, 0, 0, 0, 0.08, -0.390424, 0, 0.436329)
|
||||
centered = false
|
||||
axis = 1
|
||||
texture = ExtResource("2_6l2aj")
|
||||
|
||||
[node name="TTL" type="Timer" parent="PathFollow3D"]
|
||||
process_callback = 0
|
||||
wait_time = 0.8
|
||||
autostart = true
|
||||
|
||||
[connection signal="body_entered" from="PathFollow3D/RigidBody3D" to="." method="OnPlayerHit"]
|
||||
33
Enemies/Attacks/FireAtPlayer.cs
Normal file
33
Enemies/Attacks/FireAtPlayer.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using System.Linq;
|
||||
using Godot;
|
||||
|
||||
public partial class FireAtPlayer : Timer
|
||||
{
|
||||
[Export]
|
||||
private BasicEnemy _enemy;
|
||||
[Export]
|
||||
private PackedScene _fireProjectile;
|
||||
[Export]
|
||||
private double _distanceToPlayer = 3;
|
||||
[Export]
|
||||
private AudioStreamPlayer _audioPlayer;
|
||||
|
||||
public void OnFireAtPlayer()
|
||||
{
|
||||
var players = GetTree().GetNodesInGroup("Player");
|
||||
if (players.Any())
|
||||
{
|
||||
var convertedPlayers = players.Select(x => (Node3D)x);
|
||||
var target = convertedPlayers.OrderBy(x => _enemy.Position.DistanceTo(x.Position)).FirstOrDefault();
|
||||
if (_enemy.Position.DistanceTo(target.Position) < _distanceToPlayer)
|
||||
{
|
||||
var projectile = _fireProjectile.Instantiate<Projectile>();
|
||||
projectile.Rotation = new Vector3(0, _enemy.Rotation.Y, 0);
|
||||
projectile.Position = _enemy.Position;
|
||||
AddChild(projectile);
|
||||
_audioPlayer.Play();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
19
Enemies/Attacks/GodCircuitAttacks/BossAttack.cs
Normal file
19
Enemies/Attacks/GodCircuitAttacks/BossAttack.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using Godot;
|
||||
|
||||
public partial class BossAttack : Node3D
|
||||
{
|
||||
public void OnOrbHit(Node node)
|
||||
{
|
||||
if (node is Character character && character.HasMethod(Character.MethodName.OnHit))
|
||||
{
|
||||
GD.Print("Player hit: " + character.Name);
|
||||
character.Call(Character.MethodName.OnHit, node);
|
||||
Delete();
|
||||
}
|
||||
}
|
||||
|
||||
public void Delete()
|
||||
{
|
||||
QueueFree();
|
||||
}
|
||||
}
|
||||
6
Enemies/Attacks/GodCircuitAttacks/GodCircuitAttacks.cs
Normal file
6
Enemies/Attacks/GodCircuitAttacks/GodCircuitAttacks.cs
Normal file
@@ -0,0 +1,6 @@
|
||||
using Godot;
|
||||
using Godot.Collections;
|
||||
|
||||
public partial class GodCircuitAttacks : Timer
|
||||
{
|
||||
}
|
||||
574
Enemies/Attacks/GodCircuitAttacks/HedronAttack.tscn
Normal file
574
Enemies/Attacks/GodCircuitAttacks/HedronAttack.tscn
Normal file
@@ -0,0 +1,574 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://b75khmojjbq4f"]
|
||||
|
||||
[ext_resource type="Script" path="res://Enemies/Attacks/GodCircuitAttacks/BossAttack.cs" id="1_xty5l"]
|
||||
[ext_resource type="Texture2D" uid="uid://cpvq0rru8k7l5" path="res://Textures/Projectiles/Layer 3.png" id="2_kceeh"]
|
||||
[ext_resource type="Texture2D" uid="uid://x8f4g1rccvud" path="res://Textures/Projectiles/Layer 4.png" id="3_1s7oj"]
|
||||
[ext_resource type="AudioStream" uid="uid://cfj82os5p8i4p" path="res://Audio/SFX/shooting.wav" id="4_h0ftg"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_8rgmo"]
|
||||
resource_name = "PyramidAttack"
|
||||
length = 8.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("MainOrb/CollisionShape3D:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 3),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 1, 0), Vector3(0, 1, 3)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("MainOrb/CollisionShape3D/Sprite3D:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 3),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, 0), Vector3(0, 6.26573, 0)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Triangle1/CollisionShape3D:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 3, 8),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, -2.01695), Vector3(0, 0, -2.01695), Vector3(15, 0, -2.017)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Triangle1:visible")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0, 3),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [false, true]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("Triangle2:visible")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 3),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [false, true]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("Triangle2/CollisionShape3D:position")
|
||||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(3, 8),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0.0265542, 0, -2.01695), Vector3(0.027, 0, -15)]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("Triangle3:visible")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0, 3),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [false, true]
|
||||
}
|
||||
tracks/7/type = "value"
|
||||
tracks/7/imported = false
|
||||
tracks/7/enabled = true
|
||||
tracks/7/path = NodePath("Triangle3/CollisionShape3D:position")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(3, 8),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, -2.01695), Vector3(-15, 0, -2.017)]
|
||||
}
|
||||
tracks/8/type = "value"
|
||||
tracks/8/imported = false
|
||||
tracks/8/enabled = true
|
||||
tracks/8/path = NodePath("Triangle4:visible")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0, 3),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [false, true]
|
||||
}
|
||||
tracks/9/type = "value"
|
||||
tracks/9/imported = false
|
||||
tracks/9/enabled = true
|
||||
tracks/9/path = NodePath("Triangle4/CollisionShape3D:position")
|
||||
tracks/9/interp = 1
|
||||
tracks/9/loop_wrap = true
|
||||
tracks/9/keys = {
|
||||
"times": PackedFloat32Array(3, 8),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, -2.01695), Vector3(0, 0, 13)]
|
||||
}
|
||||
tracks/10/type = "method"
|
||||
tracks/10/imported = false
|
||||
tracks/10/enabled = true
|
||||
tracks/10/path = NodePath("MainOrb")
|
||||
tracks/10/interp = 1
|
||||
tracks/10/loop_wrap = true
|
||||
tracks/10/keys = {
|
||||
"times": PackedFloat32Array(2.9),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"values": [{
|
||||
"args": [],
|
||||
"method": &"Delete"
|
||||
}]
|
||||
}
|
||||
tracks/11/type = "value"
|
||||
tracks/11/imported = false
|
||||
tracks/11/enabled = true
|
||||
tracks/11/path = NodePath("Triangle1:monitoring")
|
||||
tracks/11/interp = 1
|
||||
tracks/11/loop_wrap = true
|
||||
tracks/11/keys = {
|
||||
"times": PackedFloat32Array(0, 3.2),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [false, true]
|
||||
}
|
||||
tracks/12/type = "value"
|
||||
tracks/12/imported = false
|
||||
tracks/12/enabled = true
|
||||
tracks/12/path = NodePath("Triangle1:monitorable")
|
||||
tracks/12/interp = 1
|
||||
tracks/12/loop_wrap = true
|
||||
tracks/12/keys = {
|
||||
"times": PackedFloat32Array(0, 3.2),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [false, true]
|
||||
}
|
||||
tracks/13/type = "value"
|
||||
tracks/13/imported = false
|
||||
tracks/13/enabled = true
|
||||
tracks/13/path = NodePath("Triangle2:monitoring")
|
||||
tracks/13/interp = 1
|
||||
tracks/13/loop_wrap = true
|
||||
tracks/13/keys = {
|
||||
"times": PackedFloat32Array(0, 3.2),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [false, true]
|
||||
}
|
||||
tracks/14/type = "value"
|
||||
tracks/14/imported = false
|
||||
tracks/14/enabled = true
|
||||
tracks/14/path = NodePath("Triangle2:monitorable")
|
||||
tracks/14/interp = 1
|
||||
tracks/14/loop_wrap = true
|
||||
tracks/14/keys = {
|
||||
"times": PackedFloat32Array(0, 3.2),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [false, true]
|
||||
}
|
||||
tracks/15/type = "value"
|
||||
tracks/15/imported = false
|
||||
tracks/15/enabled = true
|
||||
tracks/15/path = NodePath("Triangle3:monitoring")
|
||||
tracks/15/interp = 1
|
||||
tracks/15/loop_wrap = true
|
||||
tracks/15/keys = {
|
||||
"times": PackedFloat32Array(0, 3.2),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [false, true]
|
||||
}
|
||||
tracks/16/type = "value"
|
||||
tracks/16/imported = false
|
||||
tracks/16/enabled = true
|
||||
tracks/16/path = NodePath("Triangle3:monitorable")
|
||||
tracks/16/interp = 1
|
||||
tracks/16/loop_wrap = true
|
||||
tracks/16/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/17/type = "value"
|
||||
tracks/17/imported = false
|
||||
tracks/17/enabled = true
|
||||
tracks/17/path = NodePath("Triangle4:monitoring")
|
||||
tracks/17/interp = 1
|
||||
tracks/17/loop_wrap = true
|
||||
tracks/17/keys = {
|
||||
"times": PackedFloat32Array(0, 3.2),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [false, true]
|
||||
}
|
||||
tracks/18/type = "value"
|
||||
tracks/18/imported = false
|
||||
tracks/18/enabled = true
|
||||
tracks/18/path = NodePath("Triangle4:monitorable")
|
||||
tracks/18/interp = 1
|
||||
tracks/18/loop_wrap = true
|
||||
tracks/18/keys = {
|
||||
"times": PackedFloat32Array(0, 3.2),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [false, true]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_js2kt"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("MainOrb/CollisionShape3D:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 1, 0)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("MainOrb/CollisionShape3D/Sprite3D:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 6.26573, 0)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Triangle1/CollisionShape3D:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, -2.01695)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Triangle1:visible")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("Triangle2:visible")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("Triangle2/CollisionShape3D:position")
|
||||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0.0265542, 0, -2.01695)]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("Triangle3:visible")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/7/type = "value"
|
||||
tracks/7/imported = false
|
||||
tracks/7/enabled = true
|
||||
tracks/7/path = NodePath("Triangle3/CollisionShape3D:position")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, -2.01695)]
|
||||
}
|
||||
tracks/8/type = "value"
|
||||
tracks/8/imported = false
|
||||
tracks/8/enabled = true
|
||||
tracks/8/path = NodePath("Triangle4:visible")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/9/type = "value"
|
||||
tracks/9/imported = false
|
||||
tracks/9/enabled = true
|
||||
tracks/9/path = NodePath("Triangle4/CollisionShape3D:position")
|
||||
tracks/9/interp = 1
|
||||
tracks/9/loop_wrap = true
|
||||
tracks/9/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, -2.01695)]
|
||||
}
|
||||
tracks/10/type = "value"
|
||||
tracks/10/imported = false
|
||||
tracks/10/enabled = true
|
||||
tracks/10/path = NodePath("Triangle1:monitoring")
|
||||
tracks/10/interp = 1
|
||||
tracks/10/loop_wrap = true
|
||||
tracks/10/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/11/type = "value"
|
||||
tracks/11/imported = false
|
||||
tracks/11/enabled = true
|
||||
tracks/11/path = NodePath("Triangle1:monitorable")
|
||||
tracks/11/interp = 1
|
||||
tracks/11/loop_wrap = true
|
||||
tracks/11/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/12/type = "value"
|
||||
tracks/12/imported = false
|
||||
tracks/12/enabled = true
|
||||
tracks/12/path = NodePath("Triangle2:monitoring")
|
||||
tracks/12/interp = 1
|
||||
tracks/12/loop_wrap = true
|
||||
tracks/12/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/13/type = "value"
|
||||
tracks/13/imported = false
|
||||
tracks/13/enabled = true
|
||||
tracks/13/path = NodePath("Triangle2:monitorable")
|
||||
tracks/13/interp = 1
|
||||
tracks/13/loop_wrap = true
|
||||
tracks/13/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/14/type = "value"
|
||||
tracks/14/imported = false
|
||||
tracks/14/enabled = true
|
||||
tracks/14/path = NodePath("Triangle3:monitoring")
|
||||
tracks/14/interp = 1
|
||||
tracks/14/loop_wrap = true
|
||||
tracks/14/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/15/type = "value"
|
||||
tracks/15/imported = false
|
||||
tracks/15/enabled = true
|
||||
tracks/15/path = NodePath("Triangle3:monitorable")
|
||||
tracks/15/interp = 1
|
||||
tracks/15/loop_wrap = true
|
||||
tracks/15/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/16/type = "value"
|
||||
tracks/16/imported = false
|
||||
tracks/16/enabled = true
|
||||
tracks/16/path = NodePath("Triangle4:monitoring")
|
||||
tracks/16/interp = 1
|
||||
tracks/16/loop_wrap = true
|
||||
tracks/16/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/17/type = "value"
|
||||
tracks/17/imported = false
|
||||
tracks/17/enabled = true
|
||||
tracks/17/path = NodePath("Triangle4:monitorable")
|
||||
tracks/17/interp = 1
|
||||
tracks/17/loop_wrap = true
|
||||
tracks/17/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_ht5d6"]
|
||||
_data = {
|
||||
"PyramidAttack": SubResource("Animation_8rgmo"),
|
||||
"RESET": SubResource("Animation_js2kt")
|
||||
}
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_uh2on"]
|
||||
radius = 0.266805
|
||||
|
||||
[node name="HedronAttack" type="Node3D"]
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
autoplay = "PyramidAttack"
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_ht5d6")
|
||||
}
|
||||
|
||||
[node name="MainOrb" type="Area3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.710665)
|
||||
collision_layer = 0
|
||||
collision_mask = 2
|
||||
script = ExtResource("1_xty5l")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="MainOrb"]
|
||||
transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0, 1, 0)
|
||||
shape = SubResource("CylinderShape3D_uh2on")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="MainOrb/CollisionShape3D"]
|
||||
transform = Transform3D(0.499924, 0, -0.00872726, 0, 0.5, 0, 0.00872726, 0, 0.499924, 0, 0, 0)
|
||||
axis = 1
|
||||
texture = ExtResource("2_kceeh")
|
||||
|
||||
[node name="Triangle1" type="Area3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.234726, 1, 5.74115)
|
||||
visible = false
|
||||
collision_layer = 0
|
||||
collision_mask = 2
|
||||
monitoring = false
|
||||
monitorable = false
|
||||
script = ExtResource("1_xty5l")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Triangle1"]
|
||||
transform = Transform3D(-0.107302, 0, -0.590327, 0, 0.6, 0, 0.590327, 0, -0.107302, 0, 0, -2.01695)
|
||||
shape = SubResource("CylinderShape3D_uh2on")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="Triangle1/CollisionShape3D"]
|
||||
transform = Transform3D(0.499924, 0, -0.00872631, 0, 0.5, 0, 0.00872631, 0, 0.499924, 0, 0, 0)
|
||||
axis = 1
|
||||
texture = ExtResource("3_1s7oj")
|
||||
|
||||
[node name="Triangle2" type="Area3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 5.48792)
|
||||
visible = false
|
||||
collision_layer = 0
|
||||
collision_mask = 2
|
||||
monitoring = false
|
||||
monitorable = false
|
||||
script = ExtResource("1_xty5l")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Triangle2"]
|
||||
transform = Transform3D(0.592349, 0, -0.0955152, 0, 0.6, 0, 0.0955152, 0, 0.592349, 0.0265542, 0, -2.01695)
|
||||
shape = SubResource("CylinderShape3D_uh2on")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="Triangle2/CollisionShape3D"]
|
||||
transform = Transform3D(0.499924, 0, -0.0087263, 0, 0.5, 0, 0.0087263, 0, 0.499924, 0, 0, 0)
|
||||
axis = 1
|
||||
texture = ExtResource("3_1s7oj")
|
||||
|
||||
[node name="Triangle3" type="Area3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.230226, 1, 5.64647)
|
||||
visible = false
|
||||
collision_layer = 0
|
||||
collision_mask = 2
|
||||
monitoring = false
|
||||
monitorable = false
|
||||
script = ExtResource("1_xty5l")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Triangle3"]
|
||||
transform = Transform3D(0.119939, 0, 0.58789, 0, 0.6, 0, -0.58789, 0, 0.119939, 0, 0, -2.01695)
|
||||
shape = SubResource("CylinderShape3D_uh2on")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="Triangle3/CollisionShape3D"]
|
||||
transform = Transform3D(0.499924, 0, -0.0087263, 0, 0.5, 0, 0.0087263, 0, 0.499924, 0, 0, 0)
|
||||
axis = 1
|
||||
texture = ExtResource("3_1s7oj")
|
||||
|
||||
[node name="Triangle4" type="Area3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 5.94482)
|
||||
visible = false
|
||||
collision_layer = 0
|
||||
collision_mask = 2
|
||||
monitoring = false
|
||||
monitorable = false
|
||||
script = ExtResource("1_xty5l")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Triangle4"]
|
||||
transform = Transform3D(-0.599587, 0, 0.0222583, 0, 0.6, 0, -0.0222583, 0, -0.599587, 0, 0, -2.01695)
|
||||
shape = SubResource("CylinderShape3D_uh2on")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="Triangle4/CollisionShape3D"]
|
||||
transform = Transform3D(0.499924, 0, -0.0087263, 0, 0.5, 0, 0.0087263, 0, 0.499924, 0, 0, 0)
|
||||
axis = 1
|
||||
texture = ExtResource("3_1s7oj")
|
||||
|
||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource("4_h0ftg")
|
||||
volume_db = 10.0
|
||||
autoplay = true
|
||||
|
||||
[connection signal="body_entered" from="MainOrb" to="MainOrb" method="OnOrbHit"]
|
||||
[connection signal="body_entered" from="Triangle1" to="Triangle1" method="OnOrbHit"]
|
||||
[connection signal="body_entered" from="Triangle2" to="Triangle2" method="OnOrbHit"]
|
||||
[connection signal="body_entered" from="Triangle3" to="Triangle3" method="OnOrbHit"]
|
||||
[connection signal="body_entered" from="Triangle4" to="Triangle4" method="OnOrbHit"]
|
||||
59
Enemies/Attacks/GodCircuitAttacks/LaserAttack.tscn
Normal file
59
Enemies/Attacks/GodCircuitAttacks/LaserAttack.tscn
Normal file
@@ -0,0 +1,59 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://uwia12i7yykb"]
|
||||
|
||||
[ext_resource type="Script" path="res://Player/Base/Projectile.cs" id="1_4uor3"]
|
||||
[ext_resource type="Texture2D" uid="uid://bunon01jmxhbx" path="res://Textures/Projectiles/Layer 2.png" id="1_a70u8"]
|
||||
[ext_resource type="AudioStream" uid="uid://cgun34h06gvpv" path="res://Audio/SFX/misc1.wav" id="3_vxciy"]
|
||||
|
||||
[sub_resource type="Curve3D" id="Curve3D_n05rs"]
|
||||
_data = {
|
||||
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, -2, 1, 2, 0, 0, 0, 0, 0, 0, -2, 1, 3, 0, 0, 0, 0, 0, 0, 2, 1, 3, 0, 0, 0, 0, 0, 0, 2, 1, 4, 0, 0, 0, 0, 0, 0, -4, 1, 4, 0, 0, 0, 0, 0, 0, -4, 1, 5, 0, 0, 0, 0, 0, 0, 1, 1, 5, 0, 0, 0, 0, 0, 0, 1, 1, 10),
|
||||
"tilts": PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
}
|
||||
point_count = 10
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_g5fdd"]
|
||||
size = Vector3(0.553759, 1.22067, 1.58866)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8nabx"]
|
||||
vertex_color_use_as_albedo = true
|
||||
albedo_color = Color(0.47451, 0.0196078, 0.0862745, 1)
|
||||
emission = Color(0.905882, 0.254902, 0, 1)
|
||||
emission_energy_multiplier = 19.32
|
||||
subsurf_scatter_strength = 0.07
|
||||
backlight = Color(1, 0, 0, 1)
|
||||
|
||||
[node name="Path3D" type="Path3D"]
|
||||
curve = SubResource("Curve3D_n05rs")
|
||||
script = ExtResource("1_4uor3")
|
||||
_projectileSpeed = 5.0
|
||||
|
||||
[node name="PathFollow3D" type="PathFollow3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -1.50996e-07, 0, 1, 0, 1.50996e-07, 0, -1, 1, 1, 10)
|
||||
progress = 27.0
|
||||
|
||||
[node name="RigidBody3D" type="RigidBody3D" parent="PathFollow3D"]
|
||||
collision_layer = 0
|
||||
collision_mask = 2
|
||||
gravity_scale = 0.0
|
||||
continuous_cd = true
|
||||
max_contacts_reported = 5
|
||||
contact_monitor = true
|
||||
can_sleep = false
|
||||
freeze_mode = 1
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="PathFollow3D/RigidBody3D"]
|
||||
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
|
||||
shape = SubResource("BoxShape3D_g5fdd")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="PathFollow3D/RigidBody3D/CollisionShape3D"]
|
||||
transform = Transform3D(-2.18557e-08, 0, 0.5, 0, 0.5, 0, -0.5, 0, -2.18557e-08, 0, 0, 0)
|
||||
material_override = SubResource("StandardMaterial3D_8nabx")
|
||||
modulate = Color(0.901961, 0.12549, 0.34902, 1)
|
||||
axis = 1
|
||||
texture = ExtResource("1_a70u8")
|
||||
|
||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource("3_vxciy")
|
||||
autoplay = true
|
||||
|
||||
[connection signal="body_entered" from="PathFollow3D/RigidBody3D" to="." method="OnPlayerHit"]
|
||||
34
Enemies/Attacks/GodCircuitAttacks/PyramidAttack.cs
Normal file
34
Enemies/Attacks/GodCircuitAttacks/PyramidAttack.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
using Godot;
|
||||
|
||||
public partial class PyramidAttack : Node3D
|
||||
{
|
||||
[Export]
|
||||
private AnimationPlayer _animationPlayer;
|
||||
|
||||
private bool isDeleted = false;
|
||||
|
||||
public override void _EnterTree()
|
||||
{
|
||||
_animationPlayer.AnimationFinished += Delete;
|
||||
}
|
||||
public void OnPlayerHit(Node node)
|
||||
{
|
||||
SetPhysicsProcess(false);
|
||||
|
||||
if (node is Character character && character.HasMethod(Character.MethodName.OnHit))
|
||||
{
|
||||
GD.Print("Player hit: " + character.Name);
|
||||
character.Call(Character.MethodName.OnHit, this);
|
||||
}
|
||||
|
||||
QueueFree();
|
||||
isDeleted = true;
|
||||
}
|
||||
|
||||
public void Delete(StringName name)
|
||||
{
|
||||
if (!isDeleted)
|
||||
QueueFree();
|
||||
isDeleted = true;
|
||||
}
|
||||
}
|
||||
276
Enemies/Attacks/GodCircuitAttacks/PyramidAttack.tscn
Normal file
276
Enemies/Attacks/GodCircuitAttacks/PyramidAttack.tscn
Normal file
@@ -0,0 +1,276 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://cql4evq5281n4"]
|
||||
|
||||
[ext_resource type="Script" path="res://Enemies/Attacks/GodCircuitAttacks/PyramidAttack.cs" id="1_yfldc"]
|
||||
[ext_resource type="Texture2D" uid="uid://531b68bg4tn6" path="res://Textures/Projectiles/Layer 1.png" id="2_lufet"]
|
||||
[ext_resource type="AudioStream" uid="uid://cgun34h06gvpv" path="res://Audio/SFX/misc1.wav" id="3_6crjs"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_8rgmo"]
|
||||
resource_name = "PyramidAttack"
|
||||
length = 2.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Center/CollisionShape3D:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 2),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 1, 0), Vector3(0, 1, 3)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Center/CollisionShape3D:scale")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 2),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0.3, 0.3, 0.3), Vector3(1, 1, 1)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Left/CollisionShape3D:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 2),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 1, 0), Vector3(0, 1, 3)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Left/CollisionShape3D:scale")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0, 2),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0.3, 0.3, 0.3), Vector3(1, 1, 1)]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("Right/CollisionShape3D:position")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 2),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 1, 0), Vector3(0, 1, 3)]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("Right/CollisionShape3D:scale")
|
||||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0, 2),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0.3, 0, 0), Vector3(1, 1, 1)]
|
||||
}
|
||||
tracks/6/type = "audio"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("AudioStreamPlayer")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"clips": [],
|
||||
"times": PackedFloat32Array()
|
||||
}
|
||||
tracks/6/use_blend = true
|
||||
tracks/7/type = "value"
|
||||
tracks/7/imported = false
|
||||
tracks/7/enabled = true
|
||||
tracks/7/path = NodePath("AudioStreamPlayer:playing")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0, 1.9),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_js2kt"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Center/CollisionShape3D:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 1, 0)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Center/CollisionShape3D:scale")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(1, 1, 1)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Left/CollisionShape3D:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 1, 0)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Left/CollisionShape3D:scale")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(1, 1, 1)]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("Right/CollisionShape3D:position")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 1, 0)]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("Right/CollisionShape3D:scale")
|
||||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(1, 1, 1)]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("AudioStreamPlayer:playing")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_ht5d6"]
|
||||
_data = {
|
||||
"PyramidAttack": SubResource("Animation_8rgmo"),
|
||||
"RESET": SubResource("Animation_js2kt")
|
||||
}
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_uh2on"]
|
||||
radius = 0.266805
|
||||
|
||||
[node name="PyramidAttack" type="Node3D" node_paths=PackedStringArray("_animationPlayer")]
|
||||
script = ExtResource("1_yfldc")
|
||||
_animationPlayer = NodePath("AnimationPlayer")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
autoplay = "PyramidAttack"
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_ht5d6")
|
||||
}
|
||||
|
||||
[node name="Center" type="RigidBody3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.710665)
|
||||
collision_layer = 0
|
||||
collision_mask = 2
|
||||
gravity_scale = 0.0
|
||||
continuous_cd = true
|
||||
max_contacts_reported = 5
|
||||
contact_monitor = true
|
||||
can_sleep = false
|
||||
freeze_mode = 1
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Center"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
||||
shape = SubResource("CylinderShape3D_uh2on")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="Center/CollisionShape3D"]
|
||||
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0)
|
||||
axis = 1
|
||||
texture = ExtResource("2_lufet")
|
||||
|
||||
[node name="Left" type="RigidBody3D" parent="."]
|
||||
transform = Transform3D(0.939692, 0, 0.34202, 0, 1, 0, -0.34202, 0, 0.939692, 0, 0, 0.710665)
|
||||
collision_layer = 0
|
||||
collision_mask = 2
|
||||
gravity_scale = 0.0
|
||||
continuous_cd = true
|
||||
max_contacts_reported = 5
|
||||
contact_monitor = true
|
||||
can_sleep = false
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Left"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
||||
shape = SubResource("CylinderShape3D_uh2on")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="Left/CollisionShape3D"]
|
||||
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0)
|
||||
axis = 1
|
||||
texture = ExtResource("2_lufet")
|
||||
|
||||
[node name="Right" type="RigidBody3D" parent="."]
|
||||
transform = Transform3D(0.939692, 0, -0.34202, 0, 1, 0, 0.34202, 0, 0.939692, 0, 0, 0.710665)
|
||||
collision_layer = 0
|
||||
collision_mask = 2
|
||||
gravity_scale = 0.0
|
||||
continuous_cd = true
|
||||
max_contacts_reported = 5
|
||||
contact_monitor = true
|
||||
can_sleep = false
|
||||
freeze_mode = 1
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Right"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
||||
shape = SubResource("CylinderShape3D_uh2on")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="Right/CollisionShape3D"]
|
||||
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0)
|
||||
axis = 1
|
||||
texture = ExtResource("2_lufet")
|
||||
|
||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource("3_6crjs")
|
||||
|
||||
[connection signal="body_entered" from="Center" to="." method="OnPlayerHit"]
|
||||
[connection signal="body_entered" from="Left" to="." method="OnPlayerHit"]
|
||||
[connection signal="body_entered" from="Right" to="." method="OnPlayerHit"]
|
||||
273
Enemies/GodCircuit.tscn
Normal file
273
Enemies/GodCircuit.tscn
Normal file
@@ -0,0 +1,273 @@
|
||||
[gd_scene load_steps=15 format=3 uid="uid://brbshysbgd47q"]
|
||||
|
||||
[ext_resource type="Script" path="res://Enemies/Scripts/GodCircuit.cs" id="1_gyfww"]
|
||||
[ext_resource type="Texture2D" uid="uid://b41ur7kyd8vdl" path="res://Levels/Models/Stage10/god circuit stage 1_image.png" id="2_2fhjk"]
|
||||
[ext_resource type="Shader" path="res://Levels/Scenes/Door.gdshader" id="3_05w5o"]
|
||||
[ext_resource type="AudioStream" uid="uid://cat08h84wm5gm" path="res://Audio/SFX/ominous.wav" id="3_yengs"]
|
||||
[ext_resource type="AudioStream" uid="uid://crto2nljfvqnm" path="res://Audio/SFX/midboss hurt.wav" id="4_kc3iq"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_qiplh"]
|
||||
resource_name = "OnDeath"
|
||||
length = 6.5
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("StaticBody3D/god circuit stage 1/Cube:layers")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.1),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [1, 0]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("StaticBody3D/god circuit stage 1/Cube2:layers")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 0.1),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"values": [0, 1]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("StaticBody3D/god circuit stage 1/Cube2:transparency")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0.1, 3.2),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 0.5]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("AudioStreamPlayer:playing")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_n85p2"]
|
||||
resource_name = "OnHit"
|
||||
length = 0.5
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("StaticBody3D/god circuit stage 1/Cube:layers")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.1, 0.3),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 1,
|
||||
"values": [1, 0, 1]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("StaticBody3D/god circuit stage 1/Cube2:layers")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 0.1, 0.3),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 1,
|
||||
"values": [0, 1, 0]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("AudioStreamPlayer:playing")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("AudioStreamPlayer:stream")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [ExtResource("4_kc3iq")]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_47f75"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("StaticBody3D/god circuit stage 1/Cube:layers")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [1]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("StaticBody3D/god circuit stage 1/Cube2:layers")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [0]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("AudioStreamPlayer:playing")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("AudioStreamPlayer:stream")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [ExtResource("3_yengs")]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("StaticBody3D/god circuit stage 1/Cube2:transparency")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [0.0]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_qiwcq"]
|
||||
_data = {
|
||||
"OnDeath": SubResource("Animation_qiplh"),
|
||||
"OnHit": SubResource("Animation_n85p2"),
|
||||
"RESET": SubResource("Animation_47f75")
|
||||
}
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_n2erm"]
|
||||
size = Vector3(2.89997, 1, 5.5749)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7b0kx"]
|
||||
resource_name = "Material.001"
|
||||
cull_mode = 2
|
||||
vertex_color_use_as_albedo = true
|
||||
albedo_texture = ExtResource("2_2fhjk")
|
||||
metallic_specular = 0.0
|
||||
|
||||
[sub_resource type="ArrayMesh" id="ArrayMesh_f3cka"]
|
||||
_surfaces = [{
|
||||
"aabb": AABB(-1, -1, -1, 2.66138, 0.649563, 5.00824),
|
||||
"format": 4097,
|
||||
"index_count": 36,
|
||||
"index_data": PackedByteArray(0, 0, 3, 0, 1, 0, 0, 0, 2, 0, 3, 0, 2, 0, 7, 0, 3, 0, 2, 0, 6, 0, 7, 0, 6, 0, 5, 0, 7, 0, 6, 0, 4, 0, 5, 0, 4, 0, 1, 0, 5, 0, 4, 0, 0, 0, 1, 0, 2, 0, 4, 0, 6, 0, 2, 0, 0, 0, 4, 0, 7, 0, 1, 0, 3, 0, 7, 0, 5, 0, 1, 0),
|
||||
"name": "Material.001",
|
||||
"primitive": 3,
|
||||
"vertex_count": 8,
|
||||
"vertex_data": PackedByteArray(0, 0, 128, 191, 0, 0, 128, 191, 108, 67, 128, 64, 0, 0, 128, 191, 108, 108, 179, 190, 108, 67, 128, 64, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 108, 108, 179, 190, 0, 0, 128, 191, 59, 168, 212, 63, 0, 0, 128, 191, 108, 67, 128, 64, 59, 168, 212, 63, 108, 108, 179, 190, 108, 67, 128, 64, 59, 168, 212, 63, 0, 0, 128, 191, 0, 0, 128, 191, 59, 168, 212, 63, 108, 108, 179, 190, 0, 0, 128, 191)
|
||||
}]
|
||||
blend_shape_mode = 0
|
||||
|
||||
[sub_resource type="ArrayMesh" id="ArrayMesh_vv6dc"]
|
||||
resource_name = "god circuit stage 1_Cube_001"
|
||||
_surfaces = [{
|
||||
"aabb": AABB(-1, -1, -1, 2.66138, 0.649563, 5.00824),
|
||||
"attribute_data": PackedByteArray(0, 124, 90, 63, 49, 24, 1, 63, 0, 0, 0, 62, 0, 0, 128, 62, 72, 98, 91, 63, 194, 196, 208, 62, 207, 12, 103, 63, 49, 24, 1, 63, 170, 9, 117, 63, 194, 196, 208, 62, 63, 130, 124, 63, 128, 33, 235, 59, 0, 124, 90, 63, 196, 14, 233, 62, 0, 0, 0, 62, 0, 0, 0, 63, 86, 189, 87, 63, 192, 129, 255, 62, 207, 12, 103, 63, 196, 14, 233, 62, 120, 203, 105, 63, 192, 129, 255, 62, 52, 130, 124, 63, 189, 41, 126, 63, 0, 0, 192, 62, 0, 0, 128, 62, 72, 98, 91, 63, 196, 9, 2, 63, 152, 41, 82, 63, 206, 91, 210, 62, 170, 9, 117, 63, 196, 9, 2, 63, 32, 56, 40, 60, 128, 33, 235, 59, 212, 104, 106, 63, 206, 91, 210, 62, 0, 0, 192, 62, 0, 0, 0, 63, 86, 189, 87, 63, 122, 101, 219, 62, 152, 41, 82, 63, 34, 109, 1, 63, 120, 203, 105, 63, 122, 101, 219, 62, 64, 54, 40, 60, 189, 41, 126, 63, 212, 104, 106, 63, 34, 109, 1, 63),
|
||||
"format": 4119,
|
||||
"index_count": 36,
|
||||
"index_data": PackedByteArray(0, 0, 9, 0, 3, 0, 0, 0, 6, 0, 9, 0, 8, 0, 21, 0, 10, 0, 8, 0, 19, 0, 21, 0, 20, 0, 17, 0, 23, 0, 20, 0, 14, 0, 17, 0, 13, 0, 4, 0, 15, 0, 13, 0, 2, 0, 4, 0, 7, 0, 12, 0, 18, 0, 7, 0, 1, 0, 12, 0, 22, 0, 5, 0, 11, 0, 22, 0, 16, 0, 5, 0),
|
||||
"material": SubResource("StandardMaterial3D_7b0kx"),
|
||||
"name": "Material.001",
|
||||
"primitive": 3,
|
||||
"vertex_count": 24,
|
||||
"vertex_data": PackedByteArray(0, 0, 128, 191, 0, 0, 128, 191, 108, 67, 128, 64, 0, 0, 255, 127, 255, 127, 255, 255, 0, 0, 128, 191, 0, 0, 128, 191, 108, 67, 128, 64, 255, 127, 0, 0, 255, 255, 255, 191, 0, 0, 128, 191, 0, 0, 128, 191, 108, 67, 128, 64, 255, 127, 255, 127, 255, 127, 255, 255, 0, 0, 128, 191, 108, 108, 179, 190, 108, 67, 128, 64, 0, 0, 255, 127, 255, 127, 255, 255, 0, 0, 128, 191, 108, 108, 179, 190, 108, 67, 128, 64, 255, 127, 255, 127, 255, 127, 255, 255, 0, 0, 128, 191, 108, 108, 179, 190, 108, 67, 128, 64, 255, 127, 255, 255, 0, 0, 255, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 255, 127, 255, 127, 255, 255, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 255, 127, 0, 0, 255, 255, 255, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 255, 255, 255, 255, 255, 127, 255, 255, 0, 0, 128, 191, 108, 108, 179, 190, 0, 0, 128, 191, 0, 0, 255, 127, 255, 127, 255, 255, 0, 0, 128, 191, 108, 108, 179, 190, 0, 0, 128, 191, 255, 255, 255, 255, 255, 127, 255, 255, 0, 0, 128, 191, 108, 108, 179, 190, 0, 0, 128, 191, 255, 127, 255, 255, 0, 0, 255, 191, 59, 168, 212, 63, 0, 0, 128, 191, 108, 67, 128, 64, 255, 127, 0, 0, 255, 255, 255, 191, 59, 168, 212, 63, 0, 0, 128, 191, 108, 67, 128, 64, 255, 127, 255, 127, 255, 127, 255, 255, 59, 168, 212, 63, 0, 0, 128, 191, 108, 67, 128, 64, 255, 255, 255, 127, 255, 127, 255, 255, 59, 168, 212, 63, 108, 108, 179, 190, 108, 67, 128, 64, 255, 127, 255, 127, 255, 127, 255, 255, 59, 168, 212, 63, 108, 108, 179, 190, 108, 67, 128, 64, 255, 127, 255, 255, 0, 0, 255, 191, 59, 168, 212, 63, 108, 108, 179, 190, 108, 67, 128, 64, 255, 255, 255, 127, 255, 127, 255, 255, 59, 168, 212, 63, 0, 0, 128, 191, 0, 0, 128, 191, 255, 127, 0, 0, 255, 255, 255, 191, 59, 168, 212, 63, 0, 0, 128, 191, 0, 0, 128, 191, 255, 255, 255, 255, 255, 127, 255, 255, 59, 168, 212, 63, 0, 0, 128, 191, 0, 0, 128, 191, 255, 255, 255, 127, 255, 127, 255, 255, 59, 168, 212, 63, 108, 108, 179, 190, 0, 0, 128, 191, 255, 255, 255, 255, 255, 127, 255, 255, 59, 168, 212, 63, 108, 108, 179, 190, 0, 0, 128, 191, 255, 127, 255, 255, 0, 0, 255, 191, 59, 168, 212, 63, 108, 108, 179, 190, 0, 0, 128, 191, 255, 255, 255, 127, 255, 127, 255, 255)
|
||||
}]
|
||||
blend_shape_mode = 0
|
||||
shadow_mesh = SubResource("ArrayMesh_f3cka")
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_aqrc7"]
|
||||
render_priority = 0
|
||||
shader = ExtResource("3_05w5o")
|
||||
|
||||
[node name="God Circuit" type="Node3D" node_paths=PackedStringArray("_animationPlayer")]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.877012, 0.480468, 0, -0.480468, 0.877012, 0, 1.29734, 0)
|
||||
script = ExtResource("1_gyfww")
|
||||
_animationPlayer = NodePath("AnimationPlayer")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_qiwcq")
|
||||
}
|
||||
|
||||
[node name="StaticBody3D" type="RigidBody3D" parent="."]
|
||||
transform = Transform3D(-1, 7.54979e-08, -7.54979e-08, -7.54979e-08, 0, 1, 7.54979e-08, 1, 0, 0, 0, 0)
|
||||
collision_layer = 0
|
||||
collision_mask = 72
|
||||
continuous_cd = true
|
||||
max_contacts_reported = 1
|
||||
contact_monitor = true
|
||||
can_sleep = false
|
||||
freeze = true
|
||||
freeze_mode = 1
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 4.30333e-22, 0, 1, 0.317906, -0.678684, 1.59406)
|
||||
shape = SubResource("BoxShape3D_n2erm")
|
||||
|
||||
[node name="god circuit stage 1" type="Node3D" parent="StaticBody3D"]
|
||||
transform = Transform3D(-1, -7.54979e-08, 7.54979e-08, 7.54979e-08, 0, 1, -7.54979e-08, 1, 0, 0, 0, 0)
|
||||
|
||||
[node name="Cube" type="MeshInstance3D" parent="StaticBody3D/god circuit stage 1"]
|
||||
transform = Transform3D(-1, 7.54979e-08, -7.54979e-08, -7.54979e-08, 0, 1, 7.54979e-08, 1, 0, 0, 0, 0)
|
||||
cast_shadow = 0
|
||||
mesh = SubResource("ArrayMesh_vv6dc")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="Cube2" type="MeshInstance3D" parent="StaticBody3D/god circuit stage 1"]
|
||||
transform = Transform3D(-1, 7.54979e-08, -7.54979e-08, -7.54979e-08, 0, 1, 7.54979e-08, 1, 0, 0, 0, 0)
|
||||
layers = 0
|
||||
material_override = SubResource("ShaderMaterial_aqrc7")
|
||||
cast_shadow = 0
|
||||
mesh = SubResource("ArrayMesh_vv6dc")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource("3_yengs")
|
||||
volume_db = 7.786
|
||||
|
||||
[connection signal="body_entered" from="StaticBody3D" to="." method="OnHit"]
|
||||
3
Enemies/GodCircuitHit.tres
Normal file
3
Enemies/GodCircuitHit.tres
Normal file
@@ -0,0 +1,3 @@
|
||||
[gd_resource type="ShaderMaterial" format=3 uid="uid://d2081rstlyl4w"]
|
||||
|
||||
[resource]
|
||||
6
Enemies/HPComponent.tscn
Normal file
6
Enemies/HPComponent.tscn
Normal file
@@ -0,0 +1,6 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://b1j0g6ikmnibm"]
|
||||
|
||||
[ext_resource type="Script" path="res://Enemies/HealthPoints.cs" id="1_rrase"]
|
||||
|
||||
[node name="HP Component" type="Node2D"]
|
||||
script = ExtResource("1_rrase")
|
||||
20
Enemies/HealthPoints.cs
Normal file
20
Enemies/HealthPoints.cs
Normal file
@@ -0,0 +1,20 @@
|
||||
using Godot;
|
||||
|
||||
public partial class HealthPoints : Node
|
||||
{
|
||||
[Export]
|
||||
public long MaximumHP { get; protected set; }
|
||||
|
||||
public long CurrentHP { get; set; }
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
CurrentHP = MaximumHP;
|
||||
}
|
||||
|
||||
public void TakeDamage(long damage)
|
||||
{
|
||||
CurrentHP -= damage;
|
||||
GD.Print(CurrentHP);
|
||||
}
|
||||
}
|
||||
9
Enemies/HealthbarProgress.cs
Normal file
9
Enemies/HealthbarProgress.cs
Normal file
@@ -0,0 +1,9 @@
|
||||
using Godot;
|
||||
|
||||
public partial class HealthbarProgress : TextureProgressBar
|
||||
{
|
||||
public void UpdateBar(long amount)
|
||||
{
|
||||
Value = amount;
|
||||
}
|
||||
}
|
||||
1313
Enemies/MeleeEnemy.tscn
Normal file
1313
Enemies/MeleeEnemy.tscn
Normal file
File diff suppressed because one or more lines are too long
336
Enemies/Models/DISSAPPEARING ENEMY.gltf
Normal file
336
Enemies/Models/DISSAPPEARING ENEMY.gltf
Normal file
File diff suppressed because one or more lines are too long
32
Enemies/Models/DISSAPPEARING ENEMY.gltf.import
Normal file
32
Enemies/Models/DISSAPPEARING ENEMY.gltf.import
Normal file
@@ -0,0 +1,32 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://dr6vgrhs3joil"
|
||||
path="res://.godot/imported/DISSAPPEARING ENEMY.gltf-b34d11058e00cbb005301d0c8ab6a98b.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Enemies/Models/DISSAPPEARING ENEMY.gltf"
|
||||
dest_files=["res://.godot/imported/DISSAPPEARING ENEMY.gltf-b34d11058e00cbb005301d0c8ab6a98b.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type="Node3D"
|
||||
nodes/root_name="Scene Root"
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
gltf/embedded_image_handling=1
|
||||
BIN
Enemies/Models/MeleeEnemy.glb
Normal file
BIN
Enemies/Models/MeleeEnemy.glb
Normal file
Binary file not shown.
1834
Enemies/Models/MeleeEnemy.glb.import
Normal file
1834
Enemies/Models/MeleeEnemy.glb.import
Normal file
File diff suppressed because it is too large
Load Diff
BIN
Enemies/Models/RangedEnemy.glb
Normal file
BIN
Enemies/Models/RangedEnemy.glb
Normal file
Binary file not shown.
32
Enemies/Models/RangedEnemy.glb.import
Normal file
32
Enemies/Models/RangedEnemy.glb.import
Normal file
@@ -0,0 +1,32 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://dotxb4dc15l4k"
|
||||
path="res://.godot/imported/RangedEnemy.glb-b55597650bade0297f264b6e0420a5b0.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Enemies/Models/RangedEnemy.glb"
|
||||
dest_files=["res://.godot/imported/RangedEnemy.glb-b55597650bade0297f264b6e0420a5b0.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type="Node3D"
|
||||
nodes/root_name="Scene Root"
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
gltf/embedded_image_handling=1
|
||||
1077
Enemies/RangedEnemy.tscn
Normal file
1077
Enemies/RangedEnemy.tscn
Normal file
File diff suppressed because one or more lines are too long
39
Enemies/Scripts/BasicEnemy.cs
Normal file
39
Enemies/Scripts/BasicEnemy.cs
Normal file
@@ -0,0 +1,39 @@
|
||||
using Godot;
|
||||
|
||||
public partial class BasicEnemy : Node3D
|
||||
{
|
||||
[Export]
|
||||
private HealthPoints _hp;
|
||||
|
||||
protected GameManager _gameManager;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
_gameManager = GetTree().Root.GetNode<GameManager>("Main/GameManager");
|
||||
}
|
||||
|
||||
public void OnEnemyHit(Node3D node)
|
||||
{
|
||||
if (node is Character)
|
||||
return;
|
||||
|
||||
_hp.TakeDamage(1);
|
||||
|
||||
if (_hp.CurrentHP <= 0)
|
||||
{
|
||||
var currentLevel = (Level)GetTree().GetFirstNodeInGroup("Level");
|
||||
currentLevel.OnEnemyDefeated(this);
|
||||
QueueFree();
|
||||
}
|
||||
}
|
||||
|
||||
public void OnPlayerHit(Node3D node)
|
||||
{
|
||||
if (node is Character character && character.HasMethod(Character.MethodName.OnHit))
|
||||
{
|
||||
GD.Print("Collision with player at " + node.GlobalPosition + "by " + Name);
|
||||
GD.Print("Player hit: " + character.Name);
|
||||
character.Call(Character.MethodName.OnHit, this);
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Enemies/Scripts/GodCircuit.cs
Normal file
61
Enemies/Scripts/GodCircuit.cs
Normal file
@@ -0,0 +1,61 @@
|
||||
using Godot;
|
||||
|
||||
public partial class GodCircuit : Node3D
|
||||
{
|
||||
[Export]
|
||||
private AnimationPlayer _animationPlayer;
|
||||
|
||||
[Signal]
|
||||
public delegate void OnEnemyBossHitEventHandler(long damage);
|
||||
|
||||
[Signal]
|
||||
public delegate void OnGameEndingEventHandler();
|
||||
|
||||
[Signal]
|
||||
public delegate void DestroyRemainingOrbsEventHandler();
|
||||
|
||||
private void OnHit(Node3D node)
|
||||
{
|
||||
if (node is Character character && character.HasMethod(Character.MethodName.OnHit))
|
||||
{
|
||||
GD.Print("Player hit: " + character.Name);
|
||||
character.Call(Character.MethodName.OnHit, node);
|
||||
}
|
||||
else
|
||||
{
|
||||
var hpComponent = GetNode<HealthPoints>("HP Component");
|
||||
if (hpComponent.CurrentHP > 0)
|
||||
{
|
||||
GD.Print("Hit");
|
||||
_animationPlayer.Play("OnHit");
|
||||
hpComponent.TakeDamage(1);
|
||||
EmitSignal(SignalName.OnEnemyBossHit, hpComponent.CurrentHP);
|
||||
|
||||
if (hpComponent.CurrentHP <= 0)
|
||||
{
|
||||
EmitSignal(SignalName.DestroyRemainingOrbs);
|
||||
_animationPlayer.Play("OnDeath");
|
||||
_animationPlayer.AnimationFinished += OnGameFinished;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnBossOrbDestroyed()
|
||||
{
|
||||
var hpComponent = GetNode<HealthPoints>("HP Component");
|
||||
_animationPlayer.Play("OnHit");
|
||||
hpComponent.TakeDamage(60);
|
||||
EmitSignal(SignalName.OnEnemyBossHit, hpComponent.CurrentHP);
|
||||
|
||||
if (hpComponent.CurrentHP <= 0)
|
||||
hpComponent.CurrentHP = 1;
|
||||
}
|
||||
|
||||
private void OnGameFinished(StringName animationName)
|
||||
{
|
||||
GD.Print("On game ending");
|
||||
EmitSignal(SignalName.OnGameEnding);
|
||||
QueueFree();
|
||||
}
|
||||
}
|
||||
25
Enemies/Scripts/MeleeEnemy.cs
Normal file
25
Enemies/Scripts/MeleeEnemy.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using Godot;
|
||||
using System.Linq;
|
||||
|
||||
public partial class MeleeEnemy : BasicEnemy
|
||||
{
|
||||
[Export]
|
||||
private float _speed = 0.8f;
|
||||
private bool _targetingPlayer = false;
|
||||
[Export]
|
||||
private double _distanceToPlayer = 4;
|
||||
|
||||
public override void _PhysicsProcess(double delta)
|
||||
{
|
||||
var players = GetTree().GetNodesInGroup("Player").Cast<Character>();
|
||||
if (players.Any())
|
||||
{
|
||||
var target = players.OrderBy(x => Position.DistanceTo(x.Position)).FirstOrDefault();
|
||||
if (_targetingPlayer || Position.DistanceTo(target.Position) < _distanceToPlayer)
|
||||
{
|
||||
Position = Position.MoveToward(target.Position, _speed * (float)delta);
|
||||
_targetingPlayer = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
17
Enemies/Scripts/RangedEnemy.cs
Normal file
17
Enemies/Scripts/RangedEnemy.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using Godot;
|
||||
using System.Linq;
|
||||
|
||||
public partial class RangedEnemy : BasicEnemy
|
||||
{
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
var players = GetTree().GetNodesInGroup("Player");
|
||||
if (players.Any())
|
||||
{
|
||||
var convertedPlayers = players.Select(x => (Node3D)x);
|
||||
var target = convertedPlayers.OrderBy(x => Position.DistanceTo(x.Position)).FirstOrDefault();
|
||||
LookAt(target.Position, Vector3.Up);
|
||||
Rotation = new Vector3(0, Rotation.Y, Rotation.Z);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,11 @@
|
||||
<EnableDynamicLoading>true</EnableDynamicLoading>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Scenes\" />
|
||||
<Compile Remove="Scenes\**" />
|
||||
<EmbeddedResource Remove="Scenes\**" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Player\Sagittarius\Attacks\" />
|
||||
<Folder Include="Textures\Models\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
10
GameJam2023.csproj.old
Normal file
10
GameJam2023.csproj.old
Normal file
@@ -0,0 +1,10 @@
|
||||
<Project Sdk="Godot.NET.Sdk/4.1.1">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<EnableDynamicLoading>true</EnableDynamicLoading>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Scenes\" />
|
||||
<Folder Include="Textures\Models\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
10
GameJam2023.csproj.old.1
Normal file
10
GameJam2023.csproj.old.1
Normal file
@@ -0,0 +1,10 @@
|
||||
<Project Sdk="Godot.NET.Sdk/4.0.4">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<EnableDynamicLoading>true</EnableDynamicLoading>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Scenes\" />
|
||||
<Folder Include="Textures\Models\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
10
GameJam2023.csproj.old.2
Normal file
10
GameJam2023.csproj.old.2
Normal file
@@ -0,0 +1,10 @@
|
||||
<Project Sdk="Godot.NET.Sdk/4.1.1">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<EnableDynamicLoading>true</EnableDynamicLoading>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Scenes\" />
|
||||
<Folder Include="Textures\Models\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
10
GameJam2023.csproj.old.3
Normal file
10
GameJam2023.csproj.old.3
Normal file
@@ -0,0 +1,10 @@
|
||||
<Project Sdk="Godot.NET.Sdk/4.0.4">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<EnableDynamicLoading>true</EnableDynamicLoading>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Scenes\" />
|
||||
<Folder Include="Textures\Models\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
10
GameJam2023.csproj.old.4
Normal file
10
GameJam2023.csproj.old.4
Normal file
@@ -0,0 +1,10 @@
|
||||
<Project Sdk="Godot.NET.Sdk/4.1.1">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<EnableDynamicLoading>true</EnableDynamicLoading>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Scenes\" />
|
||||
<Folder Include="Textures\Models\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
14
GameJam2023.csproj.old.5
Normal file
14
GameJam2023.csproj.old.5
Normal file
@@ -0,0 +1,14 @@
|
||||
<Project Sdk="Godot.NET.Sdk/4.1.0">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<EnableDynamicLoading>true</EnableDynamicLoading>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Compile Remove="Scenes\**" />
|
||||
<EmbeddedResource Remove="Scenes\**" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Player\Sagittarius\Attacks\" />
|
||||
<Folder Include="Textures\Models\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
160
GameLogic/GameManager.cs
Normal file
160
GameLogic/GameManager.cs
Normal file
@@ -0,0 +1,160 @@
|
||||
using Godot;
|
||||
using Godot.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
public partial class GameManager : Node
|
||||
{
|
||||
[Signal]
|
||||
public delegate void OnPlayerGameOverEventHandler(Player player);
|
||||
[Signal]
|
||||
public delegate void ReselectCharacterEventHandler(Player player);
|
||||
[Signal]
|
||||
public delegate void ClearPlayerBGEventHandler(Array<Player> players);
|
||||
|
||||
[Export]
|
||||
private Array<PackedScene> PlayerScenes;
|
||||
|
||||
public IEnumerable<Player> Players = new List<Player>();
|
||||
|
||||
private int _levelIndex;
|
||||
|
||||
public bool IsGameOverScreenOn = false;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
var main = GetTree().Root.GetNode<Main>("/root/Main");
|
||||
for (var i = 0; i < main.NumberOfPlayers; i++)
|
||||
{
|
||||
var player = PlayerScenes[i].Instantiate();
|
||||
var castedPlayer = (Player)player;
|
||||
castedPlayer.PlayerNumber = i + 1;
|
||||
Players = Players.Append(castedPlayer);
|
||||
GetTree().Root.AddChild(player);
|
||||
}
|
||||
}
|
||||
|
||||
public void OnAllEnemiesDefeated()
|
||||
{
|
||||
OnLevelClear();
|
||||
}
|
||||
|
||||
public void OnHandleCharacterSelectUI(Player player)
|
||||
{
|
||||
EmitSignal(SignalName.ReselectCharacter, player);
|
||||
}
|
||||
|
||||
public void SetToNextCharacter(Player player)
|
||||
{
|
||||
player.CharacterIndex = (++player.CharacterIndex) % player.CharactersLeftOnStage.Count();
|
||||
GD.Print(player.CharactersLeftOnStage.ElementAt(player.CharacterIndex));
|
||||
}
|
||||
|
||||
public void SetToPreviousCharacter(Player player)
|
||||
{
|
||||
player.CharacterIndex = player.CharacterIndex == 0 ? player.CharactersLeftOnStage.Count() - 1 : --player.CharacterIndex;
|
||||
}
|
||||
|
||||
public void ResetPlayerPosition(Player player)
|
||||
{
|
||||
player.SpawnPoint.SetPlayerPosition(player.SelectedCharacter);
|
||||
GD.Print(player.CharactersLeftOnStage.ElementAt(player.CharacterIndex));
|
||||
}
|
||||
|
||||
public void OnCharacterSelected(Player player)
|
||||
{
|
||||
var sfxPlayer = GetTree().Root.GetNode<AudioStreamPlayer>("Main/SFXPlayer");
|
||||
var audioStream = ResourceLoader.Load<AudioStream>("Audio/SFX/Select.wav");
|
||||
sfxPlayer.Stream = audioStream;
|
||||
sfxPlayer.Play();
|
||||
if (player.CharactersLeftOnStage.Any())
|
||||
{
|
||||
var character = player.CharactersLeftOnStage[player.CharacterIndex];
|
||||
var instance = (Character)character.Instantiate();
|
||||
instance.Initialize(player);
|
||||
player.SelectedCharacter = instance;
|
||||
player.SpawnPoint.SetPlayerPosition(player.SelectedCharacter);
|
||||
GetTree().Root.AddChild(player.SelectedCharacter);
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveCharacter(Player player)
|
||||
{
|
||||
ResetPlayerPosition(player);
|
||||
|
||||
player.CharactersLeftOnStage.RemoveAt(player.CharacterIndex);
|
||||
if (player.SelectedCharacter is not null)
|
||||
GetTree().Root.RemoveChild(player.SelectedCharacter);
|
||||
|
||||
player.CharacterIndex = 0;
|
||||
if (player.CharactersLeftOnStage.Any())
|
||||
EmitSignal(SignalName.ReselectCharacter, player);
|
||||
|
||||
if (!player.CharactersExited.Any() && !player.CharactersLeftOnStage.Any())
|
||||
SetGameOver(player, true);
|
||||
|
||||
if (Players.All(x => !x.CharactersLeftOnStage.Any()) && Players.Any(x => x.CharactersExited.Any()))
|
||||
OnLevelClear();
|
||||
}
|
||||
|
||||
public void RemoveCharacterAndAddToExit(Player player)
|
||||
{
|
||||
ResetPlayerPosition(player);
|
||||
player.CharactersExited.Add(player.CharactersLeftOnStage.ElementAt(player.CharacterIndex));
|
||||
RemoveCharacter(player);
|
||||
}
|
||||
|
||||
public void SetGameOver(Player player, bool isGameOver)
|
||||
{
|
||||
player.GameOver = isGameOver;
|
||||
if (isGameOver)
|
||||
EmitSignal(SignalName.OnPlayerGameOver, player);
|
||||
GD.Print($"Game over for {player.Name}");
|
||||
}
|
||||
|
||||
public void ReloadGameScene()
|
||||
{
|
||||
GD.Print("Reloading scene");
|
||||
var players = GetTree().Root.GetChildren().OfType<Player>();
|
||||
foreach (var player in players)
|
||||
player.QueueFree();
|
||||
var levels = GetTree().Root.GetChildren().OfType<Level>();
|
||||
foreach (var level in levels)
|
||||
level.QueueFree();
|
||||
GetTree().ReloadCurrentScene();
|
||||
}
|
||||
|
||||
public void OnLevelClear()
|
||||
{
|
||||
var enemies = GetTree().GetNodesInGroup("Enemy").Where(x => !x.IsQueuedForDeletion());
|
||||
foreach (var enemy in enemies)
|
||||
enemy.QueueFree();
|
||||
|
||||
var playerCharacters = GetTree().GetNodesInGroup("Player");
|
||||
|
||||
EmitSignal(SignalName.ClearPlayerBG, 0);
|
||||
EmitSignal(SignalName.ClearPlayerBG, 1);
|
||||
|
||||
foreach (var player in Players)
|
||||
{
|
||||
player.CharactersLeftOnStage.AddRange(player.CharactersExited);
|
||||
player.CharactersExited.Clear();
|
||||
player.CharacterIndex = 0;
|
||||
}
|
||||
|
||||
|
||||
foreach (var character in playerCharacters)
|
||||
character.GetParent().RemoveChild(character);
|
||||
|
||||
var projectiles = GetTree().GetNodesInGroup("Projectile").Where(x => !x.IsQueuedForDeletion());
|
||||
foreach (var projectile in projectiles)
|
||||
projectile.QueueFree();
|
||||
|
||||
var main = GetTree().Root.GetNode<Main>("/root/Main");
|
||||
if (_levelIndex < main.Levels.Count)
|
||||
{
|
||||
_levelIndex++;
|
||||
main.LoadNextLevel(_levelIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
224
GameLogic/GameManager.tscn
Normal file
224
GameLogic/GameManager.tscn
Normal file
@@ -0,0 +1,224 @@
|
||||
[gd_scene load_steps=13 format=3 uid="uid://cxj6yeddshy16"]
|
||||
|
||||
[ext_resource type="Script" path="res://GameLogic/GameManager.cs" id="1_ya2kt"]
|
||||
[ext_resource type="PackedScene" uid="uid://b57xus5rqasy8" path="res://Player/Base/Player2.tscn" id="3_y1wkr"]
|
||||
[ext_resource type="PackedScene" uid="uid://xcmspevaqcrc" path="res://Player/Base/Player1.tscn" id="4_3fl70"]
|
||||
[ext_resource type="Script" path="res://UI/StageGUI.cs" id="4_8bo7m"]
|
||||
[ext_resource type="Script" path="res://UI/GameOverService.cs" id="5_3te1o"]
|
||||
[ext_resource type="Texture2D" uid="uid://d18xmfbg47qpi" path="res://Textures/Portraits/blank-background.png" id="5_ecqoa"]
|
||||
[ext_resource type="Script" path="res://UI/CharacterSelectUpdateService.cs" id="6_8tbm6"]
|
||||
[ext_resource type="Texture2D" uid="uid://dveeywi80ux2l" path="res://UI/Game_Over.jpg" id="6_hq16y"]
|
||||
[ext_resource type="Texture2D" uid="uid://c3eubpygfvc3l" path="res://Textures/Portraits/cap-bg-char.png" id="7_jroqd"]
|
||||
[ext_resource type="Texture2D" uid="uid://1pgw8he4k5va" path="res://Textures/Portraits/pisces-bg-char.png" id="8_pvs36"]
|
||||
[ext_resource type="Texture2D" uid="uid://bacwvejc4hcou" path="res://Textures/Portraits/sag-bg-char.png" id="9_1jise"]
|
||||
[ext_resource type="Texture2D" uid="uid://o7uu4efxf36e" path="res://Textures/Portraits/scorpio-bg-char.png" id="10_mqkvb"]
|
||||
|
||||
[node name="GameManager" type="Node3D"]
|
||||
script = ExtResource("1_ya2kt")
|
||||
PlayerScenes = Array[PackedScene]([ExtResource("4_3fl70"), ExtResource("3_y1wkr")])
|
||||
|
||||
[node name="StageGUI" type="Control" parent="."]
|
||||
process_mode = 3
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("4_8bo7m")
|
||||
metadata/_edit_horizontal_guides_ = [-342.0]
|
||||
|
||||
[node name="SidebarLeft" type="TextureRect" parent="StageGUI"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 4
|
||||
anchor_top = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_top = -540.0
|
||||
offset_right = 420.0
|
||||
offset_bottom = 540.0
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("5_ecqoa")
|
||||
|
||||
[node name="SidebarRight" type="TextureRect" parent="StageGUI"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 6
|
||||
anchor_left = 1.0
|
||||
anchor_top = 0.5
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -420.0
|
||||
offset_top = -540.0
|
||||
offset_bottom = 540.0
|
||||
grow_horizontal = 0
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("5_ecqoa")
|
||||
|
||||
[node name="CharacterSelect" type="Control" parent="StageGUI"]
|
||||
process_mode = 3
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("6_8tbm6")
|
||||
|
||||
[node name="P1" type="Control" parent="StageGUI/CharacterSelect"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 4
|
||||
anchor_top = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_top = -20.0
|
||||
offset_right = 40.0
|
||||
offset_bottom = 20.0
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="CapBG" type="TextureRect" parent="StageGUI/CharacterSelect/P1"]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 4
|
||||
anchor_top = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_top = -540.0
|
||||
offset_right = 420.0
|
||||
offset_bottom = 540.0
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("7_jroqd")
|
||||
stretch_mode = 2
|
||||
|
||||
[node name="PiscesBG" type="TextureRect" parent="StageGUI/CharacterSelect/P1"]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 4
|
||||
anchor_top = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_top = -540.0
|
||||
offset_right = 420.0
|
||||
offset_bottom = 540.0
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("8_pvs36")
|
||||
stretch_mode = 2
|
||||
|
||||
[node name="SagBG" type="TextureRect" parent="StageGUI/CharacterSelect/P1"]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 4
|
||||
anchor_top = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_top = -540.0
|
||||
offset_right = 420.0
|
||||
offset_bottom = 540.0
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("9_1jise")
|
||||
stretch_mode = 2
|
||||
|
||||
[node name="ScorpioBG" type="TextureRect" parent="StageGUI/CharacterSelect/P1"]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 4
|
||||
anchor_top = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_top = -540.0
|
||||
offset_right = 420.0
|
||||
offset_bottom = 540.0
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("10_mqkvb")
|
||||
stretch_mode = 2
|
||||
|
||||
[node name="P2" type="Control" parent="StageGUI/CharacterSelect"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 6
|
||||
anchor_left = 1.0
|
||||
anchor_top = 0.5
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -40.0
|
||||
offset_top = -20.0
|
||||
offset_bottom = 20.0
|
||||
grow_horizontal = 0
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="CapBG" type="TextureRect" parent="StageGUI/CharacterSelect/P2"]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 6
|
||||
anchor_left = 1.0
|
||||
anchor_top = 0.5
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -420.0
|
||||
offset_top = -540.0
|
||||
offset_bottom = 540.0
|
||||
grow_horizontal = 0
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("7_jroqd")
|
||||
|
||||
[node name="PiscesBG" type="TextureRect" parent="StageGUI/CharacterSelect/P2"]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 6
|
||||
anchor_left = 1.0
|
||||
anchor_top = 0.5
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -420.0
|
||||
offset_top = -540.0
|
||||
offset_bottom = 540.0
|
||||
grow_horizontal = 0
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("8_pvs36")
|
||||
|
||||
[node name="SagBG" type="TextureRect" parent="StageGUI/CharacterSelect/P2"]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 6
|
||||
anchor_left = 1.0
|
||||
anchor_top = 0.5
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -420.0
|
||||
offset_top = -540.0
|
||||
offset_bottom = 540.0
|
||||
grow_horizontal = 0
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("9_1jise")
|
||||
|
||||
[node name="ScorpioBG" type="TextureRect" parent="StageGUI/CharacterSelect/P2"]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 6
|
||||
anchor_left = 1.0
|
||||
anchor_top = 0.5
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -420.0
|
||||
offset_top = -540.0
|
||||
offset_bottom = 540.0
|
||||
grow_horizontal = 0
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("10_mqkvb")
|
||||
|
||||
[node name="GameOver" type="Control" parent="."]
|
||||
visible = false
|
||||
layout_mode = 3
|
||||
anchors_preset = 0
|
||||
offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
script = ExtResource("5_3te1o")
|
||||
|
||||
[node name="GameOverScreen" type="TextureRect" parent="GameOver"]
|
||||
layout_mode = 0
|
||||
offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
texture = ExtResource("6_hq16y")
|
||||
|
||||
[connection signal="ClearPlayerBG" from="." to="StageGUI/CharacterSelect" method="ClearPlayerBGs"]
|
||||
[connection signal="ReselectCharacter" from="." to="StageGUI" method="OnCharacterSelect"]
|
||||
[connection signal="CapricornSelected" from="StageGUI" to="StageGUI/CharacterSelect" method="OnCapricornSelected"]
|
||||
[connection signal="OnCharacterSelectionMade" from="StageGUI" to="." method="OnCharacterSelected"]
|
||||
[connection signal="OnGameOver" from="StageGUI" to="GameOver" method="OnGameOver"]
|
||||
[connection signal="OnPlayerGameOver" from="StageGUI" to="StageGUI/CharacterSelect" method="ClearPlayerBGs"]
|
||||
[connection signal="PiscesSelected" from="StageGUI" to="StageGUI/CharacterSelect" method="OnPiscesSelected"]
|
||||
[connection signal="SagittariusSelected" from="StageGUI" to="StageGUI/CharacterSelect" method="OnSagittariusSelected"]
|
||||
[connection signal="ScorpioSelected" from="StageGUI" to="StageGUI/CharacterSelect" method="OnScorpioSelected"]
|
||||
[connection signal="ReloadGame" from="GameOver" to="." method="ReloadGameScene"]
|
||||
78
GameLogic/Main.cs
Normal file
78
GameLogic/Main.cs
Normal file
@@ -0,0 +1,78 @@
|
||||
using Godot;
|
||||
using Godot.Collections;
|
||||
using System.Linq;
|
||||
|
||||
public partial class Main : Node
|
||||
{
|
||||
[Export]
|
||||
public Array<PackedScene> Levels;
|
||||
[Export]
|
||||
public PackedScene GameManager;
|
||||
[Export]
|
||||
private Label _fpsCounter;
|
||||
|
||||
public int NumberOfPlayers = 0;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
Input.MouseMode = Input.MouseModeEnum.Captured;
|
||||
}
|
||||
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
_fpsCounter.Text = $"FPS: {Engine.GetFramesPerSecond()}";
|
||||
}
|
||||
|
||||
public void LoadLevel(int indexToLoad, int numberOfPlayers)
|
||||
{
|
||||
var sceneToLoad = Levels.ElementAt(indexToLoad);
|
||||
CallDeferred(nameof(DeferredGoToScene), sceneToLoad);
|
||||
|
||||
NumberOfPlayers = numberOfPlayers;
|
||||
|
||||
var gameManager = GameManager.Instantiate();
|
||||
AddChild(gameManager);
|
||||
var gameManagerInstance = (GameManager)gameManager;
|
||||
|
||||
var bgmPlayer = GetTree().Root.GetNode<BGMPlayer>("BgmPlayer");
|
||||
bgmPlayer.ProcessMode = ProcessModeEnum.Always;
|
||||
bgmPlayer.SetBGMFromFilepath("Audio/BGM/An-Imitation-of-Heaven.ogg");
|
||||
bgmPlayer.PlayBGM();
|
||||
|
||||
var animationNode = GetNode<AnimationPlayer>("SceneTransition/AnimationPlayer");
|
||||
animationNode.Play($"Level{indexToLoad + 1}");
|
||||
animationNode.AnimationFinished += EnableCharacterSelect;
|
||||
}
|
||||
|
||||
public void LoadNextLevel(int currentSceneIndex)
|
||||
{
|
||||
if (currentSceneIndex < Levels.Count())
|
||||
{
|
||||
var currentScene = Levels.ToList().ElementAt(currentSceneIndex);
|
||||
CallDeferred(nameof(DeferredGoToScene), Levels.ElementAt(currentSceneIndex));
|
||||
var animationNode = GetNode<AnimationPlayer>("SceneTransition/AnimationPlayer");
|
||||
animationNode.Play($"Level{currentSceneIndex + 1}");
|
||||
animationNode.AnimationFinished += EnableCharacterSelect;
|
||||
}
|
||||
}
|
||||
private void DeferredGoToScene(PackedScene sceneToAdd)
|
||||
{
|
||||
if (GetTree().GetFirstNodeInGroup("Level") != null)
|
||||
GetTree().GetFirstNodeInGroup("Level").QueueFree();
|
||||
var nextScene = GD.Load<PackedScene>(sceneToAdd.ResourcePath);
|
||||
var newScene = nextScene.Instantiate();
|
||||
GetTree().Root.AddChild(newScene);
|
||||
}
|
||||
|
||||
|
||||
private void EnableCharacterSelect(StringName animationName)
|
||||
{
|
||||
GD.Print("On animation finished: Enable characters");
|
||||
var gameManagerInstance = GetNode<GameManager>("GameManager");
|
||||
foreach (var player in gameManagerInstance.Players)
|
||||
gameManagerInstance.OnHandleCharacterSelectUI(player);
|
||||
GetTree().Paused = true;
|
||||
var animationNode = GetNode<AnimationPlayer>("SceneTransition/AnimationPlayer");
|
||||
animationNode.AnimationFinished -= EnableCharacterSelect;
|
||||
}
|
||||
}
|
||||
78
GameLogic/Main.tscn
Normal file
78
GameLogic/Main.tscn
Normal file
@@ -0,0 +1,78 @@
|
||||
[gd_scene load_steps=20 format=3 uid="uid://vwrw05ob2caq"]
|
||||
|
||||
[ext_resource type="Script" path="res://GameLogic/Main.cs" id="1_g4hua"]
|
||||
[ext_resource type="PackedScene" uid="uid://btl5fdyjewnwc" path="res://Levels/Scenes/Level3.tscn" id="2_0yhby"]
|
||||
[ext_resource type="PackedScene" uid="uid://dqv03pua4j8ga" path="res://Levels/Scenes/Level1.tscn" id="2_jq3qe"]
|
||||
[ext_resource type="PackedScene" uid="uid://b12gq4yqc3d8i" path="res://UI/MainMenu.tscn" id="2_kvovw"]
|
||||
[ext_resource type="PackedScene" uid="uid://basequfmpg04f" path="res://Levels/Scenes/Level2.tscn" id="3_nhrqr"]
|
||||
[ext_resource type="PackedScene" uid="uid://ctvkevnc0wxka" path="res://Levels/Scenes/Level4.tscn" id="5_xj47l"]
|
||||
[ext_resource type="PackedScene" uid="uid://col60npvg7wr1" path="res://Levels/Scenes/Level5.tscn" id="6_xmedq"]
|
||||
[ext_resource type="PackedScene" uid="uid://8ukphol1isp2" path="res://Levels/Scenes/Level6.tscn" id="7_58n7x"]
|
||||
[ext_resource type="PackedScene" uid="uid://bsq7edeueqyjg" path="res://Levels/Scenes/Level7.tscn" id="8_pcp3p"]
|
||||
[ext_resource type="PackedScene" uid="uid://c4xcka4ekuur8" path="res://Levels/Scenes/Level8.tscn" id="9_n1hja"]
|
||||
[ext_resource type="PackedScene" uid="uid://djwln4at4ho44" path="res://Levels/Scenes/Level9.tscn" id="10_rs7ve"]
|
||||
[ext_resource type="PackedScene" uid="uid://tt886mv7pffe" path="res://Levels/Scenes/Level10.tscn" id="11_o275c"]
|
||||
[ext_resource type="PackedScene" uid="uid://cxj6yeddshy16" path="res://GameLogic/GameManager.tscn" id="11_wiyvp"]
|
||||
[ext_resource type="PackedScene" uid="uid://cvvjbka5nf52j" path="res://UI/SceneTransition.tscn" id="14_ai16y"]
|
||||
|
||||
[sub_resource type="SystemFont" id="SystemFont_o1buo"]
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_ucjnc"]
|
||||
font = SubResource("SystemFont_o1buo")
|
||||
font_color = Color(0, 1, 0, 1)
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_6bq1c"]
|
||||
sky_top_color = Color(1, 1, 1, 1)
|
||||
sky_horizon_color = Color(1, 1, 1, 1)
|
||||
sky_energy_multiplier = 1.1
|
||||
ground_bottom_color = Color(0.164706, 0.164706, 0.164706, 1)
|
||||
ground_horizon_color = Color(1, 1, 1, 1)
|
||||
|
||||
[sub_resource type="Sky" id="Sky_er5sy"]
|
||||
sky_material = SubResource("ProceduralSkyMaterial_6bq1c")
|
||||
|
||||
[sub_resource type="Environment" id="Environment_m6quh"]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_er5sy")
|
||||
ambient_light_source = 3
|
||||
reflected_light_source = 1
|
||||
|
||||
[node name="Main" type="Node3D" node_paths=PackedStringArray("_fpsCounter")]
|
||||
script = ExtResource("1_g4hua")
|
||||
Levels = Array[PackedScene]([ExtResource("2_jq3qe"), ExtResource("3_nhrqr"), ExtResource("2_0yhby"), ExtResource("5_xj47l"), ExtResource("7_58n7x"), ExtResource("6_xmedq"), ExtResource("8_pcp3p"), ExtResource("9_n1hja"), ExtResource("10_rs7ve"), ExtResource("11_o275c")])
|
||||
GameManager = ExtResource("11_wiyvp")
|
||||
_fpsCounter = NodePath("FPS Counter")
|
||||
|
||||
[node name="SFXPlayer" type="AudioStreamPlayer" parent="."]
|
||||
max_polyphony = 10
|
||||
|
||||
[node name="Debug Camera" type="Camera3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, -5.69087e-08, 0.759112, 0.65096, 6.63637e-08, 0.65096, -0.759112, 1.40462, 6.10678, -6.91273)
|
||||
visible = false
|
||||
|
||||
[node name="MainMenu" parent="." instance=ExtResource("2_kvovw")]
|
||||
z_as_relative = false
|
||||
|
||||
[node name="FPS Counter" type="Label" parent="."]
|
||||
visible = false
|
||||
z_index = 100
|
||||
offset_left = 18.0
|
||||
offset_top = 16.0
|
||||
offset_right = 199.0
|
||||
offset_bottom = 42.0
|
||||
text = "FPS
|
||||
"
|
||||
label_settings = SubResource("LabelSettings_ucjnc")
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.5, 0.866025, 0, -0.866025, 0.5, -0.527878, 10.966, 6.61121)
|
||||
projection = 1
|
||||
current = true
|
||||
size = 10.8546
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_m6quh")
|
||||
|
||||
[node name="SceneTransition" parent="." instance=ExtResource("14_ai16y")]
|
||||
top_level = true
|
||||
z_index = 500
|
||||
106
Levels/ExitPortal.tscn
Normal file
106
Levels/ExitPortal.tscn
Normal file
File diff suppressed because one or more lines are too long
BIN
Levels/Models/New Stage 7/EyeFix.png
Normal file
BIN
Levels/Models/New Stage 7/EyeFix.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 995 B |
@@ -2,8 +2,8 @@
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cea8ilr3egck5"
|
||||
path.s3tc="res://.godot/imported/60999451_c.png-643082c91df186d7479d0de55abd270f.s3tc.ctex"
|
||||
uid="uid://ckvqdy2sdikqx"
|
||||
path.s3tc="res://.godot/imported/EyeFix.png-8890d25b0d26399535df54ce07dce48f.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
@@ -11,8 +11,8 @@ metadata={
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Models/TestModels/Ness/60999451_c.png"
|
||||
dest_files=["res://.godot/imported/60999451_c.png-643082c91df186d7479d0de55abd270f.s3tc.ctex"]
|
||||
source_file="res://Levels/Models/New Stage 7/EyeFix.png"
|
||||
dest_files=["res://.godot/imported/EyeFix.png-8890d25b0d26399535df54ce07dce48f.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
BIN
Levels/Models/New Stage 7/HELPME - Copy.png
Normal file
BIN
Levels/Models/New Stage 7/HELPME - Copy.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 995 B |
35
Levels/Models/New Stage 7/HELPME - Copy.png.import
Normal file
35
Levels/Models/New Stage 7/HELPME - Copy.png.import
Normal file
@@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://drvjxoshnkcir"
|
||||
path.s3tc="res://.godot/imported/HELPME - Copy.png-ccc60fcb984b254fa97b486cf1a25a58.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Levels/Models/New Stage 7/HELPME - Copy.png"
|
||||
dest_files=["res://.godot/imported/HELPME - Copy.png-ccc60fcb984b254fa97b486cf1a25a58.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
BIN
Levels/Models/New Stage 7/HELPME.png
Normal file
BIN
Levels/Models/New Stage 7/HELPME.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 995 B |
35
Levels/Models/New Stage 7/HELPME.png.import
Normal file
35
Levels/Models/New Stage 7/HELPME.png.import
Normal file
@@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://y1ktbuy7ynvh"
|
||||
path.s3tc="res://.godot/imported/HELPME.png-070d9c4a77a28c1e486e0054f5b3d73f.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Levels/Models/New Stage 7/HELPME.png"
|
||||
dest_files=["res://.godot/imported/HELPME.png-070d9c4a77a28c1e486e0054f5b3d73f.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
BIN
Levels/Models/New Stage 7/Stage eye.png
Normal file
BIN
Levels/Models/New Stage 7/Stage eye.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 995 B |
35
Levels/Models/New Stage 7/Stage eye.png.import
Normal file
35
Levels/Models/New Stage 7/Stage eye.png.import
Normal file
@@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dkuktpwy3vyie"
|
||||
path.s3tc="res://.godot/imported/Stage eye.png-fd8c81fd00dc963dfdc3a579d1c91ee0.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Levels/Models/New Stage 7/Stage eye.png"
|
||||
dest_files=["res://.godot/imported/Stage eye.png-fd8c81fd00dc963dfdc3a579d1c91ee0.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
8
Levels/Models/New Stage 7/StageFixEye.tscn
Normal file
8
Levels/Models/New Stage 7/StageFixEye.tscn
Normal file
@@ -0,0 +1,8 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://drmdf2e8cffi0"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://dkuktpwy3vyie" path="res://Levels/Models/New Stage 7/Stage eye.png" id="1_5ihla"]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
texture = ExtResource("1_5ihla")
|
||||
Binary file not shown.
@@ -1,48 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://c0lv8ovqkl3a6"
|
||||
path="res://.godot/imported/STAGE 1.blend-a0ebb2612e6580a56490c3fb7a136c7b.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Levels/Models/STAGE 1.blend"
|
||||
dest_files=["res://.godot/imported/STAGE 1.blend-a0ebb2612e6580a56490c3fb7a136c7b.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type="Node3D"
|
||||
nodes/root_name="Scene Root"
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
gltf/embedded_image_handling=1
|
||||
blender/nodes/visible=0
|
||||
blender/nodes/punctual_lights=true
|
||||
blender/nodes/cameras=true
|
||||
blender/nodes/custom_properties=true
|
||||
blender/nodes/modifiers=1
|
||||
blender/meshes/colors=false
|
||||
blender/meshes/uvs=true
|
||||
blender/meshes/normals=true
|
||||
blender/meshes/tangents=true
|
||||
blender/meshes/skins=2
|
||||
blender/meshes/export_bones_deforming_mesh_only=false
|
||||
blender/materials/unpack_enabled=true
|
||||
blender/materials/export_materials=1
|
||||
blender/animation/limit_playback=true
|
||||
blender/animation/always_sample=true
|
||||
blender/animation/group_tracks=true
|
||||
Binary file not shown.
@@ -1,48 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://dmi76rb317oou"
|
||||
path="res://.godot/imported/STAGE 2.blend-26faad56e3fe8c962dcb9fd35eb71cf1.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Levels/Models/STAGE 2.blend"
|
||||
dest_files=["res://.godot/imported/STAGE 2.blend-26faad56e3fe8c962dcb9fd35eb71cf1.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type="Node3D"
|
||||
nodes/root_name="Scene Root"
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
gltf/embedded_image_handling=1
|
||||
blender/nodes/visible=0
|
||||
blender/nodes/punctual_lights=true
|
||||
blender/nodes/cameras=true
|
||||
blender/nodes/custom_properties=true
|
||||
blender/nodes/modifiers=1
|
||||
blender/meshes/colors=false
|
||||
blender/meshes/uvs=true
|
||||
blender/meshes/normals=true
|
||||
blender/meshes/tangents=true
|
||||
blender/meshes/skins=2
|
||||
blender/meshes/export_bones_deforming_mesh_only=false
|
||||
blender/materials/unpack_enabled=true
|
||||
blender/materials/export_materials=1
|
||||
blender/animation/limit_playback=true
|
||||
blender/animation/always_sample=true
|
||||
blender/animation/group_tracks=true
|
||||
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user