From a005d4a9e31a294e00d256652080f2d872509046 Mon Sep 17 00:00:00 2001 From: Shocker Date: Tue, 4 Sep 2012 17:52:10 +0300 Subject: Core/Spells: Implement SPELL_AURA_MOD_VENDOR_ITEMS_PRICES --- src/server/game/Entities/Player/Player.cpp | 3 +++ src/server/game/Handlers/ItemHandler.cpp | 3 +++ src/server/game/Spells/Auras/SpellAuraDefines.h | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index eb7208ceb46..3919c6d3bc3 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -21363,6 +21363,9 @@ bool Player::BuyItemFromVendorSlot(uint64 vendorguid, uint32 vendorslot, uint32 // reputation discount price = uint32(floor(price * GetReputationPriceDiscount(creature))); + if (int32 priceMod = GetTotalAuraModifier(SPELL_AURA_MOD_VENDOR_ITEMS_PRICES)) + price -= CalculatePctN(price, priceMod); + if (!HasEnoughMoney(uint64(price))) { SendBuyError(BUY_ERR_NOT_ENOUGHT_MONEY, creature, item, 0); diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index 3b38db78d94..5b5f83719e3 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -775,6 +775,9 @@ void WorldSession::SendListInventory(uint64 vendorGuid) } int32 price = vendorItem->IsGoldRequired(itemTemplate) ? uint32(floor(itemTemplate->BuyPrice * discountMod)) : 0; + + if (int32 priceMod = _player->GetTotalAuraModifier(SPELL_AURA_MOD_VENDOR_ITEMS_PRICES)) + price -= CalculatePctN(price, priceMod); itemsData << uint32(count++ + 1); // client expects counting to start at 1 itemsData << uint32(itemTemplate->MaxDurability); diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index 1482136f52e..c20397aa960 100755 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -396,7 +396,7 @@ enum AuraType SPELL_AURA_334 = 334, SPELL_AURA_335 = 335, SPELL_AURA_MOD_FLYING_RESTRICTIONS = 336, // NYI - SPELL_AURA_MOD_VENDOR_ITEMS_PRICES = 337, // NYI + SPELL_AURA_MOD_VENDOR_ITEMS_PRICES = 337, SPELL_AURA_MOD_DURABILITY_LOSS = 338, SPELL_AURA_INCREASE_SKILL_GAIN_CHANCE = 339, // NYI SPELL_AURA_340 = 340, -- cgit v1.2.3