EDIT: for an improved version of this by go > here <.
Hi, have been working on some magic combat scripts, here are some "spell manager" methods I made. These only support strike spells and air staff but are easily expandable, I just haven't because I never needed anything else. Constructive feedback is appreciated, feel free to use these as you wish, credit appreciated tho
Variables:
ArrayList<Integer> spellmanagerRuneType = new ArrayList<Integer>(5);
String spellname = "Fire_strike";
String stafftype = "Air";
Boolean usestaff = true;
int spellspertrip = 100;
To find out which runes are required for your selected spell:
spellmanagerRuneType = magicRuneTypeManager(spellname, usestaff, stafftype);
public ArrayList<Integer> magicRuneTypeManager(String spell,
Boolean useStaff, String staff) {
ArrayList<Integer> runes = new ArrayList<Integer>();
int firerune = 554;
int waterrune = 555;
int airrune = 556;
int earthrune = 557;
int mindrune = 558;
if (useStaff = true) {
if (staff == "Air") {
if (spell == "Wind_strike") {
runes.add(mindrune);
}
if (spell == "Water_strike") {
runes.add(mindrune);
runes.add(waterrune);
}
if (spell == "Earth_strike") {
runes.add(mindrune);
runes.add(earthrune);
}
if (spell == "Fire_strike") {
runes.add(mindrune);
runes.add(firerune);
}
}
} else {
if (spell == "Wind_strike") {
runes.add(airrune);
runes.add(mindrune);
}
if (spell == "Water_strike") {
runes.add(airrune);
runes.add(mindrune);
runes.add(waterrune);
}
if (spell == "Earth_strike") {
runes.add(airrune);
runes.add(mindrune);
runes.add(earthrune);
}
if (spell == "Fire_strike") {
runes.add(airrune);
runes.add(mindrune);
runes.add(firerune);
}
}
return runes;
}
To check if you have the required amount of runes in your inventory for at least 1 cast, if not: initiate your banker method:
int j = 0;
while (spellmanagerRuneType.size() > j) {
int runesfor1spell = magicRuneAmountManager(spellname, spellmanagerRuneType.get(j)) * 1;
if (!(this.client.getInventory().getAmount(
spellmanagerRuneType.get(j)) >= runesfor1spell)) {
banker();
} else {
j++;
}
}
public Integer magicRuneAmountManager(String spell,
Integer runeID) {
int runesforspell = 0;
int firerune = 554;
int waterrune = 555;
int airrune = 556;
int earthrune = 557;
int mindrune = 558;
if (spell == "Wind_strike") {
if (runeID == mindrune ) {
runesforspell = 1;
}
if (runeID == airrune ) {
runesforspell = 1;
}
}
if (spell == "Water_strike") {
if (runeID == mindrune ) {
runesforspell = 1;
}
if (runeID == waterrune ) {
runesforspell = 1;
}
if (runeID == airrune ) {
runesforspell = 1;
}
}
if (spell == "Earth_strike") {
if (runeID == mindrune ) {
runesforspell = 1;
}
if (runeID == earthrune ) {
runesforspell = 2;
}
if (runeID == airrune ) {
runesforspell = 1;
}
}
if (spell == "Fire_strike") {
if (runeID == mindrune ) {
runesforspell = 1;
}
if (runeID == firerune ) {
runesforspell = 3;
}
if (runeID == airrune ) {
runesforspell = 2;
}
}
return runesforspell;
}
Add this to your banker method to withdraw runes your selected amount of casts:
int j = 0;
while (spellmanagerRuneType.size() > j) {
if (!this.client.getInventory().contains(
spellmanagerRuneType.get(j))) {
int withdrawamount = magicRuneAmountManager(spellname, spellmanagerRuneType.get(j)) * spellspertrip;
bank.withdrawX(spellmanagerRuneType.get(j), withdrawamount);
} else {
j++;
}}