public void ActivateAbility(Fighter target, Ability ability) { if (!Abilities.Contains(ability)) { throw new ArgumentException("Wrong ability!"); } if (ability.ManaCost > mana) { return; } mana -= ability.ManaCost; if (ability.ManaCost != 0) { ManaChanged?.Invoke(this); } ability.ApplyAbility(this, target); }
protected override void OnProcessDelta(Delta d) { base.OnProcessDelta(d); if (d.HasFlag(Delta.Hits)) { HitsChanged.Raise(this); } if (d.HasFlag(Delta.Mana)) { ManaChanged.Raise(this); } if (d.HasFlag(Delta.Stamina)) { StaminaChanged.Raise(this); } }
public void EndOfTheTurn() { var effectsToRemove = new List <Effect.EffectType>(); foreach (var e in Effects) { if (Effect.EndOfTheTurnEffects.Contains(e.Key)) { e.Value.ActivateEndOfTheTurnEffect(this); } e.Value.Duration--; if (e.Value.Duration == 0) { effectsToRemove.Add(e.Key); } } foreach (var e in effectsToRemove) { Effects.Remove(e); } mana += manaRegeneration; mana = Math.Min(baseMana, mana); ManaChanged?.Invoke(this); }
public void SubscribeToManaChanged(ManaChanged mc) { D_ManaChanged += mc; }