mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-13 18:51:29 +00:00
[Guilds] Fixes for Guild Bank (#4120)
Updates guild bank functionality - Allows QTY 100 in guild bank - Removes bug when deposit area is full and a UF or RoF2 client attempts to deposit another item - Attempt to deposit a nodrop item in RoF2 creates a dupe situation
This commit is contained in:
parent
c2e4082045
commit
b9fb4babba
@ -7759,15 +7759,6 @@ void Client::Handle_OP_GuildBank(const EQApplicationPacket *app)
|
|||||||
|
|
||||||
case GuildBankDeposit: // Deposit Item
|
case GuildBankDeposit: // Deposit Item
|
||||||
{
|
{
|
||||||
if (GuildBanks->IsAreaFull(GuildID(), GuildBankDepositArea))
|
|
||||||
{
|
|
||||||
MessageString(Chat::Red, GUILD_BANK_FULL);
|
|
||||||
|
|
||||||
GuildBankDepositAck(true, sentAction);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
EQ::ItemInstance *CursorItemInst = GetInv().GetItem(EQ::invslot::slotCursor);
|
EQ::ItemInstance *CursorItemInst = GetInv().GetItem(EQ::invslot::slotCursor);
|
||||||
|
|
||||||
bool Allowed = true;
|
bool Allowed = true;
|
||||||
@ -7783,6 +7774,18 @@ void Client::Handle_OP_GuildBank(const EQApplicationPacket *app)
|
|||||||
|
|
||||||
const EQ::ItemData* CursorItem = CursorItemInst->GetItem();
|
const EQ::ItemData* CursorItem = CursorItemInst->GetItem();
|
||||||
|
|
||||||
|
if (GuildBanks->IsAreaFull(GuildID(), GuildBankDepositArea))
|
||||||
|
{
|
||||||
|
MessageString(Chat::Red, GUILD_BANK_FULL);
|
||||||
|
GuildBankDepositAck(true, sentAction);
|
||||||
|
if (ClientVersion() >= EQ::versions::ClientVersion::RoF) {
|
||||||
|
GetInv().PopItem(EQ::invslot::slotCursor);
|
||||||
|
PushItemOnCursor(CursorItem, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!CursorItem->NoDrop || CursorItemInst->IsAttuned())
|
if (!CursorItem->NoDrop || CursorItemInst->IsAttuned())
|
||||||
{
|
{
|
||||||
Allowed = false;
|
Allowed = false;
|
||||||
@ -7810,6 +7813,7 @@ void Client::Handle_OP_GuildBank(const EQApplicationPacket *app)
|
|||||||
GuildBankDepositAck(true, sentAction);
|
GuildBankDepositAck(true, sentAction);
|
||||||
|
|
||||||
if (ClientVersion() >= EQ::versions::ClientVersion::RoF) {
|
if (ClientVersion() >= EQ::versions::ClientVersion::RoF) {
|
||||||
|
GetInv().PopItem(EQ::invslot::slotCursor);
|
||||||
PushItemOnCursor(CursorItem, true);
|
PushItemOnCursor(CursorItem, true);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -801,7 +801,7 @@ void GuildBankManager::SendGuildBank(Client *c)
|
|||||||
outapp->WriteUInt32(Item->Icon);
|
outapp->WriteUInt32(Item->Icon);
|
||||||
if (Item->Stackable) {
|
if (Item->Stackable) {
|
||||||
outapp->WriteUInt32(guild_bank->Items.DepositArea[i].Quantity);
|
outapp->WriteUInt32(guild_bank->Items.DepositArea[i].Quantity);
|
||||||
outapp->WriteUInt8(Item->StackSize == guild_bank->Items.DepositArea[i].Quantity ? 0 : 1);
|
outapp->WriteUInt8(Item->StackSize == guild_bank->Items.DepositArea[i].Quantity ? 1 : 1);
|
||||||
} else {
|
} else {
|
||||||
outapp->WriteUInt32(1);
|
outapp->WriteUInt32(1);
|
||||||
outapp->WriteUInt8(0);
|
outapp->WriteUInt8(0);
|
||||||
@ -825,7 +825,7 @@ void GuildBankManager::SendGuildBank(Client *c)
|
|||||||
outapp->WriteUInt32(Item->Icon);
|
outapp->WriteUInt32(Item->Icon);
|
||||||
if (Item->Stackable) {
|
if (Item->Stackable) {
|
||||||
outapp->WriteUInt32(guild_bank->Items.MainArea[i].Quantity);
|
outapp->WriteUInt32(guild_bank->Items.MainArea[i].Quantity);
|
||||||
outapp->WriteUInt8(Item->StackSize == guild_bank->Items.MainArea[i].Quantity ? 0 : 1);
|
outapp->WriteUInt8(Item->StackSize == guild_bank->Items.MainArea[i].Quantity ? 1 : 1);
|
||||||
} else {
|
} else {
|
||||||
outapp->WriteUInt32(1);
|
outapp->WriteUInt32(1);
|
||||||
outapp->WriteUInt8(0);
|
outapp->WriteUInt8(0);
|
||||||
@ -862,7 +862,7 @@ void GuildBankManager::SendGuildBank(Client *c)
|
|||||||
{
|
{
|
||||||
if(guild_bank->Items.DepositArea[i].Quantity == Item->StackSize)
|
if(guild_bank->Items.DepositArea[i].Quantity == Item->StackSize)
|
||||||
gbius->Init(GuildBankItemUpdate, 1, i, GuildBankDepositArea, 1, Item->ID, Item->Icon,
|
gbius->Init(GuildBankItemUpdate, 1, i, GuildBankDepositArea, 1, Item->ID, Item->Icon,
|
||||||
guild_bank->Items.DepositArea[i].Quantity, guild_bank->Items.DepositArea[i].Permissions, 0, 0);
|
guild_bank->Items.DepositArea[i].Quantity, guild_bank->Items.DepositArea[i].Permissions, 1, 0);
|
||||||
else
|
else
|
||||||
gbius->Init(GuildBankItemUpdate, 1, i, GuildBankDepositArea, 1, Item->ID, Item->Icon,
|
gbius->Init(GuildBankItemUpdate, 1, i, GuildBankDepositArea, 1, Item->ID, Item->Icon,
|
||||||
guild_bank->Items.DepositArea[i].Quantity, guild_bank->Items.DepositArea[i].Permissions, 1, 0);
|
guild_bank->Items.DepositArea[i].Quantity, guild_bank->Items.DepositArea[i].Permissions, 1, 0);
|
||||||
@ -900,7 +900,7 @@ void GuildBankManager::SendGuildBank(Client *c)
|
|||||||
{
|
{
|
||||||
if(guild_bank->Items.MainArea[i].Quantity == Item->StackSize)
|
if(guild_bank->Items.MainArea[i].Quantity == Item->StackSize)
|
||||||
gbius->Init(GuildBankItemUpdate, 1, i, GuildBankMainArea, 1, Item->ID, Item->Icon,
|
gbius->Init(GuildBankItemUpdate, 1, i, GuildBankMainArea, 1, Item->ID, Item->Icon,
|
||||||
guild_bank->Items.MainArea[i].Quantity, guild_bank->Items.MainArea[i].Permissions, 0, Useable);
|
guild_bank->Items.MainArea[i].Quantity, guild_bank->Items.MainArea[i].Permissions, 1, Useable);
|
||||||
else
|
else
|
||||||
gbius->Init(GuildBankItemUpdate, 1, i, GuildBankMainArea, 1, Item->ID, Item->Icon,
|
gbius->Init(GuildBankItemUpdate, 1, i, GuildBankMainArea, 1, Item->ID, Item->Icon,
|
||||||
guild_bank->Items.MainArea[i].Quantity, guild_bank->Items.MainArea[i].Permissions, 1, Useable);
|
guild_bank->Items.MainArea[i].Quantity, guild_bank->Items.MainArea[i].Permissions, 1, Useable);
|
||||||
@ -1022,7 +1022,7 @@ bool GuildBankManager::AddItem(uint32 GuildID, uint8 Area, uint32 ItemID, int32
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(QtyOrCharges == Item->StackSize)
|
if(QtyOrCharges == Item->StackSize)
|
||||||
gbius.Init(GuildBankItemUpdate, 1, Slot, Area, 1, ItemID, Item->Icon, Item->Stackable ? QtyOrCharges : 1, Permissions, 0, 0);
|
gbius.Init(GuildBankItemUpdate, 1, Slot, Area, 1, ItemID, Item->Icon, Item->Stackable ? QtyOrCharges : 1, Permissions, 1, 0);
|
||||||
else
|
else
|
||||||
gbius.Init(GuildBankItemUpdate, 1, Slot, Area, 1, ItemID, Item->Icon, Item->Stackable ? QtyOrCharges : 1, Permissions, 1, 0);
|
gbius.Init(GuildBankItemUpdate, 1, Slot, Area, 1, ItemID, Item->Icon, Item->Stackable ? QtyOrCharges : 1, Permissions, 1, 0);
|
||||||
}
|
}
|
||||||
@ -1089,7 +1089,7 @@ int GuildBankManager::Promote(uint32 guildID, int slotID)
|
|||||||
{
|
{
|
||||||
if((*iter)->Items.MainArea[mainSlot].Quantity == Item->StackSize)
|
if((*iter)->Items.MainArea[mainSlot].Quantity == Item->StackSize)
|
||||||
gbius.Init(GuildBankItemUpdate, 1, mainSlot, GuildBankMainArea, 1, Item->ID, Item->Icon,
|
gbius.Init(GuildBankItemUpdate, 1, mainSlot, GuildBankMainArea, 1, Item->ID, Item->Icon,
|
||||||
(*iter)->Items.MainArea[mainSlot].Quantity, 0, 0, 0);
|
(*iter)->Items.MainArea[mainSlot].Quantity, 0, 1, 0);
|
||||||
else
|
else
|
||||||
gbius.Init(GuildBankItemUpdate, 1, mainSlot, GuildBankMainArea, 1, Item->ID, Item->Icon,
|
gbius.Init(GuildBankItemUpdate, 1, mainSlot, GuildBankMainArea, 1, Item->ID, Item->Icon,
|
||||||
(*iter)->Items.MainArea[mainSlot].Quantity, 0, 1, 0);
|
(*iter)->Items.MainArea[mainSlot].Quantity, 0, 1, 0);
|
||||||
@ -1145,7 +1145,7 @@ void GuildBankManager::SetPermissions(uint32 guildID, uint16 slotID, uint32 perm
|
|||||||
{
|
{
|
||||||
if((*iter)->Items.MainArea[slotID].Quantity == Item->StackSize)
|
if((*iter)->Items.MainArea[slotID].Quantity == Item->StackSize)
|
||||||
gbius.Init(GuildBankItemUpdate, 1, slotID, GuildBankMainArea, 1, Item->ID, Item->Icon,
|
gbius.Init(GuildBankItemUpdate, 1, slotID, GuildBankMainArea, 1, Item->ID, Item->Icon,
|
||||||
(*iter)->Items.MainArea[slotID].Quantity, (*iter)->Items.MainArea[slotID].Permissions, 0, 0);
|
(*iter)->Items.MainArea[slotID].Quantity, (*iter)->Items.MainArea[slotID].Permissions, 1, 0);
|
||||||
else
|
else
|
||||||
gbius.Init(GuildBankItemUpdate, 1, slotID, GuildBankMainArea, 1, Item->ID, Item->Icon,
|
gbius.Init(GuildBankItemUpdate, 1, slotID, GuildBankMainArea, 1, Item->ID, Item->Icon,
|
||||||
(*iter)->Items.MainArea[slotID].Quantity, (*iter)->Items.MainArea[slotID].Permissions, 1, 0);
|
(*iter)->Items.MainArea[slotID].Quantity, (*iter)->Items.MainArea[slotID].Permissions, 1, 0);
|
||||||
@ -1388,7 +1388,7 @@ bool GuildBankManager::MergeStacks(uint32 GuildID, uint16 SlotID)
|
|||||||
GuildBankItemUpdate_Struct gbius;
|
GuildBankItemUpdate_Struct gbius;
|
||||||
|
|
||||||
if(BankArea[i].Quantity == Item->StackSize)
|
if(BankArea[i].Quantity == Item->StackSize)
|
||||||
gbius.Init(GuildBankItemUpdate, 1, i, GuildBankMainArea, 1, ItemID, Item->Icon, BankArea[i].Quantity, BankArea[i].Permissions, 0, 0);
|
gbius.Init(GuildBankItemUpdate, 1, i, GuildBankMainArea, 1, ItemID, Item->Icon, BankArea[i].Quantity, BankArea[i].Permissions, 1, 0);
|
||||||
else
|
else
|
||||||
gbius.Init(GuildBankItemUpdate, 1, i, GuildBankMainArea, 1, ItemID, Item->Icon, BankArea[i].Quantity, BankArea[i].Permissions, 1, 0);
|
gbius.Init(GuildBankItemUpdate, 1, i, GuildBankMainArea, 1, ItemID, Item->Icon, BankArea[i].Quantity, BankArea[i].Permissions, 1, 0);
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user