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

@@ -83,7 +83,7 @@ public:
{
if (waypointId == 7)
{
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_JAINAPROUDMOORE));
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_JAINAPROUDMOORE));
if (target && target->IsAlive())
me->AddThreat(target, 0.0f);
}
@@ -178,12 +178,12 @@ public:
npc_towering_infernalAI(Creature* creature) : ScriptedAI(creature)
{
instance = creature->GetInstanceScript();
AnetheronGUID = instance->GetData64(DATA_ANETHERON);
AnetheronGUID = instance->GetGuidData(DATA_ANETHERON);
}
uint32 ImmolationTimer;
uint32 CheckTimer;
uint64 AnetheronGUID;
ObjectGuid AnetheronGUID;
InstanceScript* instance;
void Reset() override

View File

@@ -101,18 +101,18 @@ public:
npc_ancient_wispAI(Creature* creature) : ScriptedAI(creature)
{
instance = creature->GetInstanceScript();
ArchimondeGUID = 0;
ArchimondeGUID.Clear();
}
InstanceScript* instance;
uint64 ArchimondeGUID;
ObjectGuid ArchimondeGUID;
uint32 CheckTimer;
void Reset() override
{
CheckTimer = 1000;
ArchimondeGUID = instance->GetData64(DATA_ARCHIMONDE);
ArchimondeGUID = instance->GetGuidData(DATA_ARCHIMONDE);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
}
@@ -187,12 +187,12 @@ public:
{
npc_doomfire_targettingAI(Creature* creature) : ScriptedAI(creature) { }
uint64 TargetGUID;
ObjectGuid TargetGUID;
uint32 ChangeTargetTimer;
void Reset() override
{
TargetGUID = 0;
TargetGUID.Clear();
ChangeTargetTimer = 5000;
}
@@ -219,7 +219,7 @@ public:
if (Unit* temp = ObjectAccessor::GetUnit(*me, TargetGUID))
{
me->GetMotionMaster()->MoveFollow(temp, 0.0f, 0.0f);
TargetGUID = 0;
TargetGUID.Clear();
}
else
{
@@ -264,8 +264,8 @@ public:
InstanceScript* instance;
EventMap events;
uint64 DoomfireSpiritGUID;
uint64 WorldTreeGUID;
ObjectGuid DoomfireSpiritGUID;
ObjectGuid WorldTreeGUID;
uint8 SoulChargeCount;
uint8 WispCount;
@@ -283,8 +283,8 @@ public:
{
instance->SetData(DATA_ARCHIMONDEEVENT, NOT_STARTED);
DoomfireSpiritGUID = 0;
WorldTreeGUID = 0;
DoomfireSpiritGUID.Clear();
WorldTreeGUID.Clear();
WispCount = 0;
Enraged = false;
BelowTenPercent = false;
@@ -472,7 +472,7 @@ public:
if (Unit* DoomfireSpirit = ObjectAccessor::GetUnit(*me, DoomfireSpiritGUID))
{
summoned->GetMotionMaster()->MoveFollow(DoomfireSpirit, 0.0f, 0.0f);
DoomfireSpiritGUID = 0;
DoomfireSpiritGUID.Clear();
}
}
}

View File

@@ -88,7 +88,7 @@ public:
{
if (waypointId == 7 && instance)
{
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_THRALL));
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL));
if (target && target->IsAlive())
me->AddThreat(target, 0.0f);
}
@@ -185,13 +185,13 @@ public:
npc_lesser_doomguardAI(Creature* creature) : hyjal_trashAI(creature)
{
instance = creature->GetInstanceScript();
AzgalorGUID = instance->GetData64(DATA_AZGALOR);
AzgalorGUID = instance->GetGuidData(DATA_AZGALOR);
}
uint32 CrippleTimer;
uint32 WarstompTimer;
uint32 CheckTimer;
uint64 AzgalorGUID;
ObjectGuid AzgalorGUID;
InstanceScript* instance;
void Reset() override

View File

@@ -83,7 +83,7 @@ public:
{
if (waypointId == 7 && instance)
{
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_THRALL));
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL));
if (target && target->IsAlive())
me->AddThreat(target, 0.0f);
}

