Acernis 144.3 Fixes

Results 1 to 15 of 15
  1. #1
    unknowndog Mallissy is offline
    MemberRank
    May 2011 Join Date
    unknowndogLocation
    493Posts

    Acernis 144.3 Fixes

    Just some quick information I'm an now working with @mixtamal6 and @Novak some of the fixes will be posted here but one's that are too complex will just be added to Acernis and released with a newer revision when Novak so chooses

    a huge thanks to those helping with the progression of the project for those of you not helping why not join in? :D
    Changelog Public Fixes
    Spoiler:
    PHP Code:
    15/03/2015 Fix for Tyrant enhancing Elite heliseum gear and Nova gear to come
    15
    /03/2015 - Finally found the right op codes for Phantom's Skill swipe
    15/03/2015 - Dual Blade character creation fix (Luminous is staying private for now ._. it'
    s super easy though)
    16/03/2015 Nova gear fix added (Heliseum still to come)
    16/03/2015 Nx prepaid fix
    17
    /03/2015 Cancelbuff fix 


    Changelog Fixes in source
    Spoiler:
    PHP Code:
    Trifling Wind
    Dawn Warriors 


    This is a suuuuuuuuuuper hacky fix for Dawn Warrior
    Spoiler:
    PHP Code:
    in MapleCharacter change your changeWarriorStance to this
    NOTE
    This only allows you to use Falling Moon if you use any other stance YOU WILL STILL DC
        
    public void changeWarriorStance(final int skillid) {
            if (
    skillid == 11101022) {
                
    //dispelBuff(11111022);
                
    List<MapleBuffStatstatups = new LinkedList();
                 
    statups.add(MapleBuffStat.CRITICAL_PERCENT_UP);
                 
    statups.add(MapleBuffStat.MOON_STANCE2);
                 
    statups.add(MapleBuffStat.WARRIOR_STANCE);
                 
    //client.getSession().write(BuffPacket.cancelBuff(statups));*/
              //  client.getSession().write(JobPacket.DawnWarriorPacket.giveMoonfallStance(getSkillLevel(skillid)));
                
    SkillFactory.getSkill(skillid).getEffect(1).applyTo(this);
            } else if (
    skillid == 11111022) {
              
    //  dispelBuff(11101022);
                
    System.out.println("Start of buff");
                List<
    MapleBuffStatstatups = new LinkedList();
                 
    statups.add(MapleBuffStat.ATTACK_SPEED);
                 
    System.out.println("ATT Speed");
                 
    statups.add(MapleBuffStat.DAMAGE_PERCENT);
                 
    System.out.println("DMG Perc");
                 
    statups.add(MapleBuffStat.WARRIOR_STANCE);
                 
    System.out.println("WAR Stance");
                 
    //client.getSession().write(BuffPacket.cancelBuff(statups));*/
              //  client.getSession().write(JobPacket.DawnWarriorPacket.giveSunriseStance(getSkillLevel(skillid)));
                
    SkillFactory.getSkill(skillid).getEffect(1).applyTo(this);
                } else if (
    skillid == 11121005) {
                 
    //equinox
                 
    } else if (skillid == 11121011) {
                 
    dispelBuff(11101022);
            
    //     client.getSession().write(DawnWarriorPacket.giveEquinox_Moon(getSkillLevel(skillid), Integer.MAX_VALUE));
                 
    SkillFactory.getSkill(skillid).getEffect(1).applyTo(this);
                 } else if (
    skillid == 11121012) {
                 
    dispelBuff(11101022);
             
    //    client.getSession().write(DawnWarriorPacket.giveEquinox_Sun(getSkillLevel(skillid), Integer.MAX_VALUE));
                 
    SkillFactory.getSkill(skillid).getEffect(1).applyTo(this);
            }
        } 


    A few classes don't get their shields when they should then can't attack to fix this
    Spoiler:
    PHP Code:
        public void checkForceShield() {
            final 
    MapleItemInformationProvider li MapleItemInformationProvider.getInstance();
            
    Equip equip;
            
    boolean potential false;
            switch (
    job) {
                case 
    508:
                    
    equip = (Equipli.getEquipById(1352300);
                    break;
                case 
    572:
                    
    potential true;
                case 
    570:
                case 
    571:
                    
    equip = (Equipli.getEquipById(1352301 job 10);
                    break;
                case 
    3001:
                    
    equip = (Equipli.getEquipById(1099000);
                    break;
                case 
    3112:
                    
    potential true;
                case 
    3100:
                case 
    3110:
                case 
    3111:
                    
    equip = (Equipli.getEquipById(1099001 job 10 + ((job 100) / 10));
                    break;
                case 
    3122:
                    
    potential true;
                case 
    3101:
                case 
    3120:
                case 
    3121:
                    
    equip = (Equipli.getEquipById(1099000 job 10 + ((job 100) / 10));
                    break;
                case 
    5112:
                    
    potential true;
                case 
    5100:
                case 
    5110:
                case 
    5111:
                    
    equip = (Equipli.getEquipById(1098000 job 10 + ((job 100) / 10));
                    break;
                case 
    6001:
                    
    equip = (Equipli.getEquipById(1352600);
                    break;
                case 
    6512:
                    
    potential true;
                case 
    6500:
                case 
    6510:
                case 
    6511:
                    
    equip = (Equipli.getEquipById(1352601 job 10 + ((job 100) / 10));
                    break;
                    case 
    6000:
                    
    equip = (Equipli.getEquipById(1352500);
                    break;
                case 
    6112:
                    
    potential true;
                case 
    6100:
                case 
    6110:
                case 
    6111:
                    
    equip = (Equipli.getEquipById(1352500 job 10 + ((job 100) / 10));
                    break;
               case 
    3002:
                    
    equip = (Equipli.getEquipById(1353000);
                    break;
                    case 
    3612:
                    
    potential true;
                case 
    3600:
                case 
    3610:
                case 
    3611:
                    
    equip = (Equipli.getEquipById(1353001 job 10 + ((job 100) / 10));
                    break;
                default:
                    
    equip null;
            }
            if (
    equip != null) {
                if (
    potential) {
                    
    equip.resetPotential();
                }
                
    equip.setPosition((short) -10);
                
    equip.setQuantity((short1);
                
    equip.setGMLog("Job Advance");
                
    forceReAddItem_NoUpdate(equipMapleInventoryType.EQUIPPED);
                
    client.getSession().write(InventoryPacket.updateEquippedItem(thisequip, (short) -10));
                
    equipChanged();
            }
        } 


    A slighty more accurate hp /mp gain on level up
    Spoiler:
    PHP Code:
    add this to your Levelup function in MapleCharacter
          
    if (GameConstants.isBeginnerJob(job)) { // Beginner
                
    maxhp += Randomizer.rand(1216);
                
    maxmp += Randomizer.rand(1012);
            } else if (
    job >= 3100 && job <= 3112) { // Warrior
                
    maxhp += Randomizer.rand(4852);
            } else if ((
    job >= 100 && job <= 132) || (job >= 1100 && job <= 1111)) { // Warrior
                
    maxhp += Randomizer.rand(4852);
                
    maxmp += Randomizer.rand(46);
            } else if ((
    job >= 200 && job <= 232) || (job >= 1200 && job <= 1211)) { // Magician
                
    maxhp += Randomizer.rand(1014);
                
    maxmp += Randomizer.rand(4852);
            } else if ((
    job >= 2700 && job <= 2712)) {
                
    maxhp += Randomizer.rand(4056);
                
    maxmp += Randomizer.rand(210230);
            }          
            else if (
    job >= 3200 && job <= 3212) { //battle mages get their own little neat thing
                
    maxhp += Randomizer.rand(4044);
                
    maxmp += Randomizer.rand(4244);
            } else if ((
    job >= 300 && job <= 322) || (job >= 400 && job <= 434) || (job >= 1300 && job <= 1311) || (job >= 1400 && job <= 1411) || (job >= 3300 && job <= 3312) || (job >= 2300 && job <= 2312)) { // Bowman, Thief, Wind Breaker and Night Walker
                
    maxhp += Randomizer.rand(2024);
                
    maxmp += Randomizer.rand(1416);
            } else if ((
    job >= 510 && job <= 512) || (job >= 1510 && job <= 1512)) { // Pirate
                
    maxhp += Randomizer.rand(3741);
                
    maxmp += Randomizer.rand(1822);
            } else if ((
    job >= 500 && job <= 532) || (job >= 3500 && job <= 3512) || job == 1500) { // Pirate
                
    maxhp += Randomizer.rand(2024);
                
    maxmp += Randomizer.rand(1822);
            } else if (
    job >= 2100 && job <= 2112) { // Aran
                
    maxhp += Randomizer.rand(5052);
                
    maxmp += Randomizer.rand(46);
            } else if (
    job >= 2200 && job <= 2218) { // Evan
                
    maxhp += Randomizer.rand(1216);
                
    maxmp += Randomizer.rand(5052);
            } else if (
    job >= 5100 && job <= 5112) { // Evan
                
    maxhp += Randomizer.rand(4852);
                
    maxmp += Randomizer.rand(46);
            } else if (
    job >= 3120 && job <= 3122) {
                
    maxhp += Randomizer.rand(300370);
            } else if (
    job == 3101) {
                
    maxhp += Randomizer.rand(100125);
            } else { 
    // GameMaster
                
    maxhp += Randomizer.rand(50100);//its already there lol
                
    maxmp += Randomizer.rand(50100);
            } 


    Proper sockets ._.
    Spoiler:
    PHP Code:
    Equip.java line 25 socket1 = -1socket2 = -1socket3 = -1;

    and 
    line 782

        
    public short getSocketState() {
            
    int flag 0;
            if (
    socket1 != -|| socket2 != -|| socket3 != -1) { // Got empty sockets show msg 
                
    flag |= SocketFlag.DEFAULT.getValue();
            }
            if (
    socket1 != -1) {
                
    flag |= SocketFlag.SOCKET_BOX_1.getValue();
            }
            if (
    socket1 0) {
                
    flag |= SocketFlag.USED_SOCKET_1.getValue();
            }
            if (
    socket2 != -1) {
                
    flag |= SocketFlag.SOCKET_BOX_2.getValue();
            }
            if (
    socket2 0) {
                
    flag |= SocketFlag.USED_SOCKET_2.getValue();
            }
            if (
    socket3 != -1) {
                
    flag |= SocketFlag.SOCKET_BOX_3.getValue();
            }
            if (
    socket3 0) {
                
    flag |= SocketFlag.USED_SOCKET_3.getValue();
            }
            return (
    shortflag;
        } 



    OpCode
    Spoiler:
    PHP Code:
    Taken from my previous post 


        USE_UPGRADE_SCROLL
    (true, (short0xC0),//BD
        
    USE_FLAG_SCROLL(false, (short0xC1),//BE
        
    USE_EQUIP_SCROLL(true, (short0xC2),//BF
        
    USE_ABYSS_SCROLL(true, (short0xC7),//C4
        
    USE_CARVED_SEAL(true, (short0xC9),//C5
        
    USE_BONUS_POTENTIAL(true, (short0xC8),
        
    USE_CRAFTED_CUBE(true, (short0xCA),
        
    SKILL_MACRO(true, (short0xF5),
        
    USE_NEBULITE(true, (short0xA0),//9E
        
    USE_ALIEN_SOCKET(true, (short0xA1),//A1
        
    USE_ALIEN_SOCKET_RESPONSE(true, (short0xA2),//A0

    SendOps
       MULTICHAT
    ((short0x133),//118

    Confirmed correct
        CHOOSE_SKILL
    (true, (short0x16B),
        
    SKILL_SWIPE(true, (short0x16C),
        
    VIEW_SKILLS(true, (short0x16D),//161
        
    CANCEL_OUT_SWIPE(true, (short0x16F), 


    Tyrant enhance fix
    Spoiler:
    PHP Code:
    in GameConstants.Java add this
            
    public static boolean isTyrant(final int itemId) {
            switch (
    itemId) {
                
    //Boots
                
    case 1072743:
                case 
    1072744:
                case 
    1072745:
                case 
    1072746:
                case 
    1072747:
                
    //Capes    
                
    case 1102481:
                case 
    1102482:    
                case 
    1102483:    
                case 
    1102484:    
                case 
    1102485:    
                
    //Belts
                
    case 1132174:    
                case 
    1132175:
                case 
    1132176:
                case 
    1132177:
                case 
    1132178:   
             
    //   case 1082543: Warrior Gloves
             //   case 1082544: Mage Gloves
             //   case 1082545: Bowman Gloves
             //   case 1082546: Thief Gloves
             //   case 1082547: Pirate Gloves       
                    //Gloves Are not in 144.3 so they're commented out
                    
    return true;
            }
            return 
    false;

    in Mapleiteminformationprovider.Java replace this line 828 in Acernis source


             
    else if (GameConstants.isEquipScroll(scrollId.getItemId())) {
                                final 
    int chanc Math.max((scrollId.getItemId() == 2049300 || scrollId.getItemId() == 2049303 || scrollId.getItemId() == 2049306 100 : (scrollId.getItemId() == 2049308 50 scrollId.getItemId() == 2049305 60 80)) - (nEquip.getEnhance() * 10), 10) + added;
                                if (
    Randomizer.nextInt(100) > chanc) {
                                    return 
    null//destroyed, nib
                                
    }
                                for (
    int i 0< (scrollId.getItemId() == 2049308 : (scrollId.getItemId() == 2049305 : (scrollId.getItemId() == 2049304 scrollId.getItemId() == 2049309 1))); i++) {
                                    if (
    nEquip.getStr() > || Randomizer.nextInt(50) == 1) { //1/50
                                        
    nEquip.setStr((short) (nEquip.getStr() + Randomizer.nextInt(5)));
                                    }
                                      if (
    nEquip.getStr() > && (GameConstants.isTyrant(nEquip.getItemId()) || Randomizer.nextInt(1) == 1)) {
                                        
    nEquip.setStr((short) (nEquip.getStr() + 22));
                                    }                              
                                    if (
    nEquip.getDex() > || Randomizer.nextInt(50) == 1) { //1/50
                                        
    nEquip.setDex((short) (nEquip.getDex() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getDex() > && (GameConstants.isTyrant(nEquip.getItemId()) || Randomizer.nextInt(1) == 1)) {
                                        
    nEquip.setDex((short) (nEquip.getDex() + 22));
                                    }                                
                                    if (
    nEquip.getInt() > || Randomizer.nextInt(50) == 1) { //1/50
                                        
    nEquip.setInt((short) (nEquip.getInt() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getInt() > && (GameConstants.isTyrant(nEquip.getItemId()) || Randomizer.nextInt(1) == 1)) {
                                        
    nEquip.setInt((short) (nEquip.getInt() + 22));
                                    }
                                    if (
    nEquip.getLuk() > || Randomizer.nextInt(50) == 1) { //1/50
                                        
    nEquip.setLuk((short) (nEquip.getLuk() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getLuk() > && (GameConstants.isTyrant(nEquip.getItemId()) || Randomizer.nextInt(1) == 1)) {
                                        
    nEquip.setLuk((short) (nEquip.getLuk() + 22));
                                    }
                                    if (
    nEquip.getWatk() > && GameConstants.isWeapon(nEquip.getItemId())) {
                                        
    nEquip.setWatk((short) (nEquip.getWatk() + (nEquip.getWatk() / 50 1)));
                                    }
                                    if (
    nEquip.getWatk() > && !GameConstants.isWeapon(nEquip.getItemId()) && Randomizer.nextInt(5) == || Randomizer.nextInt(5) == && !GameConstants.isWeapon(nEquip.getItemId())) {
                                        
    nEquip.setWatk((short) (nEquip.getWatk() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getWatk() > && GameConstants.isTyrant(nEquip.getItemId()) && nEquip.getEnhance() > 3) {
                                        
    nEquip.setWatk((short) (nEquip.getWatk() + 5));
                                    }                                 
                                    if (
    nEquip.getWdef() > || Randomizer.nextInt(40) == 1) { //1/40
                                        
    nEquip.setWdef((short) (nEquip.getWdef() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getMatk() > && GameConstants.isWeapon(nEquip.getItemId())) {
                                        
    nEquip.setMatk((short) (nEquip.getMatk() + (nEquip.getMatk() / 50 1)));
                                    }
                                    if (
    nEquip.getMatk() > && GameConstants.isTyrant(nEquip.getItemId()) && nEquip.getEnhance() > 3) {
                                        
    nEquip.setMatk((short) (nEquip.getMatk() + 5));
                                    }                                
                                    if (
    nEquip.getMdef() > || Randomizer.nextInt(40) == 1) { //1/40
                                        
    nEquip.setMdef((short) (nEquip.getMdef() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getAcc() > || Randomizer.nextInt(20) == 1) { //1/20
                                        
    nEquip.setAcc((short) (nEquip.getAcc() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getAvoid() > || Randomizer.nextInt(20) == 1) { //1/20
                                        
    nEquip.setAvoid((short) (nEquip.getAvoid() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getSpeed() > || Randomizer.nextInt(10) == 1) { //1/10
                                        
    nEquip.setSpeed((short) (nEquip.getSpeed() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getJump() > || Randomizer.nextInt(10) == 1) { //1/10
                                        
    nEquip.setJump((short) (nEquip.getJump() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getHp() > || Randomizer.nextInt(5) == 1) { //1/5
                                        
    nEquip.setHp((short) (nEquip.getHp() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getMp() > || Randomizer.nextInt(5) == 1) { //1/5
                                        
    nEquip.setMp((short) (nEquip.getMp() + Randomizer.nextInt(5)));
                                    }
                                    
    nEquip.setEnhance((byte) (nEquip.getEnhance() + 1));
                                }
                                break;
                            }
        } 


    Dual Blade Character creation fix
    Spoiler:
    PHP Code:
    Line 48 in LoginInformationProvider.java
            DualBlade
    (80103050900falsetruefalsefalsefalsefalse), 


    Nova gear fix
    Spoiler:
    PHP Code:

    in GameConstants
    .java

          
    public static boolean isNovaGear(final int itemId) {
            switch (
    itemId) {
            
    //Boots
            
    case 1072737// Nova Hyades Boots
            
    case 1072738// Nova Hermes Boots
            
    case 1072739// Nova Charon Boots
            
    case 1072740// Nova Lycaon Boots
            
    case 1072741// Nova Altair Boots

            //Cape
            
    case 1102476// Nova Hyades Cloak
            
    case 1102477// Nova Hermes Cloak
            
    case 1102478// Nova Charon Cloak
            
    case 1102479// Nova Lycaon Cloak
            
    case 1102480// Nova Altair Cloak

            //Belt
            
    case 1132169// Nova Hyades Belt
            
    case 1132170// Nova Hermes Belt
            
    case 1132171// Nova Charon Belt
            
    case 1132172// Nova Lycaon Belt
            
    case 1132173// Nova Altair Belt
                        
    return true;
            }
            return 
    false;
        }

    in MapleIteminformationprovider
     
    (same as Tyrant fix just replace with this I added the entire method again for lazy leechers :D)

    else if (
    GameConstants.isEquipScroll(scrollId.getItemId())) {
                                final 
    int chanc Math.max((scrollId.getItemId() == 2049300 || scrollId.getItemId() == 2049303 || scrollId.getItemId() == 2049306 100 : (scrollId.getItemId() == 2049308 50 scrollId.getItemId() == 2049305 60 80)) - (nEquip.getEnhance() * 10), 10) + added;
                                if (
    Randomizer.nextInt(100) > chanc) {
                                    return 
    null//destroyed, nib
                                
    }
                                for (
    int i 0< (scrollId.getItemId() == 2049308 : (scrollId.getItemId() == 2049305 : (scrollId.getItemId() == 2049304 scrollId.getItemId() == 2049309 1))); i++) {
                                    if (
    nEquip.getStr() > || Randomizer.nextInt(50) == 1) { //1/50
                                        
    nEquip.setStr((short) (nEquip.getStr() + Randomizer.nextInt(5)));
                                    }
                                      if (
    nEquip.getStr() > && (GameConstants.isTyrant(nEquip.getItemId()) || Randomizer.nextInt(1) == 1)) {
                                        
    nEquip.setStr((short) (nEquip.getStr() + 22));
                                    }     if (
    nEquip.getStr() > && (GameConstants.isNovaGear(nEquip.getItemId()) || Randomizer.nextInt(1) == 1)) {
                                        
    nEquip.setStr((short) (nEquip.getStr() + 12));
                                    }                              
                                    if (
    nEquip.getDex() > || Randomizer.nextInt(50) == 1) { //1/50
                                        
    nEquip.setDex((short) (nEquip.getDex() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getDex() > && (GameConstants.isTyrant(nEquip.getItemId()) || Randomizer.nextInt(1) == 1)) {
                                        
    nEquip.setDex((short) (nEquip.getDex() + 22));
                                    } if (
    nEquip.getDex() > && (GameConstants.isNovaGear(nEquip.getItemId()) || Randomizer.nextInt(1) == 1)) {
                                        
    nEquip.setDex((short) (nEquip.getDex() + 12));
                                    }                               
                                    if (
    nEquip.getInt() > || Randomizer.nextInt(50) == 1) { //1/50
                                        
    nEquip.setInt((short) (nEquip.getInt() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getInt() > && (GameConstants.isTyrant(nEquip.getItemId()) || Randomizer.nextInt(1) == 1)) {
                                        
    nEquip.setInt((short) (nEquip.getInt() + 22));
                                    }if (
    nEquip.getInt() > && (GameConstants.isTyrant(nEquip.getItemId()) || Randomizer.nextInt(1) == 1)) {
                                        
    nEquip.setInt((short) (nEquip.getInt() + 12));
                                    }
                                    if (
    nEquip.getLuk() > || Randomizer.nextInt(50) == 1) { //1/50
                                        
    nEquip.setLuk((short) (nEquip.getLuk() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getLuk() > && (GameConstants.isTyrant(nEquip.getItemId()) || Randomizer.nextInt(1) == 1)) {
                                        
    nEquip.setLuk((short) (nEquip.getLuk() + 22));
                                    }if (
    nEquip.getLuk() > && (GameConstants.isNovaGear(nEquip.getItemId()) || Randomizer.nextInt(1) == 1)) {
                                        
    nEquip.setLuk((short) (nEquip.getLuk() + 12));
                                    }
                                    if (
    nEquip.getWatk() > && GameConstants.isWeapon(nEquip.getItemId())) {
                                        
    nEquip.setWatk((short) (nEquip.getWatk() + (nEquip.getWatk() / 50 1)));
                                    }
                                    if (
    nEquip.getWatk() > && !GameConstants.isWeapon(nEquip.getItemId()) && Randomizer.nextInt(5) == || Randomizer.nextInt(5) == && !GameConstants.isWeapon(nEquip.getItemId())) {
                                        
    nEquip.setWatk((short) (nEquip.getWatk() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getWatk() > && GameConstants.isTyrant(nEquip.getItemId()) && nEquip.getEnhance() > 3) {
                                        
    nEquip.setWatk((short) (nEquip.getWatk() + 5));
                                    } if (
    nEquip.getWatk() > && GameConstants.isNovaGear(nEquip.getItemId()) && nEquip.getEnhance() > 5) {
                                        
    nEquip.setWatk((short) (nEquip.getWatk() + 2));
                                    }                                 
                                    if (
    nEquip.getWdef() > || Randomizer.nextInt(40) == 1) { //1/40
                                        
    nEquip.setWdef((short) (nEquip.getWdef() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getMatk() > && GameConstants.isWeapon(nEquip.getItemId())) {
                                        
    nEquip.setMatk((short) (nEquip.getMatk() + (nEquip.getMatk() / 50 1)));
                                    }
                                    if (
    nEquip.getMatk() > && GameConstants.isTyrant(nEquip.getItemId()) && nEquip.getEnhance() > 3) {
                                        
    nEquip.setMatk((short) (nEquip.getMatk() + 5));
                                    } if (
    nEquip.getMatk() > && GameConstants.isNovaGear(nEquip.getItemId()) && nEquip.getEnhance() > 5) {
                                        
    nEquip.setMatk((short) (nEquip.getMatk() + 2));
                                    }                                 
                                    if (
    nEquip.getMdef() > || Randomizer.nextInt(40) == 1) { //1/40
                                        
    nEquip.setMdef((short) (nEquip.getMdef() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getAcc() > || Randomizer.nextInt(20) == 1) { //1/20
                                        
    nEquip.setAcc((short) (nEquip.getAcc() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getAvoid() > || Randomizer.nextInt(20) == 1) { //1/20
                                        
    nEquip.setAvoid((short) (nEquip.getAvoid() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getSpeed() > || Randomizer.nextInt(10) == 1) { //1/10
                                        
    nEquip.setSpeed((short) (nEquip.getSpeed() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getJump() > || Randomizer.nextInt(10) == 1) { //1/10
                                        
    nEquip.setJump((short) (nEquip.getJump() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getHp() > || Randomizer.nextInt(5) == 1) { //1/5
                                        
    nEquip.setHp((short) (nEquip.getHp() + Randomizer.nextInt(5)));
                                    }
                                    if (
    nEquip.getMp() > || Randomizer.nextInt(5) == 1) { //1/5
                                        
    nEquip.setMp((short) (nEquip.getMp() + Randomizer.nextInt(5)));
                                    }
                                    
    nEquip.setEnhance((byte) (nEquip.getEnhance() + 1));
                                }
                                break; 


    Nx Prepaid not showing up
    Spoiler:
    PHP Code:
     
    CSPakcet
    .Java line 416

        
    public static byte[] showNXMapleTokens(MapleCharacter chr) {
            
    MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();

            
    mplew.writeShort(SendPacketOpcode.CS_UPDATE.getValue());
            
    mplew.writeInt(chr.getCSPoints(1)); // NX Credit
            
    mplew.writeInt(chr.getCSPoints(2)); // MPoint
            
    mplew.writeInt(chr.getCSPoints(3)); // Maple Rewards (Not in v144.3) but needed to show Nx prepaid for some reason ._.
            
    mplew.writeInt(chr.getCSPoints(4)); // Nx Prepaid

            
    return mplew.getPacket();
        } 



    CancelBuff e38 fix
    Spoiler:
    PHP Code:

    CWvsContext

            
    public static byte[] cancelBuff(List<MapleBuffStatstatups) {
                
    MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();

                
    mplew.writeShort(SendPacketOpcode.CANCEL_BUFF.getValue());

                
    PacketHelper.writeMask(mplewstatups);
                for (
    MapleBuffStat z statups) {
                    if (
    z.canStack()) {
                        
    mplew.writeInt(0);
                    }
                }

                
    mplew.writeZeroBytes(2);
                
    mplew.writeLong(0L);
                
    mplew.writeLong(0L);
                
    mplew.writeLong(0L);
                
    mplew.write(0);

                return 
    mplew.getPacket();
            } 


    updated 17/03/2015 11:35EST
    Last edited by Mallissy; 18-03-15 at 09:30 AM. Reason: New fix


  2. #2
    Proficient Member Borlea is offline
    MemberRank
    Jan 2014 Join Date
    151Posts

    Re: Acernis 144.3 Fixes

    Cool, but you left some debug text in the dawn warrior fix.

  3. #3
    (O_o(o_O(O_O)o_O)O_o) Novak is offline
    MemberRank
    Apr 2009 Join Date
    The NetherlandsLocation
    1,120Posts

    Re: Acernis 144.3 Fixes

    :P Great! This is axacatly why i released it ;) So that others can share fixes I overlooked. Like the HP/MP thing ;)

    Im pretty sure btw that i updated the scroll ops, but still it's awesome that you found some more wrong ones xD

  4. #4
    Novice kizyren is offline
    MemberRank
    Dec 2014 Join Date
    กรุงเLocation
    3Posts

    Re: Acernis 144.3 Fixes

    (bad eng) bowmaster job4 arrow blaster how to set key npc/chat (bug fix)

  5. #5
    Acernis BLazeking558 is offline
    MemberRank
    May 2010 Join Date
    210Posts

    Re: Acernis 144.3 Fixes

    Quote Originally Posted by Mallissy View Post
    So this source

    http://forum.ragezone.com/f427/v144-3-acernis-1052967/

    Is based of of AstralMS v144.3 o-o So I'm going to release fixed for it every once in a while in this thread
    so check back when ever you feel they're pretty much the same as my Xenia fixes but a few different ones aswell that I didn't add back then
    I'm sorry Novak but you should have added these to your source xD if you add them to your next rev kudo's to you!

    This is a suuuuuuuuuuper hacky fix for Dawn Warrior
    Spoiler:
    PHP Code:
    in MapleCharacter change your changeWarriorStance to this
    NOTE
    This only allows you to use Falling Moon if you use any other stance YOU WILL STILL DC
        
    public void changeWarriorStance(final int skillid) {
            if (
    skillid == 11101022) {
                
    //dispelBuff(11111022);
                
    List<MapleBuffStatstatups = new LinkedList();
                 
    statups.add(MapleBuffStat.CRITICAL_PERCENT_UP);
                 
    statups.add(MapleBuffStat.MOON_STANCE2);
                 
    statups.add(MapleBuffStat.WARRIOR_STANCE);
                 
    //client.getSession().write(BuffPacket.cancelBuff(statups));*/
              //  client.getSession().write(JobPacket.DawnWarriorPacket.giveMoonfallStance(getSkillLevel(skillid)));
                
    SkillFactory.getSkill(skillid).getEffect(1).applyTo(this);
            } else if (
    skillid == 11111022) {
              
    //  dispelBuff(11101022);
                
    System.out.println("Start of buff");
                List<
    MapleBuffStatstatups = new LinkedList();
                 
    statups.add(MapleBuffStat.ATTACK_SPEED);
                 
    System.out.println("ATT Speed");
                 
    statups.add(MapleBuffStat.DAMAGE_PERCENT);
                 
    System.out.println("DMG Perc");
                 
    statups.add(MapleBuffStat.WARRIOR_STANCE);
                 
    System.out.println("WAR Stance");
                 
    //client.getSession().write(BuffPacket.cancelBuff(statups));*/
              //  client.getSession().write(JobPacket.DawnWarriorPacket.giveSunriseStance(getSkillLevel(skillid)));
                
    SkillFactory.getSkill(skillid).getEffect(1).applyTo(this);
                } else if (
    skillid == 11121005) {
                 
    //equinox
                 
    } else if (skillid == 11121011) {
                 
    dispelBuff(11101022);
            
    //     client.getSession().write(DawnWarriorPacket.giveEquinox_Moon(getSkillLevel(skillid), Integer.MAX_VALUE));
                 
    SkillFactory.getSkill(skillid).getEffect(1).applyTo(this);
                 } else if (
    skillid == 11121012) {
                 
    dispelBuff(11101022);
             
    //    client.getSession().write(DawnWarriorPacket.giveEquinox_Sun(getSkillLevel(skillid), Integer.MAX_VALUE));
                 
    SkillFactory.getSkill(skillid).getEffect(1).applyTo(this);
            }
        } 


    A few classes don't get their shields when they should then can't attack to fix this
    Spoiler:
    PHP Code:
        public void checkForceShield() {
            final 
    MapleItemInformationProvider li MapleItemInformationProvider.getInstance();
            
    Equip equip;
            
    boolean potential false;
            switch (
    job) {
                case 
    508:
                    
    equip = (Equipli.getEquipById(1352300);
                    break;
                case 
    572:
                    
    potential true;
                case 
    570:
                case 
    571:
                    
    equip = (Equipli.getEquipById(1352301 job 10);
                    break;
                case 
    3001:
                    
    equip = (Equipli.getEquipById(1099000);
                    break;
                case 
    3112:
                    
    potential true;
                case 
    3100:
                case 
    3110:
                case 
    3111:
                    
    equip = (Equipli.getEquipById(1099001 job 10 + ((job 100) / 10));
                    break;
                case 
    3122:
                    
    potential true;
                case 
    3101:
                case 
    3120:
                case 
    3121:
                    
    equip = (Equipli.getEquipById(1099000 job 10 + ((job 100) / 10));
                    break;
                case 
    5112:
                    
    potential true;
                case 
    5100:
                case 
    5110:
                case 
    5111:
                    
    equip = (Equipli.getEquipById(1098000 job 10 + ((job 100) / 10));
                    break;
                case 
    6001:
                    
    equip = (Equipli.getEquipById(1352600);
                    break;
                case 
    6512:
                    
    potential true;
                case 
    6500:
                case 
    6510:
                case 
    6511:
                    
    equip = (Equipli.getEquipById(1352601 job 10 + ((job 100) / 10));
                    break;
                    case 
    6000:
                    
    equip = (Equipli.getEquipById(1352500);
                    break;
                case 
    6112:
                    
    potential true;
                case 
    6100:
                case 
    6110:
                case 
    6111:
                    
    equip = (Equipli.getEquipById(1352500 job 10 + ((job 100) / 10));
                    break;
               case 
    3002:
                    
    equip = (Equipli.getEquipById(1353000);
                    break;
                    case 
    3612:
                    
    potential true;
                case 
    3600:
                case 
    3610:
                case 
    3611:
                    
    equip = (Equipli.getEquipById(1353001 job 10 + ((job 100) / 10));
                    break;
                default:
                    
    equip null;
            }
            if (
    equip != null) {
                if (
    potential) {
                    
    equip.resetPotential();
                }
                
    equip.setPosition((short) -10);
                
    equip.setQuantity((short1);
                
    equip.setGMLog("Job Advance");
                
    forceReAddItem_NoUpdate(equipMapleInventoryType.EQUIPPED);
                
    client.getSession().write(InventoryPacket.updateEquippedItem(thisequip, (short) -10));
                
    equipChanged();
            }
        } 


    A slighty more accurate hp /mp gain on level up
    Spoiler:
    PHP Code:
    add this to your Levelup function in MapleCharacter
          
    if (GameConstants.isBeginnerJob(job)) { // Beginner
                
    maxhp += Randomizer.rand(1216);
                
    maxmp += Randomizer.rand(1012);
            } else if (
    job >= 3100 && job <= 3112) { // Warrior
                
    maxhp += Randomizer.rand(4852);
            } else if ((
    job >= 100 && job <= 132) || (job >= 1100 && job <= 1111)) { // Warrior
                
    maxhp += Randomizer.rand(4852);
                
    maxmp += Randomizer.rand(46);
            } else if ((
    job >= 200 && job <= 232) || (job >= 1200 && job <= 1211)) { // Magician
                
    maxhp += Randomizer.rand(1014);
                
    maxmp += Randomizer.rand(4852);
            } else if ((
    job >= 2700 && job <= 2712)) {
                
    maxhp += Randomizer.rand(4056);
                
    maxmp += Randomizer.rand(210230);
            }          
            else if (
    job >= 3200 && job <= 3212) { //battle mages get their own little neat thing
                
    maxhp += Randomizer.rand(4044);
                
    maxmp += Randomizer.rand(4244);
            } else if ((
    job >= 300 && job <= 322) || (job >= 400 && job <= 434) || (job >= 1300 && job <= 1311) || (job >= 1400 && job <= 1411) || (job >= 3300 && job <= 3312) || (job >= 2300 && job <= 2312)) { // Bowman, Thief, Wind Breaker and Night Walker
                
    maxhp += Randomizer.rand(2024);
                
    maxmp += Randomizer.rand(1416);
            } else if ((
    job >= 510 && job <= 512) || (job >= 1510 && job <= 1512)) { // Pirate
                
    maxhp += Randomizer.rand(3741);
                
    maxmp += Randomizer.rand(1822);
            } else if ((
    job >= 500 && job <= 532) || (job >= 3500 && job <= 3512) || job == 1500) { // Pirate
                
    maxhp += Randomizer.rand(2024);
                
    maxmp += Randomizer.rand(1822);
            } else if (
    job >= 2100 && job <= 2112) { // Aran
                
    maxhp += Randomizer.rand(5052);
                
    maxmp += Randomizer.rand(46);
            } else if (
    job >= 2200 && job <= 2218) { // Evan
                
    maxhp += Randomizer.rand(1216);
                
    maxmp += Randomizer.rand(5052);
            } else if (
    job >= 5100 && job <= 5112) { // Evan
                
    maxhp += Randomizer.rand(4852);
                
    maxmp += Randomizer.rand(46);
            } else if (
    job >= 3120 && job <= 3122) {
                
    maxhp += Randomizer.rand(300370);
            } else if (
    job == 3101) {
                
    maxhp += Randomizer.rand(100125);
            } else { 
    // GameMaster
                
    maxhp += Randomizer.rand(50100);//its already there lol
                
    maxmp += Randomizer.rand(50100);
            } 


    Proper sockets ._.
    Spoiler:
    PHP Code:
    Equip.java line 25 socket1 = -1socket2 = -1socket3 = -1;

    and 
    line 782

        
    public short getSocketState() {
            
    int flag 0;
            if (
    socket1 != -|| socket2 != -|| socket3 != -1) { // Got empty sockets show msg 
                
    flag |= SocketFlag.DEFAULT.getValue();
            }
            if (
    socket1 != -1) {
                
    flag |= SocketFlag.SOCKET_BOX_1.getValue();
            }
            if (
    socket1 0) {
                
    flag |= SocketFlag.USED_SOCKET_1.getValue();
            }
            if (
    socket2 != -1) {
                
    flag |= SocketFlag.SOCKET_BOX_2.getValue();
            }
            if (
    socket2 0) {
                
    flag |= SocketFlag.USED_SOCKET_2.getValue();
            }
            if (
    socket3 != -1) {
                
    flag |= SocketFlag.SOCKET_BOX_3.getValue();
            }
            if (
    socket3 0) {
                
    flag |= SocketFlag.USED_SOCKET_3.getValue();
            }
            return (
    shortflag;
        } 



    OpCode
    Spoiler:
    PHP Code:
    Taken from my previous post 


        USE_UPGRADE_SCROLL
    (true, (short0xC0),//BD
        
    USE_FLAG_SCROLL(false, (short0xC1),//BE
        
    USE_EQUIP_SCROLL(true, (short0xC2),//BF
        
    USE_ABYSS_SCROLL(true, (short0xC7),//C4
        
    USE_CARVED_SEAL(true, (short0xC9),//C5
        
    USE_BONUS_POTENTIAL(true, (short0xC8),
        
    USE_CRAFTED_CUBE(true, (short0xCA),
        
    SKILL_MACRO(true, (short0xF5),
        
    USE_NEBULITE(true, (short0xA0),//9E
        
    USE_ALIEN_SOCKET(true, (short0xA1),//A1
        
    USE_ALIEN_SOCKET_RESPONSE(true, (short0xA2),//A0

    SendOps
       MULTICHAT
    ((short0x133),//118

    These still arent 100but I stopped working on them
        CHOOSE_SKILL
    (true, (short0x16B),
        
    SKILL_SWIPE(true, (short0x16C),
        
    VIEW_SKILLS(true, (short0x16D),//161
        
    CANCEL_OUT_SWIPE(true, (short0x16F), 
    Awesome!!! Thank you!!! This will help Novak a lot!

  6. #6
    unknowndog Mallissy is offline
    MemberRank
    May 2011 Join Date
    unknowndogLocation
    493Posts

    Re: Acernis 144.3 Fixes

    Three new fixes added.

  7. #7
    (O_o(o_O(O_O)o_O)O_o) Novak is offline
    MemberRank
    Apr 2009 Join Date
    The NetherlandsLocation
    1,120Posts

    Re: Acernis 144.3 Fixes

    Quote Originally Posted by Mallissy View Post
    Three new fixes added.
    Awesome! I didn't even bother to fix db/ luminous creation lol xD. As usually i'll be adding your fixes to the next release. Which has buffstats fixed, skill handlers fixed/added, some opcodes you didn't release yet and more :p

    -- will try to make a release in 2 days.

  8. #8
    unknowndog Mallissy is offline
    MemberRank
    May 2011 Join Date
    unknowndogLocation
    493Posts

    Re: Acernis 144.3 Fixes

    Quote Originally Posted by Novak View Post
    Awesome! I didn't even bother to fix db/ luminous creation lol xD. As usually i'll be adding your fixes to the next release. Which has buffstats fixed, skill handlers fixed/added, some opcodes you didn't release yet and more :p

    -- will try to make a release in 2 days.
    I'll be waiting -Excited to get to play with it-
    I might release my lumi char creation when you release your next rev

  9. #9
    Account Upgraded | Title Enabled! Halcyon is offline
    MemberRank
    Mar 2011 Join Date
    1,102Posts

    Re: Acernis 144.3 Fixes

    from kms to v144 good job

  10. #10
    unknowndog Mallissy is offline
    MemberRank
    May 2011 Join Date
    unknowndogLocation
    493Posts

    Re: Acernis 144.3 Fixes

    Quote Originally Posted by Lowsir View Post
    from kms to v144 good job
    I wasn't as active as I wish I had been during that project xD I had a lot going on and I was barely on to help I'm sorry! ):
    But yeah I'm just throwing my input around with some fixes for Acernis Having fun doing so



    New fix added!
    12:09AM EST
    Last edited by Mallissy; 16-03-15 at 05:09 AM.

  11. #11
    Member TLCrimson is offline
    MemberRank
    Aug 2012 Join Date
    89Posts

    Re: Acernis 144.3 Fixes

    Thanks for the fixes Mallissy but for the tyrant fixes are you sure its line 828 in Equip.java?
    Last edited by TLCrimson; 19-03-15 at 06:24 PM.

  12. #12
    unknowndog Mallissy is offline
    MemberRank
    May 2011 Join Date
    unknowndogLocation
    493Posts

    Re: Acernis 144.3 Fixes

    Quote Originally Posted by TLCrimson View Post
    Thanks for the fixes Mallissy but for the tyrant fixes are you sure its line 828 in Equip.java? It doesnt seem to fit properly
    It's Mapleiteminformationprovider! Sorry!






    new fix 3:41pm EST 16/03/15
    Last edited by Mallissy; 16-03-15 at 08:41 PM.

  13. #13

    Re: Acernis 144.3 Fixes

    The socket crash fix was just here tnx!

    *slur*

  14. #14
    Enthusiast Serushi is offline
    MemberRank
    Apr 2008 Join Date
    35Posts

    Re: Acernis 144.3 Fixes

    Much fix, many thanks, such wow. :)

  15. #15
    Enthusiast theluchito is offline
    MemberRank
    Mar 2012 Join Date
    29Posts

    Re: Acernis 144.3 Fixes

    Thanks, nice job :) (y)



Advertisement