diff options
author | Shauren <none@none> | 2010-08-04 10:34:30 +0200 |
---|---|---|
committer | Shauren <none@none> | 2010-08-04 10:34:30 +0200 |
commit | b7d34dcb534a14098f1666bf6de38d9895642191 (patch) | |
tree | 20e02e2ec035463ff8070277d69d665ab76bf104 /src/server/game/Mails/Mail.cpp | |
parent | 846aa122605e6862b3c0a58e2d741c379aa1a3ef (diff) |
Cleaned up item flags: separated item proto flags and item field flags
Implemented use of:
ITEM_PROTO_FLAG_PROSPECTABLE and ITEM_PROTO_FLAG_MILLABLE now checked instead of bag family mask
ITEM_PROTO_FLAG_SMART_LOOT for profession recipes, player has to have skillline and not know the recipe
ITEM_PROTO_FLAG_OPENABLE item has to have it set to use item_loot_template
ITEM_PROTO_FLAG_NOT_USEABLE_IN_ARENA if this is set item can never be used in arena
ITEM_FLAG_UNLOCKED marks unlocked items
Simplified BoA check for mail sending
Stackable items are no longer refundable
Removed useless code that always set ITEM_FIELD_FLAGS equal to proto flags
Unlocking items (lockpicking) is now blizzlike
--HG--
branch : trunk
Diffstat (limited to 'src/server/game/Mails/Mail.cpp')
-rw-r--r-- | src/server/game/Mails/Mail.cpp | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/server/game/Mails/Mail.cpp b/src/server/game/Mails/Mail.cpp index 77f971bf4d0..7cf1138d610 100644 --- a/src/server/game/Mails/Mail.cpp +++ b/src/server/game/Mails/Mail.cpp @@ -161,16 +161,14 @@ void WorldSession::HandleSendMail(WorldPacket & recv_data) return; } // test the receiver's Faction... or all items are account bound - bool accountBound = false; + bool accountBound = items_count ? true : false; for (uint8 i = 0; i < items_count; ++i) { - Item* item = pl->GetItemByGuid(itemGUIDs[i]) ; - if (item ) + Item* item = pl->GetItemByGuid(itemGUIDs[i]); + if (item) { - ItemPrototype const* itemProto= item->GetProto(); - if(itemProto && (itemProto->Flags & ITEM_FLAGS_BOA)) - accountBound = true; - else + ItemPrototype const* itemProto = item->GetProto(); + if(!itemProto || !(itemProto->Flags & ITEM_PROTO_FLAG_BIND_TO_ACCOUNT)) { accountBound = false; break; @@ -224,13 +222,13 @@ void WorldSession::HandleSendMail(WorldPacket & recv_data) return; } - if (item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAGS_CONJURED) || item->GetUInt32Value(ITEM_FIELD_DURATION)) + if (item->GetProto()->Flags & ITEM_PROTO_FLAG_CONJURED || item->GetUInt32Value(ITEM_FIELD_DURATION)) { pl->SendMailResult(0, MAIL_SEND, MAIL_ERR_EQUIP_ERROR, EQUIP_ERR_MAIL_BOUND_ITEM); return; } - if (COD && item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAGS_WRAPPED)) + if (COD && item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_WRAPPED)) { pl->SendMailResult(0, MAIL_SEND, MAIL_ERR_CANT_SEND_WRAPPED_COD); return; @@ -702,7 +700,7 @@ void WorldSession::HandleMailCreateTextItem(WorldPacket & recv_data) bodyItem->SetText(m->body); bodyItem->SetUInt32Value(ITEM_FIELD_CREATOR, m->sender); - bodyItem->SetFlag(ITEM_FIELD_FLAGS, ITEM_FLAGS_WRAPPER | ITEM_FLAGS_REFUNDABLE_2 | ITEM_FLAGS_UNK1); + bodyItem->SetFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_MAIL_TEXT_MASK); sLog.outDetail("HandleMailCreateTextItem mailid=%u",mailId); |