Adding/Editing Commands into commands.java

Results 1 to 8 of 8
  1. #1
    Newbie Takuya29 is offline
    MemberRank
    Mar 2013 Join Date
    15Posts

    Adding/Editing Commands into commands.java

    PHP Code:
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package client.messages.commands;

    import client.MapleCharacter;
    import client.MapleCharacterUtil;
    import client.MapleClient;
    import client.MapleStat;
    import client.Skill;
    import client.SkillFactory;
    import client.inventory.Equip;
    import client.inventory.Item;
    import client.inventory.ItemFlag;
    import client.inventory.MapleInventoryType;
    import client.messages.CommandProcessorUtil;
    import client.messages.commands.InternCommand.Ban;
    import client.messages.commands.InternCommand.TempBan;
    import constants.GameConstants;
    import constants.ServerConstants.PlayerGMRank;
    import handling.channel.ChannelServer;
    import handling.world.World;
    import scripting.EventInstanceManager;
    import scripting.EventManager;
    import server.MapleCarnivalChallenge;
    import server.MapleInventoryManipulator;
    import server.MapleItemInformationProvider;
    import server.MapleShopFactory;
    import server.events.MapleEvent;
    import server.events.MapleEventType;
    import server.life.MapleMonster;
    import server.maps.MapleMap;
    import tools.packet.CField;
    import tools.StringUtil;
    import tools.packet.CWvsContext;
    import tools.packet.CWvsContext.InventoryPacket;

    /**
     *
     * @author Emilyx3
     */
    public class GMCommand {

        public static 
    PlayerGMRank getPlayerLevelRequired() {
            return 
    PlayerGMRank.GM;
        }

        public static class 
    GetSkill extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    Skill skill SkillFactory.getSkill(Integer.parseInt(splitted[1]));
                
    byte level = (byteCommandProcessorUtil.getOptionalIntArg(splitted21);
                
    byte masterlevel = (byteCommandProcessorUtil.getOptionalIntArg(splitted31);

                if (
    level skill.getMaxLevel()) {
                    
    level = (byteskill.getMaxLevel();
                }
                if (
    masterlevel skill.getMaxLevel()) {
                    
    masterlevel = (byteskill.getMaxLevel();
                }
                
    c.getPlayer().changeSingleSkillLevel(skilllevelmasterlevel);
                return 
    1;
            }
        }

        public static class 
    Fame extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    MapleCharacter player c.getPlayer();
                if (
    splitted.length 2) {
                    
    c.getPlayer().dropMessage(6"Syntax: !fame <player> <amount>");
                    return 
    0;
                }
                
    MapleCharacter victim c.getChannelServer().getPlayerStorage().getCharacterByName(splitted[1]);
                
    int fame 0;
                try {
                    
    fame Integer.parseInt(splitted[2]);
                } catch (
    NumberFormatException nfe) {
                    
    c.getPlayer().dropMessage(6"Invalid Number...");
                    return 
    0;
                }
                if (
    victim != null && player.allowedToTarget(victim)) {
                    
    victim.addFame(fame);
                    
    victim.updateSingleStat(MapleStat.FAMEvictim.getFame());
                }
                return 
    1;
            }
        }

        public static class 
    Invincible extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    MapleCharacter player c.getPlayer();
                if (
    player.isInvincible()) {
                    
    player.setInvincible(false);
                    
    player.dropMessage(6"Invincibility deactivated.");
                } else {
                    
    player.setInvincible(true);
                    
    player.dropMessage(6"Invincibility activated.");
                }
                return 
    1;
            }
        }

        public static class 
    SP extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    c.getPlayer().setRemainingSp(CommandProcessorUtil.getOptionalIntArg(splitted11));
                
    c.getPlayer().updateSingleStat(MapleStat.AVAILABLESP0); // we don't care the value here
                
    return 1;
            }
        }

        public static class 
    Job extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                if (
    MapleCarnivalChallenge.getJobNameById(Integer.parseInt(splitted[1])).length() == 0) {
                    
    c.getPlayer().dropMessage(5"Invalid Job");
                    return 
    0;
                }
                
    c.getPlayer().changeJob(Integer.parseInt(splitted[1]));
                return 
    1;
            }
        }

        public static class 
    Shop extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    MapleShopFactory shop MapleShopFactory.getInstance();
                
    int shopId Integer.parseInt(splitted[1]);
                if (
    shop.getShop(shopId) != null) {
                    
    shop.getShop(shopId).sendShop(c);
                }
                return 
    1;
            }
        }

        public static class 
    LevelUp extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                if (
    c.getPlayer().getLevel() < 200) {
                    
    c.getPlayer().gainExp(500000000truefalsetrue);
                }
                return 
    1;
            }
        }

        public static class 
    GetItem extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                final 
    int itemId Integer.parseInt(splitted[1]);
                final 
    short quantity = (shortCommandProcessorUtil.getOptionalIntArg(splitted21);

                if (!
    c.getPlayer().isAdmin()) {
                    for (
    int i GameConstants.itemBlock) {
                        if (
    itemId == i) {
                            
    c.getPlayer().dropMessage(5"Sorry but this item is blocked for your GM level.");
                            return 
    0;
                        }
                    }
                }
                
    MapleItemInformationProvider ii MapleItemInformationProvider.getInstance();
                if (
    GameConstants.isPet(itemId)) {
                    
    c.getPlayer().dropMessage(5"Please purchase a pet from the cash shop instead.");
                } else if (!
    ii.itemExists(itemId)) {
                    
    c.getPlayer().dropMessage(5itemId " does not exist");
                } else {
                    
    Item item;
                    
    short flag = (shortItemFlag.LOCK.getValue();

                    if (
    GameConstants.getInventoryType(itemId) == MapleInventoryType.EQUIP) {
                        
    item ii.randomizeStats((Equipii.getEquipById(itemId));
                    } else {
                        
    item = new client.inventory.Item(itemId, (byte0quantity, (byte0);

                    }
                    if (!
    c.getPlayer().isSuperGM()) {
                        
    item.setFlag(flag);
                    }
                    if (!
    c.getPlayer().isAdmin()) {
                        
    item.setOwner(c.getPlayer().getName());
                        
    item.setGMLog(c.getPlayer().getName() + " used !getitem");
                    }

                    
    MapleInventoryManipulator.addbyItem(citem);
                }
                return 
    1;
            }
        }

        public static class 
    Level extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    c.getPlayer().setLevel(Short.parseShort(splitted[1]));
                
    c.getPlayer().levelUp();
                if (
    c.getPlayer().getExp() < 0) {
                    
    c.getPlayer().gainExp(-c.getPlayer().getExp(), falsefalsetrue);
                }
                return 
    1;
            }
        }

        public static class 
    StartAutoEvent extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                final 
    EventManager em c.getChannelServer().getEventSM().getEventManager("AutomatedEvent");
                if (
    em != null) {
                    
    em.scheduleRandomEvent();
                }
                return 
    1;
            }
        }

        public static class 
    SetEvent extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    MapleEvent.onStartEvent(c.getPlayer());
                return 
    1;
            }
        }

        public static class 
    StartEvent extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                if (
    c.getChannelServer().getEvent() == c.getPlayer().getMapId()) {
                    
    MapleEvent.setEvent(c.getChannelServer(), false);
                    
    c.getPlayer().dropMessage(5"Started the event and closed off");
                    return 
    1;
                } else {
                    
    c.getPlayer().dropMessage(5"!scheduleevent must've been done first, and you must be in the event map.");
                    return 
    0;
                }
            }
        }

        public static class 
    ScheduleEvent extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                final 
    MapleEventType type MapleEventType.getByString(splitted[1]);
                if (
    type == null) {
                    final 
    StringBuilder sb = new StringBuilder("Wrong syntax: ");
                    for (
    MapleEventType t MapleEventType.values()) {
                        
    sb.append(t.name()).append(",");
                    }
                    
    c.getPlayer().dropMessage(5sb.toString().substring(0sb.toString().length() - 1));
                    return 
    0;
                }
                final 
    String msg MapleEvent.scheduleEvent(typec.getChannelServer());
                if (
    msg.length() > 0) {
                    
    c.getPlayer().dropMessage(5msg);
                    return 
    0;
                }
                return 
    1;
            }
        }

        public static class 
    RemoveItem extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                if (
    splitted.length 3) {
                    
    c.getPlayer().dropMessage(6"Need <name> <itemid>");
                    return 
    0;
                }
                
    MapleCharacter chr c.getChannelServer().getPlayerStorage().getCharacterByName(splitted[1]);
                if (
    chr == null) {
                    
    c.getPlayer().dropMessage(6"This player does not exist");
                    return 
    0;
                }
                
    chr.removeAll(Integer.parseInt(splitted[2]), false);
                
    c.getPlayer().dropMessage(6"All items with the ID " splitted[2] + " has been removed from the inventory of " splitted[1] + ".");
                return 
    1;

            }
        }

        public static class 
    LockItem extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                if (
    splitted.length 3) {
                    
    c.getPlayer().dropMessage(6"Need <name> <itemid>");
                    return 
    0;
                }
                
    MapleCharacter chr c.getChannelServer().getPlayerStorage().getCharacterByName(splitted[1]);
                if (
    chr == null) {
                    
    c.getPlayer().dropMessage(6"This player does not exist");
                    return 
    0;
                }
                
    int itemid Integer.parseInt(splitted[2]);
                
    MapleInventoryType type GameConstants.getInventoryType(itemid);
                for (
    Item item chr.getInventory(type).listById(itemid)) {
                    
    item.setFlag((byte) (item.getFlag() | ItemFlag.LOCK.getValue()));
                    
    chr.getClient().getSession().write(InventoryPacket.updateSpecialItemUse(itemtype.getType(), item.getPosition(), truechr));
                }
                if (
    type == MapleInventoryType.EQUIP) {
                    
    type MapleInventoryType.EQUIPPED;
                    for (
    Item item chr.getInventory(type).listById(itemid)) {
                        
    item.setFlag((byte) (item.getFlag() | ItemFlag.LOCK.getValue()));
                        
    //chr.getClient().getSession().write(CField.updateSpecialItemUse(item, type.getType()));
                    
    }
                }
                
    c.getPlayer().dropMessage(6"All items with the ID " splitted[2] + " has been locked from the inventory of " splitted[1] + ".");
                return 
    1;
            }
        }

        public static class 
    KillMap extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                for (
    MapleCharacter map c.getPlayer().getMap().getCharactersThreadsafe()) {
                    if (
    map != null && !map.isGM()) {
                        
    map.getStat().setHp((short0map);
                        
    map.getStat().setMp((short0map);
                        
    map.updateSingleStat(MapleStat.HP0);
                        
    map.updateSingleStat(MapleStat.MP0);
                    }
                }
                return 
    1;
            }
        }

        public static class 
    SpeakMega extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    MapleCharacter victim c.getChannelServer().getPlayerStorage().getCharacterByName(splitted[1]);
                
    World.Broadcast.broadcastSmega(CWvsContext.serverNotice(3victim == null c.getChannel() : victim.getClient().getChannel(), victim == null splitted[1] : victim.getName() + " : " StringUtil.joinStringFrom(splitted2), true));
                return 
    1;
            }
        }

        public static class 
    Speak extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    MapleCharacter victim c.getChannelServer().getPlayerStorage().getCharacterByName(splitted[1]);
                if (
    victim == null) {
                    
    c.getPlayer().dropMessage(5"unable to find '" splitted[1]);
                    return 
    0;
                } else {
                    
    victim.getMap().broadcastMessage(CField.getChatText(victim.getId(), StringUtil.joinStringFrom(splitted2), victim.isGM(), 0));
                }
                return 
    1;
            }
        }

        public static class 
    Disease extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                if (
    splitted.length 3) {
                    
    c.getPlayer().dropMessage(6"!disease <type> [charname] <level> where type = SEAL/DARKNESS/WEAKEN/STUN/CURSE/POISON/SLOW/SEDUCE/REVERSE/ZOMBIFY/POTION/SHADOW/BLIND/FREEZE/POTENTIAL");
                    return 
    0;
                }
                
    int type 0;
                if (
    splitted[1].equalsIgnoreCase("SEAL")) {
                    
    type 120;
                } else if (
    splitted[1].equalsIgnoreCase("DARKNESS")) {
                    
    type 121;
                } else if (
    splitted[1].equalsIgnoreCase("WEAKEN")) {
                    
    type 122;
                } else if (
    splitted[1].equalsIgnoreCase("STUN")) {
                    
    type 123;
                } else if (
    splitted[1].equalsIgnoreCase("CURSE")) {
                    
    type 124;
                } else if (
    splitted[1].equalsIgnoreCase("POISON")) {
                    
    type 125;
                } else if (
    splitted[1].equalsIgnoreCase("SLOW")) {
                    
    type 126;
                } else if (
    splitted[1].equalsIgnoreCase("SEDUCE")) {
                    
    type 128;
                } else if (
    splitted[1].equalsIgnoreCase("REVERSE")) {
                    
    type 132;
                } else if (
    splitted[1].equalsIgnoreCase("ZOMBIFY")) {
                    
    type 133;
                } else if (
    splitted[1].equalsIgnoreCase("POTION")) {
                    
    type 134;
                } else if (
    splitted[1].equalsIgnoreCase("SHADOW")) {
                    
    type 135;
                } else if (
    splitted[1].equalsIgnoreCase("BLIND")) {
                    
    type 136;
                } else if (
    splitted[1].equalsIgnoreCase("FREEZE")) {
                    
    type 137;
                } else if (
    splitted[1].equalsIgnoreCase("POTENTIAL")) {
                    
    type 138;
                } else {
                    
    c.getPlayer().dropMessage(6"!disease <type> [charname] <level> where type = SEAL/DARKNESS/WEAKEN/STUN/CURSE/POISON/SLOW/SEDUCE/REVERSE/ZOMBIFY/POTION/SHADOW/BLIND/FREEZE/POTENTIAL");
                    return 
    0;
                }
                if (
    splitted.length == 4) {
                    
    MapleCharacter victim c.getChannelServer().getPlayerStorage().getCharacterByName(splitted[2]);
                    if (
    victim == null) {
                        
    c.getPlayer().dropMessage(5"Not found.");
                        return 
    0;
                    }
                    
    victim.disease(typeCommandProcessorUtil.getOptionalIntArg(splitted31));
                } else {
                    for (
    MapleCharacter victim c.getPlayer().getMap().getCharactersThreadsafe()) {
                        
    victim.disease(typeCommandProcessorUtil.getOptionalIntArg(splitted31));
                    }
                }
                return 
    1;
            }
        }

        public static class 
    CloneMe extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    c.getPlayer().cloneLook();
                return 
    1;
            }
        }

        public static class 
    DisposeClones extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    c.getPlayer().dropMessage(6c.getPlayer().getCloneSize() + " clones disposed.");
                
    c.getPlayer().disposeClones();
                return 
    1;
            }
        }

        public static class 
    SetInstanceProperty extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    EventManager em c.getChannelServer().getEventSM().getEventManager(splitted[1]);
                if (
    em == null || em.getInstances().size() <= 0) {
                    
    c.getPlayer().dropMessage(5"none");
                } else {
                    
    em.setProperty(splitted[2], splitted[3]);
                    for (
    EventInstanceManager eim em.getInstances()) {
                        
    eim.setProperty(splitted[2], splitted[3]);
                    }
                }
                return 
    1;
            }
        }

        public static class 
    ListInstanceProperty extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    EventManager em c.getChannelServer().getEventSM().getEventManager(splitted[1]);
                if (
    em == null || em.getInstances().size() <= 0) {
                    
    c.getPlayer().dropMessage(5"none");
                } else {
                    for (
    EventInstanceManager eim em.getInstances()) {
                        
    c.getPlayer().dropMessage(5"Event " eim.getName() + ", eventManager: " em.getName() + " iprops: " eim.getProperty(splitted[2]) + ", eprops: " em.getProperty(splitted[2]));
                    }
                }
                return 
    0;
            }
        }

        public static class 
    LeaveInstance extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                if (
    c.getPlayer().getEventInstance() == null) {
                    
    c.getPlayer().dropMessage(5"You are not in one");
                } else {
                    
    c.getPlayer().getEventInstance().unregisterPlayer(c.getPlayer());
                }
                return 
    1;
            }
        }

        public static class 
    WhosThere extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    StringBuilder builder = new StringBuilder("Players on Map: ").append(c.getPlayer().getMap().getCharactersThreadsafe().size()).append(", ");
                for (
    MapleCharacter chr c.getPlayer().getMap().getCharactersThreadsafe()) {
                    if (
    builder.length() > 150) { // wild guess :o
                        
    builder.setLength(builder.length() - 2);
                        
    c.getPlayer().dropMessage(6builder.toString());
                        
    builder = new StringBuilder();
                    }
                    
    builder.append(MapleCharacterUtil.makeMapleReadable(chr.getName()));
                    
    builder.append(", ");
                }
                
    builder.setLength(builder.length() - 2);
                
    c.getPlayer().dropMessage(6builder.toString());
                return 
    1;
            }
        }

        public static class 
    StartInstance extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                if (
    c.getPlayer().getEventInstance() != null) {
                    
    c.getPlayer().dropMessage(5"You are in one");
                } else if (
    splitted.length 2) {
                    
    EventManager em c.getChannelServer().getEventSM().getEventManager(splitted[1]);
                    if (
    em == null || em.getInstance(splitted[2]) == null) {
                        
    c.getPlayer().dropMessage(5"Not exist");
                    } else {
                        
    em.getInstance(splitted[2]).registerPlayer(c.getPlayer());
                    }
                } else {
                    
    c.getPlayer().dropMessage(5"!startinstance [eventmanager] [eventinstance]");
                }
                return 
    1;

            }
        }

        public static class 
    ResetMobs extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    c.getPlayer().getMap().killAllMonsters(false);
                return 
    1;
            }
        }

        public static class 
    KillMonsterByOID extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    MapleMap map c.getPlayer().getMap();
                
    int targetId Integer.parseInt(splitted[1]);
                
    MapleMonster monster map.getMonsterByOid(targetId);
                if (
    monster != null) {
                    
    map.killMonster(monsterc.getPlayer(), falsefalse, (byte1);
                }
                return 
    1;
            }
        }

        public static class 
    RemoveNPCs extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    c.getPlayer().getMap().resetNPCs();
                return 
    1;
            }
        }

        public static class 
    Notice extends CommandExecute {

            protected static 
    int getNoticeType(String typestring) {
                if (
    typestring.equals("n")) {
                    return 
    0;
                } else if (
    typestring.equals("p")) {
                    return 
    1;
                } else if (
    typestring.equals("l")) {
                    return 
    2;
                } else if (
    typestring.equals("nv")) {
                    return 
    5;
                } else if (
    typestring.equals("v")) {
                    return 
    5;
                } else if (
    typestring.equals("b")) {
                    return 
    6;
                }
                return -
    1;
            }

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    int joinmod 1;
                
    int range = -1;
                if (
    splitted[1].equals("m")) {
                    
    range 0;
                } else if (
    splitted[1].equals("c")) {
                    
    range 1;
                } else if (
    splitted[1].equals("w")) {
                    
    range 2;
                }

                
    int tfrom 2;
                if (
    range == -1) {
                    
    range 2;
                    
    tfrom 1;
                }
                
    int type getNoticeType(splitted[tfrom]);
                if (
    type == -1) {
                    
    type 0;
                    
    joinmod 0;
                }
                
    StringBuilder sb = new StringBuilder();
                if (
    splitted[tfrom].equals("nv")) {
                    
    sb.append("[Notice]");
                } else {
                    
    sb.append("");
                }
                
    joinmod += tfrom;
                
    sb.append(StringUtil.joinStringFrom(splittedjoinmod));

                
    byte[] packet CWvsContext.serverNotice(typesb.toString());
                if (
    range == 0) {
                    
    c.getPlayer().getMap().broadcastMessage(packet);
                } else if (
    range == 1) {
                    
    ChannelServer.getInstance(c.getChannel()).broadcastPacket(packet);
                } else if (
    range == 2) {
                    
    World.Broadcast.broadcastMessage(packet);
                }
                return 
    1;
            }
        }

        public static class 
    Yellow extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    int range = -1;
                if (
    splitted[1].equals("m")) {
                    
    range 0;
                } else if (
    splitted[1].equals("c")) {
                    
    range 1;
                } else if (
    splitted[1].equals("w")) {
                    
    range 2;
                }
                if (
    range == -1) {
                    
    range 2;
                }
                
    byte[] packet CWvsContext.yellowChat((splitted[0].equals("!y") ? ("[" c.getPlayer().getName() + "] ") : "") + StringUtil.joinStringFrom(splitted2));
                if (
    range == 0) {
                    
    c.getPlayer().getMap().broadcastMessage(packet);
                } else if (
    range == 1) {
                    
    ChannelServer.getInstance(c.getChannel()).broadcastPacket(packet);
                } else if (
    range == 2) {
                    
    World.Broadcast.broadcastMessage(packet);
                }
                return 
    1;
            }
        }

        public static class 
    extends Yellow {
        }

        public static class 
    WhatsMyIP extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    c.getPlayer().dropMessage(5"IP: " c.getSession().getRemoteAddress().toString().split(":")[0]);
                return 
    1;
            }
        }

        public static class 
    TempBanIP extends TempBan {

            public 
    TempBanIP() {
                
    ipBan true;
            }
        }

        public static class 
    BanIP extends Ban {

            public 
    BanIP() {
                
    ipBan true;
            }
        }

        public static class 
    TDrops extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    c.getPlayer().getMap().toggleDrops();
                return 
    1;
            }
        }
        
        public static class 
    rb extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    c.getPlayer().doReborn();
                return 
    1;
            }
        }

    How do you add the below code on top? Because When I copy and paste sandwiching it in between, it gives me error on netbean

    PHP Code:
    } else if (splitted[0].equalsIgnoreCase("!proitem")) {
    if (
    splitted.length == 3) {
    int itemid;
    short multiply;
    try {
    itemid Integer.parseInt(splitted[1]);
    multiply Short.parseShort(splitted[2]);
    } catch (
    NumberFormatException asd) {
    return;
    }
    MapleItemInformationProvider ii MapleItemInformationProvider.getInstance();
    IItem item ii.getEquipById(itemid);
    MapleInventoryType type ii.getInventoryType(itemid);
    if (
    type.equals(MapleInventoryType.EQUIP)) {
    MapleInventoryManipulator.addFromDrop(cii.hardcoreItem((Equipitemmultiply));
    } else {
    mc.dropMessage("Make sure it's an equippable item.");
    }
    } else {
    mc.dropMessage("Invalid syntax.(!proitem (Item ID) (Stat) Example: !proitem 9999999 32767");



  2. #2
    Elite Member Joakim432710 is offline
    Member +Rank
    Oct 2008 Join Date
    222Posts

    Re: Adding/Editing Commands into commands.java

    At the bottom you have:
    PHP Code:

        
    public static class rb extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    c.getPlayer().doReborn();
                return 
    1;
            }
        }

    You add it like so:
    PHP Code:
    public static class proitem extends CommandExecute {
        @
    Override
        
    public int execute(MapleClient cString[] splitted) {
            if (
    splitted.length == 3) {
                
    int itemid;
                
    short multiply;
                try {
                    
    itemid Integer.parseInt(splitted[1]);
                    
    multiply Short.parseShort(splitted[2]);
                } catch (
    NumberFormatException asd) {
                    return 
    1;
                }
                
    MapleItemInformationProvider ii MapleItemInformationProvider.getInstance();
                
    IItem item ii.getEquipById(itemid);
                
    MapleInventoryType type ii.getInventoryType(itemid);
                if (
    type.equals(MapleInventoryType.EQUIP)) {
                    
    MapleInventoryManipulator.addFromDrop(cii.hardcoreItem((Equipitemmultiply));
                } else {
                    
    mc.dropMessage("Make sure it's an equippable item.");
                }
            } else {
                
    mc.dropMessage("Invalid syntax.(!proitem (Item ID) (Stat) Example: !proitem 9999999 32767");
            }
            return 
    1;
        }
    }
        public static class 
    rb extends CommandExecute {

            @
    Override
            
    public int execute(MapleClient cString[] splitted) {
                
    c.getPlayer().doReborn();
                return 
    1;
            }
        }


  3. #3
    Newbie Takuya29 is offline
    MemberRank
    Mar 2013 Join Date
    15Posts

    Re: Adding/Editing Commands into commands.java

    I tried doing that but it gives me error. Asking me to create class and an error that it cannot find symbol

  4. #4
    Sorcerer Supreme hecari is offline
    Member +Rank
    Dec 2008 Join Date
    336Posts

    Re: Adding/Editing Commands into commands.java

    Quote Originally Posted by Takuya29 View Post
    I tried doing that but it gives me error. Asking me to create class and an error that it cannot find symbol
    I think you're lacking the hardcoreItem method in MapleItemInformationProvider.java

    Post your full error here so that we can know what class/method you're missing.

  5. #5
    Newbie Takuya29 is offline
    MemberRank
    Mar 2013 Join Date
    15Posts

    Re: Adding/Editing Commands into commands.java

    ant -f C:\\Users\\Comot\\Documents\\NetBeansProjects\\Lithium jar
    init:
    Deleting: C:\Users\Comot\Documents\NetBeansProjects\Lithium\build\built-jar.properties
    deps-jar:
    Updating property file: C:\Users\Comot\Documents\NetBeansProjects\Lithium\build\built-jar.properties
    Compiling 3 source files to C:\Users\Comot\Documents\NetBeansProjects\Lithium\build\classes
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\scripting\NPCConversationManager.java:1783: error: illegal start of expression
    public void gainAPS(int gain) {
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\scripting\NPCConversationManager.java:1783: error: illegal start of expression
    public void gainAPS(int gain) {
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\scripting\NPCConversationManager.java:1783: error: ';' expected
    public void gainAPS(int gain) {
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\scripting\NPCConversationManager.java:1783: error: ';' expected
    public void gainAPS(int gain) {
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\scripting\NPCConversationManager.java:1787: error: reached end of file while parsing
    }
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\server\MapleItemInformationProvider.java:1489: error: class, interface, or enum expected
    public Equip hardcoreItem(Equip equip, short stat) {
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\server\MapleItemInformationProvider.java:1491: error: class, interface, or enum expected
    equip.setDex(stat);
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\server\MapleItemInformationProvider.java:1492: error: class, interface, or enum expected
    equip.setInt(stat);
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\server\MapleItemInformationProvider.java:1493: error: class, interface, or enum expected
    equip.setLuk(stat);
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\server\MapleItemInformationProvider.java:1494: error: class, interface, or enum expected
    equip.setMatk(stat);
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\server\MapleItemInformationProvider.java:1495: error: class, interface, or enum expected
    equip.setWatk(stat);
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\server\MapleItemInformationProvider.java:1496: error: class, interface, or enum expected
    equip.setAcc(stat);
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\server\MapleItemInformationProvider.java:1497: error: class, interface, or enum expected
    equip.setAvoid(stat);
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\server\MapleItemInformationProvider.java:1498: error: class, interface, or enum expected
    equip.setJump(stat);
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\server\MapleItemInformationProvider.java:1499: error: class, interface, or enum expected
    equip.setSpeed(stat);
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\server\MapleItemInformationProvider.java:1500: error: class, interface, or enum expected
    equip.setWdef(stat);
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\server\MapleItemInformationProvider.java:1501: error: class, interface, or enum expected
    equip.setMdef(stat);
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\server\MapleItemInformationProvider.java:1502: error: class, interface, or enum expected
    equip.setHp(stat);
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\server\MapleItemInformationProvider.java:1503: error: class, interface, or enum expected
    equip.setMp(stat);
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\server\MapleItemInformationProvider.java:1504: error: class, interface, or enum expected
    return equip;
    C:\Users\Comot\Desktop\LithiumRev96\trunk\src\server\MapleItemInformationProvider.java:1505: error: class, interface, or enum expected
    }
    21 errors
    C:\Users\Comot\Documents\NetBeansProjects\Lithium\nbproject\build-impl.xml:900: The following error occurred while executing this line:
    C:\Users\Comot\Documents\NetBeansProjects\Lithium\nbproject\build-impl.xml:265: Compile failed; see the compiler error output for details.
    BUILD FAILED (total time: 0 seconds)

    The script source is from here :http://ranchworld.forumsmotion.com/t...tem-gm-command

  6. #6
    Sorcerer Supreme hecari is offline
    Member +Rank
    Dec 2008 Join Date
    336Posts

    Re: Adding/Editing Commands into commands.java

    Would you mind showing me your MapleItemInformationProvider.java? According to the error, it expects you to start another class (or interface or enum). If you aren't, then you have too many closing brackets above there. Review your matching of brackets and indentation of code.

    Not to mention, since !proitem is used by the GM, wouldnt it be wise to add the item directly to the inventory instead of dropping it? Players might be able to loot the item. If you want to add the item directly to the inventory, I recommend you porting the make MSI function in NPCConversationManager to your command.

    (Anyway, some error seems to be coming from your NPCConversationManager.JAVA)

  7. #7
    Newbie Takuya29 is offline
    MemberRank
    Mar 2013 Join Date
    15Posts

    Re: Adding/Editing Commands into commands.java

    PHP Code:
    package server;
    import java.io.File;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;
    import client.inventory.Equip;import client.inventory.Item;import client.inventory.ItemFlag;import constants.GameConstants;import client.MapleCharacter;import client.MapleTrait.MapleTraitType;import client.inventory.EquipAdditions;import client.inventory.MapleInventoryType;import constants.BattleConstants.PokemonItem;import database.DatabaseConnection;import java.awt.Point;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Collection;import java.util.EnumMap;import java.util.LinkedList;import provider.MapleData;import provider.MapleDataDirectoryEntry;import provider.MapleDataEntry;import provider.MapleDataFileEntry;import provider.MapleDataProvider;import provider.MapleDataProviderFactory;import provider.MapleDataTool;import provider.MapleDataType;import server.StructSetItem.SetItem;import tools.Pair;import tools.Triple;
    public class 
    MapleItemInformationProvider {
        private final static 
    MapleItemInformationProvider instance = new MapleItemInformationProvider();    protected final MapleDataProvider chrData MapleDataProviderFactory.getDataProvider(new File(System.getProperty("net.sf.odinms.wzpath") + "/Character.wz"));    protected final MapleDataProvider etcData MapleDataProviderFactory.getDataProvider(new File(System.getProperty("net.sf.odinms.wzpath") + "/Etc.wz"));    protected final MapleDataProvider itemData MapleDataProviderFactory.getDataProvider(new File(System.getProperty("net.sf.odinms.wzpath") + "/Item.wz"));    protected final Map<IntegerItemInformationdataCache = new HashMap<IntegerItemInformation>();    protected final Map<String, List<Triple<StringPointPoint>>> afterImage = new HashMap<String, List<Triple<StringPointPoint>>>();    protected final Map<Integer, List<StructItemOption>> potentialCache = new HashMap<Integer, List<StructItemOption>>();    protected final Map<IntegerMap<IntegerStructItemOption>> socketCache = new HashMap<>(); // Grade, (id, data)    protected final Map<Integer, MapleStatEffect> itemEffects = new HashMap<Integer, MapleStatEffect>();    protected final Map<Integer, MapleStatEffect> itemEffectsEx = new HashMap<Integer, MapleStatEffect>();    protected final Map<Integer, Integer> mobIds = new HashMap<Integer, Integer>();    protected final Map<Integer, Pair<Integer, Integer>> potLife = new HashMap<Integer, Pair<Integer, Integer>>(); //itemid to lifeid, levels    protected final Map<Integer, StructFamiliar> familiars = new HashMap<Integer, StructFamiliar>(); //by familiarID    protected final Map<Integer, StructFamiliar> familiars_Item = new HashMap<Integer, StructFamiliar>(); //by cardID    protected final Map<Integer, StructFamiliar> familiars_Mob = new HashMap<Integer, StructFamiliar>(); //by mobID    protected final Map<Integer, Pair<List<Integer>, List<Integer>>> androids = new HashMap<Integer, Pair<List<Integer>, List<Integer>>>();    protected final Map<Integer, Triple<Integer, List<Integer>, List<Integer>>> monsterBookSets = new HashMap<Integer, Triple<Integer, List<Integer>, List<Integer>>>();    protected final Map<Byte, StructSetItem> setItems = new HashMap<Byte, StructSetItem>();
        
    public void runEtc() {        if (!setItems.isEmpty() || !potentialCache.isEmpty() || !socketCache.isEmpty()) {            return;        }        final MapleData setsData etcData.getData("SetItemInfo.img");        StructSetItem itemz;        SetItem itez;        for (MapleData dat setsData) {            itemz = new StructSetItem();            itemz.setItemID Byte.parseByte(dat.getName());            itemz.completeCount = (byteMapleDataTool.getIntConvert("completeCount"dat0);            for (MapleData level dat.getChildByPath("ItemID")) {                if (level.getType() != MapleDataType.INT) {                    for (MapleData leve level) {                        if (!leve.getName().equals("representName") && !leve.getName().equals("typeName")) {                            itemz.itemIDs.add(MapleDataTool.getInt(leve));                        }                    }                } else {                    itemz.itemIDs.add(MapleDataTool.getInt(level));                }            }            for (MapleData level dat.getChildByPath("Effect")) {                itez = new SetItem();                itez.incPDD MapleDataTool.getIntConvert("incPDD"level0);                itez.incMDD MapleDataTool.getIntConvert("incMDD"level0);                itez.incSTR MapleDataTool.getIntConvert("incSTR"level0);                itez.incDEX MapleDataTool.getIntConvert("incDEX"level0);                itez.incINT MapleDataTool.getIntConvert("incINT"level0);                itez.incLUK MapleDataTool.getIntConvert("incLUK"level0);                itez.incACC MapleDataTool.getIntConvert("incACC"level0);                itez.incPAD MapleDataTool.getIntConvert("incPAD"level0);                itez.incMAD MapleDataTool.getIntConvert("incMAD"level0);                itez.incSpeed MapleDataTool.getIntConvert("incSpeed"level0);                itez.incMHP MapleDataTool.getIntConvert("incMHP"level0);                itez.incMMP MapleDataTool.getIntConvert("incMMP"level0);                itez.incMHPr MapleDataTool.getIntConvert("incMHPr"level0);                itez.incMMPr MapleDataTool.getIntConvert("incMMPr"level0);                itez.incAllStat MapleDataTool.getIntConvert("incAllStat"level0);                itez.option1 MapleDataTool.getIntConvert("Option/1/option"level0);                itez.option2 MapleDataTool.getIntConvert("Option/2/option"level0);                itez.option1Level MapleDataTool.getIntConvert("Option/1/level"level0);                itez.option2Level MapleDataTool.getIntConvert("Option/2/level"level0);                itemz.items.put(Integer.parseInt(level.getName()), itez);            }            setItems.put(itemz.setItemIDitemz);        }        StructItemOption item;        final MapleData potsData itemData.getData("ItemOption.img");        List<StructItemOptionitems;        for (MapleData dat potsData) {            items = new LinkedList<>();            for (MapleData potLevel dat.getChildByPath("level")) {                item = new StructItemOption();                item.opID Integer.parseInt(dat.getName());                item.optionType MapleDataTool.getIntConvert("info/optionType"dat0);                item.reqLevel MapleDataTool.getIntConvert("info/reqLevel"dat0);                for (final String i StructItemOption.types) {                    if (i.equals("face")) {                        item.face MapleDataTool.getString("face"potLevel"");                    } else {                        final int level MapleDataTool.getIntConvert(ipotLevel0);                        if (level 0) { // Save memory                            item.data.put(i, level);                        }                    }                }                switch (item.opID) {                    case 31001: // Haste                    case 31002: // Mystic Door                    case 31003: // Sharp Eyes                    case 31004: // Hyper Body                        item.data.put("skillID", (item.opID - 23001));                        break;                    case 41005: // Combat Orders                    case 41006: // Advanced Blessing                    case 41007: // Speed Infusion                        item.data.put("skillID", (item.opID - 33001));                        break;                }                items.add(item);            }            potentialCache.put(Integer.parseInt(dat.getName()), items);        }        final Map<Integer, StructItemOption> gradeS = new HashMap<>();        final Map<Integer, StructItemOption> gradeA = new HashMap<>();        final Map<Integer, StructItemOption> gradeB = new HashMap<>();        final Map<Integer, StructItemOption> gradeC = new HashMap<>();        final Map<Integer, StructItemOption> gradeD = new HashMap<>();        final MapleData nebuliteData = itemData.getData("Install/0306.img");        for (MapleData dat : nebuliteData) {            item = new StructItemOption();            item.opID = Integer.parseInt(dat.getName()); // Item Id            item.optionType = MapleDataTool.getInt("optionType", dat.getChildByPath("socket"), 0);            for (MapleData info : dat.getChildByPath("socket/option")) {                final String optionString = MapleDataTool.getString("optionString", info, "");                final int level = MapleDataTool.getInt("level", info, 0);                if (level > 0) { // Save memory                    item.data.put(optionString, level);                }            }            switch (item.opID) {                case 3063370: // Haste                    item.data.put("skillID", 8000);                    break;                case 3063380: // Mystic Door                    item.data.put("skillID", 8001);                    break;                case 3063390: // Sharp Eyes                    item.data.put("skillID", 8002);                    break;                case 3063400: // Hyper Body                    item.data.put("skillID", 8003);                    break;                case 3064470: // Combat Orders                    item.data.put("skillID", 8004);                    break;                case 3064480: // Advanced Blessing                    item.data.put("skillID", 8005);                    break;                case 3064490: // Speed Infusion                    item.data.put("skillID", 8006);                    break;            }            switch (GameConstants.getNebuliteGrade(item.opID)) {                case 4: //S                    gradeS.put(Integer.parseInt(dat.getName()), item);                    break;                case 3: //A                    gradeA.put(Integer.parseInt(dat.getName()), item);                    break;                case 2: //B                    gradeB.put(Integer.parseInt(dat.getName()), item);                    break;                case 1: //C                    gradeC.put(Integer.parseInt(dat.getName()), item);                    break;                case 0: //D                    gradeD.put(Integer.parseInt(dat.getName()), item);                    break; // impossible to be -1 since we're looping in 306.img.xml                                }        }        socketCache.put(4, gradeS);        socketCache.put(3, gradeA);        socketCache.put(2, gradeB);        socketCache.put(1, gradeC);        socketCache.put(0, gradeD);
            
    final MapleDataDirectoryEntry e = (MapleDataDirectoryEntryetcData.getRoot().getEntry("Android");        for (MapleDataEntry d e.getFiles()) {            final MapleData iz etcData.getData("Android/" d.getName());            final List<Integerhair = new ArrayList<Integer>(), face = new ArrayList<Integer>();            for (MapleData ds iz.getChildByPath("costume/hair")) {                hair.add(MapleDataTool.getInt(ds30000));            }            for (MapleData ds iz.getChildByPath("costume/face")) {                face.add(MapleDataTool.getInt(ds20000));            }            androids.put(Integer.parseInt(d.getName().substring(04)), new Pair<List<Integer>, List<Integer>>(hairface));        }
            final 
    MapleData lifesData etcData.getData("ItemPotLifeInfo.img");        for (MapleData d lifesData) {            if (d.getChildByPath("info") != null && MapleDataTool.getInt("type"d.getChildByPath("info"), 0) == 1) {                potLife.put(MapleDataTool.getInt("counsumeItem"d.getChildByPath("info"), 0), new Pair<IntegerInteger>(Integer.parseInt(d.getName()), d.getChildByPath("level").getChildren().size()));            }        }        List<Triple<StringPointPoint>> thePointK = new ArrayList<Triple<StringPointPoint>>();        List<Triple<StringPointPoint>> thePointA = new ArrayList<Triple<StringPointPoint>>();
            final 
    MapleDataDirectoryEntry a = (MapleDataDirectoryEntrychrData.getRoot().getEntry("Afterimage");        for (MapleDataEntry b a.getFiles()) {            final MapleData iz chrData.getData("Afterimage/" b.getName());            List<Triple<StringPointPoint>> thePoint = new ArrayList<Triple<StringPointPoint>>();            Map<StringPair<PointPoint>> dummy = new HashMap<StringPair<PointPoint>>();            for (MapleData i iz) {                for (MapleData xD i) {                    if (xD.getName().contains("prone") || xD.getName().contains("double") || xD.getName().contains("triple")) {                        continue;                    }                    if ((b.getName().contains("bow") || b.getName().contains("Bow")) && !xD.getName().contains("shoot")) {                        continue;                    }                    if ((b.getName().contains("gun") || b.getName().contains("cannon")) && !xD.getName().contains("shot")) {                        continue;                    }                    if (dummy.containsKey(xD.getName())) {                        if (xD.getChildByPath("lt") != null) {                            Point lt = (PointxD.getChildByPath("lt").getData();                            Point ourLt dummy.get(xD.getName()).left;                            if (lt.ourLt.x) {                                ourLt.lt.x;                            }                            if (lt.ourLt.y) {                                ourLt.lt.y;                            }                        }                        if (xD.getChildByPath("rb") != null) {                            Point rb = (PointxD.getChildByPath("rb").getData();                            Point ourRb dummy.get(xD.getName()).right;                            if (rb.ourRb.x) {                                ourRb.rb.x;                            }                            if (rb.ourRb.y) {                                ourRb.rb.y;                            }                        }                    } else {                        Point lt nullrb null;                        if (xD.getChildByPath("lt") != null) {                            lt = (PointxD.getChildByPath("lt").getData();                        }                        if (xD.getChildByPath("rb") != null) {                            rb = (PointxD.getChildByPath("rb").getData();                        }                        dummy.put(xD.getName(), new Pair<PointPoint>(ltrb));                    }                }            }            for (Entry<StringPair<PointPoint>> ez dummy.entrySet()) {                if (ez.getKey().length() > && ez.getKey().substring(ez.getKey().length() - 2ez.getKey().length() - 1).equals("D")) { //D = double weapon                    thePointK.add(new Triple<String, Point, Point>(ez.getKey(), ez.getValue().left, ez.getValue().right));                } else if (ez.getKey().contains("PoleArm")) { //D = double weapon                    thePointA.add(new Triple<String, Point, Point>(ez.getKey(), ez.getValue().left, ez.getValue().right));                } else {                    thePoint.add(new Triple<String, Point, Point>(ez.getKey(), ez.getValue().left, ez.getValue().right));                }            }            afterImage.put(b.getName().substring(0, b.getName().length() - 4), thePoint);        }        afterImage.put("katara", thePointK); //hackish        afterImage.put("aran", thePointA); //hackish    }
        
    public void runItems() {        if (GameConstants.GMS) { //these must be loaded before items..            final MapleData fData = etcData.getData("FamiliarInfo.img");            for (MapleData d : fData) {                StructFamiliar f = new StructFamiliar();                f.grade = 0;                f.mob = MapleDataTool.getInt("mob", d, 0);                f.passive = MapleDataTool.getInt("passive", d, 0);                f.itemid = MapleDataTool.getInt("consume", d, 0);                f.familiar = Integer.parseInt(d.getName());                familiars.put(f.familiar, f);                familiars_Item.put(f.itemid, f);                familiars_Mob.put(f.mob, f);            }            final MapleDataDirectoryEntry e = (MapleDataDirectoryEntry) chrData.getRoot().getEntry("Familiar");            for (MapleDataEntry d : e.getFiles()) {                final int id = Integer.parseInt(d.getName().substring(0, d.getName().length() - 4));                if (familiars.containsKey(id)) {                    familiars.get(id).grade = (byte) MapleDataTool.getInt("grade", chrData.getData("Familiar/" + d.getName()).getChildByPath("info"), 0);                }            }
                
    final MapleData mSetsData etcData.getData("MonsterBookSet.img");            for (MapleData d mSetsData.getChildByPath("setList")) {                if (MapleDataTool.getInt("deactivated"d0) > 0) {                    continue;                }                final List<Integerset = new ArrayList<Integer>(), potential = new ArrayList<Integer>(3);                for (MapleData ds d.getChildByPath("stats/potential")) {                    if (ds.getType() != MapleDataType.STRING && MapleDataTool.getInt(ds0) > 0) {                        potential.add(MapleDataTool.getInt(ds0));                        if (potential.size() >= 5) {                            break;                        }                    }                }                for (MapleData ds d.getChildByPath("cardList")) {                    set.add(MapleDataTool.getInt(ds0));                }                monsterBookSets.put(Integer.parseInt(d.getName()), new Triple<Integer, List<Integer>, List<Integer>>(MapleDataTool.getInt("setScore"d0), setpotential));            }        }
            try {            
    Connection con DatabaseConnection.getConnection();
                
    // Load Item Data            PreparedStatement ps = con.prepareStatement("SELECT * FROM wz_itemdata");
                
    ResultSet rs ps.executeQuery();            while (rs.next()) {                initItemInformation(rs);            }            rs.close();            ps.close();
                
    // Load Item Equipment Data
                
    ps con.prepareStatement("SELECT * FROM wz_itemequipdata ORDER BY itemid");            rs ps.executeQuery();            while (rs.next()) {                initItemEquipData(rs);            }            rs.close();            ps.close();
                
    // Load Item Addition Data
                
    ps con.prepareStatement("SELECT * FROM wz_itemadddata ORDER BY itemid");            rs ps.executeQuery();            while (rs.next()) {                initItemAddData(rs);            }            rs.close();            ps.close();
                
    // Load Item Reward Data
                
    ps con.prepareStatement("SELECT * FROM wz_itemrewarddata ORDER BY itemid");            rs ps.executeQuery();            while (rs.next()) {                initItemRewardData(rs);            }            rs.close();            ps.close();
                
    // Finalize all Equipments
                
    for (Entry<IntegerItemInformationentry dataCache.entrySet()) {                if (GameConstants.getInventoryType(entry.getKey()) == MapleInventoryType.EQUIP) {                    finalizeEquipData(entry.getValue());                }            }        } catch (SQLException ex) {            ex.printStackTrace();        }        System.out.println(dataCache.size() + " items loaded.");    }
        public final List<
    StructItemOptiongetPotentialInfo(final int potId) {        return potentialCache.get(potId);    }
        public final 
    Map<Integer, List<StructItemOption>> getAllPotentialInfo() {        return potentialCache;    }
        public final 
    StructItemOption getSocketInfo(final int potId) {        final int grade GameConstants.getNebuliteGrade(potId);        if (grade == -1) {            return null;        }        return socketCache.get(grade).get(potId);    }
        public final 
    Map<IntegerStructItemOptiongetAllSocketInfo(final int grade) {        return socketCache.get(grade);    }
        public final 
    Collection<IntegergetMonsterBookList() {        return mobIds.values();    }
        public final 
    Map<IntegerIntegergetMonsterBook() {        return mobIds;    }
        public final 
    Pair<IntegerIntegergetPot(int f) {        return potLife.get(f);    }
        public final 
    StructFamiliar getFamiliar(int f) {        return familiars.get(f);    }
        public final 
    Map<IntegerStructFamiliargetFamiliars() {        return familiars;    }
        public final 
    StructFamiliar getFamiliarByItem(int f) {        return familiars_Item.get(f);    }
        public final 
    StructFamiliar getFamiliarByMob(int f) {        return familiars_Mob.get(f);    }
        public static final 
    MapleItemInformationProvider getInstance() {        return instance;    }
        public final 
    Collection<ItemInformationgetAllItems() {        return dataCache.values();    }
        public final 
    Pair<List<Integer>, List<Integer>> getAndroidInfo(int i) {        return androids.get(i);    }
        public final 
    Triple<Integer, List<Integer>, List<Integer>> getMonsterBookInfo(int i) {        return monsterBookSets.get(i);    }
        public final 
    Map<IntegerTriple<Integer, List<Integer>, List<Integer>>> getAllMonsterBookInfo() {        return monsterBookSets;    }
        protected final 
    MapleData getItemData(final int itemId) {        MapleData ret null;        final String idStr "0" String.valueOf(itemId);        MapleDataDirectoryEntry root itemData.getRoot();        for (final MapleDataDirectoryEntry topDir root.getSubdirectories()) {            // we should have .img files here beginning with the first 4 IID            for (final MapleDataFileEntry iFile : topDir.getFiles()) {                if (iFile.getName().equals(idStr.substring(0, 4) + ".img")) {                    ret = itemData.getData(topDir.getName() + "/" + iFile.getName());                    if (ret == null) {                        return null;                    }                    ret = ret.getChildByPath(idStr);                    return ret;                } else if (iFile.getName().equals(idStr.substring(1) + ".img")) {                    ret = itemData.getData(topDir.getName() + "/" + iFile.getName());                    return ret;                }            }        }        //equips dont have item effects :)        /*root = equipData.getRoot();        for (final MapleDataDirectoryEntry topDir : root.getSubdirectories()) {        for (final MapleDataFileEntry iFile : topDir.getFiles()) {        if (iFile.getName().equals(idStr + ".img")) {        ret = equipData.getData(topDir.getName() + "/" + iFile.getName());        return ret;        }        }        }*/
            
    return ret;    }
        public 
    Integer getItemIdByMob(int mobId) {        return mobIds.get(mobId);    }
        public 
    Integer getSetId(int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return Integer.valueOf(i.cardSet);    }
        
    /** returns the maximum of items in one slot */    public final short getSlotMax(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return 0;        }        return i.slotMax;    }
        public final 
    int getWholePrice(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return 0;        }        return i.wholePrice;    }
        public final 
    double getPrice(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return -1.0;        }        return i.price;    }
        protected 
    int rand(int minint max) {        return Math.abs((int) Randomizer.rand(minmax));    }
        public 
    Equip levelUpEquip(Equip equipMap<StringIntegersta) {        Equip nEquip = (Equipequip.copy();        //is this all the stats?        try {            for (Entry<String, Integer> stat : sta.entrySet()) {                if (stat.getKey().equals("STRMin")) {                    nEquip.setStr((short) (nEquip.getStr() + rand(stat.getValue().intValue(), sta.get("STRMax").intValue())));                } else if (stat.getKey().equals("DEXMin")) {                    nEquip.setDex((short) (nEquip.getDex() + rand(stat.getValue().intValue(), sta.get("DEXMax").intValue())));                } else if (stat.getKey().equals("INTMin")) {                    nEquip.setInt((short) (nEquip.getInt() + rand(stat.getValue().intValue(), sta.get("INTMax").intValue())));                } else if (stat.getKey().equals("LUKMin")) {                    nEquip.setLuk((short) (nEquip.getLuk() + rand(stat.getValue().intValue(), sta.get("LUKMax").intValue())));                } else if (stat.getKey().equals("PADMin")) {                    nEquip.setWatk((short) (nEquip.getWatk() + rand(stat.getValue().intValue(), sta.get("PADMax").intValue())));                } else if (stat.getKey().equals("PDDMin")) {                    nEquip.setWdef((short) (nEquip.getWdef() + rand(stat.getValue().intValue(), sta.get("PDDMax").intValue())));                } else if (stat.getKey().equals("MADMin")) {                    nEquip.setMatk((short) (nEquip.getMatk() + rand(stat.getValue().intValue(), sta.get("MADMax").intValue())));                } else if (stat.getKey().equals("MDDMin")) {                    nEquip.setMdef((short) (nEquip.getMdef() + rand(stat.getValue().intValue(), sta.get("MDDMax").intValue())));                } else if (stat.getKey().equals("ACCMin")) {                    nEquip.setAcc((short) (nEquip.getAcc() + rand(stat.getValue().intValue(), sta.get("ACCMax").intValue())));                } else if (stat.getKey().equals("EVAMin")) {                    nEquip.setAvoid((short) (nEquip.getAvoid() + rand(stat.getValue().intValue(), sta.get("EVAMax").intValue())));                } else if (stat.getKey().equals("SpeedMin")) {                    nEquip.setSpeed((short) (nEquip.getSpeed() + rand(stat.getValue().intValue(), sta.get("SpeedMax").intValue())));                } else if (stat.getKey().equals("JumpMin")) {                    nEquip.setJump((short) (nEquip.getJump() + rand(stat.getValue().intValue(), sta.get("JumpMax").intValue())));                } else if (stat.getKey().equals("MHPMin")) {                    nEquip.setHp((short) (nEquip.getHp() + rand(stat.getValue().intValue(), sta.get("MHPMax").intValue())));                } else if (stat.getKey().equals("MMPMin")) {                    nEquip.setMp((short) (nEquip.getMp() + rand(stat.getValue().intValue(), sta.get("MMPMax").intValue())));                } else if (stat.getKey().equals("MaxHPMin")) {                    nEquip.setHp((short) (nEquip.getHp() + rand(stat.getValue().intValue(), sta.get("MaxHPMax").intValue())));                } else if (stat.getKey().equals("MaxMPMin")) {                    nEquip.setMp((short) (nEquip.getMp() + rand(stat.getValue().intValue(), sta.get("MaxMPMax").intValue())));                }            }        } catch (NullPointerException e) {            //catch npe because obviously the wz have some error XD            e.printStackTrace();        }        return nEquip;    }
        
    public final EnumMap<EquipAdditionsPair<IntegerInteger>> getEquipAdditions(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return i.equipAdditions;    }
        public final 
    Map<IntegerMap<StringInteger>> getEquipIncrements(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return i.equipIncs;    }
        public final List<
    IntegergetEquipSkills(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return i.incSkill;    }
        public final 
    Map<StringIntegergetEquipStats(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return i.equipStats;    }
        public final 
    boolean canEquip(final Map<StringIntegerstats, final int itemid, final int level, final int job, final int fame, final int str, final int dex, final int luk, final int int_, final int supremacy) {        if ((level supremacy) >= (stats.containsKey("reqLevel") ? stats.get("reqLevel") : 0) && str >= (stats.containsKey("reqSTR") ? stats.get("reqSTR") : 0) && dex >= (stats.containsKey("reqDEX") ? stats.get("reqDEX") : 0) && luk >= (stats.containsKey("reqLUK") ? stats.get("reqLUK") : 0) && int_ >= (stats.containsKey("reqINT") ? stats.get("reqINT") : 0)) {            final Integer fameReq stats.get("reqPOP");            if (fameReq != null && fame fameReq) {                return false;            }            return true;        }        return false;    }
        public final 
    int getReqLevel(final int itemId) {        if (getEquipStats(itemId) == null || !getEquipStats(itemId).containsKey("reqLevel")) {            return 0;        }        return getEquipStats(itemId).get("reqLevel");    }
        public final 
    int getSlots(final int itemId) {        if (getEquipStats(itemId) == null || !getEquipStats(itemId).containsKey("tuc")) {            return 0;        }        return getEquipStats(itemId).get("tuc");    }
        public final 
    Integer getSetItemID(final int itemId) {        if (getEquipStats(itemId) == null || !getEquipStats(itemId).containsKey("setItemID")) {            return 0;        }        return getEquipStats(itemId).get("setItemID");    }
        public final 
    StructSetItem getSetItem(final int setItemId) {        return setItems.get((bytesetItemId);    }
        public final List<
    IntegergetScrollReqs(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return i.scrollReqs;    }
        public final 
    Item scrollEquipWithId(final Item equip, final Item scrollId, final boolean ws, final MapleCharacter chr, final int vegas) {        if (equip.getType() == 1) { // See Item.java            final Equip nEquip = (Equip) equip;            final Map<String, Integer> stats = getEquipStats(scrollId.getItemId());            final Map<String, Integer> eqstats = getEquipStats(equip.getItemId());            final int succ = (GameConstants.isTablet(scrollId.getItemId()) ? GameConstants.getSuccessTablet(scrollId.getItemId(), nEquip.getLevel()) : ((GameConstants.isEquipScroll(scrollId.getItemId()) || GameConstants.isPotentialScroll(scrollId.getItemId()) || !stats.containsKey("success") ? 0 : stats.get("success"))));            final int curse = (GameConstants.isTablet(scrollId.getItemId()) ? GameConstants.getCurseTablet(scrollId.getItemId(), nEquip.getLevel()) : ((GameConstants.isEquipScroll(scrollId.getItemId()) || GameConstants.isPotentialScroll(scrollId.getItemId()) || !stats.containsKey("cursed") ? 0 : stats.get("cursed"))));            final int added = (ItemFlag.LUCKS_KEY.check(equip.getFlag()) ? 10 : 0) + (chr.getTrait(MapleTraitType.craft).getLevel() / 10);            int success = succ + (vegas == 5610000 && succ == 10 ? 20 : (vegas == 5610001 && succ == 60 ? 30 : 0)) + added;            if (ItemFlag.LUCKS_KEY.check(equip.getFlag()) && !GameConstants.isPotentialScroll(scrollId.getItemId()) && !GameConstants.isEquipScroll(scrollId.getItemId()) && !GameConstants.isSpecialScroll(scrollId.getItemId())) {                equip.setFlag((short) (equip.getFlag() - ItemFlag.LUCKS_KEY.getValue()));            }            if (GameConstants.isPotentialScroll(scrollId.getItemId()) || GameConstants.isEquipScroll(scrollId.getItemId()) || GameConstants.isSpecialScroll(scrollId.getItemId()) || Randomizer.nextInt(100) <= success) {                switch (scrollId.getItemId()) {                    case 2049000:                    case 2049001:                    case 2049002:                    case 2049003:                    case 2049004:                    case 2049005: {                        if (eqstats.containsKey("tuc") && nEquip.getLevel() + nEquip.getUpgradeSlots() < eqstats.get("tuc")) {                            nEquip.setUpgradeSlots((byte) (nEquip.getUpgradeSlots() + 1));                        }                        break;                    }                    case 2049006:                    case 2049007:                    case 2049008: {                        if (eqstats.containsKey("tuc") && nEquip.getLevel() + nEquip.getUpgradeSlots() < eqstats.get("tuc")) {                            nEquip.setUpgradeSlots((byte) (nEquip.getUpgradeSlots() + 2));                        }                        break;                    }                    case 2040727: { // Spikes on shoe, prevents slip                        short flag = nEquip.getFlag();                        flag |= ItemFlag.SPIKES.getValue();                        nEquip.setFlag(flag);                        break;                    }                    case 2041058: { // Cape for Cold protection                        short flag = nEquip.getFlag();                        flag |= ItemFlag.COLD.getValue();                        nEquip.setFlag(flag);                        break;                    }                    case 5063000:                    case 2530000:                    case 2530001: {                        short flag = nEquip.getFlag();                        flag |= ItemFlag.LUCKS_KEY.getValue();                        nEquip.setFlag(flag);                        break;                    }                    case 5064000:                    case 2531000: {                        short flag = nEquip.getFlag();                        flag |= ItemFlag.SHIELD_WARD.getValue();                        nEquip.setFlag(flag);                        break;                    }                    default: {                        if (GameConstants.isChaosScroll(scrollId.getItemId())) {                            final int z = GameConstants.getChaosNumber(scrollId.getItemId());                            if (nEquip.getStr() > 0) {                                nEquip.setStr((short) (nEquip.getStr() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getDex() > 0) {                                nEquip.setDex((short) (nEquip.getDex() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getInt() > 0) {                                nEquip.setInt((short) (nEquip.getInt() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getLuk() > 0) {                                nEquip.setLuk((short) (nEquip.getLuk() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getWatk() > 0) {                                nEquip.setWatk((short) (nEquip.getWatk() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getWdef() > 0) {                                nEquip.setWdef((short) (nEquip.getWdef() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getMatk() > 0) {                                nEquip.setMatk((short) (nEquip.getMatk() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getMdef() > 0) {                                nEquip.setMdef((short) (nEquip.getMdef() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getAcc() > 0) {                                nEquip.setAcc((short) (nEquip.getAcc() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getAvoid() > 0) {                                nEquip.setAvoid((short) (nEquip.getAvoid() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getSpeed() > 0) {                                nEquip.setSpeed((short) (nEquip.getSpeed() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getJump() > 0) {                                nEquip.setJump((short) (nEquip.getJump() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getHp() > 0) {                                nEquip.setHp((short) (nEquip.getHp() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getMp() > 0) {                                nEquip.setMp((short) (nEquip.getMp() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            break;                        } else if (GameConstants.isEquipScroll(scrollId.getItemId())) {                            final int chanc = Math.max((scrollId.getItemId() == 2049300 || scrollId.getItemId() == 2049303 ? 100 : (scrollId.getItemId() == 2049305 ? 60 : 80)) - (nEquip.getEnhance() * 10), 10) + added;                            if (Randomizer.nextInt(100) > chanc) {                                return null; //destroyed, nib                            }                            for (int i = 0; i < (scrollId.getItemId() == 2049305 ? 4 : (scrollId.getItemId() == 2049304 ? 3 : 1)); i++) {                                if (nEquip.getStr() > 0 || Randomizer.nextInt(50) == 1) { //1/50                                    nEquip.setStr((short) (nEquip.getStr() + Randomizer.nextInt(5)));                                }                                if (nEquip.getDex() > 0 || Randomizer.nextInt(50) == 1) { //1/50                                    nEquip.setDex((short) (nEquip.getDex() + Randomizer.nextInt(5)));                                }                                if (nEquip.getInt() > 0 || Randomizer.nextInt(50) == 1) { //1/50                                    nEquip.setInt((short) (nEquip.getInt() + Randomizer.nextInt(5)));                                }                                if (nEquip.getLuk() > 0 || Randomizer.nextInt(50) == 1) { //1/50                                    nEquip.setLuk((short) (nEquip.getLuk() + Randomizer.nextInt(5)));                                }                                if (nEquip.getWatk() > 0 && GameConstants.isWeapon(nEquip.getItemId())) {                                    nEquip.setWatk((short) (nEquip.getWatk() + Randomizer.nextInt(5)));                                }                                if (nEquip.getWdef() > 0 || Randomizer.nextInt(40) == 1) { //1/40                                    nEquip.setWdef((short) (nEquip.getWdef() + Randomizer.nextInt(5)));                                }                                if (nEquip.getMatk() > 0 && GameConstants.isWeapon(nEquip.getItemId())) {                                    nEquip.setMatk((short) (nEquip.getMatk() + Randomizer.nextInt(5)));                                }                                if (nEquip.getMdef() > 0 || Randomizer.nextInt(40) == 1) { //1/40                                    nEquip.setMdef((short) (nEquip.getMdef() + Randomizer.nextInt(5)));                                }                                if (nEquip.getAcc() > 0 || Randomizer.nextInt(20) == 1) { //1/20                                    nEquip.setAcc((short) (nEquip.getAcc() + Randomizer.nextInt(5)));                                }                                if (nEquip.getAvoid() > 0 || Randomizer.nextInt(20) == 1) { //1/20                                    nEquip.setAvoid((short) (nEquip.getAvoid() + Randomizer.nextInt(5)));                                }                                if (nEquip.getSpeed() > 0 || Randomizer.nextInt(10) == 1) { //1/10                                    nEquip.setSpeed((short) (nEquip.getSpeed() + Randomizer.nextInt(5)));                                }                                if (nEquip.getJump() > 0 || Randomizer.nextInt(10) == 1) { //1/10                                    nEquip.setJump((short) (nEquip.getJump() + Randomizer.nextInt(5)));                                }                                if (nEquip.getHp() > 0 || Randomizer.nextInt(5) == 1) { //1/5                                    nEquip.setHp((short) (nEquip.getHp() + Randomizer.nextInt(5)));                                }                                if (nEquip.getMp() > 0 || Randomizer.nextInt(5) == 1) { //1/5                                    nEquip.setMp((short) (nEquip.getMp() + Randomizer.nextInt(5)));                                }                                nEquip.setEnhance((byte) (nEquip.getEnhance() + 1));                            }                            break;                        } else if (GameConstants.isPotentialScroll(scrollId.getItemId())) {                            if (nEquip.getState() <= 17 && (scrollId.getItemId() / 100 == 20497)) {                                final int chanc = (scrollId.getItemId() == 2049700 ? 100 : 80) + added; // 2049701                                if (Randomizer.nextInt(100) > chanc) {                                    return null; //destroyed, nib                                }                                nEquip.renewPotential(2);                            } else if (nEquip.getState() == 0) {                                final int chanc = (scrollId.getItemId() == 5534000 || scrollId.getItemId() == 2049402 || scrollId.getItemId() == 2049406 ? 100 : (scrollId.getItemId() == 2049400 ? 90 : 70)) + added;                                if (Randomizer.nextInt(100) > chanc) {                                    return null; //destroyed, nib                                }                                nEquip.resetPotential();                            }                            break;                        } else {                            for (Entry<String, Integer> stat : stats.entrySet()) {                                final String key = stat.getKey();
                                    
    if (key.equals("STR")) {                                    nEquip.setStr((short) (nEquip.getStr() + stat.getValue().intValue()));                                } else if (key.equals("DEX")) {                                    nEquip.setDex((short) (nEquip.getDex() + stat.getValue().intValue()));                                } else if (key.equals("INT")) {                                    nEquip.setInt((short) (nEquip.getInt() + stat.getValue().intValue()));                                } else if (key.equals("LUK")) {                                    nEquip.setLuk((short) (nEquip.getLuk() + stat.getValue().intValue()));                                } else if (key.equals("PAD")) {                                    nEquip.setWatk((short) (nEquip.getWatk() + stat.getValue().intValue()));                                } else if (key.equals("PDD")) {                                    nEquip.setWdef((short) (nEquip.getWdef() + stat.getValue().intValue()));                                } else if (key.equals("MAD")) {                                    nEquip.setMatk((short) (nEquip.getMatk() + stat.getValue().intValue()));                                } else if (key.equals("MDD")) {                                    nEquip.setMdef((short) (nEquip.getMdef() + stat.getValue().intValue()));                                } else if (key.equals("ACC")) {                                    nEquip.setAcc((short) (nEquip.getAcc() + stat.getValue().intValue()));                                } else if (key.equals("EVA")) {                                    nEquip.setAvoid((short) (nEquip.getAvoid() + stat.getValue().intValue()));                                } else if (key.equals("Speed")) {                                    nEquip.setSpeed((short) (nEquip.getSpeed() + stat.getValue().intValue()));                                } else if (key.equals("Jump")) {                                    nEquip.setJump((short) (nEquip.getJump() + stat.getValue().intValue()));                                } else if (key.equals("MHP")) {                                    nEquip.setHp((short) (nEquip.getHp() + stat.getValue().intValue()));                                } else if (key.equals("MMP")) {                                    nEquip.setMp((short) (nEquip.getMp() + stat.getValue().intValue()));                                }                            }                            break;                        }                    }                }                if (!GameConstants.isCleanSlate(scrollId.getItemId()) && !GameConstants.isSpecialScroll(scrollId.getItemId()) && !GameConstants.isEquipScroll(scrollId.getItemId()) && !GameConstants.isPotentialScroll(scrollId.getItemId())) {                    nEquip.setUpgradeSlots((byte) (nEquip.getUpgradeSlots() - 1));                    nEquip.setLevel((byte) (nEquip.getLevel() + 1));                }            } else {                if (!ws && !GameConstants.isCleanSlate(scrollId.getItemId()) && !GameConstants.isSpecialScroll(scrollId.getItemId()) && !GameConstants.isEquipScroll(scrollId.getItemId()) && !GameConstants.isPotentialScroll(scrollId.getItemId())) {                    nEquip.setUpgradeSlots((byte) (nEquip.getUpgradeSlots() - 1));                }                if (Randomizer.nextInt(99) < curse) {                    return null;                }            }        }        return equip;    }
        public final 
    Item getEquipById(final int equipId) {        return getEquipById(equipId, -1);    }
        public final 
    Item getEquipById(final int equipId, final int ringId) {        final ItemInformation i getItemInformation(equipId);        if (== null) {            return new Equip(equipId, (short0ringId, (byte0);        }        final Item eq i.eq.copy();        eq.setUniqueId(ringId);        return eq;    }
        protected final 
    short getRandStatFusion(final short defaultValue, final int value1, final int value2) {        if (defaultValue == 0) {            return 0;        }        final int range = ((value1 value2) / 2) - defaultValue;        final int rand Randomizer.nextInt(Math.abs(range) + 1);        return (short) (defaultValue + (range ? -rand rand));    }
        protected final 
    short getRandStat(final short defaultValue, final int maxRange) {        if (defaultValue == 0) {            return 0;        }        // vary no more than ceil of 10% of stat        final int lMaxRange = (int) Math.min(Math.ceil(defaultValue * 0.1), maxRange);
            
    return (short) ((defaultValue lMaxRange) + Randomizer.nextInt(lMaxRange 1));    }
        protected final 
    short getRandStatAbove(final short defaultValue, final int maxRange) {        if (defaultValue <= 0) {            return 0;        }        final int lMaxRange = (int) Math.min(Math.ceil(defaultValue 0.1), maxRange);
            return (
    short) ((defaultValue) + Randomizer.nextInt(lMaxRange 1));    }
        public final 
    Equip randomizeStats(final Equip equip) {        equip.setStr(getRandStat(equip.getStr(), 5));        equip.setDex(getRandStat(equip.getDex(), 5));        equip.setInt(getRandStat(equip.getInt(), 5));        equip.setLuk(getRandStat(equip.getLuk(), 5));        equip.setMatk(getRandStat(equip.getMatk(), 5));        equip.setWatk(getRandStat(equip.getWatk(), 5));        equip.setAcc(getRandStat(equip.getAcc(), 5));        equip.setAvoid(getRandStat(equip.getAvoid(), 5));        equip.setJump(getRandStat(equip.getJump(), 5));        equip.setHands(getRandStat(equip.getHands(), 5));        equip.setSpeed(getRandStat(equip.getSpeed(), 5));        equip.setWdef(getRandStat(equip.getWdef(), 10));        equip.setMdef(getRandStat(equip.getMdef(), 10));        equip.setHp(getRandStat(equip.getHp(), 10));        equip.setMp(getRandStat(equip.getMp(), 10));        return equip;    }
        public final 
    Equip randomizeStats_Above(final Equip equip) {        equip.setStr(getRandStatAbove(equip.getStr(), 5));        equip.setDex(getRandStatAbove(equip.getDex(), 5));        equip.setInt(getRandStatAbove(equip.getInt(), 5));        equip.setLuk(getRandStatAbove(equip.getLuk(), 5));        equip.setMatk(getRandStatAbove(equip.getMatk(), 5));        equip.setWatk(getRandStatAbove(equip.getWatk(), 5));        equip.setAcc(getRandStatAbove(equip.getAcc(), 5));        equip.setAvoid(getRandStatAbove(equip.getAvoid(), 5));        equip.setJump(getRandStatAbove(equip.getJump(), 5));        equip.setHands(getRandStatAbove(equip.getHands(), 5));        equip.setSpeed(getRandStatAbove(equip.getSpeed(), 5));        equip.setWdef(getRandStatAbove(equip.getWdef(), 10));        equip.setMdef(getRandStatAbove(equip.getMdef(), 10));        equip.setHp(getRandStatAbove(equip.getHp(), 10));        equip.setMp(getRandStatAbove(equip.getMp(), 10));        return equip;    }
        public final 
    Equip fuse(final Equip equip1, final Equip equip2) {        if (equip1.getItemId() != equip2.getItemId()) {            return equip1;        }        final Equip equip = (EquipgetEquipById(equip1.getItemId());        equip.setStr(getRandStatFusion(equip.getStr(), equip1.getStr(), equip2.getStr()));        equip.setDex(getRandStatFusion(equip.getDex(), equip1.getDex(), equip2.getDex()));        equip.setInt(getRandStatFusion(equip.getInt(), equip1.getInt(), equip2.getInt()));        equip.setLuk(getRandStatFusion(equip.getLuk(), equip1.getLuk(), equip2.getLuk()));        equip.setMatk(getRandStatFusion(equip.getMatk(), equip1.getMatk(), equip2.getMatk()));        equip.setWatk(getRandStatFusion(equip.getWatk(), equip1.getWatk(), equip2.getWatk()));        equip.setAcc(getRandStatFusion(equip.getAcc(), equip1.getAcc(), equip2.getAcc()));        equip.setAvoid(getRandStatFusion(equip.getAvoid(), equip1.getAvoid(), equip2.getAvoid()));        equip.setJump(getRandStatFusion(equip.getJump(), equip1.getJump(), equip2.getJump()));        equip.setHands(getRandStatFusion(equip.getHands(), equip1.getHands(), equip2.getHands()));        equip.setSpeed(getRandStatFusion(equip.getSpeed(), equip1.getSpeed(), equip2.getSpeed()));        equip.setWdef(getRandStatFusion(equip.getWdef(), equip1.getWdef(), equip2.getWdef()));        equip.setMdef(getRandStatFusion(equip.getMdef(), equip1.getMdef(), equip2.getMdef()));        equip.setHp(getRandStatFusion(equip.getHp(), equip1.getHp(), equip2.getHp()));        equip.setMp(getRandStatFusion(equip.getMp(), equip1.getMp(), equip2.getMp()));        return equip;    }
        public final 
    int getTotalStat(final Equip equip) { //i get COOL when my defense is higher on gms...        return equip.getStr() + equip.getDex() + equip.getInt() + equip.getLuk() + equip.getMatk() + equip.getWatk() + equip.getAcc() + equip.getAvoid() + equip.getJump()                + equip.getHands() + equip.getSpeed() + equip.getHp() + equip.getMp() + equip.getWdef() + equip.getMdef();    }
        
    public final MapleStatEffect getItemEffect(final int itemId) {        MapleStatEffect ret itemEffects.get(Integer.valueOf(itemId));        if (ret == null) {            final MapleData item getItemData(itemId);            if (item == null || item.getChildByPath("spec") == null) {                return null;            }            ret MapleStatEffect.loadItemEffectFromData(item.getChildByPath("spec"), itemId);            itemEffects.put(Integer.valueOf(itemId), ret);        }        return ret;    }
        public final 
    MapleStatEffect getItemEffectEX(final int itemId) {        MapleStatEffect ret itemEffectsEx.get(Integer.valueOf(itemId));        if (ret == null) {            final MapleData item getItemData(itemId);            if (item == null || item.getChildByPath("specEx") == null) {                return null;            }            ret MapleStatEffect.loadItemEffectFromData(item.getChildByPath("specEx"), itemId);            itemEffectsEx.put(Integer.valueOf(itemId), ret);        }        return ret;    }
        public final 
    int getCreateId(final int id) {        final ItemInformation i getItemInformation(id);        if (== null) {            return 0;        }        return i.create;    }
        public final 
    int getCardMobId(final int id) {        final ItemInformation i getItemInformation(id);        if (== null) {            return 0;        }        return i.monsterBook;    }
        public final 
    int getBagType(final int id) {        final ItemInformation i getItemInformation(id);        if (== null) {            return 0;        }        return i.flag 0xF;    }
        public final 
    int getWatkForProjectile(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null || i.equipStats == null || i.equipStats.get("incPAD") == null) {            return 0;        }        return i.equipStats.get("incPAD");    }
        public final 
    boolean canScroll(final int scrollid, final int itemid) {        return (scrollid 100) % 100 == (itemid 10000) % 100;    }
        public final 
    String getName(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return i.name;    }
        public final 
    String getDesc(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return i.desc;    }
        public final 
    String getMsg(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return i.msg;    }
        public final 
    short getItemMakeLevel(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return 0;        }        return i.itemMakeLevel;    }
        public final 
    boolean isDropRestricted(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return false;        }        return ((i.flag 0x200) != || (i.flag 0x400) != || GameConstants.isDropRestricted(itemId)) && (itemId == 3012000 || itemId == 3012015 || itemId 10000 != 301) && itemId != 2041200 && itemId != 5640000 && itemId != 4170023 && itemId != 2040124 && itemId != 2040125 && itemId != 2040126 && itemId != 2040211 && itemId != 2040212 && itemId != 2040227 && itemId != 2040228 && itemId != 2040229 && itemId != 2040230 && itemId != 1002926 && itemId != 1002906 && itemId != 1002927 && !PokemonItem.isPokemonItem(itemId);    }
        public final 
    boolean isPickupRestricted(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return false;        }        return ((i.flag 0x80) != || GameConstants.isPickupRestricted(itemId)) && itemId != 4001168 && itemId != 4031306 && itemId != 4031307;    }
        public final 
    boolean isAccountShared(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return false;        }        return (i.flag 0x100) != 0;    }
        public final 
    int getStateChangeItem(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return 0;        }        return i.stateChange;    }
        public final 
    int getMeso(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return 0;        }        return i.meso;    }
        public final 
    boolean isShareTagEnabled(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return false;        }        return (i.flag 0x800) != 0;    }
        public final 
    boolean isKarmaEnabled(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return false;        }        return i.karmaEnabled == 1;    }
        public final 
    boolean isPKarmaEnabled(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return false;        }        return i.karmaEnabled == 2;    }
        public final 
    boolean isPickupBlocked(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return false;        }        return (i.flag 0x40) != 0;    }
        public final 
    boolean isLogoutExpire(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return false;        }        return (i.flag 0x20) != 0;    }
        public final 
    boolean cantSell(final int itemId) { //true = cant sell, false = can sell        final ItemInformation i = getItemInformation(itemId);        if (i == null) {            return false;        }        return (i.flag & 0x10) != 0;    }
        
    public final Pair<Integer, List<StructRewardItem>> getRewardItem(final int itemid) {        final ItemInformation i getItemInformation(itemid);        if (== null) {            return null;        }        return new Pair<Integer, List<StructRewardItem>>(i.totalprobi.rewardItems);    }
        public final 
    boolean isMobHP(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return false;        }        return (i.flag 0x1000) != 0;    }
        public final 
    boolean isQuestItem(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return false;        }        return (i.flag 0x200) != && itemId 10000 != 301;    }
        public final 
    Pair<Integer, List<Integer>> questItemInfo(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return new Pair<Integer, List<Integer>>(i.questIdi.questItems);    }
        public final 
    Pair<IntegerStringreplaceItemInfo(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return new Pair<IntegerString>(i.replaceItemi.replaceMsg);    }
        public final List<
    Triple<StringPointPoint>> getAfterImage(final String after) {        return afterImage.get(after);    }
        public final 
    String getAfterImage(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return i.afterImage;    }
        public final 
    boolean itemExists(final int itemId) {        if (GameConstants.getInventoryType(itemId) == MapleInventoryType.UNDEFINED) {            return false;        }        return getItemInformation(itemId) != null;    }
        public final 
    boolean isCash(final int itemId) {        if (getEquipStats(itemId) == null) {            return GameConstants.getInventoryType(itemId) == MapleInventoryType.CASH;        }        return GameConstants.getInventoryType(itemId) == MapleInventoryType.CASH || getEquipStats(itemId).get("cash") != null;    }
        public final 
    ItemInformation getItemInformation(final int itemId) {        if (itemId <= 0) {            return null;        }        return dataCache.get(itemId);    }    private ItemInformation tmpInfo null;
        public 
    void initItemRewardData(ResultSet sqlRewardDatathrows SQLException {        final int itemID sqlRewardData.getInt("itemid");        if (tmpInfo == null || tmpInfo.itemId != itemID) {            if (!dataCache.containsKey(itemID)) {                System.out.println("[initItemRewardData] Tried to load an item while this is not in the cache: " itemID);                return;            }            tmpInfo dataCache.get(itemID);        }
            if (
    tmpInfo.rewardItems == null) {            tmpInfo.rewardItems = new ArrayList<StructRewardItem>();        }
            
    StructRewardItem add = new StructRewardItem();        add.itemid sqlRewardData.getInt("item");        add.period = (add.itemid == 1122017 Math.max(sqlRewardData.getInt("period"), 7200) : sqlRewardData.getInt("period"));        add.prob sqlRewardData.getInt("prob");        add.quantity sqlRewardData.getShort("quantity");        add.worldmsg sqlRewardData.getString("worldMsg").length() <= null sqlRewardData.getString("worldMsg");        add.effect sqlRewardData.getString("effect");
            
    tmpInfo.rewardItems.add(add);    }
        public 
    void initItemAddData(ResultSet sqlAddDatathrows SQLException {        final int itemID sqlAddData.getInt("itemid");        if (tmpInfo == null || tmpInfo.itemId != itemID) {            if (!dataCache.containsKey(itemID)) {                System.out.println("[initItemAddData] Tried to load an item while this is not in the cache: " itemID);                return;            }            tmpInfo dataCache.get(itemID);        }
            if (
    tmpInfo.equipAdditions == null) {            tmpInfo.equipAdditions = new EnumMap<EquipAdditionsPair<IntegerInteger>>(EquipAdditions.class);        }
            
    EquipAdditions z EquipAdditions.fromString(sqlAddData.getString("key"));        if (!= null) {            tmpInfo.equipAdditions.put(z, new Pair<IntegerInteger>(sqlAddData.getInt("value1"), sqlAddData.getInt("value2")));        }    }
        public 
    void initItemEquipData(ResultSet sqlEquipDatathrows SQLException {        final int itemID sqlEquipData.getInt("itemid");        if (tmpInfo == null || tmpInfo.itemId != itemID) {            if (!dataCache.containsKey(itemID)) {                System.out.println("[initItemEquipData] Tried to load an item while this is not in the cache: " itemID);                return;            }            tmpInfo dataCache.get(itemID);        }
            if (
    tmpInfo.equipStats == null) {            tmpInfo.equipStats = new HashMap<StringInteger>();        }
            final 
    int itemLevel sqlEquipData.getInt("itemLevel");        if (itemLevel == -1) {            tmpInfo.equipStats.put(sqlEquipData.getString("key"), sqlEquipData.getInt("value"));        } else {            if (tmpInfo.equipIncs == null) {                tmpInfo.equipIncs = new HashMap<IntegerMap<StringInteger>>();            }
                
    Map<StringIntegertoAdd tmpInfo.equipIncs.get(itemLevel);            if (toAdd == null) {                toAdd = new HashMap<StringInteger>();                tmpInfo.equipIncs.put(itemLeveltoAdd);            }            toAdd.put(sqlEquipData.getString("key"), sqlEquipData.getInt("value"));        }    }
        public 
    void finalizeEquipData(ItemInformation item) {        int itemId item.itemId;
            
    // Some equips do not have equip data. So we initialize it anyway if not initialized        // already        // Credits: Jay :)        if (item.equipStats == null) {            item.equipStats = new HashMap<String, Integer>();        }

            
    item.eq = new Equip(itemId, (byte0, -1, (byte0);        short stats GameConstants.getStat(itemId0);        if (stats 0) {            item.eq.setStr(stats);            item.eq.setDex(stats);            item.eq.setInt(stats);            item.eq.setLuk(stats);        }        stats GameConstants.getATK(itemId0);        if (stats 0) {            item.eq.setWatk(stats);            item.eq.setMatk(stats);        }        stats GameConstants.getHpMp(itemId0);        if (stats 0) {            item.eq.setHp(stats);            item.eq.setMp(stats);        }        stats GameConstants.getDEF(itemId0);        if (stats 0) {            item.eq.setWdef(stats);            item.eq.setMdef(stats);        }        if (item.equipStats.size() > 0) {            for (Entry<StringIntegerstat item.equipStats.entrySet()) {                final String key stat.getKey();
                    if (
    key.equals("STR")) {                    item.eq.setStr(GameConstants.getStat(itemIdstat.getValue().intValue()));                } else if (key.equals("DEX")) {                    item.eq.setDex(GameConstants.getStat(itemIdstat.getValue().intValue()));                } else if (key.equals("INT")) {                    item.eq.setInt(GameConstants.getStat(itemIdstat.getValue().intValue()));                } else if (key.equals("LUK")) {                    item.eq.setLuk(GameConstants.getStat(itemIdstat.getValue().intValue()));                } else if (key.equals("PAD")) {                    item.eq.setWatk(GameConstants.getATK(itemIdstat.getValue().intValue()));                } else if (key.equals("PDD")) {                    item.eq.setWdef(GameConstants.getDEF(itemIdstat.getValue().intValue()));                } else if (key.equals("MAD")) {                    item.eq.setMatk(GameConstants.getATK(itemIdstat.getValue().intValue()));                } else if (key.equals("MDD")) {                    item.eq.setMdef(GameConstants.getDEF(itemIdstat.getValue().intValue()));                } else if (key.equals("ACC")) {                    item.eq.setAcc((shortstat.getValue().intValue());                } else if (key.equals("EVA")) {                    item.eq.setAvoid((shortstat.getValue().intValue());                } else if (key.equals("Speed")) {                    item.eq.setSpeed((shortstat.getValue().intValue());                } else if (key.equals("Jump")) {                    item.eq.setJump((shortstat.getValue().intValue());                } else if (key.equals("MHP")) {                    item.eq.setHp(GameConstants.getHpMp(itemIdstat.getValue().intValue()));                } else if (key.equals("MMP")) {                    item.eq.setMp(GameConstants.getHpMp(itemIdstat.getValue().intValue()));                } else if (key.equals("tuc")) {                    item.eq.setUpgradeSlots(stat.getValue().byteValue());                } else if (key.equals("Craft")) {                    item.eq.setHands(stat.getValue().shortValue());                } else if (key.equals("durability")) {                    item.eq.setDurability(stat.getValue().intValue());                } else if (key.equals("charmEXP")) {                    item.eq.setCharmEXP(stat.getValue().shortValue());                } else if (key.equals("PVPDamage")) {                    item.eq.setPVPDamage(stat.getValue().shortValue());                }            }            if (item.equipStats.get("cash") != null && item.eq.getCharmEXP() <= 0) { //set the exp                short exp = 0;                int identifier = itemId / 10000;                if (GameConstants.isWeapon(itemId) || identifier == 106) { //weapon overall                    exp = 60;                } else if (identifier == 100) { //hats                    exp = 50;                } else if (GameConstants.isAccessory(itemId) || identifier == 102 || identifier == 108 || identifier == 107) { //gloves shoes accessory                    exp = 40;                } else if (identifier == 104 || identifier == 105 || identifier == 110) { //top bottom cape                    exp = 30;                }                item.eq.setCharmEXP(exp);            }        }    }
        
    public void initItemInformation(ResultSet sqlItemDatathrows SQLException {        final ItemInformation ret = new ItemInformation();        final int itemId sqlItemData.getInt("itemid");        ret.itemId itemId;        ret.slotMax GameConstants.getSlotMax(itemId) > GameConstants.getSlotMax(itemId) : sqlItemData.getShort("slotMax");        ret.price Double.parseDouble(sqlItemData.getString("price"));        ret.wholePrice sqlItemData.getInt("wholePrice");        ret.stateChange sqlItemData.getInt("stateChange");        ret.name sqlItemData.getString("name");        ret.desc sqlItemData.getString("desc");        ret.msg sqlItemData.getString("msg");
            
    ret.flag sqlItemData.getInt("flags");
            
    ret.karmaEnabled sqlItemData.getByte("karma");        ret.meso sqlItemData.getInt("meso");        ret.monsterBook sqlItemData.getInt("monsterBook");        ret.itemMakeLevel sqlItemData.getShort("itemMakeLevel");        ret.questId sqlItemData.getInt("questId");        ret.create sqlItemData.getInt("create");        ret.replaceItem sqlItemData.getInt("replaceId");        ret.replaceMsg sqlItemData.getString("replaceMsg");        ret.afterImage sqlItemData.getString("afterImage");        ret.cardSet 0;        if (ret.monsterBook && itemId 10000 == 238) {            mobIds.put(ret.monsterBookitemId);            for (Entry<IntegerTriple<Integer, List<Integer>, List<Integer>>> set monsterBookSets.entrySet()) {                if (set.getValue().mid.contains(itemId)) {                    ret.cardSet set.getKey();                    break;                }            }        }
            final 
    String scrollRq sqlItemData.getString("scrollReqs");        if (scrollRq.length() > 0) {            ret.scrollReqs = new ArrayList<Integer>();            final String[] scroll scrollRq.split(",");            for (String s scroll) {                if (s.length() > 1) {                    ret.scrollReqs.add(Integer.parseInt(s));                }            }        }        final String consumeItem sqlItemData.getString("consumeItem");        if (consumeItem.length() > 0) {            ret.questItems = new ArrayList<Integer>();            final String[] scroll scrollRq.split(",");            for (String s scroll) {                if (s.length() > 1) {                    ret.questItems.add(Integer.parseInt(s));                }            }        }
            
    ret.totalprob sqlItemData.getInt("totalprob");        final String incRq sqlItemData.getString("incSkill");        if (incRq.length() > 0) {            ret.incSkill = new ArrayList<Integer>();            final String[] scroll incRq.split(",");            for (String s scroll) {                if (s.length() > 1) {                    ret.incSkill.add(Integer.parseInt(s));                }            }        }        dataCache.put(itemIdret);    }}public Equip hardcoreItem(Equip equipshort stat) {equip.setStr(stat);equip.setDex(stat);equip.setInt(stat);equip.setLuk(stat);equip.setMatk(stat);equip.setWatk(stat);equip.setAcc(stat);equip.setAvoid(stat);equip.setJump(stat);equip.setSpeed(stat);equip.setWdef(stat);equip.setMdef(stat);equip.setHp(stat);equip.setMp(stat);return equip;} 

  8. #8
    Sorcerer Supreme hecari is offline
    Member +Rank
    Dec 2008 Join Date
    336Posts

    Re: Adding/Editing Commands into commands.java

    Quote Originally Posted by Takuya29 View Post
    PHP Code:
    package server;
    import java.io.File;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;
    import client.inventory.Equip;import client.inventory.Item;import client.inventory.ItemFlag;import constants.GameConstants;import client.MapleCharacter;import client.MapleTrait.MapleTraitType;import client.inventory.EquipAdditions;import client.inventory.MapleInventoryType;import constants.BattleConstants.PokemonItem;import database.DatabaseConnection;import java.awt.Point;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Collection;import java.util.EnumMap;import java.util.LinkedList;import provider.MapleData;import provider.MapleDataDirectoryEntry;import provider.MapleDataEntry;import provider.MapleDataFileEntry;import provider.MapleDataProvider;import provider.MapleDataProviderFactory;import provider.MapleDataTool;import provider.MapleDataType;import server.StructSetItem.SetItem;import tools.Pair;import tools.Triple;
    public class 
    MapleItemInformationProvider {
        private final static 
    MapleItemInformationProvider instance = new MapleItemInformationProvider();    protected final MapleDataProvider chrData MapleDataProviderFactory.getDataProvider(new File(System.getProperty("net.sf.odinms.wzpath") + "/Character.wz"));    protected final MapleDataProvider etcData MapleDataProviderFactory.getDataProvider(new File(System.getProperty("net.sf.odinms.wzpath") + "/Etc.wz"));    protected final MapleDataProvider itemData MapleDataProviderFactory.getDataProvider(new File(System.getProperty("net.sf.odinms.wzpath") + "/Item.wz"));    protected final Map<IntegerItemInformationdataCache = new HashMap<IntegerItemInformation>();    protected final Map<String, List<Triple<StringPointPoint>>> afterImage = new HashMap<String, List<Triple<StringPointPoint>>>();    protected final Map<Integer, List<StructItemOption>> potentialCache = new HashMap<Integer, List<StructItemOption>>();    protected final Map<IntegerMap<IntegerStructItemOption>> socketCache = new HashMap<>(); // Grade, (id, data)    protected final Map<Integer, MapleStatEffect> itemEffects = new HashMap<Integer, MapleStatEffect>();    protected final Map<Integer, MapleStatEffect> itemEffectsEx = new HashMap<Integer, MapleStatEffect>();    protected final Map<Integer, Integer> mobIds = new HashMap<Integer, Integer>();    protected final Map<Integer, Pair<Integer, Integer>> potLife = new HashMap<Integer, Pair<Integer, Integer>>(); //itemid to lifeid, levels    protected final Map<Integer, StructFamiliar> familiars = new HashMap<Integer, StructFamiliar>(); //by familiarID    protected final Map<Integer, StructFamiliar> familiars_Item = new HashMap<Integer, StructFamiliar>(); //by cardID    protected final Map<Integer, StructFamiliar> familiars_Mob = new HashMap<Integer, StructFamiliar>(); //by mobID    protected final Map<Integer, Pair<List<Integer>, List<Integer>>> androids = new HashMap<Integer, Pair<List<Integer>, List<Integer>>>();    protected final Map<Integer, Triple<Integer, List<Integer>, List<Integer>>> monsterBookSets = new HashMap<Integer, Triple<Integer, List<Integer>, List<Integer>>>();    protected final Map<Byte, StructSetItem> setItems = new HashMap<Byte, StructSetItem>();
        
    public void runEtc() {        if (!setItems.isEmpty() || !potentialCache.isEmpty() || !socketCache.isEmpty()) {            return;        }        final MapleData setsData etcData.getData("SetItemInfo.img");        StructSetItem itemz;        SetItem itez;        for (MapleData dat setsData) {            itemz = new StructSetItem();            itemz.setItemID Byte.parseByte(dat.getName());            itemz.completeCount = (byteMapleDataTool.getIntConvert("completeCount"dat0);            for (MapleData level dat.getChildByPath("ItemID")) {                if (level.getType() != MapleDataType.INT) {                    for (MapleData leve level) {                        if (!leve.getName().equals("representName") && !leve.getName().equals("typeName")) {                            itemz.itemIDs.add(MapleDataTool.getInt(leve));                        }                    }                } else {                    itemz.itemIDs.add(MapleDataTool.getInt(level));                }            }            for (MapleData level dat.getChildByPath("Effect")) {                itez = new SetItem();                itez.incPDD MapleDataTool.getIntConvert("incPDD"level0);                itez.incMDD MapleDataTool.getIntConvert("incMDD"level0);                itez.incSTR MapleDataTool.getIntConvert("incSTR"level0);                itez.incDEX MapleDataTool.getIntConvert("incDEX"level0);                itez.incINT MapleDataTool.getIntConvert("incINT"level0);                itez.incLUK MapleDataTool.getIntConvert("incLUK"level0);                itez.incACC MapleDataTool.getIntConvert("incACC"level0);                itez.incPAD MapleDataTool.getIntConvert("incPAD"level0);                itez.incMAD MapleDataTool.getIntConvert("incMAD"level0);                itez.incSpeed MapleDataTool.getIntConvert("incSpeed"level0);                itez.incMHP MapleDataTool.getIntConvert("incMHP"level0);                itez.incMMP MapleDataTool.getIntConvert("incMMP"level0);                itez.incMHPr MapleDataTool.getIntConvert("incMHPr"level0);                itez.incMMPr MapleDataTool.getIntConvert("incMMPr"level0);                itez.incAllStat MapleDataTool.getIntConvert("incAllStat"level0);                itez.option1 MapleDataTool.getIntConvert("Option/1/option"level0);                itez.option2 MapleDataTool.getIntConvert("Option/2/option"level0);                itez.option1Level MapleDataTool.getIntConvert("Option/1/level"level0);                itez.option2Level MapleDataTool.getIntConvert("Option/2/level"level0);                itemz.items.put(Integer.parseInt(level.getName()), itez);            }            setItems.put(itemz.setItemIDitemz);        }        StructItemOption item;        final MapleData potsData itemData.getData("ItemOption.img");        List<StructItemOptionitems;        for (MapleData dat potsData) {            items = new LinkedList<>();            for (MapleData potLevel dat.getChildByPath("level")) {                item = new StructItemOption();                item.opID Integer.parseInt(dat.getName());                item.optionType MapleDataTool.getIntConvert("info/optionType"dat0);                item.reqLevel MapleDataTool.getIntConvert("info/reqLevel"dat0);                for (final String i StructItemOption.types) {                    if (i.equals("face")) {                        item.face MapleDataTool.getString("face"potLevel"");                    } else {                        final int level MapleDataTool.getIntConvert(ipotLevel0);                        if (level 0) { // Save memory                            item.data.put(i, level);                        }                    }                }                switch (item.opID) {                    case 31001: // Haste                    case 31002: // Mystic Door                    case 31003: // Sharp Eyes                    case 31004: // Hyper Body                        item.data.put("skillID", (item.opID - 23001));                        break;                    case 41005: // Combat Orders                    case 41006: // Advanced Blessing                    case 41007: // Speed Infusion                        item.data.put("skillID", (item.opID - 33001));                        break;                }                items.add(item);            }            potentialCache.put(Integer.parseInt(dat.getName()), items);        }        final Map<Integer, StructItemOption> gradeS = new HashMap<>();        final Map<Integer, StructItemOption> gradeA = new HashMap<>();        final Map<Integer, StructItemOption> gradeB = new HashMap<>();        final Map<Integer, StructItemOption> gradeC = new HashMap<>();        final Map<Integer, StructItemOption> gradeD = new HashMap<>();        final MapleData nebuliteData = itemData.getData("Install/0306.img");        for (MapleData dat : nebuliteData) {            item = new StructItemOption();            item.opID = Integer.parseInt(dat.getName()); // Item Id            item.optionType = MapleDataTool.getInt("optionType", dat.getChildByPath("socket"), 0);            for (MapleData info : dat.getChildByPath("socket/option")) {                final String optionString = MapleDataTool.getString("optionString", info, "");                final int level = MapleDataTool.getInt("level", info, 0);                if (level > 0) { // Save memory                    item.data.put(optionString, level);                }            }            switch (item.opID) {                case 3063370: // Haste                    item.data.put("skillID", 8000);                    break;                case 3063380: // Mystic Door                    item.data.put("skillID", 8001);                    break;                case 3063390: // Sharp Eyes                    item.data.put("skillID", 8002);                    break;                case 3063400: // Hyper Body                    item.data.put("skillID", 8003);                    break;                case 3064470: // Combat Orders                    item.data.put("skillID", 8004);                    break;                case 3064480: // Advanced Blessing                    item.data.put("skillID", 8005);                    break;                case 3064490: // Speed Infusion                    item.data.put("skillID", 8006);                    break;            }            switch (GameConstants.getNebuliteGrade(item.opID)) {                case 4: //S                    gradeS.put(Integer.parseInt(dat.getName()), item);                    break;                case 3: //A                    gradeA.put(Integer.parseInt(dat.getName()), item);                    break;                case 2: //B                    gradeB.put(Integer.parseInt(dat.getName()), item);                    break;                case 1: //C                    gradeC.put(Integer.parseInt(dat.getName()), item);                    break;                case 0: //D                    gradeD.put(Integer.parseInt(dat.getName()), item);                    break; // impossible to be -1 since we're looping in 306.img.xml                                }        }        socketCache.put(4, gradeS);        socketCache.put(3, gradeA);        socketCache.put(2, gradeB);        socketCache.put(1, gradeC);        socketCache.put(0, gradeD);
            
    final MapleDataDirectoryEntry e = (MapleDataDirectoryEntryetcData.getRoot().getEntry("Android");        for (MapleDataEntry d e.getFiles()) {            final MapleData iz etcData.getData("Android/" d.getName());            final List<Integerhair = new ArrayList<Integer>(), face = new ArrayList<Integer>();            for (MapleData ds iz.getChildByPath("costume/hair")) {                hair.add(MapleDataTool.getInt(ds30000));            }            for (MapleData ds iz.getChildByPath("costume/face")) {                face.add(MapleDataTool.getInt(ds20000));            }            androids.put(Integer.parseInt(d.getName().substring(04)), new Pair<List<Integer>, List<Integer>>(hairface));        }
            final 
    MapleData lifesData etcData.getData("ItemPotLifeInfo.img");        for (MapleData d lifesData) {            if (d.getChildByPath("info") != null && MapleDataTool.getInt("type"d.getChildByPath("info"), 0) == 1) {                potLife.put(MapleDataTool.getInt("counsumeItem"d.getChildByPath("info"), 0), new Pair<IntegerInteger>(Integer.parseInt(d.getName()), d.getChildByPath("level").getChildren().size()));            }        }        List<Triple<StringPointPoint>> thePointK = new ArrayList<Triple<StringPointPoint>>();        List<Triple<StringPointPoint>> thePointA = new ArrayList<Triple<StringPointPoint>>();
            final 
    MapleDataDirectoryEntry a = (MapleDataDirectoryEntrychrData.getRoot().getEntry("Afterimage");        for (MapleDataEntry b a.getFiles()) {            final MapleData iz chrData.getData("Afterimage/" b.getName());            List<Triple<StringPointPoint>> thePoint = new ArrayList<Triple<StringPointPoint>>();            Map<StringPair<PointPoint>> dummy = new HashMap<StringPair<PointPoint>>();            for (MapleData i iz) {                for (MapleData xD i) {                    if (xD.getName().contains("prone") || xD.getName().contains("double") || xD.getName().contains("triple")) {                        continue;                    }                    if ((b.getName().contains("bow") || b.getName().contains("Bow")) && !xD.getName().contains("shoot")) {                        continue;                    }                    if ((b.getName().contains("gun") || b.getName().contains("cannon")) && !xD.getName().contains("shot")) {                        continue;                    }                    if (dummy.containsKey(xD.getName())) {                        if (xD.getChildByPath("lt") != null) {                            Point lt = (PointxD.getChildByPath("lt").getData();                            Point ourLt dummy.get(xD.getName()).left;                            if (lt.ourLt.x) {                                ourLt.lt.x;                            }                            if (lt.ourLt.y) {                                ourLt.lt.y;                            }                        }                        if (xD.getChildByPath("rb") != null) {                            Point rb = (PointxD.getChildByPath("rb").getData();                            Point ourRb dummy.get(xD.getName()).right;                            if (rb.ourRb.x) {                                ourRb.rb.x;                            }                            if (rb.ourRb.y) {                                ourRb.rb.y;                            }                        }                    } else {                        Point lt nullrb null;                        if (xD.getChildByPath("lt") != null) {                            lt = (PointxD.getChildByPath("lt").getData();                        }                        if (xD.getChildByPath("rb") != null) {                            rb = (PointxD.getChildByPath("rb").getData();                        }                        dummy.put(xD.getName(), new Pair<PointPoint>(ltrb));                    }                }            }            for (Entry<StringPair<PointPoint>> ez dummy.entrySet()) {                if (ez.getKey().length() > && ez.getKey().substring(ez.getKey().length() - 2ez.getKey().length() - 1).equals("D")) { //D = double weapon                    thePointK.add(new Triple<String, Point, Point>(ez.getKey(), ez.getValue().left, ez.getValue().right));                } else if (ez.getKey().contains("PoleArm")) { //D = double weapon                    thePointA.add(new Triple<String, Point, Point>(ez.getKey(), ez.getValue().left, ez.getValue().right));                } else {                    thePoint.add(new Triple<String, Point, Point>(ez.getKey(), ez.getValue().left, ez.getValue().right));                }            }            afterImage.put(b.getName().substring(0, b.getName().length() - 4), thePoint);        }        afterImage.put("katara", thePointK); //hackish        afterImage.put("aran", thePointA); //hackish    }
        
    public void runItems() {        if (GameConstants.GMS) { //these must be loaded before items..            final MapleData fData = etcData.getData("FamiliarInfo.img");            for (MapleData d : fData) {                StructFamiliar f = new StructFamiliar();                f.grade = 0;                f.mob = MapleDataTool.getInt("mob", d, 0);                f.passive = MapleDataTool.getInt("passive", d, 0);                f.itemid = MapleDataTool.getInt("consume", d, 0);                f.familiar = Integer.parseInt(d.getName());                familiars.put(f.familiar, f);                familiars_Item.put(f.itemid, f);                familiars_Mob.put(f.mob, f);            }            final MapleDataDirectoryEntry e = (MapleDataDirectoryEntry) chrData.getRoot().getEntry("Familiar");            for (MapleDataEntry d : e.getFiles()) {                final int id = Integer.parseInt(d.getName().substring(0, d.getName().length() - 4));                if (familiars.containsKey(id)) {                    familiars.get(id).grade = (byte) MapleDataTool.getInt("grade", chrData.getData("Familiar/" + d.getName()).getChildByPath("info"), 0);                }            }
                
    final MapleData mSetsData etcData.getData("MonsterBookSet.img");            for (MapleData d mSetsData.getChildByPath("setList")) {                if (MapleDataTool.getInt("deactivated"d0) > 0) {                    continue;                }                final List<Integerset = new ArrayList<Integer>(), potential = new ArrayList<Integer>(3);                for (MapleData ds d.getChildByPath("stats/potential")) {                    if (ds.getType() != MapleDataType.STRING && MapleDataTool.getInt(ds0) > 0) {                        potential.add(MapleDataTool.getInt(ds0));                        if (potential.size() >= 5) {                            break;                        }                    }                }                for (MapleData ds d.getChildByPath("cardList")) {                    set.add(MapleDataTool.getInt(ds0));                }                monsterBookSets.put(Integer.parseInt(d.getName()), new Triple<Integer, List<Integer>, List<Integer>>(MapleDataTool.getInt("setScore"d0), setpotential));            }        }
            try {            
    Connection con DatabaseConnection.getConnection();
                
    // Load Item Data            PreparedStatement ps = con.prepareStatement("SELECT * FROM wz_itemdata");
                
    ResultSet rs ps.executeQuery();            while (rs.next()) {                initItemInformation(rs);            }            rs.close();            ps.close();
                
    // Load Item Equipment Data
                
    ps con.prepareStatement("SELECT * FROM wz_itemequipdata ORDER BY itemid");            rs ps.executeQuery();            while (rs.next()) {                initItemEquipData(rs);            }            rs.close();            ps.close();
                
    // Load Item Addition Data
                
    ps con.prepareStatement("SELECT * FROM wz_itemadddata ORDER BY itemid");            rs ps.executeQuery();            while (rs.next()) {                initItemAddData(rs);            }            rs.close();            ps.close();
                
    // Load Item Reward Data
                
    ps con.prepareStatement("SELECT * FROM wz_itemrewarddata ORDER BY itemid");            rs ps.executeQuery();            while (rs.next()) {                initItemRewardData(rs);            }            rs.close();            ps.close();
                
    // Finalize all Equipments
                
    for (Entry<IntegerItemInformationentry dataCache.entrySet()) {                if (GameConstants.getInventoryType(entry.getKey()) == MapleInventoryType.EQUIP) {                    finalizeEquipData(entry.getValue());                }            }        } catch (SQLException ex) {            ex.printStackTrace();        }        System.out.println(dataCache.size() + " items loaded.");    }
        public final List<
    StructItemOptiongetPotentialInfo(final int potId) {        return potentialCache.get(potId);    }
        public final 
    Map<Integer, List<StructItemOption>> getAllPotentialInfo() {        return potentialCache;    }
        public final 
    StructItemOption getSocketInfo(final int potId) {        final int grade GameConstants.getNebuliteGrade(potId);        if (grade == -1) {            return null;        }        return socketCache.get(grade).get(potId);    }
        public final 
    Map<IntegerStructItemOptiongetAllSocketInfo(final int grade) {        return socketCache.get(grade);    }
        public final 
    Collection<IntegergetMonsterBookList() {        return mobIds.values();    }
        public final 
    Map<IntegerIntegergetMonsterBook() {        return mobIds;    }
        public final 
    Pair<IntegerIntegergetPot(int f) {        return potLife.get(f);    }
        public final 
    StructFamiliar getFamiliar(int f) {        return familiars.get(f);    }
        public final 
    Map<IntegerStructFamiliargetFamiliars() {        return familiars;    }
        public final 
    StructFamiliar getFamiliarByItem(int f) {        return familiars_Item.get(f);    }
        public final 
    StructFamiliar getFamiliarByMob(int f) {        return familiars_Mob.get(f);    }
        public static final 
    MapleItemInformationProvider getInstance() {        return instance;    }
        public final 
    Collection<ItemInformationgetAllItems() {        return dataCache.values();    }
        public final 
    Pair<List<Integer>, List<Integer>> getAndroidInfo(int i) {        return androids.get(i);    }
        public final 
    Triple<Integer, List<Integer>, List<Integer>> getMonsterBookInfo(int i) {        return monsterBookSets.get(i);    }
        public final 
    Map<IntegerTriple<Integer, List<Integer>, List<Integer>>> getAllMonsterBookInfo() {        return monsterBookSets;    }
        protected final 
    MapleData getItemData(final int itemId) {        MapleData ret null;        final String idStr "0" String.valueOf(itemId);        MapleDataDirectoryEntry root itemData.getRoot();        for (final MapleDataDirectoryEntry topDir root.getSubdirectories()) {            // we should have .img files here beginning with the first 4 IID            for (final MapleDataFileEntry iFile : topDir.getFiles()) {                if (iFile.getName().equals(idStr.substring(0, 4) + ".img")) {                    ret = itemData.getData(topDir.getName() + "/" + iFile.getName());                    if (ret == null) {                        return null;                    }                    ret = ret.getChildByPath(idStr);                    return ret;                } else if (iFile.getName().equals(idStr.substring(1) + ".img")) {                    ret = itemData.getData(topDir.getName() + "/" + iFile.getName());                    return ret;                }            }        }        //equips dont have item effects :)        /*root = equipData.getRoot();        for (final MapleDataDirectoryEntry topDir : root.getSubdirectories()) {        for (final MapleDataFileEntry iFile : topDir.getFiles()) {        if (iFile.getName().equals(idStr + ".img")) {        ret = equipData.getData(topDir.getName() + "/" + iFile.getName());        return ret;        }        }        }*/
            
    return ret;    }
        public 
    Integer getItemIdByMob(int mobId) {        return mobIds.get(mobId);    }
        public 
    Integer getSetId(int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return Integer.valueOf(i.cardSet);    }
        
    /** returns the maximum of items in one slot */    public final short getSlotMax(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return 0;        }        return i.slotMax;    }
        public final 
    int getWholePrice(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return 0;        }        return i.wholePrice;    }
        public final 
    double getPrice(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return -1.0;        }        return i.price;    }
        protected 
    int rand(int minint max) {        return Math.abs((int) Randomizer.rand(minmax));    }
        public 
    Equip levelUpEquip(Equip equipMap<StringIntegersta) {        Equip nEquip = (Equipequip.copy();        //is this all the stats?        try {            for (Entry<String, Integer> stat : sta.entrySet()) {                if (stat.getKey().equals("STRMin")) {                    nEquip.setStr((short) (nEquip.getStr() + rand(stat.getValue().intValue(), sta.get("STRMax").intValue())));                } else if (stat.getKey().equals("DEXMin")) {                    nEquip.setDex((short) (nEquip.getDex() + rand(stat.getValue().intValue(), sta.get("DEXMax").intValue())));                } else if (stat.getKey().equals("INTMin")) {                    nEquip.setInt((short) (nEquip.getInt() + rand(stat.getValue().intValue(), sta.get("INTMax").intValue())));                } else if (stat.getKey().equals("LUKMin")) {                    nEquip.setLuk((short) (nEquip.getLuk() + rand(stat.getValue().intValue(), sta.get("LUKMax").intValue())));                } else if (stat.getKey().equals("PADMin")) {                    nEquip.setWatk((short) (nEquip.getWatk() + rand(stat.getValue().intValue(), sta.get("PADMax").intValue())));                } else if (stat.getKey().equals("PDDMin")) {                    nEquip.setWdef((short) (nEquip.getWdef() + rand(stat.getValue().intValue(), sta.get("PDDMax").intValue())));                } else if (stat.getKey().equals("MADMin")) {                    nEquip.setMatk((short) (nEquip.getMatk() + rand(stat.getValue().intValue(), sta.get("MADMax").intValue())));                } else if (stat.getKey().equals("MDDMin")) {                    nEquip.setMdef((short) (nEquip.getMdef() + rand(stat.getValue().intValue(), sta.get("MDDMax").intValue())));                } else if (stat.getKey().equals("ACCMin")) {                    nEquip.setAcc((short) (nEquip.getAcc() + rand(stat.getValue().intValue(), sta.get("ACCMax").intValue())));                } else if (stat.getKey().equals("EVAMin")) {                    nEquip.setAvoid((short) (nEquip.getAvoid() + rand(stat.getValue().intValue(), sta.get("EVAMax").intValue())));                } else if (stat.getKey().equals("SpeedMin")) {                    nEquip.setSpeed((short) (nEquip.getSpeed() + rand(stat.getValue().intValue(), sta.get("SpeedMax").intValue())));                } else if (stat.getKey().equals("JumpMin")) {                    nEquip.setJump((short) (nEquip.getJump() + rand(stat.getValue().intValue(), sta.get("JumpMax").intValue())));                } else if (stat.getKey().equals("MHPMin")) {                    nEquip.setHp((short) (nEquip.getHp() + rand(stat.getValue().intValue(), sta.get("MHPMax").intValue())));                } else if (stat.getKey().equals("MMPMin")) {                    nEquip.setMp((short) (nEquip.getMp() + rand(stat.getValue().intValue(), sta.get("MMPMax").intValue())));                } else if (stat.getKey().equals("MaxHPMin")) {                    nEquip.setHp((short) (nEquip.getHp() + rand(stat.getValue().intValue(), sta.get("MaxHPMax").intValue())));                } else if (stat.getKey().equals("MaxMPMin")) {                    nEquip.setMp((short) (nEquip.getMp() + rand(stat.getValue().intValue(), sta.get("MaxMPMax").intValue())));                }            }        } catch (NullPointerException e) {            //catch npe because obviously the wz have some error XD            e.printStackTrace();        }        return nEquip;    }
        
    public final EnumMap<EquipAdditionsPair<IntegerInteger>> getEquipAdditions(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return i.equipAdditions;    }
        public final 
    Map<IntegerMap<StringInteger>> getEquipIncrements(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return i.equipIncs;    }
        public final List<
    IntegergetEquipSkills(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return i.incSkill;    }
        public final 
    Map<StringIntegergetEquipStats(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return i.equipStats;    }
        public final 
    boolean canEquip(final Map<StringIntegerstats, final int itemid, final int level, final int job, final int fame, final int str, final int dex, final int luk, final int int_, final int supremacy) {        if ((level supremacy) >= (stats.containsKey("reqLevel") ? stats.get("reqLevel") : 0) && str >= (stats.containsKey("reqSTR") ? stats.get("reqSTR") : 0) && dex >= (stats.containsKey("reqDEX") ? stats.get("reqDEX") : 0) && luk >= (stats.containsKey("reqLUK") ? stats.get("reqLUK") : 0) && int_ >= (stats.containsKey("reqINT") ? stats.get("reqINT") : 0)) {            final Integer fameReq stats.get("reqPOP");            if (fameReq != null && fame fameReq) {                return false;            }            return true;        }        return false;    }
        public final 
    int getReqLevel(final int itemId) {        if (getEquipStats(itemId) == null || !getEquipStats(itemId).containsKey("reqLevel")) {            return 0;        }        return getEquipStats(itemId).get("reqLevel");    }
        public final 
    int getSlots(final int itemId) {        if (getEquipStats(itemId) == null || !getEquipStats(itemId).containsKey("tuc")) {            return 0;        }        return getEquipStats(itemId).get("tuc");    }
        public final 
    Integer getSetItemID(final int itemId) {        if (getEquipStats(itemId) == null || !getEquipStats(itemId).containsKey("setItemID")) {            return 0;        }        return getEquipStats(itemId).get("setItemID");    }
        public final 
    StructSetItem getSetItem(final int setItemId) {        return setItems.get((bytesetItemId);    }
        public final List<
    IntegergetScrollReqs(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return i.scrollReqs;    }
        public final 
    Item scrollEquipWithId(final Item equip, final Item scrollId, final boolean ws, final MapleCharacter chr, final int vegas) {        if (equip.getType() == 1) { // See Item.java            final Equip nEquip = (Equip) equip;            final Map<String, Integer> stats = getEquipStats(scrollId.getItemId());            final Map<String, Integer> eqstats = getEquipStats(equip.getItemId());            final int succ = (GameConstants.isTablet(scrollId.getItemId()) ? GameConstants.getSuccessTablet(scrollId.getItemId(), nEquip.getLevel()) : ((GameConstants.isEquipScroll(scrollId.getItemId()) || GameConstants.isPotentialScroll(scrollId.getItemId()) || !stats.containsKey("success") ? 0 : stats.get("success"))));            final int curse = (GameConstants.isTablet(scrollId.getItemId()) ? GameConstants.getCurseTablet(scrollId.getItemId(), nEquip.getLevel()) : ((GameConstants.isEquipScroll(scrollId.getItemId()) || GameConstants.isPotentialScroll(scrollId.getItemId()) || !stats.containsKey("cursed") ? 0 : stats.get("cursed"))));            final int added = (ItemFlag.LUCKS_KEY.check(equip.getFlag()) ? 10 : 0) + (chr.getTrait(MapleTraitType.craft).getLevel() / 10);            int success = succ + (vegas == 5610000 && succ == 10 ? 20 : (vegas == 5610001 && succ == 60 ? 30 : 0)) + added;            if (ItemFlag.LUCKS_KEY.check(equip.getFlag()) && !GameConstants.isPotentialScroll(scrollId.getItemId()) && !GameConstants.isEquipScroll(scrollId.getItemId()) && !GameConstants.isSpecialScroll(scrollId.getItemId())) {                equip.setFlag((short) (equip.getFlag() - ItemFlag.LUCKS_KEY.getValue()));            }            if (GameConstants.isPotentialScroll(scrollId.getItemId()) || GameConstants.isEquipScroll(scrollId.getItemId()) || GameConstants.isSpecialScroll(scrollId.getItemId()) || Randomizer.nextInt(100) <= success) {                switch (scrollId.getItemId()) {                    case 2049000:                    case 2049001:                    case 2049002:                    case 2049003:                    case 2049004:                    case 2049005: {                        if (eqstats.containsKey("tuc") && nEquip.getLevel() + nEquip.getUpgradeSlots() < eqstats.get("tuc")) {                            nEquip.setUpgradeSlots((byte) (nEquip.getUpgradeSlots() + 1));                        }                        break;                    }                    case 2049006:                    case 2049007:                    case 2049008: {                        if (eqstats.containsKey("tuc") && nEquip.getLevel() + nEquip.getUpgradeSlots() < eqstats.get("tuc")) {                            nEquip.setUpgradeSlots((byte) (nEquip.getUpgradeSlots() + 2));                        }                        break;                    }                    case 2040727: { // Spikes on shoe, prevents slip                        short flag = nEquip.getFlag();                        flag |= ItemFlag.SPIKES.getValue();                        nEquip.setFlag(flag);                        break;                    }                    case 2041058: { // Cape for Cold protection                        short flag = nEquip.getFlag();                        flag |= ItemFlag.COLD.getValue();                        nEquip.setFlag(flag);                        break;                    }                    case 5063000:                    case 2530000:                    case 2530001: {                        short flag = nEquip.getFlag();                        flag |= ItemFlag.LUCKS_KEY.getValue();                        nEquip.setFlag(flag);                        break;                    }                    case 5064000:                    case 2531000: {                        short flag = nEquip.getFlag();                        flag |= ItemFlag.SHIELD_WARD.getValue();                        nEquip.setFlag(flag);                        break;                    }                    default: {                        if (GameConstants.isChaosScroll(scrollId.getItemId())) {                            final int z = GameConstants.getChaosNumber(scrollId.getItemId());                            if (nEquip.getStr() > 0) {                                nEquip.setStr((short) (nEquip.getStr() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getDex() > 0) {                                nEquip.setDex((short) (nEquip.getDex() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getInt() > 0) {                                nEquip.setInt((short) (nEquip.getInt() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getLuk() > 0) {                                nEquip.setLuk((short) (nEquip.getLuk() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getWatk() > 0) {                                nEquip.setWatk((short) (nEquip.getWatk() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getWdef() > 0) {                                nEquip.setWdef((short) (nEquip.getWdef() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getMatk() > 0) {                                nEquip.setMatk((short) (nEquip.getMatk() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getMdef() > 0) {                                nEquip.setMdef((short) (nEquip.getMdef() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getAcc() > 0) {                                nEquip.setAcc((short) (nEquip.getAcc() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getAvoid() > 0) {                                nEquip.setAvoid((short) (nEquip.getAvoid() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getSpeed() > 0) {                                nEquip.setSpeed((short) (nEquip.getSpeed() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getJump() > 0) {                                nEquip.setJump((short) (nEquip.getJump() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getHp() > 0) {                                nEquip.setHp((short) (nEquip.getHp() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            if (nEquip.getMp() > 0) {                                nEquip.setMp((short) (nEquip.getMp() + Randomizer.nextInt(z) * (Randomizer.nextBoolean() ? 1 : -1)));                            }                            break;                        } else if (GameConstants.isEquipScroll(scrollId.getItemId())) {                            final int chanc = Math.max((scrollId.getItemId() == 2049300 || scrollId.getItemId() == 2049303 ? 100 : (scrollId.getItemId() == 2049305 ? 60 : 80)) - (nEquip.getEnhance() * 10), 10) + added;                            if (Randomizer.nextInt(100) > chanc) {                                return null; //destroyed, nib                            }                            for (int i = 0; i < (scrollId.getItemId() == 2049305 ? 4 : (scrollId.getItemId() == 2049304 ? 3 : 1)); i++) {                                if (nEquip.getStr() > 0 || Randomizer.nextInt(50) == 1) { //1/50                                    nEquip.setStr((short) (nEquip.getStr() + Randomizer.nextInt(5)));                                }                                if (nEquip.getDex() > 0 || Randomizer.nextInt(50) == 1) { //1/50                                    nEquip.setDex((short) (nEquip.getDex() + Randomizer.nextInt(5)));                                }                                if (nEquip.getInt() > 0 || Randomizer.nextInt(50) == 1) { //1/50                                    nEquip.setInt((short) (nEquip.getInt() + Randomizer.nextInt(5)));                                }                                if (nEquip.getLuk() > 0 || Randomizer.nextInt(50) == 1) { //1/50                                    nEquip.setLuk((short) (nEquip.getLuk() + Randomizer.nextInt(5)));                                }                                if (nEquip.getWatk() > 0 && GameConstants.isWeapon(nEquip.getItemId())) {                                    nEquip.setWatk((short) (nEquip.getWatk() + Randomizer.nextInt(5)));                                }                                if (nEquip.getWdef() > 0 || Randomizer.nextInt(40) == 1) { //1/40                                    nEquip.setWdef((short) (nEquip.getWdef() + Randomizer.nextInt(5)));                                }                                if (nEquip.getMatk() > 0 && GameConstants.isWeapon(nEquip.getItemId())) {                                    nEquip.setMatk((short) (nEquip.getMatk() + Randomizer.nextInt(5)));                                }                                if (nEquip.getMdef() > 0 || Randomizer.nextInt(40) == 1) { //1/40                                    nEquip.setMdef((short) (nEquip.getMdef() + Randomizer.nextInt(5)));                                }                                if (nEquip.getAcc() > 0 || Randomizer.nextInt(20) == 1) { //1/20                                    nEquip.setAcc((short) (nEquip.getAcc() + Randomizer.nextInt(5)));                                }                                if (nEquip.getAvoid() > 0 || Randomizer.nextInt(20) == 1) { //1/20                                    nEquip.setAvoid((short) (nEquip.getAvoid() + Randomizer.nextInt(5)));                                }                                if (nEquip.getSpeed() > 0 || Randomizer.nextInt(10) == 1) { //1/10                                    nEquip.setSpeed((short) (nEquip.getSpeed() + Randomizer.nextInt(5)));                                }                                if (nEquip.getJump() > 0 || Randomizer.nextInt(10) == 1) { //1/10                                    nEquip.setJump((short) (nEquip.getJump() + Randomizer.nextInt(5)));                                }                                if (nEquip.getHp() > 0 || Randomizer.nextInt(5) == 1) { //1/5                                    nEquip.setHp((short) (nEquip.getHp() + Randomizer.nextInt(5)));                                }                                if (nEquip.getMp() > 0 || Randomizer.nextInt(5) == 1) { //1/5                                    nEquip.setMp((short) (nEquip.getMp() + Randomizer.nextInt(5)));                                }                                nEquip.setEnhance((byte) (nEquip.getEnhance() + 1));                            }                            break;                        } else if (GameConstants.isPotentialScroll(scrollId.getItemId())) {                            if (nEquip.getState() <= 17 && (scrollId.getItemId() / 100 == 20497)) {                                final int chanc = (scrollId.getItemId() == 2049700 ? 100 : 80) + added; // 2049701                                if (Randomizer.nextInt(100) > chanc) {                                    return null; //destroyed, nib                                }                                nEquip.renewPotential(2);                            } else if (nEquip.getState() == 0) {                                final int chanc = (scrollId.getItemId() == 5534000 || scrollId.getItemId() == 2049402 || scrollId.getItemId() == 2049406 ? 100 : (scrollId.getItemId() == 2049400 ? 90 : 70)) + added;                                if (Randomizer.nextInt(100) > chanc) {                                    return null; //destroyed, nib                                }                                nEquip.resetPotential();                            }                            break;                        } else {                            for (Entry<String, Integer> stat : stats.entrySet()) {                                final String key = stat.getKey();
                                    
    if (key.equals("STR")) {                                    nEquip.setStr((short) (nEquip.getStr() + stat.getValue().intValue()));                                } else if (key.equals("DEX")) {                                    nEquip.setDex((short) (nEquip.getDex() + stat.getValue().intValue()));                                } else if (key.equals("INT")) {                                    nEquip.setInt((short) (nEquip.getInt() + stat.getValue().intValue()));                                } else if (key.equals("LUK")) {                                    nEquip.setLuk((short) (nEquip.getLuk() + stat.getValue().intValue()));                                } else if (key.equals("PAD")) {                                    nEquip.setWatk((short) (nEquip.getWatk() + stat.getValue().intValue()));                                } else if (key.equals("PDD")) {                                    nEquip.setWdef((short) (nEquip.getWdef() + stat.getValue().intValue()));                                } else if (key.equals("MAD")) {                                    nEquip.setMatk((short) (nEquip.getMatk() + stat.getValue().intValue()));                                } else if (key.equals("MDD")) {                                    nEquip.setMdef((short) (nEquip.getMdef() + stat.getValue().intValue()));                                } else if (key.equals("ACC")) {                                    nEquip.setAcc((short) (nEquip.getAcc() + stat.getValue().intValue()));                                } else if (key.equals("EVA")) {                                    nEquip.setAvoid((short) (nEquip.getAvoid() + stat.getValue().intValue()));                                } else if (key.equals("Speed")) {                                    nEquip.setSpeed((short) (nEquip.getSpeed() + stat.getValue().intValue()));                                } else if (key.equals("Jump")) {                                    nEquip.setJump((short) (nEquip.getJump() + stat.getValue().intValue()));                                } else if (key.equals("MHP")) {                                    nEquip.setHp((short) (nEquip.getHp() + stat.getValue().intValue()));                                } else if (key.equals("MMP")) {                                    nEquip.setMp((short) (nEquip.getMp() + stat.getValue().intValue()));                                }                            }                            break;                        }                    }                }                if (!GameConstants.isCleanSlate(scrollId.getItemId()) && !GameConstants.isSpecialScroll(scrollId.getItemId()) && !GameConstants.isEquipScroll(scrollId.getItemId()) && !GameConstants.isPotentialScroll(scrollId.getItemId())) {                    nEquip.setUpgradeSlots((byte) (nEquip.getUpgradeSlots() - 1));                    nEquip.setLevel((byte) (nEquip.getLevel() + 1));                }            } else {                if (!ws && !GameConstants.isCleanSlate(scrollId.getItemId()) && !GameConstants.isSpecialScroll(scrollId.getItemId()) && !GameConstants.isEquipScroll(scrollId.getItemId()) && !GameConstants.isPotentialScroll(scrollId.getItemId())) {                    nEquip.setUpgradeSlots((byte) (nEquip.getUpgradeSlots() - 1));                }                if (Randomizer.nextInt(99) < curse) {                    return null;                }            }        }        return equip;    }
        public final 
    Item getEquipById(final int equipId) {        return getEquipById(equipId, -1);    }
        public final 
    Item getEquipById(final int equipId, final int ringId) {        final ItemInformation i getItemInformation(equipId);        if (== null) {            return new Equip(equipId, (short0ringId, (byte0);        }        final Item eq i.eq.copy();        eq.setUniqueId(ringId);        return eq;    }
        protected final 
    short getRandStatFusion(final short defaultValue, final int value1, final int value2) {        if (defaultValue == 0) {            return 0;        }        final int range = ((value1 value2) / 2) - defaultValue;        final int rand Randomizer.nextInt(Math.abs(range) + 1);        return (short) (defaultValue + (range ? -rand rand));    }
        protected final 
    short getRandStat(final short defaultValue, final int maxRange) {        if (defaultValue == 0) {            return 0;        }        // vary no more than ceil of 10% of stat        final int lMaxRange = (int) Math.min(Math.ceil(defaultValue * 0.1), maxRange);
            
    return (short) ((defaultValue lMaxRange) + Randomizer.nextInt(lMaxRange 1));    }
        protected final 
    short getRandStatAbove(final short defaultValue, final int maxRange) {        if (defaultValue <= 0) {            return 0;        }        final int lMaxRange = (int) Math.min(Math.ceil(defaultValue 0.1), maxRange);
            return (
    short) ((defaultValue) + Randomizer.nextInt(lMaxRange 1));    }
        public final 
    Equip randomizeStats(final Equip equip) {        equip.setStr(getRandStat(equip.getStr(), 5));        equip.setDex(getRandStat(equip.getDex(), 5));        equip.setInt(getRandStat(equip.getInt(), 5));        equip.setLuk(getRandStat(equip.getLuk(), 5));        equip.setMatk(getRandStat(equip.getMatk(), 5));        equip.setWatk(getRandStat(equip.getWatk(), 5));        equip.setAcc(getRandStat(equip.getAcc(), 5));        equip.setAvoid(getRandStat(equip.getAvoid(), 5));        equip.setJump(getRandStat(equip.getJump(), 5));        equip.setHands(getRandStat(equip.getHands(), 5));        equip.setSpeed(getRandStat(equip.getSpeed(), 5));        equip.setWdef(getRandStat(equip.getWdef(), 10));        equip.setMdef(getRandStat(equip.getMdef(), 10));        equip.setHp(getRandStat(equip.getHp(), 10));        equip.setMp(getRandStat(equip.getMp(), 10));        return equip;    }
        public final 
    Equip randomizeStats_Above(final Equip equip) {        equip.setStr(getRandStatAbove(equip.getStr(), 5));        equip.setDex(getRandStatAbove(equip.getDex(), 5));        equip.setInt(getRandStatAbove(equip.getInt(), 5));        equip.setLuk(getRandStatAbove(equip.getLuk(), 5));        equip.setMatk(getRandStatAbove(equip.getMatk(), 5));        equip.setWatk(getRandStatAbove(equip.getWatk(), 5));        equip.setAcc(getRandStatAbove(equip.getAcc(), 5));        equip.setAvoid(getRandStatAbove(equip.getAvoid(), 5));        equip.setJump(getRandStatAbove(equip.getJump(), 5));        equip.setHands(getRandStatAbove(equip.getHands(), 5));        equip.setSpeed(getRandStatAbove(equip.getSpeed(), 5));        equip.setWdef(getRandStatAbove(equip.getWdef(), 10));        equip.setMdef(getRandStatAbove(equip.getMdef(), 10));        equip.setHp(getRandStatAbove(equip.getHp(), 10));        equip.setMp(getRandStatAbove(equip.getMp(), 10));        return equip;    }
        public final 
    Equip fuse(final Equip equip1, final Equip equip2) {        if (equip1.getItemId() != equip2.getItemId()) {            return equip1;        }        final Equip equip = (EquipgetEquipById(equip1.getItemId());        equip.setStr(getRandStatFusion(equip.getStr(), equip1.getStr(), equip2.getStr()));        equip.setDex(getRandStatFusion(equip.getDex(), equip1.getDex(), equip2.getDex()));        equip.setInt(getRandStatFusion(equip.getInt(), equip1.getInt(), equip2.getInt()));        equip.setLuk(getRandStatFusion(equip.getLuk(), equip1.getLuk(), equip2.getLuk()));        equip.setMatk(getRandStatFusion(equip.getMatk(), equip1.getMatk(), equip2.getMatk()));        equip.setWatk(getRandStatFusion(equip.getWatk(), equip1.getWatk(), equip2.getWatk()));        equip.setAcc(getRandStatFusion(equip.getAcc(), equip1.getAcc(), equip2.getAcc()));        equip.setAvoid(getRandStatFusion(equip.getAvoid(), equip1.getAvoid(), equip2.getAvoid()));        equip.setJump(getRandStatFusion(equip.getJump(), equip1.getJump(), equip2.getJump()));        equip.setHands(getRandStatFusion(equip.getHands(), equip1.getHands(), equip2.getHands()));        equip.setSpeed(getRandStatFusion(equip.getSpeed(), equip1.getSpeed(), equip2.getSpeed()));        equip.setWdef(getRandStatFusion(equip.getWdef(), equip1.getWdef(), equip2.getWdef()));        equip.setMdef(getRandStatFusion(equip.getMdef(), equip1.getMdef(), equip2.getMdef()));        equip.setHp(getRandStatFusion(equip.getHp(), equip1.getHp(), equip2.getHp()));        equip.setMp(getRandStatFusion(equip.getMp(), equip1.getMp(), equip2.getMp()));        return equip;    }
        public final 
    int getTotalStat(final Equip equip) { //i get COOL when my defense is higher on gms...        return equip.getStr() + equip.getDex() + equip.getInt() + equip.getLuk() + equip.getMatk() + equip.getWatk() + equip.getAcc() + equip.getAvoid() + equip.getJump()                + equip.getHands() + equip.getSpeed() + equip.getHp() + equip.getMp() + equip.getWdef() + equip.getMdef();    }
        
    public final MapleStatEffect getItemEffect(final int itemId) {        MapleStatEffect ret itemEffects.get(Integer.valueOf(itemId));        if (ret == null) {            final MapleData item getItemData(itemId);            if (item == null || item.getChildByPath("spec") == null) {                return null;            }            ret MapleStatEffect.loadItemEffectFromData(item.getChildByPath("spec"), itemId);            itemEffects.put(Integer.valueOf(itemId), ret);        }        return ret;    }
        public final 
    MapleStatEffect getItemEffectEX(final int itemId) {        MapleStatEffect ret itemEffectsEx.get(Integer.valueOf(itemId));        if (ret == null) {            final MapleData item getItemData(itemId);            if (item == null || item.getChildByPath("specEx") == null) {                return null;            }            ret MapleStatEffect.loadItemEffectFromData(item.getChildByPath("specEx"), itemId);            itemEffectsEx.put(Integer.valueOf(itemId), ret);        }        return ret;    }
        public final 
    int getCreateId(final int id) {        final ItemInformation i getItemInformation(id);        if (== null) {            return 0;        }        return i.create;    }
        public final 
    int getCardMobId(final int id) {        final ItemInformation i getItemInformation(id);        if (== null) {            return 0;        }        return i.monsterBook;    }
        public final 
    int getBagType(final int id) {        final ItemInformation i getItemInformation(id);        if (== null) {            return 0;        }        return i.flag 0xF;    }
        public final 
    int getWatkForProjectile(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null || i.equipStats == null || i.equipStats.get("incPAD") == null) {            return 0;        }        return i.equipStats.get("incPAD");    }
        public final 
    boolean canScroll(final int scrollid, final int itemid) {        return (scrollid 100) % 100 == (itemid 10000) % 100;    }
        public final 
    String getName(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return i.name;    }
        public final 
    String getDesc(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return i.desc;    }
        public final 
    String getMsg(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return i.msg;    }
        public final 
    short getItemMakeLevel(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return 0;        }        return i.itemMakeLevel;    }
        public final 
    boolean isDropRestricted(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return false;        }        return ((i.flag 0x200) != || (i.flag 0x400) != || GameConstants.isDropRestricted(itemId)) && (itemId == 3012000 || itemId == 3012015 || itemId 10000 != 301) && itemId != 2041200 && itemId != 5640000 && itemId != 4170023 && itemId != 2040124 && itemId != 2040125 && itemId != 2040126 && itemId != 2040211 && itemId != 2040212 && itemId != 2040227 && itemId != 2040228 && itemId != 2040229 && itemId != 2040230 && itemId != 1002926 && itemId != 1002906 && itemId != 1002927 && !PokemonItem.isPokemonItem(itemId);    }
        public final 
    boolean isPickupRestricted(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return false;        }        return ((i.flag 0x80) != || GameConstants.isPickupRestricted(itemId)) && itemId != 4001168 && itemId != 4031306 && itemId != 4031307;    }
        public final 
    boolean isAccountShared(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return false;        }        return (i.flag 0x100) != 0;    }
        public final 
    int getStateChangeItem(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return 0;        }        return i.stateChange;    }
        public final 
    int getMeso(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return 0;        }        return i.meso;    }
        public final 
    boolean isShareTagEnabled(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return false;        }        return (i.flag 0x800) != 0;    }
        public final 
    boolean isKarmaEnabled(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return false;        }        return i.karmaEnabled == 1;    }
        public final 
    boolean isPKarmaEnabled(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return false;        }        return i.karmaEnabled == 2;    }
        public final 
    boolean isPickupBlocked(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return false;        }        return (i.flag 0x40) != 0;    }
        public final 
    boolean isLogoutExpire(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return false;        }        return (i.flag 0x20) != 0;    }
        public final 
    boolean cantSell(final int itemId) { //true = cant sell, false = can sell        final ItemInformation i = getItemInformation(itemId);        if (i == null) {            return false;        }        return (i.flag & 0x10) != 0;    }
        
    public final Pair<Integer, List<StructRewardItem>> getRewardItem(final int itemid) {        final ItemInformation i getItemInformation(itemid);        if (== null) {            return null;        }        return new Pair<Integer, List<StructRewardItem>>(i.totalprobi.rewardItems);    }
        public final 
    boolean isMobHP(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return false;        }        return (i.flag 0x1000) != 0;    }
        public final 
    boolean isQuestItem(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return false;        }        return (i.flag 0x200) != && itemId 10000 != 301;    }
        public final 
    Pair<Integer, List<Integer>> questItemInfo(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return new Pair<Integer, List<Integer>>(i.questIdi.questItems);    }
        public final 
    Pair<IntegerStringreplaceItemInfo(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return new Pair<IntegerString>(i.replaceItemi.replaceMsg);    }
        public final List<
    Triple<StringPointPoint>> getAfterImage(final String after) {        return afterImage.get(after);    }
        public final 
    String getAfterImage(final int itemId) {        final ItemInformation i getItemInformation(itemId);        if (== null) {            return null;        }        return i.afterImage;    }
        public final 
    boolean itemExists(final int itemId) {        if (GameConstants.getInventoryType(itemId) == MapleInventoryType.UNDEFINED) {            return false;        }        return getItemInformation(itemId) != null;    }
        public final 
    boolean isCash(final int itemId) {        if (getEquipStats(itemId) == null) {            return GameConstants.getInventoryType(itemId) == MapleInventoryType.CASH;        }        return GameConstants.getInventoryType(itemId) == MapleInventoryType.CASH || getEquipStats(itemId).get("cash") != null;    }
        public final 
    ItemInformation getItemInformation(final int itemId) {        if (itemId <= 0) {            return null;        }        return dataCache.get(itemId);    }    private ItemInformation tmpInfo null;
        public 
    void initItemRewardData(ResultSet sqlRewardDatathrows SQLException {        final int itemID sqlRewardData.getInt("itemid");        if (tmpInfo == null || tmpInfo.itemId != itemID) {            if (!dataCache.containsKey(itemID)) {                System.out.println("[initItemRewardData] Tried to load an item while this is not in the cache: " itemID);                return;            }            tmpInfo dataCache.get(itemID);        }
            if (
    tmpInfo.rewardItems == null) {            tmpInfo.rewardItems = new ArrayList<StructRewardItem>();        }
            
    StructRewardItem add = new StructRewardItem();        add.itemid sqlRewardData.getInt("item");        add.period = (add.itemid == 1122017 Math.max(sqlRewardData.getInt("period"), 7200) : sqlRewardData.getInt("period"));        add.prob sqlRewardData.getInt("prob");        add.quantity sqlRewardData.getShort("quantity");        add.worldmsg sqlRewardData.getString("worldMsg").length() <= null sqlRewardData.getString("worldMsg");        add.effect sqlRewardData.getString("effect");
            
    tmpInfo.rewardItems.add(add);    }
        public 
    void initItemAddData(ResultSet sqlAddDatathrows SQLException {        final int itemID sqlAddData.getInt("itemid");        if (tmpInfo == null || tmpInfo.itemId != itemID) {            if (!dataCache.containsKey(itemID)) {                System.out.println("[initItemAddData] Tried to load an item while this is not in the cache: " itemID);                return;            }            tmpInfo dataCache.get(itemID);        }
            if (
    tmpInfo.equipAdditions == null) {            tmpInfo.equipAdditions = new EnumMap<EquipAdditionsPair<IntegerInteger>>(EquipAdditions.class);        }
            
    EquipAdditions z EquipAdditions.fromString(sqlAddData.getString("key"));        if (!= null) {            tmpInfo.equipAdditions.put(z, new Pair<IntegerInteger>(sqlAddData.getInt("value1"), sqlAddData.getInt("value2")));        }    }
        public 
    void initItemEquipData(ResultSet sqlEquipDatathrows SQLException {        final int itemID sqlEquipData.getInt("itemid");        if (tmpInfo == null || tmpInfo.itemId != itemID) {            if (!dataCache.containsKey(itemID)) {                System.out.println("[initItemEquipData] Tried to load an item while this is not in the cache: " itemID);                return;            }            tmpInfo dataCache.get(itemID);        }
            if (
    tmpInfo.equipStats == null) {            tmpInfo.equipStats = new HashMap<StringInteger>();        }
            final 
    int itemLevel sqlEquipData.getInt("itemLevel");        if (itemLevel == -1) {            tmpInfo.equipStats.put(sqlEquipData.getString("key"), sqlEquipData.getInt("value"));        } else {            if (tmpInfo.equipIncs == null) {                tmpInfo.equipIncs = new HashMap<IntegerMap<StringInteger>>();            }
                
    Map<StringIntegertoAdd tmpInfo.equipIncs.get(itemLevel);            if (toAdd == null) {                toAdd = new HashMap<StringInteger>();                tmpInfo.equipIncs.put(itemLeveltoAdd);            }            toAdd.put(sqlEquipData.getString("key"), sqlEquipData.getInt("value"));        }    }
        public 
    void finalizeEquipData(ItemInformation item) {        int itemId item.itemId;
            
    // Some equips do not have equip data. So we initialize it anyway if not initialized        // already        // Credits: Jay :)        if (item.equipStats == null) {            item.equipStats = new HashMap<String, Integer>();        }

            
    item.eq = new Equip(itemId, (byte0, -1, (byte0);        short stats GameConstants.getStat(itemId0);        if (stats 0) {            item.eq.setStr(stats);            item.eq.setDex(stats);            item.eq.setInt(stats);            item.eq.setLuk(stats);        }        stats GameConstants.getATK(itemId0);        if (stats 0) {            item.eq.setWatk(stats);            item.eq.setMatk(stats);        }        stats GameConstants.getHpMp(itemId0);        if (stats 0) {            item.eq.setHp(stats);            item.eq.setMp(stats);        }        stats GameConstants.getDEF(itemId0);        if (stats 0) {            item.eq.setWdef(stats);            item.eq.setMdef(stats);        }        if (item.equipStats.size() > 0) {            for (Entry<StringIntegerstat item.equipStats.entrySet()) {                final String key stat.getKey();
                    if (
    key.equals("STR")) {                    item.eq.setStr(GameConstants.getStat(itemIdstat.getValue().intValue()));                } else if (key.equals("DEX")) {                    item.eq.setDex(GameConstants.getStat(itemIdstat.getValue().intValue()));                } else if (key.equals("INT")) {                    item.eq.setInt(GameConstants.getStat(itemIdstat.getValue().intValue()));                } else if (key.equals("LUK")) {                    item.eq.setLuk(GameConstants.getStat(itemIdstat.getValue().intValue()));                } else if (key.equals("PAD")) {                    item.eq.setWatk(GameConstants.getATK(itemIdstat.getValue().intValue()));                } else if (key.equals("PDD")) {                    item.eq.setWdef(GameConstants.getDEF(itemIdstat.getValue().intValue()));                } else if (key.equals("MAD")) {                    item.eq.setMatk(GameConstants.getATK(itemIdstat.getValue().intValue()));                } else if (key.equals("MDD")) {                    item.eq.setMdef(GameConstants.getDEF(itemIdstat.getValue().intValue()));                } else if (key.equals("ACC")) {                    item.eq.setAcc((shortstat.getValue().intValue());                } else if (key.equals("EVA")) {                    item.eq.setAvoid((shortstat.getValue().intValue());                } else if (key.equals("Speed")) {                    item.eq.setSpeed((shortstat.getValue().intValue());                } else if (key.equals("Jump")) {                    item.eq.setJump((shortstat.getValue().intValue());                } else if (key.equals("MHP")) {                    item.eq.setHp(GameConstants.getHpMp(itemIdstat.getValue().intValue()));                } else if (key.equals("MMP")) {                    item.eq.setMp(GameConstants.getHpMp(itemIdstat.getValue().intValue()));                } else if (key.equals("tuc")) {                    item.eq.setUpgradeSlots(stat.getValue().byteValue());                } else if (key.equals("Craft")) {                    item.eq.setHands(stat.getValue().shortValue());                } else if (key.equals("durability")) {                    item.eq.setDurability(stat.getValue().intValue());                } else if (key.equals("charmEXP")) {                    item.eq.setCharmEXP(stat.getValue().shortValue());                } else if (key.equals("PVPDamage")) {                    item.eq.setPVPDamage(stat.getValue().shortValue());                }            }            if (item.equipStats.get("cash") != null && item.eq.getCharmEXP() <= 0) { //set the exp                short exp = 0;                int identifier = itemId / 10000;                if (GameConstants.isWeapon(itemId) || identifier == 106) { //weapon overall                    exp = 60;                } else if (identifier == 100) { //hats                    exp = 50;                } else if (GameConstants.isAccessory(itemId) || identifier == 102 || identifier == 108 || identifier == 107) { //gloves shoes accessory                    exp = 40;                } else if (identifier == 104 || identifier == 105 || identifier == 110) { //top bottom cape                    exp = 30;                }                item.eq.setCharmEXP(exp);            }        }    }
        
    public void initItemInformation(ResultSet sqlItemDatathrows SQLException {        final ItemInformation ret = new ItemInformation();        final int itemId sqlItemData.getInt("itemid");        ret.itemId itemId;        ret.slotMax GameConstants.getSlotMax(itemId) > GameConstants.getSlotMax(itemId) : sqlItemData.getShort("slotMax");        ret.price Double.parseDouble(sqlItemData.getString("price"));        ret.wholePrice sqlItemData.getInt("wholePrice");        ret.stateChange sqlItemData.getInt("stateChange");        ret.name sqlItemData.getString("name");        ret.desc sqlItemData.getString("desc");        ret.msg sqlItemData.getString("msg");
            
    ret.flag sqlItemData.getInt("flags");
            
    ret.karmaEnabled sqlItemData.getByte("karma");        ret.meso sqlItemData.getInt("meso");        ret.monsterBook sqlItemData.getInt("monsterBook");        ret.itemMakeLevel sqlItemData.getShort("itemMakeLevel");        ret.questId sqlItemData.getInt("questId");        ret.create sqlItemData.getInt("create");        ret.replaceItem sqlItemData.getInt("replaceId");        ret.replaceMsg sqlItemData.getString("replaceMsg");        ret.afterImage sqlItemData.getString("afterImage");        ret.cardSet 0;        if (ret.monsterBook && itemId 10000 == 238) {            mobIds.put(ret.monsterBookitemId);            for (Entry<IntegerTriple<Integer, List<Integer>, List<Integer>>> set monsterBookSets.entrySet()) {                if (set.getValue().mid.contains(itemId)) {                    ret.cardSet set.getKey();                    break;                }            }        }
            final 
    String scrollRq sqlItemData.getString("scrollReqs");        if (scrollRq.length() > 0) {            ret.scrollReqs = new ArrayList<Integer>();            final String[] scroll scrollRq.split(",");            for (String s scroll) {                if (s.length() > 1) {                    ret.scrollReqs.add(Integer.parseInt(s));                }            }        }        final String consumeItem sqlItemData.getString("consumeItem");        if (consumeItem.length() > 0) {            ret.questItems = new ArrayList<Integer>();            final String[] scroll scrollRq.split(",");            for (String s scroll) {                if (s.length() > 1) {                    ret.questItems.add(Integer.parseInt(s));                }            }        }
            
    ret.totalprob sqlItemData.getInt("totalprob");        final String incRq sqlItemData.getString("incSkill");        if (incRq.length() > 0) {            ret.incSkill = new ArrayList<Integer>();            final String[] scroll incRq.split(",");            for (String s scroll) {                if (s.length() > 1) {                    ret.incSkill.add(Integer.parseInt(s));                }            }        }        dataCache.put(itemIdret);    }}public Equip hardcoreItem(Equip equipshort stat) {equip.setStr(stat);equip.setDex(stat);equip.setInt(stat);equip.setLuk(stat);equip.setMatk(stat);equip.setWatk(stat);equip.setAcc(stat);equip.setAvoid(stat);equip.setJump(stat);equip.setSpeed(stat);equip.setWdef(stat);equip.setMdef(stat);equip.setHp(stat);equip.setMp(stat);return equip;} 
    I'm really confused. The PHP tag make the formatting of the code unreadable or your java code is like that? o.o



Advertisement