Scripts/Halls of Origination: modernized creature accessing via data type

This commit is contained in:
Ovahlord
2023-12-25 18:06:44 +01:00
parent 01b1216058
commit 4a61675191
4 changed files with 30 additions and 50 deletions

View File

@@ -170,7 +170,7 @@ struct boss_anraphet : public BossAI
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
Talk(ANRAPHET_SAY_DEATH);
if (Creature* brann = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_BRANN_0_GUID)))
if (Creature* brann = instance->GetCreature(DATA_BRANN_BRONZEBEARD))
brann->AI()->DoAction(ACTION_ANRAPHET_DIED);
_JustDied();
@@ -289,7 +289,7 @@ struct npc_alpha_beam : public ScriptedAI
void IsSummonedBy(WorldObject* /*summoner*/) override
{
if (Creature* anraphet = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_ANRAPHET_GUID)))
if (Creature* anraphet = _instance->GetCreature(BOSS_ANRAPHET))
anraphet->CastSpell(me, SPELL_ALPHA_BEAMS_BACK_CAST);
}
@@ -330,22 +330,22 @@ struct npc_brann_bronzebeard_anraphet : public CreatureAI
{
switch (action)
{
case ACTION_ELEMENTAL_DIED:
{
uint32 dead = _instance->GetData(DATA_DEAD_ELEMENTALS);
Talk(BRANN_1_ELEMENTAL_DEAD + dead - 1);
if (dead == 4)
case ACTION_ELEMENTAL_DIED:
{
_instance->DoCastSpellOnPlayers(SPELL_VAULT_OF_LIGHTS_CREDIT);
if (Creature* anraphet = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_ANRAPHET_GUID)))
anraphet->AI()->DoAction(ACTION_ANRAPHET_INTRO);
uint32 dead = _instance->GetData(DATA_DEAD_ELEMENTALS);
Talk(BRANN_1_ELEMENTAL_DEAD + dead - 1);
if (dead == 4)
{
_instance->DoCastSpellOnPlayers(SPELL_VAULT_OF_LIGHTS_CREDIT);
if (Creature* anraphet = _instance->GetCreature(BOSS_ANRAPHET))
anraphet->AI()->DoAction(ACTION_ANRAPHET_INTRO);
}
break;
}
break;
}
case ACTION_ANRAPHET_DIED:
me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
events.ScheduleEvent(EVENT_BRANN_MOVE_INTRO, 1s);
break;
case ACTION_ANRAPHET_DIED:
me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
events.ScheduleEvent(EVENT_BRANN_MOVE_INTRO, 1s);
break;
}
}

View File

@@ -38,8 +38,8 @@ struct go_hoo_the_makers_lift_controller : public GameObjectAI
ClearGossipMenuFor(player);
player->PlayerTalkClass->SendCloseGossip();
if (GameObject* elevator = _instance->GetGameObject(DATA_LIFT_OF_THE_MAKERS))
elevator->SetGoState(GOState(GO_STATE_TRANSPORT_ACTIVE + gossipListId));
if (GameObject* elevator = _instance->GetGameObject(DATA_LIFT_OF_THE_MAKERS))
elevator->SetGoState(GOState(GO_STATE_TRANSPORT_ACTIVE + gossipListId));
return false;
}

View File

@@ -44,16 +44,14 @@ enum HOOData
BOSS_AIR_WARDEN,
// Temple Guardian Anhuur
DATA_ANHUUR_GUID,
DATA_ANHUUR_LEFT_BEACON,
DATA_ANHUUR_RIGHT_BEACON,
DATA_ANHUUR_BRIDGE,
DATA_ANHUUR_DOOR,
// Anraphet
DATA_BRANN_0_GUID,
DATA_DEAD_ELEMENTALS,
DATA_ANRAPHET_GUID,
DATA_BRANN_BRONZEBEARD,
// Events
DATA_LIFT_OF_THE_MAKERS

View File

@@ -40,6 +40,15 @@ DoorData const doorData[] =
{ 0, 0, EncounterDoorBehavior::OpenWhenNotInProgress }
};
ObjectData const creatureData[] =
{
{ NPC_TEMPLE_GUARDIAN_ANHUUR, BOSS_TEMPLE_GUARDIAN_ANHUUR },
{ NPC_ANRAPHET, BOSS_ANRAPHET },
{ NPC_EARTHRAGER_PTAH, BOSS_EARTHRAGER_PTAH },
{ NPC_BRANN_BRONZEBEARD_0, DATA_BRANN_BRONZEBEARD },
{ 0, 0 } //END
};
ObjectData const gameObjectData[] =
{
{ GO_LIFT_OF_THE_MAKERS, DATA_LIFT_OF_THE_MAKERS },
@@ -68,7 +77,7 @@ class instance_halls_of_origination : public InstanceMapScript
{
SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadObjectData(nullptr, gameObjectData);
LoadObjectData(creatureData, gameObjectData);
LoadDoorData(doorData);
LoadDungeonEncounterData(encounters);
_deadElementals = 0;
@@ -137,24 +146,6 @@ class instance_halls_of_origination : public InstanceMapScript
}
}
void OnCreatureCreate(Creature* creature) override
{
InstanceScript::OnCreatureCreate(creature);
switch (creature->GetEntry())
{
case BOSS_TEMPLE_GUARDIAN_ANHUUR:
TempleGuardianAnhuurGUID = creature->GetGUID();
break;
case NPC_BRANN_BRONZEBEARD_0:
BrannBronzebeardGUID = creature->GetGUID();
break;
case BOSS_ANRAPHET:
AnraphetGUID = creature->GetGUID();
break;
}
}
uint32 GetData(uint32 data) const override
{
switch (data)
@@ -180,12 +171,6 @@ class instance_halls_of_origination : public InstanceMapScript
return AnhuurLeftBeaconGUID;
case DATA_ANHUUR_RIGHT_BEACON:
return AnhuurRightBeaconGUID;
case DATA_ANHUUR_GUID:
return TempleGuardianAnhuurGUID;
case DATA_BRANN_0_GUID:
return BrannBronzebeardGUID;
case DATA_ANRAPHET_GUID:
return AnraphetGUID;
}
return InstanceScript::GetGuidData(type);
@@ -221,7 +206,7 @@ class instance_halls_of_origination : public InstanceMapScript
SetBossState(data, IN_PROGRESS); // Needs to be set to IN_PROGRESS or else the gameobjects state won't be updated
SetBossState(data, DONE);
IncreaseDeadElementals(1);
if (Creature* brann = instance->GetCreature(BrannBronzebeardGUID))
if (Creature* brann = GetCreature(DATA_BRANN_BRONZEBEARD))
brann->AI()->DoAction(ACTION_ELEMENTAL_DIED);
break;
}
@@ -234,13 +219,10 @@ class instance_halls_of_origination : public InstanceMapScript
}
protected:
ObjectGuid TempleGuardianAnhuurGUID;
ObjectGuid AnhuursBridgeGUID;
ObjectGuid AnhuursDoorGUID;
ObjectGuid AnhuurRightBeaconGUID;
ObjectGuid AnhuurLeftBeaconGUID;
ObjectGuid BrannBronzebeardGUID;
ObjectGuid AnraphetGUID;
ObjectGuid AnraphetDoorGUID;
ObjectGuid SunMirrorGUID;
uint32 _deadElementals;