void BattleGround::RewardMark(Player *plr,uint32 count) { // 'Inactive' this aura prevents the player from gaining honor points and battleground tokens if(plr->GetDummyAura(SPELL_AURA_PLAYER_INACTIVE)) return; BattleGroundMarks mark; bool IsSpell; switch(GetTypeID()) { case BATTLEGROUND_AV: IsSpell = true; if(count == ITEM_WINNER_COUNT) mark = SPELL_AV_MARK_WINNER; else mark = SPELL_AV_MARK_LOSER; break; case BATTLEGROUND_WS: IsSpell = true; if(count == ITEM_WINNER_COUNT) mark = SPELL_WS_MARK_WINNER; else mark = SPELL_WS_MARK_LOSER; break; case BATTLEGROUND_AB: IsSpell = true; if(count == ITEM_WINNER_COUNT) mark = SPELL_AB_MARK_WINNER; else mark = SPELL_AB_MARK_LOSER; break;/* case BATTLEGROUND_EY: IsSpell = false; mark = ITEM_EY_MARK_OF_HONOR; break;*/ default: return; } if(IsSpell) plr->CastSpell(plr, mark, true); else if ( objmgr.GetItemPrototype( mark ) ) { ItemPosCountVec dest; uint32 no_space_count = 0; uint8 msg = plr->CanStoreNewItem( NULL_BAG, NULL_SLOT, dest, mark, count, &no_space_count ); if( msg != EQUIP_ERR_OK ) // convert to possible store amount count -= no_space_count; if( count != 0 && !dest.empty()) // can add some if(Item* item = plr->StoreNewItem( dest, mark, true, 0)) plr->SendNewItem(item,count,false,true); if(no_space_count > 0) SendRewardMarkByMail(plr,mark,no_space_count); } }
void BattleGround::RewardItem(Player* plr, uint32 item_id, uint32 count) { ItemPosCountVec dest; uint32 no_space_count = 0; uint8 msg = plr->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, item_id, count, &no_space_count); if (msg == EQUIP_ERR_ITEM_NOT_FOUND) { sLog.outErrorDb("Battleground reward item (Entry %u) not exist in `item_template`.", item_id); return; } if (msg != EQUIP_ERR_OK) // convert to possible store amount count -= no_space_count; if (count != 0 && !dest.empty()) // can add some if (Item* item = plr->StoreNewItem(dest, item_id, true, 0)) plr->SendNewItem(item, count, true, false); if (no_space_count > 0) SendRewardMarkByMail(plr, item_id, no_space_count); }