View File

@@ -78,7 +78,7 @@ public:
{
if (waypointId == 7 && instance)
{
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_JAINAPROUDMOORE));
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_JAINAPROUDMOORE));
if (target && target->IsAlive())
me->AddThreat(target, 0.0f);
}

View File

@@ -308,8 +308,6 @@ hyjalAI::hyjalAI(Creature* creature) : npc_escortAI(creature), Summons(me)
instance = creature->GetInstanceScript();
VeinsSpawned[0] = false;
VeinsSpawned[1] = false;
for (uint8 i = 0; i < 14; ++i)
VeinGUID[i] = 0;
InfernalCount = 0;
TeleportTimer = 1000;
Overrun = false;
@@ -340,9 +338,9 @@ void hyjalAI::Reset()
IsDummy = false;
me->setActive(true);
// GUIDs
PlayerGUID = 0;
BossGUID[0] = 0;
BossGUID[1] = 0;
PlayerGUID.Clear();
BossGUID[0].Clear();
BossGUID[1].Clear();
// Timers
NextWaveTimer = 10000;
@@ -656,7 +654,7 @@ void hyjalAI::DeSpawnVeins()
{
if (Faction == 1)
{
Creature* unit = ObjectAccessor::GetCreature((*me), instance->GetData64(DATA_JAINAPROUDMOORE));
Creature* unit = ObjectAccessor::GetCreature((*me), instance->GetGuidData(DATA_JAINAPROUDMOORE));
if (!unit)return;
hyjalAI* ai = CAST_AI(hyjalAI, unit->AI());
if (!ai)return;
@@ -668,7 +666,7 @@ void hyjalAI::DeSpawnVeins()
}
else if (Faction)
{
Creature* unit = ObjectAccessor::GetCreature((*me), instance->GetData64(DATA_THRALL));
Creature* unit = ObjectAccessor::GetCreature((*me), instance->GetGuidData(DATA_THRALL));
if (!unit)return;
hyjalAI* ai = CAST_AI(hyjalAI, unit->AI());
if (!ai)return;
@@ -816,7 +814,7 @@ void hyjalAI::UpdateAI(uint32 diff)
EventBegun = false;
CheckTimer = 0;
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
BossGUID[i] = 0;
BossGUID[i].Clear();
instance->DoUpdateWorldState(WORLD_STATE_ENEMY, 0); // Reset world state for enemies to disable it
}
}

View File

@@ -148,9 +148,9 @@ struct hyjalAI : public npc_escortAI
public:
InstanceScript* instance;
uint64 PlayerGUID;
uint64 BossGUID[2];
uint64 VeinGUID[14];
ObjectGuid PlayerGUID;
ObjectGuid BossGUID[2];
ObjectGuid VeinGUID[14];
uint32 NextWaveTimer;
uint32 WaveCount;
@@ -181,7 +181,7 @@ public:
bool IsDummy;
uint32 MassTeleportTimer;
bool DoMassTeleport;
uint64 DummyGuid;
ObjectGuid DummyGuid;
struct Spell
{
@@ -192,6 +192,6 @@ public:
private:
uint32 SpellTimer[3];
//std::list<uint64> CreatureList;
//GuidList CreatureList;
};
#endif

View File

