diff --git a/audio/music/klystron_vip.mp3 b/audio/music/klystron_vip.mp3 new file mode 100644 index 0000000..3c91099 Binary files /dev/null and b/audio/music/klystron_vip.mp3 differ diff --git a/audio/music/klystron_vip.mp3.import b/audio/music/klystron_vip.mp3.import new file mode 100644 index 0000000..d2c3f33 --- /dev/null +++ b/audio/music/klystron_vip.mp3.import @@ -0,0 +1,15 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +path="res://.import/klystron_vip.mp3-6acb7b94af743d68bb6c83c484d7cc06.mp3str" + +[deps] + +source_file="res://audio/music/klystron_vip.mp3" +dest_files=[ "res://.import/klystron_vip.mp3-6acb7b94af743d68bb6c83c484d7cc06.mp3str" ] + +[params] + +loop=true +loop_offset=0 diff --git a/audio/sounds/2600_charge.ogg b/audio/sounds/2600_charge.ogg new file mode 100644 index 0000000..628d47c Binary files /dev/null and b/audio/sounds/2600_charge.ogg differ diff --git a/audio/sounds/2600_charge.ogg.import b/audio/sounds/2600_charge.ogg.import new file mode 100644 index 0000000..2d0a434 --- /dev/null +++ b/audio/sounds/2600_charge.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/2600_charge.ogg-552c059b733cc8184b757ad5155adbff.oggstr" + +[deps] + +source_file="res://audio/sounds/2600_charge.ogg" +dest_files=[ "res://.import/2600_charge.ogg-552c059b733cc8184b757ad5155adbff.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/confirm.wav b/audio/sounds/confirm.wav index b380175..3e7436f 100644 Binary files a/audio/sounds/confirm.wav and b/audio/sounds/confirm.wav differ diff --git a/audio/sounds/whitenoise.wav b/audio/sounds/whitenoise.wav new file mode 100644 index 0000000..74fef42 Binary files /dev/null and b/audio/sounds/whitenoise.wav differ diff --git a/audio/sounds/whitenoise.wav.import b/audio/sounds/whitenoise.wav.import new file mode 100644 index 0000000..70cfe6d --- /dev/null +++ b/audio/sounds/whitenoise.wav.import @@ -0,0 +1,23 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/whitenoise.wav-792881147f3893a05a8858d72873c529.sample" + +[deps] + +source_file="res://audio/sounds/whitenoise.wav" +dest_files=[ "res://.import/whitenoise.wav-792881147f3893a05a8858d72873c529.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 diff --git a/autoloads/audio.gd b/autoloads/audio.gd index d740307..7cbe59f 100644 --- a/autoloads/audio.gd +++ b/autoloads/audio.gd @@ -33,6 +33,7 @@ const a_bullet_barrage = preload("res://audio/sounds/bullet_barrage.ogg") const a_rainbow_laser = preload("res://audio/sounds/rainbow_laser.ogg") const a_spaghetti = preload("res://audio/sounds/spaghetti.ogg") const a_good_job = preload("res://audio/sounds/good_job.ogg") +const a_2600_charge = preload("res://audio/sounds/2600_charge.ogg") #Plays a sound func play_sound(snd,player): diff --git a/autoloads/level_data.tscn b/autoloads/level_data.tscn index f89504d..0f15a61 100644 --- a/autoloads/level_data.tscn +++ b/autoloads/level_data.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=23 format=2] +[gd_scene load_steps=25 format=2] [ext_resource path="res://autoloads/level_data.gd" type="Script" id=1] [ext_resource path="res://maps/hills_scholar.tscn" type="PackedScene" id=2] @@ -12,6 +12,7 @@ [ext_resource path="res://maps/station.tscn" type="PackedScene" id=10] [ext_resource path="res://maps/graveyard.tscn" type="PackedScene" id=11] [ext_resource path="res://maps/lab.tscn" type="PackedScene" id=12] +[ext_resource path="res://maps/boss/boss2_arena.tscn" type="PackedScene" id=13] [sub_resource type="Resource" id=1] resource_name = "Verdant Hills" @@ -69,6 +70,14 @@ shard_titles = [ "Bone Climb", "Soul Graze", "Bow Happy Hellarcher", "Look out f save_id = "graveyard" scene = ExtResource( 11 ) +[sub_resource type="Resource" id=12] +resource_name = "VS. STG-2600" +script = ExtResource( 5 ) +title = "VS. STG-2600" +shard_titles = [ "", "", "", "", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "boss2" +scene = ExtResource( 13 ) + [sub_resource type="Resource" id=8] resource_name = "Police Station" script = ExtResource( 5 ) @@ -95,4 +104,4 @@ scene = ExtResource( 12 ) [node name="LevelData" type="Node"] script = ExtResource( 1 ) -levels = [ SubResource( 1 ), SubResource( 2 ), SubResource( 4 ), SubResource( 6 ), SubResource( 3 ), SubResource( 10 ), SubResource( 9 ), SubResource( 8 ), SubResource( 7 ), SubResource( 11 ) ] +levels = [ SubResource( 1 ), SubResource( 2 ), SubResource( 4 ), SubResource( 6 ), SubResource( 3 ), SubResource( 10 ), SubResource( 9 ), SubResource( 12 ), SubResource( 8 ), SubResource( 7 ), SubResource( 11 ) ] diff --git a/graphics/npc/msx_walk.png b/graphics/npc/msx_walk.png index 5fe131c..5ec524d 100644 Binary files a/graphics/npc/msx_walk.png and b/graphics/npc/msx_walk.png differ diff --git a/graphics/npc/speccy.png b/graphics/npc/speccy.png new file mode 100644 index 0000000..cd69a11 Binary files /dev/null and b/graphics/npc/speccy.png differ diff --git a/graphics/npc/speccy.png.import b/graphics/npc/speccy.png.import new file mode 100644 index 0000000..fec1991 --- /dev/null +++ b/graphics/npc/speccy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/speccy.png-6a5559d75a077641c7ee8b3aa2431551.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/speccy.png" +dest_files=[ "res://.import/speccy.png-6a5559d75a077641c7ee8b3aa2431551.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/maps/test_room.tscn b/maps/test_room.tscn index 7fdbe25..377f541 100644 --- a/maps/test_room.tscn +++ b/maps/test_room.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=28 format=2] +[gd_scene load_steps=29 format=2] [ext_resource path="res://objects/enemy/super_slime.tscn" type="PackedScene" id=1] [ext_resource path="res://tilesets/t_cave.tres" type="TileSet" id=2] @@ -13,6 +13,7 @@ [ext_resource path="res://maps/map.gd" type="Script" id=11] [ext_resource path="res://objects/environment/turniwood/turning_platform.tscn" type="PackedScene" id=12] [ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=13] +[ext_resource path="res://objects/enemy/boss/2600_die.tscn" type="PackedScene" id=14] [ext_resource path="res://objects/respawn_point.tscn" type="PackedScene" id=16] [ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=17] [ext_resource path="res://objects/environment/switches/button.tscn" type="PackedScene" id=19] @@ -122,6 +123,7 @@ position = Vector2( 48, 120 ) [node name="AnimatedSprite" parent="RollingFiend" index="0"] visible = false +frame = 1 [node name="SawTest2" type="AnimatedSprite" parent="RollingFiend"] material = SubResource( 4 ) @@ -187,4 +189,7 @@ move_direction = 1 position = Vector2( -1.5, 12 ) scale = Vector2( 0.5, -1 ) +[node name="2600Die" parent="." instance=ExtResource( 14 )] +position = Vector2( 68, 1 ) + [editable path="RollingFiend"] diff --git a/objects/enemy/boss/2600.gd b/objects/enemy/boss/2600.gd index e236b35..be0f1fa 100644 --- a/objects/enemy/boss/2600.gd +++ b/objects/enemy/boss/2600.gd @@ -34,7 +34,12 @@ func _play_laser_sound(play: bool): Audio.play_sound(Audio.a_rainbow_laser,Audio.ac_boss) else: Audio.ac_boss.playing = false - + +func _play_charge_sound(play: bool): + if play: + Audio.play_sound(Audio.a_2600_charge,Audio.ac_boss) + else: + Audio.ac_boss.playing = false func die(): @@ -52,4 +57,5 @@ func die(): head_sprite.texture = preload("res://graphics/enemy/boss/stg_2600/head_broken.png") 0: queue_free() + Game.instance_node(load("res://objects/enemy/boss/2600_die.tscn"),position.x,position.y,get_parent()) emit_signal("entered_phase", 4) diff --git a/objects/enemy/boss/2600.tscn b/objects/enemy/boss/2600.tscn index 06f5295..d03b780 100644 --- a/objects/enemy/boss/2600.tscn +++ b/objects/enemy/boss/2600.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=27 format=2] +[gd_scene load_steps=28 format=2] [ext_resource path="res://objects/enemy/boss/2600.gd" type="Script" id=1] [ext_resource path="res://graphics/enemy/boss/stg_2600/tailpipes.png" type="Texture" id=2] @@ -15,6 +15,7 @@ [ext_resource path="res://graphics/enemy/boss/stg_2600/beam_gradient.png" type="Texture" id=13] [ext_resource path="res://shaders/beam_cycle.gdshader" type="Shader" id=14] [ext_resource path="res://graphics/particles/dust.png" type="Texture" id=15] +[ext_resource path="res://graphics/particles/smoke.png" type="Texture" id=16] [sub_resource type="ShaderMaterial" id=11] shader = ExtResource( 3 ) @@ -72,10 +73,13 @@ tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { -"times": PoolRealArray( 1.6, 3.4 ), -"transitions": PoolRealArray( 1, 1 ), +"times": PoolRealArray( 0, 1.6, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), "values": [ { "args": [ true ], +"method": "_play_charge_sound" +}, { +"args": [ true ], "method": "_play_laser_sound" }, { "args": [ false ], @@ -340,8 +344,9 @@ texture = ExtResource( 2 ) [node name="SmokeParticles" type="CPUParticles2D" parent="Axle/Head/Tailpipes"] position = Vector2( 10, -10 ) amount = 12 -texture = ExtResource( 15 ) -direction = Vector2( 1, -1 ) +texture = ExtResource( 16 ) +direction = Vector2( 1.25, -1 ) +spread = 0.0 gravity = Vector2( 0, -30 ) initial_velocity = 20.0 initial_velocity_random = 1.0 @@ -357,8 +362,9 @@ color = Color( 0.0666667, 0.0666667, 0.0666667, 1 ) [node name="SmokeParticles2" type="CPUParticles2D" parent="Axle/Head/Tailpipes"] position = Vector2( 8, 0 ) amount = 12 -texture = ExtResource( 15 ) -direction = Vector2( 1, -1 ) +texture = ExtResource( 16 ) +direction = Vector2( 1.25, -1 ) +spread = 0.0 gravity = Vector2( 0, -30 ) initial_velocity = 20.0 initial_velocity_random = 1.0 @@ -372,8 +378,9 @@ color = Color( 0.0666667, 0.0666667, 0.0666667, 1 ) [node name="SmokeParticles3" type="CPUParticles2D" parent="Axle/Head/Tailpipes"] position = Vector2( 5, -9 ) amount = 12 -texture = ExtResource( 15 ) -direction = Vector2( 1, -1 ) +texture = ExtResource( 16 ) +direction = Vector2( 1.25, -1 ) +spread = 0.0 gravity = Vector2( 0, -30 ) initial_velocity = 20.0 initial_velocity_random = 1.0 diff --git a/objects/enemy/boss/2600_die.tscn b/objects/enemy/boss/2600_die.tscn new file mode 100644 index 0000000..da9eba2 --- /dev/null +++ b/objects/enemy/boss/2600_die.tscn @@ -0,0 +1,182 @@ +[gd_scene load_steps=11 format=2] + +[ext_resource path="res://scripts/launch_rigid.gd" type="Script" id=1] +[ext_resource path="res://graphics/enemy/boss/stg_2600/head_broken.png" type="Texture" id=2] +[ext_resource path="res://graphics/enemy/boss/stg_2600/bolt_large.png" type="Texture" id=3] +[ext_resource path="res://graphics/enemy/boss/stg_2600/leg.png" type="Texture" id=6] +[ext_resource path="res://graphics/enemy/boss/stg_2600/foot.png" type="Texture" id=7] +[ext_resource path="res://graphics/enemy/boss/stg_2600/tailpipes.png" type="Texture" id=8] +[ext_resource path="res://graphics/enemy/boss/stg_2600/bolt_medium.png" type="Texture" id=10] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 5.98485, 17.9739 ) + +[sub_resource type="RectangleShape2D" id=2] +extents = Vector2( 5.78793, 21.068 ) + +[sub_resource type="CircleShape2D" id=3] +radius = 12.0 + +[node name="2600Die" type="Node2D"] + +[node name="LegR" type="RigidBody2D" parent="."] +position = Vector2( 61, 85 ) +rotation = -0.436332 +scale = Vector2( 1, 1 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="LegR"] +texture = ExtResource( 6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 36 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="LegR"] +position = Vector2( 0.221909, 0.014267 ) +shape = SubResource( 1 ) + +[node name="LargeBoltR" type="RigidBody2D" parent="."] +position = Vector2( 56, 74 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="LargeBoltR"] +position = Vector2( -0.400002, 0.400002 ) +texture = ExtResource( 3 ) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="LargeBoltR"] +position = Vector2( -77.4, -73.6 ) +polygon = PoolVector2Array( 86, 60, 68, 60, 61, 73, 68, 88, 86, 88, 93, 75 ) + +[node name="Leg2R" type="RigidBody2D" parent="."] +position = Vector2( 61, 128 ) +rotation = 0.418879 +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="Leg2R"] +texture = ExtResource( 6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 42 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Leg2R"] +position = Vector2( 0, 0.0500336 ) +shape = SubResource( 2 ) + +[node name="SmallBoltR" type="RigidBody2D" parent="."] +position = Vector2( 71, 107 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="SmallBoltR"] +texture = ExtResource( 10 ) +region_enabled = true +region_rect = Rect2( 0, 0, 24, 24 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="SmallBoltR"] +shape = SubResource( 3 ) + +[node name="Head" type="RigidBody2D" parent="."] +position = Vector2( 46, 46 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Tailpipe" type="Sprite" parent="Head"] +position = Vector2( 41, -8 ) +texture = ExtResource( 8 ) + +[node name="Head" type="Sprite" parent="Head"] +position = Vector2( 7, 3 ) +texture = ExtResource( 2 ) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Head"] +polygon = PoolVector2Array( 2, -29, -17, -29, -26, -25, -32, -19, -34, -16, -35, -14, -37, -10, -38, -7, -39, -2, -39, 1, -40, 2, -42, 4, -43, 8, -44, 12, -44, 24, -43, 29, -41, 33, -40, 35, 40, 35, 49, 26, 49, 22, 48, 18, 46, 10, 44, 2, 43, -2, 41, -10, 40, -14, 39, -18, 27, -30, 2, -30 ) + +[node name="LegL" type="RigidBody2D" parent="."] +position = Vector2( 82, 85 ) +rotation = -0.436332 +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="LegL"] +texture = ExtResource( 6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 36 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="LegL"] +position = Vector2( 0.221909, 0.014267 ) +shape = SubResource( 1 ) + +[node name="LargeBoltL" type="RigidBody2D" parent="."] +position = Vector2( 77, 74 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="LargeBoltL"] +position = Vector2( -0.400002, 0.400002 ) +texture = ExtResource( 3 ) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="LargeBoltL"] +position = Vector2( -77.4, -73.6 ) +polygon = PoolVector2Array( 86, 60, 68, 60, 61, 73, 68, 88, 86, 88, 93, 75 ) + +[node name="Leg2L" type="RigidBody2D" parent="."] +position = Vector2( 81, 130 ) +rotation = 0.418879 +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="Leg2L"] +texture = ExtResource( 6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 42 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Leg2L"] +position = Vector2( 0, 0.0500336 ) +shape = SubResource( 2 ) + +[node name="SmallBoltL" type="RigidBody2D" parent="."] +position = Vector2( 92, 107 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="SmallBoltL"] +texture = ExtResource( 10 ) +region_enabled = true +region_rect = Rect2( 0, 0, 24, 24 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="SmallBoltL"] +shape = SubResource( 3 ) + +[node name="FootR" type="RigidBody2D" parent="."] +position = Vector2( 39, 152 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="FootR"] +texture = ExtResource( 7 ) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="FootR"] +polygon = PoolVector2Array( -2, -10, -20, 0, -20, 16, 26, 16, 26, -10, 21, -10, 18, -7, 16, -8, 14, -9, 8, -9, 5, -7, 3, -10 ) + +[node name="FootL" type="RigidBody2D" parent="."] +position = Vector2( 60, 152 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="FootL"] +texture = ExtResource( 7 ) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="FootL"] +polygon = PoolVector2Array( -2, -10, -20, 0, -20, 16, 26, 16, 26, -10, 21, -10, 18, -7, 16, -8, 14, -9, 8, -9, 5, -7, 3, -10 )