public static final void FeedPot(final LittleEndianAccessor slea, final MapleClient c) { final int itemid = slea.readInt(); final Item slot = c.getPlayer() .getInventory(GameConstants.getInventoryType(itemid)) .getItem((short) slea.readInt()); if (slot == null || slot.getQuantity() <= 0 || slot.getItemId() != itemid) { c.getSession().write(CWvsContext.enableActions()); return; } final int level = GameConstants.getInventoryType(itemid) == MapleInventoryType.ETC ? MapleItemInformationProvider.getInstance().getItemMakeLevel(itemid) : MapleItemInformationProvider.getInstance().getReqLevel(itemid); if (level <= 0 || level < (Math.min(120, c.getPlayer().getLevel()) - 50) || (GameConstants.getInventoryType(itemid) != MapleInventoryType.ETC && GameConstants.getInventoryType(itemid) != MapleInventoryType.EQUIP)) { c.getPlayer().dropMessage(1, "The item must be within 50 levels of you."); c.getSession().write(CWvsContext.enableActions()); return; } final int index = slea.readInt() - 1; if (index < 0 || index >= c.getPlayer().getImps().length || c.getPlayer().getImps()[index] == null || c.getPlayer().getImps()[index].getLevel() >= (MapleItemInformationProvider.getInstance() .getPot(c.getPlayer().getImps()[index].getItemId()) .right - 1) || c.getPlayer().getImps()[index].getState() != 1) { c.getSession().write(CWvsContext.enableActions()); return; } int mask = ImpFlag.FULLNESS.getValue(); mask |= ImpFlag.FULLNESS_2.getValue(); mask |= ImpFlag.UPDATE_TIME.getValue(); mask |= ImpFlag.AWAKE_TIME.getValue(); // this is where the magic happens c.getPlayer() .getImps()[index] .setFullness( c.getPlayer().getImps()[index].getFullness() + (100 * (GameConstants.getInventoryType(itemid) == MapleInventoryType.EQUIP ? 2 : 1))); if (Randomizer.nextBoolean()) { mask |= ImpFlag.CLOSENESS.getValue(); c.getPlayer() .getImps()[index] .setCloseness( c.getPlayer().getImps()[index].getCloseness() + 1 + (Randomizer.nextInt( 5 * (GameConstants.getInventoryType(itemid) == MapleInventoryType.EQUIP ? 2 : 1)))); } else if (Randomizer.nextInt(5) == 0) { // 1/10 chance of sickness c.getPlayer().getImps()[index].setState(4); // sick mask |= ImpFlag.STATE.getValue(); } if (c.getPlayer().getImps()[index].getFullness() >= 1000) { c.getPlayer().getImps()[index].setState(1); c.getPlayer().getImps()[index].setFullness(0); c.getPlayer().getImps()[index].setLevel(c.getPlayer().getImps()[index].getLevel() + 1); mask |= ImpFlag.SUMMONED.getValue(); if (c.getPlayer().getImps()[index].getLevel() >= (MapleItemInformationProvider.getInstance() .getPot(c.getPlayer().getImps()[index].getItemId()) .right - 1)) { c.getPlayer().getImps()[index].setState(5); } } MapleInventoryManipulator.removeFromSlot( c, GameConstants.getInventoryType(itemid), slot.getPosition(), (short) 1, false, false); c.getSession().write(CWvsContext.updateImp(c.getPlayer().getImps()[index], mask, index, false)); }
private static void addEnchantStats(final Map<String, Integer> stats, final Equip item) { Integer s = stats.get("PAD"); if (s != null && s != 0) { item.setWatk((short) (item.getWatk() + s)); } s = stats.get("MAD"); if (s != null && s != 0) { item.setMatk((short) (item.getMatk() + s)); } s = stats.get("ACC"); if (s != null && s != 0) { item.setAcc((short) (item.getAcc() + s)); } s = stats.get("EVA"); if (s != null && s != 0) { item.setAvoid((short) (item.getAvoid() + s)); } s = stats.get("Speed"); if (s != null && s != 0) { item.setSpeed((short) (item.getSpeed() + s)); } s = stats.get("Jump"); if (s != null && s != 0) { item.setJump((short) (item.getJump() + s)); } s = stats.get("MaxHP"); if (s != null && s != 0) { item.setHp((short) (item.getHp() + s)); } s = stats.get("MaxMP"); if (s != null && s != 0) { item.setMp((short) (item.getMp() + s)); } s = stats.get("STR"); if (s != null && s != 0) { item.setStr((short) (item.getStr() + s)); } s = stats.get("DEX"); if (s != null && s != 0) { item.setDex((short) (item.getDex() + s)); } s = stats.get("INT"); if (s != null && s != 0) { item.setInt((short) (item.getInt() + s)); } s = stats.get("LUK"); if (s != null && s != 0) { item.setLuk((short) (item.getLuk() + s)); } s = stats.get("randOption"); if (s != null && s != 0) { final int ma = item.getMatk(), wa = item.getWatk(); if (wa > 0) { item.setWatk((short) (Randomizer.nextBoolean() ? (wa + s) : (wa - s))); } if (ma > 0) { item.setMatk((short) (Randomizer.nextBoolean() ? (ma + s) : (ma - s))); } } s = stats.get("randStat"); if (s != null && s != 0) { final int str = item.getStr(), dex = item.getDex(), luk = item.getLuk(), int_ = item.getInt(); if (str > 0) { item.setStr((short) (Randomizer.nextBoolean() ? (str + s) : (str - s))); } if (dex > 0) { item.setDex((short) (Randomizer.nextBoolean() ? (dex + s) : (dex - s))); } if (int_ > 0) { item.setInt((short) (Randomizer.nextBoolean() ? (int_ + s) : (int_ - s))); } if (luk > 0) { item.setLuk((short) (Randomizer.nextBoolean() ? (luk + s) : (luk - s))); } } }