refactor(Scripts/Karazhan): Move Malchezaar door handling to the inst… (#17730)

This commit is contained in:
Andrew
2023-11-16 14:00:19 -03:00
committed by GitHub
parent d502f571a5
commit 0d8b1d4942
3 changed files with 8 additions and 28 deletions

View File

@@ -84,7 +84,6 @@ struct boss_malchezaar : public BossAI
clearweapons();
relays.clear();
infernalTargets.clear();
instance->HandleGameObject(instance->GetGuidData(DATA_GO_NETHER_DOOR), true);
}
void clearweapons()
@@ -149,7 +148,6 @@ struct boss_malchezaar : public BossAI
{
_JustDied();
Talk(SAY_DEATH);
instance->HandleGameObject(instance->GetGuidData(DATA_GO_NETHER_DOOR), true);
}
void SpawnInfernal(Creature* relay, Creature* target)
@@ -193,8 +191,6 @@ struct boss_malchezaar : public BossAI
me->GetCreaturesWithEntryInRange(relays, 250.0f, NPC_INFERNAL_RELAY);
me->GetCreaturesWithEntryInRange(infernalTargets, 100.0f, NPC_INFERNAL_TARGET);
instance->HandleGameObject(instance->GetGuidData(DATA_GO_NETHER_DOOR), false);
scheduler.Schedule(30s, [this](TaskContext context)
{
DoCastAOE(SPELL_ENFEEBLE);
@@ -282,7 +278,7 @@ struct npc_netherspite_infernal : public ScriptedAI
void UpdateAI(uint32 diff) override
{
_scheduler.Update(diff);
scheduler.Update(diff);
}
void KilledUnit(Unit* who) override
@@ -306,7 +302,7 @@ struct npc_netherspite_infernal : public ScriptedAI
me->SetDisplayId(me->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID));
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
_scheduler.Schedule(4s, [this](TaskContext /*context*/)
scheduler.Schedule(4s, [this](TaskContext /*context*/)
{
DoCastSelf(SPELL_HELLFIRE);
});
@@ -317,9 +313,6 @@ struct npc_netherspite_infernal : public ScriptedAI
{
damage = 0;
}
private:
TaskScheduler _scheduler;
};
struct npc_malchezaar_axe : public ScriptedAI
@@ -337,7 +330,7 @@ struct npc_malchezaar_axe : public ScriptedAI
void JustEngagedWith(Unit* /*who*/) override
{
DoZoneInCombat();
_scheduler.Schedule(7500ms, [this](TaskContext context)
scheduler.Schedule(7500ms, [this](TaskContext context)
{
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true))
{
@@ -358,12 +351,9 @@ struct npc_malchezaar_axe : public ScriptedAI
if (!UpdateVictim())
return;
_scheduler.Update(diff,
scheduler.Update(diff,
std::bind(&ScriptedAI::DoMeleeAttackIfReady, this));
}
private:
TaskScheduler _scheduler;
};
// 30843 - Enfeeble

View File

@@ -57,9 +57,10 @@ ObjectData const gameObjectData[] =
DoorData const doorData[] =
{
{ GO_MASTERS_TERRACE_DOOR, DATA_NIGHTBANE, DOOR_TYPE_ROOM },
{ GO_MASTERS_TERRACE_DOOR2, DATA_NIGHTBANE, DOOR_TYPE_ROOM },
{ 0, 0, DOOR_TYPE_ROOM }
{ GO_MASTERS_TERRACE_DOOR, DATA_NIGHTBANE, DOOR_TYPE_ROOM },
{ GO_MASTERS_TERRACE_DOOR2, DATA_NIGHTBANE, DOOR_TYPE_ROOM },
{ GO_NETHERSPACE_DOOR, DATA_MALCHEZAAR, DOOR_TYPE_ROOM },
{ 0, 0, DOOR_TYPE_ROOM }
};
class instance_karazhan : public InstanceMapScript
@@ -371,13 +372,6 @@ public:
case GO_GAMESMAN_HALL_EXIT_DOOR:
m_uiGamesmansExitDoor = go->GetGUID();
break;
case GO_NETHERSPACE_DOOR:
m_uiNetherspaceDoor = go->GetGUID();
if (GetBossState(DATA_PRINCE) != IN_PROGRESS)
go->SetGameObjectFlag(GO_FLAG_LOCKED);
else
go->RemoveGameObjectFlag(GO_FLAG_LOCKED);
break;
case GO_SIDE_ENTRANCE_DOOR:
if (GetBossState(DATA_OPERA_PERFORMANCE) == DONE)
go->RemoveGameObjectFlag(GO_FLAG_LOCKED);
@@ -487,8 +481,6 @@ public:
return m_uiGamesmansDoor;
case DATA_GO_GAME_EXIT_DOOR:
return m_uiGamesmansExitDoor;
case DATA_GO_NETHER_DOOR:
return m_uiNetherspaceDoor;
case DATA_IMAGE_OF_MEDIVH:
return ImageGUID;
case DATA_NIGHTBANE:
@@ -521,7 +513,6 @@ public:
ObjectGuid m_uiMassiveDoor; // Door at Netherspite
ObjectGuid m_uiGamesmansDoor; // Door before Chess
ObjectGuid m_uiGamesmansExitDoor; // Door after Chess
ObjectGuid m_uiNetherspaceDoor; // Door at Malchezaar
ObjectGuid ImageGUID;
ObjectGuid DustCoveredChest;
ObjectGuid m_uiRelayGUID;

View File

@@ -50,7 +50,6 @@ enum KZDataTypes
DATA_GO_STAGEDOORRIGHT = 20,
DATA_GO_LIBRARY_DOOR = 21,
DATA_GO_MASSIVE_DOOR = 22,
DATA_GO_NETHER_DOOR = 23,
DATA_GO_GAME_DOOR = 24,
DATA_GO_GAME_EXIT_DOOR = 25,
DATA_IMAGE_OF_MEDIVH = 26,