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
@@ -75,7 +75,7 @@ public:
bool Execute(uint64 /*execTime*/, uint32 /*diff*/) override
{
if (InstanceScript* instance = _owner->GetInstanceScript())
if (Creature* vashj = ObjectAccessor::GetCreature(*_owner, instance->GetData64(NPC_LADY_VASHJ)))
if (Creature* vashj = ObjectAccessor::GetCreature(*_owner, instance->GetGuidData(NPC_LADY_VASHJ)))
_owner->GetMotionMaster()->MoveFollow(vashj, 3.0f, vashj->GetAngle(_owner), MOTION_SLOT_CONTROLLED);
return true;
}
@@ -363,7 +363,7 @@ public:
if (CheckTimer <= diff)
{
// check if vashj is death
Unit* Vashj = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_LADYVASHJ));
Unit* Vashj = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_LADYVASHJ));
if (!Vashj || !Vashj->IsAlive() || CAST_AI(boss_lady_vashj::boss_lady_vashjAI, Vashj->ToCreature()->AI())->Phase != 3)
{
// remove
@@ -273,7 +273,7 @@ public:
{
}
uint64 ownerGUID;
ObjectGuid ownerGUID;
EventMap events;
void EnterEvadeMode() override
@@ -428,7 +428,7 @@ public:
{
if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_DEFAULT)
if (InstanceScript* instance = GetUnitOwner()->GetInstanceScript())
if (Creature* leotheras = ObjectAccessor::GetCreature(*GetUnitOwner(), instance->GetData64(NPC_LEOTHERAS_THE_BLIND)))
if (Creature* leotheras = ObjectAccessor::GetCreature(*GetUnitOwner(), instance->GetGuidData(NPC_LEOTHERAS_THE_BLIND)))
leotheras->CastSpell(GetUnitOwner(), SPELL_CONSUMING_MADNESS, true);
}
@@ -137,7 +137,7 @@ public:
me->CastSpell(me, SPELL_SPOUT_VISUAL, TRIGGERED_IGNORE_SET_FACING);
me->SetReactState(REACT_PASSIVE);
me->SetFacingToObject(me->GetVictim());
me->SetTarget(0);
me->SetTarget();
events.ScheduleEvent(EVENT_SPELL_SPOUT, 60000);
events.RescheduleEvent(EVENT_SPELL_WHIRL, 18000);
events.RescheduleEvent(EVENT_SPELL_GEYSER, 25000);
@@ -205,7 +205,7 @@ public:
if (roll_chance_i(instance->GetBossState(DATA_THE_LURKER_BELOW) != DONE ? 25 : 0) && !instance->IsEncounterInProgress())
{
player->CastSpell(player, SPELL_LURKER_SPAWN_TRIGGER, true);
if (Creature* lurker = ObjectAccessor::GetCreature(*go, instance->GetData64(NPC_THE_LURKER_BELOW)))
if (Creature* lurker = ObjectAccessor::GetCreature(*go, instance->GetGuidData(NPC_THE_LURKER_BELOW)))
lurker->AI()->DoAction(ACTION_START_EVENT);
return true;
}
@@ -32,11 +32,7 @@ public:
SetBossNumber(MAX_ENCOUNTERS);
LoadDoorData(doorData);
LadyVashjGUID = 0;
memset(&ShieldGeneratorGUID, 0, sizeof(ShieldGeneratorGUID));
AliveKeepersCount = 0;
LeotherasTheBlindGUID = 0;
LurkerBelowGUID = 0;
}
bool SetBossState(uint32 type, EncounterState state) override
@@ -115,7 +111,7 @@ public:
}
}
uint64 GetData64(uint32 identifier) const override
ObjectGuid GetGuidData(uint32 identifier) const override
{
switch (identifier)
{
@@ -126,7 +122,8 @@ public:
case NPC_LADY_VASHJ:
return LadyVashjGUID;
}
return 0;
return ObjectGuid::Empty;
}
void SetData(uint32 type, uint32 /*data*/) override
@@ -207,10 +204,10 @@ public:
}
private:
uint64 LadyVashjGUID;
uint64 ShieldGeneratorGUID[4];
uint64 LurkerBelowGUID;
uint64 LeotherasTheBlindGUID;
ObjectGuid LadyVashjGUID;
ObjectGuid ShieldGeneratorGUID[4];
ObjectGuid LurkerBelowGUID;
ObjectGuid LeotherasTheBlindGUID;
int32 AliveKeepersCount;
};
@@ -81,7 +81,7 @@ public:
SetCombatMovement(false);
SetEquipmentSlots(false, 54806, EQUIP_UNEQUIP, EQUIP_UNEQUIP);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
InvokerGUID = 0;
InvokerGUID.Clear();
events.Reset();
events.RescheduleEvent(EVENT_EMERGE, 12000);
events.RescheduleEvent(EVENT_INVOKER_SAY_1, 1000);
@@ -90,7 +90,7 @@ public:
EventMap events;
SummonList summons;
uint64 InvokerGUID;
ObjectGuid InvokerGUID;
void StartPhase1()
{
@@ -77,7 +77,7 @@ public:
LumaGUID = creature->GetGUID();
break;
case NPC_EARTHEN_RING_FLAMECALLER:
SetData64(counter, creature->GetGUID());
SetGuidData(counter, creature->GetGUID());
++counter;
break;
default:
@@ -85,7 +85,7 @@ public:
}
}
void SetData64(uint32 data, uint64 guid) override
void SetGuidData(uint32 data, ObjectGuid guid) override
{
switch (data)
{
@@ -103,7 +103,7 @@ public:
}
}
uint64 GetData64(uint32 type) const override
ObjectGuid GetGuidData(uint32 type) const override
{
switch (type)
{
@@ -136,17 +136,18 @@ public:
default:
break;
}
return 0;
return ObjectGuid::Empty;
}
protected:
uint64 AhuneGUID;
uint64 AhuneBunnyGUID;
uint64 FrozenCoreGUID;
uint64 LumaGUID;
uint64 FlameCallerGUIDs[3];
uint64 BonfireBunnyGUIDs[3];
uint64 BeamBunnyGUIDs[3];
ObjectGuid AhuneGUID;
ObjectGuid AhuneBunnyGUID;
ObjectGuid FrozenCoreGUID;
ObjectGuid LumaGUID;
ObjectGuid FlameCallerGUIDs[3];
ObjectGuid BonfireBunnyGUIDs[3];
ObjectGuid BeamBunnyGUIDs[3];
uint8 counter;
};
@@ -157,14 +157,14 @@ public:
}
uint32 repairTimer;
uint64 bossGUID;
ObjectGuid bossGUID;
void Reset() override
{
repairTimer = 0;
bossGUID = 0;
bossGUID.Clear();
if (InstanceScript* instance = me->GetInstanceScript())
bossGUID = instance->GetData64(TYPE_MEKGINEER_STEAMRIGGER);
bossGUID = instance->GetGuidData(TYPE_MEKGINEER_STEAMRIGGER);
}
void MoveInLineOfSight(Unit* /*who*/) override {}
@@ -51,19 +51,14 @@ public:
uint32 m_auiEncounter[MAX_ENCOUNTER];
uint64 MekgineerGUID;
uint64 MainChambersDoor;
uint64 AccessPanelHydro;
uint64 AccessPanelMek;
ObjectGuid MekgineerGUID;
ObjectGuid MainChambersDoor;
ObjectGuid AccessPanelHydro;
ObjectGuid AccessPanelMek;
void Initialize() override
{
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
MekgineerGUID = 0;
MainChambersDoor = 0;
AccessPanelHydro = 0;
AccessPanelMek = 0;
}
bool IsEncounterInProgress() const override
@@ -92,21 +87,21 @@ public:
case GO_MAIN_CHAMBERS_DOOR:
MainChambersDoor = go->GetGUID();
if (GetData(TYPE_HYDROMANCER_THESPIA) == SPECIAL && GetData(TYPE_MEKGINEER_STEAMRIGGER) == SPECIAL)
HandleGameObject(0, true, go);
HandleGameObject(ObjectGuid::Empty, true, go);
break;
case GO_ACCESS_PANEL_HYDRO:
AccessPanelHydro = go->GetGUID();
if (GetData(TYPE_HYDROMANCER_THESPIA) == DONE)
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
else if (GetData(TYPE_HYDROMANCER_THESPIA) == SPECIAL)
HandleGameObject(0, true, go);
HandleGameObject(ObjectGuid::Empty, true, go);
break;
case GO_ACCESS_PANEL_MEK:
AccessPanelMek = go->GetGUID();
if (GetData(TYPE_MEKGINEER_STEAMRIGGER) == DONE)
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
else if (GetData(TYPE_MEKGINEER_STEAMRIGGER) == SPECIAL)
HandleGameObject(0, true, go);
HandleGameObject(ObjectGuid::Empty, true, go);
break;
}
}
@@ -164,11 +159,12 @@ public:
return 0;
}
uint64 GetData64(uint32 data) const override
ObjectGuid GetGuidData(uint32 data) const override
{
if (data == TYPE_MEKGINEER_STEAMRIGGER)
return MekgineerGUID;
return 0;
return ObjectGuid::Empty;
}
std::string GetSaveData() override
@@ -55,13 +55,13 @@ public:
EventMap events;
SummonList summons;
uint64 lTarget;
ObjectGuid lTarget;
void Reset() override
{
events.Reset();
summons.DespawnAll();
lTarget = 0;
lTarget.Clear();
}
void EnterCombat(Unit*) override
@@ -142,7 +142,7 @@ public:
if (Unit* target = ObjectAccessor::GetUnit(*me, lTarget))
{
if (!target->HasAura(SPELL_LEVITATE))
lTarget = 0;
lTarget.Clear();
else
{
target->CastSpell(target, SPELL_MAGNETIC_PULL, true);
@@ -154,11 +154,11 @@ public:
if (Unit* target = ObjectAccessor::GetUnit(*me, lTarget))
{
if (!target->HasAura(SPELL_LEVITATE))
lTarget = 0;
lTarget.Clear();
else
{
target->AddAura(SPELL_SUSPENSION, target);
lTarget = 0;
lTarget.Clear();
}
}
break;