feat(Core/Unit): NPCFlags helpers (#11286)

* cherry-pick commit (TrinityCore/TrinityCore@d611925)
Co-Authored-By: Shauren <shauren.trinity@gmail.com>
This commit is contained in:
Kitzunu
2022-04-05 13:52:42 +02:00
committed by GitHub
parent e2370446a5
commit edb7cac19b
75 changed files with 293 additions and 285 deletions

View File

@@ -69,9 +69,9 @@ public:
void DoAction(int32 a) override
{
if (a == 1)
if (me->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP))
if (me->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP))
{
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
events.Reset();
events.ScheduleEvent(1, 1000);
}
@@ -190,7 +190,7 @@ public:
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP))
if (creature->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP))
{
if (creature->GetEntry() == NPC_JAINA_PART1)
AddGossipItemFor(player, GOSSIP_JAINA_INTRO, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
@@ -232,14 +232,14 @@ public:
{
npc_fos_leader_secondAI(Creature* creature) : ScriptedAI(creature)
{
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
}
void MovementInform(uint32 type, uint32 id) override
{
if (type == POINT_MOTION_TYPE && id == 1)
{
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
if (me->GetEntry() == NPC_JAINA_PART1)
Talk(SAY_JAINA_OUTRO);
else

View File

@@ -91,7 +91,7 @@ public:
bool OnGossipHello(Player* player, Creature* creature) override
{
if (!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP))
if (!creature->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP))
return true;
if (creature->IsQuestGiver())
@@ -134,7 +134,7 @@ public:
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction) override
{
if (!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP))
if (!creature->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP))
return true;
InstanceScript* instance = creature->GetInstanceScript();
@@ -154,13 +154,13 @@ public:
CloseGossipMenuFor(player);
if (creature->AI())
creature->AI()->DoAction(ACTION_START_INTRO);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
break;
case GOSSIP_ACTION_INFO_DEF+2:
CloseGossipMenuFor(player);
if (creature->AI())
creature->AI()->DoAction(ACTION_SKIP_INTRO);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
break;
}
@@ -233,7 +233,7 @@ public:
me->GetMotionMaster()->MovePoint(0, SpawnPos);
break;
case EVENT_PRE_INTRO_3:
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
Talk(me->GetEntry() == NPC_JAINA_PART1 ? SAY_JAINA_INTRO_2 : SAY_SYLVANAS_INTRO_1);
me->SetFacingTo(0.89f);
break;
@@ -1619,7 +1619,7 @@ public:
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 /*uiAction*/) override
{
if (!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP))
if (!creature->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP))
return true;
ClearGossipMenuFor(player);
@@ -1627,7 +1627,7 @@ public:
if (InstanceScript* pInstance = creature->GetInstanceScript())
if (!pInstance->GetData(DATA_LICH_KING))
{
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
creature->AI()->DoAction(ACTION_START_LK_FIGHT_REAL);
return true;
}
@@ -1748,7 +1748,7 @@ public:
case EVENT_ADD_GOSSIP:
me->RemoveAura(me->GetEntry() == NPC_JAINA_PART2 ? SPELL_JAINA_ICE_BARRIER : SPELL_SYLVANAS_CLOAK_OF_DARKNESS);
me->SetFacingTo(LeaderEscapePos.GetOrientation());
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
break;
case EVENT_START_RUN:
{

View File

@@ -221,7 +221,7 @@ public:
NPC_LeaderIntroGUID = creature->GetGUID();
if (TeamIdInInstance == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_JAINA_PART1);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
creature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
break;
case NPC_DARK_RANGER_LORALEN:
@@ -313,7 +313,7 @@ public:
if (!(EncounterMask & (1 << DATA_LK_INTRO)))
{
creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, TeamIdInInstance == TEAM_ALLIANCE ? EMOTE_ONESHOT_ATTACK2HTIGHT : EMOTE_ONESHOT_ATTACK1H);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
creature->CastSpell(creature, TeamIdInInstance == TEAM_ALLIANCE ? SPELL_JAINA_ICE_BARRIER : SPELL_SYLVANAS_CLOAK_OF_DARKNESS, true);
if (TeamIdInInstance != TEAM_ALLIANCE)
{
@@ -323,8 +323,8 @@ public:
}
else if (!(EncounterMask & (1 << DATA_LICH_KING)))
{
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
creature->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
creature->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
creature->UpdatePosition(LeaderEscapePos, true);
creature->StopMovingOnCurrentPos();
}
@@ -530,8 +530,8 @@ public:
c->GetMotionMaster()->MoveIdle();
c->UpdatePosition(LeaderEscapePos, true);
c->StopMovingOnCurrentPos();
c->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
c->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
c->SetHealth(c->GetMaxHealth() / 20);
c->AI()->Reset();
c->setActive(false);
@@ -1196,7 +1196,7 @@ public:
break;
case 11:
if (Creature* c = instance->GetCreature(NPC_LeaderGUID))
c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
c->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
++outroStep;
outroTimer = 300 * 1000;
break;

View File

@@ -1150,7 +1150,7 @@ public:
pInstance = me->GetInstanceScript();
barrierGUID.Clear();
events.Reset();
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
if (pInstance)
{
@@ -1206,7 +1206,7 @@ public:
Talk(SAY_JAINA_OUTRO_3);
break;
case 6:
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
if (GameObject* g = me->FindNearestGameObject(GO_HOR_PORTCULLIS, 50.0f))
g->SetGoState(GO_STATE_ACTIVE);
break;