mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-03-15 05:25:08 +00:00
fix(Scripts/EoE): fix Malygos reseting at p3 and other improvements (#24566)
This commit is contained in:
@@ -188,16 +188,9 @@ enum MalygosLightOverrides
|
|||||||
LIGHT_OBSCURE_ARCANE_RUNES = 1825,
|
LIGHT_OBSCURE_ARCANE_RUNES = 1825,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct boss_malygos : public ScriptedAI
|
struct boss_malygos : public BossAI
|
||||||
{
|
{
|
||||||
boss_malygos(Creature* c) : ScriptedAI(c), summons(me)
|
boss_malygos(Creature* creature) : BossAI(creature, DATA_MALYGOS) { }
|
||||||
{
|
|
||||||
pInstance = me->GetInstanceScript();
|
|
||||||
}
|
|
||||||
|
|
||||||
InstanceScript* pInstance;
|
|
||||||
EventMap events;
|
|
||||||
SummonList summons;
|
|
||||||
|
|
||||||
uint32 timer1, timer2;
|
uint32 timer1, timer2;
|
||||||
uint8 IntroCounter;
|
uint8 IntroCounter;
|
||||||
@@ -211,9 +204,7 @@ struct boss_malygos : public ScriptedAI
|
|||||||
|
|
||||||
void Reset() override
|
void Reset() override
|
||||||
{
|
{
|
||||||
events.Reset();
|
_Reset();
|
||||||
events.SetPhase(PHASE_NONE);
|
|
||||||
summons.DespawnAll();
|
|
||||||
|
|
||||||
timer1 = MalygosIntroIntervals[4];
|
timer1 = MalygosIntroIntervals[4];
|
||||||
timer2 = INTRO_MOVEMENT_INTERVAL;
|
timer2 = INTRO_MOVEMENT_INTERVAL;
|
||||||
@@ -226,11 +217,7 @@ struct boss_malygos : public ScriptedAI
|
|||||||
|
|
||||||
me->SetAnimTier(AnimTier::Fly);
|
me->SetAnimTier(AnimTier::Fly);
|
||||||
|
|
||||||
if (pInstance)
|
instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_YOU_DONT_HAVE_AN_ENTERNITY_EVENT);
|
||||||
{
|
|
||||||
pInstance->SetData(DATA_ENCOUNTER_STATUS, NOT_STARTED);
|
|
||||||
pInstance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_YOU_DONT_HAVE_AN_ENTERNITY_EVENT);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MovementInform(uint32 type, uint32 id) override
|
void MovementInform(uint32 type, uint32 id) override
|
||||||
@@ -305,14 +292,10 @@ struct boss_malygos : public ScriptedAI
|
|||||||
|
|
||||||
void JustEngagedWith(Unit* /*who*/) override
|
void JustEngagedWith(Unit* /*who*/) override
|
||||||
{
|
{
|
||||||
|
_JustEngagedWith();
|
||||||
events.Reset();
|
events.Reset();
|
||||||
DoZoneInCombat();
|
|
||||||
|
|
||||||
Talk(SAY_PHASE_1);
|
Talk(SAY_PHASE_1);
|
||||||
|
|
||||||
events.RescheduleEvent(EVENT_INTRO_MOVE_CENTER, 0ms, 1);
|
events.RescheduleEvent(EVENT_INTRO_MOVE_CENTER, 0ms, 1);
|
||||||
if (pInstance)
|
|
||||||
pInstance->SetData(DATA_ENCOUNTER_STATUS, IN_PROGRESS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AttackStart(Unit* victim) override
|
void AttackStart(Unit* victim) override
|
||||||
@@ -372,8 +355,7 @@ struct boss_malygos : public ScriptedAI
|
|||||||
break;
|
break;
|
||||||
case EVENT_INTRO_MOVE_CENTER:
|
case EVENT_INTRO_MOVE_CENTER:
|
||||||
{
|
{
|
||||||
if (pInstance)
|
instance->SetData(DATA_SET_IRIS_INACTIVE, 0);
|
||||||
pInstance->SetData(DATA_SET_IRIS_INACTIVE, 0);
|
|
||||||
summons.DespawnAll();
|
summons.DespawnAll();
|
||||||
me->InterruptNonMeleeSpells(true);
|
me->InterruptNonMeleeSpells(true);
|
||||||
me->RemoveAllAuras();
|
me->RemoveAllAuras();
|
||||||
@@ -392,11 +374,8 @@ struct boss_malygos : public ScriptedAI
|
|||||||
}
|
}
|
||||||
case EVENT_START_FIGHT:
|
case EVENT_START_FIGHT:
|
||||||
{
|
{
|
||||||
if (pInstance)
|
instance->SetData(DATA_HIDE_IRIS_AND_PORTAL, 0);
|
||||||
{
|
instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_YOU_DONT_HAVE_AN_ENTERNITY_EVENT);
|
||||||
pInstance->SetData(DATA_HIDE_IRIS_AND_PORTAL, 0);
|
|
||||||
pInstance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_YOU_DONT_HAVE_AN_ENTERNITY_EVENT);
|
|
||||||
}
|
|
||||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED);
|
||||||
if (Unit* target = me->SelectNearestTarget(250.0f))
|
if (Unit* target = me->SelectNearestTarget(250.0f))
|
||||||
{
|
{
|
||||||
@@ -689,19 +668,16 @@ struct boss_malygos : public ScriptedAI
|
|||||||
|
|
||||||
me->GetThreatMgr().ClearAllThreat(); // players on vehicle are unattackable -> leads to EnterEvadeMode() because target is not acceptable!
|
me->GetThreatMgr().ClearAllThreat(); // players on vehicle are unattackable -> leads to EnterEvadeMode() because target is not acceptable!
|
||||||
|
|
||||||
// mount players:
|
me->GetMap()->DoForAllPlayers([&](Player* player)
|
||||||
Map::PlayerList const& PlayerList = me->GetMap()->GetPlayers();
|
{
|
||||||
if (!PlayerList.IsEmpty())
|
if (player->IsAlive() && !player->IsGameMaster())
|
||||||
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
{
|
||||||
if (Player* player = i->GetSource())
|
sScriptMgr->AnticheatSetUnderACKmount(player);
|
||||||
{
|
player->CastSpell(player, SPELL_SUMMON_RED_DRAGON_BUDDY, true);
|
||||||
sScriptMgr->AnticheatSetUnderACKmount(player);
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (!player->IsAlive() || player->IsGameMaster())
|
DoZoneInCombat();
|
||||||
continue;
|
|
||||||
|
|
||||||
player->CastSpell(player, SPELL_SUMMON_RED_DRAGON_BUDDY, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
events.RescheduleEvent(EVENT_SAY_PHASE_3_INTRO, 3s, 1);
|
events.RescheduleEvent(EVENT_SAY_PHASE_3_INTRO, 3s, 1);
|
||||||
}
|
}
|
||||||
@@ -744,12 +720,9 @@ struct boss_malygos : public ScriptedAI
|
|||||||
|
|
||||||
void JustDied(Unit* /*killer*/) override
|
void JustDied(Unit* /*killer*/) override
|
||||||
{
|
{
|
||||||
|
_JustDied();
|
||||||
Talk(SAY_DEATH);
|
Talk(SAY_DEATH);
|
||||||
if (pInstance)
|
instance->DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE, NPC_MALYGOS, 1);
|
||||||
{
|
|
||||||
pInstance->DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE, NPC_MALYGOS, 1);
|
|
||||||
pInstance->SetData(DATA_ENCOUNTER_STATUS, DONE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void KilledUnit(Unit* victim) override
|
void KilledUnit(Unit* victim) override
|
||||||
|
|||||||
@@ -24,6 +24,8 @@
|
|||||||
#define DataHeader "EOE"
|
#define DataHeader "EOE"
|
||||||
#define EyeOfEternityScriptName "instance_eye_of_eternity"
|
#define EyeOfEternityScriptName "instance_eye_of_eternity"
|
||||||
|
|
||||||
|
uint32 const EncounterCount = 1;
|
||||||
|
|
||||||
enum Objects
|
enum Objects
|
||||||
{
|
{
|
||||||
GO_NEXUS_PLATFORM = 193070,
|
GO_NEXUS_PLATFORM = 193070,
|
||||||
@@ -52,8 +54,8 @@ enum NPCs
|
|||||||
|
|
||||||
enum Data
|
enum Data
|
||||||
{
|
{
|
||||||
|
DATA_MALYGOS = 0,
|
||||||
DATA_IRIS_ACTIVATED,
|
DATA_IRIS_ACTIVATED,
|
||||||
DATA_ENCOUNTER_STATUS,
|
|
||||||
DATA_SET_IRIS_INACTIVE,
|
DATA_SET_IRIS_INACTIVE,
|
||||||
DATA_HIDE_IRIS_AND_PORTAL,
|
DATA_HIDE_IRIS_AND_PORTAL,
|
||||||
DATA_MALYGOS_GUID,
|
DATA_MALYGOS_GUID,
|
||||||
@@ -87,6 +89,11 @@ enum eAchiev
|
|||||||
ACHIEV_YOU_DONT_HAVE_AN_ENTERNITY_EVENT = 20387,
|
ACHIEV_YOU_DONT_HAVE_AN_ENTERNITY_EVENT = 20387,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum EoEMisc : uint32
|
||||||
|
{
|
||||||
|
EVENT_IRIS_ACTIVATED = 20158
|
||||||
|
};
|
||||||
|
|
||||||
/*** POSITIONS/WAYPOINTS BELOW ***/
|
/*** POSITIONS/WAYPOINTS BELOW ***/
|
||||||
|
|
||||||
#define INTRO_MOVEMENT_INTERVAL 25000
|
#define INTRO_MOVEMENT_INTERVAL 25000
|
||||||
|
|||||||
@@ -26,18 +26,10 @@ class instance_eye_of_eternity : public InstanceMapScript
|
|||||||
public:
|
public:
|
||||||
instance_eye_of_eternity() : InstanceMapScript("instance_eye_of_eternity", MAP_THE_EYE_OF_ETERNITY) { }
|
instance_eye_of_eternity() : InstanceMapScript("instance_eye_of_eternity", MAP_THE_EYE_OF_ETERNITY) { }
|
||||||
|
|
||||||
InstanceScript* GetInstanceScript(InstanceMap* pMap) const override
|
|
||||||
{
|
|
||||||
return new instance_eye_of_eternity_InstanceMapScript(pMap);
|
|
||||||
}
|
|
||||||
|
|
||||||
struct instance_eye_of_eternity_InstanceMapScript : public InstanceScript
|
struct instance_eye_of_eternity_InstanceMapScript : public InstanceScript
|
||||||
{
|
{
|
||||||
instance_eye_of_eternity_InstanceMapScript(Map* pMap) : InstanceScript(pMap) { Initialize(); }
|
instance_eye_of_eternity_InstanceMapScript(Map* pMap) : InstanceScript(pMap) { Initialize(); }
|
||||||
|
|
||||||
uint32 EncounterStatus;
|
|
||||||
std::string str_data;
|
|
||||||
|
|
||||||
ObjectGuid NPC_MalygosGUID;
|
ObjectGuid NPC_MalygosGUID;
|
||||||
ObjectGuid GO_IrisGUID;
|
ObjectGuid GO_IrisGUID;
|
||||||
ObjectGuid GO_ExitPortalGUID;
|
ObjectGuid GO_ExitPortalGUID;
|
||||||
@@ -46,34 +38,24 @@ public:
|
|||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
{
|
{
|
||||||
EncounterStatus = NOT_STARTED;
|
SetHeaders(DataHeader);
|
||||||
|
SetBossNumber(EncounterCount);
|
||||||
bPokeAchiev = false;
|
bPokeAchiev = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsEncounterInProgress() const override
|
|
||||||
{
|
|
||||||
return EncounterStatus == IN_PROGRESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnPlayerEnter(Player* player) override
|
void OnPlayerEnter(Player* player) override
|
||||||
{
|
{
|
||||||
if (EncounterStatus == DONE)
|
if (GetBossState(DATA_MALYGOS) == DONE)
|
||||||
{
|
{
|
||||||
// destroy platform, hide iris (actually ensure, done at loading, but doesn't always work
|
// destroy platform, hide iris (actually ensure, done at loading, but doesn't always work
|
||||||
ProcessEvent(nullptr, 20158);
|
ProcessEvent(nullptr, EVENT_IRIS_ACTIVATED);
|
||||||
if (GameObject* go = instance->GetGameObject(GO_IrisGUID))
|
if (GameObject* go = instance->GetGameObject(GO_IrisGUID))
|
||||||
if (go->GetPhaseMask() != 2)
|
if (go->GetPhaseMask() != 2)
|
||||||
go->SetPhaseMask(2, true);
|
go->SetPhaseMask(2, true);
|
||||||
|
|
||||||
// no floor, so put players on drakes
|
// no floor, so put players on drakes
|
||||||
if (player)
|
if (player && player->IsAlive())
|
||||||
{
|
|
||||||
if (!player->IsAlive())
|
|
||||||
return;
|
|
||||||
|
|
||||||
player->CastSpell(player, SPELL_SUMMON_RED_DRAGON_BUDDY, true);
|
player->CastSpell(player, SPELL_SUMMON_RED_DRAGON_BUDDY, true);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,59 +76,34 @@ public:
|
|||||||
case GO_IRIS_N:
|
case GO_IRIS_N:
|
||||||
case GO_IRIS_H:
|
case GO_IRIS_H:
|
||||||
GO_IrisGUID = go->GetGUID();
|
GO_IrisGUID = go->GetGUID();
|
||||||
|
|
||||||
|
if (GetBossState(DATA_MALYGOS) == DONE)
|
||||||
|
go->SetPhaseMask(2, true);
|
||||||
break;
|
break;
|
||||||
case GO_EXIT_PORTAL:
|
case GO_EXIT_PORTAL:
|
||||||
GO_ExitPortalGUID = go->GetGUID();
|
GO_ExitPortalGUID = go->GetGUID();
|
||||||
break;
|
break;
|
||||||
case GO_NEXUS_PLATFORM:
|
case GO_NEXUS_PLATFORM:
|
||||||
GO_PlatformGUID = go->GetGUID();
|
GO_PlatformGUID = go->GetGUID();
|
||||||
|
if (GetBossState(DATA_MALYGOS) == DONE)
|
||||||
|
{
|
||||||
|
go->ModifyHealth(-6500000); // We have HP 6 million in the database... So we have to do at least that
|
||||||
|
go->EnableCollision(false);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetData(uint32 type, uint32 data) override
|
void SetData(uint32 type, uint32 /*data*/) override
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case DATA_IRIS_ACTIVATED:
|
case DATA_IRIS_ACTIVATED:
|
||||||
if (EncounterStatus == NOT_STARTED)
|
if (GetBossState(DATA_MALYGOS) == NOT_STARTED)
|
||||||
if (Creature* c = instance->GetCreature(NPC_MalygosGUID))
|
if (Creature* c = instance->GetCreature(NPC_MalygosGUID))
|
||||||
if (Player* plr = c->SelectNearestPlayer(250.0f))
|
if (Player* plr = c->SelectNearestPlayer(250.0f))
|
||||||
c->AI()->AttackStart(plr);
|
c->AI()->AttackStart(plr);
|
||||||
break;
|
break;
|
||||||
case DATA_ENCOUNTER_STATUS:
|
|
||||||
EncounterStatus = data;
|
|
||||||
switch (data)
|
|
||||||
{
|
|
||||||
case NOT_STARTED:
|
|
||||||
bPokeAchiev = false;
|
|
||||||
if (GameObject* go = instance->GetGameObject(GO_IrisGUID))
|
|
||||||
{
|
|
||||||
go->SetPhaseMask(1, true);
|
|
||||||
HandleGameObject(GO_IrisGUID, false, go);
|
|
||||||
}
|
|
||||||
if (GameObject* go = instance->GetGameObject(GO_ExitPortalGUID))
|
|
||||||
go->SetPhaseMask(1, true);
|
|
||||||
if (GameObject* go = instance->GetGameObject(GO_PlatformGUID))
|
|
||||||
{
|
|
||||||
go->SetDestructibleState(GO_DESTRUCTIBLE_REBUILDING, nullptr, true);
|
|
||||||
go->EnableCollision(true);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case IN_PROGRESS:
|
|
||||||
bPokeAchiev = (instance->GetPlayersCountExceptGMs() < (instance->GetSpawnMode() == 0 ? (uint32)9 : (uint32)21));
|
|
||||||
break;
|
|
||||||
case DONE:
|
|
||||||
bPokeAchiev = false;
|
|
||||||
if (GameObject* go = instance->GetGameObject(GO_ExitPortalGUID))
|
|
||||||
go->SetPhaseMask(1, true);
|
|
||||||
if (Creature* c = instance->GetCreature(NPC_MalygosGUID))
|
|
||||||
if (c->SummonCreature(NPC_ALEXSTRASZA, 798.0f, 1268.0f, 299.0f, 2.45f, TEMPSUMMON_TIMED_DESPAWN, 604800000))
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (data == DONE)
|
|
||||||
SaveToDB();
|
|
||||||
break;
|
|
||||||
case DATA_SET_IRIS_INACTIVE:
|
case DATA_SET_IRIS_INACTIVE:
|
||||||
if (GameObject* go = instance->GetGameObject(GO_IrisGUID))
|
if (GameObject* go = instance->GetGameObject(GO_IrisGUID))
|
||||||
{
|
{
|
||||||
@@ -164,6 +121,49 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SetBossState(uint32 type, EncounterState state) override
|
||||||
|
{
|
||||||
|
if (!InstanceScript::SetBossState(type, state))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (type == DATA_MALYGOS)
|
||||||
|
{
|
||||||
|
switch (state)
|
||||||
|
{
|
||||||
|
case NOT_STARTED:
|
||||||
|
bPokeAchiev = false;
|
||||||
|
if (GameObject* go = instance->GetGameObject(GO_IrisGUID))
|
||||||
|
{
|
||||||
|
go->SetPhaseMask(1, true);
|
||||||
|
HandleGameObject(GO_IrisGUID, false, go);
|
||||||
|
}
|
||||||
|
if (GameObject* go = instance->GetGameObject(GO_ExitPortalGUID))
|
||||||
|
go->SetPhaseMask(1, true);
|
||||||
|
if (GameObject* go = instance->GetGameObject(GO_PlatformGUID))
|
||||||
|
{
|
||||||
|
go->SetDestructibleState(GO_DESTRUCTIBLE_REBUILDING, nullptr, true);
|
||||||
|
go->EnableCollision(true);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case IN_PROGRESS:
|
||||||
|
bPokeAchiev = (instance->GetPlayersCountExceptGMs() < (instance->GetSpawnMode() == 0 ? (uint32)9 : (uint32)21));
|
||||||
|
break;
|
||||||
|
case DONE:
|
||||||
|
bPokeAchiev = false;
|
||||||
|
if (GameObject* go = instance->GetGameObject(GO_ExitPortalGUID))
|
||||||
|
go->SetPhaseMask(1, true);
|
||||||
|
if (Creature* c = instance->GetCreature(NPC_MalygosGUID))
|
||||||
|
if (c->SummonCreature(NPC_ALEXSTRASZA, 798.0f, 1268.0f, 299.0f, 2.45f, TEMPSUMMON_TIMED_DESPAWN, 604800000))
|
||||||
|
break;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
ObjectGuid GetGuidData(uint32 type) const override
|
ObjectGuid GetGuidData(uint32 type) const override
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
@@ -177,40 +177,13 @@ public:
|
|||||||
|
|
||||||
void ProcessEvent(WorldObject* /*unit*/, uint32 eventId) override
|
void ProcessEvent(WorldObject* /*unit*/, uint32 eventId) override
|
||||||
{
|
{
|
||||||
switch (eventId)
|
if (eventId == EVENT_IRIS_ACTIVATED)
|
||||||
{
|
if (GameObject* go = instance->GetGameObject(GO_PlatformGUID))
|
||||||
case 20158:
|
if (Creature* c = instance->GetCreature(NPC_MalygosGUID))
|
||||||
if (GameObject* go = instance->GetGameObject(GO_PlatformGUID))
|
{
|
||||||
if (Creature* c = instance->GetCreature(NPC_MalygosGUID))
|
go->ModifyHealth(-6500000, c); // We have HP 6 million in the database... So we have to do at least that
|
||||||
{
|
go->EnableCollision(false);
|
||||||
go->ModifyHealth(-6500000, c); // We have HP 6 million in the database... So we have to do at least that
|
}
|
||||||
go->EnableCollision(false);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ReadSaveDataMore(std::istringstream& data) override
|
|
||||||
{
|
|
||||||
data >> EncounterStatus;
|
|
||||||
|
|
||||||
switch (EncounterStatus)
|
|
||||||
{
|
|
||||||
case IN_PROGRESS:
|
|
||||||
EncounterStatus = NOT_STARTED;
|
|
||||||
break;
|
|
||||||
case DONE:
|
|
||||||
// destroy platform, hide iris
|
|
||||||
ProcessEvent(nullptr, 20158);
|
|
||||||
if (GameObject* go = instance->GetGameObject(GO_IrisGUID))
|
|
||||||
go->SetPhaseMask(2, true);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void WriteSaveDataMore(std::ostringstream& data) override
|
|
||||||
{
|
|
||||||
data << EncounterStatus;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* source, Unit const* /*target*/, uint32 /*miscvalue1*/) override
|
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* source, Unit const* /*target*/, uint32 /*miscvalue1*/) override
|
||||||
@@ -227,6 +200,11 @@ public:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
||||||
|
{
|
||||||
|
return new instance_eye_of_eternity_InstanceMapScript(map);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void AddSC_instance_eye_of_eternity()
|
void AddSC_instance_eye_of_eternity()
|
||||||
|
|||||||
Reference in New Issue
Block a user