public Texture2D UseSpell(Player target, Spell spell) { Texture2D ret = null; switch(spell.type) { case SpellType.MAGIC: ret = Game1.fire; break; case SpellType.SUPPORT: ret = Game1.heal; break; case SpellType.PHYSICAL: ret = Game1.sword; break; default: ret = Game1.sword; break; } switch (spell.type) { case SpellType.MAGIC: foreach(SpellEffect se in spell.effects) { if (se.target == SpellTargetType.SELF) { switch (se.type) { case SpellEffectType.MP: if ((se.value * -1) > this.GetCurrentMana()) return null; break; case SpellEffectType.HP: if ((se.value * -1) > this.GetCurrentHealth()) return null; break; } } } foreach (SpellEffect se in spell.effects) { switch (se.target) { case SpellTargetType.ALL: break; //not supported case SpellTargetType.SELF: this.ModifyStatSpell(se.type, se.value); break; case SpellTargetType.SINGLE: int damage = se.value + this.GetCurrentMAGATK(); target.ModifyStatSpell(se.type,-1 * damage); break; default: break; } } break; case SpellType.PHYSICAL: foreach (SpellEffect se in spell.effects) { switch (se.target) { case SpellTargetType.ALL: break; //not supported case SpellTargetType.SELF: this.ModifyStatSpell(se.type, se.value); break; case SpellTargetType.SINGLE: int damage = se.value + this.GetCurrentATK(); target.ModifyStatSpell(se.type, -1 * damage); break; default: break; } } break; case SpellType.SUPPORT: foreach (SpellEffect se in spell.effects) { switch (se.target) { case SpellTargetType.ALL: break; //not supported case SpellTargetType.SELF: this.ModifyStatSpell(se.type, se.value); break; case SpellTargetType.SINGLE: int damage = se.value + this.GetCurrentMAGATK(); target.ModifyStatSpell(se.type, damage); break; default: break; } } break; default: break; } return ret; }