Welcome!

Join our community of MMORPG enthusiasts and private server developers! By registering, you'll gain access to in-depth discussions on source codes, binaries, and the latest developments in MMORPG server files. Collaborate with like-minded individuals, explore tutorials, and share insights on building and optimizing private servers. Join us today and unlock the full potential of MMORPG server development!

Join Today!

Get all 4th job skills after advancing.

Newbie Spellweaver
Joined
Nov 14, 2011
Messages
80
Reaction score
24
Personally I hate skillbooks and some skills bug out when going t 4th job so I made this to put all your 4th job skills at mastery level 10 (except that one that clears effects which only goes to 5) when you advance to a 4th job. Could probably be coded better but meh, do it yourself :)

Rebirth servers that allow people to keep skills from other jobs be aware: This resets all the skills of the 4th job the player is advancing to back to 0 and mastery to 10 (and 5 for that skill I mentioned). I cba to add a check for current skill level because rebirths are gay as fuck, but you probably have a skill maxer NPC anyway I just realized and you wouldn't even need this.

Add in public void changeJob(MapleJob newJob) in MapleCharacter.java:
PHP:
if (newJob == MapleJob.HERO) {
            int[] skillz = {1121000,1121001,1121002,1120003,1120004,1120005,1121006,1121008,1121010,1121011};
            learn4thJobSkills(skillz);
        } else if (newJob == MapleJob.PALADIN) {
            int[] skillz = {1220005,1220006,1221001,1221002,1221007,1221009,1221003,1221004,1221012,1220010,1221011};
            learn4thJobSkills(skillz);
        } else if (newJob == MapleJob.DARKKNIGHT) {
            int[] skillz = {1321000,1321003,1320008,1321010,1320009,1321002,1321007,1320005,1320006,1321001};
            learn4thJobSkills(skillz);
        } else if (newJob == MapleJob.FP_ARCHMAGE) {
            int[] skillz = {2121000,2121001,2121002,2121003,2121004,2121005,2121006,2121007,2121008};
           learn4thJobSkills(skillz);
        } else if (newJob == MapleJob.IL_ARCHMAGE) {
            int[] skillz = {2221000,2221001,2221002,2221004,2221003,2221005,2221006,2221007,2221008};
            learn4thJobSkills(skillz);
        } else if (newJob == MapleJob.BISHOP) {
            int[] skillz = {2321000,2321001,2321002,2321004,2321007,2321003,2321006,2321008,2321009,2321005};
            learn4thJobSkills(skillz);
        } else if (newJob == MapleJob.BOWMASTER) {
            int[] skillz = {3121000,3121002,3121004,3121007,3121006,3121009,3120005,3121008,3121003};
            learn4thJobSkills(skillz);
        } else if (newJob == MapleJob.MARKSMAN) {
            int[] skillz = {3220004,3221000,3221002,3221001,3221005,3221007,3221008,3221003,3221006};
            learn4thJobSkills(skillz);
        } else if (newJob == MapleJob.NIGHTLORD) {
            int[] skillz = {4121000,4121003,4121007,4121006,4121009,4120002,4120005,4121004,4121008};
            learn4thJobSkills(skillz);
        } else if (newJob == MapleJob.SHADOWER) {
            int[] skillz = {4221000,4221003,4221001,4221008,4220002,4220005,4221004,4221007,4221006};
            learn4thJobSkills(skillz);
        } else if (newJob == MapleJob.BUCCANEER) {
            int[] skillz = {5121000,5121002,5121003,5121004,5121005,5121007,5121008,5121009,5121010};
            learn4thJobSkills(skillz);
        } else if (newJob == MapleJob.CORSAIR) {
            int[] skillz = {5220001,5220002,5220011,5221000,5221003,5221004,5221006,5221007,5221008,5221009,5221010};
            learn4thJobSkills(skillz);        
        } else if (newJob == MapleJob.ARAN4) {
            int[] skillz = {21121000,21120002,21120001,21120005,21121003,21120004,21120006,21120007,21121008};
            learn4thJobSkills(skillz);
        }        
        if (!isGM()) {
            for (byte i = 1; i < 5; i++) {
                getInventory(MapleInventoryType.getByType((byte) i)).increaseSlotLimit(4);
            }
        }
