• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
С++ скрипт на реализацию босса Верховной жрицы Мар'ли
GiNeX
╚►Gm WoWFuN.ru◄╗
С++ скрипт на реализацию босса Верховной жрицы Мар'ли. http://ru.wowhead.com/npc=14510
Code
#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);
}
Помогаю ставить сервера Trinity, Mangos,ArcEmu.
Сообщение # 1 написано 14.09.2010 в 11:47
  • Страница 1 из 1
  • 1
Поиск: