Skip to content

Commit

Permalink
[10100] Fixed some cases assign low guid to full guid update field.
Browse files Browse the repository at this point in the history
  • Loading branch information
VladimirMangos committed Jun 23, 2010
1 parent f8e853d commit 3582e91
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 20 deletions.
8 changes: 4 additions & 4 deletions src/game/Item.cpp
Expand Up @@ -969,10 +969,10 @@ Item* Item::CloneItem( uint32 count, Player const* player ) const
if(!newItem)
return NULL;

newItem->SetUInt32Value( ITEM_FIELD_CREATOR, GetUInt32Value( ITEM_FIELD_CREATOR ) );
newItem->SetUInt32Value( ITEM_FIELD_GIFTCREATOR, GetUInt32Value( ITEM_FIELD_GIFTCREATOR ) );
newItem->SetUInt32Value( ITEM_FIELD_FLAGS, GetUInt32Value( ITEM_FIELD_FLAGS ) );
newItem->SetUInt32Value( ITEM_FIELD_DURATION, GetUInt32Value( ITEM_FIELD_DURATION ) );
newItem->SetGuidValue(ITEM_FIELD_CREATOR, GetGuidValue(ITEM_FIELD_CREATOR));
newItem->SetGuidValue(ITEM_FIELD_GIFTCREATOR, GetGuidValue(ITEM_FIELD_GIFTCREATOR));
newItem->SetUInt32Value(ITEM_FIELD_FLAGS, GetUInt32Value(ITEM_FIELD_FLAGS));
newItem->SetUInt32Value(ITEM_FIELD_DURATION, GetUInt32Value(ITEM_FIELD_DURATION));
newItem->SetItemRandomProperties(GetItemRandomPropertyId());
return newItem;
}
Expand Down
22 changes: 11 additions & 11 deletions src/game/ItemHandler.cpp
Expand Up @@ -1052,64 +1052,64 @@ void WorldSession::HandleWrapItemOpcode(WorldPacket& recv_data)
DEBUG_LOG("WRAP: receive gift_bag = %u, gift_slot = %u, item_bag = %u, item_slot = %u", gift_bag, gift_slot, item_bag, item_slot);

Item *gift = _player->GetItemByPos( gift_bag, gift_slot );
if(!gift)
if (!gift)
{
_player->SendEquipError( EQUIP_ERR_ITEM_NOT_FOUND, gift, NULL );
return;
}

if(!gift->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAGS_WRAPPER))// cheating: non-wrapper wrapper
if (!gift->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAGS_WRAPPER))// cheating: non-wrapper wrapper
{
_player->SendEquipError( EQUIP_ERR_ITEM_NOT_FOUND, gift, NULL );
return;
}

Item *item = _player->GetItemByPos( item_bag, item_slot );

if( !item )
if (!item)
{
_player->SendEquipError( EQUIP_ERR_ITEM_NOT_FOUND, item, NULL );
return;
}

if(item == gift) // not possible with packet from real client
if (item == gift) // not possible with packet from real client
{
_player->SendEquipError( EQUIP_ERR_WRAPPED_CANT_BE_WRAPPED, item, NULL );
return;
}

if(item->IsEquipped())
if (item->IsEquipped())
{
_player->SendEquipError( EQUIP_ERR_EQUIPPED_CANT_BE_WRAPPED, item, NULL );
return;
}

if(item->GetUInt64Value(ITEM_FIELD_GIFTCREATOR)) // HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAGS_WRAPPED);
if (!item->GetGuidValue(ITEM_FIELD_GIFTCREATOR).IsEmpty())// HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAGS_WRAPPED);
{
_player->SendEquipError( EQUIP_ERR_WRAPPED_CANT_BE_WRAPPED, item, NULL );
return;
}

if(item->IsBag())
if (item->IsBag())
{
_player->SendEquipError( EQUIP_ERR_BAGS_CANT_BE_WRAPPED, item, NULL );
return;
}

if(item->IsSoulBound())
if (item->IsSoulBound())
{
_player->SendEquipError( EQUIP_ERR_BOUND_CANT_BE_WRAPPED, item, NULL );
return;
}

