/* Notes: I'll leave a message here, as I am not sure what source you are using. Perhaps Lithium? Either way, I realize some functions I may be using are outdated (not compatible with your source),
so what you must do is ctrl+h and replace all the special functions such as cm.getJobId, cm.changeJobById, etc. I am also a big fan of ternaries, as you can see below. I'm actually so involved
with them that sometimes I may even use them when unnecessary.
1) This script contains Explorer, KoC, and Legends. It does not, however, contain Cannoneer and Resistance, as I do not know their IDs. If you can provide them, then I will be obliged
to script it.
2) If you encounter any errors, which I am fairly certain you will, please post it in spoiler form. This was a relatively long script despite whatever knowledge I have on condensing scripts.
I did my best, although I completely averted from yours. I always prefer to start new scripts unless the one given is simple.
3) I used multiple conditions inside a ternary for the first time. If that is not allowed in java script - although I feel that it damn right should be - I'm sorry. Just inform me and I'll make reparations.
4) If everything turns out fine, give me a heads up. This was a fun, but somewhat tedious task.
*/
var status;
var first = [100, 200, 300, 400, 500]; // explorer job
var second = [[110,120,130],[210,220,230],[310,320],[410,420,430],[510,520]]; // second job
var secondname = [["Fighter", "Page", "Spearman"],["Fire-Poison", "Ice-Lightning", "Cleric"],["Hunter", "Crossbowman"],["Assassin", "Bandit", "Blade Recruit"],["Brawler", "Gunslinger"]]; // second job names
var koc = [1100, 1200, 1300, 1400, 1500]; // koc job
var legend = [2100,2300,2400, 3100]; // legend job
var type; // just a variable
/* 1st Job (Lv 10) -> Rogue
2nd Job (Lv 20) -> Semi Dualer
2nd Job + (Lv 30) -> Dualer
3rd Job (Lv 55) -> Dual Master
3rd Job + (Lv 70) -> Slasher
4th Job (Lv 120) -> Dual Blader */
// the above was just to let me know what levels the Db were supposed to level up at.
function start() {
status = -1;
action(1, 0, 0);
}
function action(mode, type, selection) {
if (mode == -1) {
cm.dispose();
return;
} else {
(mode == 1 ? status++ : status--);
}
if (status == 0 ) {
// start of explorers
// first job
if (cm.getJobId()==0) {
(cm.getLevel() < 8 ? cm.sendOk("You must be at least #b8#k for an advancement.") : cm.getLevel() > 9 ? cm.sendSimple("Here's some jobs . . .\r\n\r\n#L0#Warrior\r\n#L1#Magician"+
"\r\n#L2#Bowman\r\n#L3#Rogue\r\n#L4#Pirate") : cm.sendSimple("Here's some jobs . . .\r\n\r\n#L1#Magician")); // ternary. If you are below 8, tell them you need to at least be 8. If you are above 9, send regular job advancements for Explorers. If you are 8 or higher, the last ternary, you can become a mage
// second job
} else if (cm.getJobId()==100 || cm.getJobId()==200 || cm.getJobId()==300 || cm.getJobId()==400 || cm.getJobId()==500) { // first job check
if (cm.getJobId()==400) { // if you are rogue
if (cm.getLevel() < 20) { // if you are under 20
cm.sendOk("Please come back at either #b20#k or #b30#k.");
cm.dispose();
} else { // otherwise
type = 3; // set variable 'type' to 3
cm.sendSimple("What do you want?\r\n"+(cm.getLevel() >= 30 ? "\r\n#L0#Assassin\r\n#L1#Bandit\r\n#L2#Blade Recruit" : "\r\n#L2#Blade Recruit")+""); // ternary. If you are higher than 30, send Bandit, Sin, and Db selections. Otherwise, just send Db selection. This will work because I had a previous check to ensure someone was above level 20.
}
} else { // if you are not rogue, but are other first jobs
(cm.getJobId()==100 ? type = 0 : cm.getJobId()==200 ? type = 1 : cm.getJobId()==300 ? type = 2 : type = 4); // sets different numbers for 'type'. I will be using a multiple array.
text = "Let's see what we have here . . .\r\n"; // infamous loop.
for (var i = 0; i < second[type].length; i++)
text += "\r\n#L"+i+"#"+secondname[type][i]+"";
cm.sendSimple(text);
}
// third job
} else if (cm.getJobId()==110 || cm.getJobId()==120 || cm.getJobId()==130 || cm.getJobId()==210 || cm.getJobId()==220 || cm.getJobId()==230 || cm.getJobId()==310 || cm.getJobId()==320 || cm.getJobId()==410 || cm.getJobId()==420 || cm.getJobId()==510 || cm.getJobId()==520) {
(cm.getLevel() < 70 ? cm.sendOk("You cannot job advance at this time.") : cm.changeJobById(cm.getJobId() + 1));
cm.dispose();
// fourth job
} else if (cm.getJobId()==111 || cm.getJobId()==121 || cm.getJobId()==131 || cm.getJobId()==211 || cm.getJobId()==221 || cm.getJobId()==231 || cm.getJobId()==311 || cm.getJobId()==321 || cm.getJobId()==411 || cm.getJobId()==421 || cm.getJobId()==511 || cm.getJobId()==521) {
(cm.getLevel() < 120 ? cm.sendOk("You cannot job advance at this time") : cm.changeJobById(cm.getJobId() + 1));
cm.dispose();
// dual blades
} else if (cm.getJobId()>=430 && cm.getJobId() <= 499) {
((cm.getJobId()==430 && cm.getLevel()>=30) ? cm.changeJobById(431) : (cm.getJobId()==431 && cm.getLevel()>=55) ? cm.changeJobById(432) :
(cm.getJobId()==432 && cm.getLevel()>=70) ? cm.changeJobById(433) : (cm.getJobId()==433 & cm.getLevel()>=120) ? cm.changeJobById(434) :
cm.sendOk("You are not ready for a job advancement."));
// end of explorers
// KoC
} else if (cm.getJobId()==1000) {
if (cm.getLevel() < 10) {
cm.sendOk("You must be level 10 for this.");
cm.dispose();
} else {
cm.sendSimple("Here...\r\n#L0#Dawn Warrior\r\n#L1#Blaze Wizard\r\n#L2#Wind Archer\r\n#L3#Night Walker\r\n#L4#Thunder Breaker");
} else if (cm.getJobId()==1100 || cm.getJobId()==1200 || cm.getJobId()==1300 || cm.getJobId()==1400 || cm.getJobId()==1500) {
(cm.getLevel() < 30 ? cm.sendOk("You cannot job advance.") : cm.changeJobById(cm.getJobId() + 10));
cm.dispose();
} else if (cm.getJobId()==1110 || cm.getJobId()==1210 || cm.getJobId()==1310 || cm.getJobId()==1410 || cm.getJobId()==1510) {
(cm.getLevel() < 70 ? cm.sendOk("You cannot job advance.") : cm.changeJobById(cm.getJobId() + 1));
cm.dispose();
// end of koc
// legends
}
// not including Evan - special case - these include Aran, Phantom, DS, and Mercedes
} else if (cm.getJobId()==2000 || cm.getJobId()==2002 || cm.getJobId()==2003 || cm.getJobId()==3001) {
(cm.getJobId()==2000 ? type = 0 : cm.getJobId()==2002 ? type = 1 : cm.getJobId()==2003 ? type = 2 : type = 3);
(cm.getLevel() < 10 ? cm.sendOk("You are not eligible for a job advance.") : cm.changeJobById(legend[type]));
cm.dispose();
} else if (cm.getJobId()==2100 || cm.getJobId()==2300 || cm.getJobId()==2400 || cm.getJobId()==3100) {
(cm.getLevel() < 30 ? cm.sendOk("You are not eligible for this.") : cm.changeJobById(cm.getJobId()+10));
cm.dispose();
} else if (cm.getJobId()==2110 || cm.getJobId()==2310 || cm.getJobId()==2410 || cm.getJobId()==3110) {
(cm.getLevel() < 70 ? cm.sendOk("You are not able to advance.") : cm.changeJobById(cm.getJobId() + 1));
cm.dispose();
} else if (cm.getJobId()==2111 || cm.getJobId()==2311 || cm.getJobId()==2411 || cm.getJobId()==3111) {
(cm.getLevel() < 120 ? cm.sendOk("You are not able to do this.") : cm.changeJobById(cm.getJobId() + 1));
cm.dispose();
// Evan
} else if (cm.getJobId()>=2200 && cm.getJobId() < 2300) {
if (cm.getJobId()==2200) {
(cm.getLevel() < 10 ? cm.sendOk("You cannot advance till level 10") : cm.changeJobById(cm.getJobId()+10));
} else if (cm.getJobId()==2210 && cm.getLevel() >= 20 || cm.getJobId()==2211 && cm.getLevel() >= 30 || cm.getJobId()==2212 && cm.getLevel() >= 40
|| cm.getJobId()==2213 && cm.getLevel() >= 50 || cm.getJobId()==2214 && cm.getLevel() >= 60 || cm.getJobId()==2215 && cm.getLevel() >= 80 ||
cm.getJobId()==2216 && cm.getLevel() >= 100 || cm.getJobId()==2217 && cm.getLevel() >= 120 || cm.getJobId()==2218 && cm.getLevel() >= 160) { // long Evan conditions.
cm.changeJobById(cm.getJobId() + 1);
cm.dispose();
} else {
cm.sendOk("You are not allowed to advance at this time.");
cm.dispose();
}
}
} else if (status == 1) {
// explorers - first job
if (cm.getJobId()==0) {
cm.changeJobById(first[selection]); // array first, and your variable 'selection' picks from it.
// explorers - second job
} else if (cm.getJobId()==100 || cm.getJobId()==200 || cm.getJobId()==300 || cm.getJobId()==400 || cm.getJobId()==500) {
cm.sendOk("You have become a "+secondname[type][selection]+".");
cm.changeJobById(second[type][selection]); // multiple array - condenses second job choices by a bunch.
// koc - first job
} else if (cm.getJobId()==1000) {
cm.changeJobById(koc[selection);
}
cm.dispose(); // unstuck everyone
}
}