mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-22 05:06:24 +00:00
fix(Core/Creature): Implement CREATURE_FLAG_EXTRA_NO_SELL_VENDOR (#4233)
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1610068635267906600');
|
||||
|
||||
UPDATE `creature_template` SET `flags_extra`=`flags_extra`|0x00001000 WHERE `entry` = 27914;
|
||||
@@ -40,7 +40,7 @@ enum CreatureFlagsExtra : uint32
|
||||
CREATURE_FLAG_EXTRA_UNUSED_10 = 0x00000200, // TODO: Implement CREATURE_FLAG_EXTRA_NO_MOVE_FLAGS_UPDATE (creature won't update movement flags)
|
||||
CREATURE_FLAG_EXTRA_GHOST_VISIBILITY = 0x00000400, // creature will be only visible for dead players
|
||||
CREATURE_FLAG_EXTRA_UNUSED_12 = 0x00000800, // TODO: Implement CREATURE_FLAG_EXTRA_USE_OFFHAND_ATTACK (creature will use offhand attacks)
|
||||
CREATURE_FLAG_EXTRA_UNUSED_13 = 0x00001000, // TODO: CREATURE_FLAG_EXTRA_NO_SELL_VENDOR (players can't sell items to this vendor)
|
||||
CREATURE_FLAG_EXTRA_NO_SELL_VENDOR = 0x00001000, // players can't sell items to this vendor
|
||||
CREATURE_FLAG_EXTRA_UNUSED_14 = 0x00002000,
|
||||
CREATURE_FLAG_EXTRA_WORLDEVENT = 0x00004000, // custom flag for world event creatures (left room for merging)
|
||||
CREATURE_FLAG_EXTRA_GUARD = 0x00008000, // Creature is guard
|
||||
@@ -62,7 +62,7 @@ enum CreatureFlagsExtra : uint32
|
||||
CREATURE_FLAG_EXTRA_UNUSED_32 = 0x80000000,
|
||||
|
||||
// Masks
|
||||
CREATURE_FLAG_EXTRA_UNUSED = (CREATURE_FLAG_EXTRA_UNUSED_10 | CREATURE_FLAG_EXTRA_UNUSED_12 | CREATURE_FLAG_EXTRA_UNUSED_13 |
|
||||
CREATURE_FLAG_EXTRA_UNUSED = (CREATURE_FLAG_EXTRA_UNUSED_10 | CREATURE_FLAG_EXTRA_UNUSED_12 |
|
||||
CREATURE_FLAG_EXTRA_UNUSED_14 | CREATURE_FLAG_EXTRA_UNUSED_17 | CREATURE_FLAG_EXTRA_UNUSED_22 |
|
||||
CREATURE_FLAG_EXTRA_UNUSED_25 | CREATURE_FLAG_EXTRA_UNUSED_26 | CREATURE_FLAG_EXTRA_UNUSED_27 |
|
||||
CREATURE_FLAG_EXTRA_UNUSED_28 | CREATURE_FLAG_EXTRA_UNUSED_32),
|
||||
|
||||
@@ -132,12 +132,15 @@ enum BuyResult
|
||||
|
||||
enum SellResult
|
||||
{
|
||||
SELL_ERR_CANT_FIND_ITEM = 1,
|
||||
SELL_ERR_CANT_SELL_ITEM = 2, // merchant doesn't like that item
|
||||
SELL_ERR_CANT_FIND_VENDOR = 3, // merchant doesn't like you
|
||||
SELL_ERR_YOU_DONT_OWN_THAT_ITEM = 4, // you don't own that item
|
||||
SELL_ERR_UNK = 5, // nothing appears...
|
||||
SELL_ERR_ONLY_EMPTY_BAG = 6 // can only do with empty bags
|
||||
SELL_ERR_CANT_FIND_ITEM = 1, // The item was not found.
|
||||
SELL_ERR_CANT_SELL_ITEM = 2, // The merchant doesn't want that item.
|
||||
SELL_ERR_CANT_FIND_VENDOR = 3, // The merchant doesn't like you.
|
||||
SELL_ERR_YOU_DONT_OWN_THAT_ITEM = 4, // You don't own that item.
|
||||
SELL_ERR_UNK = 5, // Nothing appears...
|
||||
SELL_ERR_ONLY_EMPTY_BAG = 6, // You can only do that with empty bags.
|
||||
SELL_ERR_CANT_SELL_TO_THIS_MERCHANT = 7, // You cannot sell items to this merchant.
|
||||
SELL_ERR_MUST_REPAIR_ITEM_DURABILITY_TO_USE = 8, // You must repair that item's durability to use it.
|
||||
SELL_INTERNAL_BAG_ERROR = 9 // Internal Bag Error
|
||||
};
|
||||
|
||||
// -1 from client enchantment slot number
|
||||
|
||||
@@ -647,6 +647,12 @@ void WorldSession::HandleSellItemOpcode(WorldPacket& recvData)
|
||||
return;
|
||||
}
|
||||
|
||||
if ((creature->GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_NO_SELL_VENDOR) != 0)
|
||||
{
|
||||
_player->SendSellError(SELL_ERR_CANT_SELL_TO_THIS_MERCHANT, creature, itemguid, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
// remove fake death
|
||||
if (GetPlayer()->HasUnitState(UNIT_STATE_DIED))
|
||||
GetPlayer()->RemoveAurasByType(SPELL_AURA_FEIGN_DEATH);
|
||||
|
||||
Reference in New Issue
Block a user