add purge spell scene and effect script
parent
b98780ae89
commit
376930483a
|
|
@ -0,0 +1,10 @@
|
|||
[gd_scene load_steps=3 format=3]
|
||||
|
||||
[ext_resource type="PackedScene" path="res://scenes/summon_circle.tscn" id="1_summon"]
|
||||
[ext_resource type="Script" path="res://scripts/purge.gd" id="2_script"]
|
||||
|
||||
[node name="Purge" type="Node2D"]
|
||||
script = ExtResource("2_script")
|
||||
|
||||
[node name="SummonCircle" parent="." instance=ExtResource("1_summon")]
|
||||
position = Vector2(0, 8)
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
extends Node2D
|
||||
|
||||
const ELITE_DAMAGE_PCT := 0.75
|
||||
const FLASH_FADE_DURATION := 0.6
|
||||
|
||||
@onready var summon_circle: AnimatedSprite2D = $SummonCircle/AnimatedSprite2D
|
||||
|
||||
func _ready() -> void:
|
||||
summon_circle.sprite_frames = summon_circle.sprite_frames.duplicate()
|
||||
summon_circle.sprite_frames.set_animation_loop("default", false)
|
||||
summon_circle.animation_finished.connect(_unleash)
|
||||
summon_circle.play("default")
|
||||
|
||||
func _unleash() -> void:
|
||||
var camera = get_node("/root/Game/Camera2D")
|
||||
camera.shake(0.5, 1.5)
|
||||
|
||||
for enemy in get_tree().get_nodes_in_group("enemies"):
|
||||
if not is_instance_valid(enemy):
|
||||
continue
|
||||
if enemy.scale.x > 1.0:
|
||||
enemy.take_damage(int(enemy.max_hp * ELITE_DAMAGE_PCT))
|
||||
else:
|
||||
enemy.take_damage(enemy.hp)
|
||||
|
||||
_flash()
|
||||
|
||||
func _flash() -> void:
|
||||
var layer = CanvasLayer.new()
|
||||
layer.layer = 100
|
||||
add_child(layer)
|
||||
|
||||
var rect = ColorRect.new()
|
||||
rect.color = Color(1, 1, 1, 1)
|
||||
rect.set_anchors_preset(Control.PRESET_FULL_RECT)
|
||||
rect.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
layer.add_child(rect)
|
||||
|
||||
var tween = create_tween()
|
||||
tween.tween_property(rect, "color:a", 0.0, FLASH_FADE_DURATION)
|
||||
await tween.finished
|
||||
queue_free()
|
||||
Loading…
Reference in New Issue