#include "StdAfx.h"
#include "Setup.h"
#include "../Common/Base.h"
// HighPriestessMarliAI
#define ZG_MARLI 14510
// Спеллы для трасформации в паука и обратно
#define MARLI_SPIDER_FORM 24084
// #define MARLI_TRANSFORM_BACK 24085 //не работает
// Заклинания в форме троля
#define MARLI_POISONVOLLEY 24099
#define MARLI_DRAIN_LIFE 24300
// Заклинания в форме паука
#define MARLI_ENVELOPINGWEBS 24110
#define MARLI_CORROSIVE_POISON 24111
#define MARLI_CHARGE 22911
// Spiders
#define MARLI_HATCH 24083 //визуальный эффект
#define MARLI_ADDS 15041
//The Spider Spells
#define SPIDER_LEVELUP 24312 //визуальный эффект
class HighPriestessMarliAI : public MoonScriptBossAI
{
MOONSCRIPT_FACTORY_FUNCTION(HighPriestessMarliAI, MoonScriptBossAI);
HighPriestessMarliAI(Creature* pCreature) : MoonScriptBossAI(pCreature)
{
AddPhaseSpell(1, AddSpell(MARLI_POISONVOLLEY, Target_Current, 75, 0, 14));
AddPhaseSpell(1, AddSpell(MARLI_DRAIN_LIFE, Target_RandomPlayer, 60, 0, 24));
AddPhaseSpell(1, AddSpell(MARLI_HATCH, Target_RandomPlayer, 100, 0, 19));
AddPhaseSpell(2, AddSpell(MARLI_ENVELOPINGWEBS, Target_Current, 70, 0, 15));
AddPhaseSpell(2, AddSpell(MARLI_CORROSIVE_POISON, Target_Current, 75, 0, 30));
AddPhaseSpell(2, AddSpell(MARLI_CHARGE, Target_RandomPlayer, 80, 0, 12));
AddEmote(Event_OnCombatStart, "Draw me to your web , mistress Shadra , unleash your venom!", Text_Yell, 8418);
AddEmote(Event_OnDied, "Bless you, mortals, for this release...Hakkar controls me no longer.", Text_Yell, 8423);
Morph = AddSpell(24084, Target_Self, 0, 0, 0, 0, 0, false, "Shadra, make of me your avatar!", Text_Yell, 0);
}
void OnCombatStart(Unit* pTarget)
{
MorphTimer = AddTimer(45000);
SpiderSummon = AddTimer(20000);
ParentClass::OnCombatStart( pTarget );
}
void OnCombatStop(Unit* pTarget)
{
SetDisplayId(15226);
RemoveAura(24084);
ParentClass::OnCombatStop(pTarget);
}
void OnDied(Unit* pKiller)
{
SetDisplayId(15220);
RemoveAura(24084);
ParentClass::OnDied(pKiller);
}
void AIUpdate()
{
if(IsTimerFinished(MorphTimer) && GetPhase() == 1)
{
SetPhase(2, Morph);
ResetTimer(MorphTimer, 55000);
}
else if(IsTimerFinished(MorphTimer) && GetPhase() == 2)
{
RemoveAura(24084);
SetDisplayId(15220);
SetPhase(1);
ResetTimer(MorphTimer, 60000);
Emote("The brood shall not fall!", Text_Yell, 0);
}
if(IsTimerFinished(SpiderSummon) && GetPhase() == 1)
{
MoonScriptCreatureAI *Spider = NULL;
// Spawn 4 spiders
for(int x=0; x<4; x++)
{
Spider = SpawnCreature(MARLI_ADDS, (_unit->GetPositionX()+RandomFloat(2)-2), (_unit->GetPositionY()+RandomFloat(2)-2),
_unit->GetPositionZ(), _unit->GetOrientation(), true);
if(Spider)
{
Spider->AggroNearestUnit();
Spider->SetDespawnWhenInactive(true);
}
}
Spider = NULL;
Emote("Aid me my brood!", Text_Yell, 0);
ResetTimer(SpiderSummon, 20000);
}
ParentClass::AIUpdate();
}
SpellDesc* Morph;
int32 MorphTimer;
SpellDesc* Spider;
int32 SpiderSummon;
};
// Скрипт на пауков
class MarliSpidersAI : public MoonScriptCreatureAI
{
MOONSCRIPT_FACTORY_FUNCTION(MarliSpidersAI, MoonScriptCreatureAI);
MarliSpidersAI(Creature *pCreature) : MoonScriptCreatureAI(pCreature)
{
// LevelUP
AddSpell(SPIDER_LEVELUP, Target_Self, 100, 0, 3);
}
};
void SetupZulGurub(ScriptMgr * mgr)
{
mgr->register_creature_script(ZG_MARLI, &HighPriestessMarliAI::Create);
mgr->register_creature_script(MARLI_ADDS, &MarliSpidersAI::Create);
}