@@ -435,7 +435,7 @@ public:
{
if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall
{
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_THRALL));
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL));
if (target && target->IsAlive())
me->AddThreat(target, 0.0f);
}
@@ -478,7 +478,7 @@ public:
CanMove = true;
if (instance->GetData(DATA_ALLIANCE_RETREAT) && !instance->GetData(DATA_HORDE_RETREAT))
{
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_THRALL));
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL));
if (target && target->IsAlive())
me->AddThreat(target, 0.0f);
}
@@ -559,13 +559,13 @@ public:
{
if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall
{
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_THRALL));
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL));
if (target && target->IsAlive())
me->AddThreat(target, 0.0f);
}
else
{
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_JAINAPROUDMOORE));
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_JAINAPROUDMOORE));
if (target && target->IsAlive())
me->AddThreat(target, 0.0f);
}
@@ -659,13 +659,13 @@ public:
{
if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall
{
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_THRALL));
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL));
if (target && target->IsAlive())
me->AddThreat(target, 0.0f);
}
else
{
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_JAINAPROUDMOORE));
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_JAINAPROUDMOORE));
if (target && target->IsAlive())
me->AddThreat(target, 0.0f);
}
@@ -771,13 +771,13 @@ public:
{
if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall
{
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_THRALL));
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL));
if (target && target->IsAlive())
me->AddThreat(target, 0.0f);
}
else
{
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_JAINAPROUDMOORE));
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_JAINAPROUDMOORE));
if (target && target->IsAlive())
me->AddThreat(target, 0.0f);
}
@@ -885,13 +885,13 @@ public:
{
if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall
{
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_THRALL));
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL));
if (target && target->IsAlive())
me->AddThreat(target, 0.0f);
}
else
{
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_JAINAPROUDMOORE));
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_JAINAPROUDMOORE));
if (target && target->IsAlive())
me->AddThreat(target, 0.0f);
}
@@ -984,13 +984,13 @@ public:
{
if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall
{
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_THRALL));
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL));
if (target && target->IsAlive())
me->AddThreat(target, 0.0f);
}
else
{
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_JAINAPROUDMOORE));
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_JAINAPROUDMOORE));
if (target && target->IsAlive())
me->AddThreat(target, 0.0f);
}
@@ -1071,13 +1071,13 @@ public:
{
if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall
{
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_THRALL));
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL));
if (target && target->IsAlive())
me->AddThreat(target, 0.0f);
}
else
{
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_JAINAPROUDMOORE));
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_JAINAPROUDMOORE));
if (target && target->IsAlive())
me->AddThreat(target, 0.0f);
}
@@ -1159,7 +1159,7 @@ public:
{
if (waypointId == 2 && !IsOverrun)
{
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_THRALL));
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL));
if (target && target->IsAlive())
{
me->AddThreat(target, 0.0f);
@@ -1283,7 +1283,7 @@ public:
{
if (waypointId == 2 && !IsOverrun)
{
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_THRALL));
Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL));
if (target && target->IsAlive())
{
me->AddThreat(target, 0.0f);

View File

@@ -51,16 +51,6 @@ public:
m_uiAncientGemGUID.clear();
RageWinterchill = 0;
Anetheron = 0;
Kazrogal = 0;
Azgalor = 0;
Archimonde = 0;
JainaProudmoore = 0;
Thrall = 0;
TyrandeWhisperwind = 0;
HordeGate = 0;
ElfGate = 0;
RaidDamage = 0;
Trash = 0;
hordeRetreat = 0;
@@ -85,16 +75,16 @@ public:
case GO_HORDE_ENCAMPMENT_PORTAL:
HordeGate = go->GetGUID();
if (allianceRetreat)
HandleGameObject(0, true, go);
HandleGameObject(ObjectGuid::Empty, true, go);
else
HandleGameObject(0, false, go);
HandleGameObject(ObjectGuid::Empty, false, go);
break;
case GO_NIGHT_ELF_VILLAGE_PORTAL:
ElfGate = go->GetGUID();
if (hordeRetreat)
HandleGameObject(0, true, go);
HandleGameObject(ObjectGuid::Empty, true, go);
else
HandleGameObject(0, false, go);
HandleGameObject(ObjectGuid::Empty, false, go);
break;
case GO_ANCIENT_GEM:
m_uiAncientGemGUID.push_back(go->GetGUID());
@@ -133,7 +123,7 @@ public:
}
}
uint64 GetData64(uint32 identifier) const override
ObjectGuid GetGuidData(uint32 identifier) const override
{
switch (identifier)
{
@@ -155,7 +145,7 @@ public:
return TyrandeWhisperwind;
}
return 0;
return ObjectGuid::Empty;
}
void SetData(uint32 type, uint32 data) override
@@ -230,10 +220,10 @@ public:
{
if (!m_uiAncientGemGUID.empty())
{
for (std::list<uint64>::const_iterator itr = m_uiAncientGemGUID.begin(); itr != m_uiAncientGemGUID.end(); ++itr)
for (ObjectGuid const guid : m_uiAncientGemGUID)
{
//don't know how long it expected
DoRespawnGameObject(*itr, DAY);
DoRespawnGameObject(guid, DAY);
}
}
}
@@ -328,17 +318,17 @@ public:
protected:
uint32 m_auiEncounter[EncounterCount];
std::string str_data;
std::list<uint64> m_uiAncientGemGUID;
uint64 RageWinterchill;
uint64 Anetheron;
uint64 Kazrogal;
uint64 Azgalor;
uint64 Archimonde;
uint64 JainaProudmoore;
uint64 Thrall;
uint64 TyrandeWhisperwind;
uint64 HordeGate;
uint64 ElfGate;
GuidList m_uiAncientGemGUID;
ObjectGuid RageWinterchill;
ObjectGuid Anetheron;
ObjectGuid Kazrogal;
ObjectGuid Azgalor;
ObjectGuid Archimonde;
ObjectGuid JainaProudmoore;
ObjectGuid Thrall;
ObjectGuid TyrandeWhisperwind;
ObjectGuid HordeGate;
ObjectGuid ElfGate;
uint32 Trash;
uint32 hordeRetreat;
uint32 allianceRetreat;

