aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorclick <none@none>2010-07-11 23:53:48 +0200
committerclick <none@none>2010-07-11 23:53:48 +0200
commit07c1d011d436abac8703d3efabff864076b41d68 (patch)
tree4f1fb9d71e93b6f7212cc81df709ad819d35673c
parent307bf7f73ea30b2ea6db796072c029911e9bcd18 (diff)
Reinstate ITEM_FLAGS_NO_EQUIP_COOLDOWN implementation and the serverside checks for ITEM_FLAGS_INDESTRUCTIBLE (with prototypes this time)
--HG-- branch : trunk
-rw-r--r--src/server/game/Entities/Item/ItemPrototype.h3
-rw-r--r--src/server/game/Entities/Player/Player.cpp3
-rw-r--r--src/server/game/Maps/Map.cpp1
-rw-r--r--src/server/game/Server/Protocol/Handlers/ItemHandler.cpp6
4 files changed, 11 insertions, 2 deletions
diff --git a/src/server/game/Entities/Item/ItemPrototype.h b/src/server/game/Entities/Item/ItemPrototype.h
index 0368b7c4dd1..7f4dc97df00 100644
--- a/src/server/game/Entities/Item/ItemPrototype.h
+++ b/src/server/game/Entities/Item/ItemPrototype.h
@@ -111,8 +111,9 @@ enum ITEM_FLAGS
ITEM_FLAGS_OPENABLE = 0x00000004,
ITEM_FLAGS_WRAPPED = 0x00000008,
ITEM_FLAGS_BROKEN = 0x00000010, // appears red icon (like when item durability == 0)
- ITEM_FLAGS_TOTEM = 0x00000020, // ?
+ ITEM_FLAGS_INDESTRUCTIBLE = 0x00000020, // Item can not be destroyed, except by using spell (item can be reagent for spell and then allowed)
ITEM_FLAGS_USABLE = 0x00000040, // ?
+ ITEM_FLAGS_NO_EQUIP_COOLDOWN = 0x00000080, // ?
ITEM_FLAGS_WRAPPER = 0x00000200, // used or not used wrapper
ITEM_FLAGS_PARTY_LOOT = 0x00000800, // determines if item is party loot or not
ITEM_FLAGS_REFUNDABLE = 0x00001000, // item cost can be refunded within 2 hours after purchase
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 927cd189e30..8e93798ac1b 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -21002,6 +21002,9 @@ void Player::SendInstanceResetWarning(uint32 mapid, Difficulty difficulty, uint3
void Player::ApplyEquipCooldown(Item * pItem)
{
+ if (pItem->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAGS_NO_EQUIP_COOLDOWN))
+ return;
+
for (uint8 i = 0; i < MAX_ITEM_PROTO_SPELLS; ++i)
{
_Spell const& spellData = pItem->GetProto()->Spells[i];
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index f0d1b5d05ee..6c9b505d6c9 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -113,7 +113,6 @@ bool Map::ExistVMap(uint32 mapid,int gx,int gy)
{
if (vmgr->isMapLoadingEnabled())
{
- // x and y are swapped !! => fixed now
bool exists = vmgr->existsMap((sWorld.GetDataPath()+ "vmaps").c_str(), mapid, gx,gy);
if (!exists)
{
diff --git a/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp b/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp
index e9b9004804a..d969013801b 100644
--- a/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp
@@ -263,6 +263,12 @@ void WorldSession::HandleDestroyItemOpcode(WorldPacket & recv_data)
return;
}
+ if (pItem->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAGS_INDESTRUCTIBLE))
+ {
+ _player->SendEquipError(EQUIP_ERR_CANT_DROP_SOULBOUND, NULL, NULL);
+ return;
+ }
+
if (count)
{
uint32 i_count = count;