Compare commits
98 Commits
| 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 | |||
| 271b0ede0d | |||
| 334378932c | |||
| 549cb7a325 | |||
| 11a2554697 | |||
| c3d19b8e0d | |||
| f9c9bf0990 |
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")
|
||||
372
Levels/Models/Stage Miniboss/STAGE MINIBOSS.gltf
Normal file
372
Levels/Models/Stage Miniboss/STAGE MINIBOSS.gltf
Normal file
File diff suppressed because one or more lines are too long
1834
Levels/Models/Stage Miniboss/STAGE MINIBOSS.gltf.import
Normal file
1834
Levels/Models/Stage Miniboss/STAGE MINIBOSS.gltf.import
Normal file
File diff suppressed because it is too large
Load Diff
BIN
Levels/Models/Stage Miniboss/STAGE MINIBOSS_bsod.png
Normal file
BIN
Levels/Models/Stage Miniboss/STAGE MINIBOSS_bsod.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 43 KiB |
36
Levels/Models/Stage Miniboss/STAGE MINIBOSS_bsod.png.import
Normal file
36
Levels/Models/Stage Miniboss/STAGE MINIBOSS_bsod.png.import
Normal file
@@ -0,0 +1,36 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bv3hiodt08q7o"
|
||||
path.s3tc="res://.godot/imported/STAGE MINIBOSS_bsod.png-b691a3faea1cd4167b195250f0582ff5.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Levels/Models/Stage Miniboss/STAGE MINIBOSS_bsod.png"
|
||||
dest_files=["res://.godot/imported/STAGE MINIBOSS_bsod.png-b691a3faea1cd4167b195250f0582ff5.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
|
||||
3335
Levels/Models/Stage1/Stage 1 update.gltf
Normal file
3335
Levels/Models/Stage1/Stage 1 update.gltf
Normal file
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user