View File

@@ -104,7 +104,7 @@ public:
me->SetReactState(REACT_PASSIVE);
if (InstanceScript* pInstance = me->GetInstanceScript())
{
if (Creature* cr = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_ARTHAS)))
if (Creature* cr = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_ARTHAS)))
cr->AI()->DoAction(ACTION_KILLED_MALGANIS);
// give credit to players

View File

@@ -303,7 +303,7 @@ public:
// After killing epoch
creature->AI()->DoAction(ACTION_START_SECRET_PASSAGE);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
creature->SetTarget(0);
creature->SetTarget();
CloseGossipMenuFor(player);
break;
case GOSSIP_ACTION_INFO_DEF+5:
@@ -604,7 +604,7 @@ public:
case 36:
SetRun(true);
if (pInstance)
if (GameObject* pGate = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_SHKAF_GATE)))
if (GameObject* pGate = pInstance->instance->GetGameObject(pInstance->GetGuidData(DATA_SHKAF_GATE)))
pGate->SetGoState(GO_STATE_ACTIVE);
break;
// Behind secred passage
@@ -775,7 +775,7 @@ public:
case EVENT_ACTION_PHASE1+18:
if (Creature* uther = GetEventNpc(NPC_UTHER))
{
uther->SetTarget(0);
uther->SetTarget();
uther->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
uther->GetMotionMaster()->MovePoint(0, EventPos[EVENT_POS_RETREAT], false);
}
@@ -784,7 +784,7 @@ public:
case EVENT_ACTION_PHASE1+19:
if (Creature* jaina = GetEventNpc(NPC_JAINA))
{
jaina->SetTarget(0);
jaina->SetTarget();
jaina->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
jaina->GetMotionMaster()->MovePoint(0, EventPos[EVENT_POS_RETREAT], false);
}
@@ -812,13 +812,13 @@ public:
case EVENT_ACTION_PHASE1+22:
SetEscortPaused(false);
eventInRun = false;
me->SetTarget(0);
me->SetTarget();
// dont schedule next, do it in gossip select!
break;
//After Gossip 1 (waypoint 8)
case EVENT_ACTION_PHASE2:
summons.DespawnEntry(NPC_INVIS_TARGET); // remove trigger
me->SetTarget(0);
me->SetTarget();
SetEscortPaused(false);
eventInRun = false;
ScheduleNextEvent(currentEvent, 1000);
@@ -885,7 +885,7 @@ public:
case EVENT_ACTION_PHASE2+6:
if (Creature* malganis = GetEventNpc(NPC_MAL_GANIS))
{
me->SetTarget(0);
me->SetTarget();
me->SetFacingToObject(malganis);
malganis->SetVisible(false);
}
@@ -1132,7 +1132,7 @@ public:
if (pInstance)
{
pInstance->SetData(DATA_ARTHAS_EVENT, COS_PROGRESS_FINISHED);
if (GameObject* go = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_EXIT_GATE)))
if (GameObject* go = pInstance->instance->GetGameObject(pInstance->GetGuidData(DATA_EXIT_GATE)))
go->SetGoState(GO_STATE_ACTIVE);
if (!me->GetMap()->GetPlayers().isEmpty())
@@ -1278,7 +1278,7 @@ void npc_arthas::npc_arthasAI::ReorderInstance(uint32 data)
if (data >= COS_PROGRESS_KILLED_EPOCH)
if (pInstance)
if (GameObject* pGate = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_SHKAF_GATE)))
if (GameObject* pGate = pInstance->instance->GetGameObject(pInstance->GetGuidData(DATA_SHKAF_GATE)))
pGate->SetGoState(GO_STATE_READY);
pInstance->SetData(DATA_SHOW_INFINITE_TIMER, 1);
@@ -1422,7 +1422,7 @@ public:
if (pInstance->GetData(DATA_ARTHAS_EVENT) == COS_PROGRESS_NOT_STARTED)
{
pInstance->SetData(DATA_ARTHAS_EVENT, COS_PROGRESS_FINISHED_INTRO);
if (Creature* arthas = ObjectAccessor::GetCreature(*creature, pInstance->GetData64(DATA_ARTHAS)))
if (Creature* arthas = ObjectAccessor::GetCreature(*creature, pInstance->GetGuidData(DATA_ARTHAS)))
arthas->AI()->Reset();
}
player->NearTeleportTo(LeaderIntroPos2.GetPositionX(), LeaderIntroPos2.GetPositionY(), LeaderIntroPos2.GetPositionZ(), LeaderIntroPos2.GetOrientation());

