mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Gossip: Drop OptionNpcFlag from gossip_menu_option (#28254)
Co-authored-by: Shauren <shauren.trinity@gmail.com>
This commit is contained in:
@@ -2026,7 +2026,8 @@ enum ArgentPetGossipOptions
|
||||
|
||||
enum Misc
|
||||
{
|
||||
NPC_ARGENT_SQUIRE = 33238
|
||||
NPC_ARGENT_SQUIRE = 33238,
|
||||
ACHIEVEMENT_PONY_UP = 3736
|
||||
};
|
||||
|
||||
struct ArgentPonyBannerSpells
|
||||
@@ -2053,24 +2054,24 @@ public:
|
||||
{
|
||||
npc_argent_squire_gruntlingAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
ScheduleTasks();
|
||||
}
|
||||
|
||||
void ScheduleTasks()
|
||||
void Reset() override
|
||||
{
|
||||
_scheduler
|
||||
.Schedule(Seconds(1), [this](TaskContext /*context*/)
|
||||
if (Player* owner = Object::ToPlayer(me->GetOwner()))
|
||||
{
|
||||
if (Aura* ownerTired = owner->GetAura(SPELL_TIRED_PLAYER))
|
||||
if (Aura* squireTired = me->AddAura(IsArgentSquire() ? SPELL_AURA_TIRED_S : SPELL_AURA_TIRED_G, me))
|
||||
squireTired->SetDuration(ownerTired->GetDuration());
|
||||
|
||||
if (owner->HasAchieved(ACHIEVEMENT_PONY_UP) && !me->HasAura(SPELL_AURA_TIRED_S) && !me->HasAura(SPELL_AURA_TIRED_G))
|
||||
{
|
||||
if (Aura* ownerTired = me->GetOwner()->GetAura(SPELL_TIRED_PLAYER))
|
||||
if (Aura* squireTired = me->AddAura(IsArgentSquire() ? SPELL_AURA_TIRED_S : SPELL_AURA_TIRED_G, me))
|
||||
squireTired->SetDuration(ownerTired->GetDuration());
|
||||
})
|
||||
.Schedule(Seconds(1), [this](TaskContext context)
|
||||
{
|
||||
if ((me->HasAura(SPELL_AURA_TIRED_S) || me->HasAura(SPELL_AURA_TIRED_G)) && me->HasNpcFlag(UNIT_NPC_FLAG_BANKER | UNIT_NPC_FLAG_MAILBOX | UNIT_NPC_FLAG_VENDOR))
|
||||
me->RemoveNpcFlag(UNIT_NPC_FLAG_BANKER | UNIT_NPC_FLAG_MAILBOX | UNIT_NPC_FLAG_VENDOR);
|
||||
context.Repeat();
|
||||
});
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_BANKER | UNIT_NPC_FLAG_MAILBOX | UNIT_NPC_FLAG_VENDOR);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
me->RemoveNpcFlag(UNIT_NPC_FLAG_BANKER | UNIT_NPC_FLAG_MAILBOX | UNIT_NPC_FLAG_VENDOR);
|
||||
}
|
||||
|
||||
bool OnGossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override
|
||||
@@ -2079,7 +2080,7 @@ public:
|
||||
{
|
||||
case GOSSIP_OPTION_BANK:
|
||||
{
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_BANKER);
|
||||
me->RemoveNpcFlag(UNIT_NPC_FLAG_MAILBOX | UNIT_NPC_FLAG_VENDOR);
|
||||
uint32 _bankAura = IsArgentSquire() ? SPELL_AURA_BANK_S : SPELL_AURA_BANK_G;
|
||||
if (!me->HasAura(_bankAura))
|
||||
DoCastSelf(_bankAura);
|
||||
@@ -2090,7 +2091,7 @@ public:
|
||||
}
|
||||
case GOSSIP_OPTION_SHOP:
|
||||
{
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_VENDOR);
|
||||
me->RemoveNpcFlag(UNIT_NPC_FLAG_BANKER | UNIT_NPC_FLAG_MAILBOX);
|
||||
uint32 _shopAura = IsArgentSquire() ? SPELL_AURA_SHOP_S : SPELL_AURA_SHOP_G;
|
||||
if (!me->HasAura(_shopAura))
|
||||
DoCastSelf(_shopAura);
|
||||
@@ -2101,9 +2102,7 @@ public:
|
||||
}
|
||||
case GOSSIP_OPTION_MAIL:
|
||||
{
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_MAILBOX);
|
||||
player->GetSession()->SendShowMailBox(me->GetGUID());
|
||||
|
||||
me->RemoveNpcFlag(UNIT_NPC_FLAG_BANKER | UNIT_NPC_FLAG_VENDOR);
|
||||
uint32 _mailAura = IsArgentSquire() ? SPELL_AURA_POSTMAN_S : SPELL_AURA_POSTMAN_G;
|
||||
if (!me->HasAura(_mailAura))
|
||||
DoCastSelf(_mailAura);
|
||||
@@ -2121,21 +2120,17 @@ public:
|
||||
DoCastSelf(bannerSpells[gossipListId - 3].spellSquire, true);
|
||||
else
|
||||
DoCastSelf(bannerSpells[gossipListId - 3].spellGruntling, true);
|
||||
|
||||
player->PlayerTalkClass->SendCloseGossip();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
player->PlayerTalkClass->SendCloseGossip();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
_scheduler.Update(diff);
|
||||
}
|
||||
|
||||
bool IsArgentSquire() const { return me->GetEntry() == NPC_ARGENT_SQUIRE; }
|
||||
|
||||
private:
|
||||
TaskScheduler _scheduler;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature *creature) const override
|
||||
|
||||
Reference in New Issue
Block a user