aboutsummaryrefslogtreecommitdiff
path: root/src/game/ItemHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/ItemHandler.cpp')
-rw-r--r--src/game/ItemHandler.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/game/ItemHandler.cpp b/src/game/ItemHandler.cpp
index 1c34a1a58a3..62efe7dd234 100644
--- a/src/game/ItemHandler.cpp
+++ b/src/game/ItemHandler.cpp
@@ -49,6 +49,18 @@ void WorldSession::HandleSplitItemOpcode( WorldPacket & recv_data )
if (count==0)
return; //check count - if zero it's fake packet
+ if(!_player->IsValidPos(srcbag,srcslot))
+ {
+ _player->SendEquipError( EQUIP_ERR_ITEM_NOT_FOUND, NULL, NULL );
+ return;
+ }
+
+ if(!_player->IsValidPos(dstbag,dstslot))
+ {
+ _player->SendEquipError( EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT, NULL, NULL );
+ return;
+ }
+
_player->SplitItem( src, dst, count );
}
@@ -66,6 +78,18 @@ void WorldSession::HandleSwapInvItemOpcode( WorldPacket & recv_data )
if(srcslot==dstslot)
return;
+ if(!_player->IsValidPos(INVENTORY_SLOT_BAG_0,srcslot))
+ {
+ _player->SendEquipError( EQUIP_ERR_ITEM_NOT_FOUND, NULL, NULL );
+ return;
+ }
+
+ if(!_player->IsValidPos(INVENTORY_SLOT_BAG_0,dstslot))
+ {
+ _player->SendEquipError( EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT, NULL, NULL );
+ return;
+ }
+
uint16 src = ( (INVENTORY_SLOT_BAG_0 << 8) | srcslot );
uint16 dst = ( (INVENTORY_SLOT_BAG_0 << 8) | dstslot );
@@ -109,6 +133,18 @@ void WorldSession::HandleSwapItem( WorldPacket & recv_data )
if(src==dst)
return;
+ if(!_player->IsValidPos(srcbag,srcslot))
+ {
+ _player->SendEquipError( EQUIP_ERR_ITEM_NOT_FOUND, NULL, NULL );
+ return;
+ }
+
+ if(!_player->IsValidPos(dstbag,dstslot))
+ {
+ _player->SendEquipError( EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT, NULL, NULL );
+ return;
+ }
+
_player->SwapItem( src, dst );
}
@@ -746,6 +782,12 @@ void WorldSession::HandleAutoStoreBagItemOpcode( WorldPacket & recv_data )
if( !pItem )
return;
+ if(!_player->IsValidPos(dstbag,NULL_SLOT))
+ {
+ _player->SendEquipError( EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT, NULL, NULL );
+ return;
+ }
+
uint16 src = pItem->GetPos();
// check unequip potability for equipped items and bank bags