View File

@@ -24,14 +24,6 @@ public:
{
instance_culling_of_stratholme_InstanceMapScript(Map* pMap) : InstanceScript(pMap)
{
// NPCs
_arthasGUID = 0;
_infiniteGUID = 0;
// GOs
_shkafGateGUID = 0;
_exitGateGUID = 0;
// Instance
_crateCount = 0;
_showCrateTimer = 0;
@@ -137,7 +129,7 @@ public:
Map::PlayerList const& PlayerList = instance->GetPlayers();
if (!PlayerList.isEmpty())
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
i->GetSource()->KilledMonsterCredit(NPC_GRAIN_CREATE_TRIGGER, 0);
i->GetSource()->KilledMonsterCredit(NPC_GRAIN_CREATE_TRIGGER);
_showCrateTimer++;
if (GetData(DATA_ARTHAS_EVENT) < COS_PROGRESS_CRATES_FOUND)
@@ -184,7 +176,7 @@ public:
return 0;
}
uint64 GetData64(uint32 identifier) const override
ObjectGuid GetGuidData(uint32 identifier) const override
{
switch (identifier)
{
@@ -195,7 +187,8 @@ public:
case DATA_EXIT_GATE:
return _exitGateGUID;
}
return 0;
return ObjectGuid::Empty;
}
void Update(uint32 diff) override
@@ -398,12 +391,12 @@ public:
private:
// NPCs
uint64 _arthasGUID;
uint64 _infiniteGUID;
ObjectGuid _arthasGUID;
ObjectGuid _infiniteGUID;
// GOs
uint64 _shkafGateGUID;
uint64 _exitGateGUID;
ObjectGuid _shkafGateGUID;
ObjectGuid _exitGateGUID;
uint32 _encounterState;
uint32 _crateCount;
uint32 _showCrateTimer;

View File

@@ -67,7 +67,7 @@ public:
void JustSummoned(Creature* summon) override
{
summons.Summon(summon);
if (Creature* thrall = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(DATA_THRALL_GUID)))
if (Creature* thrall = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(DATA_THRALL_GUID)))
thrall->AI()->JustSummoned(summon);
summon->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);

View File

