From e0e56d3ffa5afcb368ec692c5370d34daa5e2d03 Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Tue, 27 Feb 2024 22:12:30 -0500 Subject: [PATCH] add energy mechanic to sg2083 --- maps/boss/boss3_arena.gd | 6 +++++ maps/boss/boss3_arena.tscn | 27 ++++++++++++++++++++- objects/enemy/boss/fami_transform.material | Bin 406 -> 408 bytes objects/enemy/boss/sg2083.gd | 23 +++++++++++++++--- objects/enemy/boss/sg2083.tscn | 2 +- 5 files changed, 53 insertions(+), 5 deletions(-) diff --git a/maps/boss/boss3_arena.gd b/maps/boss/boss3_arena.gd index 3357b52..87d96e5 100644 --- a/maps/boss/boss3_arena.gd +++ b/maps/boss/boss3_arena.gd @@ -2,12 +2,14 @@ extends "res://maps/map.gd" onready var sg_health: HSlider = $"%SGHealth" +onready var sg_energy: HSlider = $"%SGEnergy" onready var fami_health: HSlider = $"%FamiHealth" onready var sg2083: KinematicBody2D = $"2083" onready var famira: Node2D = $Famira func _ready() -> void: + sg_energy.max_value = sg2083.max_energy sg2083.state = sg2083.State.INACTIVE famira.animation_player.play("grow", -1.0, 0.0) @@ -27,3 +29,7 @@ func _on_cutscene_finished() -> void: famira.animation_player.play("grow") yield(get_tree().create_timer(0.5), "timeout") $FamiCutscene/FamiHuman.visible = false + + +func _on_2083_energy_changed(amount) -> void: + sg_energy.value = amount diff --git a/maps/boss/boss3_arena.tscn b/maps/boss/boss3_arena.tscn index 6eb41eb..88e56e0 100644 --- a/maps/boss/boss3_arena.tscn +++ b/maps/boss/boss3_arena.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=8 format=2] +[gd_scene load_steps=9 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] @@ -7,10 +7,12 @@ [ext_resource path="res://ui/theme.tres" type="Theme" id=5] [ext_resource path="res://tilesets/t_station.tres" type="TileSet" id=6] [ext_resource path="res://cutscenes/fami_cutscene.tscn" type="PackedScene" id=7] +[ext_resource path="res://objects/lore/boss/fami.tscn" type="PackedScene" id=8] [node name="Map" type="Node2D" groups=["map"]] pause_mode = 1 script = ExtResource( 3 ) +lore_entries = [ ExtResource( 8 ) ] [node name="GUI" type="CanvasLayer" parent="."] @@ -25,6 +27,25 @@ margin_bottom = 192.0 size_flags_horizontal = 3 alignment = 2 +[node name="HBoxContainer2" type="HBoxContainer" parent="GUI/Control/VBoxContainer"] +margin_top = 168.0 +margin_right = 126.0 +margin_bottom = 178.0 + +[node name="Label" type="Label" parent="GUI/Control/VBoxContainer/HBoxContainer2"] +margin_right = 49.0 +margin_bottom = 10.0 +text = " Energy" + +[node name="SGEnergy" type="HSlider" parent="GUI/Control/VBoxContainer/HBoxContainer2"] +unique_name_in_owner = true +margin_left = 53.0 +margin_right = 126.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +value = 100.0 +scrollable = false + [node name="HBoxContainer" type="HBoxContainer" parent="GUI/Control/VBoxContainer"] margin_top = 182.0 margin_right = 126.0 @@ -92,9 +113,12 @@ position = Vector2( 0, 12 ) famira_path = NodePath("../Famira") [node name="Camera2D" type="Camera2D" parent="2083"] +position = Vector2( 0, -4 ) offset = Vector2( 0, -8 ) anchor_mode = 0 current = true +limit_top = 8 +limit_bottom = 192 [node name="Famira" parent="." instance=ExtResource( 4 )] visible = false @@ -102,5 +126,6 @@ position = Vector2( 160, 179 ) sg2083_path = NodePath("../2083") [connection signal="cutscene_finished" from="FamiCutscene" to="." method="_on_cutscene_finished"] +[connection signal="energy_changed" from="2083" to="." method="_on_2083_energy_changed"] [connection signal="health_changed" from="2083" to="." method="_on_2083_health_changed"] [connection signal="health_changed" from="Famira" to="." method="_on_Famira_health_changed"] diff --git a/objects/enemy/boss/fami_transform.material b/objects/enemy/boss/fami_transform.material index 913442d7673ee6e6d74a453b47be2d66106b799a..3d93c44710550ef90f4f14c518553d8df16c5c98 100644 GIT binary patch delta 301 zcmV+|0n+}K1DFGUQd2`i0ssI201yBG_yPa`fB^siD77#BVE6&G3jl^vKs8XsCLI(v zQ4@YpXsBk2VWzXQp>6Vzy|);bSR!dx7MT4?NuxPKKG<>c_^-TOl45Q(Bb@>(04@MB z0FI^Oi}6yC;R`ix+}2D^_O!{zw(&>y^8d^Kg+Fz?Q#p8lDYZENEtCHQe>(cULA?J{4w?Z`c`^sJlDcI_0>OzEH=AS};W;7a6ctxX0 zm_i6s#{dB&(?kLwBNB=HclduW1po>8Uy*SGjcYQM`~{baW#9s0Aj_%)lOO?hE>?ow delta 299 zcmV+`0o4AO1C|4SQd2`i0ssI201yBG_yPa`egOagD77#BVE6&03jl`FKQutaC>>YD zMOE*~|Lhrshv5cj@i(c+-Wy{}8j;+Vvc3)LGh{dP!&?!YLG*drIryh|#1tz4E&wtB zj-}&^@luiD3pH-s)=WYz>O>Q zZ0o_17F6f*nXWmWZQn{QNf=G>U*Pj{+$L1?NbY void: State.DEAD: return State.STAND: - if Input.is_action_pressed("move_down"): + if Input.is_action_pressed("move_down") and energy >= duck_energy: + set_energy(energy - duck_energy) state = State.DUCK anims.play("Duck") elif Input.is_action_pressed("move_right"): @@ -53,18 +61,25 @@ func _physics_process(delta: float) -> void: move_and_slide(Vector2(-move_speed, 0.0)) move_and_slide(Vector2(-knockback, 0.0)) knockback *= pow(0.1, delta) + set_energy(energy + energy_recovery * delta) func _input(event: InputEvent) -> void: if state == State.DEAD: return - if event.is_action_pressed("shoot") and (state == State.STAND or state == State.FORWARD or state == State.BACK): + if event.is_action_pressed("shoot") and (state == State.STAND or state == State.FORWARD or state == State.BACK) and energy >= bullet_energy: shoot() - if event.is_action_pressed("jump") and state == State.STAND: + if event.is_action_pressed("jump") and state == State.STAND and energy >= beam_energy: beam() +func set_energy(value: float) -> void: + energy = clamp(value, 0.0, max_energy) + emit_signal("energy_changed", energy) + + func shoot() -> void: + set_energy(energy - bullet_energy) Audio.play_sound(Audio.a_bullet_barrage,Audio.ac_collectible) for pos in bullet_positions.get_children(): var bullet = Bullet.instance() @@ -77,6 +92,8 @@ func shoot() -> void: func beam() -> void: state = State.BEAM + var tween = create_tween() + tween.tween_method(self, "set_energy", energy, energy - beam_energy, 0.9) anims.play("Beam") diff --git a/objects/enemy/boss/sg2083.tscn b/objects/enemy/boss/sg2083.tscn index 63edd1e..7855ed4 100644 --- a/objects/enemy/boss/sg2083.tscn +++ b/objects/enemy/boss/sg2083.tscn @@ -1607,7 +1607,7 @@ update_scale = false [node name="KneeBack" type="Sprite" parent="Axle"] modulate = Color( 0.74902, 0.74902, 0.74902, 1 ) -position = Vector2( 6.25089, 28.1233 ) +position = Vector2( 6.25088, 28.1233 ) scale = Vector2( 1, -1 ) z_index = -1 texture = ExtResource( 8 )