merge dungeon and fix warnings
This commit is contained in:
@@ -138,7 +138,7 @@ struct npc_garrison_invasion_enemy : public ScriptedAI
|
||||
_ownerGuid = ownerGuid;
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer) override
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
auto itr = s_activeInvasions.find(_ownerGuid);
|
||||
if (itr == s_activeInvasions.end())
|
||||
@@ -165,7 +165,7 @@ struct npc_garrison_invasion_enemy : public ScriptedAI
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
void UpdateAI(uint32 /*diff*/) override
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
{
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
/*
|
||||
* Copyright (C) WowCommunity Project
|
||||
*
|
||||
* This SourceCode is NOT free a software. Please hold everything Private
|
||||
* and read our Terms
|
||||
*/
|
||||
|
||||
#include "AreaTriggerAI.h"
|
||||
#include "AreaTrigger.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellAuras.h"
|
||||
#include "SpellHistory.h"
|
||||
#include "Spell.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "algethar_academy.h"
|
||||
|
||||
enum DoragosaSpells
|
||||
{
|
||||
SPELL_ARCANE_MISSILES = 373326, //perfect cast each 6 secs
|
||||
SPELL_ASTRAL_BREATH = 374361, // need script spell
|
||||
SPELL_ENERGY_BOMB = 374343, //cast visual
|
||||
SPELL_ENERGY_BOMB_2 = 374350, //real dmg
|
||||
SPELL_POWER_VACUUM = 388820, //visual it trigger 388821, 388822
|
||||
SPELL_ARCANE_RIFT = 388902, //create areatrigger 30804 apply 389007 then remove 28secs
|
||||
SPELL_ARCANTE_RIFT_PROC = 389007, //proc from at
|
||||
};
|
||||
|
||||
enum DoragosaEvents
|
||||
{
|
||||
EVENT_ARCANE_MISSILES = 0,
|
||||
EVENT_ASTRAL_BREATH,
|
||||
EVENT_ENERGY_BOMB,
|
||||
EVENT_POWER_VACUUM,
|
||||
EVENT_ARCANE_RIFT,
|
||||
};
|
||||
|
||||
//190609
|
||||
struct Boss_Echo_of_Doragosa : public BossAI
|
||||
{
|
||||
Boss_Echo_of_Doragosa(Creature* creature) : BossAI(creature, DATA_DORAGOSA) { }
|
||||
|
||||
void JustEngagedWith(Unit* who) override
|
||||
{
|
||||
Talk(1);
|
||||
BossAI::JustEngagedWith(who);
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
|
||||
events.ScheduleEvent(EVENT_ARCANE_MISSILES, 4s);
|
||||
events.ScheduleEvent(EVENT_ASTRAL_BREATH, 10s);
|
||||
events.ScheduleEvent(EVENT_ENERGY_BOMB, 15s);
|
||||
events.ScheduleEvent(EVENT_POWER_VACUUM, 17s);
|
||||
events.ScheduleEvent(EVENT_ARCANE_RIFT, 28s);
|
||||
}
|
||||
|
||||
void EnterEvadeMode(EvadeReason /*why*/) override
|
||||
{
|
||||
summons.DespawnAll();
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
|
||||
_EnterEvadeMode();
|
||||
_DespawnAtEvade();
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer) override
|
||||
{
|
||||
BossAI::JustDied(killer);
|
||||
Talk(8);
|
||||
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_ARCANTE_RIFT_PROC);
|
||||
summons.DespawnAll();
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
scheduler.Update(diff);
|
||||
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||
return;
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_ARCANE_MISSILES:
|
||||
DoCastVictim(SPELL_ARCANE_MISSILES);
|
||||
events.Repeat(7s);
|
||||
break;
|
||||
case EVENT_ASTRAL_BREATH:
|
||||
DoCastVictim(SPELL_ASTRAL_BREATH);
|
||||
events.Repeat(12s);
|
||||
break;
|
||||
case EVENT_ENERGY_BOMB:
|
||||
{
|
||||
Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 0, 100.0f, true);
|
||||
me->CastSpell(target, SPELL_ENERGY_BOMB, false);
|
||||
me->CastSpell(target, SPELL_ENERGY_BOMB_2, false);
|
||||
events.Repeat(20s);
|
||||
break;
|
||||
}
|
||||
case EVENT_POWER_VACUUM:
|
||||
DoCastVictim(SPELL_POWER_VACUUM);
|
||||
events.Repeat(17s);
|
||||
break;
|
||||
case EVENT_ARCANE_RIFT:
|
||||
DoCastVictim(SPELL_ARCANE_RIFT);
|
||||
events.Repeat(25s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
//30804
|
||||
struct at_arcanerift30804 : AreaTriggerAI
|
||||
{
|
||||
at_arcanerift30804(AreaTrigger* areatrigger) : AreaTriggerAI(areatrigger)
|
||||
{
|
||||
}
|
||||
|
||||
void OnUnitEnter(Unit* unit) override
|
||||
{
|
||||
if (!unit->IsPlayer())
|
||||
return;
|
||||
|
||||
unit->CastSpell(unit, SPELL_ARCANTE_RIFT_PROC, true);
|
||||
}
|
||||
|
||||
void OnUnitExit(Unit* unit, AreaTriggerExitReason /*reason*/) override
|
||||
{
|
||||
if (!unit->IsPlayer())
|
||||
return;
|
||||
|
||||
unit->RemoveAura(SPELL_ARCANTE_RIFT_PROC);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
void AddSC_Boss_Echo_of_Doragosa()
|
||||
{
|
||||
RegisterAlgetharAcademyCreatureAI(Boss_Echo_of_Doragosa);
|
||||
RegisterAreaTriggerAI(at_arcanerift30804);
|
||||
};
|
||||
@@ -0,0 +1,110 @@
|
||||
/*
|
||||
* Copyright (C) WowCommunity Project
|
||||
*
|
||||
* This SourceCode is NOT free a software. Please hold everything Private
|
||||
* and read our Terms
|
||||
*/
|
||||
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellAuras.h"
|
||||
#include "SpellHistory.h"
|
||||
#include "Spell.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "algethar_academy.h"
|
||||
|
||||
enum OvergrownSpells
|
||||
{
|
||||
SPELL_SPLINTERBARKS = 396716,
|
||||
SPELL_HEALING_TOUCH = 396640,
|
||||
SPELL_BARK_BREAKER = 388544,
|
||||
SPELL_GERMINATE = 388796, //cast visual
|
||||
SPELL_GERMINATE_DMG = 388799,
|
||||
};
|
||||
|
||||
enum OvergrownEvents
|
||||
{
|
||||
EVENT_SPLINTERBARKS = 0,
|
||||
EVENT_HEALING_TOUCH,
|
||||
EVENT_BARK_BREAKER,
|
||||
EVENT_GERMINATE,
|
||||
};
|
||||
|
||||
//196482
|
||||
struct Boss_Overgrown_ancient : public BossAI
|
||||
{
|
||||
Boss_Overgrown_ancient(Creature* creature) : BossAI(creature, DATA_OVERGROWN_ANCIENT) { }
|
||||
|
||||
void JustEngagedWith(Unit* who) override
|
||||
{
|
||||
Talk(0);
|
||||
BossAI::JustEngagedWith(who);
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
|
||||
events.ScheduleEvent(EVENT_SPLINTERBARKS, 4s);
|
||||
events.ScheduleEvent(SPELL_HEALING_TOUCH, 25s);
|
||||
events.ScheduleEvent(EVENT_BARK_BREAKER, 9s);
|
||||
events.ScheduleEvent(EVENT_GERMINATE, 11s);
|
||||
}
|
||||
|
||||
void EnterEvadeMode(EvadeReason /*why*/) override
|
||||
{
|
||||
summons.DespawnAll();
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
|
||||
_EnterEvadeMode();
|
||||
_DespawnAtEvade();
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
_JustDied();
|
||||
|
||||
if (GameObject* door = me->FindNearestGameObject(GO_WALL_THREE, 500.0f))
|
||||
door->DespawnOrUnsummon(3s, 3000s);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
scheduler.Update(diff);
|
||||
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||
return;
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_SPLINTERBARKS:
|
||||
DoCast(SPELL_SPLINTERBARKS);
|
||||
events.ScheduleEvent(EVENT_SPLINTERBARKS, 7s);
|
||||
break;
|
||||
case EVENT_HEALING_TOUCH:
|
||||
DoCastSelf(SPELL_HEALING_TOUCH);
|
||||
events.ScheduleEvent(EVENT_HEALING_TOUCH, 22s);
|
||||
break;
|
||||
case EVENT_BARK_BREAKER:
|
||||
DoCastVictim(SPELL_BARK_BREAKER);
|
||||
events.ScheduleEvent(EVENT_BARK_BREAKER, 12s);
|
||||
break;
|
||||
case EVENT_GERMINATE:
|
||||
DoCastVictim(SPELL_GERMINATE);
|
||||
DoCastVictim(SPELL_GERMINATE_DMG);
|
||||
events.ScheduleEvent(EVENT_GERMINATE, 16s);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
//todo script npc 196642/hungry-lasher
|
||||
|
||||
void AddSC_Boss_Overgrown()
|
||||
{
|
||||
RegisterAlgetharAcademyCreatureAI(Boss_Overgrown_ancient);
|
||||
};
|
||||
@@ -0,0 +1,108 @@
|
||||
/*
|
||||
* Copyright (C) WowCommunity Project
|
||||
*
|
||||
* This SourceCode is NOT free a software. Please hold everything Private
|
||||
* and read our Terms
|
||||
*/
|
||||
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellAuras.h"
|
||||
#include "SpellHistory.h"
|
||||
#include "Spell.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "algethar_academy.h"
|
||||
|
||||
enum vexamusSpells
|
||||
{
|
||||
SPELL_ARCANE_ORBS = 386088,
|
||||
SPELL_OVERSURGE_MYTHIC = 391977,
|
||||
SPELL_ARCANE_FISURE = 388651,
|
||||
SPELL_ARCANE_EXPULSION = 385958,
|
||||
SPELL_MANA_BOMBS = 386181,
|
||||
|
||||
};
|
||||
|
||||
enum vexamusEvents
|
||||
{
|
||||
EVENT_ARCANE_ORBS,
|
||||
EVENT_OVERSURGE_MYTHIC,
|
||||
EVENT_ARCANE_FISURE,
|
||||
EVENT_ARCANE_EXPULSION,
|
||||
EVENT_MANA_BOMBS,
|
||||
};
|
||||
|
||||
//194181
|
||||
struct Boss_Vexamus : public BossAI
|
||||
{
|
||||
Boss_Vexamus(Creature* creature) : BossAI(creature, DATA_VEXAMUS) { }
|
||||
|
||||
void JustEngagedWith(Unit* who) override
|
||||
{
|
||||
BossAI::JustEngagedWith(who);
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
|
||||
events.ScheduleEvent(EVENT_ARCANE_ORBS, 4s);
|
||||
events.ScheduleEvent(EVENT_ARCANE_EXPULSION, 12s);
|
||||
events.ScheduleEvent(EVENT_MANA_BOMBS, 22s);
|
||||
events.ScheduleEvent(EVENT_ARCANE_FISURE, 35s);
|
||||
}
|
||||
|
||||
void EnterEvadeMode(EvadeReason /*why*/) override
|
||||
{
|
||||
summons.DespawnAll();
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
|
||||
_EnterEvadeMode();
|
||||
_DespawnAtEvade();
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
_JustDied();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
scheduler.Update(diff);
|
||||
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||
return;
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_ARCANE_ORBS:
|
||||
DoCastVictim(SPELL_ARCANE_ORBS);
|
||||
events.ScheduleEvent(EVENT_ARCANE_ORBS, 7s);
|
||||
break;
|
||||
case EVENT_ARCANE_EXPULSION:
|
||||
DoCastVictim(SPELL_ARCANE_EXPULSION);
|
||||
events.ScheduleEvent(EVENT_ARCANE_EXPULSION, 10s);
|
||||
break;
|
||||
case EVENT_MANA_BOMBS:
|
||||
DoCastVictim(SPELL_MANA_BOMBS);
|
||||
events.ScheduleEvent(EVENT_MANA_BOMBS, 20s);
|
||||
break;
|
||||
case EVENT_ARCANE_FISURE:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f))
|
||||
me->CastSpell(target, SPELL_ARCANE_FISURE);
|
||||
events.ScheduleEvent(EVENT_ARCANE_FISURE, 30s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_Boss_Vexamus()
|
||||
{
|
||||
RegisterAlgetharAcademyCreatureAI(Boss_Vexamus);
|
||||
};
|
||||
@@ -0,0 +1,101 @@
|
||||
/*
|
||||
* Copyright (C) WowCommunity Project
|
||||
*
|
||||
* This SourceCode is NOT free a software. Please hold everything Private
|
||||
* and read our Terms
|
||||
*/
|
||||
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellAuras.h"
|
||||
#include "SpellHistory.h"
|
||||
#include "Spell.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "algethar_academy.h"
|
||||
|
||||
enum CrawthSpells
|
||||
{
|
||||
SPELL_SAVAGE_PEACK = 376997, //casted on tanks
|
||||
SPELL_OVERPOWERING_GUST = 377034,
|
||||
SPELL_DEAFENING_SCREECH = 377004,
|
||||
SPELL_DEAFENING_SCREECH_DAMAGE = 288917,
|
||||
};
|
||||
|
||||
enum CrawthEvents
|
||||
{
|
||||
EVENT_SAVAGE_PEACK = 0,
|
||||
EVENT_OVERPOWERING_GUST,
|
||||
EVENT_DEAFENING_SCREECH,
|
||||
};
|
||||
|
||||
//191736
|
||||
struct Boss_crawth : public BossAI
|
||||
{
|
||||
Boss_crawth(Creature* creature) : BossAI(creature, DATA_CRAWTH) { }
|
||||
|
||||
void JustEngagedWith(Unit* who) override
|
||||
{
|
||||
BossAI::JustEngagedWith(who);
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
|
||||
events.ScheduleEvent(EVENT_SAVAGE_PEACK, 4s);
|
||||
events.ScheduleEvent(EVENT_OVERPOWERING_GUST, 10s);
|
||||
events.ScheduleEvent(EVENT_DEAFENING_SCREECH, 17s);
|
||||
}
|
||||
|
||||
void EnterEvadeMode(EvadeReason /*why*/) override
|
||||
{
|
||||
summons.DespawnAll();
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
|
||||
_EnterEvadeMode();
|
||||
_DespawnAtEvade();
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer) override
|
||||
{
|
||||
BossAI::JustDied(killer);
|
||||
summons.DespawnAll();
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
scheduler.Update(diff);
|
||||
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||
return;
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_SAVAGE_PEACK:
|
||||
DoCastVictim(SPELL_SAVAGE_PEACK);
|
||||
events.ScheduleEvent(EVENT_SAVAGE_PEACK, 7s);
|
||||
break;
|
||||
case EVENT_OVERPOWERING_GUST:
|
||||
DoCastVictim(SPELL_OVERPOWERING_GUST);
|
||||
events.ScheduleEvent(EVENT_OVERPOWERING_GUST, 10s);
|
||||
break;
|
||||
case EVENT_DEAFENING_SCREECH:
|
||||
DoCastVictim(SPELL_DEAFENING_SCREECH);
|
||||
DoCastVictim(SPELL_DEAFENING_SCREECH_DAMAGE);
|
||||
events.ScheduleEvent(EVENT_DEAFENING_SCREECH, 18s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_Boss_crawth()
|
||||
{
|
||||
RegisterAlgetharAcademyCreatureAI(Boss_crawth);
|
||||
};
|
||||
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright (C) WowCommunity Project
|
||||
*
|
||||
* This SourceCode is NOT free a software. Please hold everything Private
|
||||
* and read our Terms
|
||||
*/
|
||||
|
||||
#ifndef DEF_ALGETHAR_ACADEMY_H_
|
||||
#define DEF_ALGETHAR_ACADEMY_H_
|
||||
|
||||
#include "CreatureAIImpl.h"
|
||||
|
||||
#define DataHeader "Algethar"
|
||||
#define ALGScriptName "instance_algethar_academy"
|
||||
|
||||
uint32 const EncounterCount = 4;
|
||||
|
||||
enum ALGDataTypes
|
||||
{
|
||||
// Encounters
|
||||
DATA_VEXAMUS = 0,
|
||||
DATA_OVERGROWN_ANCIENT,
|
||||
DATA_CRAWTH,
|
||||
DATA_DORAGOSA,
|
||||
};
|
||||
|
||||
enum AlgetharCreatureIds
|
||||
{
|
||||
// Bosses
|
||||
BOSS_VEXAMUS = 194181,
|
||||
BOSS_OVERGROWN_ANCIENT = 196482,
|
||||
BOSS_CRAWTH = 191736,
|
||||
BOSS_ECHO_OF_DORAGOSA = 190609,
|
||||
|
||||
//Misc
|
||||
NPC_MAGIC_BOOK = 195416,
|
||||
GO_WALL_THREE = 382475,
|
||||
};
|
||||
|
||||
template <class AI, class T>
|
||||
inline AI* GetAlgetharAcademyAI(T* obj)
|
||||
{
|
||||
return GetInstanceAI<AI>(obj, ALGScriptName);
|
||||
}
|
||||
|
||||
#define RegisterAlgetharAcademyCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetAlgetharAcademyAI)
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,115 @@
|
||||
/*
|
||||
* Copyright (C) WowCommunity Project
|
||||
*
|
||||
* This SourceCode is NOT free a software. Please hold everything Private
|
||||
* and read our Terms
|
||||
*/
|
||||
|
||||
#include "AreaBoundary.h"
|
||||
#include "InstanceScript.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "MotionMaster.h"
|
||||
#include "GenericMovementGenerator.h"
|
||||
#include "AreaTrigger.h"
|
||||
#include "AreaTriggerAI.h"
|
||||
#include "algethar_academy.h"
|
||||
|
||||
|
||||
ObjectData const creatureData[] =
|
||||
{
|
||||
{ BOSS_VEXAMUS, DATA_VEXAMUS },
|
||||
{ BOSS_OVERGROWN_ANCIENT, DATA_OVERGROWN_ANCIENT },
|
||||
{ BOSS_CRAWTH, DATA_CRAWTH },
|
||||
{ BOSS_ECHO_OF_DORAGOSA, DATA_DORAGOSA },
|
||||
{ 0, 0 } // END
|
||||
};
|
||||
|
||||
DungeonEncounterData const encounters[] =
|
||||
{
|
||||
{ DATA_VEXAMUS, {{ 2562 }} },
|
||||
{ DATA_OVERGROWN_ANCIENT, {{ 2563 }} },
|
||||
{ DATA_CRAWTH, {{ 2564 }} },
|
||||
{ DATA_DORAGOSA, {{ 2565 }} },
|
||||
};
|
||||
|
||||
DoorData const doorData[] =
|
||||
{
|
||||
{ GO_WALL_THREE, DATA_OVERGROWN_ANCIENT, EncounterDoorBehavior::OpenWhenDone },
|
||||
{ 0, 0, EncounterDoorBehavior::OpenWhenNotInProgress } // END
|
||||
};
|
||||
|
||||
class instance_algethar_academy : public InstanceMapScript
|
||||
{
|
||||
public:
|
||||
instance_algethar_academy() : InstanceMapScript(ALGScriptName, 2526) { }
|
||||
|
||||
struct instance_algethar_academy_InstanceMapScript: public InstanceScript
|
||||
{
|
||||
instance_algethar_academy_InstanceMapScript(InstanceMap* map) : InstanceScript(map)
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
SetBossNumber(EncounterCount);
|
||||
LoadDoorData(doorData);
|
||||
LoadDungeonEncounterData(encounters);
|
||||
}
|
||||
|
||||
void OnPlayerEnter(Player* player) override
|
||||
{
|
||||
if (!player->GetGroup() || !player->GetGroup()->GetLeaderGUID())
|
||||
return;
|
||||
}
|
||||
|
||||
void OnPlayerExit(Player* player)
|
||||
{
|
||||
if (!player->GetGroup())
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
||||
{
|
||||
return new instance_algethar_academy_InstanceMapScript(map);
|
||||
}
|
||||
};
|
||||
|
||||
//189668 profesor maxdormu
|
||||
// NPC - Professor Maxdormu
|
||||
// NPC - Professor Maxdormu
|
||||
struct npc_profesor_maxdormu : public ScriptedAI
|
||||
{
|
||||
npc_profesor_maxdormu(Creature* creature) : ScriptedAI(creature) {}
|
||||
|
||||
void JustAppeared() override
|
||||
{
|
||||
_scheduler.Schedule(10s, [this](TaskContext /*ctx*/)
|
||||
{
|
||||
me->SummonCreature(BOSS_VEXAMUS, 1810.90f, -2791.16f, 903.43f, 4.455f);
|
||||
Talk(1);
|
||||
});
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit* who) override
|
||||
{
|
||||
if (who->IsPlayer() && me->IsWithinDistInMap(who, 5.0f))
|
||||
{
|
||||
Talk(0);
|
||||
me->DespawnOrUnsummon();
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
_scheduler.Update(diff);
|
||||
}
|
||||
|
||||
private:
|
||||
TaskScheduler _scheduler;
|
||||
};
|
||||
|
||||
void AddSC_instance_algethar_academy()
|
||||
{
|
||||
new instance_algethar_academy();
|
||||
RegisterCreatureAI(npc_profesor_maxdormu);
|
||||
}
|
||||
@@ -45,6 +45,13 @@ void AddSC_boss_the_forgotten_experiment();
|
||||
void AddSC_boss_warlord_kagni();
|
||||
void AddSC_boss_zskarn_the_vigilant_steward();
|
||||
|
||||
// Algethar academy
|
||||
void AddSC_instance_algethar_academy();
|
||||
void AddSC_Boss_Vexamus();
|
||||
void AddSC_Boss_Overgrown();
|
||||
void AddSC_Boss_Echo_of_Doragosa();
|
||||
void AddSC_Boss_crawth();
|
||||
|
||||
// The name of this function should match:
|
||||
// void Add${NameOfDirectory}Scripts()
|
||||
void AddDragonIslesScripts()
|
||||
@@ -77,4 +84,11 @@ void AddDragonIslesScripts()
|
||||
AddSC_boss_the_forgotten_experiment();
|
||||
AddSC_boss_warlord_kagni();
|
||||
AddSC_boss_zskarn_the_vigilant_steward();
|
||||
|
||||
// Algethar academy
|
||||
AddSC_instance_algethar_academy();
|
||||
AddSC_Boss_Vexamus();
|
||||
AddSC_Boss_Overgrown();
|
||||
AddSC_Boss_Echo_of_Doragosa();
|
||||
AddSC_Boss_crawth();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user