class_name StatusEffect
extends Resource
## A status effect is a temporary effect that can be applied to a creature.

## Duration of the status effect in seconds.
@export var duration: float = 0.0

## Magnitude of the status effect.
@export var magnitude: float = 0.0


## Apply the status effect to a creature.
func apply(creature: Creature) -> void:
	if self.has_method("_apply"):
		self.call("_apply", creature)


## Remove the status effect from a creature.
func remove(creature: Creature) -> void:
	if self.has_method("_remove"):
		self.call("_remove", creature)


## Tick the status effect on a creature.
func tick(creature: Creature, delta: float) -> void:
	if self.has_method("_tick"):
		self.call("_tick", creature, delta)