@@ -66,7 +66,7 @@ public:
return;
Talk(SAY_DEATH);
me->GetInstanceScript()->SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_EPOCH_KILLED);
if (Creature* taretha = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(DATA_TARETHA_GUID)))
if (Creature* taretha = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(DATA_TARETHA_GUID)))
taretha->AI()->DoAction(me->GetEntry());
}

View File

@@ -44,9 +44,6 @@ public:
_barrelCount = 0;
_attemptsCount = 0;
_thrallGUID = 0;
_tarethaGUID = 0;
_initalFlamesSet.clear();
_finalFlamesSet.clear();
_prisonersSet.clear();
@@ -166,13 +163,14 @@ public:
return 0;
}
uint64 GetData64(uint32 data) const override
ObjectGuid GetGuidData(uint32 data) const override
{
if (data == DATA_THRALL_GUID)
return _thrallGUID;
else if (data == DATA_TARETHA_GUID)
return _tarethaGUID;
return 0;
return ObjectGuid::Empty;
}
void Update(uint32 diff) override
@@ -185,8 +183,8 @@ public:
instance->LoadGrid(instancePositions[0].GetPositionX(), instancePositions[0].GetPositionY());
instance->LoadGrid(instancePositions[1].GetPositionX(), instancePositions[1].GetPositionY());
for (std::set<uint64>::const_iterator itr = _prisonersSet.begin(); itr != _prisonersSet.end(); ++itr)
if (Creature* orc = instance->GetCreature(*itr))
for (ObjectGuid const guid : _prisonersSet)
if (Creature* orc = instance->GetCreature(guid))
{
uint8 index = orc->GetDistance(instancePositions[0]) < 80.0f ? 0 : 1;
Position pos(instancePositions[index]);
@@ -195,8 +193,8 @@ public:
orc->SetStandState(UNIT_STAND_STATE_STAND);
}
for (std::set<uint64>::const_iterator itr = _initalFlamesSet.begin(); itr != _initalFlamesSet.end(); ++itr)
if (GameObject* gobject = instance->GetGameObject(*itr))
for (ObjectGuid const guid : _initalFlamesSet)
if (GameObject* gobject = instance->GetGameObject(guid))
{
gobject->SetRespawnTime(0);
gobject->UpdateObjectVisibility(true);
@@ -214,18 +212,18 @@ public:
if (!players.isEmpty())
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
if (Player* player = itr->GetSource())
player->KilledMonsterCredit(NPC_LODGE_QUEST_TRIGGER, 0);
player->KilledMonsterCredit(NPC_LODGE_QUEST_TRIGGER);
}
for (std::set<uint64>::const_iterator itr = _finalFlamesSet.begin(); itr != _finalFlamesSet.end(); ++itr)
if (GameObject* gobject = instance->GetGameObject(*itr))
for (ObjectGuid const guid : _finalFlamesSet)
if (GameObject* gobject = instance->GetGameObject(guid))
{
gobject->SetRespawnTime(0);
gobject->UpdateObjectVisibility(true);
}
for (std::set<uint64>::const_iterator itr = _prisonersSet.begin(); itr != _prisonersSet.end(); ++itr)
if (Creature* orc = instance->GetCreature(*itr))
for (ObjectGuid const guid : _prisonersSet)
if (Creature* orc = instance->GetCreature(guid))
if (roll_chance_i(25))
orc->HandleEmoteCommand(EMOTE_ONESHOT_CHEER);
@@ -330,11 +328,11 @@ public:
uint32 _barrelCount;
uint32 _attemptsCount;
uint64 _thrallGUID;
uint64 _tarethaGUID;
std::set<uint64> _initalFlamesSet;
std::set<uint64> _finalFlamesSet;
std::set<uint64> _prisonersSet;
ObjectGuid _thrallGUID;
ObjectGuid _tarethaGUID;
GuidSet _initalFlamesSet;
GuidSet _finalFlamesSet;
GuidSet _prisonersSet;
EventMap _events;
};

View File

