Improved item & drop-point checking + Dojo fixes + Duey revamp
Fixed some issues with items being dropped sometimes out-of-reach and in a weird way. Improved item checking function, now looking up one-of-a-kind items properly. Fixed some issues with dojo skills and possible exploits in dojo progression. Improved Duey, now displaying better info to players.
This commit is contained in:
@@ -497,10 +497,10 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
return null;
|
||||
}
|
||||
|
||||
public int addDojoPointsByMap() {
|
||||
public int addDojoPointsByMap(int mapid) {
|
||||
int pts = 0;
|
||||
if (dojoPoints < 17000) {
|
||||
pts = 1 + ((getMap().getId() - 1) / 100 % 100) / 6;
|
||||
pts = 1 + ((mapid - 1) / 100 % 100) / 6;
|
||||
if (!getDojoParty()) {
|
||||
pts++;
|
||||
}
|
||||
@@ -1589,7 +1589,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
}
|
||||
|
||||
public int countItem(int itemid) {
|
||||
return inventory[ii.getInventoryType(itemid).ordinal()].countById(itemid);
|
||||
return inventory[ItemConstants.getInventoryType(itemid).ordinal()].countById(itemid);
|
||||
}
|
||||
|
||||
public boolean canHold(int itemid) {
|
||||
@@ -1604,7 +1604,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
return true;
|
||||
}
|
||||
|
||||
return getInventory(ii.getInventoryType(itemid)).getNextFreeSlot() > -1;
|
||||
return getInventory(ItemConstants.getInventoryType(itemid)).getNextFreeSlot() > -1;
|
||||
}
|
||||
|
||||
public void decreaseBattleshipHp(int decrease) {
|
||||
@@ -3800,8 +3800,13 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
return itemEffect;
|
||||
}
|
||||
|
||||
public boolean haveItemWithId(int itemid, boolean checkEquipped) {
|
||||
return (inventory[ItemConstants.getInventoryType(itemid).ordinal()].findById(itemid) != null) ||
|
||||
(checkEquipped && inventory[MapleInventoryType.EQUIPPED.ordinal()].findById(itemid) != null);
|
||||
}
|
||||
|
||||
public int getItemQuantity(int itemid, boolean checkEquipped) {
|
||||
int possesed = inventory[ii.getInventoryType(itemid).ordinal()].countById(itemid);
|
||||
int possesed = inventory[ItemConstants.getInventoryType(itemid).ordinal()].countById(itemid);
|
||||
if (checkEquipped) {
|
||||
possesed += inventory[MapleInventoryType.EQUIPPED.ordinal()].countById(itemid);
|
||||
}
|
||||
@@ -3809,7 +3814,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
}
|
||||
|
||||
public int getCleanItemQuantity(int itemid, boolean checkEquipped) {
|
||||
int possesed = inventory[ii.getInventoryType(itemid).ordinal()].countNotOwnedById(itemid);
|
||||
int possesed = inventory[ItemConstants.getInventoryType(itemid).ordinal()].countNotOwnedById(itemid);
|
||||
if (checkEquipped) {
|
||||
possesed += inventory[MapleInventoryType.EQUIPPED.ordinal()].countNotOwnedById(itemid);
|
||||
}
|
||||
@@ -4697,7 +4702,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
}
|
||||
|
||||
public boolean hasEmptySlot(int itemId) {
|
||||
return getInventory(ii.getInventoryType(itemId)).getNextFreeSlot() > -1;
|
||||
return getInventory(ItemConstants.getInventoryType(itemId)).getNextFreeSlot() > -1;
|
||||
}
|
||||
|
||||
public boolean hasEmptySlot(byte invType) {
|
||||
@@ -5767,7 +5772,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
}
|
||||
if (possesed > 0) {
|
||||
message("You have used a safety charm, so your EXP points have not been decreased.");
|
||||
MapleInventoryManipulator.removeById(client, ii.getInventoryType(charmID[i]), charmID[i], 1, true, false);
|
||||
MapleInventoryManipulator.removeById(client, ItemConstants.getInventoryType(charmID[i]), charmID[i], 1, true, false);
|
||||
} else if (mapid > 925020000 && mapid < 925030000) {
|
||||
this.dojoStage = 0;
|
||||
} else if (mapid > 980000100 && mapid < 980000700) {
|
||||
|
||||
@@ -345,7 +345,7 @@ public class Commands {
|
||||
public static boolean executeHeavenMsCommandLv0(Channel cserv, Server srv, MapleClient c, String[] sub) { //Player
|
||||
MapleCharacter player = c.getPlayer();
|
||||
|
||||
switch(sub[0]) {
|
||||
switch(sub[0]) {
|
||||
case "help":
|
||||
case "commands":
|
||||
case "playercommands":
|
||||
@@ -1158,7 +1158,7 @@ public class Commands {
|
||||
MapleInventoryManipulator.addById(c, itemId, quantity, player.getName(), -1, flag, -1);
|
||||
} else {
|
||||
Item toDrop;
|
||||
if (MapleItemInformationProvider.getInstance().getInventoryType(itemId) == MapleInventoryType.EQUIP) {
|
||||
if (ItemConstants.getInventoryType(itemId) == MapleInventoryType.EQUIP) {
|
||||
toDrop = MapleItemInformationProvider.getInstance().getEquipById(itemId);
|
||||
} else {
|
||||
toDrop = new Item(itemId, (short) 0, quantity);
|
||||
@@ -1813,6 +1813,10 @@ public class Commands {
|
||||
}
|
||||
break;
|
||||
|
||||
case "energy":
|
||||
System.out.println(c.getPlayer().getDojoEnergy());
|
||||
break;
|
||||
|
||||
case "maxenergy":
|
||||
c.getPlayer().setDojoEnergy(10000);
|
||||
c.announce(MaplePacketCreator.getEnergy("energy", 10000));
|
||||
@@ -2162,7 +2166,7 @@ public class Commands {
|
||||
short multiply = Short.parseShort(sub[2]);
|
||||
|
||||
MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
|
||||
MapleInventoryType type = ii.getInventoryType(itemid);
|
||||
MapleInventoryType type = ItemConstants.getInventoryType(itemid);
|
||||
if (type.equals(MapleInventoryType.EQUIP)) {
|
||||
Item it = ii.getEquipById(itemid);
|
||||
it.setOwner(player.getName());
|
||||
|
||||
@@ -120,10 +120,10 @@ public class Equip extends Item {
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte getType() {
|
||||
public byte getItemType() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
public byte getUpgradeSlots() {
|
||||
return upgradeSlots;
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package client.inventory;
|
||||
|
||||
import constants.ItemConstants;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
@@ -93,7 +94,11 @@ public class Item implements Comparable<Item> {
|
||||
return quantity;
|
||||
}
|
||||
|
||||
public byte getType() {
|
||||
public MapleInventoryType getInventoryType() {
|
||||
return ItemConstants.getInventoryType(id);
|
||||
}
|
||||
|
||||
public byte getItemType() { // 1: equip, 3: pet, 2: other
|
||||
if (getPetId() > -1) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ public enum ItemFactory {
|
||||
items.add(new Pair<>(item, mit));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
rs.close();
|
||||
ps.close();
|
||||
con.close();
|
||||
|
||||
@@ -367,7 +367,7 @@ public class MapleInventory implements Iterable<Item> {
|
||||
}
|
||||
|
||||
public static boolean checkSpot(MapleCharacter chr, Item item) {
|
||||
if (chr.getInventory(MapleInventoryType.getByType(item.getType())).isFull()) return false;
|
||||
if (chr.getInventory(item.getInventoryType()).isFull()) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -437,7 +437,7 @@ public class MapleInventory implements Iterable<Item> {
|
||||
}
|
||||
|
||||
public static boolean checkSpotsAndOwnership(MapleCharacter chr, List<Pair<Item, MapleInventoryType>> items, List<Integer> typesSlotsUsed) {
|
||||
// assumption: no "UNDEFINED" or "EQUIPPED" items shall be tested here, all counts are >= 0.
|
||||
//assumption: no "UNDEFINED" or "EQUIPPED" items shall be tested here, all counts are >= 0 and item list to be checked is a legal one.
|
||||
|
||||
Map<Long, Short> rcvItems = new LinkedHashMap<>();
|
||||
Map<Long, Byte> rcvTypes = new LinkedHashMap<>();
|
||||
@@ -493,7 +493,7 @@ public class MapleInventory implements Iterable<Item> {
|
||||
boolean isRing = false;
|
||||
Equip equip = null;
|
||||
for (Item item : list()) {
|
||||
if (item.getType() == MapleInventoryType.EQUIP.getType()) {
|
||||
if (item.getInventoryType().equals(MapleInventoryType.EQUIP)) {
|
||||
equip = (Equip) item;
|
||||
isRing = equip.getRingId() > -1;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package client.inventory;
|
||||
|
||||
import constants.ItemConstants;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author kevin
|
||||
@@ -28,7 +26,7 @@ public class ModifyInventory {
|
||||
}
|
||||
|
||||
public final int getInventoryType() {
|
||||
return ItemConstants.getInventoryType(item.getItemId()).getType();
|
||||
return item.getInventoryType().type;
|
||||
}
|
||||
|
||||
public final short getPosition() {
|
||||
|
||||
Reference in New Issue
Block a user