added driftling
This commit is contained in:
@@ -28,6 +28,10 @@ var mage_unlocked: bool = 0
|
||||
|
||||
|
||||
func check_high_score(level_title: String, wave_reached: int, endless: bool) -> void:
|
||||
if !endless_high_scores.has(level_title):
|
||||
endless_high_scores[level_title] = 0
|
||||
if !level_high_scores.has(level_title):
|
||||
level_high_scores[level_title] = 0
|
||||
if endless and endless_high_scores[level_title] < wave_reached:
|
||||
endless_high_scores[level_title] = wave_reached
|
||||
elif level_high_scores[level_title] < wave_reached:
|
||||
|
||||
55
Scripts/driftling_drippler.gd
Normal file
55
Scripts/driftling_drippler.gd
Normal file
@@ -0,0 +1,55 @@
|
||||
class_name DriftlingDrippler
|
||||
extends Node
|
||||
|
||||
enum DriftlingDrippleState {
|
||||
BLOATING = 0,
|
||||
FLOATING = 1,
|
||||
CHOAKING = 2,
|
||||
CROAKING = 3
|
||||
}
|
||||
|
||||
@export var driftling: EnemyController
|
||||
@export var animator: AnimationTree
|
||||
@export var model: Node3D
|
||||
@export var bloat_hitbox: Hitbox
|
||||
@export var croak_hitbox: Hitbox
|
||||
|
||||
var time_to_bloat: float = 1.5
|
||||
var time_to_float: float = 3.0
|
||||
var time_to_choak: float = 0.8
|
||||
var time_to_croak: float = 0.4
|
||||
var state: DriftlingDrippleState = DriftlingDrippleState.BLOATING
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
time_to_bloat += NoiseRandom.randf_in_range(name.to_int(), 0.0, 0.5)
|
||||
time_to_float += NoiseRandom.randf_in_range(name.to_int(), 0.0, 2.0)
|
||||
time_to_choak += NoiseRandom.randf_in_range(name.to_int(), 0.0, 0.4)
|
||||
time_to_croak += NoiseRandom.randf_in_range(name.to_int(), 0.0, 0.2)
|
||||
next_state(DriftlingDrippleState.BLOATING)
|
||||
|
||||
|
||||
func set_dripple(amount: float) -> void:
|
||||
animator.set("parameters/Blend2/blend_amount", amount)
|
||||
|
||||
|
||||
func next_state(state: DriftlingDrippleState) -> void:
|
||||
var tween: Tween = create_tween()
|
||||
|
||||
match state:
|
||||
DriftlingDrippleState.BLOATING:
|
||||
tween.tween_method(set_dripple, 1.0, 0.0, time_to_bloat)
|
||||
tween.tween_property(model, "position", Vector3.UP * 3.0, time_to_bloat)
|
||||
tween.tween_callback(next_state.bind(DriftlingDrippleState.FLOATING))
|
||||
DriftlingDrippleState.FLOATING:
|
||||
bloat_hitbox.disabled = false
|
||||
tween.tween_interval(time_to_float)
|
||||
tween.tween_callback(next_state.bind(DriftlingDrippleState.CHOAKING))
|
||||
DriftlingDrippleState.CHOAKING:
|
||||
bloat_hitbox.disabled = true
|
||||
tween.tween_method(set_dripple, 0.0, 1.0, time_to_croak)
|
||||
tween.tween_property(model, "position", Vector3.DOWN * 3.0, time_to_croak)
|
||||
tween.tween_callback(next_state.bind(DriftlingDrippleState.CROAKING))
|
||||
DriftlingDrippleState.CROAKING:
|
||||
tween.tween_interval(time_to_float)
|
||||
tween.tween_callback(next_state.bind(DriftlingDrippleState.BLOATING))
|
||||
1
Scripts/driftling_drippler.gd.uid
Normal file
1
Scripts/driftling_drippler.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cxu1voan64i5g
|
||||
@@ -24,13 +24,13 @@ func enemy_entered_shield_range(body: Node3D) -> void:
|
||||
body.reached_goal.connect(enemy_reached_goal)
|
||||
|
||||
|
||||
func enemy_died(enemy: Enemy) -> void:
|
||||
func enemy_died(_enemy: Enemy) -> void:
|
||||
enemies_inside -= 1
|
||||
if enemies_inside == 0:
|
||||
goal_cleared.emit()
|
||||
|
||||
|
||||
func enemy_reached_goal(enemy: Enemy, penalty: int) -> void:
|
||||
func enemy_reached_goal(_enemy: Enemy, _penalty: int) -> void:
|
||||
enemies_inside -= 1
|
||||
if enemies_inside == 0:
|
||||
goal_cleared.emit()
|
||||
|
||||
Reference in New Issue
Block a user