extends Node #The time, in seconds, it should take for the character to fade to FadeOutValue export var FadeOutTime = 2.0 export var InvisTime = 5.0 export var FadeInTime = 2.0 #The alpha value we aim for when fading out export var FadeOutValue = 0.05 func AlmostFadeOutRoutine(player, delta): var sprite : Sprite = player.get_node("Sprite") var elapsed = delta var origin = sprite.get_modulate().a while sprite.self_modulate.a > FadeOutValue: var a = lerp(origin, FadeOutValue, elapsed / FadeOutTime) sprite.self_modulate = Color(1,1,1, a) elapsed += yield() elapsed -= FadeOutTime; while elapsed < InvisTime: elapsed += yield() elapsed -= InvisTime; while sprite.self_modulate.a < origin: var a = lerp(FadeOutValue, origin, elapsed / FadeInTime) sprite.self_modulate = Color(1,1,1, a) elapsed += yield() func StartEffect(player): var rout = AlmostFadeOutRoutine(player, 0) return rout