Lithium a few mount fixes (Mercedes, Phantom)

Results 1 to 10 of 10
  1. #1
    Chaos is a ladder. AristoCat is offline
    True MemberRank
    Apr 2012 Join Date
    945Posts

    big grin Lithium a few mount fixes (Mercedes, Phantom)


    RaGEZONE Recommends

    RaGEZONE Recommends

    I'm sure that you can find more mounts that are fixable after you see this, let's start then :D

    Go to GameConstants.java

    find public static int getMountItem(final int sourceid, final MapleCharacter chr) {

    then add:

    PHP Code:
    switch (sourceid) {
                case 
    20021160:
                    return 
    1932086;
                case 
    20021161:
                    return 
    1932087;
                case 
    20031160:
                    return 
    1932106;
                case 
    20031161:
                    return 
    1932107;
            } 
    If it still doesn't works, replace your skill.java with this one:

    PHP Code:
    package client;

    import constants.GameConstants;
    import java.util.ArrayList;
    import java.util.List;

    import provider.MapleData;
    import provider.MapleDataTool;
    import server.MapleStatEffect;
    import server.Randomizer;
    import server.life.Element;
    import tools.Pair;

    public class 
    Skill {

        private 
    String name "";
        private final List<
    MapleStatEffecteffects = new ArrayList<MapleStatEffect>();
        private List<
    MapleStatEffectpvpEffects null;
        private List<
    Integeranimation null;
        private final List<
    Pair<IntegerByte>> requiredSkill = new ArrayList<Pair<IntegerByte>>();
        private 
    Element element Element.NEUTRAL;
        private 
    int idanimationTime 0masterLevel 0maxLevel 0delay 0trueMax 0eventTamingMob 0skillTamingMob 0skillType 0//4 is alert
        
    private boolean invisible falsechargeskill falsetimeLimited falsecombatOrders falsepvpDisabled falsemagic falsecasterMove falsepushTarget falsepullTarget false;

        public 
    Skill(final int id) {
            
    super();
            
    this.id id;
        }

        public 
    void setName(final String name) {
            
    this.name name;
        }

        public 
    int getId() {
            return 
    id;
        }

        public 
    String getName() {
            return 
    name;
        }

        public static final 
    Skill loadFromData(final int id, final MapleData data, final MapleData delayData) {
            
    Skill ret = new Skill(id);

            
    boolean isBuff false;
            final 
    int skillType MapleDataTool.getInt("skillType"data, -1);
            final 
    String elem MapleDataTool.getString("elemAttr"datanull);
            if (
    elem != null) {
                
    ret.element Element.getFromChar(elem.charAt(0));
            }
            
    ret.skillType skillType;
            
    ret.invisible MapleDataTool.getInt("invisible"data0) > 0;
            
    ret.timeLimited MapleDataTool.getInt("timeLimited"data0) > 0;
            
    ret.combatOrders MapleDataTool.getInt("combatOrders"data0) > 0;
            
    ret.masterLevel MapleDataTool.getInt("masterLevel"data0);
            if ((
    id == 22111001 || id == 22140000 || id == 22141002)) {
                
    ret.masterLevel 5//hack
            
    }
            
    ret.eventTamingMob MapleDataTool.getInt("eventTamingMob"data0);
            
    ret.skillTamingMob MapleDataTool.getInt("skillTamingMob"data0);
            final 
    MapleData inf data.getChildByPath("info");
            if (
    inf != null) {
                
    ret.pvpDisabled MapleDataTool.getInt("pvp"inf1) <= 0;
                
    ret.magic MapleDataTool.getInt("magicDamage"inf0) > 0;
                
    ret.casterMove MapleDataTool.getInt("casterMove"inf0) > 0;
                
    ret.pushTarget MapleDataTool.getInt("pushTarget"inf0) > 0;
                
    ret.pullTarget MapleDataTool.getInt("pullTarget"inf0) > 0;
            }
            final 
    MapleData effect data.getChildByPath("effect");
            if (
    skillType == 2) {
                
    isBuff true;
            } else if (
    skillType == 3) { //final attack
                
    ret.animation = new ArrayList<Integer>();
                
    ret.animation.add(0);
                
    isBuff effect != null;
            } else {
                
    MapleData action_ data.getChildByPath("action");
                final 
    MapleData hit data.getChildByPath("hit");
                final 
    MapleData ball data.getChildByPath("ball");

                
    boolean action false;
                if (
    action_ == null) {
                    if (
    data.getChildByPath("prepare/action") != null) {
                        
    action_ data.getChildByPath("prepare/action");
                        
    action true;
                    }
                }
                
    isBuff effect != null && hit == null && ball == null;
                if (
    action_ != null) {
                    
    String d null;
                    if (
    action) { //prepare
                        
    MapleDataTool.getString(action_null);
                    } else {
                        
    MapleDataTool.getString("0"action_null);
                    }
                    if (
    != null) {
                        
    isBuff |= d.equals("alert2");
                        final 
    MapleData dd delayData.getChildByPath(d);
                        if (
    dd != null) {
                            for (
    MapleData del dd) {
                                
    ret.delay += Math.abs(MapleDataTool.getInt("delay"del0));
                            }
                            if (
    ret.delay 30) { //then, faster(2) = (10+2)/16 which is basically 3/4
                                
    ret.delay = (int) Math.round(ret.delay 11.0 16.0); //fastest(1) lolol
                                
    ret.delay -= (ret.delay 30); //round to 30ms
                            
    }
                        }
                        if (
    SkillFactory.getDelay(d) != null) { //this should return true always
                            
    ret.animation = new ArrayList<Integer>();
                            
    ret.animation.add(SkillFactory.getDelay(d));
                            if (!
    action) {
                                for (
    MapleData ddc action_) {
                                    if (!
    MapleDataTool.getString(ddcd).equals(d)) {
                                        
    String c MapleDataTool.getString(ddc);
                                        if (
    SkillFactory.getDelay(c) != null) {
                                            
    ret.animation.add(SkillFactory.getDelay(c));
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                switch (
    id) {
                    case 
    2301002// heal is alert2 but not overtime...
                    
    case 2111003// poison mist
                    
    case 12111005// Flame Gear
                    
    case 22161003:
                    case 
    32121006:
                    case 
    11076:
                    case 
    2111002// explosion
                    
    case 4211001// chakra
                    
    case 2121001// Big bang
                    
    case 2221001// Big bang
                    
    case 2321001// Big bang
                    
    case 1076:
                        
    isBuff false;
                        break;
                    case 
    4111009:
                    case 
    14111007:
                    case 
    3121002:
                    case 
    3221002:
                    case 
    5311004:
                    case 
    5121015:
                    case 
    5211009:
                    case 
    24111002:
                    case 
    1004// monster riding
                    
    case 20031209:
                    case 
    20031210:
                    case 
    10001004:
                    case 
    20001004:
                    case 
    20011004:
                    case 
    80001000:
                    case 
    1026:
                    case 
    10001026:
                    case 
    20001026:
                    case 
    20011026:
                    case 
    20021026:
                    case 
    30001026:
                    case 
    30011026:
                    case 
    50001026:
                    case 
    93:
                    case 
    10000093:
                    case 
    20000093:
                    case 
    20010093:
                    case 
    20020093:
                    case 
    30000093:
                    case 
    30010093:
                    case 
    9101004// hide is a buff -.- atleast for us o.o"
                    
    case 1111002// combo
                    
    case 4211003// pickpocket
                    
    case 4111001// mesoup
                    
    case 15111002// Super Transformation
                    
    case 5111005// Transformation
                    
    case 5121003// Super Transformation
                    
    case 13111005// Alabtross
                    
    case 21000000// Aran Combo
                    
    case 21101003// Body Pressure
                    
    case 5211001// Pirate octopus summon
                    
    case 5211002:
                    case 
    5220002// wrath of the octopi
                    
    case 5001005//dash
                    
    case 15001003:
                    case 
    5211006//homing beacon
                    
    case 5220011//bullseye
                    
    case 5110001//energy charge
                    
    case 15100004:
                    case 
    5121009//speed infusion
                    
    case 15111005:

                    case 
    22121001//element reset
                    
    case 22131001//magic shield
                    
    case 22141002//magic booster
                    
    case 2311006//magic booster
                    
    case 22151002//killer wing
                    
    case 22151003//magic resist
                    
    case 22161002//imprint
                    
    case 22171000//maple warrior
                    
    case 22171004//hero will
                    
    case 5721002//hero will
                    
    case 22181000//onyx blessing
                    
    case 22181004:
                    case 
    22161004:
                    case 
    22181003//soul stone
                    //case 22121000:
                    //case 22141003:
                    //case 22151001:
                    //case 22161002:
                    
    case 4331003//owl spirit
                    
    case 15101006//spark
                    
    case 15111006//spark
                    
    case 4321000//tornado spin
                    
    case 1320009//beholder's buff.. passive
                    
    case 35120000:
                    case 
    35001002//TEMP. mech
                    
    case 9001004// hide
                    
    case 4341002:

                    case 
    32001003//dark aura
                    
    case 32120000:
                    case 
    32111012//blue aura
                    
    case 32110000:
                    case 
    32101003//yellow aura
                    
    case 32120001:
                    case 
    35101007//perfect armor
                    
    case 35121006//satellite safety
                    
    case 35001001//flame
                    
    case 35101009:
                    case 
    35121005//missile
                    
    case 35121013:
                    case 
    35111004//siege
                    
    case 33111003//puppet ?
                    
    case 1211009:
                    case 
    1111007:
                    case 
    51111005//Mihile's magic crash
                    
    case 1311007//magic,armor,atk crash
                    
    case 32121003//twister
                    
    case 5111007:
                    case 
    5211007:
                    case 
    15111011://dice 
                    
    case 5311005:
                    case 
    5320007:
                    case 
    5720005:
                    case 
    35111013//dice
                    
    case 5711011//dice
                    
    case 32111006:
                    case 
    5120011:
                    case 
    5220012:
                    case 
    1220013:
                    case 
    33101006//jaguar oshi
                    
    case 32110007:
                    case 
    32110008:
                    case 
    32110009:
                    case 
    32111005:
                    case 
    31121005:
                    case 
    35121003:
                    case 
    35121009:
                    case 
    35121010:
                    case 
    35111005:
                    case 
    35111001:
                    case 
    35111010:
                    case 
    35111009:
                    case 
    35111011:
                    case 
    35111002:
                    case 
    35101005:
                    case 
    3120006:
                    case 
    3220005:
                    case 
    2121009:
                    case 
    2120010:
                    case 
    2221009:
                    case 
    2220010:
                    case 
    2321010:
                    case 
    2320011:
                    case 
    5321003:
                    case 
    5321004:
                    case 
    80001089:

                    case 
    24101005// booster
                    
    case 5701005// gun booster
                    
    case 24121009// hero's will
                    
    case 24121008// maple warrior
                    
    case 5711001// turret
                        
    isBuff true;
                        break;
                }
            }
            
    ret.chargeskill data.getChildByPath("keydown") != null;
            
    //some skills have old system, some new        
            
    final MapleData level data.getChildByPath("common");
            if (
    level != null) {
                
    ret.maxLevel MapleDataTool.getInt("maxLevel"level1); //10 just a failsafe, shouldn't actually happens
                
    ret.trueMax ret.maxLevel + (ret.combatOrders 0);
                for (
    int i 1<= ret.trueMaxi++) {
                    
    ret.effects.add(MapleStatEffect.loadSkillEffectFromData(levelidisBuffi"x"));
                }

            } else {
                for (final 
    MapleData leve data.getChildByPath("level")) {
                    
    ret.effects.add(MapleStatEffect.loadSkillEffectFromData(leveidisBuffByte.parseByte(leve.getName()), null));
                }
                
    ret.maxLevel ret.effects.size();
                
    ret.trueMax ret.effects.size();
            }
            final 
    MapleData level2 data.getChildByPath("PVPcommon");
            if (
    level2 != null) {
                
    ret.pvpEffects = new ArrayList<MapleStatEffect>();
                for (
    int i 1<= ret.trueMaxi++) {
                    
    ret.pvpEffects.add(MapleStatEffect.loadSkillEffectFromData(level2idisBuffi"x"));
                }
            }
            final 
    MapleData reqDataRoot data.getChildByPath("req");
            if (
    reqDataRoot != null) {
                for (final 
    MapleData reqData reqDataRoot.getChildren()) {
                    
    ret.requiredSkill.add(new Pair<IntegerByte>(Integer.parseInt(reqData.getName()), (byteMapleDataTool.getInt(reqData1)));
                }
            }
            
    ret.animationTime 0;
            if (
    effect != null) {
                for (final 
    MapleData effectEntry effect) {
                    
    ret.animationTime += MapleDataTool.getIntConvert("delay"effectEntry0);
                }
            }
            return 
    ret;
        }

        public 
    MapleStatEffect getEffect(final int level) {
            if (
    effects.size() < level) {
                if (
    effects.size() > 0) { //incAllskill
                    
    return effects.get(effects.size() - 1);
                }
                return 
    null;
            } else if (
    level <= 0) {
                return 
    effects.get(0);
            }
            return 
    effects.get(level 1);
        }

        public 
    MapleStatEffect getPVPEffect(final int level) {
            if (
    pvpEffects == null) {
                return 
    getEffect(level);
            }
            if (
    pvpEffects.size() < level) {
                if (
    pvpEffects.size() > 0) { //incAllskill
                    
    return pvpEffects.get(pvpEffects.size() - 1);
                }
                return 
    null;
            } else if (
    level <= 0) {
                return 
    pvpEffects.get(0);
            }
            return 
    pvpEffects.get(level 1);
        }

        public 
    int getSkillType() {
            return 
    skillType;
        }

        public List<
    IntegergetAllAnimation() {
            return 
    animation;
        }

        public 
    int getAnimation() {
            if (
    animation == null) {
                return -
    1;
            }
            return 
    animation.get(Randomizer.nextInt(animation.size()));
        }

        public 
    boolean isPVPDisabled() {
            return 
    pvpDisabled;
        }

        public 
    boolean isChargeSkill() {
            return 
    chargeskill;
        }

        public 
    boolean isInvisible() {
            return 
    invisible;
        }

        public 
    boolean hasRequiredSkill() {
            return 
    requiredSkill.size() > 0;
        }

        public List<
    Pair<IntegerByte>> getRequiredSkills() {
            return 
    requiredSkill;
        }

        public 
    int getMaxLevel() {
            return 
    maxLevel;
        }

        public 
    int getTrueMax() {
            return 
    trueMax;
        }

        public 
    boolean combatOrders() {
            return 
    combatOrders;
        }

        public 
    boolean canBeLearnedBy(int job) {
            
    int jid job;
            
    int skillForJob id 10000;
            if (
    skillForJob == 2001) {
                return 
    GameConstants.isEvan(job); //special exception for beginner -.-
            
    } else if (skillForJob == 0) {
                return 
    GameConstants.isAdventurer(job); //special exception for beginner
            
    } else if (skillForJob == 1000) {
                return 
    GameConstants.isKOC(job); //special exception for beginner
            
    } else if (skillForJob == 2000) {
                return 
    GameConstants.isAran(job); //special exception for beginner
            
    } else if (skillForJob == 3000) {
                return 
    GameConstants.isResist(job); //special exception for beginner
            
    } else if (skillForJob == 1) {
                return 
    GameConstants.isCannon(job); //special exception for beginner
            
    } else if (skillForJob == 3001) {
                return 
    GameConstants.isDemon(job); //special exception for beginner
            
    } else if (skillForJob == 2002) {
                return 
    GameConstants.isMercedes(job); //special exception for beginner
            
    } else if (skillForJob == 508) {
                return 
    GameConstants.isJett(job); //special exception for beginner
            
    } else if (skillForJob == 2003) {
                return 
    GameConstants.isPhantom(job); //special exception for beginner
            
    } else if (skillForJob == 5000) {
                return 
    GameConstants.isMihile(job); //special exception for beginner
            
    } else if (jid 100 != skillForJob 100) { // wrong job
                
    return false;
            } else if (
    jid 1000 != skillForJob 1000) { // wrong job
                
    return false;
            } else if (
    GameConstants.isMihile(skillForJob) && !GameConstants.isMihile(job)) {
                return 
    false;
            } else if (
    GameConstants.isPhantom(skillForJob) && !GameConstants.isPhantom(job)) {
                return 
    false;
            } else if (
    GameConstants.isJett(skillForJob) && !GameConstants.isJett(job)) {
                return 
    false;
            } else if (
    GameConstants.isCannon(skillForJob) && !GameConstants.isCannon(job)) {
                return 
    false;
            } else if (
    GameConstants.isDemon(skillForJob) && !GameConstants.isDemon(job)) {
                return 
    false;
            } else if (
    GameConstants.isAdventurer(skillForJob) && !GameConstants.isAdventurer(job)) {
                return 
    false;
            } else if (
    GameConstants.isKOC(skillForJob) && !GameConstants.isKOC(job)) {
                return 
    false;
            } else if (
    GameConstants.isAran(skillForJob) && !GameConstants.isAran(job)) {
                return 
    false;
            } else if (
    GameConstants.isEvan(skillForJob) && !GameConstants.isEvan(job)) {
                return 
    false;
            } else if (
    GameConstants.isMercedes(skillForJob) && !GameConstants.isMercedes(job)) {
                return 
    false;
            } else if (
    GameConstants.isResist(skillForJob) && !GameConstants.isResist(job)) {
                return 
    false;
            } else if ((
    jid 10) % 10 == && (skillForJob 10) % 10 > (jid 10) % 10) { // wrong 2nd job
                
    return false;
            } else if ((
    skillForJob 10) % 10 != && (skillForJob 10) % 10 != (jid 10) % 10) { //wrong 2nd job
                
    return false;
            } else if (
    skillForJob 10 jid 10) { // wrong 3rd/4th job
                
    return false;
            }
            return 
    true;
        }

        public 
    boolean isTimeLimited() {
            return 
    timeLimited;
        }

        public 
    boolean isFourthJobSkill(int skillid) {
            switch (
    skillid 10000) {
                case 
    112:
                case 
    122:
                case 
    132:
                case 
    212:
                case 
    222:
                case 
    232:
                case 
    312:
                case 
    322:
                case 
    412:
                case 
    422:
                case 
    512:
                case 
    522:
                    return 
    true;
            }
            return 
    false;
        }

        public 
    boolean isThirdJobSkill(int skillid) {
            switch (
    skillid 10000) {
                case 
    111:
                case 
    121:
                case 
    131:
                case 
    211:
                case 
    221:
                case 
    231:
                case 
    311:
                case 
    321:
                case 
    411:
                case 
    421:
                case 
    511:
                case 
    521:
                    return 
    true;
            }
            return 
    false;
        }

        public 
    boolean isSecondJobSkill(int skillid) {
            switch (
    skillid 10000) {
                case 
    110:
                case 
    120:
                case 
    130:
                case 
    210:
                case 
    220:
                case 
    230:
                case 
    310:
                case 
    320:
                case 
    410:
                case 
    420:
                case 
    510:
                case 
    520:
                    return 
    true;
            }
            return 
    false;
        }

        public 
    boolean isFourthJob() {
            switch (
    id) { // I guess imma make an sql table to store these, so that we could max them all out.
                
    case 3220010:
                case 
    3120011:
                case 
    33120010:
                case 
    5220014:
                case 
    23120011:
                case 
    23121008:
                case 
    33121005:
                
    //case 32120009:
                
    case 5321006:
                case 
    21120011:
                case 
    22181004:
                case 
    4340010:
                case 
    4320005:
                case 
    5720008:
                case 
    5120012:
                case 
    5320007:
                    
    //case 24121004://Aria Phantom skill
                    
    return false;
            }
            
    //resurrection has master level while ult.strafe does not.. wtf, impossible to tell from WZ
            
    if ((id 10000) == 2312) { //all 10 skills.
                
    return true;
            }
            if (
    id == 24121009 || id == 24121010) { //LOL WTF U LOSER
                
    return true;
            }
            if ((
    getMaxLevel() <= 15 && !invisible && getMasterLevel() <= 0)) {
                return 
    false;
            }
            if (
    id 10000 >= 2210 && id 10000 3000) { //evan skill
                
    return ((id 10000) % 10) >= || getMasterLevel() > 0;
            }
            if (
    id 10000 >= 430 && id 10000 <= 434) { //db skill
                
    return ((id 10000) % 10) == || getMasterLevel() > 0;
            }
            return ((
    id 10000) % 10) == && id 90000000 && !isBeginnerSkill();
        }

        public 
    Element getElement() {
            return 
    element;
        }

        public 
    int getAnimationTime() {
            return 
    animationTime;
        }

        public 
    int getMasterLevel() {
            return 
    masterLevel;
        }

        public 
    int getDelay() {
            return 
    delay;
        }

        public 
    int getTamingMob() {
            return 
    eventTamingMob;
        }

        public 
    int getSkillTamingMob() {
            return 
    eventTamingMob;
        }

        public 
    boolean isBeginnerSkill() {
            
    int jobId id 10000;
            return 
    GameConstants.isBeginnerJob(jobId);
        }

        public 
    boolean isMagic() {
            return 
    magic;
        }

        public 
    boolean isMovement() {
            return 
    casterMove;
        }

        public 
    boolean isPush() {
            return 
    pushTarget;
        }

        public 
    boolean isPull() {
            return 
    pullTarget;
        }

        public 
    boolean isSpecialSkill() {
            
    int jobId id 10000;
            return 
    jobId == 900 || jobId == 800 || jobId == 9000 || jobId == 9200 || jobId == 9201 || jobId == 9202 || jobId == 9203 || jobId == 9204;
        }

    Hope you find more mount ids :P
    Last edited by AristoCat; 22-10-12 at 05:37 PM.


  2. #2
    Account Inactive DzStudio is offline
    InactiveRank
    Oct 2012 Join Date
    32Posts

    Re: Lithium a few mount fixes (Mercedes, Phantom)

    Good Job !

  3. #3
    Beep Boop Rampenbram is offline
    True MemberRank
    Feb 2009 Join Date
    The NetherlandsLocation
    343Posts

    Re: Lithium a few mount fixes (Mercedes, Phantom)

    yes, thank you alot!

    Lars, creator of BoomBoomMS - 2009 / 2016

  4. #4
    Account Upgraded | Title Enabled! avivii12345 is offline
    True MemberRank
    Jan 2012 Join Date
    276Posts

    Re: Lithium a few mount fixes (Mercedes, Phantom)

    Thanks you Itzik (:

  5. #5
    Chaos is a ladder. AristoCat is offline
    True MemberRank
    Apr 2012 Join Date
    945Posts

    Re: Lithium a few mount fixes (Mercedes, Phantom)

    The phantom cars might not work, i changed a few things in skill.java i will add it now.

  6. #6
    Account Inactive iWillAvenge is offline
    InactiveRank
    May 2010 Join Date
    100Posts

    Re: Lithium a few mount fixes (Mercedes, Phantom)

    How can I fix mounts not appearing for MoopleDev?

  7. #7
    Chaos is a ladder. AristoCat is offline
    True MemberRank
    Apr 2012 Join Date
    945Posts

    Re: Lithium a few mount fixes (Mercedes, Phantom)

    Quote Originally Posted by iWillAvenge View Post
    How can I fix mounts not appearing for MoopleDev?
    No idea I never tried that source

  8. #8
    CSG sunnyboy is offline
    The OmegaRank
    Mar 2010 Join Date
    6,186Posts

    Re: Lithium a few mount fixes (Mercedes, Phantom)

    Instead of as a last resort asking users to replace their whole Skill.java, just show what you added because some users edited Skill.java for other stuff. (might of) You don't know, you use yours and then stuff they had working before is broken and they wonder why. lols

  9. #9
    Chaos is a ladder. AristoCat is offline
    True MemberRank
    Apr 2012 Join Date
    945Posts

    Re: Lithium a few mount fixes (Mercedes, Phantom)

    Quote Originally Posted by sunnyboy184 View Post
    Instead of as a last resort asking users to replace their whole Skill.java, just show what you added because some users edited Skill.java for other stuff. (might of) You don't know, you use yours and then stuff they had working before is broken and they wonder why. lols
    They need to add skillTamingMob to load function and i'm too lazy to tell them exactly what to do....

  10. #10
    Beep Boop Rampenbram is offline
    True MemberRank
    Feb 2009 Join Date
    The NetherlandsLocation
    343Posts

    Re: Lithium a few mount fixes (Mercedes, Phantom)

    hehe this fix works fine for me i use ChickenMS source...

    Lars, creator of BoomBoomMS - 2009 / 2016




Advertisement