#region Arthea License
/***********************************************************************
* Arthea MUD by R. Jennings (2007) http://arthea.googlecode.com/ *
* By using this code you comply with the Artistic and GPLv2 Licenses. *
***********************************************************************/
#endregion
using Arthea.Abilities.Spells.Enums;
using Arthea.Classes;
using Arthea.Continents.Areas.Characters;
using Arthea.Continents.Areas.Characters.Enums;
namespace Arthea.Abilities.Spells
{
/// <summary>
/// Implementation of a spell.
/// </summary>
public abstract class Spell : Ability
{
#region [rgn] Fields (2)
private int mana;
private SpellTarget target;
#endregion [rgn]
#region [rgn] Constructors (1)
/// <summary>
/// Initializes a new instance of the <see cref="Spell"/> class.
/// </summary>
/// <param name="name">The name.</param>
/// <param name="levels">The levels.</param>
/// <param name="pos">The minimum position.</param>
/// <param name="wait">The wait.</param>
/// <param name="difficulty">The difficulty.</param>
/// <param name="damage">The damage.</param>
/// <param name="flags">The flags.</param>
/// <param name="target">The target.</param>
/// <param name="mana">The mana.</param>
public Spell(string name, ClassValues levels, Position pos, byte wait, byte difficulty,
string damage, AbilityFlags flags, SpellTarget target, int mana)
: base(name, levels, pos, wait, difficulty, damage, flags)
{
this.target = target;
this.mana = mana;
}
#endregion [rgn]
#region [rgn] Properties (2)
/// <summary>
/// Gets or sets the mana.
/// </summary>
/// <value>The mana.</value>
public int Mana
{
get { return mana; }
set { mana = value; }
}
/// <summary>
/// Gets or sets the target.
/// </summary>
/// <value>The target.</value>
public SpellTarget Target
{
get { return target; }
set { target = value; }
}
#endregion [rgn]
#region [rgn] Methods (1)
// [rgn] Public Methods (1)
/// <summary>
/// Processes this spell for a character.
/// </summary>
/// <param name="ch">The character.</param>
/// <param name="argument">The argument.</param>
public abstract void Process(Character ch, object argument);
#endregion [rgn]
}
}