public void HandleAreaEffectDestroyed(AreaEffectEntityData areaEffect)
        {
            Log.Write($"HandleAreaEffectDestroyed({areaEffect.Blueprint.name})");
            var caster = areaEffect.Context.MaybeCaster;

            if (caster?.IsPlayerFaction == true &&
                DismissAreaEffectLogic.GetCasterAreaEffects(caster).All(a => a == areaEffect))
            {
                caster.Descriptor.RemoveFact(dismiss);
            }
        }
        public void HandleAreaEffectSpawned(AreaEffectEntityData areaEffect)
        {
            Log.Write($"HandleAreaEffectSpawned({areaEffect.Blueprint.name})");
            var caster = areaEffect.Context.MaybeCaster;

            if (caster?.IsPlayerFaction == true && DismissAreaEffectLogic.IsAreaEffectSpell(areaEffect) &&
                !caster.Descriptor.HasFact(dismiss))
            {
                caster.Descriptor.AddFact(dismiss);
            }
        }
        public override void RunAction()
        {
            var context = Context.SourceAbilityContext;

            if (context == null)
            {
                return;
            }

            DismissAreaEffectLogic.EndTargetAreaEffect(context.Caster, Target);
        }