mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-24 14:16:31 +00:00
feat(Core/Misc): implement ObjectGuid class (port from TC) (#4885)
This commit is contained in:
@@ -98,8 +98,8 @@ public:
|
||||
{
|
||||
if (instance)
|
||||
{
|
||||
instance->HandleGameObject(instance->GetData64(DATA_DOOR4), true);
|
||||
instance->HandleGameObject(instance->GetData64(DATA_DOOR5), true);
|
||||
instance->HandleGameObject(instance->GetGuidData(DATA_DOOR4), true);
|
||||
instance->HandleGameObject(instance->GetGuidData(DATA_DOOR5), true);
|
||||
instance->SetData(DATA_BROGGOK, DONE);
|
||||
}
|
||||
}
|
||||
@@ -139,7 +139,7 @@ public:
|
||||
{
|
||||
if (InstanceScript* instance = go->GetInstanceScript())
|
||||
if (instance->GetData(DATA_BROGGOK) != DONE && instance->GetData(DATA_BROGGOK) != IN_PROGRESS)
|
||||
if (Creature* broggok = ObjectAccessor::GetCreature(*go, instance->GetData64(DATA_BROGGOK)))
|
||||
if (Creature* broggok = ObjectAccessor::GetCreature(*go, instance->GetGuidData(DATA_BROGGOK)))
|
||||
{
|
||||
instance->SetData(DATA_BROGGOK, IN_PROGRESS);
|
||||
broggok->AI()->DoAction(ACTION_PREPARE_BROGGOK);
|
||||
|
||||
@@ -63,12 +63,11 @@ public:
|
||||
boss_kelidan_the_breakerAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
instance = creature->GetInstanceScript();
|
||||
memset(&channelers, 0, sizeof(channelers));
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
EventMap events;
|
||||
uint64 channelers[5];
|
||||
ObjectGuid channelers[5];
|
||||
uint32 checkTimer;
|
||||
bool addYell;
|
||||
|
||||
@@ -172,7 +171,7 @@ public:
|
||||
if (!channeler)
|
||||
channeler = me->SummonCreature(NPC_CHANNELER, ShadowmoonChannelers[i][0], ShadowmoonChannelers[i][1], ShadowmoonChannelers[i][2], ShadowmoonChannelers[i][3], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
|
||||
channelers[i] = channeler ? channeler->GetGUID() : 0;
|
||||
channelers[i] = channeler ? channeler->GetGUID() : ObjectGuid::Empty;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,8 +183,8 @@ public:
|
||||
// Xinef: load grid with start doors
|
||||
me->GetMap()->LoadGrid(0, -111.0f);
|
||||
instance->SetData(DATA_KELIDAN, DONE);
|
||||
instance->HandleGameObject(instance->GetData64(DATA_DOOR1), true);
|
||||
instance->HandleGameObject(instance->GetData64(DATA_DOOR6), true);
|
||||
instance->HandleGameObject(instance->GetGuidData(DATA_DOOR1), true);
|
||||
instance->HandleGameObject(instance->GetGuidData(DATA_DOOR6), true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -288,7 +287,7 @@ public:
|
||||
Creature* GetKelidan()
|
||||
{
|
||||
if (me->GetInstanceScript())
|
||||
return ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(DATA_KELIDAN));
|
||||
return ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(DATA_KELIDAN));
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ public:
|
||||
return;
|
||||
|
||||
instance->SetData(DATA_THE_MAKER, NOT_STARTED);
|
||||
instance->HandleGameObject(instance->GetData64(DATA_DOOR2), true);
|
||||
instance->HandleGameObject(instance->GetGuidData(DATA_DOOR2), true);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
@@ -62,7 +62,7 @@ public:
|
||||
return;
|
||||
|
||||
instance->SetData(DATA_THE_MAKER, IN_PROGRESS);
|
||||
instance->HandleGameObject(instance->GetData64(DATA_DOOR2), false);
|
||||
instance->HandleGameObject(instance->GetGuidData(DATA_DOOR2), false);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* victim) override
|
||||
@@ -79,8 +79,8 @@ public:
|
||||
return;
|
||||
|
||||
instance->SetData(DATA_THE_MAKER, DONE);
|
||||
instance->HandleGameObject(instance->GetData64(DATA_DOOR2), true);
|
||||
instance->HandleGameObject(instance->GetData64(DATA_DOOR3), true);
|
||||
instance->HandleGameObject(instance->GetGuidData(DATA_DOOR2), true);
|
||||
instance->HandleGameObject(instance->GetGuidData(DATA_DOOR3), true);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
|
||||
@@ -17,28 +17,20 @@ public:
|
||||
instance_blood_furnace_InstanceMapScript(Map* map) : InstanceScript(map) {}
|
||||
|
||||
uint32 _auiEncounter[MAX_ENCOUNTER];
|
||||
uint64 _bossGUIDs[3];
|
||||
uint64 _doorGUIDs[6];
|
||||
uint64 _prisonGUIDs[4];
|
||||
ObjectGuid _bossGUIDs[3];
|
||||
ObjectGuid _doorGUIDs[6];
|
||||
ObjectGuid _prisonGUIDs[4];
|
||||
|
||||
std::set<uint64> _prisonersCell[4];
|
||||
GuidSet _prisonersCell[4];
|
||||
|
||||
uint8 _prisonerCounter[4];
|
||||
|
||||
uint64 _broggokLeverGUID;
|
||||
ObjectGuid _broggokLeverGUID;
|
||||
|
||||
void Initialize() override
|
||||
{
|
||||
memset(&_auiEncounter, 0, sizeof(_auiEncounter));
|
||||
memset(&_bossGUIDs, 0, sizeof(_bossGUIDs));
|
||||
memset(&_doorGUIDs, 0, sizeof(_doorGUIDs));
|
||||
memset(&_prisonGUIDs, 0, sizeof(_prisonGUIDs));
|
||||
memset(&_prisonerCounter, 0, sizeof(_prisonerCounter));
|
||||
|
||||
for (uint8 i = 0; i < 4; ++i)
|
||||
_prisonersCell[i].clear();
|
||||
|
||||
_broggokLeverGUID = 0;
|
||||
}
|
||||
|
||||
void OnCreatureCreate(Creature* creature) override
|
||||
@@ -102,7 +94,7 @@ public:
|
||||
_broggokLeverGUID = go->GetGUID(); //Broggok lever
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 data) const override
|
||||
ObjectGuid GetGuidData(uint32 data) const override
|
||||
{
|
||||
switch (data)
|
||||
{
|
||||
@@ -125,7 +117,8 @@ public:
|
||||
case DATA_PRISON_CELL4:
|
||||
return _prisonGUIDs[data - DATA_PRISON_CELL1];
|
||||
}
|
||||
return 0;
|
||||
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
void SetData(uint32 type, uint32 data) override
|
||||
@@ -223,10 +216,10 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void ResetPrisoners(std::set<uint64> prisoners)
|
||||
void ResetPrisoners(GuidSet prisoners)
|
||||
{
|
||||
for (std::set<uint64>::iterator i = prisoners.begin(); i != prisoners.end(); ++i)
|
||||
if (Creature* prisoner = instance->GetCreature(*i))
|
||||
for (ObjectGuid guid : prisoners)
|
||||
if (Creature* prisoner = instance->GetCreature(guid))
|
||||
ResetPrisoner(prisoner);
|
||||
}
|
||||
|
||||
@@ -274,7 +267,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void PrisonerDied(uint64 guid)
|
||||
void PrisonerDied(ObjectGuid guid)
|
||||
{
|
||||
if (_prisonersCell[0].find(guid) != _prisonersCell[0].end() && --_prisonerCounter[0] <= 0)
|
||||
ActivateCell(DATA_PRISON_CELL2);
|
||||
@@ -299,16 +292,16 @@ public:
|
||||
break;
|
||||
case DATA_DOOR5:
|
||||
HandleGameObject(_doorGUIDs[4], true);
|
||||
if (Creature* broggok = instance->GetCreature(GetData64(DATA_BROGGOK)))
|
||||
if (Creature* broggok = instance->GetCreature(GetGuidData(DATA_BROGGOK)))
|
||||
broggok->AI()->DoAction(ACTION_ACTIVATE_BROGGOK);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ActivatePrisoners(std::set<uint64> prisoners)
|
||||
void ActivatePrisoners(GuidSet prisoners)
|
||||
{
|
||||
for (std::set<uint64>::iterator i = prisoners.begin(); i != prisoners.end(); ++i)
|
||||
if (Creature* prisoner = instance->GetCreature(*i))
|
||||
for (ObjectGuid guid : prisoners)
|
||||
if (Creature* prisoner = instance->GetCreature(guid))
|
||||
{
|
||||
prisoner->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE);
|
||||
prisoner->SetInCombatWithZone();
|
||||
|
||||
@@ -52,7 +52,7 @@ public:
|
||||
{
|
||||
Talk(SAY_WIPE);
|
||||
BossAI::Reset();
|
||||
_targetGUID = 0;
|
||||
_targetGUID.Clear();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who) override
|
||||
@@ -139,7 +139,7 @@ public:
|
||||
me->GetMotionMaster()->MoveChase(me->GetVictim());
|
||||
if (Unit* target = ObjectAccessor::GetUnit(*me, _targetGUID))
|
||||
me->CastSpell(target, SPELL_SHADOW_WHIP, false);
|
||||
_targetGUID = 0;
|
||||
_targetGUID.Clear();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -160,7 +160,7 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
uint64 _targetGUID;
|
||||
ObjectGuid _targetGUID;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
|
||||
@@ -18,7 +18,6 @@ public:
|
||||
void Initialize() override
|
||||
{
|
||||
SetBossNumber(MAX_ENCOUNTERS);
|
||||
felIronChestGUID = 0;
|
||||
}
|
||||
|
||||
void OnGameObjectCreate(GameObject* go) override
|
||||
@@ -74,7 +73,7 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
uint64 felIronChestGUID;
|
||||
ObjectGuid felIronChestGUID;
|
||||
};
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
||||
|
||||
@@ -69,7 +69,7 @@ enum Events
|
||||
class DealDebrisDamage : public BasicEvent
|
||||
{
|
||||
public:
|
||||
DealDebrisDamage(Creature& creature, uint64 targetGUID) : _owner(creature), _targetGUID(targetGUID) { }
|
||||
DealDebrisDamage(Creature& creature, ObjectGuid targetGUID) : _owner(creature), _targetGUID(targetGUID) { }
|
||||
|
||||
bool Execute(uint64 /*eventTime*/, uint32 /*updateTime*/) override
|
||||
{
|
||||
@@ -80,7 +80,7 @@ public:
|
||||
|
||||
private:
|
||||
Creature& _owner;
|
||||
uint64 _targetGUID;
|
||||
ObjectGuid _targetGUID;
|
||||
};
|
||||
|
||||
class boss_magtheridon : public CreatureScript
|
||||
|
||||
@@ -37,7 +37,6 @@ public:
|
||||
_wardersSet.clear();
|
||||
_cubesSet.clear();
|
||||
_columnSet.clear();
|
||||
_magtheridonGUID = 0;
|
||||
}
|
||||
|
||||
void OnCreatureCreate(Creature* creature) override
|
||||
@@ -119,8 +118,8 @@ public:
|
||||
{
|
||||
if (state == IN_PROGRESS)
|
||||
{
|
||||
for (std::set<uint64>::const_iterator itr = _wardersSet.begin(); itr != _wardersSet.end(); ++itr)
|
||||
if (Creature* warder = instance->GetCreature(*itr))
|
||||
for (ObjectGuid const guid : _wardersSet)
|
||||
if (Creature* warder = instance->GetCreature(guid))
|
||||
if (warder->IsAlive())
|
||||
{
|
||||
warder->InterruptNonMeleeSpells(true);
|
||||
@@ -129,8 +128,8 @@ public:
|
||||
}
|
||||
else
|
||||
{
|
||||
for (std::set<uint64>::const_iterator itr = _cubesSet.begin(); itr != _cubesSet.end(); ++itr)
|
||||
if (GameObject* cube = instance->GetGameObject(*itr))
|
||||
for (ObjectGuid const guid : _cubesSet)
|
||||
if (GameObject* cube = instance->GetGameObject(guid))
|
||||
cube->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
|
||||
if (state == NOT_STARTED)
|
||||
@@ -150,13 +149,13 @@ public:
|
||||
magtheridon->SetInCombatWithZone();
|
||||
break;
|
||||
case DATA_ACTIVATE_CUBES:
|
||||
for (std::set<uint64>::const_iterator itr = _cubesSet.begin(); itr != _cubesSet.end(); ++itr)
|
||||
if (GameObject* cube = instance->GetGameObject(*itr))
|
||||
for (ObjectGuid const guid : _cubesSet)
|
||||
if (GameObject* cube = instance->GetGameObject(guid))
|
||||
cube->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
break;
|
||||
case DATA_COLLAPSE:
|
||||
for (std::set<uint64>::const_iterator itr = _columnSet.begin(); itr != _columnSet.end(); ++itr)
|
||||
if (GameObject* column = instance->GetGameObject(*itr))
|
||||
for (ObjectGuid const guid : _columnSet)
|
||||
if (GameObject* column = instance->GetGameObject(guid))
|
||||
column->SetGoState(GOState(data));
|
||||
break;
|
||||
}
|
||||
@@ -206,10 +205,10 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
uint64 _magtheridonGUID;
|
||||
std::set<uint64> _wardersSet;
|
||||
std::set<uint64> _cubesSet;
|
||||
std::set<uint64> _columnSet;
|
||||
ObjectGuid _magtheridonGUID;
|
||||
GuidSet _wardersSet;
|
||||
GuidSet _cubesSet;
|
||||
GuidSet _columnSet;
|
||||
};
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
||||
|
||||
@@ -56,7 +56,7 @@ public:
|
||||
{
|
||||
BossAI::InitializeAI();
|
||||
if (instance)
|
||||
if (Creature* executioner = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_EXECUTIONER)))
|
||||
if (Creature* executioner = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_EXECUTIONER)))
|
||||
executioner->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ public:
|
||||
_JustDied();
|
||||
|
||||
if (instance)
|
||||
if (Creature* executioner = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_EXECUTIONER)))
|
||||
if (Creature* executioner = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_EXECUTIONER)))
|
||||
executioner->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,12 +24,7 @@ public:
|
||||
void Initialize() override
|
||||
{
|
||||
SetBossNumber(ENCOUNTER_COUNT);
|
||||
nethekurseDoor1GUID = 0;
|
||||
nethekurseDoor2GUID = 0;
|
||||
warchiefKargathGUID = 0;
|
||||
|
||||
executionerGUID = 0;
|
||||
memset(&prisonerGUID, 0, sizeof(prisonerGUID));
|
||||
TeamIdInInstance = TEAM_NEUTRAL;
|
||||
RescueTimer = 100 * MINUTE * IN_MILLISECONDS;
|
||||
}
|
||||
@@ -47,12 +42,12 @@ public:
|
||||
case GO_GRAND_WARLOCK_CHAMBER_DOOR_1:
|
||||
nethekurseDoor1GUID = go->GetGUID();
|
||||
if (GetBossState(DATA_NETHEKURSE) == DONE)
|
||||
HandleGameObject(0, true, go);
|
||||
HandleGameObject(ObjectGuid::Empty, true, go);
|
||||
break;
|
||||
case GO_GRAND_WARLOCK_CHAMBER_DOOR_2:
|
||||
nethekurseDoor2GUID = go->GetGUID();
|
||||
if (GetBossState(DATA_NETHEKURSE) == DONE)
|
||||
HandleGameObject(0, true, go);
|
||||
HandleGameObject(ObjectGuid::Empty, true, go);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -132,7 +127,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 data) const override
|
||||
ObjectGuid GetGuidData(uint32 data) const override
|
||||
{
|
||||
switch (data)
|
||||
{
|
||||
@@ -143,7 +138,8 @@ public:
|
||||
case DATA_EXECUTIONER:
|
||||
return executionerGUID;
|
||||
}
|
||||
return 0;
|
||||
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
void Update(uint32 diff) override
|
||||
@@ -223,12 +219,12 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
uint64 warchiefKargathGUID;
|
||||
uint64 nethekurseDoor1GUID;
|
||||
uint64 nethekurseDoor2GUID;
|
||||
ObjectGuid warchiefKargathGUID;
|
||||
ObjectGuid nethekurseDoor1GUID;
|
||||
ObjectGuid nethekurseDoor2GUID;
|
||||
|
||||
uint64 executionerGUID;
|
||||
uint64 prisonerGUID[3];
|
||||
ObjectGuid executionerGUID;
|
||||
ObjectGuid prisonerGUID[3];
|
||||
uint32 RescueTimer;
|
||||
TeamId TeamIdInInstance;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user