@@ -387,7 +387,7 @@ public:
SetEscortPaused(true);
SetRun(true);
instance->SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_TARETHA_MEET);
if (Creature* Taretha = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_TARETHA_GUID)))
if (Creature* Taretha = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_TARETHA_GUID)))
Taretha->AI()->Talk(SAY_TARETHA_ESCAPED);
events.ScheduleEvent(EVENT_THRALL_TALK, 2000);
break;
@@ -618,7 +618,7 @@ public:
case EVENT_TARETHA_FALL:
if (Creature* epoch = summons.GetCreatureWithEntry(NPC_EPOCH_HUNTER))
epoch->AI()->Talk(SAY_EPOCH_ENTER2);
if (Creature* Taretha = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_TARETHA_GUID)))
if (Creature* Taretha = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_TARETHA_GUID)))
{
Taretha->CastSpell(Taretha, SPELL_SHADOW_SPIKE);
Taretha->SetStandState(UNIT_STAND_STATE_DEAD);
@@ -700,7 +700,7 @@ public:
if (!players.isEmpty())
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
if (Player* player = itr->GetSource())
player->KilledMonsterCredit(20156, 0);
player->KilledMonsterCredit(20156);
me->SetFacingTo(5.76f);
break;
@@ -709,7 +709,7 @@ public:
Talk(SAY_GREET_TARETHA);
break;
case EVENT_TARETHA_TALK_1:
if (Creature* Taretha = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_TARETHA_GUID)))
if (Creature* Taretha = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_TARETHA_GUID)))
Taretha->AI()->Talk(SAY_TARETHA_TALK1);
break;
case EVENT_THRALL_TALK_5:
@@ -751,7 +751,7 @@ public:
SetEscortPaused(false);
break;
case EVENT_TARETHA_TALK_2:
if (Creature* Taretha = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_TARETHA_GUID)))
if (Creature* Taretha = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_TARETHA_GUID)))
{
Taretha->SetFacingTo(4.233f);
Taretha->AI()->Talk(SAY_TARETHA_TALK2);
@@ -827,7 +827,7 @@ public:
break;
case ENCOUNTER_PROGRESS_TARETHA_MEET:
SetNextWaypoint(95, false);
if (Creature* Taretha = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_TARETHA_GUID)))
if (Creature* Taretha = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_TARETHA_GUID)))
Taretha->SetStandState(UNIT_STAND_STATE_STAND);
break;
}
@@ -881,7 +881,7 @@ public:
SetRun(false);
Talk(SAY_TARETHA_FREE);
me->HandleEmoteCommand(EMOTE_ONESHOT_CHEER);
if (Creature* thrall = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_THRALL_GUID)))
if (Creature* thrall = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_THRALL_GUID)))
thrall->AI()->DoAction(me->GetEntry());
}
else if (waypointId == 9)

View File

