Switch to Maven file structure
This commit is contained in:
158
src/main/java/net/server/channel/handlers/WeddingHandler.java
Normal file
158
src/main/java/net/server/channel/handlers/WeddingHandler.java
Normal file
@@ -0,0 +1,158 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
|
||||
package net.server.channel.handlers;
|
||||
|
||||
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import client.inventory.Item;
|
||||
import client.inventory.MapleInventory;
|
||||
import client.inventory.MapleInventoryType;
|
||||
import client.inventory.manipulator.MapleInventoryManipulator;
|
||||
import client.inventory.manipulator.MapleKarmaManipulator;
|
||||
import config.YamlConfig;
|
||||
import constants.inventory.ItemConstants;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import server.MapleMarriage;
|
||||
import tools.MaplePacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import tools.packets.Wedding;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Drago (Dragohe4rt)
|
||||
*/
|
||||
public final class WeddingHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
|
||||
if (c.tryacquireClient()) {
|
||||
try {
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
final byte mode = slea.readByte();
|
||||
|
||||
if (mode == 6) { //additem
|
||||
short slot = slea.readShort();
|
||||
int itemid = slea.readInt();
|
||||
short quantity = slea.readShort();
|
||||
|
||||
MapleMarriage marriage = c.getPlayer().getMarriageInstance();
|
||||
if (marriage != null) {
|
||||
try {
|
||||
boolean groomWishlist = marriage.giftItemToSpouse(chr.getId());
|
||||
String groomWishlistProp = "giftedItem" + (groomWishlist ? "G" : "B") + chr.getId();
|
||||
|
||||
int giftCount = marriage.getIntProperty(groomWishlistProp);
|
||||
if (giftCount < YamlConfig.config.server.WEDDING_GIFT_LIMIT) {
|
||||
int cid = marriage.getIntProperty(groomWishlist ? "groomId" : "brideId");
|
||||
if (chr.getId() != cid) { // cannot gift yourself
|
||||
MapleCharacter spouse = marriage.getPlayerById(cid);
|
||||
if (spouse != null) {
|
||||
MapleInventoryType type = ItemConstants.getInventoryType(itemid);
|
||||
MapleInventory chrInv = chr.getInventory(type);
|
||||
|
||||
Item newItem = null;
|
||||
chrInv.lockInventory();
|
||||
try {
|
||||
Item item = chrInv.getItem((byte) slot);
|
||||
if (item != null) {
|
||||
if (!item.isUntradeable()) {
|
||||
if (itemid == item.getItemId() && quantity <= item.getQuantity()) {
|
||||
newItem = item.copy();
|
||||
|
||||
marriage.addGiftItem(groomWishlist, newItem);
|
||||
MapleInventoryManipulator.removeFromSlot(c, type, slot, quantity, false, false);
|
||||
|
||||
MapleKarmaManipulator.toggleKarmaFlagToUntradeable(newItem);
|
||||
marriage.setIntProperty(groomWishlistProp, giftCount + 1);
|
||||
|
||||
c.announce(Wedding.OnWeddingGiftResult((byte) 0xB, marriage.getWishlistItems(groomWishlist), Collections.singletonList(newItem)));
|
||||
}
|
||||
} else {
|
||||
c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), null));
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
chrInv.unlockInventory();
|
||||
}
|
||||
|
||||
if (newItem != null) {
|
||||
if (YamlConfig.config.server.USE_ENFORCE_MERCHANT_SAVE) chr.saveCharToDB(false);
|
||||
marriage.saveGiftItemsToDb(c, groomWishlist, cid);
|
||||
}
|
||||
} else {
|
||||
c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), null));
|
||||
}
|
||||
} else {
|
||||
c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), null));
|
||||
}
|
||||
} else {
|
||||
c.announce(Wedding.OnWeddingGiftResult((byte) 0xC, marriage.getWishlistItems(groomWishlist), null));
|
||||
}
|
||||
} catch (NumberFormatException nfe) {}
|
||||
} else {
|
||||
c.announce(MaplePacketCreator.enableActions());
|
||||
}
|
||||
} else if (mode == 7) { // take items
|
||||
slea.readByte(); // invType
|
||||
int itemPos = slea.readByte();
|
||||
|
||||
MapleMarriage marriage = chr.getMarriageInstance();
|
||||
if (marriage != null) {
|
||||
Boolean groomWishlist = marriage.isMarriageGroom(chr);
|
||||
if (groomWishlist != null) {
|
||||
Item item = marriage.getGiftItem(c, groomWishlist, itemPos);
|
||||
if (item != null) {
|
||||
if (MapleInventory.checkSpot(chr, item)) {
|
||||
marriage.removeGiftItem(groomWishlist, item);
|
||||
marriage.saveGiftItemsToDb(c, groomWishlist, chr.getId());
|
||||
|
||||
MapleInventoryManipulator.addFromDrop(c, item, true);
|
||||
|
||||
c.announce(Wedding.OnWeddingGiftResult((byte) 0xF, marriage.getWishlistItems(groomWishlist), marriage.getGiftItems(c, groomWishlist)));
|
||||
} else {
|
||||
c.getPlayer().dropMessage(1, "Free a slot on your inventory before collecting this item.");
|
||||
c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), marriage.getGiftItems(c, groomWishlist)));
|
||||
}
|
||||
} else {
|
||||
c.getPlayer().dropMessage(1, "You have already collected this item.");
|
||||
c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), marriage.getGiftItems(c, groomWishlist)));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
List<Item> items = c.getAbstractPlayerInteraction().getUnclaimedMarriageGifts();
|
||||
try {
|
||||
Item item = items.get(itemPos);
|
||||
if (MapleInventory.checkSpot(chr, item)) {
|
||||
items.remove(itemPos);
|
||||
MapleMarriage.saveGiftItemsToDb(c, items, chr.getId());
|
||||
|
||||
MapleInventoryManipulator.addFromDrop(c, item, true);
|
||||
c.announce(Wedding.OnWeddingGiftResult((byte) 0xF, Collections.singletonList(""), items));
|
||||
} else {
|
||||
c.getPlayer().dropMessage(1, "Free a slot on your inventory before collecting this item.");
|
||||
c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, Collections.singletonList(""), items));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
c.getPlayer().dropMessage(1, "You have already collected this item.");
|
||||
c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, Collections.singletonList(""), items));
|
||||
}
|
||||
}
|
||||
} else if (mode == 8) { // out of Wedding Registry
|
||||
c.announce(MaplePacketCreator.enableActions());
|
||||
} else {
|
||||
System.out.println(mode);
|
||||
}
|
||||
} finally {
|
||||
c.releaseClient();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user