under
PHP:
if (maxhp >= 30000) {
            maxhp = 30000;
        }
        if (maxmp >= 30000) {
            maxmp = 30000;
        }

Then add
PHP:
private void learn4thJobSkills(int[] skillz) {
        for (int i=0; i<skillz.length;i++) {
            int skillid = skillz[i];
            ISkill skilll = SkillFactory.getSkill(skillid);
            if (skillid == 1121011 || skillid == 1221012 || skillid == 1321010 || //hero's will things
                skillid == 2121008 || skillid == 2221008 || skillid == 2321009 ||
                skillid == 3121009 || skillid == 3221008 ||
                skillid == 4121009 || skillid == 4221008 ||
                skillid == 5121008 || skillid == 5221010 || skillid == 21121008) {
                changeSkillLevel(skilll, (byte) 0, 5);
            } else
                changeSkillLevel(skilll, (byte) 0, 10);
        }
    }

Anywhere in maplecharacter.java
 
PHP:
public void maxMastery() {
        for (MapleData skill_ : MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "String.wz")).getData("Skill.img").getChildren()) {
            try {
                ISkill skill = SkillFactory.getSkill(Integer.parseInt(skill_.getName()));
                if ((skill.getId() / 10000 % 10 == 2 || (getClient().getPlayer().isCygnus() && skill.getId() / 10000 % 10 == 1) || (getClient().getPlayer().isAran() && skill.getId() / 10000 % 10 == 2)) && getPlayer().getSkillLevel(skill) < 1) {
                    getPlayer().changeSkillLevel(skill, (byte) 0, 10, -1);
                }
            } catch (NumberFormatException nfe) {
                break;
            } catch (NullPointerException npe) {
                continue;
            }
        }
    }
    public void AranMastery() {
        for (MapleData skill_ : MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "String.wz")).getData("Skill.img").getChildren()) {
            try {
                ISkill skill = SkillFactory.getSkill(Integer.parseInt(skill_.getName()));
                if ((getClient().getPlayer().isAran() && skill.getId() > 0) && getPlayer().getSkillLevel(skill) < 1 && skill.getId() != 21110007 && skill.getId() != 21110008 && skill.getId() != 21120009 && skill.getId() != 21120010) {
                    getPlayer().changeSkillLevel(skill, (byte) 0, 10, -1);
                }
            } catch (NumberFormatException nfe) {
                break;
            } catch (NullPointerException npe) {
                continue;
            }
        }
    }

Wut?
 
I made one like that a long time ago :)

It looked like this though..

PHP:
public void maxMastery() {
        for (MapleData skill_ : MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "String.wz")).getData("Skill.img").getChildren()) {
            try {
                ISkill skill = SkillFactory.getSkill(Integer.parseInt(skill_.getName()));
                if ((skill.getId() / 10000 % 10 == 2 || (getClient().getPlayer().isCygnus() && skill.getId() / 10000 % 10 == 1) || (getClient().getPlayer().isAran() && skill.getId() / 10000 % 10 == 2)) && getPlayer().getSkillLevel(skill) < 1) {
                    getPlayer().changeSkillLevel(skill, (byte) 0, skill.getMaxLevel(), -1);
                }
            } catch (NumberFormatException nfe) {
                break;
            } catch (NullPointerException npe) {
                continue;
            }
        }
    }

First time I posted on here in a while...
 
These ones were made by Mr. Mysterious if I'm not mistaken, not you Rich. Maybe without the Aran checks and stuff, but pretty much the same.

There are better ways to do this tho and this has been released before. Nevertheless, nice contribution.
 
These ones were made by Mr. Mysterious if I'm not mistaken, not you Rich. Maybe without the Aran checks and stuff, but pretty much the same.

There are better ways to do this tho and this has been released before. Nevertheless, nice contribution.

Osiris? You're still here? Wow... Mr. Mysterious too?
Blah... By the way what happened to the penguin?
As for this release, cool.
 
Back