if(item->GetMaxStackCount() != 1)
if (item->GetMaxStackCount() != 1)
{
_player->SendEquipError( EQUIP_ERR_STACKABLE_CANT_BE_WRAPPED, item, NULL );
return;
}

// maybe not correct check (it is better than nothing)
if(item->GetProto()->MaxCount > 0)
if (item->GetProto()->MaxCount > 0)
{
_player->SendEquipError( EQUIP_ERR_UNIQUE_CANT_BE_WRAPPED, item, NULL );
return;
Expand All @@ -1128,7 +1128,7 @@ void WorldSession::HandleWrapItemOpcode(WorldPacket& recv_data)
case 17307: item->SetEntry(17308); break;
case 21830: item->SetEntry(21831); break;
}
item->SetUInt64Value(ITEM_FIELD_GIFTCREATOR, _player->GetGUID());
item->SetGuidValue(ITEM_FIELD_GIFTCREATOR, _player->GetObjectGuid());
item->SetUInt32Value(ITEM_FIELD_FLAGS, ITEM_FLAGS_WRAPPED);
item->SetState(ITEM_CHANGED, _player);

Expand Down
2 changes: 1 addition & 1 deletion src/game/Mail.cpp
Expand Up @@ -715,7 +715,7 @@ void WorldSession::HandleMailCreateTextItem(WorldPacket & recv_data )
else
bodyItem->SetText(m->body);

bodyItem->SetUInt32Value(ITEM_FIELD_CREATOR, m->sender);
bodyItem->SetGuidValue(ITEM_FIELD_CREATOR, ObjectGuid(HIGHGUID_PLAYER, m->sender));
bodyItem->SetFlag(ITEM_FIELD_FLAGS, ITEM_FLAGS_WRAPPER | ITEM_FLAGS_UNK4 | ITEM_FLAGS_UNK1);


Expand Down
2 changes: 1 addition & 1 deletion src/game/SpellEffects.cpp
Expand Up @@ -3365,7 +3365,7 @@ void Spell::DoCreateItem(SpellEffectIndex eff_idx, uint32 itemtype)

// set the "Crafted by ..." property of the item
if( pItem->GetProto()->Class != ITEM_CLASS_CONSUMABLE && pItem->GetProto()->Class != ITEM_CLASS_QUEST)
pItem->SetUInt32Value(ITEM_FIELD_CREATOR, player->GetGUIDLow());
pItem->SetGuidValue(ITEM_FIELD_CREATOR, player->GetObjectGuid());

// send info to the client
if(pItem)
Expand Down
4 changes: 2 additions & 2 deletions src/game/TradeHandler.cpp
Expand Up @@ -428,12 +428,12 @@ void WorldSession::HandleAcceptTradeOpcode(WorldPacket& recvPacket)
{
if (Item* item = myItems[i])
{
item->SetUInt64Value( ITEM_FIELD_GIFTCREATOR,_player->GetGUID());
item->SetGuidValue(ITEM_FIELD_GIFTCREATOR, _player->GetObjectGuid());
_player->MoveItemFromInventory(item->GetBagSlot(), item->GetSlot(), true);
}
if (Item* item = hisItems[i])
{
item->SetUInt64Value( ITEM_FIELD_GIFTCREATOR, trader->GetGUID());
item->SetGuidValue(ITEM_FIELD_GIFTCREATOR, trader->GetObjectGuid());
trader->MoveItemFromInventory(item->GetBagSlot(), item->GetSlot(), true);
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/shared/revision_nr.h
@@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "10099"
#define REVISION_NR "10100"
#endif // __REVISION_NR_H__

2 comments on commit 3582e91

@Izidor
Copy link

@Izidor Izidor commented on 3582e91 Jun 25, 2010

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix the problem when you have a lot of guids and some item don't work i think, thx.

@VladimirMangos
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in fact for current code it not expected any changes in work, but in future possible player guid will not have always 0 as high guid part
In like case important porper use full guids when expected instead lowguid only part.

Please sign in to comment.