Thread: Project Insanity - NPC Drop Tables

Page 1 of 2 12 LastLast
Results 1 to 10 of 16
  1. #1 Project Insanity - NPC Drop Tables 
    Donator

    Jason's Avatar
    Join Date
    Aug 2009
    Posts
    6,108
    Thanks given
    2,402
    Thanks received
    2,825
    Rep Power
    4604
    Hello,

    Although there are probably many instances of snippets with designs similar to this I figured that regardless someone may be able to make sure of this, and even better it.

    The concept behind this is simple and it loosely follows a similar design to the actual game. Here are a few things to keep in mind;

    • Each npc can have a group of tables (constant, common, uncommon, rare, and very rare)
    • The constant table, if existent, is always reached regardless of the 'accessibility' value for the table.
      • All items in the table are dropped when the table is accessed

    • The value that determines the rate at which the table will be accessed is not limited or constrained by each of the table polices.
    • No npc can have multiple tables with the same policy.


    Code:
    public class DropManager {
        
        Map<Integer, TableGroup> groups = new HashMap<>();
        
        public void read() {
            JSONParser parser = new JSONParser();
            try {
                JSONArray data = (JSONArray) parser.parse(new FileReader("./Data/json/npc_droptable.json"));
                Iterator<?> drops = data.iterator();
                while (drops.hasNext()) {
                    JSONObject drop = (JSONObject) drops.next();
                    final int npcId = ((Long) drop.get("npc_id")).intValue();
                    TableGroup group = new TableGroup(npcId);
                    for(TablePolicy policy : TablePolicy.POLICIES) {
                        if (!drop.containsKey(policy.name().toLowerCase())) {
                            continue;
                        }
                        JSONObject dropTable = (JSONObject) drop.get(policy.name().toLowerCase());
                        Table table = new Table(policy, ((Long) dropTable.get("accessibility")).intValue());
                        JSONArray tableItems = (JSONArray) dropTable.get("items");
                        Iterator<?> items = tableItems.iterator();
                        while (items.hasNext()) {
                            JSONObject item = (JSONObject) items.next();
                            int id = ((Long) item.get("item_id")).intValue();
                            int minimumAmount = ((Long) item.get("minimum_amount")).intValue();
                            int maximumAmount = ((Long) item.get("maximum_amount")).intValue();
                            table.add(new Drop(id, minimumAmount, maximumAmount));
                        }
                        group.add(table);
                    }
                    groups.put(npcId, group);
                }
            } catch (IOException | ParseException e) {
                e.printStackTrace();
            }
        }
        
        /**
         * Attempts to create a drop for a player after killing a non-playable character
         * @param player    the player receiving a possible drop
         * @param npc        the npc dropping the items
         */
        public void create(Player player, NPC npc) {
            TableGroup group = groups.get(npc.npcType);
            if (group == null) {
                return;
            }
            List<GameItem> drops = group.access();
            drops.forEach(item -> Server.itemHandler.createGroundItem(player, item.getId(), npc.absX, npc.absY, 
                    npc.heightLevel, item.getAmount(), player.getIndex()));
        }
        
    }
    Code:
    public class Drop {
        
        /**
         * The item identification value 
         */
        private final int itemId;
        
        /**
         * The minimum amount of the item you can receive
         */
        private final int minimumAmount;
        
        /**
         * The maximum amount of the item you can receive
         */
        private final int maximumAmount;
        
        /**
         * A new {@link Drop} that exists within a particular {@link Table}
         * @param itemId        the id of the item in the drop
         * @param minimumAmount    the minimum amount received
         * @param maximumAmount    the maximum amount received
         */
        public Drop(int itemId, int minimumAmount, int maximumAmount) {
            Preconditions.checkArgument(minimumAmount <= maximumAmount, 
                    "The minimum amount must be less than or equal to the maximum amount.", minimumAmount, maximumAmount);
            this.itemId = itemId;
            this.minimumAmount = minimumAmount;
            this.maximumAmount = maximumAmount;
        }
        
        /**
         * The item identification value
         * @return    the item id
         */
        public int getItemId() {
            return itemId;
        }
        
        /**
         * The absolute minimum amount received from a particular drop.
         * @return    the minimum amount
         */
        public int getMinimumAmount() {
            return minimumAmount;
        }
        
        /**
         * The maximum amount of an item that can be received from a singular drop
         * @return    the maximum amount
         */
        public int getMaximumAmount() {
            return maximumAmount;
        }
    }
    Code:
    public class Table extends ArrayList<Drop> {
        
        /**
         * The policy of the table 
         */
        private final TablePolicy policy;
        
        /**
         * The chance of access for the table
         */
        private final int accessibility;
        
        /**
         * Creates a new table
         * @param policy        the policy of the table
         * @param accessibility    the probability that the table will be access
         */
        public Table(TablePolicy policy, int accessibility) {
            this.policy = policy;
            this.accessibility = accessibility;
        }
        
        /**
         * Selects and fetches a random Drop from the backing list
         * @return    a random drop
         */
        public Drop fetchRandom() {
            return get(Misc.random(size() - 1));
        }
        
        /**
         * The policy of the table
         * @return    the policy
         */
        public TablePolicy getPolicy() {
            return policy;
        }
        
        /**
         * The accessibility of the table
         * @return    the accessibility
         */
        public int getAccessibility() {
            return accessibility;
        }
    }
    Code:
    
    public class TableGroup extends ArrayList<Table> {
        
        /**
         * The non-playable character that has access to this group of tables
         */
        private final int npcId;
        
        /**
         * Creates a new group of tables    
         * @param npcId        the npc identification value
         */
        public TableGroup(int npcId) {
            this.npcId = npcId;
        }
        
        /**
         * Accesses each {@link Table} in this {@link TableGroup} with hopes of retrieving a {@link List}
         * of {@link GameItem} objects.
         * @return
         */
        public List<GameItem> access() {
            List<GameItem> items = new ArrayList<>();
            stream().filter(table -> table.size() > 0).forEachOrdered(table -> {
                if (table.getPolicy().equals(TablePolicy.CONSTANT)) {
                    table.forEach(drop -> items.add(new GameItem(drop.getItemId(), drop.getMinimumAmount()
                            + Misc.random(drop.getMaximumAmount() - drop.getMinimumAmount()))));
                } else {
                    double chance = (1.0 / (double) table.getAccessibility()) * 100D;
                    double roll = Misc.preciseRandom(Range.between(0.0, 100.0));
                    if (roll <= chance) {
                        Drop drop = table.fetchRandom();
                        items.add(new GameItem(drop.getItemId(), drop.getMinimumAmount()
                                + Misc.random(drop.getMaximumAmount() - drop.getMinimumAmount())));
                    }
                }
            });
            return items;
        }
        
        /**
         * The non-playable character identification value that has access
         * to this group of tables.
         * @return    the non-playable character id value
         */
        public int getNpcId() {
            return npcId;
        }
    Code:
    
    /**
     * The {@link TablePolicy} enumeration is made up of elements where the {@link #name()} of
     * each element represents a {@link Table}'s accessibility. 
     * <p>
     * Each element does not have a value to determine it's accessibility, that is chosen by the
     * designer when creating a particular table for a non-playable character. Although there
     * are no constraints on the accessibility, it is assumed that the accessibility increases
     * in the same chronological order as the elements in this enumeration. 
     * </p>
     */
    public enum TablePolicy {
        CONSTANT, COMMON, UNCOMMON, RARE, VERY_RARE;
        
        /**
         * A {@link Set} of elements from the {@link TablePolicy} enumeration.  
         */
        public static final Set<TablePolicy> POLICIES = Collections.unmodifiableSet(
                EnumSet.allOf(TablePolicy.class));
    }
    Code:
    
    [
        {
            "npc_id": 6574,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 532, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 1,
                "items" : [
                    { "item_id": 1319, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1275, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1127, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 450, "minimum_amount": 15, "maximum_amount": 20 },
                    { "item_id": 454, "minimum_amount": 115, "maximum_amount": 120 },
                    { "item_id": 995, "minimum_amount": 19902, "maximum_amount": 21000 },
                ]
            },
            "uncommon" : {
                "accessibility" : 10,
                "items" : [
                    { "item_id": 1303, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 561, "minimum_amount": 60, "maximum_amount": 70 },
                    { "item_id": 5300, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1514, "minimum_amount": 15, "maximum_amount": 20 },
                    { "item_id": 3052, "minimum_amount": 3, "maximum_amount": 3 },
                    { "item_id": 1275, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "rare" : {
                "accessibility" : 150,
                "items" : [
                    { "item_id": 1289, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 11818, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 11820, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 11822, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "very_rare" : {
                "accessibility" : 300,
                "items" : [
                    { "item_id": 11812, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 11832, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 11834, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 11836, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            }
        },
        {    
            "npc_id": 100,
            "common" : {
                "accessibility" : 10,
                "items" : [
                    { "item_id": 995, "minimum_amount": 1000, "maximum_amount": 5000 },
                    { "item_id": 1623, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "uncommon" : {
                "accessibility" : 40,
                "items" : [
                    { "item_id": 405, "minimum_amount":1, "maximum_amount": 1 },
                ]
            }
        },
        {    
            "npc_id": 448,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                     { "item_id": 526, "minimum_amount": 1, "maximum_amount": 1 }
                ]
            }
            "common" : {
                "accessibility" : 3,
                "items" : [
                    { "item_id": 995, "minimum_amount": 1000, "maximum_amount": 5000 },
                ]
            },
            "uncommon" : {
                "accessibility" : 40,
                "items" : [
                    { "item_id": 4095, "minimum_amount":1, "maximum_amount": 1 },
                    { "item_id": 4105, "minimum_amount":1, "maximum_amount": 1 },
                    { "item_id": 4115, "minimum_amount":1, "maximum_amount": 1 },
                ]
            }
        },
        {    
            "npc_id": 414,
            "common" : {
                "accessibility" : 3,
                "items" : [
                    { "item_id": 556, "minimum_amount": 30, "maximum_amount": 50 },
                    { "item_id": 554, "minimum_amount": 70, "maximum_amount": 100 },
                    { "item_id": 199, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 201, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 203, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 7937, "minimum_amount": 25, "maximum_amount": 50 },
                ]
            },
            "uncommon" : {
                "accessibility" : 20,
                "items" : [
                    { "item_id": 564, "minimum_amount": 10, "maximum_amount": 20 },
                    { "item_id": 562, "minimum_amount": 30, "maximum_amount": 40 },
                    { "item_id": 205, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 207, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 209, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 211, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 213, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "rare" : {
                "accessibility" : 50,
                "items" : [
                    { "item_id": 215, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 217, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 219, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 2485, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            }
        },
        {    
            "npc_id": 424,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 526, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 3,
                "items" : [
                    { "item_id": 892, "minimum_amount": 10, "maximum_amount": 20 },
                    { "item_id": 1353, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 554, "minimum_amount": 100, "maximum_amount": 100 },
                    { "item_id": 554, "minimum_amount": 200, "maximum_amount": 200 },
                    { "item_id": 554, "minimum_amount": 300, "maximum_amount": 300 },
                    { "item_id": 199, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 201, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 203, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "uncommon" : {
                "accessibility" : 20,
                "items" : [
                    { "item_id": 1213, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 2489, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 562, "minimum_amount": 10, "maximum_amount": 20 },
                    { "item_id": 556, "minimum_amount": 15, "maximum_amount": 20 },
                    { "item_id": 205, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 207, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 209, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 211, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 213, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "rare" : {
                "accessibility" : 50,
                "items" : [
                    { "item_id": 1399, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 215, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 217, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 219, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 2485, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "very_rare" : {
                "accessibility" : 380,
                "items" : [
                    { "item_id": 3140, "minimum_amount": 1, "maximum_amount": 1 },
    
    
                ]
            }
        },
        {    
            "npc_id": 484,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 526, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 3,
                "items" : [
                    { "item_id": 554, "minimum_amount": 55, "maximum_amount": 55 },
                    { "item_id": 554, "minimum_amount": 60, "maximum_amount": 60 },
                    { "item_id": 554, "minimum_amount": 120, "maximum_amount": 120 },
                    { "item_id": 199, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 201, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 203, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "uncommon" : {
                "accessibility" : 20,
                "items" : [
                    { "item_id": 565, "minimum_amount": 5, "maximum_amount": 10 },
                    { "item_id": 565, "minimum_amount": 10, "maximum_amount": 20 },
                    { "item_id": 1109, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1181, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 526, "minimum_amount": 1, "maximum_amount": 3 },
                    { "item_id": 532, "minimum_amount": 1, "maximum_amount": 5 },
                    { "item_id": 445, "minimum_amount": 1, "maximum_amount": 5 },
                ]
            },
            "rare" : {
                "accessibility" : 50,
                "items" : [
                    { "item_id": 205, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 207, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 209, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 211, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 213, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 215, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 217, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "very_rare" : {
                "accessibility" : 380,
                "items" : [
                    { "item_id": 3140, "minimum_amount": 1, "maximum_amount": 1 },
    
    
                ]
            }
        },
        {    
            "npc_id": 446,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 526, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 3,
                "items" : [
                    { "item_id": 557, "minimum_amount": 50, "maximum_amount": 200 },
                    { "item_id": 554, "minimum_amount": 50, "maximum_amount": 200 },
                    { "item_id": 554, "minimum_amount": 10, "maximum_amount": 50 },
                    { "item_id": 1379, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "uncommon" : {
                "accessibility" : 15,
                "items" : [
                    { "item_id": 4089, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 4099, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 4109, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 4097, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 4107, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 4117, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1387, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 555, "minimum_amount": 100, "maximum_amount": 125 },
                    { "item_id": 565, "minimum_amount": 60, "maximum_amount": 100 },
                    { "item_id": 558, "minimum_amount": 125, "maximum_amount": 300 },
                    { "item_id": 559, "minimum_amount": 125, "maximum_amount": 300 },
                ]
            },
        },
        {    
            "npc_id": 1543,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 526, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 3,
                "items" : [
                    { "item_id": 554, "minimum_amount": 100, "maximum_amount": 150 },
                    { "item_id": 562, "minimum_amount": 40, "maximum_amount": 80 },
                    { "item_id": 560, "minimum_amount": 30, "maximum_amount": 60 },
                    { "item_id": 2354, "minimum_amount": 3, "maximum_amount": 5 },
                    { "item_id": 2360, "minimum_amount": 2, "maximum_amount": 4 },
                    { "item_id": 2358, "minimum_amount": 4, "maximum_amount": 5 },
                    { "item_id": 7937, "minimum_amount": 50, "maximum_amount": 100 },
                    { "item_id": 995, "minimum_amount": 1000, "maximum_amount": 1000 },
                ]
            },
            "uncommon" : {
                "accessibility" : 15,
                "items" : [
                    { "item_id": 1311, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 4129, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1163, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "rare" : {
                "accessibility" : 45,
                "items" : [
                    { "item_id": 4091, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 4101, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 4111, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "very_rare" : {
                "accessibility" : 75,
                "items" : [
                    { "item_id": 4153, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
        },
        {    
            "npc_id": 11,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 592, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 3,
                "items" : [
                    { "item_id": 1311, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5298, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5299, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5296, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5301, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5297, "minimum_amount": 1, "maximum_amount": 3 },
                    { "item_id": 5303, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5302, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 379, "minimum_amount": 2, "maximum_amount": 3 },
                    { "item_id": 995, "minimum_amount": 4000, "maximum_amount": 12000 },
                ]
            },
            "uncommon" : {
                "accessibility" : 15,
                "items" : [
                    { "item_id": 1197, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1073, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1163, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 560, "minimum_amount": 50, "maximum_amount": 100 },
                    { "item_id": 562, "minimum_amount": 75, "maximum_amount": 125 },
                ]
            },
            "rare" : {
                "accessibility" : 45,
                "items" : [
                    { "item_id": 4131, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1319, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5300, "minimum_amount": 1, "maximum_amount": 2 },
                    { "item_id": 5304, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
        },
        {    
            "npc_id": 415,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 592, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 3,
                "items" : [
                    { "item_id": 1283, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1361, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1365, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 199, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 201, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 203, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 205, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 556, "minimum_amount": 125, "maximum_amount": 200 },
                    { "item_id": 565, "minimum_amount": 60, "maximum_amount": 80 },
                    { "item_id": 562, "minimum_amount": 90, "maximum_amount": 115 },
                    { "item_id": 563, "minimum_amount": 50, "maximum_amount": 70 },
                    { "item_id": 995, "minimum_amount": 7000, "maximum_amount": 15000 },
                    { "item_id": 7937, "minimum_amount": 100, "maximum_amount": 300 },
                    { "item_id": 2362, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "uncommon" : {
                "accessibility" : 20,
                "items" : [
                    { "item_id": 1113, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1147, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1201, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 207, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 209, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 211, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 213, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 215, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "rare" : {
                "accessibility" : 150,
                "items" : [
                    { "item_id": 4151, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "very_rare" : {
                "accessibility" : 256,
                "items" : [
                    { "item_id": 7979, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
        }
        {    
            "npc_id": 4005,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 532, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 3,
                "items" : [
                    { "item_id": 1313, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1367, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1361, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1183, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 199, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 201, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 203, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 205, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 207, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 385, "minimum_amount": 1, "maximum_amount": 3 },
                    { "item_id": 2362, "minimum_amount": 1, "maximum_amount": 2 },
                    { "item_id": 556, "minimum_amount": 125, "maximum_amount": 200 },
                    { "item_id": 565, "minimum_amount": 60, "maximum_amount": 80 },
                    { "item_id": 562, "minimum_amount": 90, "maximum_amount": 115 },
                    { "item_id": 563, "minimum_amount": 50, "maximum_amount": 70 },
                    { "item_id": 995, "minimum_amount": 7000, "maximum_amount": 15000 },
                ]
            },
            "uncommon" : {
                "accessibility" : 20,
                "items" : [
                    { "item_id": 1319, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1373, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1113, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1163, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 209, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 211, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 213, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 215, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 217, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "rare" : {
                "accessibility" : 150,
                "items" : [
                    { "item_id": 11235, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "very_rare" : {
                "accessibility" : 256,
                "items" : [
                    
                ]
            },
        },
        {    
            "npc_id": 2883,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 526, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 3,
                "items" : [
                    { "item_id": 995, "minimum_amount": 500, "maximum_amount": 1500 },
                    { "item_id": 199, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 201, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 203, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 205, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 207, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 454, "minimum_amount": 1, "maximum_amount": 10 },
                    { "item_id": 441, "minimum_amount": 1, "maximum_amount": 10 },
                ]
            },
            "uncommon" : {
                "accessibility" : 20,
                "items" : [
                    { "item_id": 209, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 211, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 213, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 561, "minimum_amount": 1, "maximum_amount": 5 },
                    { "item_id": 563, "minimum_amount": 1, "maximum_amount": 5 },
                    { "item_id": 562, "minimum_amount": 1, "maximum_amount": 5 },
                    { "item_id": 560, "minimum_amount": 1, "maximum_amount": 5 },
                ]
            },
        },
        {    
            "npc_id": 2878,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 526, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 3,
                "items" : [
                    { "item_id": 995, "minimum_amount": 500, "maximum_amount": 1500 },
                    { "item_id": 199, "minimum_amount": 1, "maximum_amount": 2 },
                    { "item_id": 201, "minimum_amount": 1, "maximum_amount": 2 },
                    { "item_id": 203, "minimum_amount": 1, "maximum_amount": 2 },
                    { "item_id": 205, "minimum_amount": 1, "maximum_amount": 2 },
                    { "item_id": 207, "minimum_amount": 1, "maximum_amount": 2 },
                    { "item_id": 556, "minimum_amount": 35, "maximum_amount": 60 },
                    { "item_id": 557, "minimum_amount": 35, "maximum_amount": 65 },
                    { "item_id": 557, "minimum_amount": 45, "maximum_amount": 65 },
                    { "item_id": 559, "minimum_amount": 50, "maximum_amount": 70 },
                    { "item_id": 563, "minimum_amount": 10, "maximum_amount": 20 },
                    { "item_id": 561, "minimum_amount": 10, "maximum_amount": 25 },
                    { "item_id": 9142, "minimum_amount": 20, "maximum_amount": 35 },
                    { "item_id": 227, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "uncommon" : {
                "accessibility" : 20,
                "items" : [
                    { "item_id": 209, "minimum_amount": 1, "maximum_amount": 2 },
                    { "item_id": 211, "minimum_amount": 1, "maximum_amount": 2 },
                    { "item_id": 213, "minimum_amount": 1, "maximum_amount": 2 },
                    { "item_id": 215, "minimum_amount": 1, "maximum_amount": 2 },
                    { "item_id": 217, "minimum_amount": 1, "maximum_amount": 2 },
                    { "item_id": 2485, "minimum_amount": 1, "maximum_amount": 2 },
                ]
            },
            "rare" : {
                "accessibility" : 50,
                "items" : [
                    { "item_id": 219, "minimum_amount": 1, "maximum_amount": 2 },
                    { "item_id": 830, "minimum_amount": 5, "maximum_amount": 20 },
                    { "item_id": 995, "minimum_amount": 1000, "maximum_amount": 5000 },
                ]
            }
        },
        {    
            "npc_id": 70,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 526, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 3,
                "items" : [
                    { "item_id": 199, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 201, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 203, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 205, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1203, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1349, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1137, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1420, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1323, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1199, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 882, "minimum_amount": 10, "maximum_amount": 30 },
                    { "item_id": 554, "minimum_amount": 10, "maximum_amount": 30 },
                    { "item_id": 555, "minimum_amount": 10, "maximum_amount": 30 },
                    { "item_id": 556, "minimum_amount": 10, "maximum_amount": 30 },
                    { "item_id": 557, "minimum_amount": 10, "maximum_amount": 30 },
                    { "item_id": 558, "minimum_amount": 10, "maximum_amount": 30 },
                    { "item_id": 559, "minimum_amount": 10, "maximum_amount": 30 },
                ]
            },
            "uncommon" : {
                "accessibility" : 30,
                "items" : [
                    { "item_id": 207, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 209, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 211, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 884, "minimum_amount": 20, "maximum_amount": 50 },
                    { "item_id": 886, "minimum_amount": 30, "maximum_amount": 40 },
                ]
            },
            "rare" : {
                "accessibility" : 60,
                "items" : [
                    { "item_id": 213, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 215, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 217, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 2485, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            }
        },
        {    
            "npc_id": 2834,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 526, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
        },
        {    
            "npc_id": 85,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 526, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
        },
        {    
            "npc_id": 1545,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 526, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 3,
                "items" : [
                    { "item_id": 1153, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1279, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 888, "minimum_amount": 15, "maximum_amount": 30 },
                    { "item_id": 554, "minimum_amount": 10, "maximum_amount": 20 },
                    { "item_id": 555, "minimum_amount": 10, "maximum_amount": 20 },
                    { "item_id": 556, "minimum_amount": 10, "maximum_amount": 20 },
                    { "item_id": 557, "minimum_amount": 10, "maximum_amount": 20 },
                    { "item_id": 558, "minimum_amount": 10, "maximum_amount": 20 },
                    { "item_id": 559, "minimum_amount": 10, "maximum_amount": 20 },
                    { "item_id": 2354, "minimum_amount": 1, "maximum_amount": 3 },
                ]
            },
        },
        {    
            "npc_id": 2844,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 1363, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
        },
        {    
            "npc_id": 2098,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 532, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 3,
                "items" : [
                    { "item_id": 884, "minimum_amount": 10, "maximum_amount": 20 },
                    { "item_id": 1203, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1153, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 886, "minimum_amount": 20, "maximum_amount": 35 },
                    { "item_id": 888, "minimum_amount": 10, "maximum_amount": 20 },
                    { "item_id": 554, "minimum_amount": 5, "maximum_amount": 25 },
                    { "item_id": 555, "minimum_amount": 5, "maximum_amount": 25 },
                    { "item_id": 199, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 201, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 203, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "uncommon" : {
                "accessibility" : 20,
                "items" : [
                    { "item_id": 564, "minimum_amount": 10, "maximum_amount": 20 },
                    { "item_id": 563, "minimum_amount": 10, "maximum_amount": 20 },
                    { "item_id": 561, "minimum_amount": 10, "maximum_amount": 20 },
                    { "item_id": 560, "minimum_amount": 10, "maximum_amount": 20 },
                    { "item_id": 207, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 209, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 211, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "rare" : {
                "accessibility" : 40,
                "items" : [
                    { "item_id": 213, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 215, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 217, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 2485, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
        },
        {    
            "npc_id": 291,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 526, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "constant" : {
                "accessibility" : 3,
                "items" : [
                    { "item_id": 1157, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1299, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1181, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1165, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 555, "minimum_amount": 10, "maximum_amount": 10 },
                    { "item_id": 556, "minimum_amount": 24, "maximum_amount": 24 },
                    { "item_id": 558, "minimum_amount": 37, "maximum_amount": 37 },
                    { "item_id": 2360, "minimum_amount": 1, "maximum_amount": 2 },
                ]
            },
            "uncommon" : {
                "accessibility" : 20,
                "items" : [
                    { "item_id": 560, "minimum_amount": 30, "maximum_amount": 50 },
                    { "item_id": 207, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
        },
        {    
            "npc_id": 2006,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 592, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 3,
                "items" : [
                    { "item_id": 1353, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1325, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1157, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1313, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1181, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1109, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 554, "minimum_amount": 100, "maximum_amount": 250 },
                    { "item_id": 562, "minimum_amount": 40, "maximum_amount": 80 },
                    { "item_id": 560, "minimum_amount": 20, "maximum_amount": 40 },
                    { "item_id": 444, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 203, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "uncommon" : {
                "accessibility" : 20,
                "items" : [
                    { "item_id": 1147, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
        },
        {    
            "npc_id": 268,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 536, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1751, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 3,
                "items" : [
                    { "item_id": 1365, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1355, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1243, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1069, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1197, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 207, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 450, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "uncommon" : {
                "accessibility" : 20,
                "items" : [
                    { "item_id": 1161, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 555, "minimum_amount": 125, "maximum_amount": 125 },
                    { "item_id": 561, "minimum_amount": 25, "maximum_amount": 25 },
                    { "item_id": 554, "minimum_amount": 75, "maximum_amount": 75 },
                    { "item_id": 563, "minimum_amount": 15, "maximum_amount": 15 },
                    { "item_id": 365, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "rare" : {
                "accessibility" : 40,
                "items" : [
                    { "item_id": 1213, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
        },
        {    
            "npc_id": 1432,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 592, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 3,
                "items" : [
                    { "item_id": 1365, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1361, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1283, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1213, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 199, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 201, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 203, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 205, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 556, "minimum_amount": 100, "maximum_amount": 150 },
                    { "item_id": 2362, "minimum_amount": 1, "maximum_amount": 3 },
                ]
            },
            "uncommon" : {
                "accessibility" : 20,
                "items" : [
                    { "item_id": 1197, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1147, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 207, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 209, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 211, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 213, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 215, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 2485, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 217, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 554, "minimum_amount": 80, "maximum_amount": 120 },
                    { "item_id": 562, "minimum_amount": 40, "maximum_amount": 40 },
                    { "item_id": 565, "minimum_amount": 30, "maximum_amount": 30 },
                ]
            },
            "rare" : {
                "accessibility" : 50,
                "items" : [
                    { "item_id": 1113, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 217, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
        },
        {    
            "npc_id": 135,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 526, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
        },
        {    
            "npc_id": 259,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 536, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1747, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 1,
                "items" : [
                    { "item_id": 810, "minimum_amount": 30, "maximum_amount": 30 },
                    { "item_id": 829, "minimum_amount": 45, "maximum_amount": 45 },
                    { "item_id": 868, "minimum_amount": 5, "maximum_amount": 15 },
                    { "item_id": 554, "minimum_amount": 100, "maximum_amount": 300 },
                    { "item_id": 2362, "minimum_amount": 2, "maximum_amount": 3 },
                ]
            },
            "uncommon" : {
                "accessibility" : 10,
                "items" : [
                    { "item_id": 1355, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1369, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1197, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1315, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 556, "minimum_amount": 200, "maximum_amount": 200 },
                    { "item_id": 563, "minimum_amount": 50, "maximum_amount": 50 },
                    { "item_id": 565, "minimum_amount": 65, "maximum_amount": 65 },
                    { "item_id": 560, "minimum_amount": 40, "maximum_amount": 40 },
                ]
            },
            "rare" : {
                "accessibility" : 50,
                "items" : [
                    { "item_id": 1303, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "very_rare" : {
                "accessibility" : 400,
                "items" : [
                    { "item_id": 11286, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
        },
        {    
            "npc_id": 891,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 532, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 1,
                "items" : [
                    { "item_id": 1179, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1141, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1193, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1389, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1285, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 199, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 201, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 203, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 556, "minimum_amount": 35, "maximum_amount": 35 },
                    { "item_id": 564, "minimum_amount": 15, "maximum_amount": 15 },
                    { "item_id": 557, "minimum_amount": 30, "maximum_amount": 30 },
                    { "item_id": 561, "minimum_amount": 10, "maximum_amount": 15 },
                ]
            },
            "uncommon" : {
                "accessibility" : 20,
                "items" : [
                    { "item_id": 884, "minimum_amount": 30, "maximum_amount": 45 },
                    { "item_id": 886, "minimum_amount": 45, "maximum_amount": 60 },
                    { "item_id": 205, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 207, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 209, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 211, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 563, "minimum_amount": 15, "maximum_amount": 15 },
                    { "item_id": 565, "minimum_amount": 15, "maximum_amount": 15 },
                    { "item_id": 562, "minimum_amount": 15, "maximum_amount": 15 },
                    { "item_id": 560, "minimum_amount": 10, "maximum_amount": 10 },
                ]
            },
            "rare" : {
                "accessibility" : 40,
                "items" : [
                    { "item_id": 213, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 215, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 2485, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 217, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5295, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5298, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5299, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5300, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5301, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5302, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5303, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
        },
        {    
            "npc_id": 2026,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 592, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 1,
                "items" : [
                    { "item_id": 1353, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1365, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1311, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1197, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1073, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 554, "minimum_amount": 125, "maximum_amount": 125 },
                ]
            },
            "uncommon" : {
                "accessibility" : 15,
                "items" : [
                    { "item_id": 1163, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 562, "minimum_amount": 85, "maximum_amount": 85 },
                    { "item_id": 560, "minimum_amount": 40, "maximum_amount": 40 },
                ]
            },
        },
        {    
            "npc_id": 2084,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 532, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 1,
                "items" : [
                    { "item_id": 1353, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1387, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1181, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 554, "minimum_amount": 75, "maximum_amount": 75 },
                    { "item_id": 554, "minimum_amount": 150, "maximum_amount": 150 },
                    { "item_id": 554, "minimum_amount": 300, "maximum_amount": 300 },
                    { "item_id": 562, "minimum_amount": 25, "maximum_amount": 25 },
                    { "item_id": 565, "minimum_amount": 20, "maximum_amount": 20 },
                    { "item_id": 563, "minimum_amount": 15, "maximum_amount": 15 },
                    { "item_id": 199, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 201, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 203, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 892, "minimum_amount": 10, "maximum_amount": 15 },
                ]
            },
            "uncommon" : {
                "accessibility" : 15,
                "items" : [
                    { "item_id": 1393, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 892, "minimum_amount": 15, "maximum_amount": 30 },
                    { "item_id": 205, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 207, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 209, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 211, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "rare" : {
                "accessibility" : 35,
                "items" : [
                    { "item_id": 213, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 215, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 2485, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 217, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "very_rare" : {
                "accessibility" : 50,
                "items" : [
                    { "item_id": 1333, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1373, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            }
        },
        {    
            "npc_id": 273,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 536, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 2352, "minimum_amount": 5, "maximum_amount": 5 },
                ]
            },
            "common" : {
                "accessibility" : 1,
                "items" : [
                    { "item_id": 830, "minimum_amount": 15, "maximum_amount": 30 },
                    { "item_id": 1371, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1357, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 565, "minimum_amount": 30, "maximum_amount": 60 },
                    { "item_id": 157, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "uncommon" : {
                "accessibility" : 10,
                "items" : [
                    { "item_id": 1317, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1183, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 811, "minimum_amount": 30, "maximum_amount": 30 },
                    { "item_id": 1147, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 9143, "minimum_amount": 10, "maximum_amount": 30 },
                    { "item_id": 868, "minimum_amount": 15, "maximum_amount": 25 },
                    { "item_id": 9144, "minimum_amount": 10, "maximum_amount": 20 },
                    { "item_id": 9431, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 2362, "minimum_amount": 2, "maximum_amount": 4 },
                ]
            },
            "rare" : {
                "accessibility" : 150,
                "items" : [
                    { "item_id": 4585, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 4087, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "very_rare" : {
                "accessibility" : 385,
                "items" : [
                    { "item_id": 11286, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            }
        },
        {    
            "npc_id": 274,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 536, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 2354, "minimum_amount": 5, "maximum_amount": 5 },
                ]
            },
            "common" : {
                "accessibility" : 1,
                "items" : [
                    { "item_id": 830, "minimum_amount": 20, "maximum_amount": 40 },
                    { "item_id": 1432, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 565, "minimum_amount": 30, "maximum_amount": 60 },
                    { "item_id": 145, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "uncommon" : {
                "accessibility" : 10,
                "items" : [
                    { "item_id": 1199, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1163, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 811, "minimum_amount": 30, "maximum_amount": 30 },
                    { "item_id": 9144, "minimum_amount": 15, "maximum_amount": 40 },
                    { "item_id": 868, "minimum_amount": 20, "maximum_amount": 30 },
                    { "item_id": 9144, "minimum_amount": 15, "maximum_amount": 25 },
                    { "item_id": 9431, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 2364, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "rare" : {
                "accessibility" : 140,
                "items" : [
                    { "item_id": 4087, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 4585, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "very_rare" : {
                "accessibility" : 375,
                "items" : [
                    { "item_id": 11286, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            }
        },
        {
            "npc_id": 3209,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 532, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 1,
                "items" : [
                    { "item_id": 1355, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 199, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 201, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 203, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 225, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 561, "minimum_amount": 25, "maximum_amount": 50 },
                ]
            },
            "uncommon" : {
                "accessibility" : 20,
                "items" : [
                    { "item_id": 1197, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1213, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1161, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5298, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5299, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5300, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5301, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5302, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5303, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 205, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 207, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 209, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 211, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 213, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "rare" : {
                "accessibility" : 40,
                "items" : [
                    { "item_id": 215, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 2485, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 217, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "very_rare" : {
                "accessibility" : 125,
                "items" : [
                    { "item_id": 8901, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5304, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
        },
        {
            "npc_id": 419,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 526, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 1,
                "items" : [
                    { "item_id": 1279, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1207, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1295, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 199, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 201, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 203, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "uncommon" : {
                "accessibility" : 20,
                "items" : [
                    { "item_id": 826, "minimum_amount": 5, "maximum_amount": 25 },
                    { "item_id": 1069, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 4121, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 205, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 207, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 209, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 211, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 213, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "rare" : {
                "accessibility" : 40,
                "items" : [
                    { "item_id": 4097, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 4107, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 4117, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 215, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 2485, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 217, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 5295, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "very_rare" : {
                "accessibility" : 300,
                "items" : [
                    { "item_id": 7976, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            }
        },
        {
            "npc_id": 435,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 592, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 1,
                "items" : [
                    { "item_id": 554, "minimum_amount": 25, "maximum_amount": 75 },
                    { "item_id": 554, "minimum_amount": 25, "maximum_amount": 75 },
                    { "item_id": 562, "minimum_amount": 10, "maximum_amount": 30 },
                ]
            },
            "uncommon" : {
                "accessibility" : 20,
                "items" : [
                    { "item_id":1387, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 560, "minimum_amount": 25, "maximum_amount": 40 },
                ]
            },
        },
        {
            "npc_id": 417,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 526, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 1,
                "items" : [
                    { "item_id": 555, "minimum_amount": 120, "maximum_amount": 120 },
                    { "item_id": 199, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 201, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 203, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 205, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 207, "minimum_amount": 1, "maximum_amount": 2 },
                    { "item_id": 209, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "uncommon" : {
                "accessibility" : 20,
                "items" : [
                    { "item_id": 561, "minimum_amount": 80, "maximum_amount": 80 },
                    { "item_id": 211, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 213, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 215, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1213, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "uncommon" : {
                "accessibility" : 40,
                "items" : [
                    { "item_id": 217, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 4089, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 4099, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 4109, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
        },
        {
            "npc_id": 437,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 526, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 1,
                "items" : [
                    { "item_id": 1353, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 562, "minimum_amount": 80, "maximum_amount": 80 },
                    { "item_id": 560, "minimum_amount": 30, "maximum_amount": 50 },
                    { "item_id": 555, "minimum_amount": 120, "maximum_amount": 200 },
                    { "item_id": 2354, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "uncommon" : {
                "accessibility" : 20,
                "items" : [
                    { "item_id": 1197, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 4127, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1163, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 565, "minimum_amount": 40, "maximum_amount": 100 },
                ]
            },
        },
        {
            "npc_id": 432,
            "constant" : {
                "accessibility" : 0,
                "items" : [
                    { "item_id": 526, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "common" : {
                "accessibility" : 1,
                "items" : [
                    { "item_id": 1069, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1355, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1197, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1161, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 561, "minimum_amount": 50, "maximum_amount": 90 },
                    { "item_id": 563, "minimum_amount": 20, "maximum_amount": 20 },
                    { "item_id": 199, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 201, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 203, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 205, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 207, "minimum_amount": 1, "maximum_amount": 2 },
                ]
            },
            "uncommon" : {
                "accessibility" : 35,
                "items" : [
                    { "item_id": 1213, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 4093, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 4103, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 4113, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 209, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 211, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 213, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 215, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 217, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 1213, "minimum_amount": 1, "maximum_amount": 1 },
                    { "item_id": 219, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
            "rare" : {
                "accessibility" : 70,
                "items" : [
                    { "item_id": 4158, "minimum_amount": 1, "maximum_amount": 1 },
                ]
            },
        },
    ]
    1000 Abyssal Demon Kills

    Please note that the last block of information are drops from npc's that have different identification values from the ones commonly in 317's. If you are looking to find out which npc id value is for each npc, I can send you a list. If you have any suggestions on how this can be improved or use this and find a bug, please let me know.
    Reply With Quote  
     


  2. #2  
    Registered Member
    Join Date
    Jul 2013
    Posts
    150
    Thanks given
    3
    Thanks received
    4
    Rep Power
    13
    This is impressive.
    I love your work.

    Keep it up.
    Reply With Quote  
     

  3. Thankful user:


  4. #3  
    Donator

    Jason's Avatar
    Join Date
    Aug 2009
    Posts
    6,108
    Thanks given
    2,402
    Thanks received
    2,825
    Rep Power
    4604
    Quote Originally Posted by MyrChivvon View Post
    This is impressive.
    I love your work.

    Keep it up.
    Thank you, will do .
    Reply With Quote  
     

  5. Thankful user:


  6. #4  
    Member Market Banned Market Banned
    Kota Ko's Avatar
    Join Date
    Aug 2009
    Age
    23
    Posts
    1,032
    Thanks given
    26
    Thanks received
    59
    Rep Power
    19
    Never really understood drop tables I want to look into this though, thanks Jason.
    Reply With Quote  
     

  7. #5  
    Donator

    Jason's Avatar
    Join Date
    Aug 2009
    Posts
    6,108
    Thanks given
    2,402
    Thanks received
    2,825
    Rep Power
    4604
    Quote Originally Posted by Kota Ko View Post
    Never really understood drop tables I want to look into this though, thanks Jason.
    Theres really not a lot of information that I could find on the OSRS drop table 'system' unfortunately so this is pretty much wing-dinged. Yeah absolutely, no problem at all. I hope you make some use of it.
    Reply With Quote  
     

  8. #6  
    Banned
    Join Date
    Apr 2014
    Posts
    869
    Thanks given
    516
    Thanks received
    202
    Rep Power
    0
    Quote Originally Posted by Jason View Post
    Theres really not a lot of information that I could find on the OSRS drop table 'system' unfortunately so this is pretty much wing-dinged. Yeah absolutely, no problem at all. I hope you make some use of it.
    Thanks brother, Love your work! keep it up mate
    Reply With Quote  
     

  9. Thankful user:


  10. #7  
    Registered Member
    Optimum's Avatar
    Join Date
    Apr 2012
    Posts
    3,517
    Thanks given
    830
    Thanks received
    1,580
    Discord
    View profile
    Rep Power
    5000
    Great job on this

    Quote Originally Posted by DownGrade View Post
    Don't let these no life creeps get to you, its always the same on here. They'd rather spend hours upon hours in the rune-server spam section then getting laid! ha ha!Its honestly pathetic i haven't seen so many lowlifes in my life its actually insane i wish that this section would just vanish its probably the only way to get these people out of the community...
    PLEASE BE AWARE OF IMPOSTERS MY DISCORD ID: 362240000760348683
    Reply With Quote  
     

  11. Thankful user:


  12. #8  
    Ex Rune-Scaper

    Join Date
    Jun 2008
    Posts
    3,541
    Thanks given
    457
    Thanks received
    1,259
    Rep Power
    1003
    What's the major difference than using something like this.

    Code:
    public class NPCDrops {
    
    	/**
    	 * The directory/location of drops.json
    	 */
    	private static final File DROP_DIR = new File(
    			Config.DATA_LOC + "json/npcdrops.json");
    
    	/**
    	 * Our single instance of Gson
    	 */
    	private static final Gson GSON = new GsonBuilder().setPrettyPrinting()
    			.create();
    
    	private static HashMap<Integer, Drop[]> npcDrops;
    
    	public static final void init() {
    		load();
    	}
    
    	public static Drop[] getDrops(int npcId) {
    		return npcDrops.get(npcId);
    	}
    
    	private Map<Integer, ArrayList<Drop>> dropMapx = null;
    
    	public Map<Integer, ArrayList<Drop>> getDropArray() {
    
    		if (dropMapx == null)
    			dropMapx = new LinkedHashMap<Integer, ArrayList<Drop>>();
    		for (int i : npcDrops.keySet()) {
    			int npcId = i;
    			ArrayList<Drop> temp = new ArrayList<Drop>();
    			for (Drop mainDrop : npcDrops.get(npcId)) {
    				temp.add(mainDrop);
    			}
    			dropMapx.put(i, temp);
    		}
    
    		return dropMapx;
    	}
    
    	long endTime = System.currentTimeMillis();
    
    	private long startTime;
    	long elapsed = endTime - startTime;
    
    	private static void load() {
    		final long start = System.currentTimeMillis();
    		try {
    			Type t = new TypeToken<HashMap<Integer, Drop[]>>() {
    			}.getType();
    			npcDrops = GSON.fromJson(new FileReader(DROP_DIR), t);
    			System.out.println(Config.SYSTEM_NAME + "Loaded: " + npcDrops.size()
    					+ " NPC Drops in " + (System.currentTimeMillis() - start)
    					+ "ms.");
    		} catch (JsonSyntaxException | JsonIOException | FileNotFoundException e) {
    			e.printStackTrace();
    		}
    	}
    
    	public static HashMap<Integer, Drop[]> getDropMap() {
    		return npcDrops;
    	}
    }
    Code:
    public class Drop {
    
    	private int itemId, minAmount, maxAmount;
    	private double rate;
    	private boolean rare;
    
    	public static Drop create(int itemId, double rate, int minAmount,
    			int maxAmount, boolean rare) {
    		return new Drop((short) itemId, rate, minAmount, maxAmount, rare);
    	}
    
    	public Drop(int itemId, double rate, int minAmount, int maxAmount,
    			boolean rare) {
    		this.itemId = itemId;
    		this.rate = rate;
    		this.minAmount = minAmount;
    		this.maxAmount = maxAmount;
    		this.rare = rare;
    	}
    
    	public boolean isRare() {
    		return rare;
    	}
    
    	public int getMinAmount() {
    		return minAmount;
    	}
    
    	public int getExtraAmount() {
    		return maxAmount - minAmount;
    	}
    
    	public int getMaxAmount() {
    		return maxAmount;
    	}
    
    	public int getItemId() {
    		return itemId;
    	}
    
    	public double getRate() {
    		return rate;
    	}
    
    	public void setItemId(short itemId) {
    		this.itemId = itemId;
    	}
    
    	public void setRate(double rate) {
    		this.rate = rate;
    	}
    
    	public void setMinAmount(int amount) {
    		this.minAmount = amount;
    	}
    
    	public void setMaxAmount(int amount) {
    		this.maxAmount = amount;
    	}
    
    	public boolean isFromRareTable() {
    		return rare;
    	}
    
    }
    Code:
    {
      "4400": [
        {
          "itemId": 556,
          "minAmount": 1,
          "maxAmount": 4,
          "rate": 66.0,
          "rare": false
        },
        {
          "itemId": 557,
          "minAmount": 4,
          "maxAmount": 4,
          "rate": 68.0,
          "rare": false
        },
        {
          "itemId": 554,
          "minAmount": 6,
          "maxAmount": 6,
          "rate": 69.0,
          "rare": false
        },
        {
          "itemId": 559,
          "minAmount": 7,
          "maxAmount": 7,
          "rate": 44.0,
          "rare": false
        },
        {
          "itemId": 1139,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 91.0,
          "rare": false
        },
        {
          "itemId": 877,
          "minAmount": 8,
          "maxAmount": 8,
          "rate": 67.0,
          "rare": false
        },
        {
          "itemId": 882,
          "minAmount": 4,
          "maxAmount": 8,
          "rate": 69.0,
          "rare": false
        },
        {
          "itemId": 839,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 45.0,
          "rare": false
        },
        {
          "itemId": 1189,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 6.0,
          "rare": false
        },
        {
          "itemId": 1381,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 36.0,
          "rare": false
        },
        {
          "itemId": 19830,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 50.0,
          "rare": false
        },
        {
          "itemId": 995,
          "minAmount": 7000,
          "maxAmount": 9000,
          "rate": 75.0,
          "rare": false
        },
        {
          "itemId": 1965,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 93.0,
          "rare": false
        },
        {
          "itemId": 2307,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 92.0,
          "rare": false
        },
        {
          "itemId": 1440,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 57.0,
          "rare": false
        },
        {
          "itemId": 1438,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 34.0,
          "rare": false
        },
        {
          "itemId": 1956,
          "minAmount": 2,
          "maxAmount": 2,
          "rate": 26.0,
          "rare": false
        },
        {
          "itemId": 1009,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 49.0,
          "rare": false
        },
        {
          "itemId": 229,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 29.0,
          "rare": false
        }
      ]
    }
    So essentially you're just creating an array throughout the hashmap so you don't have to add items like this. I guess in the long run that would cut down a lot of file space too.
    Reply With Quote  
     

  13. #9  
    Donator

    Jason's Avatar
    Join Date
    Aug 2009
    Posts
    6,108
    Thanks given
    2,402
    Thanks received
    2,825
    Rep Power
    4604
    Quote Originally Posted by 7Winds View Post
    What's the major difference than using something like this.

    Code:
    public class NPCDrops {
    
        /**
         * The directory/location of drops.json
         */
        private static final File DROP_DIR = new File(
                Config.DATA_LOC + "json/npcdrops.json");
    
        /**
         * Our single instance of Gson
         */
        private static final Gson GSON = new GsonBuilder().setPrettyPrinting()
                .create();
    
        private static HashMap<Integer, Drop[]> npcDrops;
    
        public static final void init() {
            load();
        }
    
        public static Drop[] getDrops(int npcId) {
            return npcDrops.get(npcId);
        }
    
        private Map<Integer, ArrayList<Drop>> dropMapx = null;
    
        public Map<Integer, ArrayList<Drop>> getDropArray() {
    
            if (dropMapx == null)
                dropMapx = new LinkedHashMap<Integer, ArrayList<Drop>>();
            for (int i : npcDrops.keySet()) {
                int npcId = i;
                ArrayList<Drop> temp = new ArrayList<Drop>();
                for (Drop mainDrop : npcDrops.get(npcId)) {
                    temp.add(mainDrop);
                }
                dropMapx.put(i, temp);
            }
    
            return dropMapx;
        }
    
        long endTime = System.currentTimeMillis();
    
        private long startTime;
        long elapsed = endTime - startTime;
    
        private static void load() {
            final long start = System.currentTimeMillis();
            try {
                Type t = new TypeToken<HashMap<Integer, Drop[]>>() {
                }.getType();
                npcDrops = GSON.fromJson(new FileReader(DROP_DIR), t);
                System.out.println(Config.SYSTEM_NAME + "Loaded: " + npcDrops.size()
                        + " NPC Drops in " + (System.currentTimeMillis() - start)
                        + "ms.");
            } catch (JsonSyntaxException | JsonIOException | FileNotFoundException e) {
                e.printStackTrace();
            }
        }
    
        public static HashMap<Integer, Drop[]> getDropMap() {
            return npcDrops;
        }
    }
    Code:
    public class Drop {
    
        private int itemId, minAmount, maxAmount;
        private double rate;
        private boolean rare;
    
        public static Drop create(int itemId, double rate, int minAmount,
                int maxAmount, boolean rare) {
            return new Drop((short) itemId, rate, minAmount, maxAmount, rare);
        }
    
        public Drop(int itemId, double rate, int minAmount, int maxAmount,
                boolean rare) {
            this.itemId = itemId;
            this.rate = rate;
            this.minAmount = minAmount;
            this.maxAmount = maxAmount;
            this.rare = rare;
        }
    
        public boolean isRare() {
            return rare;
        }
    
        public int getMinAmount() {
            return minAmount;
        }
    
        public int getExtraAmount() {
            return maxAmount - minAmount;
        }
    
        public int getMaxAmount() {
            return maxAmount;
        }
    
        public int getItemId() {
            return itemId;
        }
    
        public double getRate() {
            return rate;
        }
    
        public void setItemId(short itemId) {
            this.itemId = itemId;
        }
    
        public void setRate(double rate) {
            this.rate = rate;
        }
    
        public void setMinAmount(int amount) {
            this.minAmount = amount;
        }
    
        public void setMaxAmount(int amount) {
            this.maxAmount = amount;
        }
    
        public boolean isFromRareTable() {
            return rare;
        }
    
    }
    Code:
    {
      "4400": [
        {
          "itemId": 556,
          "minAmount": 1,
          "maxAmount": 4,
          "rate": 66.0,
          "rare": false
        },
        {
          "itemId": 557,
          "minAmount": 4,
          "maxAmount": 4,
          "rate": 68.0,
          "rare": false
        },
        {
          "itemId": 554,
          "minAmount": 6,
          "maxAmount": 6,
          "rate": 69.0,
          "rare": false
        },
        {
          "itemId": 559,
          "minAmount": 7,
          "maxAmount": 7,
          "rate": 44.0,
          "rare": false
        },
        {
          "itemId": 1139,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 91.0,
          "rare": false
        },
        {
          "itemId": 877,
          "minAmount": 8,
          "maxAmount": 8,
          "rate": 67.0,
          "rare": false
        },
        {
          "itemId": 882,
          "minAmount": 4,
          "maxAmount": 8,
          "rate": 69.0,
          "rare": false
        },
        {
          "itemId": 839,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 45.0,
          "rare": false
        },
        {
          "itemId": 1189,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 6.0,
          "rare": false
        },
        {
          "itemId": 1381,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 36.0,
          "rare": false
        },
        {
          "itemId": 19830,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 50.0,
          "rare": false
        },
        {
          "itemId": 995,
          "minAmount": 7000,
          "maxAmount": 9000,
          "rate": 75.0,
          "rare": false
        },
        {
          "itemId": 1965,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 93.0,
          "rare": false
        },
        {
          "itemId": 2307,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 92.0,
          "rare": false
        },
        {
          "itemId": 1440,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 57.0,
          "rare": false
        },
        {
          "itemId": 1438,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 34.0,
          "rare": false
        },
        {
          "itemId": 1956,
          "minAmount": 2,
          "maxAmount": 2,
          "rate": 26.0,
          "rare": false
        },
        {
          "itemId": 1009,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 49.0,
          "rare": false
        },
        {
          "itemId": 229,
          "minAmount": 1,
          "maxAmount": 1,
          "rate": 29.0,
          "rare": false
        }
      ]
    }
    So essentially you're just creating an array throughout the hashmap so you don't have to add items like this. I guess in the long run that would cut down a lot of file space too.
    The difference is that you're signifying at what rate each individual item should be dropped verses what I have done which is at what rate should each table be accessed. I am dividing the items into groups where as you're giving each item it's own rarity. Yes having them in groups definitely cuts down the amount of lines.
    Reply With Quote  
     

  14. Thankful user:

    Sub

  15. #10  
    Registered Member
    Cadillac's Avatar
    Join Date
    Jul 2014
    Age
    6
    Posts
    334
    Thanks given
    0
    Thanks received
    228
    Rep Power
    951
    Looks cool, I think that you should use a string key personally, you won't lose performance.

    Also did you use my drop grabber, if so feel free to release your modified edition.
    back at it.
    Reply With Quote  
     

Page 1 of 2 12 LastLast

Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. [Project Insanity] NPC Drop Error
    By edub22 in forum Help
    Replies: 2
    Last Post: 08-23-2014, 07:57 PM
  2. Replies: 33
    Last Post: 07-23-2011, 02:59 PM
  3. Replies: 8
    Last Post: 09-01-2010, 11:12 PM
  4. Project-Insanity (Npc drops) Help!
    By Juggalo Family in forum Help
    Replies: 1
    Last Post: 07-27-2010, 01:43 AM
  5. Project Insanity NPC Drops
    By farmerscape in forum Help
    Replies: 3
    Last Post: 07-23-2010, 11:51 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •