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; } }
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(); }