feat(Core/Misc): implement ObjectGuid class (port from TC) (#4885)

This commit is contained in:
UltraNix
2021-04-25 22:18:03 +02:00
committed by GitHub
parent 91081f4ad8
commit f4c226423d
568 changed files with 10655 additions and 11019 deletions

View File

@@ -223,7 +223,7 @@ public:
{
BossAI::EnterEvadeMode();
if (Creature* akama = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_AKAMA)))
if (Creature* akama = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_AKAMA)))
akama->AI()->EnterEvadeMode();
}
@@ -395,7 +395,7 @@ public:
switch (events2.ExecuteEvent())
{
case EVENT_SUMMON_MINIONS2:
if (Creature* akama = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_AKAMA)))
if (Creature* akama = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_AKAMA)))
akama->AI()->DoAction(ACTION_FIGHT_MINIONS);
break;
case EVENT_PHASE_2_EYE_BEAM_START:
@@ -432,7 +432,7 @@ public:
maiev->AI()->Talk(SAY_MAIEV_SHADOWSONG_ILLIDAN3);
}
if (Creature* akama = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_AKAMA)))
if (Creature* akama = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_AKAMA)))
{
akama->AI()->DoAction(ACTION_ILLIDAN_DEAD);
akama->SetTarget(me->GetGUID());
@@ -554,7 +554,7 @@ public:
Talk(SAY_ILLIDAN_TAKEOFF);
me->SendMeleeAttackStop(me->GetVictim());
me->SetTarget(0);
me->SetTarget();
me->GetMotionMaster()->Clear();
me->StopMovingOnCurrentPos();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
@@ -912,40 +912,40 @@ public:
SetEscortPaused(false);
break;
case EVENT_AKAMA_SCENE_20:
if (Creature* illidan = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_ILLIDAN_STORMRAGE)))
if (Creature* illidan = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_ILLIDAN_STORMRAGE)))
illidan->SetStandState(UNIT_STAND_STATE_STAND);
break;
case EVENT_AKAMA_SCENE_21:
me->SetFacingTo(M_PI);
break;
case EVENT_AKAMA_SCENE_22:
if (Creature* illidan = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_ILLIDAN_STORMRAGE)))
if (Creature* illidan = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_ILLIDAN_STORMRAGE)))
illidan->AI()->Talk(SAY_ILLIDAN_AKAMA1);
break;
case EVENT_AKAMA_SCENE_23:
Talk(SAY_AKAMA_ILLIDAN1);
break;
case EVENT_AKAMA_SCENE_24:
if (Creature* illidan = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_ILLIDAN_STORMRAGE)))
if (Creature* illidan = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_ILLIDAN_STORMRAGE)))
illidan->AI()->Talk(SAY_ILLIDAN_AKAMA2);
break;
case EVENT_AKAMA_SCENE_25:
Talk(SAY_AKAMA_ILLIDAN2);
break;
case EVENT_AKAMA_SCENE_26:
if (Creature* illidan = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_ILLIDAN_STORMRAGE)))
if (Creature* illidan = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_ILLIDAN_STORMRAGE)))
illidan->AI()->Talk(SAY_ILLIDAN_AKAMA3);
break;
case EVENT_AKAMA_SCENE_27:
if (Creature* illidan = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_ILLIDAN_STORMRAGE)))
if (Creature* illidan = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_ILLIDAN_STORMRAGE)))
illidan->LoadEquipment(1, true);
break;
case EVENT_AKAMA_SCENE_28:
if (Creature* illidan = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_ILLIDAN_STORMRAGE)))
if (Creature* illidan = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_ILLIDAN_STORMRAGE)))
illidan->HandleEmoteCommand(EMOTE_ONESHOT_TALK_NO_SHEATHE);
break;
case EVENT_AKAMA_SCENE_29:
if (Creature* illidan = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_ILLIDAN_STORMRAGE)))
if (Creature* illidan = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_ILLIDAN_STORMRAGE)))
{
illidan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
illidan->SetInCombatWithZone();

View File

@@ -285,7 +285,7 @@ public:
return;
me->m_Events.AddEvent(new SuckBackEvent(*me, ACTION_ESSENCE_OF_SUFFERING), me->m_Events.CalculateTime(1500));
me->SetTarget(0);
me->SetTarget();
me->SetFacingTo(M_PI / 2.0f);
}
@@ -396,7 +396,7 @@ public:
return;
me->m_Events.AddEvent(new SuckBackEvent(*me, ACTION_ESSENCE_OF_DESIRE), me->m_Events.CalculateTime(1500));
me->SetTarget(0);
me->SetTarget();
me->SetFacingTo(M_PI / 2.0f);
}
@@ -483,11 +483,11 @@ public:
boss_essence_of_angerAI(Creature* creature) : ScriptedAI(creature) { }
EventMap events;
uint64 targetGUID;
ObjectGuid targetGUID;
void Reset() override
{
targetGUID = 0;
targetGUID.Clear();
events.Reset();
}
@@ -552,7 +552,7 @@ public:
case EVENT_ANGER_SEETHE:
if (Unit* victim = me->GetVictim())
{
uint64 victimGUID = victim->GetGUID();
ObjectGuid victimGUID = victim->GetGUID();
if (targetGUID && targetGUID != victimGUID)
me->CastSpell(me, SPELL_SEETHE, false);
// victim can be lost

View File

@@ -137,7 +137,7 @@ public:
summonsGenerator.DoAction(ACTION_DESPAWN_ALL);
summonsChanneler.DespawnAll();
me->CastSpell(me, SPELL_SHADE_OF_AKAMA_TRIGGER, true);
if (Creature* akama = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_AKAMA_SHADE)))
if (Creature* akama = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_AKAMA_SHADE)))
{
akama->SetHomePosition(*akama);
akama->AI()->DoAction(ACTION_SHADE_DIED);
@@ -184,7 +184,7 @@ public:
summonsGenerator.Respawn();
ChannelersAction(ACTION_CHANNELERS_START_CHANNEL);
if (Creature* akama = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_AKAMA_SHADE)))
if (Creature* akama = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_AKAMA_SHADE)))
akama->Respawn(true);
break;
}
@@ -194,7 +194,7 @@ public:
summonsChanneler.Respawn();
ChannelersAction(ACTION_CHANNELERS_START_CHANNEL);
if (Creature* akama = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_AKAMA_SHADE)))
if (Creature* akama = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_AKAMA_SHADE)))
akama->Respawn(true);
break;
}
@@ -314,7 +314,7 @@ public:
void JustDied(Unit* /*killer*/) override
{
if (Creature* shade = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_SHADE_OF_AKAMA)))
if (Creature* shade = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_SHADE_OF_AKAMA)))
shade->AI()->DoAction(ACTION_AKAMA_DIED);
}
@@ -345,7 +345,7 @@ public:
break;
case EVENT_AKAMA_START_CHANNEL:
me->CastSpell(me, SPELL_AKAMA_SOUL_CHANNEL, false);
if (Creature* shade = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_SHADE_OF_AKAMA)))
if (Creature* shade = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_SHADE_OF_AKAMA)))
{
shade->AI()->AttackStart(me);
shade->GetMotionMaster()->Clear();
@@ -467,7 +467,7 @@ public:
}
summon->SetInCombatWithZone();
if (Unit* akama = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_AKAMA_SHADE)))
if (Unit* akama = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_AKAMA_SHADE)))
{
summon->AddThreat(akama, 500.0f);
summon->AI()->AttackStart(akama);

View File

@@ -100,7 +100,7 @@ struct HammerOfJusticeSelector : public acore::unary_function<Unit*, bool>
class VerasEnvenom : public BasicEvent
{
public:
VerasEnvenom(Unit& owner, uint64 targetGUID) : _owner(owner), _targetGUID(targetGUID) { }
VerasEnvenom(Unit& owner, ObjectGuid targetGUID) : _owner(owner), _targetGUID(targetGUID) { }
bool Execute(uint64 /*eventTime*/, uint32 /*updateTime*/) override
{
@@ -116,7 +116,7 @@ public:
private:
Unit& _owner;
uint64 _targetGUID;
ObjectGuid _targetGUID;
};
class boss_illidari_council : public CreatureScript
@@ -133,10 +133,9 @@ public:
{
boss_illidari_councilAI(Creature* creature) : BossAI(creature, DATA_ILLIDARI_COUNCIL)
{
memset(councilGUIDs, 0, sizeof(councilGUIDs));
}
uint64 councilGUIDs[4];
ObjectGuid councilGUIDs[4];
void Reset() override
{
@@ -155,10 +154,10 @@ public:
if (!me->isActiveObject() && param == ACTION_START_ENCOUNTER)
{
me->setActive(true);
councilGUIDs[0] = instance->GetData64(NPC_GATHIOS_THE_SHATTERER);
councilGUIDs[1] = instance->GetData64(NPC_HIGH_NETHERMANCER_ZEREVOR);
councilGUIDs[2] = instance->GetData64(NPC_LADY_MALANDE);
councilGUIDs[3] = instance->GetData64(NPC_VERAS_DARKSHADOW);
councilGUIDs[0] = instance->GetGuidData(NPC_GATHIOS_THE_SHATTERER);
councilGUIDs[1] = instance->GetGuidData(NPC_HIGH_NETHERMANCER_ZEREVOR);
councilGUIDs[2] = instance->GetGuidData(NPC_LADY_MALANDE);
councilGUIDs[3] = instance->GetGuidData(NPC_VERAS_DARKSHADOW);
bool spoken = false;
for (uint8 i = 0; i < 4; ++i)
@@ -226,7 +225,7 @@ struct boss_illidari_council_memberAI : public ScriptedAI
void EnterEvadeMode() override
{
me->SetOwnerGUID(0);
me->SetOwnerGUID(ObjectGuid::Empty);
ScriptedAI::EnterEvadeMode();
}
@@ -251,13 +250,13 @@ struct boss_illidari_council_memberAI : public ScriptedAI
void JustDied(Unit*) override
{
Talk(SAY_COUNCIL_DEATH);
if (Creature* council = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_ILLIDARI_COUNCIL)))
if (Creature* council = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_ILLIDARI_COUNCIL)))
council->GetAI()->DoAction(ACTION_END_ENCOUNTER);
}
void EnterCombat(Unit* /*who*/) override
{
if (Creature* council = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_ILLIDARI_COUNCIL)))
if (Creature* council = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_ILLIDARI_COUNCIL)))
council->GetAI()->DoAction(ACTION_START_ENCOUNTER);
}
};
@@ -279,14 +278,14 @@ public:
Creature* SelectCouncilMember()
{
if (roll_chance_i(50))
return ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_LADY_MALANDE));
return ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_LADY_MALANDE));
if (roll_chance_i(20))
if (Creature* veras = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_VERAS_DARKSHADOW)))
if (Creature* veras = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_VERAS_DARKSHADOW)))
if (!veras->HasAura(SPELL_VANISH))
return veras;
return ObjectAccessor::GetCreature(*me, instance->GetData64(RAND(NPC_GATHIOS_THE_SHATTERER, NPC_HIGH_NETHERMANCER_ZEREVOR)));
return ObjectAccessor::GetCreature(*me, instance->GetGuidData(RAND(NPC_GATHIOS_THE_SHATTERER, NPC_HIGH_NETHERMANCER_ZEREVOR)));
}
void EnterCombat(Unit* who) override
@@ -538,7 +537,7 @@ public:
break;
case EVENT_SPELL_ENRAGE:
DoResetThreat();
if (Creature* council = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_ILLIDARI_COUNCIL)))
if (Creature* council = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_ILLIDARI_COUNCIL)))
council->GetAI()->DoAction(ACTION_ENRAGE);
break;
}