@@ -53,7 +53,7 @@ public:
void JustReachedHome() override
{
if (Unit* medivh = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_MEDIVH)))
if (Unit* medivh = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_MEDIVH)))
if (me->GetDistance2d(medivh) < 20.0f)
me->CastSpell(me, SPELL_CORRUPT_MEDIVH, false);
}
@@ -63,7 +63,7 @@ public:
Talk(SAY_ENTER);
ScriptedAI::InitializeAI();
if (Unit* medivh = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_MEDIVH)))
if (Unit* medivh = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_MEDIVH)))
{
me->SetHomePosition(medivh->GetPositionX() + 14.0f * cos(medivh->GetAngle(me)), medivh->GetPositionY() + 14.0f * sin(medivh->GetAngle(me)), medivh->GetPositionZ(), me->GetAngle(medivh));
me->GetMotionMaster()->MoveTargetedHome();

View File

@@ -32,16 +32,15 @@ public:
{
instance_the_black_morass_InstanceMapScript(Map* map) : InstanceScript(map) { }
std::set<uint64> encounterNPCs;
GuidSet encounterNPCs;
uint32 encounters[MAX_ENCOUNTER];
uint64 _medivhGUID;
ObjectGuid _medivhGUID;
uint8 _currentRift;
uint8 _shieldPercent;
void Initialize() override
{
memset(&encounters, 0, sizeof(encounters));
_medivhGUID = 0;
_currentRift = 0;
_shieldPercent = 100;
encounterNPCs.clear();
@@ -60,9 +59,9 @@ public:
medivh->SetRespawnTime(3);
}
std::set<uint64> eCopy = encounterNPCs;
for (std::set<uint64>::const_iterator itr = eCopy.begin(); itr != eCopy.end(); ++itr)
if (Creature* creature = instance->GetCreature(*itr))
GuidSet eCopy = encounterNPCs;
for (ObjectGuid const guid : eCopy)
if (Creature* creature = instance->GetCreature(guid))
creature->DespawnOrUnsummon();
}
@@ -184,9 +183,9 @@ public:
Unit::Kill(medivh, medivh);
// Xinef: delete all spawns
std::set<uint64> eCopy = encounterNPCs;
for (std::set<uint64>::iterator itr = eCopy.begin(); itr != eCopy.end(); ++itr)
if (Creature* creature = instance->GetCreature(*itr))
GuidSet eCopy = encounterNPCs;
for (ObjectGuid guid : eCopy)
if (Creature* creature = instance->GetCreature(guid))
creature->DespawnOrUnsummon();
}
break;
@@ -209,7 +208,7 @@ public:
return 0;
}
void SetData64(uint32 type, uint64 data) override
void SetGuidData(uint32 type, ObjectGuid data) override
{
if (type == DATA_SUMMONED_NPC)
encounterNPCs.insert(data);
@@ -217,19 +216,19 @@ public:
encounterNPCs.erase(data);
}
uint64 GetData64(uint32 data) const override
ObjectGuid GetGuidData(uint32 data) const override
{
if (data == DATA_MEDIVH)
return _medivhGUID;
return 0;
return ObjectGuid::Empty;
}
void SummonPortalKeeper()
{
Creature* rift = nullptr;
for (std::set<uint64>::const_iterator itr = encounterNPCs.begin(); itr != encounterNPCs.end(); ++itr)
if (Creature* summon = instance->GetCreature(*itr))
for (ObjectGuid const guid : encounterNPCs)
if (Creature* summon = instance->GetCreature(guid))
if (summon->GetEntry() == NPC_TIME_RIFT)
{
rift = summon;

View File

@@ -120,7 +120,7 @@ public:
void JustSummoned(Creature* summon) override
{
if (instance)
instance->SetData64(DATA_SUMMONED_NPC, summon->GetGUID());
instance->SetGuidData(DATA_SUMMONED_NPC, summon->GetGUID());
if (summon->GetEntry() == NPC_DP_CRYSTAL_STALKER)
{
@@ -141,7 +141,7 @@ public:
void SummonedCreatureDespawn(Creature* summon) override
{
if (instance)
instance->SetData64(DATA_DELETED_NPC, summon->GetGUID());
instance->SetGuidData(DATA_DELETED_NPC, summon->GetGUID());
}
void MoveInLineOfSight(Unit* who) override
@@ -285,12 +285,11 @@ public:
npc_time_riftAI(Creature* creature) : NullCreatureAI(creature)
{
instance = creature->GetInstanceScript();
riftKeeperGUID = 0;
}
EventMap events;
InstanceScript* instance;
uint64 riftKeeperGUID;
ObjectGuid riftKeeperGUID;
void Reset() override
{
@@ -304,7 +303,7 @@ public:
events.ScheduleEvent(EVENT_CHECK_DEATH, 8000);
}
void SetGUID(uint64 guid, int32) override
void SetGUID(ObjectGuid guid, int32) override
{
riftKeeperGUID = guid;
}
@@ -317,7 +316,7 @@ public:
if (Creature* summon = me->SummonCreature(entry, pos, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 150000))
if (instance)
{
if (Unit* medivh = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_MEDIVH)))
if (Unit* medivh = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_MEDIVH)))
{
float o = medivh->GetAngle(summon) + frand(-1.0f, 1.0f);
summon->SetHomePosition(medivh->GetPositionX() + 14.0f * cos(o), medivh->GetPositionY() + 14.0f * sin(o), medivh->GetPositionZ(), summon->GetAngle(medivh));