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

@@ -356,13 +356,13 @@ public:
me->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
me->RemoveFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH);
me->CastSpell((Unit*)nullptr, SPELL_TARGET_OMEGA, false);
instance->HandleGameObject(instance->GetData64(DATA_WARDENS_SHIELD), true);
instance->HandleGameObject(instance->GetGuidData(DATA_WARDENS_SHIELD), true);
instance->SetBossState(DATA_WARDEN_MELLICHAR, NOT_STARTED);
}
void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType, SpellSchoolMask) override
{
if (attacker && IS_PLAYER_GUID(attacker->GetCharmerOrOwnerOrOwnGUID()) && damage > 0 && !me->isActiveObject())
if (attacker && attacker->GetCharmerOrOwnerOrOwnGUID().IsPlayer() && damage > 0 && !me->isActiveObject())
{
me->setActive(true);
me->InterruptNonMeleeSpells(false);
@@ -418,7 +418,7 @@ public:
events.ScheduleEvent(EVENT_WARDEN_INTRO2, 1400);
break;
case EVENT_WARDEN_INTRO2:
instance->HandleGameObject(instance->GetData64(DATA_WARDENS_SHIELD), false);
instance->HandleGameObject(instance->GetGuidData(DATA_WARDENS_SHIELD), false);
events.ScheduleEvent(EVENT_WARDEN_INTRO3, 20000);
break;
case EVENT_WARDEN_INTRO3:
@@ -537,7 +537,7 @@ public:
events.ScheduleEvent(EVENT_WARDEN_INTRO28, 5000);
break;
case EVENT_WARDEN_INTRO28:
instance->HandleGameObject(instance->GetData64(DATA_WARDENS_SHIELD), true);
instance->HandleGameObject(instance->GetGuidData(DATA_WARDENS_SHIELD), true);
if (Creature* creature = summons.GetCreatureWithEntry(NPC_HARBINGER_SKYRISS))
creature->CastSpell((Unit*)nullptr, SPELL_MIND_REND, false);
events.ScheduleEvent(EVENT_WARDEN_INTRO29, 4000);

View File

@@ -68,7 +68,7 @@ public:
_JustDied();
Talk(SAY_DEATH);
if (Creature* soccothrates = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SOCCOTHRATES)))
if (Creature* soccothrates = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SOCCOTHRATES)))
if (soccothrates->IsAlive() && !soccothrates->IsInCombat())
soccothrates->AI()->SetData(1, 1);
}
@@ -137,14 +137,14 @@ public:
events.ScheduleEvent(EVENT_SHADOW_WAVE, urand(11000, 16000));
break;
case EVENT_ME_FIRST:
if (Creature* soccothrates = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SOCCOTHRATES)))
if (Creature* soccothrates = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SOCCOTHRATES)))
if (soccothrates->IsAlive() && !soccothrates->IsInCombat())
soccothrates->AI()->Talk(SAY_AGGRO_DALLIAH_FIRST);
break;
case EVENT_CHECK_HEALTH:
if (HealthBelowPct(25))
{
if (Creature* soccothrates = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SOCCOTHRATES)))
if (Creature* soccothrates = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SOCCOTHRATES)))
soccothrates->AI()->Talk(SAY_DALLIAH_25_PERCENT);
break;
}

View File

@@ -89,7 +89,7 @@ public:
_JustDied();
Talk(SAY_DEATH);
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_DALLIAH)))
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DALLIAH)))
if (dalliah->IsAlive() && !dalliah->IsInCombat())
dalliah->AI()->SetData(1, 1);
}
@@ -133,7 +133,7 @@ public:
switch (events2.ExecuteEvent())
{
case EVENT_PREFIGHT_1:
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_DALLIAH)))
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DALLIAH)))
dalliah->AI()->Talk(SAY_DALLIAH_CONVO_1);
events2.ScheduleEvent(EVENT_PREFIGHT_2, 3000);
break;
@@ -142,7 +142,7 @@ public:
events2.ScheduleEvent(EVENT_PREFIGHT_3, 3000);
break;
case EVENT_PREFIGHT_3:
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_DALLIAH)))
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DALLIAH)))
dalliah->AI()->Talk(SAY_DALLIAH_CONVO_2);
events2.ScheduleEvent(EVENT_PREFIGHT_4, 6000);
break;
@@ -151,7 +151,7 @@ public:
events2.ScheduleEvent(EVENT_PREFIGHT_5, 2000);
break;
case EVENT_PREFIGHT_5:
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_DALLIAH)))
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DALLIAH)))
dalliah->AI()->Talk(SAY_DALLIAH_CONVO_3);
events2.ScheduleEvent(EVENT_PREFIGHT_6, 3000);
break;
@@ -160,7 +160,7 @@ public:
events2.ScheduleEvent(EVENT_PREFIGHT_7, 2000);
break;
case EVENT_PREFIGHT_7:
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_DALLIAH)))
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DALLIAH)))
dalliah->GetMotionMaster()->MovePoint(0, 118.6048f, 96.84852f, 22.44115f);
events2.ScheduleEvent(EVENT_PREFIGHT_8, 4000);
break;
@@ -169,7 +169,7 @@ public:
events2.ScheduleEvent(EVENT_PREFIGHT_9, 4000);
break;
case EVENT_PREFIGHT_9:
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_DALLIAH)))
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DALLIAH)))
{
dalliah->SetFacingToObject(me);
dalliah->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
@@ -217,14 +217,14 @@ public:
me->CastSpell(me, SPELL_FELFIRE, true);
break;
case EVENT_ME_FIRST:
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_DALLIAH)))
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DALLIAH)))
if (dalliah->IsAlive() && !dalliah->IsInCombat())
dalliah->AI()->Talk(SAY_AGGRO_SOCCOTHRATES_FIRST);
break;
case EVENT_CHECK_HEALTH:
if (HealthBelowPct(25))
{
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_DALLIAH)))
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DALLIAH)))
dalliah->AI()->Talk(SAY_SOCCOTHRATES_25_PERCENT);
break;
}

View File

@@ -24,13 +24,6 @@ public:
{
SetBossNumber(MAX_ENCOUTER);
LoadDoorData(doorData);
DalliahGUID = 0;
SoccothratesGUID = 0;
MellicharGUID = 0;
WardensShieldGUID = 0;
memset(StasisPodGUIDs, 0, 5 * sizeof(uint64));
}
void OnCreatureCreate(Creature* creature) override
@@ -115,7 +108,7 @@ public:
return 0;
}
uint64 GetData64(uint32 data) const override
ObjectGuid GetGuidData(uint32 data) const override
{
switch (data)
{
@@ -126,7 +119,8 @@ public:
case DATA_WARDENS_SHIELD:
return WardensShieldGUID;
}
return 0;
return ObjectGuid::Empty;
}
bool SetBossState(uint32 type, EncounterState state) override
@@ -191,11 +185,11 @@ public:
}
protected:
uint64 DalliahGUID;
uint64 SoccothratesGUID;
uint64 StasisPodGUIDs[5];
uint64 MellicharGUID;
uint64 WardensShieldGUID;
ObjectGuid DalliahGUID;
ObjectGuid SoccothratesGUID;
ObjectGuid StasisPodGUIDs[5];
ObjectGuid MellicharGUID;
ObjectGuid WardensShieldGUID;
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override