modules fix 2/2

This commit is contained in:
mikx
2023-11-07 18:24:46 -05:00
parent a5e7626eb8
commit 6b80b68e2e
88 changed files with 6694 additions and 0 deletions

View File

@@ -0,0 +1,257 @@
//// MxWoW Official Module
//// Servant
//// Dev: mikx
//// Git: https://mxgit.ovh/MxWoW/mod_mxwow_servant
//// Credits:
//// based on works by gtao725 "mod-npc-buffer" https://github.com/azerothcore/mod-npc-buffer
//// based on works by acidmanifesto "mod-npc-services" https://github.com/azerothcore/mod-npc-services
#include "Define.h"
#include "GossipDef.h"
#include "Item.h"
#include "Player.h"
#include "ScriptedGossip.h"
#include "ScriptMgr.h"
#include "Spell.h"
#include "Configuration/Config.h"
#include "Chat.h"
enum ServantString
{
MXW_SERVANT_ACORE_STRING_MESSAGE = 60000
};
class mxwow_servantPlayer : public PlayerScript
{
public:
mxwow_servantPlayer() : PlayerScript("mxwow_servantPlayer") { }
void OnLogin(Player* player) override
{
ChatHandler(player->GetSession()).SendSysMessage("This server is running the |cff4CFF00MxW Servant |rmodule.");
}
};
class mxwow_servantCreature : public CreatureScript
{
public:
mxwow_servantCreature() : CreatureScript("mxwow_servantCreature") { }
bool OnGossipHello(Player* player, Creature* creature) override
{
if (!sConfigMgr->GetOption<bool>("MxWoW_Servant.Enabled", true))
return false;
AddGossipItemFor(player, 10, "|TInterface/Icons/inv_hammer_08:30:30:-18|t Réparer (Tout)", GOSSIP_SENDER_MAIN, 1);
AddGossipItemFor(player, 10, "|TInterface/Icons/inv_misc_enggizmos_18:30:30:-18|t Banque", GOSSIP_SENDER_MAIN, 2);
AddGossipItemFor(player, 10, "|TInterface/Icons/INV_Letter_11:30:30:-18|t Courrier", GOSSIP_SENDER_MAIN, 3);
AddGossipItemFor(player, 10, "|TInterface/Icons/spell_shadow_teleport:30:30:-18|t Buff", GOSSIP_SENDER_MAIN, 4);
AddGossipItemFor(player, 10, "|TInterface/Icons/Achievement_BG_AB_defendflags:30:30:-18|t Mettre fin au combat", GOSSIP_SENDER_MAIN, 5);
AddGossipItemFor(player, 10, "|TInterface/Icons/inv_misc_bag_11:30:30:-18|t Marchant", GOSSIP_SENDER_MAIN, 6);
AddGossipItemFor(player, 10, "|TInterface/Icons/inv_misc_coin_17:30:30:-18|t Enchère", GOSSIP_SENDER_MAIN, 7);
AddGossipItemFor(player, 10, "|TInterface/Icons/Ability_paladin_beaconoflight:30:30:-18|t Transmo", GOSSIP_SENDER_MAIN, 8);
AddGossipItemFor(player, 10, "|TInterface/Icons/inv_crate_01:30:30:-18|t Matériaux", GOSSIP_SENDER_MAIN, 9);
SendGossipMenuFor(player, 20000000, creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
uint32 pLevel = player->GetLevel();
switch (action)
{
case 1:
CloseGossipMenuFor(player);
player->DurabilityRepairAll(true, 0, false);
player->CastSpell(player, 31726);
break;
case 2:
CloseGossipMenuFor(player);
player->GetSession()->SendShowBank(player->GetGUID());
player->CastSpell(player, 31726);
break;
case 3:
CloseGossipMenuFor(player);
player->GetSession()->SendShowMailBox(player->GetGUID());
break;
case 4:
CloseGossipMenuFor(player);
if (player->GetMap()->IsDungeon() || player->GetMap()->IsRaid()) {
if (pLevel < 10)
{
// Dish out the buffs
player->CastSpell(player, 21562, true); // Prayer of Fortitude (Rank 1)
player->CastSpell(player, 1126, true); // Mark of the Wild (Rank 1)
player->CastSpell(player, 27683, true); // Prayer of Shadow Protection (Rank 1)
} // 1-9
else if (pLevel >= 10 && pLevel < 20)
{
player->CastSpell(player, 21562, true); // Prayer of Fortitude (Rank 1)
player->CastSpell(player, 1126, true); // Mark of the Wild (Rank 1)
player->CastSpell(player, 27683, true); // Prayer of Shadow Protection (Rank 1)
} // 10-19
else if (pLevel >= 20 && pLevel < 30)
{
player->CastSpell(player, 21562, true); // Prayer of Fortitude (Rank 1)
player->CastSpell(player, 1126, true); // Mark of the Wild (Rank 1)
player->CastSpell(player, 27683, true); // Prayer of Shadow Protection (Rank 1)
player->CastSpell(player, 13326, true); // Arcane Intellect (Rank 1)
} // 20-29
else if (pLevel >= 30 && pLevel < 40)
{
player->CastSpell(player, 21562, true); // Prayer of Fortitude (Rank 1)
player->CastSpell(player, 25898, true); // Greater Blessing of Kings (Rank 1)
player->CastSpell(player, 1126, true); // Mark of the Wild (Rank 1)
player->CastSpell(player, 27681, true); // Prayer of Spirit (Rank 1)
player->CastSpell(player, 27683, true); // Prayer of Shadow Protection (Rank 1)
player->CastSpell(player, 13326, true); // Arcane Intellect (Rank 1)
} // 30-39
else if (pLevel >= 40 && pLevel < 50)
{
player->CastSpell(player, 21562, true); // Prayer of Fortitude (Rank 1)
player->CastSpell(player, 48469, true); // Mark of the Wild(48469)
player->CastSpell(player, 27681, true); // Prayer of Spirit (Rank 1)
player->CastSpell(player, 48170, true); // Prayer of Shadow Protection(48170)
player->CastSpell(player, 13326, true); // Arcane Intellect (Rank 1)
} // 40-49
else if (pLevel >= 50 && pLevel < 60)
{
player->CastSpell(player, 48162, true); // Prayer of Fortitude(48162)
player->CastSpell(player, 43223, true); // Greater Blessing of Kings(43223)
player->CastSpell(player, 48469, true); // Mark of the Wild(48469)
player->CastSpell(player, 48074, true); // Prayer of Spirit(48074)
player->CastSpell(player, 48170, true); // Prayer of Shadow Protection(48170)
player->CastSpell(player, 36880, true); // Arcane Intellect(36880)
} // 50-59
else if (pLevel >= 60 && pLevel < 70)
{
player->CastSpell(player, 48162, true); // Prayer of Fortitude(48162)
player->CastSpell(player, 43223, true); // Greater Blessing of Kings(43223)
player->CastSpell(player, 48469, true); // Mark of the Wild(48469)
player->CastSpell(player, 48074, true); // Prayer of Spirit(48074)
player->CastSpell(player, 48170, true); // Prayer of Shadow Protection(48170)
player->CastSpell(player, 36880, true); // Arcane Intellect(36880)
} // 60-69
else if (pLevel >= 70 && pLevel < 80)
{
player->CastSpell(player, 48162, true); // Prayer of Fortitude(48162)
player->CastSpell(player, 43223, true); // Greater Blessing of Kings(43223)
player->CastSpell(player, 48469, true); // Mark of the Wild(48469)
player->CastSpell(player, 48074, true); // Prayer of Spirit(48074)
player->CastSpell(player, 48170, true); // Prayer of Shadow Protection(48170)
player->CastSpell(player, 36880, true); // Arcane Intellect(36880)
} // 70-79
else
{
player->CastSpell(player, 48162, true); // Prayer of Fortitude(48162)
player->CastSpell(player, 43223, true); // Greater Blessing of Kings(43223)
player->CastSpell(player, 48469, true); // Mark of the Wild(48469)
player->CastSpell(player, 48074, true); // Prayer of Spirit(48074)
player->CastSpell(player, 48170, true); // Prayer of Shadow Protection(48170)
player->CastSpell(player, 36880, true); // Arcane Intellect(36880)
} // LEVEL 80
}
else {
ChatHandler(player->GetSession()).SendSysMessage(MXW_SERVANT_ACORE_STRING_MESSAGE);
}
player->CastSpell(player, 31726);
break;
case 5:
CloseGossipMenuFor(player);
player->CombatStop();
player->CastSpell(player, 31726);
break;
case 6:
CloseGossipMenuFor(player);
SummonTempNPC(player, 32639, 300000);
player->CastSpell(player, 31726);
break;
case 7:
CloseGossipMenuFor(player);
SummonTempNPC(player, 8670, 300000);
player->CastSpell(player, 31726);
break;
case 8:
CloseGossipMenuFor(player);
SummonTempNPC(player, 190010, 300000);
player->CastSpell(player, 31726);
break;
case 9:
CloseGossipMenuFor(player);
SummonTempNPC(player, 190011, 300000);
player->CastSpell(player, 31726);
break;
}
return true;
}
void SummonTempNPC(Player* player, uint32 entry, uint32 despawn)
{
if (!player || entry == 0)
return;
Creature* npc = player->SummonCreature(entry, player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000);
npc->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
npc->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, player->GetFollowAngle());
npc->SetFaction(player->GetFaction());
std::ostringstream ss;
ss << "Salut " << player->GetName() << "! Je suis à ton service pour 5 minutes.";
npc->Whisper(ss.str().c_str(), LANG_UNIVERSAL, player, false);
}
};
class mxwow_servantItem : public ItemScript
{
public:
mxwow_servantItem() : ItemScript("mxwow_servantItem") { }
bool OnUse(Player* p, Item* i, SpellCastTargets const& /*targets*/) override
{
p->PlayerTalkClass->ClearMenus();
if (!sConfigMgr->GetOption<bool>("MxWoW_Servant.Enabled", true))
return false;
SummonTempNPC(p, 9000001, 120000);
}
void SummonTempNPC(Player* player, uint32 entry, uint32 despawn)
{
if (!player || entry == 0)
return;
Creature* npc = player->SummonCreature(entry, player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000);
npc->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
npc->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, player->GetFollowAngle());
npc->SetFaction(player->GetFaction());
std::ostringstream ss;
ss << "Salut " << player->GetName() << "! Je suis à ton service pour 2 minutes.";
npc->Whisper(ss.str().c_str(), LANG_UNIVERSAL, player, false);
}
};
void AddMxWoWServantScripts()
{
new mxwow_servantPlayer();
new mxwow_servantCreature();
new mxwow_servantItem();
}

View File

@@ -0,0 +1,11 @@
//// MxWoW Official Module
//// Servant
//// Dev: mikx
//// Git: https://mxgit.ovh/MxWoW/mod_mxwow_servant
void AddMxWoWServantScripts();
void Addmod_mxwow_servantScripts()
{
AddMxWoWServantScripts();
}