mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-02-02 02:23:49 +00:00
feat(Core/Misc): implement ObjectGuid class (port from TC) (#4885)
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user