boss start, some enemies

This commit is contained in:
Daniel Kauss Serna 2026-04-16 18:53:36 +02:00
parent 93968ff9fb
commit 66ecb04bd1
123 changed files with 1884 additions and 499 deletions

View file

@ -32,11 +32,14 @@ func _physics_process(delta: float) -> void:
else:
_handle_attack_charge(delta)
main_visual.flip_h = target_node.position.x > position.x
scale = Vector2.ONE * (1 + (current_charge * 0.2))
_sprite_anim()
super._physics_process(delta)
func _sprite_anim():
main_visual.flip_h = target_node.position.x > position.x
scale = Vector2.ONE * (1 + (current_charge * 0.2))
func _handle_attack_charge(delta):
current_charge += delta

View file

@ -9,9 +9,9 @@ extends MaskAbility
var traveled: float = 0.0
var bouncing = false
var target : Enemy = null
var target : Entity = null
var bounces := max_bounces
var already_hit : Array[Enemy] = []
var already_hit : Array[Entity] = []
func mask_ready():
super.mask_ready()
@ -66,3 +66,5 @@ func _on_hitbox_hit_entity(entity : Entity) -> void:
target = entity
already_hit = [entity]
#change_target()
else:
entity.damage()

View file

@ -2,9 +2,11 @@ class_name Hitbox extends Area2D
signal hit_entity(entity : Entity);
signal hit_obstacle;
var from_player = true
var enabled = true
@export var deal_damage = true
@export var dmg = 1
func _ready() -> void:
collision_mask = 1 | 2 | 4
@ -20,14 +22,14 @@ func _on_body_entered(body: Node) -> void:
if not enabled: return
if body is Enemy and from_player:
if deal_damage:
body.damage()
body.damage(dmg)
body.knockback()
hit_entity.emit(body)
if body is Player and not from_player:
if deal_damage:
body.damage()
body.damage(dmg)
hit_entity.emit(body)

View file

@ -2,7 +2,8 @@ extends MaskAbility
func mask_ready():
super.mask_ready()
look_at(target_position)
if target_position.x < global_position.x:
scale.x = -1
func _on_animation_player_animation_finished(_anim_name: StringName) -> void:
queue_free()

View file

@ -1,45 +0,0 @@
extends Node2D
@export var speed: float = 400.0
@export var max_height: float = 100.0
@export var payload : PackedScene
var target_position: Vector2
@onready var sprite = $Bomb
var start_position: Vector2
var distance_total: float
var distance_covered: float = 0.0
var from_player = true
func set_from_player(value):
from_player = value
func _ready():
start_position = global_position
distance_total = 150
func _process(delta):
if distance_covered < distance_total:
distance_covered += speed * delta
var t = clamp(distance_covered / distance_total, 0.0, 1.0)
global_position = start_position.lerp(target_position, t)
var arc_y = 4 * max_height * t * (1 - t)
sprite.position.y = -arc_y
else:
global_position = target_position
sprite.position.y = 0
set_process(false)
on_arrival()
func on_arrival():
EventBus.screenshake.emit(1)
var ins = payload.instantiate()
ins.set_from_player(from_player)
ins.global_position = global_position
get_parent().add_child(ins)
queue_free()

View file

@ -1 +0,0 @@
uid://ctninfm8hkbp2

View file

@ -1,14 +0,0 @@
extends Enemy
#func _draw():
#if charge > 0.1:
#var color = Color.RED.lerp(Color.WHITE, charge / charge_time)
#if player:
#draw_dashed_line(Vector2.ZERO, to_local(player.global_position), color, 1, 5)
#
#func _process(delta: float) -> void:
#super._process(delta)
#if (charge > 0.1):
#$Anim.play("attack")
#else:
#$Anim.play("default")

View file

@ -1 +0,0 @@
uid://bpabecs0hf676

View file

@ -1,10 +0,0 @@
extends CPUParticles2D
func _ready() -> void:
emitting = true
func set_from_player(value):
$Hitbox.from_player = value
func _on_finished() -> void:
queue_free()

View file

@ -1 +0,0 @@
uid://8bsq7kvqky3d