void Reward(Player* player, uint8 killed, uint8 killedType) { if (!MultiKillEnable) return; for (uint16 i = 0; i < MultiKillInfo.size(); ++i) { if (MultiKillInfo[i].Count == killed && MultiKillInfo[i].Type == killedType) { Battleground* bg = NULL; if (player->InBattleground()) bg = player->GetBattleground(); if (MultiKillInfo[i].BuffFirst != 0) player->CastSpell(player, MultiKillInfo[i].BuffFirst, true); if (MultiKillInfo[i].BuffSecond != 0) player->CastSpell(player, MultiKillInfo[i].BuffSecond, true); if (MultiKillInfo[i].Gold != 0) player->ModifyMoney(MultiKillInfo[i].Gold * GOLD); if (MultiKillInfo[i].Sound != 0) { if (bg) bg->PlaySoundToAll(MultiKillInfo[i].Sound); else { WorldPacket data(SMSG_PLAY_SOUND, 4); data << uint32(MultiKillInfo[i].Sound) << player->GetGUIDLow(); sWorld->SendGlobalMessage(&data); } } // Reward Honor if (MultiKillInfo[i].Honor != 0) player->RewardHonor(NULL, 1, MultiKillInfo[i].Honor); // TrinityStringId if (MultiKillInfo[i].Text != 0) { if (bg) bg->PSendMessageToAll(MultiKillInfo[i].Text, CHAT_MSG_SYSTEM, NULL, player->GetName().c_str()); else sWorld->SendWorldText(MultiKillInfo[i].Text, player->GetName().c_str()); } // KillCredit for quests/achi. if (MultiKillInfo[i].KillCredit != 0) player->KilledMonsterCredit(MultiKillInfo[i].KillCredit, 0); if (!MultiKillLog) return; CharacterDatabase.PExecute( "INSERT INTO `character_multikill` (`guid`, `count`, `type`, `time`) VALUES ('%u', '%u', '%u', CURRENT_TIMESTAMP())", player->GetGUIDLow(), killed, killedType ); return; } } }