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