public override void Perform()
        {
            if (IsEnding)
                return;

            if (!Timer.IsDelayCompleted(DEFAULT_EFFECT_DELAY))
                return;

            AnimationMapEffect effect = new AnimationMapEffect(Spell.Effect);
            Vector2I launchingPosition = Spell.RangeArea.GetRandomCellPosition(LaunchingCellPosition);

            MapEffectManager.Instance.AddEffect(effect, CombatCell.GetCenterFromCellPosition(launchingPosition));

            foreach (CombatCell cell in GetCombat().GetCellFromArea(Spell.EffectArea, launchingPosition))
                foreach (BaseCombatant combatant in cell.Combatants)
                    combatant.TakeDamage();

            ++CurrentEffectCount;

            if (CurrentEffectCount >= DEFAULT_EFFECT_COUNT)
            {
                IsEnding = true;
                effect.OnStopping += new MapEffectEventHandler(effect_OnStopping);
                return;
            }
        }
Exemple #2
0
        public virtual void Launch(Vector2I cellPosition)
        {
            LaunchingCellPosition = cellPosition;

            AnimationMapEffect effect = new AnimationMapEffect(Spell.Effect);
            effect.OnStopping += new MapEffectEventHandler(Effect_OnStopping);

            MapEffectManager.Instance.AddEffect(effect, CombatCell.GetCenterFromCellPosition(LaunchingCellPosition));

            foreach (CombatCell cell in GetCombat().GetCellFromArea(Spell.EffectArea, LaunchingCellPosition))
                foreach (BaseCombatant combatant in cell.Combatants)
                    combatant.TakeDamage();
        }