View File

@@ -39,18 +39,7 @@ public:
SetBossNumber(MAX_ENCOUNTERS);
LoadDoorData(doorData);
ShadeOfAkamaGUID = 0;
AkamaShadeGUID = 0;
TeronGorefiendGUID = 0;
ReliquaryGUID = 0;
ashtongueGUIDs.clear();
GathiosTheShattererGUID = 0;
HighNethermancerZerevorGUID = 0;
LadyMalandeGUID = 0;
VerasDarkshadowGUID = 0;
IllidariCouncilGUID = 0;
AkamaGUID = 0;
IllidanStormrageGUID = 0;
}
void OnCreatureCreate(Creature* creature) override
@@ -164,7 +153,7 @@ public:
}
}
uint64 GetData64(uint32 type) const override
ObjectGuid GetGuidData(uint32 type) const override
{
switch (type)
{
@@ -188,7 +177,7 @@ public:
return IllidanStormrageGUID;
}
return 0;
return ObjectGuid::Empty;
}
bool SetBossState(uint32 type, EncounterState state) override
@@ -198,8 +187,8 @@ public:
if (type == DATA_SHADE_OF_AKAMA && state == DONE)
{
for (std::list<uint64>::const_iterator itr = ashtongueGUIDs.begin(); itr != ashtongueGUIDs.end(); ++itr)
if (Creature* ashtongue = instance->GetCreature(*itr))
for (ObjectGuid const guid : ashtongueGUIDs)
if (Creature* ashtongue = instance->GetCreature(guid))
ashtongue->setFaction(FACTION_ASHTONGUE);
}
else if (type == DATA_ILLIDARI_COUNCIL && state == DONE)
@@ -255,18 +244,18 @@ public:
}
protected:
uint64 ShadeOfAkamaGUID;
uint64 AkamaShadeGUID;
uint64 TeronGorefiendGUID;
uint64 ReliquaryGUID;
std::list<uint64> ashtongueGUIDs;
uint64 GathiosTheShattererGUID;
uint64 HighNethermancerZerevorGUID;
uint64 LadyMalandeGUID;
uint64 VerasDarkshadowGUID;
uint64 IllidariCouncilGUID;
uint64 AkamaGUID;
uint64 IllidanStormrageGUID;
ObjectGuid ShadeOfAkamaGUID;
ObjectGuid AkamaShadeGUID;
ObjectGuid TeronGorefiendGUID;
ObjectGuid ReliquaryGUID;
GuidList ashtongueGUIDs;
ObjectGuid GathiosTheShattererGUID;
ObjectGuid HighNethermancerZerevorGUID;
ObjectGuid LadyMalandeGUID;
ObjectGuid VerasDarkshadowGUID;
ObjectGuid IllidariCouncilGUID;
ObjectGuid AkamaGUID;
ObjectGuid IllidanStormrageGUID;
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override
@@ -304,8 +293,8 @@ public:
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
for (std::set<uint64>::const_iterator itr = _turtleSet.begin(); itr != _turtleSet.end(); ++itr)
if (Creature* turtle = ObjectAccessor::GetCreature(*GetUnitOwner(), *itr))
for (ObjectGuid const guid : _turtleSet)
if (Creature* turtle = ObjectAccessor::GetCreature(*GetUnitOwner(), guid))
{
turtle->TauntFadeOut(GetUnitOwner());
turtle->AddThreat(GetUnitOwner(), -10000000.0f);
@@ -319,7 +308,7 @@ public:
}
private:
std::set<uint64> _turtleSet;
GuidSet _turtleSet;
};
AuraScript* GetAuraScript() const override