RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
MagicSpell.java
1package com.osroyale.game.world.entity.combat.magic;
2
3import com.osroyale.net.packet.out.SendMessage;
4import com.osroyale.game.world.entity.mob.Mob;
5import com.osroyale.game.world.entity.mob.player.Player;
6import com.osroyale.game.world.entity.skill.Skill;
7import com.osroyale.game.world.items.Item;
8
9import java.util.Optional;
10
39
40public abstract class MagicSpell {
41
42 public final int level;
43
44 final double baseExperience;
45
46 public final RequiredRune[] runes;
47
48 MagicSpell(int level, double baseExperience, RequiredRune... runes) {
49 this.level = level;
50 this.baseExperience = baseExperience;
51 this.runes = runes;
52 }
53
54 public Optional<Item[]> equipmentRequired() {
55 return Optional.empty();
56 }
57
58 boolean canCast(Mob attacker, Optional<Mob> defender) {
59 if(attacker.isNpc()) {
60 return true;
61 }
62
63 Player player = attacker.getPlayer();
64
65 if(player.skills.getLevel(Skill.MAGIC) < level) {
66 player.send(new SendMessage("You need a Magic level of " + level + " to cast this spell."));
67 player.getCombat().reset();
68 return false;
69 }
70
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."));
73 player.getCombat().reset();
74 return false;
75 }
76
77 return MagicRune.hasRunes(player, runes);
78 }
79
80}