class_name EffectDef extends NBattleObject ## Definition of an effect. Register with BattleContext to create effect types. ## The factory is a Callable that returns a new EffectBase instance. var name: String var _factory: Callable func _init(context: BattleContext, name_val: String, factory: Callable) -> void: super._init(context) name = name_val _factory = factory func get_type() -> NBattleObject.Type: return NBattleObject.Type.EFFECT_DEF func get_name() -> String: return name ## Creates a new instance of this effect using the registered factory. func create_instance() -> EffectBase: return _factory.call()