The_Dark_Side_of_Earth/traps/morning_star.gd

34 lines
925 B
GDScript

extends Trap
@onready var ball : Area2D = $Area2D
var anglespeed = 0.3
var player_damage = 1
var enemy_damage = 10
@onready var dmg_id = Global.next_dmg_id
var id_refreshing = false
func _ready() -> void:
rotate(randf() * TAU)
anglespeed = anglespeed * (2 * randi_range(0,1) - 1)
func _process(delta: float) -> void:
rotate(anglespeed * delta * TAU)
for target in ball.get_overlapping_areas():
damage_target(target)
for target in ball.get_overlapping_bodies():
damage_target(target)
func damage_target(target: CollisionObject2D):
var dir = (ball.global_position - target.global_position).normalized()
if(target.get_collision_layer_value(3)):
target.hurt(player_damage, dir)
else:
target.hurt(enemy_damage, 2.5*dir, dmg_id)
refresh_id()
func refresh_id():
if not id_refreshing:
id_refreshing = true
await get_tree().create_timer(0.2).timeout
id_refreshing = false
dmg_id = Global.next_dmg_id