Turn item id magic numbers into constants

This commit is contained in:
P0nk
2021-11-07 11:38:32 +01:00
parent a4c079c2e8
commit 4efd356cbf
50 changed files with 790 additions and 346 deletions

View File

@@ -28,6 +28,7 @@ import client.status.MonsterStatus;
import client.status.MonsterStatusEffect;
import config.YamlConfig;
import constants.game.GameConstants;
import constants.id.ItemId;
import constants.skills.*;
import net.AbstractPacketHandler;
import net.packet.InPacket;
@@ -439,19 +440,11 @@ public abstract class AbstractDealDamageHandler extends AbstractPacketHandler {
if (skillLv > 0) {
AbstractPlayerInteraction api = player.getAbstractPlayerInteraction();
int shellId;
switch (skillLv) {
case 1:
shellId = 4000019;
break;
case 2:
shellId = 4000000;
break;
default:
shellId = 4000016;
}
int shellId = switch (skillLv) {
case 1 -> ItemId.SNAIL_SHELL;
case 2 -> ItemId.BLUE_SNAIL_SHELL;
default -> ItemId.RED_SNAIL_SHELL;
};
if (api.haveItem(shellId, 1)) {
api.gainItem(shellId, (short) -1, false);

View File

@@ -30,6 +30,7 @@ import client.inventory.InventoryType;
import client.inventory.Item;
import client.inventory.manipulator.InventoryManipulator;
import config.YamlConfig;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import net.AbstractPacketHandler;
import net.packet.InPacket;
@@ -293,7 +294,7 @@ public final class CashOperationHandler extends AbstractPacketHandler {
chr.getClient().sendPacket(PacketCreator.serverNotice(1, "You cannot put the pet you currently equip into the Cash Shop inventory."));
c.enableCSActions();
return;
} else if (ItemConstants.isWeddingRing(item.getItemId()) || ItemConstants.isWeddingToken(item.getItemId())) {
} else if (ItemId.isWeddingRing(item.getItemId()) || ItemId.isWeddingToken(item.getItemId())) {
chr.getClient().sendPacket(PacketCreator.serverNotice(1, "You cannot put relationship items into the Cash Shop inventory."));
c.enableCSActions();
return;

View File

@@ -25,6 +25,7 @@ import client.Character;
import client.Client;
import client.inventory.InventoryType;
import client.inventory.manipulator.InventoryManipulator;
import constants.id.ItemId;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import server.Trade;
@@ -91,11 +92,11 @@ public final class ChangeMapHandler extends AbstractPacketHandler {
if (targetid != -1) {
if (!chr.isAlive()) {
MapleMap map = chr.getMap();
if (wheel && chr.haveItemWithId(5510000, false)) {
if (wheel && chr.haveItemWithId(ItemId.WHEEL_OF_FORTUNE, false)) {
// thanks lucasziron (lziron) for showing revivePlayer() triggering by Wheel
InventoryManipulator.removeById(c, InventoryType.CASH, 5510000, 1, true, false);
chr.sendPacket(PacketCreator.showWheelsLeft(chr.getItemQuantity(5510000, false)));
InventoryManipulator.removeById(c, InventoryType.CASH, ItemId.WHEEL_OF_FORTUNE, 1, true, false);
chr.sendPacket(PacketCreator.showWheelsLeft(chr.getItemQuantity(ItemId.WHEEL_OF_FORTUNE, false)));
chr.updateHp(50);
chr.changeMap(map, map.findClosestPlayerSpawnpoint(chr.getPosition()));

View File

@@ -23,6 +23,7 @@ package net.server.channel.handlers;
import client.Character;
import client.Client;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import net.AbstractPacketHandler;
import net.packet.InPacket;
@@ -35,7 +36,7 @@ public final class FaceExpressionHandler extends AbstractPacketHandler {
if (emote > 7) {
int itemid = 5159992 + emote; // thanks RajanGrewal (Darter) for reporting unchecked emote itemid
if (!ItemConstants.isFaceExpression(itemid) || chr.getInventory(ItemConstants.getInventoryType(itemid)).findById(itemid) == null) {
if (!ItemId.isFaceExpression(itemid) || chr.getInventory(ItemConstants.getInventoryType(itemid)).findById(itemid) == null) {
return;
}
} else if (emote < 1) {

View File

@@ -23,6 +23,7 @@ import client.Character;
import client.Client;
import client.inventory.Item;
import client.newyear.NewYearCardRecord;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import net.AbstractPacketHandler;
import net.packet.InPacket;
@@ -48,13 +49,13 @@ public final class NewYearCardHandler extends AbstractPacketHandler {
byte reqMode = p.readByte(); //[00] -> NewYearReq (0 = Send)
if (reqMode == 0) { // card has been sent
if (player.haveItem(2160101)) { // new year's card
if (player.haveItem(ItemId.NEW_YEARS_CARD)) { // new year's card
short slot = p.readShort(); //[00 2C] -> nPOS (Item Slot Pos)
int itemid = p.readInt(); //[00 20 F5 E5] -> nItemID (item id)
int status = getValidNewYearCardStatus(itemid, player, slot);
if (status == 0) {
if (player.canHold(4300000, 1)) {
if (player.canHold(ItemId.NEW_YEARS_CARD_SEND, 1)) {
String receiver = p.readString(); //[04 00 54 65 73 74] -> sReceiverName (person to send to)
int receiverid = getReceiverId(receiver, c.getWorld());
@@ -66,8 +67,8 @@ public final class NewYearCardHandler extends AbstractPacketHandler {
NewYearCardRecord.saveNewYearCard(newyear);
player.addNewYearRecord(newyear);
player.getAbstractPlayerInteraction().gainItem(2160101, (short) -1);
player.getAbstractPlayerInteraction().gainItem(4300000, (short) 1);
player.getAbstractPlayerInteraction().gainItem(ItemId.NEW_YEARS_CARD, (short) -1);
player.getAbstractPlayerInteraction().gainItem(ItemId.NEW_YEARS_CARD_SEND, (short) 1);
Server.getInstance().setNewYearCard(newyear);
newyear.startNewYearCardTask();
@@ -94,11 +95,11 @@ public final class NewYearCardHandler extends AbstractPacketHandler {
if (newyear != null && newyear.getReceiverId() == player.getId() && !newyear.isReceiverCardReceived()) {
if (!newyear.isSenderCardDiscarded()) {
if (player.canHold(4301000, 1)) {
if (player.canHold(ItemId.NEW_YEARS_CARD_RECEIVED, 1)) {
newyear.stopNewYearCardTask();
NewYearCardRecord.updateNewYearCard(newyear);
player.getAbstractPlayerInteraction().gainItem(4301000, (short) 1);
player.getAbstractPlayerInteraction().gainItem(ItemId.NEW_YEARS_CARD_RECEIVED, (short) 1);
if (!newyear.getMessage().isEmpty()) {
player.dropMessage(6, "[New Year] " + newyear.getSenderName() + ": " + newyear.getMessage());
}

View File

@@ -31,6 +31,7 @@ import client.inventory.manipulator.InventoryManipulator;
import client.inventory.manipulator.KarmaManipulator;
import config.YamlConfig;
import constants.game.GameConstants;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import net.AbstractPacketHandler;
import net.packet.InPacket;
@@ -168,7 +169,7 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler {
} else if (type < 0) {
type = 0;
}
if (!chr.haveItem(4080000 + type)) {
if (!chr.haveItem(ItemId.MINI_GAME_BASE + type)) {
chr.sendPacket(PacketCreator.getMiniRoomError(6));
return;
}
@@ -202,7 +203,7 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler {
} else if (type < 0) {
type = 0;
}
if (!chr.haveItem(4080100)) {
if (!chr.haveItem(ItemId.MATCH_CARDS)) {
chr.sendPacket(PacketCreator.getMiniRoomError(6));
return;
}

View File

@@ -30,6 +30,7 @@ import client.inventory.WeaponType;
import client.inventory.manipulator.InventoryManipulator;
import config.YamlConfig;
import constants.game.GameConstants;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import constants.skills.*;
import net.packet.InPacket;
@@ -136,15 +137,15 @@ public final class RangedAttackHandler extends AbstractDealDamageHandler {
boolean bow = ItemConstants.isArrowForBow(id);
boolean cbow = ItemConstants.isArrowForCrossBow(id);
if (item.getQuantity() >= bulletCount) { //Fixes the bug where you can't use your last arrow.
if (type == WeaponType.CLAW && ItemConstants.isThrowingStar(id) && weapon.getItemId() != 1472063) {
if (((id == 2070007 || id == 2070018) && chr.getLevel() < 70) || (id == 2070016 && chr.getLevel() < 50)) {
if (type == WeaponType.CLAW && ItemConstants.isThrowingStar(id) && weapon.getItemId() != ItemId.MAGICAL_MITTEN) {
if (((id == ItemId.HWABI_THROWING_STARS || id == ItemId.BALANCED_FURY) && chr.getLevel() < 70) || (id == ItemId.CRYSTAL_ILBI_THROWING_STARS && chr.getLevel() < 50)) {
} else {
projectile = id;
break;
}
} else if ((type == WeaponType.GUN && ItemConstants.isBullet(id))) {
if (id == 2331000 && id == 2332000) {
if (chr.getLevel() > 69) {
if (id == ItemId.BLAZE_CAPSULE || id == ItemId.GLAZE_CAPSULE) {
if (chr.getLevel() >= 70) {
projectile = id;
break;
}
@@ -152,7 +153,7 @@ public final class RangedAttackHandler extends AbstractDealDamageHandler {
projectile = id;
break;
}
} else if ((type == WeaponType.BOW && bow) || (type == WeaponType.CROSSBOW && cbow) || (weapon.getItemId() == 1472063 && (bow || cbow))) {
} else if ((type == WeaponType.BOW && bow) || (type == WeaponType.CROSSBOW && cbow) || (weapon.getItemId() == ItemId.MAGICAL_MITTEN && (bow || cbow))) {
projectile = id;
break;
}

View File

@@ -23,6 +23,7 @@ package net.server.channel.handlers;
import client.Client;
import client.autoban.AutobanFactory;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import net.AbstractPacketHandler;
import net.packet.InPacket;
@@ -36,7 +37,7 @@ public final class RemoteGachaponHandler extends AbstractPacketHandler {
public final void handlePacket(InPacket p, Client c) {
int ticket = p.readInt();
int gacha = p.readInt();
if (ticket != 5451000) {
if (ticket != ItemId.REMOTE_GACHAPON_TICKET) {
AutobanFactory.GENERAL.alert(c.getPlayer(), " Tried to use RemoteGachaponHandler with item id: " + ticket);
c.disconnect(false, false);
return;

View File

@@ -29,6 +29,7 @@ import client.inventory.InventoryType;
import client.inventory.Item;
import client.inventory.manipulator.InventoryManipulator;
import client.processor.npc.DueyProcessor;
import constants.id.ItemId;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import net.server.channel.Channel;
@@ -51,12 +52,19 @@ import java.sql.SQLException;
* @author Drago (Dragohe4rt) - on Wishlist
*/
public final class RingActionHandler extends AbstractPacketHandler {
private static int getBoxId(int useItemId) {
return useItemId == 2240000 ? 4031357 : (useItemId == 2240001 ? 4031359 : (useItemId == 2240002 ? 4031361 : (useItemId == 2240003 ? 4031363 : (1112300 + (useItemId - 2240004)))));
private static int getEngagementBoxId(int useItemId) {
return switch (useItemId) {
case ItemId.ENGAGEMENT_BOX_MOONSTONE -> ItemId.EMPTY_ENGAGEMENT_BOX_MOONSTONE;
case ItemId.ENGAGEMENT_BOX_STAR -> ItemId.EMPTY_ENGAGEMENT_BOX_STAR;
case ItemId.ENGAGEMENT_BOX_GOLDEN -> ItemId.EMPTY_ENGAGEMENT_BOX_GOLDEN;
case ItemId.ENGAGEMENT_BOX_SILVER -> ItemId.EMPTY_ENGAGEMENT_BOX_SILVER;
default -> ItemId.CARAT_RING_BASE + (useItemId - ItemId.CARAT_RING_BOX_BASE);
};
}
public static void sendEngageProposal(final Client c, final String name, final int itemid) {
final int newBoxId = getBoxId(itemid);
final int newBoxId = getEngagementBoxId(itemid);
final Character target = c.getChannelServer().getPlayerStorage().getCharacterByName(name);
final Character source = c.getPlayer();
@@ -93,7 +101,7 @@ public final class RingActionHandler extends AbstractPacketHandler {
source.dropMessage(1, "Make sure your partner is on the same map!");
source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0));
return;
} else if (!source.haveItem(itemid) || itemid < 2240000 || itemid > 2240015) {
} else if (!source.haveItem(itemid) || itemid < ItemId.ENGAGEMENT_BOX_MIN || itemid > ItemId.ENGAGEMENT_BOX_MAX) {
source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0));
return;
} else if (target.isMarried()) {
@@ -328,7 +336,7 @@ public final class RingActionHandler extends AbstractPacketHandler {
}
if (accepted) {
final int newItemId = getBoxId(itemid);
final int newItemId = getEngagementBoxId(itemid);
if (!InventoryManipulator.checkSpace(c, newItemId, 1, "") || !InventoryManipulator.checkSpace(source.getClient(), newItemId, 1, "")) {
target.sendPacket(PacketCreator.enableActions());
return;
@@ -380,7 +388,7 @@ public final class RingActionHandler extends AbstractPacketHandler {
return;
}
if ((itemId != 4031377 && itemId != 4031395) || !c.getPlayer().haveItem(itemId)) {
if ((itemId != ItemId.INVITATION_CHAPEL && itemId != ItemId.INVITATION_CATHEDRAL) || !c.getPlayer().haveItem(itemId)) {
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -399,7 +407,7 @@ public final class RingActionHandler extends AbstractPacketHandler {
if (registration != null) {
if (wserv.addMarriageGuest(marriageId, guest)) {
boolean cathedral = registration.getLeft();
int newItemId = cathedral ? 4031407 : 4031406;
int newItemId = cathedral ? ItemId.RECEIVED_INVITATION_CATHEDRAL : ItemId.RECEIVED_INVITATION_CHAPEL;
Channel cserv = c.getChannelServer();
int resStatus = cserv.getWeddingReservationStatus(marriageId, cathedral);
@@ -443,7 +451,7 @@ public final class RingActionHandler extends AbstractPacketHandler {
slot = (byte) p.readInt();
int invitationid = p.readInt();
if (invitationid == 4031406 || invitationid == 4031407) {
if (invitationid == ItemId.RECEIVED_INVITATION_CHAPEL || invitationid == ItemId.RECEIVED_INVITATION_CATHEDRAL) {
Item item = c.getPlayer().getInventory(InventoryType.ETC).getItem(slot);
if (item == null || item.getItemId() != invitationid) {
c.sendPacket(PacketCreator.enableActions());
@@ -451,7 +459,7 @@ public final class RingActionHandler extends AbstractPacketHandler {
}
// collision case: most soon-to-come wedding will show up
Pair<Integer, Integer> coupleId = c.getWorldServer().getWeddingCoupleForGuest(c.getPlayer().getId(), invitationid == 4031407);
Pair<Integer, Integer> coupleId = c.getWorldServer().getWeddingCoupleForGuest(c.getPlayer().getId(), invitationid == ItemId.RECEIVED_INVITATION_CATHEDRAL);
if (coupleId != null) {
int groomId = coupleId.getLeft(), brideId = coupleId.getRight();
c.sendPacket(WeddingPackets.sendWeddingInvitation(Character.getNameById(groomId), Character.getNameById(brideId)));

View File

@@ -28,6 +28,7 @@ import client.SkillFactory;
import client.inventory.*;
import client.inventory.Equip.ScrollResult;
import client.inventory.manipulator.InventoryManipulator;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import net.AbstractPacketHandler;
import net.packet.InPacket;
@@ -89,7 +90,7 @@ public final class ScrollHandler extends AbstractPacketHandler {
return;
}
if (whiteScroll) {
wscroll = useInventory.findById(2340000);
wscroll = useInventory.findById(ItemId.WHITE_SCROLL);
if (wscroll == null) {
whiteScroll = false;
}
@@ -138,7 +139,7 @@ public final class ScrollHandler extends AbstractPacketHandler {
final List<ModifyInventory> mods = new ArrayList<>();
if (scrollSuccess == Equip.ScrollResult.CURSE) {
if (!ItemConstants.isWeddingRing(toScroll.getItemId())) {
if (!ItemId.isWeddingRing(toScroll.getItemId())) {
mods.add(new ModifyInventory(3, toScroll));
if (dst < 0) {
Inventory inv = chr.getInventory(InventoryType.EQUIPPED);
@@ -195,7 +196,8 @@ public final class ScrollHandler extends AbstractPacketHandler {
switch (sid) {
case 20492: //scroll for accessory (pendant, belt, ring)
return canScroll(2041100, itemid) || canScroll(2041200, itemid) || canScroll(2041300, itemid);
return canScroll(ItemId.RING_STR_100_SCROLL, itemid) || canScroll(ItemId.DRAGON_STONE_SCROLL, itemid) ||
canScroll(ItemId.BELT_STR_100_SCROLL, itemid);
default:
return (scrollid / 100) % 100 == (itemid / 10000) % 100;

View File

@@ -33,6 +33,7 @@ import client.processor.stat.AssignAPProcessor;
import client.processor.stat.AssignSPProcessor;
import config.YamlConfig;
import constants.game.GameConstants;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import net.AbstractPacketHandler;
import net.packet.InPacket;
@@ -145,7 +146,7 @@ public final class UseCashItemHandler extends AbstractPacketHandler {
return;
}
if (itemId > 5050000) {
if (itemId > ItemId.AP_RESET) {
int SPTo = p.readInt();
if (!AssignSPProcessor.canSPAssign(c, SPTo)) { // exploit found thanks to Arnah
return;
@@ -452,15 +453,15 @@ public final class UseCashItemHandler extends AbstractPacketHandler {
} else if (itemType == 540) {
p.readByte();
p.readInt();
if (itemId == 5400000) { //name change
if (itemId == ItemId.NAME_CHANGE) {
c.sendPacket(PacketCreator.showNameChangeCancel(player.cancelPendingNameChange()));
} else if (itemId == 5401000) { //world transfer
} else if (itemId == ItemId.WORLD_TRANSFER) {
c.sendPacket(PacketCreator.showWorldTransferCancel(player.cancelPendingWorldTranfer()));
}
remove(c, position, itemId);
c.sendPacket(PacketCreator.enableActions());
} else if (itemType == 543) {
if (itemId == 5432000 && !c.gainCharacterSlot()) {
if (itemId == ItemId.MAPLE_LIFE_B && !c.gainCharacterSlot()) {
player.dropMessage(1, "You have already used up all 12 extra character slots.");
c.sendPacket(PacketCreator.enableActions());
return;
@@ -527,7 +528,7 @@ public final class UseCashItemHandler extends AbstractPacketHandler {
int itemSlot = p.readInt();
p.readInt();
final Equip equip = (Equip) player.getInventory(InventoryType.EQUIP).getItem((short) itemSlot);
if (equip.getVicious() >= 2 || player.getInventory(InventoryType.CASH).findById(5570000) == null) {
if (equip.getVicious() >= 2 || player.getInventory(InventoryType.CASH).findById(ItemId.VICIOUS_HAMMER) == null) {
return;
}
equip.setVicious(equip.getVicious() + 1);

View File

@@ -26,6 +26,7 @@ import client.Client;
import client.autoban.AutobanManager;
import client.inventory.InventoryType;
import client.inventory.manipulator.InventoryManipulator;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import net.AbstractPacketHandler;
import net.packet.InPacket;
@@ -56,23 +57,23 @@ public final class UseCatchItemHandler extends AbstractPacketHandler {
return;
}
switch (itemId) {
case 2270000:
case ItemId.PHEROMONE_PERFUME:
if (mob.getId() == 9300101) {
chr.getMap().broadcastMessage(PacketCreator.catchMonster(monsterid, itemId, (byte) 1));
mob.getMap().killMonster(mob, null, false);
InventoryManipulator.removeById(c, InventoryType.USE, itemId, 1, true, true);
InventoryManipulator.addById(c, 1902000, (short) 1, "", -1);
InventoryManipulator.addById(c, ItemId.HOG, (short) 1, "", -1);
}
c.sendPacket(PacketCreator.enableActions());
break;
case 2270001:
case ItemId.POUCH:
if (mob.getId() == 9500197) {
if ((abm.getLastSpam(10) + 1000) < currentServerTime()) {
if (mob.getHp() < ((mob.getMaxHp() / 10) * 4)) {
chr.getMap().broadcastMessage(PacketCreator.catchMonster(monsterid, itemId, (byte) 1));
mob.getMap().killMonster(mob, null, false);
InventoryManipulator.removeById(c, InventoryType.USE, itemId, 1, true, true);
InventoryManipulator.addById(c, 4031830, (short) 1, "", -1);
InventoryManipulator.addById(c, ItemId.GHOST_SACK, (short) 1, "", -1);
} else {
abm.spam(10);
c.sendPacket(PacketCreator.catchMessage(0));
@@ -81,16 +82,16 @@ public final class UseCatchItemHandler extends AbstractPacketHandler {
c.sendPacket(PacketCreator.enableActions());
}
break;
case 2270002:
case ItemId.ARPQ_ELEMENT_ROCK:
if (mob.getId() == 9300157) {
if ((abm.getLastSpam(10) + 800) < currentServerTime()) {
if (mob.getHp() < ((mob.getMaxHp() / 10) * 4)) {
if (chr.canHold(4031868, 1)) {
if (chr.canHold(ItemId.ARPQ_SPIRIT_JEWEL, 1)) {
if (Math.random() < 0.5) { // 50% chance
chr.getMap().broadcastMessage(PacketCreator.catchMonster(monsterid, itemId, (byte) 1));
mob.getMap().killMonster(mob, null, false);
InventoryManipulator.removeById(c, InventoryType.USE, itemId, 1, true, true);
InventoryManipulator.addById(c, 4031868, (short) 1, "", -1);
InventoryManipulator.addById(c, ItemId.ARPQ_SPIRIT_JEWEL, (short) 1, "", -1);
} else {
chr.getMap().broadcastMessage(PacketCreator.catchMonster(monsterid, itemId, (byte) 0));
}
@@ -106,79 +107,79 @@ public final class UseCatchItemHandler extends AbstractPacketHandler {
c.sendPacket(PacketCreator.enableActions());
}
break;
case 2270003:
case ItemId.MAGIC_CANE:
if (mob.getId() == 9500320) {
if (mob.getHp() < ((mob.getMaxHp() / 10) * 4)) {
chr.getMap().broadcastMessage(PacketCreator.catchMonster(monsterid, itemId, (byte) 1));
mob.getMap().killMonster(mob, null, false);
InventoryManipulator.removeById(c, InventoryType.USE, itemId, 1, true, true);
InventoryManipulator.addById(c, 4031887, (short) 1, "", -1);
InventoryManipulator.addById(c, ItemId.TAMED_RUDOLPH, (short) 1, "", -1);
} else {
c.sendPacket(PacketCreator.catchMessage(0));
}
}
c.sendPacket(PacketCreator.enableActions());
break;
case 2270005:
case ItemId.TRANSPARENT_MARBLE_1:
if (mob.getId() == 9300187) {
if (mob.getHp() < ((mob.getMaxHp() / 10) * 3)) {
chr.getMap().broadcastMessage(PacketCreator.catchMonster(monsterid, itemId, (byte) 1));
mob.getMap().killMonster(mob, null, false);
InventoryManipulator.removeById(c, InventoryType.USE, itemId, 1, true, true);
InventoryManipulator.addById(c, 2109001, (short) 1, "", -1);
InventoryManipulator.addById(c, ItemId.MONSTER_MARBLE_1, (short) 1, "", -1);
} else {
c.sendPacket(PacketCreator.catchMessage(0));
}
}
c.sendPacket(PacketCreator.enableActions());
break;
case 2270006:
case ItemId.TRANSPARENT_MARBLE_2:
if (mob.getId() == 9300189) {
if (mob.getHp() < ((mob.getMaxHp() / 10) * 3)) {
chr.getMap().broadcastMessage(PacketCreator.catchMonster(monsterid, itemId, (byte) 1));
mob.getMap().killMonster(mob, null, false);
InventoryManipulator.removeById(c, InventoryType.USE, itemId, 1, true, true);
InventoryManipulator.addById(c, 2109002, (short) 1, "", -1);
InventoryManipulator.addById(c, ItemId.MONSTER_MARBLE_2, (short) 1, "", -1);
} else {
c.sendPacket(PacketCreator.catchMessage(0));
}
}
c.sendPacket(PacketCreator.enableActions());
break;
case 2270007:
case ItemId.TRANSPARENT_MARBLE_3:
if (mob.getId() == 9300191) {
if (mob.getHp() < ((mob.getMaxHp() / 10) * 3)) {
chr.getMap().broadcastMessage(PacketCreator.catchMonster(monsterid, itemId, (byte) 1));
mob.getMap().killMonster(mob, null, false);
InventoryManipulator.removeById(c, InventoryType.USE, itemId, 1, true, true);
InventoryManipulator.addById(c, 2109003, (short) 1, "", -1);
InventoryManipulator.addById(c, ItemId.MONSTER_MARBLE_3, (short) 1, "", -1);
} else {
c.sendPacket(PacketCreator.catchMessage(0));
}
}
c.sendPacket(PacketCreator.enableActions());
break;
case 2270004:
case ItemId.EPQ_PURIFICATION_MARBLE:
if (mob.getId() == 9300175) {
if (mob.getHp() < ((mob.getMaxHp() / 10) * 4)) {
chr.getMap().broadcastMessage(PacketCreator.catchMonster(monsterid, itemId, (byte) 1));
mob.getMap().killMonster(mob, null, false);
InventoryManipulator.removeById(c, InventoryType.USE, itemId, 1, true, true);
InventoryManipulator.addById(c, 4001169, (short) 1, "", -1);
InventoryManipulator.addById(c, ItemId.EPQ_MONSTER_MARBLE, (short) 1, "", -1);
} else {
c.sendPacket(PacketCreator.catchMessage(0));
}
}
c.sendPacket(PacketCreator.enableActions());
break;
case 2270008:
case ItemId.FISH_NET:
if (mob.getId() == 9500336) {
if ((abm.getLastSpam(10) + 3000) < currentServerTime()) {
abm.spam(10);
chr.getMap().broadcastMessage(PacketCreator.catchMonster(monsterid, itemId, (byte) 1));
mob.getMap().killMonster(mob, null, false);
InventoryManipulator.removeById(c, InventoryType.USE, itemId, 1, true, true);
InventoryManipulator.addById(c, 2022323, (short) 1, "", -1);
InventoryManipulator.addById(c, ItemId.FISH_NET_WITH_A_CATCH, (short) 1, "", -1);
} else {
chr.message("You cannot use the Fishing Net yet.");
}

View File

@@ -23,7 +23,7 @@ package net.server.channel.handlers;
import client.Client;
import client.inventory.InventoryType;
import constants.inventory.ItemConstants;
import constants.id.ItemId;
import net.AbstractPacketHandler;
import net.packet.InPacket;
@@ -33,7 +33,7 @@ public final class UseChairHandler extends AbstractPacketHandler {
int itemId = p.readInt();
// thanks Darter (YungMoozi) for reporting unchecked chair item
if (!ItemConstants.isChair(itemId) || c.getPlayer().getInventory(InventoryType.SETUP).findById(itemId) == null) {
if (!ItemId.isChair(itemId) || c.getPlayer().getInventory(InventoryType.SETUP).findById(itemId) == null) {
return;
}

View File

@@ -24,6 +24,7 @@ package net.server.channel.handlers;
import client.Client;
import client.inventory.InventoryType;
import client.inventory.Item;
import constants.id.ItemId;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import tools.PacketCreator;
@@ -33,7 +34,7 @@ public final class UseItemEffectHandler extends AbstractPacketHandler {
public final void handlePacket(InPacket p, Client c) {
Item toUse;
int itemId = p.readInt();
if (itemId == 4290001 || itemId == 4290000) {
if (itemId == ItemId.BUMMER_EFFECT || itemId == ItemId.GOLDEN_CHICKEN_EFFECT) {
toUse = c.getPlayer().getInventory(InventoryType.ETC).findById(itemId);
} else {
toUse = c.getPlayer().getInventory(InventoryType.CASH).findById(itemId);

View File

@@ -28,6 +28,7 @@ import client.inventory.InventoryType;
import client.inventory.Item;
import client.inventory.manipulator.InventoryManipulator;
import config.YamlConfig;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import net.AbstractPacketHandler;
import net.packet.InPacket;
@@ -53,20 +54,20 @@ public final class UseItemHandler extends AbstractPacketHandler {
int itemId = p.readInt();
Item toUse = chr.getInventory(InventoryType.USE).getItem(slot);
if (toUse != null && toUse.getQuantity() > 0 && toUse.getItemId() == itemId) {
if (itemId == 2050004) {
if (itemId == ItemId.ALL_CURE_POTION) {
chr.dispelDebuffs();
remove(c, slot);
return;
} else if (itemId == 2050001) {
} else if (itemId == ItemId.EYEDROP) {
chr.dispelDebuff(Disease.DARKNESS);
remove(c, slot);
return;
} else if (itemId == 2050002) {
} else if (itemId == ItemId.TONIC) {
chr.dispelDebuff(Disease.WEAKEN);
chr.dispelDebuff(Disease.SLOW);
remove(c, slot);
return;
} else if (itemId == 2050003) {
} else if (itemId == ItemId.HOLY_WATER) {
chr.dispelDebuff(Disease.SEAL);
chr.dispelDebuff(Disease.CURSE);
remove(c, slot);
@@ -95,7 +96,7 @@ public final class UseItemHandler extends AbstractPacketHandler {
remove(c, slot);
if (toUse.getItemId() != 2022153) {
if (toUse.getItemId() != ItemId.HAPPY_BIRTHDAY) {
ii.getItemEffect(toUse.getItemId()).applyTo(chr);
} else {
StatEffect mse = ii.getItemEffect(toUse.getItemId());

View File

@@ -20,7 +20,7 @@
package net.server.channel.handlers;
import client.Client;
import constants.game.GameConstants;
import constants.id.ItemId;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import tools.PacketCreator;
@@ -43,8 +43,8 @@ public final class UseOwlOfMinervaHandler extends AbstractPacketHandler {
if (owlSearched.size() < 5) {
owlLeaderboards = new LinkedList<>();
for (int i : GameConstants.OWL_DATA) {
owlLeaderboards.add(i);
for (int itemId : ItemId.getOwlItems()) {
owlLeaderboards.add(itemId);
}
} else {
// descending order

View File

@@ -25,6 +25,7 @@ import client.Client;
import client.creator.novice.BeginnerCreator;
import client.creator.novice.LegendCreator;
import client.creator.novice.NoblesseCreator;
import constants.id.ItemId;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import tools.FilePrinter;
@@ -36,12 +37,19 @@ import java.util.Set;
public final class CreateCharHandler extends AbstractPacketHandler {
private final static Set<Integer> IDs = new HashSet<>(Arrays.asList(1302000, 1312004, 1322005, 1442079,// weapons
1040002, 1040006, 1040010, 1041002, 1041006, 1041010, 1041011, 1042167,// bottom
1060002, 1060006, 1061002, 1061008, 1062115, // top
1072001, 1072005, 1072037, 1072038, 1072383,// shoes
30000, 30010, 30020, 30030, 31000, 31040, 31050,// hair
20000, 20001, 20002, 21000, 21001, 21002, 21201, 20401, 20402, 21700, 20100 //face
private final static Set<Integer> IDs = new HashSet<>(Arrays.asList(
ItemId.SWORD, ItemId.HAND_AXE, ItemId.WOODEN_CLUB, ItemId.BASIC_POLEARM,// weapons
ItemId.WHITE_UNDERSHIRT, ItemId.UNDERSHIRT, ItemId.GREY_TSHIRT, ItemId.WHITE_TUBETOP, ItemId.YELLOW_TSHIRT,
ItemId.GREEN_TSHIRT, ItemId.RED_STRIPED_TOP, ItemId.SIMPLE_WARRIOR_TOP,// bottom
ItemId.BLUE_JEAN_SHORTS, ItemId.BROWN_COTTON_SHORTS, ItemId.RED_MINISKIRT, ItemId.INDIGO_MINISKIRT,
ItemId.SIMPLE_WARRIOR_PANTS, // top
ItemId.RED_RUBBER_BOOTS, ItemId.LEATHER_SANDALS, ItemId.YELLOW_RUBBER_BOOTS, ItemId.BLUE_RUBBER_BOOTS,
ItemId.AVERAGE_MUSASHI_SHOES,// shoes
ItemId.BLACK_TOBEN, ItemId.ZETA, ItemId.BLACK_REBEL, ItemId.BLACK_BUZZ, ItemId.BLACK_SAMMY,
ItemId.BLACK_EDGY, ItemId.BLACK_CONNIE,// hair
ItemId.MOTIVATED_LOOK_M, ItemId.PERPLEXED_STARE, ItemId.LEISURE_LOOK_M, ItemId.MOTIVATED_LOOK_F,
ItemId.FEARFUL_STARE_M, ItemId.LEISURE_LOOK_F, ItemId.FEARFUL_STARE_F, ItemId.PERPLEXED_STARE_HAZEL,
ItemId.LEISURE_LOOK_HAZEL, ItemId.MOTIVATED_LOOK_AMETHYST, ItemId.MOTIVATED_LOOK_BLUE //face
//#NeverTrustStevenCode
));