Fixed items Mysterious Egg, Disgusting Jar (need db support).

--HG--
branch : trunk
This commit is contained in:
n0n4m3
2009-12-26 17:52:33 +01:00
parent 28df19d205
commit 066efa09e3
3 changed files with 56 additions and 0 deletions
+7
View File
@@ -285,8 +285,15 @@ void Item::UpdateDuration(Player* owner, uint32 diff)
if (GetUInt32Value(ITEM_FIELD_DURATION)<=diff)
{
// variables to hold item location and entry data after item gets destroyed
uint32 itemEntry = GetEntry();
uint8 bagSlot = GetBagSlot();
uint8 slot = GetSlot();
uint16 pos = GetPos();
Script->ItemExpire(owner, GetProto());
owner->DestroyItem(GetBagSlot(), GetSlot(), true);
owner->HandleDestroyItemReplace(itemEntry, bagSlot, slot, pos);
return;
}
+48
View File
@@ -11396,6 +11396,54 @@ void Player::DestroyItem(uint8 bag, uint8 slot, bool update)
}
}
void Player::HandleDestroyItemReplace( uint32 itemEntry, uint8 bag ,uint8 slot, uint16 pos )
{
if(!itemEntry || !slot || !bag)
return;
uint32 newItemEntry = 0;
switch(itemEntry)
{
case 39878: // Mysterious Unhatched Egg
newItemEntry = 39883;
break;
case 44717: // Disgusting Jar
newItemEntry = 44718;
break;
default:
return;
}
Item *pNewItem = Item::CreateItem( newItemEntry, 1, this);
if( !pNewItem )
return;
if( IsInventoryPos( pos ) )
{
ItemPosCountVec dest;
uint8 msg = CanStoreItem( bag, slot, dest, pNewItem, true );
if( msg == EQUIP_ERR_OK )
{
StoreItem( dest, pNewItem, true);
return;
}
}
else if( IsBankPos ( pos ) )
{
ItemPosCountVec dest;
uint8 msg = CanBankItem( bag, slot, dest, pNewItem, true );
if( msg == EQUIP_ERR_OK )
{
BankItem( dest, pNewItem, true);
return;
}
}
// fail
delete pNewItem;
}
void Player::DestroyItemCount(uint32 item, uint32 count, bool update, bool unequip_check)
{
sLog.outDebug( "STORAGE: DestroyItemCount item = %u, count = %u", item, count);
+1
View File
@@ -1192,6 +1192,7 @@ class TRINITY_DLL_SPEC Player : public Unit, public GridObject<Player>
void MoveItemToInventory(ItemPosCountVec const& dest, Item* pItem, bool update, bool in_characterInventoryDB = false);
// in trade, guild bank, mail....
void RemoveItemDependentAurasAndCasts( Item * pItem );
void HandleDestroyItemReplace( uint32 itemEntry, uint8 bag , uint8 slot , uint16 pos);
void DestroyItem( uint8 bag, uint8 slot, bool update );
void DestroyItemCount( uint32 item, uint32 count, bool update, bool unequip_check = false);
void DestroyItemCount( Item* item, uint32& count, bool update );