From d1a5689b6520d243487ce29335905a6e7b5f883d Mon Sep 17 00:00:00 2001 From: megamage Date: Wed, 12 Aug 2009 20:36:55 -0500 Subject: [PATCH] [8344] In case battleground reward items player must "receive" instead "create" item in message. Author: VladimirMangos --HG-- branch : trunk --- src/game/BattleGround.cpp | 2 +- src/game/SpellEffects.cpp | 34 ++++++++++++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/game/BattleGround.cpp b/src/game/BattleGround.cpp index aeccd350c6..63b0560a4e 100644 --- a/src/game/BattleGround.cpp +++ b/src/game/BattleGround.cpp @@ -883,7 +883,7 @@ void BattleGround::RewardItem(Player *plr, uint32 item_id, uint32 count) if( count != 0 && !dest.empty()) // can add some if (Item* item = plr->StoreNewItem( dest, item_id, true, 0)) - plr->SendNewItem(item,count,false,true); + plr->SendNewItem(item,count,true,false); if (no_space_count > 0) SendRewardMarkByMail(plr,item_id,no_space_count); diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 46ed5761b2..7105a3fafc 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -2716,6 +2716,26 @@ void Spell::DoCreateItem(uint32 i, uint32 itemtype) return; } + // bg reward have some special in code work + uint32 bgType = 0; + switch(m_spellInfo->Id) + { + case SPELL_AV_MARK_WINNER: + case SPELL_AV_MARK_LOSER: + bgType = BATTLEGROUND_AV; + break; + case SPELL_WS_MARK_WINNER: + case SPELL_WS_MARK_LOSER: + bgType = BATTLEGROUND_WS; + break; + case SPELL_AB_MARK_WINNER: + case SPELL_AB_MARK_LOSER: + bgType = BATTLEGROUND_AB; + break; + default: + break; + } + uint32 num_to_add; // TODO: maybe all this can be replaced by using correct calculated `damage` value @@ -2798,11 +2818,21 @@ void Spell::DoCreateItem(uint32 i, uint32 itemtype) // send info to the client if(pItem) - player->SendNewItem(pItem, num_to_add, true, true); + player->SendNewItem(pItem, num_to_add, true, bgType == 0); // we succeeded in creating at least one item, so a levelup is possible - player->UpdateCraftSkill(m_spellInfo->Id); + if(bgType == 0) + player->UpdateCraftSkill(m_spellInfo->Id); } + +/* + // for battleground marks send by mail if not add all expected + if(no_space > 0 && bgType) + { + if(BattleGround* bg = sBattleGroundMgr.GetBattleGroundTemplate(BattleGroundTypeId(bgType))) + bg->SendRewardMarkByMail(player, newitemid, no_space); + } +*/ } void Spell::EffectCreateItem(uint32 i)