wonderful sounds and visuals
BIN
audio/sounds/copsquash.ogg
Normal file
15
audio/sounds/copsquash.ogg.import
Normal file
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/copsquash.ogg-a2a63a7fc30ae2fd8b3edcf426e02f2a.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://audio/sounds/copsquash.ogg"
|
||||
dest_files=[ "res://.import/copsquash.ogg-a2a63a7fc30ae2fd8b3edcf426e02f2a.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
BIN
audio/sounds/fami_transform.ogg
Normal file
15
audio/sounds/fami_transform.ogg.import
Normal file
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/fami_transform.ogg-36f9a31db915a5c7f08d6eca0c6987e2.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://audio/sounds/fami_transform.ogg"
|
||||
dest_files=[ "res://.import/fami_transform.ogg-36f9a31db915a5c7f08d6eca0c6987e2.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
15
audio/sounds/laser_charge.ogg.import
Normal file
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/laser_charge.ogg-3dd55e9655eb311b462e45b101329c49.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://audio/sounds/laser_charge.ogg"
|
||||
dest_files=[ "res://.import/laser_charge.ogg-3dd55e9655eb311b462e45b101329c49.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
BIN
audio/sounds/laser_ready.ogg
Normal file
15
audio/sounds/laser_ready.ogg.import
Normal file
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/laser_ready.ogg-31781bea44cd48185c1814586386ce52.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://audio/sounds/laser_ready.ogg"
|
||||
dest_files=[ "res://.import/laser_ready.ogg-31781bea44cd48185c1814586386ce52.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
|
@ -56,6 +56,10 @@ const a_msx_die = preload("res://audio/sounds/msx_die.ogg")
|
|||
const a_famira = preload("res://audio/sounds/famira.ogg")
|
||||
const a_vulcan = preload("res://audio/sounds/se_g2.wav")
|
||||
const a_grumble = preload("res://audio/sounds/fami_grumble.ogg")
|
||||
const a_laser_ready = preload("res://audio/sounds/laser_ready.ogg")
|
||||
const a_copsquash = preload("res://audio/sounds/copsquash.ogg")
|
||||
const a_copsquash2 = preload("res://audio/sounds/cop_splat.ogg")
|
||||
const a_fami_transform = preload("res://audio/sounds/fami_transform.ogg")
|
||||
|
||||
var loop_section = null
|
||||
var has_looped = false
|
||||
|
|
|
@ -13,6 +13,7 @@ func _init() -> void:
|
|||
|
||||
func _on_cutscene_finished() -> void:
|
||||
Game.can_pause = true
|
||||
Audio.play_sound(Audio.a_fami_transform,Audio.ac_voice)
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
if animation_player.current_animation_position < cutscene_skip:
|
||||
|
@ -32,6 +33,8 @@ func kill_cop() -> void:
|
|||
var splatter := DeathParticles.instance()
|
||||
splatter.global_position = $Cop.global_position
|
||||
splatter.emitting = true
|
||||
Audio.play_sound(Audio.a_copsquash,Audio.ac_land)
|
||||
Audio.play_sound(Audio.a_copsquash2,Audio.ac_voice)
|
||||
add_child(splatter)
|
||||
$Cop.queue_free()
|
||||
|
||||
|
|
|
@ -403,7 +403,7 @@ material = ExtResource( 19 )
|
|||
position = Vector2( 160, 167 )
|
||||
scale = Vector2( -1, 1 )
|
||||
frames = SubResource( 7 )
|
||||
animation = "orb"
|
||||
animation = "idle"
|
||||
playing = true
|
||||
|
||||
[node name="FamiVoice" type="AudioStreamPlayer" parent="."]
|
||||
|
@ -417,7 +417,7 @@ anims/cutscene = SubResource( 2 )
|
|||
|
||||
[node name="Cop" type="AnimatedSprite" parent="."]
|
||||
material = SubResource( 8 )
|
||||
position = Vector2( 72, 169 )
|
||||
position = Vector2( -8, 169 )
|
||||
frames = SubResource( 13 )
|
||||
animation = "gun"
|
||||
playing = true
|
||||
|
|
Before Width: | Height: | Size: 203 KiB After Width: | Height: | Size: 93 KiB |
BIN
graphics/enemy/boss/famira_fire.png
Normal file
After Width: | Height: | Size: 197 B |
35
graphics/enemy/boss/famira_fire.png.import
Normal file
|
@ -0,0 +1,35 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/famira_fire.png-e17dc562be1c1f2c970eb59a9cfda450.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://graphics/enemy/boss/famira_fire.png"
|
||||
dest_files=[ "res://.import/famira_fire.png-e17dc562be1c1f2c970eb59a9cfda450.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
|
Before Width: | Height: | Size: 228 B After Width: | Height: | Size: 238 B |
Before Width: | Height: | Size: 206 B After Width: | Height: | Size: 207 B |
|
@ -4,6 +4,7 @@ extends "res://maps/map.gd"
|
|||
onready var sg_health: TextureProgress = $"%SGHealthBar"
|
||||
onready var sg_energy: TextureProgress = $"%SGEnergyBar"
|
||||
onready var fami_health: TextureProgress = $"%FamiHealthBar"
|
||||
onready var laser_ok: TextureRect = $"%LaserOk"
|
||||
onready var sg2083: KinematicBody2D = $"2083"
|
||||
onready var famira: Node2D = $Famira
|
||||
|
||||
|
@ -13,15 +14,13 @@ func _ready() -> void:
|
|||
sg2083.state = sg2083.State.INACTIVE
|
||||
famira.animation_player.play("grow", -1.0, 0.0)
|
||||
|
||||
func _process(delta):
|
||||
sg_energy.value -= 1
|
||||
|
||||
func _on_2083_health_changed(amount) -> void:
|
||||
sg_health.value = amount
|
||||
sg_health.value = amount - 4
|
||||
|
||||
|
||||
func _on_Famira_health_changed(amount) -> void:
|
||||
fami_health.value = amount
|
||||
fami_health.value = ceil(amount) - 3
|
||||
|
||||
|
||||
func _on_cutscene_finished() -> void:
|
||||
|
@ -49,8 +48,14 @@ func start_fight() -> void:
|
|||
famira.animation_player.state_chart.send_event("transformed")
|
||||
|
||||
|
||||
func _on_2083_energy_changed(amount) -> void:
|
||||
sg_energy.value = amount
|
||||
func _on_2083_energy_changed(amount,laser_energy) -> void:
|
||||
sg_energy.value = amount - 3
|
||||
#Display heads up of laser status
|
||||
if amount >= laser_energy:
|
||||
if !Audio.ac_collectible.is_playing() && $"%LaserOk".visible == false: Audio.play_sound(Audio.a_laser_ready,Audio.ac_collectible)
|
||||
$"%LaserOk".visible = true
|
||||
else:
|
||||
$"%LaserOk".visible = false
|
||||
|
||||
|
||||
func _on_Famira_died() -> void:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=20 format=2]
|
||||
[gd_scene load_steps=28 format=2]
|
||||
|
||||
[ext_resource path="res://objects/enemy/boss/sg2083.tscn" type="PackedScene" id=1]
|
||||
[ext_resource path="res://tilesets/t_laboratory.tres" type="TileSet" id=2]
|
||||
|
@ -17,6 +17,31 @@
|
|||
[ext_resource path="res://graphics/hud/2083_energy_filled.png" type="Texture" id=15]
|
||||
[ext_resource path="res://graphics/hud/2083_health_filled.png" type="Texture" id=16]
|
||||
[ext_resource path="res://graphics/hud/2083_health_back.png" type="Texture" id=17]
|
||||
[ext_resource path="res://shaders/color_noise.gdshader" type="Shader" id=18]
|
||||
[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=19]
|
||||
[ext_resource path="res://shaders/beam_cycle.gdshader" type="Shader" id=20]
|
||||
[ext_resource path="res://graphics/enemy/boss/stg_2600/beam_gradient.png" type="Texture" id=21]
|
||||
[ext_resource path="res://graphics/hud/laser_ok_text.png" type="Texture" id=22]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id=4]
|
||||
shader = ExtResource( 19 )
|
||||
shader_param/color_1 = Color( 1, 0.282353, 0, 0 )
|
||||
shader_param/color_2 = Color( 0.478431, 0.113725, 0, 0.619608 )
|
||||
shader_param/checker_size = Vector2( 4, 6 )
|
||||
shader_param/pan_speed = Vector2( 4, 6 )
|
||||
shader_param/cycle_speed = Vector2( 8, 0 )
|
||||
shader_param/cycle_alternation = Vector2( 1, 8 )
|
||||
shader_param/uv_transform = Transform2D( 1, 2, 1, 3, 0, 0 )
|
||||
|
||||
[sub_resource type="ShaderMaterial" id=3]
|
||||
shader = ExtResource( 18 )
|
||||
shader_param/animate_noise = true
|
||||
shader_param/noise_intensity = 1.0
|
||||
|
||||
[sub_resource type="ShaderMaterial" id=5]
|
||||
shader = ExtResource( 20 )
|
||||
shader_param/cycle_speed = 3.0
|
||||
shader_param/gradient = ExtResource( 21 )
|
||||
|
||||
[sub_resource type="Animation" id=1]
|
||||
length = 0.001
|
||||
|
@ -65,7 +90,7 @@ tracks/3/keys = {
|
|||
"values": [ false ]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/path = NodePath("ParallaxBackground/ParallaxLayer/Sprite:visible")
|
||||
tracks/4/path = NodePath("CanvasLayer/Sprite:visible")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/imported = false
|
||||
|
@ -174,16 +199,26 @@ pause_mode = 1
|
|||
script = ExtResource( 3 )
|
||||
lore_entries = [ ExtResource( 8 ) ]
|
||||
|
||||
[node name="ParallaxBackground" type="ParallaxBackground" parent="."]
|
||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||
layer = -11
|
||||
|
||||
[node name="ParallaxLayer" type="ParallaxLayer" parent="ParallaxBackground"]
|
||||
motion_scale = Vector2( 0.5, 1 )
|
||||
|
||||
[node name="Sprite" type="Sprite" parent="ParallaxBackground/ParallaxLayer"]
|
||||
[node name="Sprite" type="Sprite" parent="CanvasLayer"]
|
||||
position = Vector2( 128, 0 )
|
||||
texture = ExtResource( 9 )
|
||||
centered = false
|
||||
offset = Vector2( -128, 0 )
|
||||
|
||||
[node name="ColorRect2" type="ColorRect" parent="CanvasLayer"]
|
||||
material = SubResource( 4 )
|
||||
margin_right = 256.0
|
||||
margin_bottom = 192.0
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="CanvasLayer"]
|
||||
material = SubResource( 3 )
|
||||
margin_right = 256.0
|
||||
margin_bottom = 192.0
|
||||
color = Color( 1, 0, 0, 0.333333 )
|
||||
|
||||
[node name="GUI" type="CanvasLayer" parent="."]
|
||||
|
||||
[node name="Control" type="Control" parent="GUI"]
|
||||
|
@ -221,6 +256,16 @@ margin_right = 100.0
|
|||
margin_bottom = 22.0
|
||||
texture = ExtResource( 10 )
|
||||
|
||||
[node name="LaserOk" type="TextureRect" parent="GUI/Control/Energy"]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
material = SubResource( 5 )
|
||||
margin_left = 60.0
|
||||
margin_top = 11.0
|
||||
margin_right = 100.0
|
||||
margin_bottom = 22.0
|
||||
texture = ExtResource( 22 )
|
||||
|
||||
[node name="FamiHealth" type="Control" parent="GUI/Control/Energy"]
|
||||
margin_left = 140.0
|
||||
margin_top = -163.0
|
||||
|
|
|
@ -112,8 +112,8 @@ margin_top = 8.0
|
|||
margin_right = 253.0
|
||||
margin_bottom = 44.0
|
||||
text = "Select the difficulty of the
|
||||
future, sg loves hot chips but that
|
||||
doesn't mean you have to"
|
||||
future, sg loves hot peppers but
|
||||
that doesn't mean you have to!"
|
||||
|
||||
[node name="Label2" type="Label" parent="DifficultySelect"]
|
||||
material = ExtResource( 8 )
|
||||
|
|
|
@ -6,7 +6,7 @@ signal health_changed(amount)
|
|||
|
||||
|
||||
export var push_speed: float = 30.0
|
||||
export var chase_speed: float = 50.0
|
||||
export var chase_speed: float = 65.0
|
||||
export var breath_dps: float = 20.0
|
||||
export var breath_knockback: float = 16.0
|
||||
export var punch_damage: float = 8.0
|
||||
|
@ -38,6 +38,7 @@ func _physics_process(delta: float) -> void:
|
|||
state_chart.send_event("in_range")
|
||||
if fmod(Game.time, 15.0) == 0.0:
|
||||
Audio.play_sound(Audio.a_grumble,Audio.ac_boss)
|
||||
print(hp)
|
||||
|
||||
|
||||
func start_push() -> void:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=54 format=2]
|
||||
[gd_scene load_steps=55 format=2]
|
||||
|
||||
[ext_resource path="res://objects/enemy/boss/famira.gd" type="Script" id=1]
|
||||
[ext_resource path="res://shaders/scale3x.gdshader" type="Shader" id=2]
|
||||
|
@ -27,6 +27,7 @@
|
|||
[ext_resource path="res://graphics/enemy/boss/fami_parts/head_upper.png" type="Texture" id=25]
|
||||
[ext_resource path="res://graphics/enemy/boss/fami_parts/eye.png" type="Texture" id=26]
|
||||
[ext_resource path="res://audio/sounds/fami_grumble.ogg" type="AudioStream" id=27]
|
||||
[ext_resource path="res://graphics/enemy/boss/famira_fire.png" type="Texture" id=28]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=11]
|
||||
extents = Vector2( 28, 64 )
|
||||
|
@ -1759,7 +1760,7 @@ shader = ExtResource( 2 )
|
|||
shader_param/pixel_scale = 1.0
|
||||
|
||||
[sub_resource type="Curve" id=8]
|
||||
_data = [ Vector2( 0, 0.5 ), 0.0, 0.890696, 0, 0, Vector2( 0.814474, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), -13.2988, 0.0, 0, 0 ]
|
||||
_data = [ Vector2( 0, 0.5 ), 0.0, 0.890696, 0, 0, Vector2( 0.79703, 0.718182 ), 0.0, 0.0, 0, 0, Vector2( 0.985149, 0 ), -13.2988, 0.0, 0, 0 ]
|
||||
|
||||
[sub_resource type="Gradient" id=9]
|
||||
offsets = PoolRealArray( 0, 0.163743, 0.432749, 0.596491, 0.853801, 1 )
|
||||
|
@ -3906,7 +3907,7 @@ lifetime = 2.0
|
|||
lifetime_randomness = 0.5
|
||||
local_coords = false
|
||||
draw_order = 1
|
||||
texture = ExtResource( 15 )
|
||||
texture = ExtResource( 28 )
|
||||
emission_shape = 2
|
||||
emission_rect_extents = Vector2( 0, 0 )
|
||||
direction = Vector2( -1, 0 )
|
||||
|
|
|
@ -3,7 +3,7 @@ extends KinematicBody2D
|
|||
|
||||
signal died()
|
||||
signal health_changed(amount)
|
||||
signal energy_changed(amount)
|
||||
signal energy_changed(amount,laser_energy)
|
||||
|
||||
|
||||
enum State {DEAD, STAND, FORWARD, BACK, DUCK, BEAM, INACTIVE}
|
||||
|
@ -76,8 +76,7 @@ func _input(event: InputEvent) -> void:
|
|||
|
||||
func set_energy(value: float) -> void:
|
||||
energy = clamp(value, 0.0, max_energy)
|
||||
emit_signal("energy_changed", energy)
|
||||
|
||||
emit_signal("energy_changed", energy, beam_energy)
|
||||
|
||||
func land(duck: bool) -> void:
|
||||
if duck:
|
||||
|
|