Code:
/**
* Constants for the first index in the MODERN_DATA/ANCIENT_DATA arrays.
*/
private final int SPELL_ID = 0, LEVEL_REQUIREMENT = 1, MAXIMUM_DAMAGE = 2, SPELL_ANIM = 3,
CASTING_GFX = 4, PROJECTILE_GFX = 5, HITTING_GFX = 6, BASE_DAMAGE = 7;
/**
* Modern Magicks Cast-on spell constants.
*/
public final int WIND_STRIKE = 0, CONFUSE = 1, WATER_STRIKE = 2, EARTH_STRIKE = 3,
WEAKEN = 4, FIRE_STRIKE = 5, WIND_BOLT = 6, CURSE = 7, BIND = 8, WATER_BOLT = 9,
EARTH_BOLT = 10, FIRE_BOLT = 11, CRUMBLE_UNDEAD = 12, WIND_BLAST = 13, WATER_BLAST = 14,
IBAN_BLAST = 15, SNARE = 16, MAGIC_DART = 17, EARTH_BLAST = 18, FIRE_BLAST = 19,
SARADOMIN_STRIKE = 20, CLAWS_OF_GUTHIX = 21, FLAMES_OF_ZAMORAK = 22, WIND_WAVE = 23,
WATER_WAVE = 24, VULNERABILITY = 25, EARTH_WAVE = 26, ENFEEBLE = 27, TELEOTHER_LUMBRIDGE = 28,
FIRE_WAVE = 29, ENTANGLE = 30, STUN = 31, TELEOTHER_FALADOR = 32, TELE_BLOCK = 33,
TELEOTHER_CAMELOT = 34;
/**
* Ancient Magicks Cast-on spell constants.
*/
public final int SMOKE_RUSH = 0, SHADOW_RUSH = 1, BLOOD_RUSH = 2, ICE_RUSH = 3,
SMOKE_BURST = 4, SHADOW_BURST = 5, BLOOD_BURST = 6, ICE_BURST = 7,
SMOKE_BLITZ = 8, SHADOW_BLITZ = 9, BLOOD_BLITZ = 10, ICE_BLITZ = 11,
SMOKE_BARRAGE = 12, SHADOW_BARRAGE = 13, BLOOD_BARRAGE = 14, ICE_BARRAGE = 15;
/**
* Modern magicks spells that freeze the target.
* {Spell ID, Freeze length (Milliseconds)}.
*/
private final int[][] MODERN_FREEZE_SPELLS = {
{8, 2500}, {16, 5000}, {30, 7500}
};
/**
* Ancient magicks spells that freeze the target.
* {Spell ID, Freeze length (Milliseconds)}.
*/
private final int[][] ANCIENT_FREEZE_SPELLS = {
{3, 2500}, {7, 5000}, {11, 7500}, {15, 10000}
};
/**
* Modern magicks spells that reduce the target's stats.
* {SPELL ID, REDUCE PERCENT, STAT TO REDUCE}
*/
private final int[][] STAT_REDUCING_SPELLS = {
{1, 5, 0}, {4, 5, 2}, {7, 5, 1}, {25, 10, 1}, {27, 10, 2}, {31, 10, 0}
};
/**
* Modern Magicks Cast-On spell data.
*/
public final int[][] MODERN_DATA = {
new int[] { // Spell IDs sent from the client.
1152, 1153, 1154, 1156, 1157, 1158, 1160, 1161, 1572, 1163, 1166, 1169, -1,
1172, 1175, 1539, 1582, 12037, 1177, 1181, 1190, 1191, 1192, 1183, 1185, 1542,
1188, 1543, 12425, 1189, 1592, 1562, 12435, 12445, 12455
},
new int[] { // Level Requirements.
1, 3, 5, 9, 11, 13, 17, 19, 20, 23, 29, 35, 39, 41, 47, 50, 50, 50,
53, 59, 60, 60, 60, 62, 65, 66, 70, 73, 74, 75, 79, 80, 82, 85, 90
},
new int[] { // Maximum damage amount.
2, 0, 4, 6, 0, 8, 9, 0, 2, 10, 11, 12, 15, 13, 14, 25, 3, 19, 15, 16,
isUsingCharge() ? 30 : 20, isUsingCharge() ? 30 : 20, isUsingCharge() ? 30 : 20,
17, 18, 0, 19, 0, 0, 20, 5, 0, 0, 0, 0
},
new int[] { // Spell animation.
1162, 1163, 1162, 1162, 1164, 1162, 1162, 1165, 1161, 1162, 1162, 1162, 1165,
1162, 1162, 708, 1161, 1576, 1162, 1162, 811, 811, 811, 1167, 1167, 1166, 1167,
1167, 1818, 1167, 1161, 1167, 1818, 1820, 1818
},
new int[] { // Casting GFX.
90, 102, 93, 96, 105, 99, 117, 108, 177, 120, 123, 126, 145, 132, 135, 87, 177,
-1, 138, 129, -1, -1, -1, 158, 161, 167, 164, 170, 343, 155, 177, 173, 343, -1, 343
},
new int[] { // Projectile GFX.
91, 103, 94, 97, 106, 100, 118, 109, 178, 121, 124, 127, 146, 133, 136, 88, 178,
328, 139, 130, -1, -1, -1, 159, 162, 168, 165, 171, -1, 156, 178, 174, -1, 344, -1
},
new int[] { // Hitting GFX.
92, 104, 95, 98, 107, 101, 119, 110, 181, 122, 125, 128, 147, 134, 137, 89, 180,
329, 140, 131, 76, 77, 78, 160, 163, 169, 166, 172, -1, 157, 179, 175, -1, 345, -1
},
new int[] { // Base experience.
5, 13, 7, 9, 21, 11, 13, 29, 30, 16, 19, 21, 24, 25, 28, 30, 60, 30, 31, 34, 61, 61,
61, 36, 37, 76, 40, 83, 84, 42, 89, 90, 92, 80, 100
}
};
/**
* Ancient Magicks Cast-On spell data.
*/
public final int[][] ANCIENT_DATA = {
new int[] { // Spell IDs sent from the client.
12939, 12987, 12901, 12861, 12963, 13011, 12919, 12881, 12951, 12999, 12911, 12871,
12975, 13023, 12929, 12891
},
new int[] { // Level Requirements.
50, 52, 56, 58, 62, 64, 68, 70, 74, 76, 80, 82, 88, 86, 92, 94
},
new int[] { // Maximum damage amount.
13, 14, 15, 16, 17, 17, 21, 22, 23, 24, 25, 26, 37, 28, 29, 30
},
new int[] { // Spell animation.
1978, 1978, 1978, 1978, 1979, 1979, 1979, 1979, 1978, 1978, 1978, 1978,
1979, 1979, 1979, 1979
},
new int[] { // Casting GFX.
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 368, -1, -1, -1, -1
},
new int[] { // Projectile GFX.
384, 378, 372, 360, -1, -1, -1, -1, 386, 380, 374, -1, -1, -1, -1, -1
},
new int[] { // Hitting GFX.
385, 379, 373, 361, 389, 382, 377, 363, 387, 381, 375, 367, 389, 383, 377, 369
},
new int[] { // Base experience.
30, 31, 33, 34, 36, 37, 39, 40, 42, 43, 45, 46, 48, 48, 51, 52
}
};
/**
* Modern cast-on spell rune requirements.
*/
public final int[][] MODERN_RUNE_REQUIREMENTS = {
{556, 1, 558, 1}, {555, 3, 557, 2, 559, 1}, {556, 1, 555, 1, 558, 1},
{556, 1, 558, 1, 557, 2}, {555, 3, 557, 2, 559, 1}, {556, 2, 558, 1, 554, 3},
{556, 2, 562, 1}, {555, 2, 557, 3, 559, 1}, {555, 3, 557, 2, 561, 2},
{555, 2, 556, 2, 562, 1}, {557, 3, 556, 2, 562, 1}, {554, 4, 556, 3, 562, 1},
{556, 2, 557, 2, 562, 1}, {556, 3, 560, 1}, {556, 3, 555, 3, 560, 1}, {554, 5, 560, 1},
{555, 4, 557, 4, 561, 3}, {558, 4, 560, 1}, {556, 3, 557, 4, 560, 1},
{556, 4, 554, 5, 560, 1}, {556, 4, 554, 2, 565, 2}, {556, 4, 554, 1, 565, 2},
{556, 1, 554, 4, 565, 2}, {556, 5, 565, 1}, {556, 5, 555, 7, 565, 1},
{555, 5, 557, 5, 566, 1}, {556, 5, 557, 7, 565, 1}, {555, 8, 557, 8, 566, 1},
{563, 1, 566, 1, 557, 1}, {556, 5, 554, 7, 565, 1}, {555, 5, 557, 5, 561, 4},
{555, 12, 557, 12, 566, 1}, {563, 1, 566, 1, 555, 1}, {560, 1, 562, 1, 563, 1},
{563, 1, 566, 2}
};
/**
* Ancient cast-on spell rune requirements.
*/
public final int[][] ANCIENT_RUNE_REQUIREMENTS = {
{560, 2, 554, 1, 556, 1, 562, 2}, {560, 2, 566, 1, 556, 1, 562, 2},
{565, 1, 560, 2, 562, 2}, {560, 2, 555, 2, 562, 2}, {560, 2, 554, 2, 556, 2, 562, 4},
{560, 2, 566, 2, 556, 1, 562, 4}, {565, 2, 560, 2, 562, 4}, {560, 2, 555, 4, 562, 4},
{560, 2, 554, 2, 556, 2, 565, 2}, {560, 2, 566, 2, 556, 2, 565, 2}, {565, 4, 560, 2},
{560, 2, 555, 3, 565, 2}, {560, 4, 554, 4, 556, 4, 565, 2},
{560, 4, 566, 3, 556, 4, 565, 2}, {565, 4, 560, 4, 566, 1}, {560, 4, 555, 6, 565, 2}
};