Turn item id magic numbers into constants

This commit is contained in:
P0nk
2021-11-07 11:39:09 +01:00
parent a4c079c2e8
commit 4efd356cbf
50 changed files with 790 additions and 346 deletions
+32 -28
View File
@@ -36,6 +36,7 @@ import client.processor.npc.FredrickProcessor;
import config.YamlConfig;
import constants.game.ExpTable;
import constants.game.GameConstants;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import constants.skills.*;
import net.packet.Packet;
@@ -1879,7 +1880,7 @@ public class Character extends AbstractCharacterObject {
if (ItemConstants.isPartyItem(itemid)) {
List<Character> pchr = this.getPartyMembersOnSameMap();
if (!ItemConstants.isPartyAllcure(itemid)) {
if (!ItemId.isPartyAllCure(itemid)) {
StatEffect mse = ii.getItemEffect(itemid);
if (!pchr.isEmpty()) {
@@ -1946,7 +1947,7 @@ public class Character extends AbstractCharacterObject {
Item mItem = mapitem.getItem();
boolean hasSpaceInventory = true;
if (mapitem.getItemId() == 4031865 || mapitem.getItemId() == 4031866 || mapitem.getMeso() > 0 || ii.isConsumeOnPickup(mapitem.getItemId()) || (hasSpaceInventory = InventoryManipulator.checkSpace(client, mapitem.getItemId(), mItem.getQuantity(), mItem.getOwner()))) {
if (ItemId.isNxCard(mapitem.getItemId()) || mapitem.getMeso() > 0 || ii.isConsumeOnPickup(mapitem.getItemId()) || (hasSpaceInventory = InventoryManipulator.checkSpace(client, mapitem.getItemId(), mItem.getQuantity(), mItem.getOwner()))) {
int mapId = this.getMapId();
if ((mapId > 209000000 && mapId < 209000016) || (mapId >= 990000500 && mapId <= 990000502)) {//happyville trees and guild PQ
@@ -1964,9 +1965,9 @@ public class Character extends AbstractCharacterObject {
}
this.getMap().pickItemDrop(pickupPacket, mapitem);
} else if (mapitem.getItemId() == 4031865 || mapitem.getItemId() == 4031866) {
} else if (ItemId.isNxCard(mapitem.getItemId())) {
// Add NX to account, show effect and make item disappear
int nxGain = mapitem.getItemId() == 4031865 ? 100 : 250;
int nxGain = mapitem.getItemId() == ItemId.NX_CARD_100 ? 100 : 250;
this.getCashShop().gainCash(1, nxGain);
showHint("You have earned #e#b" + nxGain + " NX#k#n. (" + this.getCashShop().getCash(1) + " NX)", 300);
@@ -2014,15 +2015,15 @@ public class Character extends AbstractCharacterObject {
return;
}
}
} else if (mapitem.getItemId() == 4031865 || mapitem.getItemId() == 4031866) {
} else if (ItemId.isNxCard(mapitem.getItemId())) {
// Add NX to account, show effect and make item disappear
int nxGain = mapitem.getItemId() == 4031865 ? 100 : 250;
int nxGain = mapitem.getItemId() == ItemId.NX_CARD_100 ? 100 : 250;
this.getCashShop().gainCash(1, nxGain);
showHint("You have earned #e#b" + nxGain + " NX#k#n. (" + this.getCashShop().getCash(1) + " NX)", 300);
} else if (applyConsumeOnPickup(mItem.getItemId())) {
} else if (InventoryManipulator.addFromDrop(client, mItem, true)) {
if (mItem.getItemId() == 4031868) {
if (mItem.getItemId() == ItemId.ARPQ_SPIRIT_JEWEL) {
updateAriantScore();
}
} else {
@@ -3252,7 +3253,7 @@ public class Character extends AbstractCharacterObject {
public void updateAriantScore(int dropQty) {
AriantColiseum arena = this.getAriantColiseum();
if (arena != null) {
arena.updateAriantScore(this, countItem(4031868));
arena.updateAriantScore(this, countItem(ItemId.ARPQ_SPIRIT_JEWEL));
if (dropQty > 0) {
arena.addLostShards(dropQty);
@@ -4311,7 +4312,7 @@ public class Character extends AbstractCharacterObject {
if (this.isRidingBattleship()) {
List<Pair<BuffStat, Integer>> statups = new ArrayList<>(1);
statups.add(new Pair<>(BuffStat.MONSTER_RIDING, 0));
this.sendPacket(PacketCreator.giveBuff(1932000, 5221006, statups));
this.sendPacket(PacketCreator.giveBuff(ItemId.BATTLESHIP, 5221006, statups));
this.announceBattleshipHp();
}
}
@@ -4358,9 +4359,9 @@ public class Character extends AbstractCharacterObject {
private static boolean isPriorityBuffSourceid(int sourceid) {
switch (sourceid) {
case -2022631:
case -2022632:
case -2022633:
case -ItemId.ROSE_SCENT:
case -ItemId.FREESIA_SCENT:
case -ItemId.LAVENDER_SCENT:
return true;
default:
@@ -5120,7 +5121,7 @@ public class Character extends AbstractCharacterObject {
}
public boolean haveWeddingRing() {
int[] rings = {1112806, 1112803, 1112807, 1112809};
int[] rings = {ItemId.WEDDING_RING_STAR, ItemId.WEDDING_RING_MOONSTONE, ItemId.WEDDING_RING_GOLDEN, ItemId.WEDDING_RING_SILVER};
for (int ringid : rings) {
if (haveItemWithId(ringid, true)) {
@@ -6207,7 +6208,10 @@ public class Character extends AbstractCharacterObject {
}
public boolean attemptCatchFish(int baitLevel) {
return YamlConfig.config.server.USE_FISHING_SYSTEM && GameConstants.isFishingArea(mapid) && this.getPosition().getY() > 0 && ItemConstants.isFishingChair(chair.get()) && this.getWorldServer().registerFisherPlayer(this, baitLevel);
return YamlConfig.config.server.USE_FISHING_SYSTEM && GameConstants.isFishingArea(mapid) &&
this.getPosition().getY() > 0 &&
ItemConstants.isFishingChair(chair.get()) &&
this.getWorldServer().registerFisherPlayer(this, baitLevel);
}
public void leaveMap() {
@@ -6480,8 +6484,8 @@ public class Character extends AbstractCharacterObject {
if (YamlConfig.config.server.USE_PERFECT_PITCH && level >= 30) {
//milestones?
if (InventoryManipulator.checkSpace(client, 4310000, (short) 1, "")) {
InventoryManipulator.addById(client, 4310000, (short) 1, "", -1);
if (InventoryManipulator.checkSpace(client, ItemId.PERFECT_PITCH, (short) 1, "")) {
InventoryManipulator.addById(client, ItemId.PERFECT_PITCH, (short) 1, "", -1);
}
} else if (level == 10) {
Runnable r = new Runnable() {
@@ -6835,7 +6839,7 @@ public class Character extends AbstractCharacterObject {
public void addPlayerRing(Ring ring) {
int ringItemId = ring.getItemId();
if (ItemConstants.isWeddingRing(ringItemId)) {
if (ItemId.isWeddingRing(ringItemId)) {
this.addMarriageRing(ring);
} else if (ring.getItemId() > 1112012) {
this.addFriendshipRing(ring);
@@ -7570,7 +7574,7 @@ public class Character extends AbstractCharacterObject {
if (eim != null) {
eim.playerKilled(this);
}
int[] charmID = {5130000, 4031283, 4140903};
int[] charmID = {ItemId.SAFETY_CHARM, ItemId.EASTER_BASKET, ItemId.EASTER_CHARM};
int possesed = 0;
int i;
for (i = 0; i < charmID.length; i++) {
@@ -9387,7 +9391,7 @@ public class Character extends AbstractCharacterObject {
int itemid = item.getItemId();
if (ItemConstants.isRechargeable(itemid)) {
quantity = item.getQuantity();
} else if (ItemConstants.isWeddingToken(itemid) || ItemConstants.isWeddingRing(itemid)) {
} else if (ItemId.isWeddingToken(itemid) || ItemId.isWeddingRing(itemid)) {
return (0);
}
@@ -9643,7 +9647,7 @@ public class Character extends AbstractCharacterObject {
strLines.add("");
strLines.add(this.getClient().getChannelServer().getServerMessage().isEmpty() ? 0 : 1, "Get off my lawn!!");
this.sendPacket(PacketCreator.getAvatarMega(mapOwner, medal, this.getClient().getChannel(), 5390006, strLines, true));
this.sendPacket(PacketCreator.getAvatarMega(mapOwner, medal, this.getClient().getChannel(), ItemId.ROARING_TIGER_MESSENGER, strLines, true));
}
}
@@ -10304,13 +10308,13 @@ public class Character extends AbstractCharacterObject {
public void equippedItem(Equip equip) {
int itemid = equip.getItemId();
if (itemid == 1122017) {
if (itemid == ItemId.PENDANT_OF_THE_SPIRIT) {
this.equipPendantOfSpirit();
} else if (itemid == 1812000) { // meso magnet
} else if (itemid == ItemId.MESO_MAGNET) {
equippedMesoMagnet = true;
} else if (itemid == 1812001) { // item pouch
} else if (itemid == ItemId.ITEM_POUCH) {
equippedItemPouch = true;
} else if (itemid == 1812007) { // item ignore pendant
} else if (itemid == ItemId.ITEM_IGNORE) {
equippedPetItemIgnore = true;
}
}
@@ -10318,13 +10322,13 @@ public class Character extends AbstractCharacterObject {
public void unequippedItem(Equip equip) {
int itemid = equip.getItemId();
if (itemid == 1122017) {
if (itemid == ItemId.PENDANT_OF_THE_SPIRIT) {
this.unequipPendantOfSpirit();
} else if (itemid == 1812000) { // meso magnet
} else if (itemid == ItemId.MESO_MAGNET) {
equippedMesoMagnet = false;
} else if (itemid == 1812001) { // item pouch
} else if (itemid == ItemId.ITEM_POUCH) {
equippedItemPouch = false;
} else if (itemid == 1812007) { // item ignore pendant
} else if (itemid == ItemId.ITEM_IGNORE) {
equippedPetItemIgnore = false;
}
}
@@ -27,6 +27,7 @@ import client.Character;
import client.Client;
import client.command.Command;
import client.inventory.Item;
import constants.id.ItemId;
import java.awt.*;
@@ -43,7 +44,8 @@ public class SeedCommand extends Command {
return;
}
Point[] pos = {new Point(7, -207), new Point(179, -447), new Point(-3, -687), new Point(-357, -687), new Point(-538, -447), new Point(-359, -207)};
int[] seed = {4001097, 4001096, 4001095, 4001100, 4001099, 4001098};
int[] seed = {ItemId.PINK_PRIMROSE_SEED, ItemId.PURPLE_PRIMROSE_SEED, ItemId.GREEN_PRIMROSE_SEED,
ItemId.BLUE_PRIMROSE_SEED, ItemId.YELLOW_PRIMROSE_SEED, ItemId.BROWN_PRIMROSE_SEED};
for (int i = 0; i < pos.length; i++) {
Item item = new Item(seed[i], (byte) 0, (short) 1);
player.getMap().spawnItemDrop(player, player, item, pos[i], false, true);
@@ -28,6 +28,7 @@ import client.Client;
import client.command.Command;
import client.inventory.Pet;
import client.inventory.manipulator.InventoryManipulator;
import constants.id.ItemId;
import server.maps.MapItem;
import server.maps.MapObject;
import server.maps.MapObjectType;
@@ -57,9 +58,9 @@ public class ForceVacCommand extends Command {
if (mapItem.getMeso() > 0) {
player.gainMeso(mapItem.getMeso(), true);
} else if (player.applyConsumeOnPickup(mapItem.getItemId())) { // thanks Vcoc for pointing out consumables on pickup not being processed here
} else if (mapItem.getItemId() == 4031865 || mapItem.getItemId() == 4031866) {
} else if (ItemId.isNxCard(mapItem.getItemId())) {
// Add NX to account, show effect and make item disappear
player.getCashShop().gainCash(1, mapItem.getItemId() == 4031865 ? 100 : 250);
player.getCashShop().gainCash(1, mapItem.getItemId() == ItemId.NX_CARD_100 ? 100 : 250);
} else if (mapItem.getItem().getItemId() >= 5000000 && mapItem.getItem().getItemId() <= 5000100) {
int petId = Pet.createPet(mapItem.getItem().getItemId());
if (petId == -1) {
@@ -67,7 +68,7 @@ public class ForceVacCommand extends Command {
}
InventoryManipulator.addById(c, mapItem.getItem().getItemId(), mapItem.getItem().getQuantity(), null, petId);
} else if (InventoryManipulator.addFromDrop(c, mapItem.getItem(), true)) {
if (mapItem.getItemId() == 4031868) {
if (mapItem.getItemId() == ItemId.NX_CARD_100) {
player.updateAriantScore();
}
}
@@ -24,6 +24,7 @@ import client.Job;
import client.creator.CharacterFactory;
import client.creator.CharacterFactoryRecipe;
import client.inventory.InventoryType;
import constants.id.ItemId;
/**
* @author RonanLana
@@ -32,7 +33,7 @@ public class BeginnerCreator extends CharacterFactory {
private static CharacterFactoryRecipe createRecipe(Job job, int level, int map, int top, int bottom, int shoes, int weapon) {
CharacterFactoryRecipe recipe = new CharacterFactoryRecipe(job, level, map, top, bottom, shoes, weapon);
giveItem(recipe, 4161001, 1, InventoryType.ETC);
giveItem(recipe, ItemId.BEGINNERS_GUIDE, 1, InventoryType.ETC);
return recipe;
}
@@ -24,6 +24,7 @@ import client.Job;
import client.creator.CharacterFactory;
import client.creator.CharacterFactoryRecipe;
import client.inventory.InventoryType;
import constants.id.ItemId;
/**
* @author RonanLana
@@ -32,7 +33,7 @@ public class LegendCreator extends CharacterFactory {
private static CharacterFactoryRecipe createRecipe(Job job, int level, int map, int top, int bottom, int shoes, int weapon) {
CharacterFactoryRecipe recipe = new CharacterFactoryRecipe(job, level, map, top, bottom, shoes, weapon);
giveItem(recipe, 4161048, 1, InventoryType.ETC);
giveItem(recipe, ItemId.LEGENDS_GUIDE, 1, InventoryType.ETC);
return recipe;
}
@@ -24,6 +24,7 @@ import client.Job;
import client.creator.CharacterFactory;
import client.creator.CharacterFactoryRecipe;
import client.inventory.InventoryType;
import constants.id.ItemId;
/**
* @author RonanLana
@@ -32,7 +33,7 @@ public class NoblesseCreator extends CharacterFactory {
private static CharacterFactoryRecipe createRecipe(Job job, int level, int map, int top, int bottom, int shoes, int weapon) {
CharacterFactoryRecipe recipe = new CharacterFactoryRecipe(job, level, map, top, bottom, shoes, weapon);
giveItem(recipe, 4161047, 1, InventoryType.ETC);
giveItem(recipe, ItemId.NOBLESSE_GUIDE, 1, InventoryType.ETC);
return recipe;
}
@@ -25,14 +25,16 @@ import client.creator.CharacterFactory;
import client.creator.CharacterFactoryRecipe;
import client.inventory.InventoryType;
import client.inventory.Item;
import constants.id.ItemId;
import server.ItemInformationProvider;
/**
* @author RonanLana
*/
public class BowmanCreator extends CharacterFactory {
private static final int[] equips = {1040067, 1041054, 1060056, 1061050, 1072081};
private static final int[] weapons = {1452005, 1462000};
private static final int[] equips = {ItemId.GREEN_HUNTERS_ARMOR, ItemId.GREEN_HUNTRESS_ARMOR,
ItemId.GREEN_HUNTERS_PANTS, ItemId.GREEN_HUNTRESS_PANTS, ItemId.GREEN_HUNTER_BOOTS};
private static final int[] weapons = {ItemId.RYDEN, ItemId.MOUNTAIN_CROSSBOW};
private static final int[] startingHpMp = {797, 404};
private static CharacterFactoryRecipe createRecipe(Job job, int level, int map, int top, int bottom, int shoes, int weapon) {
@@ -52,9 +54,9 @@ public class BowmanCreator extends CharacterFactory {
giveEquipment(recipe, ii, weapons[i]);
}
giveItem(recipe, 2000002, 100, InventoryType.USE);
giveItem(recipe, 2000003, 100, InventoryType.USE);
giveItem(recipe, 3010000, 1, InventoryType.SETUP);
giveItem(recipe, ItemId.WHITE_POTION, 100, InventoryType.USE);
giveItem(recipe, ItemId.BLUE_POTION, 100, InventoryType.USE);
giveItem(recipe, ItemId.RELAXER, 1, InventoryType.SETUP);
return recipe;
}
@@ -27,6 +27,7 @@ import client.creator.CharacterFactory;
import client.creator.CharacterFactoryRecipe;
import client.inventory.InventoryType;
import client.inventory.Item;
import constants.id.ItemId;
import constants.skills.Magician;
import server.ItemInformationProvider;
@@ -34,8 +35,8 @@ import server.ItemInformationProvider;
* @author RonanLana
*/
public class MagicianCreator extends CharacterFactory {
private static final int[] equips = {0, 1041041, 0, 1061034, 1072075};
private static final int[] weapons = {1372003, 1382017};
private static final int[] equips = {0, ItemId.PURPLE_FAIRY_TOP, 0, ItemId.PURPLE_FAIRY_SKIRT, ItemId.RED_MAGICSHOES};
private static final int[] weapons = {ItemId.MITHRIL_WAND, ItemId.CIRCLE_WINDED_STAFF};
private static final int[] startingHpMp = {405, 729};
private static final int[] mpGain = {0, 40, 80, 118, 156, 194, 230, 266, 302, 336, 370};
@@ -53,16 +54,16 @@ public class MagicianCreator extends CharacterFactory {
recipe.setMeso(100000);
if (gender == 0) {
giveEquipment(recipe, ii, 1050003);
giveEquipment(recipe, ii, ItemId.BLUE_WIZARD_ROBE);
}
for (int i = 1; i < weapons.length; i++) {
giveEquipment(recipe, ii, weapons[i]);
}
giveItem(recipe, 2000001, 100, InventoryType.USE);
giveItem(recipe, 2000006, 100, InventoryType.USE);
giveItem(recipe, 3010000, 1, InventoryType.SETUP);
giveItem(recipe, ItemId.ORANGE_POTION, 100, InventoryType.USE);
giveItem(recipe, ItemId.MANA_ELIXIR, 100, InventoryType.USE);
giveItem(recipe, ItemId.RELAXER, 1, InventoryType.SETUP);
if (improveSp > 0) {
improveSp += 5;
@@ -25,14 +25,15 @@ import client.creator.CharacterFactory;
import client.creator.CharacterFactoryRecipe;
import client.inventory.InventoryType;
import client.inventory.Item;
import constants.id.ItemId;
import server.ItemInformationProvider;
/**
* @author RonanLana
*/
public class PirateCreator extends CharacterFactory {
private static final int[] equips = {0, 0, 0, 0, 1072294};
private static final int[] weapons = {1482004, 1492004};
private static final int[] equips = {0, 0, 0, 0, ItemId.BROWN_PAULIE_BOOTS};
private static final int[] weapons = {ItemId.PRIME_HANDS, ItemId.COLD_MIND};
private static final int[] startingHpMp = {846, 503};
private static CharacterFactoryRecipe createRecipe(Job job, int level, int map, int top, int bottom, int shoes, int weapon) {
@@ -48,17 +49,17 @@ public class PirateCreator extends CharacterFactory {
recipe.setMeso(100000);
giveEquipment(recipe, ii, 1052107);
giveEquipment(recipe, ii, ItemId.BROWN_POLLARD);
for (int i = 1; i < weapons.length; i++) {
giveEquipment(recipe, ii, weapons[i]);
}
giveItem(recipe, 2330000, 800, InventoryType.USE);
giveItem(recipe, ItemId.BULLET, 800, InventoryType.USE);
giveItem(recipe, 2000002, 100, InventoryType.USE);
giveItem(recipe, 2000003, 100, InventoryType.USE);
giveItem(recipe, 3010000, 1, InventoryType.SETUP);
giveItem(recipe, ItemId.WHITE_POTION, 100, InventoryType.USE);
giveItem(recipe, ItemId.BLUE_POTION, 100, InventoryType.USE);
giveItem(recipe, ItemId.RELAXER, 1, InventoryType.SETUP);
return recipe;
}
@@ -25,14 +25,16 @@ import client.creator.CharacterFactory;
import client.creator.CharacterFactoryRecipe;
import client.inventory.InventoryType;
import client.inventory.Item;
import constants.id.ItemId;
import server.ItemInformationProvider;
/**
* @author RonanLana
*/
public class ThiefCreator extends CharacterFactory {
private static final int[] equips = {1040057, 1041047, 1060043, 1061043, 1072032};
private static final int[] weapons = {1472008, 1332012};
private static final int[] equips = {ItemId.DARK_BROWN_STEALER, ItemId.RED_STEAL, ItemId.DARK_BROWN_STEALER_PANTS,
ItemId.RED_STEAL_PANTS, ItemId.BRONZE_CHAIN_BOOTS};
private static final int[] weapons = {ItemId.STEEL_GUARDS, ItemId.REEF_CLAW};
private static final int[] startingHpMp = {794, 407};
private static CharacterFactoryRecipe createRecipe(Job job, int level, int map, int top, int bottom, int shoes, int weapon) {
@@ -52,11 +54,11 @@ public class ThiefCreator extends CharacterFactory {
giveEquipment(recipe, ii, weapons[i]);
}
giveItem(recipe, 2070000, 500, InventoryType.USE);
giveItem(recipe, ItemId.SUBI_THROWING_STARS, 500, InventoryType.USE);
giveItem(recipe, 2000002, 100, InventoryType.USE);
giveItem(recipe, 2000003, 100, InventoryType.USE);
giveItem(recipe, 3010000, 1, InventoryType.SETUP);
giveItem(recipe, ItemId.WHITE_POTION, 100, InventoryType.USE);
giveItem(recipe, ItemId.BLUE_POTION, 100, InventoryType.USE);
giveItem(recipe, ItemId.RELAXER, 1, InventoryType.SETUP);
return recipe;
}
@@ -27,6 +27,7 @@ import client.creator.CharacterFactory;
import client.creator.CharacterFactoryRecipe;
import client.inventory.InventoryType;
import client.inventory.Item;
import constants.id.ItemId;
import constants.skills.Warrior;
import server.ItemInformationProvider;
@@ -34,8 +35,8 @@ import server.ItemInformationProvider;
* @author RonanLana
*/
public class WarriorCreator extends CharacterFactory {
private static final int[] equips = {1040021, 0, 1060016, 0, 1072039};
private static final int[] weapons = {1302008, 1442001, 1422001, 1312005};
private static final int[] equips = {ItemId.RED_HWARANG_SHIRT, 0, ItemId.BLACK_MARTIAL_ARTS_PANTS, 0, ItemId.MITHRIL_BATTLE_GRIEVES};
private static final int[] weapons = {ItemId.GLADIUS, ItemId.MITHRIL_POLE_ARM, ItemId.MITHRIL_MAUL, ItemId.FIREMANS_AXE};
private static final int[] startingHpMp = {905, 208};
private static final int[] hpGain = {0, 72, 144, 212, 280, 348, 412, 476, 540, 600, 660};
@@ -53,7 +54,7 @@ public class WarriorCreator extends CharacterFactory {
recipe.setMeso(100000);
if (gender == 1) {
giveEquipment(recipe, ii, 1051010);
giveEquipment(recipe, ii, ItemId.DARK_ENGRIT);
}
for (int i = 1; i < weapons.length; i++) {
@@ -75,9 +76,9 @@ public class WarriorCreator extends CharacterFactory {
}
}
giveItem(recipe, 2000002, 100, InventoryType.USE);
giveItem(recipe, 2000003, 100, InventoryType.USE);
giveItem(recipe, 3010000, 1, InventoryType.SETUP);
giveItem(recipe, ItemId.WHITE_POTION, 100, InventoryType.USE);
giveItem(recipe, ItemId.BLUE_POTION, 100, InventoryType.USE);
giveItem(recipe, ItemId.RELAXER, 1, InventoryType.SETUP);
return recipe;
}
@@ -27,6 +27,7 @@ import client.Client;
import client.inventory.*;
import client.newyear.NewYearCardRecord;
import config.YamlConfig;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import server.ItemInformationProvider;
import server.maps.MapleMap;
@@ -523,7 +524,8 @@ public class InventoryManipulator {
if (source == null || !ii.canWearEquipment(chr, source, dst)) {
c.sendPacket(PacketCreator.enableActions());
return;
} else if ((((source.getItemId() >= 1902000 && source.getItemId() <= 1902002) || source.getItemId() == 1912000) && chr.isCygnus()) || ((source.getItemId() >= 1902005 && source.getItemId() <= 1902007) || source.getItemId() == 1912005) && !chr.isCygnus()) {// Adventurer taming equipment
} else if ((ItemId.isExplorerMount(source.getItemId()) && chr.isCygnus()) ||
((ItemId.isCygnusMount(source.getItemId())) && !chr.isCygnus())) {// Adventurer taming equipment
return;
}
boolean itemChanged = false;
@@ -684,7 +686,7 @@ public class InventoryManipulator {
} else if (isDroppedItemRestricted(it)) {
return true;
} else {
return ItemConstants.isWeddingRing(it.getItemId());
return ItemId.isWeddingRing(it.getItemId());
}
}
@@ -724,12 +726,12 @@ public class InventoryManipulator {
c.sendPacket(PacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(1, source))));
if (ItemConstants.isNewYearCardEtc(itemId)) {
if (itemId == 4300000) {
if (itemId == ItemId.NEW_YEARS_CARD_SEND) {
NewYearCardRecord.removeAllNewYearCard(true, chr);
c.getAbstractPlayerInteraction().removeAll(4300000);
c.getAbstractPlayerInteraction().removeAll(ItemId.NEW_YEARS_CARD_SEND);
} else {
NewYearCardRecord.removeAllNewYearCard(false, chr);
c.getAbstractPlayerInteraction().removeAll(4301000);
c.getAbstractPlayerInteraction().removeAll(ItemId.NEW_YEARS_CARD_RECEIVED);
}
}
@@ -755,12 +757,12 @@ public class InventoryManipulator {
if (src < 0) {
chr.equipChanged();
} else if (ItemConstants.isNewYearCardEtc(itemId)) {
if (itemId == 4300000) {
if (itemId == ItemId.NEW_YEARS_CARD_SEND) {
NewYearCardRecord.removeAllNewYearCard(true, chr);
c.getAbstractPlayerInteraction().removeAll(4300000);
c.getAbstractPlayerInteraction().removeAll(ItemId.NEW_YEARS_CARD_SEND);
} else {
NewYearCardRecord.removeAllNewYearCard(false, chr);
c.getAbstractPlayerInteraction().removeAll(4301000);
c.getAbstractPlayerInteraction().removeAll(ItemId.NEW_YEARS_CARD_RECEIVED);
}
}
@@ -777,11 +779,11 @@ public class InventoryManipulator {
chr.setItemEffect(0);
map.broadcastMessage(PacketCreator.itemEffect(chr.getId(), 0));
}
} else if (itemId == 5370000 || itemId == 5370001) {
} else if (itemId == ItemId.CHALKBOARD_1 || itemId == ItemId.CHALKBOARD_2) {
if (source.getQuantity() <= 0) {
chr.setChalkboard(null);
}
} else if (itemId == 4031868) {
} else if (itemId == ItemId.ARPQ_SPIRIT_JEWEL) {
chr.updateAriantScore(quantityNow);
}
}
@@ -27,6 +27,7 @@ import client.inventory.Item;
import client.inventory.manipulator.InventoryManipulator;
import config.YamlConfig;
import constants.game.GameConstants;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import net.packet.InPacket;
import server.ItemInformationProvider;
@@ -385,7 +386,7 @@ public class MakerProcessor {
if (!(c.getPlayer().isGM() && YamlConfig.config.server.USE_PERFECT_GM_SCROLL)) {
eqp.setUpgradeSlots((byte) (eqp.getUpgradeSlots() + 1));
}
item = ItemInformationProvider.getInstance().scrollEquipWithId(eqp, 2049100, true, 2049100, c.getPlayer().isGM());
item = ItemInformationProvider.getInstance().scrollEquipWithId(eqp, ItemId.CHAOS_SCROll_60, true, ItemId.CHAOS_SCROll_60, c.getPlayer().isGM());
}
if (!reagentids.isEmpty()) {
@@ -25,6 +25,7 @@ import client.SkillFactory;
import client.inventory.InventoryType;
import client.inventory.Pet;
import client.inventory.manipulator.InventoryManipulator;
import constants.id.ItemId;
import provider.DataProvider;
import provider.DataProviderFactory;
import provider.DataTool;
@@ -49,10 +50,9 @@ public class SpawnPetProcessor {
}
int petid = pet.getItemId();
if (petid == 5000028 || petid == 5000047) //Handles Dragon AND Robos
{
if (petid == ItemId.DRAGON_PET || petid == ItemId.ROBO_PET) {
if (chr.haveItem(petid + 1)) {
chr.dropMessage(5, "You can't hatch your " + (petid == 5000028 ? "Dragon egg" : "Robo egg") + " if you already have a Baby " + (petid == 5000028 ? "Dragon." : "Robo."));
chr.dropMessage(5, "You can't hatch your " + (petid == ItemId.DRAGON_PET ? "Dragon egg" : "Robo egg") + " if you already have a Baby " + (petid == ItemId.DRAGON_PET ? "Dragon." : "Robo."));
c.sendPacket(PacketCreator.enableActions());
return;
} else {
@@ -33,6 +33,7 @@ import client.inventory.ItemFactory;
import client.inventory.manipulator.InventoryManipulator;
import client.inventory.manipulator.KarmaManipulator;
import config.YamlConfig;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import net.server.channel.Channel;
import server.DueyPackage;
@@ -284,7 +285,7 @@ public class DueyProcessor {
int fee = Trade.getFee(sendMesos);
if (!quick) {
fee += 5000;
} else if (!c.getPlayer().haveItem(5330000)) {
} else if (!c.getPlayer().haveItem(ItemId.QUICK_DELIVERY_TICKET)) {
AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with Quick Delivery on duey.");
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use duey with Quick Delivery, mesos " + sendMesos + " and amount " + amount);
c.disconnect(true, false);
@@ -324,7 +325,7 @@ public class DueyProcessor {
}
if (quick) {
InventoryManipulator.removeById(c, InventoryType.CASH, 5330000, (short) 1, false, false);
InventoryManipulator.removeById(c, InventoryType.CASH, ItemId.QUICK_DELIVERY_TICKET, (short) 1, false, false);
}
int packageId = createPackage(sendMesos, sendMessage, c.getPlayer().getName(), recipientCid, quick);
@@ -30,6 +30,7 @@ import client.inventory.Item;
import client.inventory.manipulator.InventoryManipulator;
import client.inventory.manipulator.KarmaManipulator;
import config.YamlConfig;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import net.packet.InPacket;
import server.ItemInformationProvider;
@@ -132,7 +133,7 @@ public class StorageProcessor {
try {
item = inv.getItem(slot);
if (item != null && item.getItemId() == itemId && (item.getQuantity() >= quantity || ItemConstants.isRechargeable(itemId))) {
if (ItemConstants.isWeddingRing(itemId) || ItemConstants.isWeddingToken(itemId)) {
if (ItemId.isWeddingRing(itemId) || ItemId.isWeddingToken(itemId)) {
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -20,7 +20,6 @@ import java.util.*;
*/
public class GameConstants {
public static String[] WORLD_NAMES = {"Scania", "Bera", "Broa", "Windia", "Khaini", "Bellocan", "Mardia", "Kradia", "Yellonde", "Demethos", "Galicia", "El Nido", "Zenith", "Arcenia", "Kastia", "Judis", "Plana", "Kalluna", "Stius", "Croa", "Medere"};
public static final int[] OWL_DATA = new int[]{1082002, 2070005, 2070006, 1022047, 1102041, 2044705, 2340000, 2040017, 1092030, 2040804};
public static final String[] stats = {"tuc", "reqLevel", "reqJob", "reqSTR", "reqDEX", "reqINT", "reqLUK", "reqPOP", "cash", "cursed", "success", "setItemID", "equipTradeBlock", "durability", "randOption", "randStat", "masterLevel", "reqSkillLevel", "elemDefault", "incRMAS", "incRMAF", "incRMAI", "incRMAL", "canLevel", "skill", "charmEXP"};
public static final int[] CASH_DATA = new int[]{50200004, 50200069, 50200117, 50100008, 50000047};
+442
View File
@@ -0,0 +1,442 @@
package constants.id;
import java.util.stream.IntStream;
public class ItemId {
// Misc
public static final int PENDANT_OF_THE_SPIRIT = 1122017;
public static final int HEART_SHAPED_CHOCOLATE = 5110000;
public static final int HAPPY_BIRTHDAY = 2022153;
public static final int FISHING_CHAIR = 3011000;
public static final int MINI_GAME_BASE = 4080000;
public static final int MATCH_CARDS = 4080100;
public static final int MAGICAL_MITTEN = 1472063;
public static final int RPS_CERTIFICATE_BASE = 4031332;
public static final int GOLDEN_MAPLE_LEAF = 4000313;
public static final int PERFECT_PITCH = 4310000;
public static final int MAGIC_ROCK = 4006000;
public static final int GOLDEN_CHICKEN_EFFECT = 4290000;
public static final int BUMMER_EFFECT = 4290001;
public static final int ARPQ_SHIELD = 2022269;
public static final int ROARING_TIGER_MESSENGER = 5390006;
public static boolean isExpIncrease(int itemId) {
return itemId >= 2022450 && itemId <= 2022452;
}
public static boolean isRateCoupon(int itemId) {
int itemType = itemId / 1000;
return itemType == 5211 || itemType == 5360;
}
public static boolean isMonsterCard(int itemId) {
int itemType = itemId / 10000;
return itemType == 238;
}
public static boolean isPyramidBuff(int itemId) {
return (itemId >= 2022585 && itemId <= 2022588) || (itemId >= 2022616 && itemId <= 2022617);
}
public static boolean isDojoBuff(int itemId) {
return itemId >= 2022359 && itemId <= 2022421;
}
// Potion
public static final int WHITE_POTION = 2000002;
public static final int BLUE_POTION = 2000003;
public static final int ORANGE_POTION = 2000001;
public static final int MANA_ELIXIR = 2000006;
// HP/MP recovery
public static final int SORCERERS_POTION = 2022337;
public static final int RUSSELLONS_PILLS = 2022198;
// Environment
public static final int RED_BEAN_PORRIDGE = 2022001;
public static final int SOFT_WHITE_BUN = 2022186;
public static final int AIR_BUBBLE = 2022040;
// Chair
public static final int RELAXER = 3010000;
private static final int CHAIR_MIN = RELAXER;
private static final int CHAIR_MAX = FISHING_CHAIR;
public static boolean isChair(int itemId) {
return itemId >= CHAIR_MIN && itemId <= CHAIR_MAX;
// alt: return itemId / 10000 == 301;
}
// Throwing star
public static final int SUBI_THROWING_STARS = 2070000;
public static final int HWABI_THROWING_STARS = 2070007;
public static final int BALANCED_FURY = 2070018;
public static final int CRYSTAL_ILBI_THROWING_STARS = 2070016;
private static final int THROWING_STAR_MIN = SUBI_THROWING_STARS;
private static final int THROWING_STAR_MAX = 2070016;
public static final int DEVIL_RAIN_THROWING_STAR = 2070014;
public static int[] allThrowingStarIds() {
return IntStream.range(THROWING_STAR_MIN, THROWING_STAR_MAX + 1).toArray();
}
// Bullet
public static final int BULLET = 2330000;
private static final int BULLET_MIN = BULLET;
private static final int BULLET_MAX = 2330005;
public static final int BLAZE_CAPSULE = 2331000;
public static final int GLAZE_CAPSULE = 2332000;
public static int[] allBulletIds() {
return IntStream.range(BULLET_MIN, BULLET_MAX + 1).toArray();
}
// Starter
public static final int BEGINNERS_GUIDE = 4161001;
public static final int LEGENDS_GUIDE = 4161048;
public static final int NOBLESSE_GUIDE = 4161047;
public static final int SWORD = 1302000; // Weapon
public static final int HAND_AXE = 1312004;
public static final int WOODEN_CLUB = 1322005;
public static final int BASIC_POLEARM = 1442079;
public static final int WHITE_UNDERSHIRT = 1040002; // Top
public static final int UNDERSHIRT = 1040006;
public static final int GREY_TSHIRT = 1040010;
public static final int WHITE_TUBETOP = 1041002;
public static final int YELLOW_TSHIRT = 1041006;
public static final int GREEN_TSHIRT = 1041010;
public static final int RED_STRIPED_TOP = 1041011;
public static final int SIMPLE_WARRIOR_TOP = 1042167;
public static final int BLUE_JEAN_SHORTS = 1060002; // Bottom
public static final int BROWN_COTTON_SHORTS = 1060006;
public static final int RED_MINISKIRT = 1061002;
public static final int INDIGO_MINISKIRT = 1061008;
public static final int SIMPLE_WARRIOR_PANTS = 1062115;
public static final int RED_RUBBER_BOOTS = 1072001;
public static final int LEATHER_SANDALS = 1072005;
public static final int YELLOW_RUBBER_BOOTS = 1072037;
public static final int BLUE_RUBBER_BOOTS = 1072038;
public static final int AVERAGE_MUSASHI_SHOES = 1072383;
public static final int BLACK_TOBEN = 30000; // Hair
public static final int ZETA = 30010;
public static final int BLACK_REBEL = 30020;
public static final int BLACK_BUZZ = 30030;
public static final int BLACK_SAMMY = 31000;
public static final int BLACK_EDGY = 31040;
public static final int BLACK_CONNIE = 31050;
public static final int MOTIVATED_LOOK_M = 20000; // Face
public static final int PERPLEXED_STARE = 20001;
public static final int LEISURE_LOOK_M = 20002;
public static final int MOTIVATED_LOOK_F = 21000;
public static final int FEARFUL_STARE_M = 21001;
public static final int LEISURE_LOOK_F = 21002;
public static final int FEARFUL_STARE_F = 21201;
public static final int PERPLEXED_STARE_HAZEL = 20401;
public static final int LEISURE_LOOK_HAZEL = 20402;
public static final int MOTIVATED_LOOK_AMETHYST = 21700;
public static final int MOTIVATED_LOOK_BLUE = 20100;
// Warrior
public static final int RED_HWARANG_SHIRT = 1040021;
public static final int BLACK_MARTIAL_ARTS_PANTS = 1060016;
public static final int MITHRIL_BATTLE_GRIEVES = 1072039;
public static final int GLADIUS = 1302008;
public static final int MITHRIL_POLE_ARM = 1442001;
public static final int MITHRIL_MAUL = 1422001;
public static final int FIREMANS_AXE = 1312005;
public static final int DARK_ENGRIT = 1051010;
// Bowman
public static final int GREEN_HUNTERS_ARMOR = 1040067;
public static final int GREEN_HUNTRESS_ARMOR = 1041054;
public static final int GREEN_HUNTERS_PANTS = 1060056;
public static final int GREEN_HUNTRESS_PANTS = 1061050;
public static final int GREEN_HUNTER_BOOTS = 1072081;
public static final int RYDEN = 1452005;
public static final int MOUNTAIN_CROSSBOW = 1462000;
// Magician
public static final int BLUE_WIZARD_ROBE = 1050003;
public static final int PURPLE_FAIRY_TOP = 1041041;
public static final int PURPLE_FAIRY_SKIRT = 1061034;
public static final int RED_MAGICSHOES = 1072075;
public static final int MITHRIL_WAND = 1372003;
public static final int CIRCLE_WINDED_STAFF = 1382017;
// Thief
public static final int DARK_BROWN_STEALER = 1040057;
public static final int RED_STEAL = 1041047;
public static final int DARK_BROWN_STEALER_PANTS = 1060043;
public static final int RED_STEAL_PANTS = 1061043;
public static final int BRONZE_CHAIN_BOOTS = 1072032;
public static final int STEEL_GUARDS = 1472008;
public static final int REEF_CLAW = 1332012;
// Pirate
public static final int BROWN_PAULIE_BOOTS = 1072294;
public static final int PRIME_HANDS = 1482004;
public static final int COLD_MIND = 1492004;
public static final int BROWN_POLLARD = 1052107;
// Three snails
public static final int SNAIL_SHELL = 4000019;
public static final int BLUE_SNAIL_SHELL = 4000000;
public static final int RED_SNAIL_SHELL = 4000016;
// Special scroll
public static final int COLD_PROTECTION_SCROLl = 2041058;
public static final int SPIKES_SCROLL = 2040727;
public static final int VEGAS_SPELL_10 = 5610000;
public static final int VEGAS_SPELL_60 = 5610001;
public static final int CHAOS_SCROll_60 = 2049100;
public static final int LIAR_TREE_SAP = 2049101;
public static final int MAPLE_SYRUP = 2049102;
public static final int WHITE_SCROLL = 2340000;
public static final int CLEAN_SLATE_1 = 2049000;
public static final int CLEAN_SLATE_3 = 2049001;
public static final int CLEAN_SLATE_5 = 2049002;
public static final int CLEAN_SLATE_20 = 2049003;
public static final int RING_STR_100_SCROLL = 2041100;
public static final int DRAGON_STONE_SCROLL = 2041200;
public static final int BELT_STR_100_SCROLL = 2041300;
// Cure debuff
public static final int ALL_CURE_POTION = 2050004;
public static final int EYEDROP = 2050001;
public static final int TONIC = 2050002;
public static final int HOLY_WATER = 2050003;
public static final int ANTI_BANISH_SCROLL = 2030100;
private static final int DOJO_PARTY_ALL_CURE = 2022433;
private static final int CARNIVAL_PARTY_ALL_CURE = 2022163;
public static final int WHITE_ELIXIR = 2022544;
public static boolean isPartyAllCure(int itemId) {
return itemId == DOJO_PARTY_ALL_CURE || itemId == CARNIVAL_PARTY_ALL_CURE;
}
// Special effect
public static final int PHARAOHS_BLESSING_1 = 2022585;
public static final int PHARAOHS_BLESSING_2 = 2022586;
public static final int PHARAOHS_BLESSING_3 = 2022587;
public static final int PHARAOHS_BLESSING_4 = 2022588;
// Evolve pet
public static final int DRAGON_PET = 5000028;
public static final int ROBO_PET = 5000047;
// Pet equip
public static final int MESO_MAGNET = 1812000;
public static final int ITEM_POUCH = 1812001;
public static final int ITEM_IGNORE = 1812007;
public static boolean isPet(int itemId) {
return itemId / 1000 == 5000;
}
// Expirable pet
public static final int PET_SNAIL = 5000054;
// Permanent pet
private static final int PERMA_PINK_BEAN = 5000060;
private static final int PERMA_KINO = 5000100;
private static final int PERMA_WHITE_TIGER = 5000101;
private static final int PERMA_MINI_YETI = 5000102;
public static int[] getPermaPets() {
return new int[]{PERMA_PINK_BEAN, PERMA_KINO, PERMA_WHITE_TIGER, PERMA_MINI_YETI};
}
// Maker
public static final int BASIC_MONSTER_CRYSTAL_1 = 4260000;
public static final int BASIC_MONSTER_CRYSTAL_2 = 4260001;
public static final int BASIC_MONSTER_CRYSTAL_3 = 4260002;
public static final int INTERMEDIATE_MONSTER_CRYSTAL_1 = 4260003;
public static final int INTERMEDIATE_MONSTER_CRYSTAL_2 = 4260004;
public static final int INTERMEDIATE_MONSTER_CRYSTAL_3 = 4260005;
public static final int ADVANCED_MONSTER_CRYSTAL_1 = 4260006;
public static final int ADVANCED_MONSTER_CRYSTAL_2 = 4260007;
public static final int ADVANCED_MONSTER_CRYSTAL_3 = 4260008;
// NPC weather (PQ)
public static final int NPC_WEATHER_GROWLIE = 5120016; // Henesys PQ
// Safety charm
public static final int SAFETY_CHARM = 5130000;
public static final int EASTER_BASKET = 4031283;
public static final int EASTER_CHARM = 4140903;
// Engagement box
public static final int ENGAGEMENT_BOX_MOONSTONE = 2240000;
public static final int ENGAGEMENT_BOX_STAR = 2240001;
public static final int ENGAGEMENT_BOX_GOLDEN = 2240002;
public static final int ENGAGEMENT_BOX_SILVER = 2240003;
public static final int EMPTY_ENGAGEMENT_BOX_MOONSTONE = 4031357;
public static final int ENGAGEMENT_RING_MOONSTONE = 4031358;
public static final int EMPTY_ENGAGEMENT_BOX_STAR = 4031359;
public static final int ENGAGEMENT_RING_STAR = 4031360;
public static final int EMPTY_ENGAGEMENT_BOX_GOLDEN = 4031361;
public static final int ENGAGEMENT_RING_GOLDEN = 4031362;
public static final int EMPTY_ENGAGEMENT_BOX_SILVER = 4031363;
public static final int ENGAGEMENT_RING_SILVER = 4031364;
public static boolean isWeddingToken(int itemId) {
return itemId >= ItemId.EMPTY_ENGAGEMENT_BOX_MOONSTONE && itemId <= ItemId.ENGAGEMENT_RING_SILVER;
}
// Wedding etc
public static final int PARENTS_BLESSING = 4031373;
public static final int OFFICIATORS_PERMISSION = 4031374;
public static final int ONYX_CHEST_FOR_COUPLE = 4031424;
// Wedding ticket
public static final int NORMAL_WEDDING_TICKET_CATHEDRAL = 5251000;
public static final int NORMAL_WEDDING_TICKET_CHAPEL = 5251001;
public static final int PREMIUM_WEDDING_TICKET_CHAPEL = 5251002;
public static final int PREMIUM_WEDDING_TICKET_CATHEDRAL = 5251003;
// Wedding reservation
public static final int PREMIUM_CATHEDRAL_RESERVATION_RECEIPT = 4031375;
public static final int PREMIUM_CHAPEL_RESERVATION_RECEIPT = 4031376;
public static final int NORMAL_CATHEDRAL_RESERVATION_RECEIPT = 4031480;
public static final int NORMAL_CHAPEL_RESERVATION_RECEIPT = 4031481;
// Wedding invite
public static final int INVITATION_CHAPEL = 4031377;
public static final int INVITATION_CATHEDRAL = 4031395;
public static final int RECEIVED_INVITATION_CHAPEL = 4031406;
public static final int RECEIVED_INVITATION_CATHEDRAL = 4031407;
public static final int CARAT_RING_BASE = 1112300; // Unsure about math on this and the following one
public static final int CARAT_RING_BOX_BASE = 2240004;
private static final int CARAT_RING_BOX_MAX = 2240015;
public static final int ENGAGEMENT_BOX_MIN = ENGAGEMENT_BOX_MOONSTONE;
public static final int ENGAGEMENT_BOX_MAX = CARAT_RING_BOX_MAX;
// Wedding ring
public static final int WEDDING_RING_MOONSTONE = 1112803;
public static final int WEDDING_RING_STAR = 1112806;
public static final int WEDDING_RING_GOLDEN = 1112807;
public static final int WEDDING_RING_SILVER = 1112809;
public static boolean isWeddingRing(int itemId) {
return itemId == WEDDING_RING_MOONSTONE || itemId == WEDDING_RING_STAR ||
itemId == WEDDING_RING_GOLDEN || itemId == WEDDING_RING_SILVER;
}
// Priority buff
public static final int ROSE_SCENT = 2022631;
public static final int FREESIA_SCENT = 2022632;
public static final int LAVENDER_SCENT = 2022633;
// Cash shop
public static final int WHEEL_OF_FORTUNE = 5510000;
public static final int CASH_SHOP_SURPRISE = 5222000;
public static final int EXP_COUPON_2X_4H = 5211048;
public static final int DROP_COUPON_2X_4H = 5360042;
public static final int EXP_COUPON_3X_2H = 5211060;
public static final int QUICK_DELIVERY_TICKET = 5330000;
public static final int CHALKBOARD_1 = 5370000;
public static final int CHALKBOARD_2 = 5370001;
public static final int REMOTE_GACHAPON_TICKET = 5451000;
public static final int AP_RESET = 5050000;
public static final int NAME_CHANGE = 5400000;
public static final int WORLD_TRANSFER = 5401000;
public static final int MAPLE_LIFE_B = 5432000;
public static final int VICIOUS_HAMMER = 5570000;
public static final int NX_CARD_100 = 4031865;
public static final int NX_CARD_250 = 4031866;
public static boolean isNxCard(int itemId) {
return itemId == NX_CARD_100 || itemId == NX_CARD_250;
}
// Face expression
private static final int FACE_EXPRESSION_MIN = 5160000;
private static final int FACE_EXPRESSION_MAX = 5160014;
public static boolean isFaceExpression(int itemId) {
return itemId >= FACE_EXPRESSION_MIN && itemId <= FACE_EXPRESSION_MAX;
}
// New Year card
public static final int NEW_YEARS_CARD = 2160101;
public static final int NEW_YEARS_CARD_SEND = 4300000;
public static final int NEW_YEARS_CARD_RECEIVED = 4301000;
// Popular owl items
private static final int WORK_GLOVES = 1082002;
private static final int STEELY_THROWING_KNIVES = 2070005;
private static final int ILBI_THROWING_STARS = 2070006;
private static final int OWL_BALL_MASK = 1022047;
private static final int PINK_ADVENTURER_CAPE = 1102041;
private static final int CLAW_30_SCROLL = 2044705;
private static final int HELMET_60_ACC_SCROLL = 2040017;
private static final int MAPLE_SHIELD = 1092030;
private static final int GLOVES_ATT_60_SCROLL = 2040804;
public static int[] getOwlItems() {
return new int[]{WORK_GLOVES, STEELY_THROWING_KNIVES, ILBI_THROWING_STARS, OWL_BALL_MASK, PINK_ADVENTURER_CAPE,
CLAW_30_SCROLL, WHITE_SCROLL, HELMET_60_ACC_SCROLL, MAPLE_SHIELD, GLOVES_ATT_60_SCROLL};
}
// Henesys PQ
public static final int GREEN_PRIMROSE_SEED = 4001095;
public static final int PURPLE_PRIMROSE_SEED = 4001096;
public static final int PINK_PRIMROSE_SEED = 4001097;
public static final int BROWN_PRIMROSE_SEED = 4001098;
public static final int YELLOW_PRIMROSE_SEED = 4001099;
public static final int BLUE_PRIMROSE_SEED = 4001100;
public static final int MOON_BUNNYS_RICE_CAKE = 4001101;
// Catch mobs items
public static final int PHEROMONE_PERFUME = 2270000;
public static final int POUCH = 2270001;
public static final int GHOST_SACK = 4031830;
public static final int ARPQ_ELEMENT_ROCK = 2270002;
public static final int ARPQ_SPIRIT_JEWEL = 4031868;
public static final int MAGIC_CANE = 2270003;
public static final int TAMED_RUDOLPH = 4031887;
public static final int TRANSPARENT_MARBLE_1 = 2270005;
public static final int MONSTER_MARBLE_1 = 2109001;
public static final int TRANSPARENT_MARBLE_2 = 2270006;
public static final int MONSTER_MARBLE_2 = 2109002;
public static final int TRANSPARENT_MARBLE_3 = 2270007;
public static final int MONSTER_MARBLE_3 = 2109003;
public static final int EPQ_PURIFICATION_MARBLE = 2270004;
public static final int EPQ_MONSTER_MARBLE = 4001169;
public static final int FISH_NET = 2270008;
public static final int FISH_NET_WITH_A_CATCH = 2022323;
// Mount
public static final int BATTLESHIP = 1932000;
// Explorer mount
public static final int HOG = 1902000;
private static final int SILVER_MANE = 1902001;
private static final int RED_DRACO = 1902002;
private static final int EXPLORER_SADDLE = 1912000;
public static boolean isExplorerMount(int itemId) {
return itemId >= HOG && itemId <= RED_DRACO || itemId == EXPLORER_SADDLE;
}
// Cygnus mount
private static final int MIMIANA = 1902005;
private static final int MIMIO = 1902006;
private static final int SHINJOU = 1902007;
private static final int CYGNUS_SADDLE = 1912005;
public static boolean isCygnusMount(int itemId) {
return itemId >= MIMIANA && itemId <= SHINJOU || itemId == CYGNUS_SADDLE;
}
// Dev equips
public static final int GREEN_HEADBAND = 1002067;
public static final int TIMELESS_NIBLEHEIM = 1402046;
public static final int BLUE_KORBEN = 1082140;
public static final int MITHRIL_PLATINE_PANTS = 1060091;
public static final int BLUE_CARZEN_BOOTS = 1072154;
public static final int MITHRIL_PLATINE = 1040103;
}
@@ -23,6 +23,7 @@ package constants.inventory;
import client.inventory.InventoryType;
import config.YamlConfig;
import constants.id.ItemId;
import java.util.HashMap;
import java.util.HashSet;
@@ -51,9 +52,9 @@ public final class ItemConstants {
public final static Set<Integer> permanentItemids = new HashSet<>();
static {
int[] pi = {5000060, 5000100, 5000101, 5000102}; // i ain't going to open one gigantic itemid cache just for 4 perma itemids, no way!
for (int i : pi) {
permanentItemids.add(i);
// i ain't going to open one gigantic itemid cache just for 4 perma itemids, no way!
for (int petItemId : ItemId.getPermaPets()) {
permanentItemids.add(petItemId);
}
}
@@ -108,7 +109,7 @@ public final class ItemConstants {
}
public static boolean isExpirablePet(int itemId) {
return YamlConfig.config.server.USE_ERASE_PET_ON_EXPIRATION || itemId == 5000054;
return YamlConfig.config.server.USE_ERASE_PET_ON_EXPIRATION || itemId == ItemId.PET_SNAIL;
}
public static boolean isPermanentItem(int itemId) {
@@ -133,11 +134,11 @@ public final class ItemConstants {
}
public static boolean isTownScroll(int itemId) {
return itemId >= 2030000 && itemId < 2030100;
return itemId >= 2030000 && itemId < ItemId.ANTI_BANISH_SCROLL;
}
public static boolean isAntibanishScroll(int itemId) {
return itemId == 2030100;
return itemId == ItemId.ANTI_BANISH_SCROLL;
}
public static boolean isCleanSlate(int scrollId) {
@@ -145,14 +146,14 @@ public final class ItemConstants {
}
public static boolean isModifierScroll(int scrollId) {
return scrollId == 2040727 || scrollId == 2041058;
return scrollId == ItemId.SPIKES_SCROLL || scrollId == ItemId.COLD_PROTECTION_SCROLl;
}
public static boolean isFlagModifier(int scrollId, short flag) {
if (scrollId == 2041058 && ((flag & ItemConstants.COLD) == ItemConstants.COLD)) {
if (scrollId == ItemId.COLD_PROTECTION_SCROLl && ((flag & ItemConstants.COLD) == ItemConstants.COLD)) {
return true;
}
return scrollId == 2040727 && ((flag & ItemConstants.SPIKES) == ItemConstants.SPIKES);
return scrollId == ItemId.SPIKES_SCROLL && ((flag & ItemConstants.SPIKES) == ItemConstants.SPIKES);
}
public static boolean isChaosScroll(int scrollId) {
@@ -172,10 +173,6 @@ public final class ItemConstants {
return itemId >= 2022430 && itemId <= 2022433 || itemId >= 2022160 && itemId <= 2022163;
}
public static boolean isPartyAllcure(int itemId) {
return itemId == 2022433 || itemId == 2022163;
}
public static boolean isHiredMerchant(int itemId) {
return itemId / 10000 == 503;
}
@@ -227,21 +224,13 @@ public final class ItemConstants {
}
public static boolean isFishingChair(int itemId) {
return itemId == 3011000;
return itemId == ItemId.FISHING_CHAIR;
}
public static boolean isMedal(int itemId) {
return itemId >= 1140000 && itemId < 1143000;
}
public static boolean isWeddingRing(int itemId) {
return itemId >= 1112803 && itemId <= 1112809;
}
public static boolean isWeddingToken(int itemId) {
return itemId >= 4031357 && itemId <= 4031364;
}
public static boolean isFace(int itemId) {
return itemId >= 20000 && itemId < 22000;
}
@@ -249,12 +238,4 @@ public final class ItemConstants {
public static boolean isHair(int itemId) {
return itemId >= 30000 && itemId < 35000;
}
public static boolean isFaceExpression(int itemId) {
return itemId / 10000 == 516;
}
public static boolean isChair(int itemId) {
return itemId / 10000 == 301;
}
}
@@ -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);
@@ -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;
@@ -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()));
@@ -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) {
@@ -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());
}
@@ -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;
}
@@ -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;
}
@@ -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;
@@ -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)));
@@ -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;
@@ -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);
@@ -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.");
}
@@ -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;
}
@@ -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);
@@ -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());
@@ -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
@@ -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
));
@@ -28,6 +28,7 @@ import client.inventory.*;
import client.inventory.manipulator.InventoryManipulator;
import config.YamlConfig;
import constants.game.GameConstants;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import net.server.Server;
import net.server.guild.Guild;
@@ -611,7 +612,7 @@ public class AbstractPlayerInteraction {
if (!(c.getPlayer().isGM() && YamlConfig.config.server.USE_PERFECT_GM_SCROLL)) {
eqp.setUpgradeSlots((byte) (eqp.getUpgradeSlots() + 1));
}
item = ItemInformationProvider.getInstance().scrollEquipWithId(item, 2049100, true, 2049100, c.getPlayer().isGM());
item = ItemInformationProvider.getInstance().scrollEquipWithId(item, ItemId.CHAOS_SCROll_60, true, ItemId.CHAOS_SCROll_60, c.getPlayer().isGM());
}
}
} else {
@@ -763,7 +764,8 @@ public class AbstractPlayerInteraction {
}
public void removeHPQItems() {
int[] items = {4001095, 4001096, 4001097, 4001098, 4001099, 4001100, 4001101};
int[] items = {ItemId.GREEN_PRIMROSE_SEED, ItemId.PURPLE_PRIMROSE_SEED, ItemId.PINK_PRIMROSE_SEED,
ItemId.BROWN_PRIMROSE_SEED, ItemId.YELLOW_PRIMROSE_SEED, ItemId.BLUE_PRIMROSE_SEED, ItemId.MOON_BUNNYS_RICE_CAKE};
for (int item : items) {
removePartyItems(item);
}
+4 -3
View File
@@ -23,6 +23,7 @@ package server;
import client.inventory.*;
import config.YamlConfig;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import net.server.Server;
import net.server.audit.locks.MonitoredLockType;
@@ -103,13 +104,13 @@ public class CashShop {
if (ItemConstants.EXPIRING_ITEMS) {
if (period == 1) {
if (itemId == 5211048 || itemId == 5360042) { // 4 Hour 2X coupons, the period is 1, but we don't want them to last a day.
if (itemId == ItemId.EXP_COUPON_2X_4H || itemId == ItemId.DROP_COUPON_2X_4H) { // 4 Hour 2X coupons, the period is 1, but we don't want them to last a day.
item.setExpiration(Server.getInstance().getCurrentTime() + HOURS.toMillis(4));
/*
} else if(itemId == 5211047 || itemId == 5360014) { // 3 Hour 2X coupons, unused as of now
item.setExpiration(Server.getInstance().getCurrentTime() + HOURS.toMillis(3));
*/
} else if (itemId == 5211060) { // 2 Hour 3X coupons.
} else if (itemId == ItemId.EXP_COUPON_3X_2H) { // 2 Hour 3X coupons.
item.setExpiration(Server.getInstance().getCurrentTime() + HOURS.toMillis(2));
} else {
item.setExpiration(Server.getInstance().getCurrentTime() + DAYS.toMillis(1));
@@ -525,7 +526,7 @@ public class CashShop {
}
public synchronized Pair<Item, Item> openCashShopSurprise() {
Item css = getCashShopItemByItemid(5222000);
Item css = getCashShopItemByItemid(ItemId.CASH_SHOP_SURPRISE);
if (css != null) {
CashItem cItem = CashItemFactory.getRandomCashItem();
@@ -26,6 +26,7 @@ import client.*;
import client.autoban.AutobanFactory;
import client.inventory.*;
import config.YamlConfig;
import constants.id.ItemId;
import constants.inventory.EquipSlot;
import constants.inventory.ItemConstants;
import constants.skills.Assassin;
@@ -1037,17 +1038,17 @@ public class ItemInformationProvider {
double prop = (double) stats.get("success");
switch (vegaItemId) {
case 5610000:
case ItemId.VEGAS_SPELL_10:
if (prop == 10.0f) {
prop = 30.0f;
}
break;
case 5610001:
case ItemId.VEGAS_SPELL_60:
if (prop == 60.0f) {
prop = 90.0f;
}
break;
case 2049100:
case ItemId.CHAOS_SCROll_60:
prop = 100.0f;
break;
}
@@ -1055,25 +1056,25 @@ public class ItemInformationProvider {
if (assertGM || rollSuccessChance(prop)) {
short flag = nEquip.getFlag();
switch (scrollId) {
case 2040727:
case ItemId.SPIKES_SCROLL:
flag |= ItemConstants.SPIKES;
nEquip.setFlag((byte) flag);
break;
case 2041058:
case ItemId.COLD_PROTECTION_SCROLl:
flag |= ItemConstants.COLD;
nEquip.setFlag((byte) flag);
break;
case 2049000:
case 2049001:
case 2049002:
case 2049003:
case ItemId.CLEAN_SLATE_1:
case ItemId.CLEAN_SLATE_3:
case ItemId.CLEAN_SLATE_5:
case ItemId.CLEAN_SLATE_20:
if (canUseCleanSlate(nEquip)) {
nEquip.setUpgradeSlots((byte) (nEquip.getUpgradeSlots() + 1));
}
break;
case 2049100:
case 2049101:
case 2049102:
case ItemId.CHAOS_SCROll_60:
case ItemId.LIAR_TREE_SAP:
case ItemId.MAPLE_SYRUP:
scrollEquipWithChaos(nEquip, YamlConfig.config.server.CHSCROLL_STAT_RANGE);
break;
@@ -1787,7 +1788,7 @@ public class ItemInformationProvider {
public boolean canWearEquipment(Character chr, Equip equip, int dst) {
int id = equip.getItemId();
if (ItemConstants.isWeddingRing(id) && chr.hasJustMarried()) {
if (ItemId.isWeddingRing(id) && chr.hasJustMarried()) {
chr.dropMessage(5, "The Wedding Ring cannot be equipped on this map."); // will dc everyone due to doubled couple effect
return false;
}
@@ -1966,32 +1967,19 @@ public class ItemInformationProvider {
int range = (level - 1) / 10;
if (range < 5) {
return 4260000;
return ItemId.BASIC_MONSTER_CRYSTAL_1;
} else if (range > 11) {
return 4260008;
return ItemId.ADVANCED_MONSTER_CRYSTAL_3;
} else {
switch (range) {
case 5:
return 4260001;
case 6:
return 4260002;
case 7:
return 4260003;
case 8:
return 4260004;
case 9:
return 4260005;
case 10:
return 4260006;
default:
return 4260007;
}
return switch (range) {
case 5 -> ItemId.BASIC_MONSTER_CRYSTAL_2;
case 6 -> ItemId.BASIC_MONSTER_CRYSTAL_3;
case 7 -> ItemId.INTERMEDIATE_MONSTER_CRYSTAL_1;
case 8 -> ItemId.INTERMEDIATE_MONSTER_CRYSTAL_2;
case 9 -> ItemId.INTERMEDIATE_MONSTER_CRYSTAL_3;
case 10 -> ItemId.ADVANCED_MONSTER_CRYSTAL_1;
default -> ItemId.ADVANCED_MONSTER_CRYSTAL_2;
};
}
}
+13 -12
View File
@@ -26,6 +26,7 @@ import client.inventory.InventoryType;
import client.inventory.Item;
import client.inventory.Pet;
import client.inventory.manipulator.InventoryManipulator;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import tools.DatabaseConnection;
import tools.PacketCreator;
@@ -48,18 +49,18 @@ public class Shop {
private final int npcId;
private final List<ShopItem> items;
private final int tokenvalue = 1000000000;
private final int token = 4000313;
private final int token = ItemId.GOLDEN_MAPLE_LEAF;
static {
for (int i = 2070000; i < 2070017; i++) {
rechargeableItems.add(i);
for (int throwingStarId : ItemId.allThrowingStarIds()) {
rechargeableItems.add(throwingStarId);
}
rechargeableItems.add(2331000);//Blaze Capsule
rechargeableItems.add(2332000);//Glaze Capsule
rechargeableItems.add(2070018);
rechargeableItems.remove(2070014); // doesn't exist
for (int i = 2330000; i <= 2330005; i++) {
rechargeableItems.add(i);
rechargeableItems.add(ItemId.BLAZE_CAPSULE);
rechargeableItems.add(ItemId.GLAZE_CAPSULE);
rechargeableItems.add(ItemId.BALANCED_FURY);
rechargeableItems.remove(ItemId.DEVIL_RAIN_THROWING_STAR); // doesn't exist
for (int bulletId : ItemId.allBulletIds()) {
rechargeableItems.add(bulletId);
}
}
@@ -114,16 +115,16 @@ public class Shop {
} else if (item.getPitch() > 0) {
int amount = (int) Math.min((float) item.getPitch() * quantity, Integer.MAX_VALUE);
if (c.getPlayer().getInventory(InventoryType.ETC).countById(4310000) >= amount) {
if (c.getPlayer().getInventory(InventoryType.ETC).countById(ItemId.PERFECT_PITCH) >= amount) {
if (InventoryManipulator.checkSpace(c, itemId, quantity, "")) {
if (!ItemConstants.isRechargeable(itemId)) {
InventoryManipulator.addById(c, itemId, quantity, "", -1);
InventoryManipulator.removeById(c, InventoryType.ETC, 4310000, amount, false, false);
InventoryManipulator.removeById(c, InventoryType.ETC, ItemId.PERFECT_PITCH, amount, false, false);
} else {
short slotMax = ii.getSlotMax(c, item.getItemId());
quantity = slotMax;
InventoryManipulator.addById(c, itemId, quantity, "", -1);
InventoryManipulator.removeById(c, InventoryType.ETC, 4310000, amount, false, false);
InventoryManipulator.removeById(c, InventoryType.ETC, ItemId.PERFECT_PITCH, amount, false, false);
}
c.sendPacket(PacketCreator.shopTransaction((byte) 0));
} else {
+15 -40
View File
@@ -30,6 +30,7 @@ import client.inventory.manipulator.InventoryManipulator;
import client.status.MonsterStatus;
import client.status.MonsterStatusEffect;
import config.YamlConfig;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import constants.skills.*;
import net.packet.Packet;
@@ -158,9 +159,9 @@ public class StatEffect {
}
private static byte mapProtection(int sourceid) {
if (sourceid == 2022001 || sourceid == 2022186) {
if (sourceid == ItemId.RED_BEAN_PORRIDGE || sourceid == ItemId.SOFT_WHITE_BUN) {
return 1; //elnath cold
} else if (sourceid == 2022040) {
} else if (sourceid == ItemId.AIR_BUBBLE) {
return 2; //aqua road underwater
} else {
return 0;
@@ -252,14 +253,14 @@ public class StatEffect {
if (ret.overTime && ret.getSummonMovementType() == null) {
if (!skill) {
if (isPyramidBuff(sourceid)) {
if (ItemId.isPyramidBuff(sourceid)) {
ret.berserk = DataTool.getInt("berserk", source, 0);
ret.booster = DataTool.getInt("booster", source, 0);
addBuffStatPairToListIfNotZero(statups, BuffStat.BERSERK, ret.berserk);
addBuffStatPairToListIfNotZero(statups, BuffStat.BOOSTER, ret.booster);
} else if (isDojoBuff(sourceid) || isHpMpRecovery(sourceid)) {
} else if (ItemId.isDojoBuff(sourceid) || isHpMpRecovery(sourceid)) {
ret.mhpR = (byte) DataTool.getInt("mhpR", source, 0);
ret.mhpRRate = (short) (DataTool.getInt("mhpRRate", source, 0) * 100);
ret.mmpR = (byte) DataTool.getInt("mmpR", source, 0);
@@ -268,7 +269,7 @@ public class StatEffect {
addBuffStatPairToListIfNotZero(statups, BuffStat.HPREC, (int) ret.mhpR);
addBuffStatPairToListIfNotZero(statups, BuffStat.MPREC, (int) ret.mmpR);
} else if (isRateCoupon(sourceid)) {
} else if (ItemId.isRateCoupon(sourceid)) {
switch (DataTool.getInt("expR", source, 0)) {
case 1:
addBuffStatPairToListIfNotZero(statups, BuffStat.COUPON_EXP1, 1);
@@ -300,7 +301,7 @@ public class StatEffect {
addBuffStatPairToListIfNotZero(statups, BuffStat.COUPON_DRP3, 1);
break;
}
} else if (isMonsterCard(sourceid)) {
} else if (ItemId.isMonsterCard(sourceid)) {
int prob = 0, itemupCode = Integer.MAX_VALUE;
List<Pair<Integer, Integer>> areas = null;
boolean inParty = false;
@@ -370,7 +371,7 @@ public class StatEffect {
}
ret.cardStats = new CardItemupStats(itemupCode, prob, areas, inParty);
} else if (isExpIncrease(sourceid)) {
} else if (ItemId.isExpIncrease(sourceid)) {
addBuffStatPairToListIfNotZero(statups, BuffStat.EXP_INCREASE, DataTool.getInt("expinc", source, 0));
}
} else {
@@ -908,7 +909,7 @@ public class StatEffect {
Portal pt;
if (moveTo == 999999999) {
if (sourceid != 2030100) {
if (sourceid != ItemId.ANTI_BANISH_SCROLL) {
target = applyto.getMap().getReturnMap();
pt = target.getRandomPlayerSpawnpoint();
} else {
@@ -1012,7 +1013,7 @@ public class StatEffect {
door.getTarget().spawnDoor(door.getAreaDoor());
door.getTown().spawnDoor(door.getTownDoor());
} else {
InventoryManipulator.addFromDrop(applyto.getClient(), new Item(4006000, (short) 0, (short) 1), false);
InventoryManipulator.addFromDrop(applyto.getClient(), new Item(ItemId.MAGIC_ROCK, (short) 0, (short) 1), false);
if (door.getOwnerId() == -3) {
applyto.dropMessage(5, "Mystic Door cannot be cast far from a spawn point. Nearest one is at " + door.getDoorStatus().getRight() + "pts " + door.getDoorStatus().getLeft());
@@ -1229,7 +1230,7 @@ public class StatEffect {
}
if (sourceid == Corsair.BATTLE_SHIP) {
ridingMountId = 1932000;
ridingMountId = ItemId.BATTLESHIP;
} else if (sourceid == Beginner.SPACESHIP || sourceid == Noblesse.SPACESHIP) {
ridingMountId = 1932000 + applyto.getSkillLevel(sourceid);
} else if (sourceid == Beginner.YETI_MOUNT1 || sourceid == Noblesse.YETI_MOUNT1 || sourceid == Legend.YETI_MOUNT1) {
@@ -1523,38 +1524,12 @@ public class StatEffect {
return sourceid == Beginner.MAP_CHAIR || sourceid == Noblesse.MAP_CHAIR || sourceid == Legend.MAP_CHAIR;
}
public boolean isDojoBuff() {
return sourceid >= 2022359 && sourceid <= 2022421;
}
public static boolean isDojoBuff(int sourceid) {
return sourceid >= 2022359 && sourceid <= 2022421;
}
public static boolean isHpMpRecovery(int sourceid) {
return sourceid == 2022198 || sourceid == 2022337;
}
public static boolean isPyramidBuff(int sourceid) {
return sourceid >= 2022585 && sourceid <= 2022617;
}
public static boolean isRateCoupon(int sourceid) {
int itemType = sourceid / 1000;
return itemType == 5211 || itemType == 5360;
}
public static boolean isExpIncrease(int sourceid) {
return sourceid >= 2022450 && sourceid <= 2022452;
return sourceid == ItemId.RUSSELLONS_PILLS || sourceid == ItemId.SORCERERS_POTION;
}
public static boolean isAriantShield(int sourceid) {
return sourceid == 2022269;
}
public static boolean isMonsterCard(int sourceid) {
int itemType = sourceid / 10000;
return itemType == 238;
return sourceid == ItemId.ARPQ_SHIELD;
}
private boolean isDs() {
@@ -1586,7 +1561,7 @@ public class StatEffect {
}
private boolean isCouponBuff() {
return isRateCoupon(sourceid);
return ItemId.isRateCoupon(sourceid);
}
private boolean isAriantShield() {
@@ -1649,7 +1624,7 @@ public class StatEffect {
if (skill) {
return isHerosWill(sourceid);
} else {
return sourceid == 2022544;
return sourceid == ItemId.WHITE_ELIXIR;
}
}
+3 -1
View File
@@ -1,5 +1,7 @@
package server.gachapon;
import constants.id.ItemId;
/**
* @author Alan (SharpAceX)
* @author Ronan - added ores and reworked global loots
@@ -15,7 +17,7 @@ public class Global extends GachaponItems {
/* Ores */
4004000, 4004001, 4004002, 4004003, 4004004,
4006000, 4006001,
ItemId.MAGIC_ROCK, 4006001,
4010000, 4010001, 4010002, 4010003, 4010004, 4010005, 4010006, 4010007,
4020000, 4020001, 4020002, 4020003, 4020004, 4020005, 4020006, 4020007, 4020008
};
+3 -1
View File
@@ -1,5 +1,7 @@
package server.gachapon;
import constants.id.ItemId;
/**
* @author Ronan - parsed MapleSEA loots
* <p>
@@ -16,7 +18,7 @@ public class Ludibrium extends GachaponItems {
2048000, 2040601, 2041019, 2041007, 2041016, 2041022, 2041001, 2041010, 2041013, 2041004, 2044701, 2043301, 2040301, 2048004, 2048001, 2040901, 2040701, 2040704, 2040707, 2040602, 2041020, 2041008, 2041017, 2041023, 2041002, 2041011, 2041014, 2041005, 2044702, 2043302, 2040302, 2040002, 2044402, 2048005, 2048002, 2040702, 2040705, 2040708, 2044302, 2043802, 2040402, 2043702, 2044811,
/* Useable drop */
2000004, 2000005, 4006000, 4006001,
2000004, 2000005, ItemId.MAGIC_ROCK, 4006001,
/* Common equipment */
1032003, 1432009, 1302022, 1302029, 1102014, 1102018, 1312014, 1302026, 1102015, 1032011, 1312013, 1032008, 1032019, 1032007, 1332030, 1032020, 1032004, 1302027, 1032022, 1312012, 1032021, 1032006, 1302028, 1322003, 1032016, 1032015, 1302024, 1092008, 1032018, 1302021, 1032014, 1332021, 1322012, 1032005, 1032013, 1102012, 1302025, 1302013, 1032002, 1032001, 1032012, 1302017, 1032010, 1402014, 1102017, 1102013, 1442021, 1032009,
@@ -19,6 +19,7 @@
*/
package server.life;
import constants.id.ItemId;
import net.server.Server;
import provider.Data;
import provider.DataProvider;
@@ -114,12 +115,12 @@ public class PlayerNPCFactory {
int FH = 4, RX0 = -143, RX1 = -243, CX = -193, CY = 117, scriptId = 9977777;
Map<Short, Integer> equips = new HashMap<>();
equips.put((short) -1, 1002067);
equips.put((short) -11, 1402046);
equips.put((short) -8, 1082140);
equips.put((short) -6, 1060091);
equips.put((short) -7, 1072154);
equips.put((short) -5, 1040103);
equips.put((short) -1, ItemId.GREEN_HEADBAND);
equips.put((short) -11, ItemId.TIMELESS_NIBLEHEIM);
equips.put((short) -8, ItemId.BLUE_KORBEN);
equips.put((short) -6, ItemId.MITHRIL_PLATINE_PANTS);
equips.put((short) -7, ItemId.BLUE_CARZEN_BOOTS);
equips.put((short) -5, ItemId.MITHRIL_PLATINE);
List<PlayerNPC> dnpcSet = dnpcMaps.get(mapid);
if (dnpcSet == null) {
@@ -3,6 +3,7 @@ package server.minigame;
import client.Client;
import client.inventory.Item;
import client.inventory.manipulator.InventoryManipulator;
import constants.id.ItemId;
import tools.PacketCreator;
import tools.Randomizer;
@@ -71,7 +72,7 @@ public class RockPaperScissor {
public final void reward(final Client c) {
if (win) {
InventoryManipulator.addFromDrop(c, new Item(4031332 + round, (short) 0, (short) 1), true);
InventoryManipulator.addFromDrop(c, new Item(ItemId.RPS_CERTIFICATE_BASE + round, (short) 0, (short) 1), true);
}
c.getPlayer().setRPS(null);
}
@@ -21,6 +21,7 @@ package server.partyquest;
import client.Character;
import constants.game.GameConstants;
import constants.id.ItemId;
import server.TimerManager;
import server.expeditions.Expedition;
import server.expeditions.ExpeditionType;
@@ -180,8 +181,8 @@ public class AriantColiseum {
}
chr.setAriantColiseum(null);
int shards = chr.countItem(4031868);
chr.getAbstractPlayerInteraction().removeAll(4031868);
int shards = chr.countItem(ItemId.ARPQ_SPIRIT_JEWEL);
chr.getAbstractPlayerInteraction().removeAll(ItemId.ARPQ_SPIRIT_JEWEL);
chr.updateAriantScore(shards);
}
}
@@ -241,7 +242,7 @@ public class AriantColiseum {
}
runnerups.remove(firstTop);
if (isUnfairMatch(firstTop, secondTop, map.getDroppedItemsCountById(4031868) + lostShards, runnerups)) {
if (isUnfairMatch(firstTop, secondTop, map.getDroppedItemsCountById(ItemId.ARPQ_SPIRIT_JEWEL) + lostShards, runnerups)) {
rewardTier.put(winner, 1);
}
}
+5 -4
View File
@@ -23,6 +23,7 @@
package server.partyquest;
import client.Character;
import constants.id.ItemId;
import net.server.world.Party;
import server.ItemInformationProvider;
import server.TimerManager;
@@ -186,7 +187,7 @@ public class Pyramid extends PartyQuest {
buffcount++;
ItemInformationProvider ii = ItemInformationProvider.getInstance();
for (Character chr : getParticipants()) {
ii.getItemEffect(2022585).applyTo(chr);
ii.getItemEffect(ItemId.PHARAOHS_BLESSING_1).applyTo(chr);
}
} else if (buffcount == 1 && total >= 500) {
@@ -195,7 +196,7 @@ public class Pyramid extends PartyQuest {
ItemInformationProvider ii = ItemInformationProvider.getInstance();
for (Character chr : getParticipants()) {
chr.sendPacket(PacketCreator.getEnergy("massacre_skill", skill));
ii.getItemEffect(2022586).applyTo(chr);
ii.getItemEffect(ItemId.PHARAOHS_BLESSING_2).applyTo(chr);
}
} else if (buffcount == 2 && total >= 1000) {
buffcount++;
@@ -203,7 +204,7 @@ public class Pyramid extends PartyQuest {
ItemInformationProvider ii = ItemInformationProvider.getInstance();
for (Character chr : getParticipants()) {
chr.sendPacket(PacketCreator.getEnergy("massacre_skill", skill));
ii.getItemEffect(2022587).applyTo(chr);
ii.getItemEffect(ItemId.PHARAOHS_BLESSING_3).applyTo(chr);
}
} else if (buffcount == 3 && total >= 1500) {
skill++;
@@ -214,7 +215,7 @@ public class Pyramid extends PartyQuest {
ItemInformationProvider ii = ItemInformationProvider.getInstance();
for (Character chr : getParticipants()) {
chr.sendPacket(PacketCreator.getEnergy("massacre_skill", skill));
ii.getItemEffect(2022588).applyTo(chr);
ii.getItemEffect(ItemId.PHARAOHS_BLESSING_4).applyTo(chr);
}
} else if (buffcount == 5 && total >= 2500) {
skill++;
+5 -4
View File
@@ -33,6 +33,7 @@ import client.status.MonsterStatusEffect;
import config.YamlConfig;
import constants.game.ExpTable;
import constants.game.GameConstants;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import constants.skills.Buccaneer;
import constants.skills.Corsair;
@@ -1922,7 +1923,7 @@ public class PacketCreator {
}*/
addCharLook(p, chr, false);
p.writeInt(chr.getInventory(InventoryType.CASH).countById(5110000));
p.writeInt(chr.getInventory(InventoryType.CASH).countById(ItemId.HEART_SHAPED_CHOCOLATE));
p.writeInt(chr.getItemEffect());
p.writeInt(ItemConstants.getInventoryType(chr.getChair()) == InventoryType.SETUP ? chr.getChair() : 0);
@@ -6771,8 +6772,8 @@ public class PacketCreator {
p.writeInt(marriageRing.getItemId());
p.writeInt(marriageRing.getItemId());
} else {
p.writeInt(1112803); // Engagement Ring's Outcome (doesn't matter for engagement)
p.writeInt(1112803); // Engagement Ring's Outcome (doesn't matter for engagement)
p.writeInt(ItemId.WEDDING_RING_MOONSTONE); // Engagement Ring's Outcome (doesn't matter for engagement)
p.writeInt(ItemId.WEDDING_RING_MOONSTONE); // Engagement Ring's Outcome (doesn't matter for engagement)
}
p.writeFixedString(StringUtil.getRightPaddedStr(chr.getGender() == 0 ? chr.getName() : Character.getNameById(chr.getPartnerId()), '\0', 13));
p.writeFixedString(StringUtil.getRightPaddedStr(chr.getGender() == 0 ? Character.getNameById(chr.getPartnerId()) : chr.getName(), '\0', 13));
@@ -6805,7 +6806,7 @@ public class PacketCreator {
public static Packet hpqMessage(String text) {
final OutPacket p = OutPacket.create(SendOpcode.BLOW_WEATHER); // not 100% sure
p.writeByte(0);
p.writeInt(5120016);
p.writeInt(ItemId.NPC_WEATHER_GROWLIE);
p.writeFixedString(text);
return p;
}
+2 -1
View File
@@ -22,6 +22,7 @@ package tools.packets;
import client.Character;
import config.YamlConfig;
import constants.game.GameConstants;
import constants.id.ItemId;
import constants.inventory.ItemConstants;
import server.ItemInformationProvider;
import tools.PacketCreator;
@@ -124,7 +125,7 @@ public class Fishing {
public static int getRandomItem() {
int rand = (int) (100.0 * Math.random());
int[] commons = {1002851, 2002020, 2002020, 2000006, 2000018, 2002018, 2002024, 2002027, 2002027, 2000018, 2000018, 2000018, 2000018, 2002030, 2002018, 2000016}; // filler' up
int[] commons = {1002851, 2002020, 2002020, ItemId.MANA_ELIXIR, 2000018, 2002018, 2002024, 2002027, 2002027, 2000018, 2000018, 2000018, 2000018, 2002030, 2002018, 2000016}; // filler' up
int[] uncommons = {1000025, 1002662, 1002812, 1002850, 1002881, 1002880, 1012072, 4020009, 2043220, 2043022, 2040543, 2044420, 2040943, 2043713, 2044220, 2044120, 2040429, 2043220, 2040943}; // filler' uptoo
int[] rares = {1002859, 1002553, 1002762, 1002763, 1002764, 1002765, 1002766, 1002663, 1002788, 1002949, 2049100, 2340000, 2040822, 2040822, 2040822, 2040822}; // filler' uplast
+34 -33
View File
@@ -8,6 +8,7 @@ package tools.packets;
import client.Character;
import client.inventory.Item;
import constants.id.ItemId;
import net.opcodes.SendOpcode;
import net.packet.OutPacket;
import net.packet.Packet;
@@ -155,37 +156,37 @@ public class WeddingPackets extends PacketCreator {
}
public enum WeddingItem {
WR_MOONSTONE(1112803), // Wedding Ring
WR_STARGEM(1112806),
WR_GOLDENHEART(1112807),
WR_SILVERSWAN(1112809),
ERB_MOONSTONE(2240000), // Engagement Ring Box
ERB_STARGEM(2240001),
ERB_GOLDENHEART(2240002),
ERB_SILVERSWAN(2240003),
ERBE_MOONSTONE(4031357), // Engagement Ring Box (Empty)
ER_MOONSTONE(4031358), // Engagement Ring
ERBE_STARGEM(4031359),
ER_STARGEM(4031360),
ERBE_GOLDENHEART(4031361),
ER_GOLDENHEART(4031362),
ERBE_SILVERSWAN(4031363),
ER_SILVERSWAN(4031364),
PARENTS_BLESSING(4031373), // Parents Blessing
OFFICIATORS_PERMISSION(4031374), // Officiator's Permission
WR_CATHEDRAL_PREMIUM(4031375), // Wedding Ring?
WR_VEGAS_PREMIUM(4031376),
IB_VEGAS(4031377), // toSend invitation
IB_CATHEDRAL(4031395), // toSend invitation
IG_VEGAS(4031406), // rcvd invitation
IG_CATHEDRAL(4031407), // rcvd invitation
OB_FORCOUPLE(4031424), // Onyx Box? For Couple
WR_CATHEDRAL_NORMAL(4031480), // Wedding Ring?
WR_VEGAS_NORMAL(4031481),
WT_CATHEDRAL_NORMAL(5251000), // Wedding Ticket
WT_VEGAS_NORMAL(5251001),
WT_VEGAS_PREMIUM(5251002),
WT_CATHEDRAL_PREMIUM(5251003);
WR_MOONSTONE(ItemId.WEDDING_RING_MOONSTONE), // Wedding Ring
WR_STARGEM(ItemId.WEDDING_RING_STAR),
WR_GOLDENHEART(ItemId.WEDDING_RING_GOLDEN),
WR_SILVERSWAN(ItemId.WEDDING_RING_SILVER),
ERB_MOONSTONE(ItemId.ENGAGEMENT_BOX_MOONSTONE), // Engagement Ring Box
ERB_STARGEM(ItemId.ENGAGEMENT_BOX_STAR),
ERB_GOLDENHEART(ItemId.ENGAGEMENT_BOX_GOLDEN),
ERB_SILVERSWAN(ItemId.ENGAGEMENT_BOX_SILVER),
ERBE_MOONSTONE(ItemId.EMPTY_ENGAGEMENT_BOX_MOONSTONE), // Engagement Ring Box (Empty)
ER_MOONSTONE(ItemId.ENGAGEMENT_RING_MOONSTONE), // Engagement Ring
ERBE_STARGEM(ItemId.EMPTY_ENGAGEMENT_BOX_STAR),
ER_STARGEM(ItemId.ENGAGEMENT_RING_STAR),
ERBE_GOLDENHEART(ItemId.EMPTY_ENGAGEMENT_BOX_GOLDEN),
ER_GOLDENHEART(ItemId.ENGAGEMENT_RING_GOLDEN),
ERBE_SILVERSWAN(ItemId.EMPTY_ENGAGEMENT_BOX_SILVER),
ER_SILVERSWAN(ItemId.ENGAGEMENT_RING_SILVER),
PARENTS_BLESSING(ItemId.PARENTS_BLESSING), // Parents Blessing
OFFICIATORS_PERMISSION(ItemId.OFFICIATORS_PERMISSION), // Officiator's Permission
WR_CATHEDRAL_PREMIUM(ItemId.PREMIUM_CATHEDRAL_RESERVATION_RECEIPT), // Wedding Ring?
WR_VEGAS_PREMIUM(ItemId.PREMIUM_CHAPEL_RESERVATION_RECEIPT),
IB_VEGAS(ItemId.INVITATION_CHAPEL), // toSend invitation
IB_CATHEDRAL(ItemId.INVITATION_CATHEDRAL), // toSend invitation
IG_VEGAS(ItemId.RECEIVED_INVITATION_CHAPEL), // rcvd invitation
IG_CATHEDRAL(ItemId.RECEIVED_INVITATION_CATHEDRAL), // rcvd invitation
OB_FORCOUPLE(ItemId.ONYX_CHEST_FOR_COUPLE), // Onyx Box? For Couple
WR_CATHEDRAL_NORMAL(ItemId.NORMAL_CATHEDRAL_RESERVATION_RECEIPT), // Wedding Ring?
WR_VEGAS_NORMAL(ItemId.NORMAL_CHAPEL_RESERVATION_RECEIPT),
WT_CATHEDRAL_NORMAL(ItemId.NORMAL_WEDDING_TICKET_CATHEDRAL), // Wedding Ticket
WT_VEGAS_NORMAL(ItemId.NORMAL_WEDDING_TICKET_CHAPEL),
WT_VEGAS_PREMIUM(ItemId.PREMIUM_WEDDING_TICKET_CHAPEL),
WT_CATHEDRAL_PREMIUM(ItemId.PREMIUM_WEDDING_TICKET_CATHEDRAL);
private final int wi;
WeddingItem(int wi) {
@@ -284,8 +285,8 @@ public class WeddingPackets extends PacketCreator {
p.writeInt(chr.getMarriageItemId());
p.writeInt(chr.getMarriageItemId());
} else {
p.writeInt(1112803); // Engagement Ring's Outcome (doesn't matter for engagement)
p.writeInt(1112803); // Engagement Ring's Outcome (doesn't matter for engagement)
p.writeInt(ItemId.WEDDING_RING_MOONSTONE); // Engagement Ring's Outcome (doesn't matter for engagement)
p.writeInt(ItemId.WEDDING_RING_MOONSTONE); // Engagement Ring's Outcome (doesn't matter for engagement)
}
p.writeFixedString(StringUtil.getRightPaddedStr(chr.getGender() == 0 ? chr.getName() : Character.getNameById(chr.getPartnerId()), '\0', 13));
p.writeFixedString(StringUtil.getRightPaddedStr(chr.getGender() == 0 ? Character.getNameById(chr.getPartnerId()) : chr.getName(), '\0', 13));