40public abstract class MagicSpell {
42 public final int level;
44 final double baseExperience;
48 MagicSpell(
int level,
double baseExperience,
RequiredRune... runes) {
50 this.baseExperience = baseExperience;
54 public Optional<Item[]> equipmentRequired() {
55 return Optional.empty();
58 boolean canCast(
Mob attacker, Optional<Mob> defender) {
59 if(attacker.
isNpc()) {
63 Player player = attacker.getPlayer();
66 player.send(
new SendMessage(
"You need a Magic level of " + level +
" to cast this spell."));
71 if(equipmentRequired().isPresent() && !player.equipment.
containsAll(equipmentRequired().
get())) {
72 player.send(
new SendMessage(
"You do not have the required equipment to cast this spell."));