First Commit

This commit is contained in:
mikx
2025-03-18 19:19:03 -04:00
commit 93073b0be2
10024 changed files with 9034050 additions and 0 deletions

View File

@@ -0,0 +1,109 @@
//// 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 <WorldSessionMgr.h>
class mxwow_bounty : public PlayerScript
{
public:
mxwow_bounty() : PlayerScript("mxwow_bounty") { }
void OnPlayerLogin(Player* player) override
{
if (sConfigMgr->GetOption<bool>("MxWoW_Bounty.Enabled", true)) { return; }
ChatHandler(player->GetSession()).SendSysMessage("This server is running the |cff4CFF00MxW Bounty |rmodule.");
}
void OnPlayerCreatureKill(Player* player, Creature* creature) {
if (!sConfigMgr->GetOption<bool>("MxWoW_Bounty.Enabled", true)) { return; }
std::ostringstream ss;
uint32 calculatedAmount = 0;
uint32 giveAmount = 0;
uint32 levelDif = 0;
uint32 base = sConfigMgr->GetOption<int>("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 << ").";
}
ChatHandler(player->GetSession()).PSendSysMessage(ss.str().c_str());
player->ModifyMoney(+int32(giveAmount));
}
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 << ").";
}
ChatHandler(p->GetSession()).PSendSysMessage(ss.str().c_str());
p->ModifyMoney(+int32(giveAmount));
}
}
}
};
void AddMxWoWBountyScripts()
{
new mxwow_bounty();
}