//// MxWoW Official Module //// Boss Kill //// Dev: mikx //// Git: https://mxgit.ovh/MxWoW/mod_mxwow_bounty #include "Configuration/Config.h" #include "ScriptMgr.h" #include "Player.h" #include "Chat.h" #include class mxwow_bounty : public PlayerScript { public: mxwow_bounty() : PlayerScript("mxwow_bounty") { } void OnPlayerLogin(Player* player) override { } void OnPlayerCreatureKill(Player* player, Creature* creature) { if (!sConfigMgr->GetOption("MxWoW_Bounty.Enabled", true)) { return; } std::ostringstream ss; uint32 calculatedAmount = 0; uint32 giveAmount = 0; uint32 levelDif = 0; uint32 base = sConfigMgr->GetOption("MxWoW_Bounty.Base.Copper", true); Map* map = player->GetMap(); uint32 pLevel = player->GetLevel(); bool pGrouped = player->GetGroup(); std::string cName = creature->GetName(); uint32 cLevel = creature->GetLevel(); uint32 multiplicator = 1; if (creature->isElite()) { multiplicator = 2; } if (creature->IsDungeonBoss()) { multiplicator = 3; } if (creature->isWorldBoss()) { multiplicator = 4; } if (map->IsHeroic()) { multiplicator = 5; } calculatedAmount = ((base * cLevel) * multiplicator); giveAmount += calculatedAmount; uint32 formatedAmountCopper = calculatedAmount % 100; calculatedAmount = (calculatedAmount - formatedAmountCopper) / 100; uint32 formatedAmountSilver = calculatedAmount % 100; uint32 formatedAmountGold = (calculatedAmount - formatedAmountSilver) / 100; if (!pGrouped) { if (formatedAmountGold > 0) { ss << "|cffabeeff[MxW] Vous obtenez une récompense de |cffffb300" << formatedAmountGold << "g |cff9c9994" << formatedAmountSilver << "s |cffb87333" << formatedAmountCopper << "c |cffabeeffpour avoir tué " << cName << " (" << cLevel << ")."; } if (formatedAmountGold == 0 && formatedAmountSilver > 0) { ss << "|cffabeeff[MxW] Vous obtenez une récompense de |cff9c9994" << formatedAmountSilver << "s |cffb87333" << formatedAmountCopper << "c |cffabeeffpour avoir tué " << cName << " (" << cLevel << ")."; } if (formatedAmountGold == 0 && formatedAmountSilver == 0 && formatedAmountCopper > 0) { ss << "|cffabeeff[MxW] Vous obtenez une récompense de |cffb87333" << formatedAmountCopper << "c |cffabeeffpour avoir tué " << cName << " (" << cLevel << ")."; } player->ModifyMoney(+int32(giveAmount)); ChatHandler(player->GetSession()).PSendSysMessage(ss.str().c_str()); } else { Group* group = player->GetGroup(); Group::MemberSlotList const& groupSlot = group->GetMemberSlots(); for (Group::member_citerator itr = groupSlot.begin(); itr != groupSlot.end(); itr++) { Player* p = ObjectAccessor::FindPlayer(itr->guid); if (formatedAmountGold > 0) { ss << "|cffabeeff[MxW] Vous obtenez une récompense de |cffffb300" << formatedAmountGold << "g |cff9c9994" << formatedAmountSilver << "s |cffb87333" << formatedAmountCopper << "c |cffabeeffpour avoir tué " << cName << " (" << cLevel << ")."; } if (formatedAmountGold == 0 && formatedAmountSilver > 0) { ss << "|cffabeeff[MxW] Vous obtenez une récompense de |cff9c9994" << formatedAmountSilver << "s |cffb87333" << formatedAmountCopper << "c |cffabeeffpour avoir tué " << cName << " (" << cLevel << ")."; } if (formatedAmountGold == 0 && formatedAmountSilver == 0 && formatedAmountCopper > 0) { ss << "|cffabeeff[MxW] Vous obtenez une récompense de |cffb87333" << formatedAmountCopper << "c |cffabeeffpour avoir tué " << cName << " (" << cLevel << ")."; } p->ModifyMoney(+int32(giveAmount)); ChatHandler(p->GetSession()).PSendSysMessage(ss.str().c_str()); } } } }; void AddMxWoWBountyScripts() { new mxwow_bounty(); }