66 private final static Item[] ITEMS = {
new Item(9236),
new Item(9240),
new Item(9237),
new Item(9238),
new Item(9241),
new Item(9239),
new Item(9242),
new Item(9243),
new Item(9244),
new Item(9245)};
67 private final static int[][] RUNES = {{564, 1}, {556, 2}, {564, 1}, {555, 1}, {558, 1}, {564, 1}, {557, 2}, {564, 1}, {555, 2}, {564, 1}, {556, 3}, {561, 1}, {564, 1}, {554, 2}, {564, 1}, {554, 5}, {565, 1}, {564, 1}, {557, 10}, {563, 2}, {564, 1}, {557, 15}, {566, 1}, {564, 1}, {554, 20}, {560, 1}};
68 private final static int[] LEVELS = {4, 7, 14, 24, 27, 29, 49, 57, 68, 87};
93 player.send(
new SendMessage(
"You do not have the required runes to cast this spell."));
97 if (
Activity.evaluate(player, it -> !it.canSpellCast(player))) {
102 player.inventory.removeAll(s.
getRunes());
109 player.send(
new SendMessage(
"You need a Magic level of " +
spell.getLevel() +
" to do this!"));
112 if (
spell.getRunes() !=
null) {
114 player.send(
new SendMessage(
"You do not have the required runes to do this!"));
119 if (
Activity.evaluate(player, it -> !it.canSpellCast(player))) {
126 private boolean hasEnchantRunes(
int spellID) {
128 return spell !=
null && player.inventory.
containsAll(spell.getRunes());
131 private int getEnchantmentLevel(
int spellID) {
151 public void enchantItem(
int itemID,
int spellID) {
152 SpellEnchant ens = SpellEnchant.forSpell(spellID);
158 SpellEnchantData enc = SpellEnchantData.forId(itemID);
161 player.message(
"You can't enchant this item!");
165 if (player.skills.
getMaxLevel(Skill.MAGIC) < enc.getLevel()) {
166 player.message(
"You need a magic level of at least " + enc.getMagicLevel() +
" to cast this spell.");
170 if (player.skills.
getMaxLevel(Skill.CRAFTING) < enc.getCraftingLevel()) {
171 player.message(
"You need a crafting level of at least " + enc.getCraftingLevel() +
" to cast this spell.");
175 if (!player.inventory.
contains(enc.getUnenchanted(), 1)) {
179 if (!hasEnchantRunes(spellID)) {
180 player.message(
"You do not have enough runes to cast this spell.");
184 if (getEnchantmentLevel(spellID) != enc.getLevel()) {
185 player.message(
"You can only enchant this jewelry using a level-" + enc.getLevel() +
" enchantment spell.");
189 player.animate(enc.getAnimation());
190 player.inventory.removeAll(ens.getRunes());
191 player.inventory.remove(enc.getUnenchanted(), 1);
192 player.inventory.add(enc.getEnchanted(), 1);
193 player.send(
new SendForceTab(Config.MAGIC_TAB));
194 player.graphic(
new Graphic(enc.getGFX(),
true));
195 player.skills.addExperience(Skill.MAGIC, enc.getXp() * Config.MAGIC_MODIFICATION);
198 public void openBoltEnchant() {
199 for (
int index = 0; index < LEVELS.length; index++) {
200 String color = player.skills.get(Skill.MAGIC).getLevel() < LEVELS[index] ?
"@red@" :
"@gre@";
201 player.send(
new SendString(color +
"Magic " + LEVELS[index], 42756 + index));
203 for (
int i = 0; i < RUNES.length; i++) {
204 String color = player.inventory.contains(
new Item(RUNES[i][0], RUNES[i][1])) ?
"@gre@" :
"@red@";
205 int amount = player.inventory.computeAmountForId(RUNES[i][0]);
206 player.send(
new SendString(color + (amount >= RUNES[i][1] ? RUNES[i][1] +
"" : amount) +
"/" + RUNES[i][1], 42766 + i));
208 player.send(
new SendItemOnInterface(42752, ITEMS));
209 player.interfaceManager.open(42750);
212 public void enchant(
int itemId) {
213 if (!player.interfaceManager.isInterfaceOpen(42750))
215 if (!BoltEchantData.forItem(itemId).isPresent())
218 BoltEchantData enchant = BoltEchantData.forItem(itemId).get();
219 String boltName = ItemDefinition.get(enchant.bolt).getName();
221 if (player.skills.get(Skill.MAGIC).getLevel() < enchant.levelRequired) {
222 player.send(
new SendMessage(
"You need a Magic level of " + enchant.levelRequired +
" to enchant " + boltName +
"."));
225 if (!player.inventory.contains(
new Item(enchant.bolt, 10))) {
226 player.send(
new SendMessage(
"You need 10 " + boltName +
" to do this!"));
229 if (!player.inventory.containsAll(enchant.runesRequired)) {
230 player.send(
new SendMessage(
"You do not have the required runes to do this!"));
233 player.inventory.removeAll(enchant.runesRequired);
234 player.inventory.remove(enchant.bolt, 10);
235 player.inventory.add(enchant.enchantedBolt, 10);
236 player.skills.addExperience(Skill.MAGIC, 250 * Config.MAGIC_MODIFICATION);
237 player.send(
new SendMessage(
"@red@You have enchanted 10 " + boltName + (boltName.endsWith(
"bolts") ?
"." :
" bolts.")));
238 AchievementHandler.activate(player, AchievementKey.ENCHANT_BOLTS, 10);