*Merge.
--HG-- branch : trunk
This commit is contained in:
@@ -320,3 +320,4 @@ void ScriptedAI::DoGoHome()
|
||||
m_creature->GetMotionMaster()->MoveTargetedHome();
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
@@ -159,3 +159,4 @@ struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -119,3 +119,4 @@ void AddSC_default()
|
||||
|
||||
m_scripts[nrscripts++] = newscript;
|
||||
}
|
||||
|
||||
|
||||
@@ -152,3 +152,4 @@ uint32 GetSkillLevel(Player *player,uint32 trskill)
|
||||
|
||||
return TRADESKILL_LEVEL_NONE;
|
||||
}
|
||||
|
||||
|
||||
@@ -96,3 +96,4 @@ extern uint32 GetSkillLevel(Player *player,uint32 skill);
|
||||
|
||||
// -----------------------------------
|
||||
#endif
|
||||
|
||||
|
||||
@@ -31,3 +31,4 @@
|
||||
#else
|
||||
#define TRINITY_DLL_EXPORT extern "C" export
|
||||
#endif
|
||||
|
||||
|
||||
@@ -25,3 +25,4 @@ BOOL APIENTRY DllMain( HANDLE /*hModule*/, DWORD /*ul_reason_for_call*/, LPVOID
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -2136,3 +2136,4 @@ InstanceData* CreateInstanceData(Map *map)
|
||||
|
||||
return tmpscript->GetInstanceData(map);
|
||||
}
|
||||
|
||||
|
||||
@@ -82,3 +82,4 @@ void DoScriptText(int32 textEntry, WorldObject* pSource, Unit* target = NULL);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -3,3 +3,4 @@
|
||||
* Please see the included DOCS/LICENSE.TXT for more information */
|
||||
|
||||
#include "precompiled.h"
|
||||
|
||||
|
||||
@@ -28,3 +28,4 @@ LPVOID lpReserved
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -843,7 +843,7 @@ void LoadOverridenSQLData()
|
||||
// Sunwell Plateau : Kalecgos : Spectral Rift
|
||||
goInfo = const_cast<GameObjectInfo*>(GetGameObjectInfo(187055));
|
||||
if(goInfo && goInfo->type == GAMEOBJECT_TYPE_GOOBER)
|
||||
goInfo->type = GAMEOBJECT_TYPE_SPELLCASTER;
|
||||
goInfo->goober.lockId = 57; // need LOCKTYPE_QUICK_OPEN
|
||||
}
|
||||
|
||||
void LoadOverridenDBCData()
|
||||
@@ -855,3 +855,4 @@ void LoadOverridenDBCData()
|
||||
if(spellInfo)
|
||||
spellInfo->EffectApplyAuraName[0] = 4; // proc debuff, and summon infinite fiends
|
||||
}
|
||||
|
||||
|
||||
@@ -205,3 +205,4 @@ struct TRINITY_DLL_DECL NullCreatureAI : public ScriptedAI
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -189,3 +189,4 @@ extern uint32 GetSkillLevel(Player *player,uint32 skill);
|
||||
|
||||
#define QUEST_DIALOG_STATUS(a,b,c) GetSession()->getDialogStatus(a,b,c)
|
||||
#endif
|
||||
|
||||
|
||||
@@ -43,3 +43,4 @@ class TRINITY_DLL_DECL ScriptedInstance : public InstanceData
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -64,3 +64,4 @@ void AddSC_areatrigger_scripts()
|
||||
newscript->pAreaTrigger = &AreaTrigger_at_legion_teleporter;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -154,3 +154,4 @@ void AddSC_boss_emeriss()
|
||||
newscript->GetAI = &GetAI_boss_emeriss;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -22,3 +22,4 @@ SDCategory: Bosses
|
||||
EndScriptData */
|
||||
|
||||
#include "precompiled.h"
|
||||
|
||||
|
||||
@@ -304,3 +304,4 @@ void AddSC_boss_taerar()
|
||||
newscript->GetAI = &GetAI_boss_shadeoftaerar;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -244,3 +244,4 @@ void AddSC_boss_ysondre()
|
||||
newscript->GetAI = &GetAI_mob_dementeddruids;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -1398,3 +1398,4 @@ void AddSC_mob_event()
|
||||
newscript->GetAI = &GetAI_Mob_EventAI;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -218,3 +218,4 @@ extern UNORDERED_MAP<uint32, EventAI_CreatureError> EventAI_CreatureErrorPrevent
|
||||
#define EVENTAI_EMPTY_EVENTLIST "SD2: Eventlist for Creature %i is empty but creature is using Mob_EventAI. Preventing EventAI on this creature."
|
||||
*/
|
||||
#endif
|
||||
|
||||
|
||||
@@ -170,3 +170,4 @@ void AddSC_generic_creature()
|
||||
newscript->GetAI = &GetAI_generic_creature;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -292,3 +292,4 @@ void SimpleAI::UpdateAI(const uint32 diff)
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
|
||||
@@ -72,3 +72,4 @@ protected:
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,278 @@
|
||||
/* Copyright (C) 2006 - 2008 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
SDName: Custom_Example
|
||||
SD%Complete: 100
|
||||
SDComment: Short custom scripting example
|
||||
SDCategory: Script Examples
|
||||
EndScriptData */
|
||||
|
||||
#include "precompiled.h"
|
||||
|
||||
// **** This script is designed as an example for others to build on ****
|
||||
// **** Please modify whatever you'd like to as this script is only for developement ****
|
||||
|
||||
// **** Script Info ****
|
||||
// This script is written in a way that it can be used for both friendly and hostile monsters
|
||||
// Its primary purpose is to show just how much you can really do with scripts
|
||||
// I recommend trying it out on both an agressive NPC and on friendly npc
|
||||
|
||||
// **** Quick Info ****
|
||||
// Functions with Handled Function marked above them are functions that are called automatically by the core
|
||||
// Functions that are marked Custom Function are functions I've created to simplify code
|
||||
|
||||
#define SPELL_BUFF 25661
|
||||
#define SPELL_ONE 12555
|
||||
#define SPELL_ONE_ALT 24099
|
||||
#define SPELL_TWO 10017
|
||||
#define SPELL_THREE 26027
|
||||
#define SPELL_ENRAGE 23537
|
||||
#define SPELL_BESERK 32309
|
||||
|
||||
#define SAY_AGGRO "Let the games begin."
|
||||
#define SAY_RANDOM_0 "I see endless suffering. I see torment. I see rage. I see everything."
|
||||
#define SAY_RANDOM_1 "Muahahahaha"
|
||||
#define SAY_RANDOM_2 "These mortal infedels my lord, they have invaded your sanctum and seek to steal your secrets."
|
||||
#define SAY_RANDOM_3 "You are already dead."
|
||||
#define SAY_RANDOM_4 "Where to go? What to do? So many choices that all end in pain, end in death."
|
||||
#define SAY_BESERK "$N, I sentance you to death!"
|
||||
#define SAY_PHASE "The suffering has just begun!"
|
||||
|
||||
#define GOSSIP_ITEM "I'm looking for a fight"
|
||||
#define SAY_DANCE "I always thought I was a good dancer"
|
||||
#define SAY_SALUTE "Move out Soldier!"
|
||||
|
||||
struct TRINITY_DLL_DECL custom_exampleAI : public ScriptedAI
|
||||
{
|
||||
//*** HANDLED FUNCTION ***
|
||||
//This is the constructor, called only once when the creature is first created
|
||||
custom_exampleAI(Creature *c) : ScriptedAI(c) {Reset();}
|
||||
|
||||
//*** CUSTOM VARIABLES ****
|
||||
//These variables are for use only by this individual script.
|
||||
//Nothing else will ever call them but us.
|
||||
|
||||
uint32 Say_Timer; //Timer for random chat
|
||||
uint32 Rebuff_Timer; //Timer for rebuffing
|
||||
uint32 Spell_1_Timer; //Timer for spell 1 when in combat
|
||||
uint32 Spell_2_Timer; //Timer for spell 1 when in combat
|
||||
uint32 Spell_3_Timer; //Timer for spell 1 when in combat
|
||||
uint32 Beserk_Timer; //Timer until we go into Beserk (enraged) mode
|
||||
uint32 Phase; //The current battle phase we are in
|
||||
uint32 Phase_Timer; //Timer until phase transition
|
||||
|
||||
//*** HANDLED FUNCTION ***
|
||||
//This is called whenever the core decides we need to evade
|
||||
void Reset()
|
||||
{
|
||||
Phase = 1; //Start in phase 1
|
||||
Phase_Timer = 60000; //60 seconds
|
||||
Spell_1_Timer = 5000; //5 seconds
|
||||
Spell_2_Timer = 37000; //37 seconds
|
||||
Spell_3_Timer = 19000; //19 seconds
|
||||
Beserk_Timer = 120000; //2 minutes
|
||||
}
|
||||
|
||||
//*** HANDLED FUNCTION ***
|
||||
//Attack Start is called whenever someone hits us.
|
||||
void Aggro(Unit *who)
|
||||
{
|
||||
//Say some stuff
|
||||
DoSay(SAY_AGGRO,LANG_UNIVERSAL,NULL);
|
||||
DoPlaySoundToSet(m_creature,8280);
|
||||
}
|
||||
|
||||
//*** HANDLED FUNCTION ***
|
||||
//Update AI is called Every single map update (roughly once every 100ms if a player is within the grid)
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
//Out of combat timers
|
||||
if (!m_creature->getVictim())
|
||||
{
|
||||
//Random Say timer
|
||||
if (Say_Timer < diff)
|
||||
{
|
||||
//Random switch between 5 outcomes
|
||||
switch (rand()%5)
|
||||
{
|
||||
case 0:
|
||||
DoYell(SAY_RANDOM_0,LANG_UNIVERSAL,NULL);
|
||||
DoPlaySoundToSet(m_creature,8831); //8831 is the index of the sound we are playing. You find these numbers in SoundEntries.dbc
|
||||
break;
|
||||
|
||||
case 1:
|
||||
DoYell(SAY_RANDOM_1,LANG_UNIVERSAL,NULL);
|
||||
DoPlaySoundToSet(m_creature,8818);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
DoYell(SAY_RANDOM_2,LANG_UNIVERSAL,NULL);
|
||||
DoPlaySoundToSet(m_creature,8041);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
DoYell(SAY_RANDOM_3,LANG_UNIVERSAL,NULL);
|
||||
DoPlaySoundToSet(m_creature,8581);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
DoYell(SAY_RANDOM_4,LANG_UNIVERSAL,NULL);
|
||||
DoPlaySoundToSet(m_creature,8791);
|
||||
break;
|
||||
}
|
||||
|
||||
Say_Timer = 45000; //Say something agian in 45 seconds
|
||||
}else Say_Timer -= diff;
|
||||
|
||||
//Rebuff timer
|
||||
if (Rebuff_Timer < diff)
|
||||
{
|
||||
DoCast(m_creature,SPELL_BUFF);
|
||||
Rebuff_Timer = 900000; //Rebuff agian in 15 minutes
|
||||
}else Rebuff_Timer -= diff;
|
||||
}
|
||||
|
||||
//Return since we have no target
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
//Spell 1 timer
|
||||
if (Spell_1_Timer < diff)
|
||||
{
|
||||
//Cast spell one on our current target.
|
||||
if (rand()%50 > 10)
|
||||
DoCast(m_creature->getVictim(),SPELL_ONE_ALT);
|
||||
else if (m_creature->GetDistance(m_creature->getVictim()) < 25)
|
||||
DoCast(m_creature->getVictim(),SPELL_ONE);
|
||||
|
||||
Spell_1_Timer = 5000;
|
||||
}else Spell_1_Timer -= diff;
|
||||
|
||||
//Spell 2 timer
|
||||
if (Spell_2_Timer < diff)
|
||||
{
|
||||
//Cast spell one on our current target.
|
||||
DoCast(m_creature->getVictim(),SPELL_TWO);
|
||||
|
||||
Spell_2_Timer = 37000;
|
||||
}else Spell_2_Timer -= diff;
|
||||
|
||||
//Spell 3 timer
|
||||
if (Phase > 1)
|
||||
if (Spell_3_Timer < diff)
|
||||
{
|
||||
//Cast spell one on our current target.
|
||||
DoCast(m_creature->getVictim(),SPELL_THREE);
|
||||
|
||||
Spell_3_Timer = 19000;
|
||||
}else Spell_3_Timer -= diff;
|
||||
|
||||
//Beserk timer
|
||||
if (Phase > 1)
|
||||
if (Beserk_Timer < diff)
|
||||
{
|
||||
//Say our line then cast uber death spell
|
||||
DoPlaySoundToSet(m_creature,8588);
|
||||
DoYell(SAY_BESERK,LANG_UNIVERSAL,m_creature->getVictim());
|
||||
DoCast(m_creature->getVictim(),SPELL_BESERK);
|
||||
|
||||
//Cast our beserk spell agian in 12 seconds if we didn't kill everyone
|
||||
Beserk_Timer = 12000;
|
||||
}else Beserk_Timer -= diff;
|
||||
|
||||
//Phase timer
|
||||
if (Phase == 1)
|
||||
if (Phase_Timer < diff)
|
||||
{
|
||||
//Go to next phase
|
||||
Phase++;
|
||||
DoYell(SAY_PHASE,LANG_UNIVERSAL,NULL);
|
||||
DoCast(m_creature,SPELL_ENRAGE);
|
||||
}else Phase_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
//This is the GetAI method used by all scripts that involve AI
|
||||
//It is called every time a new creature using this script is created
|
||||
CreatureAI* GetAI_custom_example(Creature *_Creature)
|
||||
{
|
||||
return new custom_exampleAI (_Creature);
|
||||
}
|
||||
|
||||
//This function is called when the player clicks an option on the gossip menu
|
||||
void SendDefaultMenu_custom_example(Player *player, Creature *_Creature, uint32 action)
|
||||
{
|
||||
if (action == GOSSIP_ACTION_INFO_DEF + 1) //Fight time
|
||||
{
|
||||
//Set our faction to hostile twoards all
|
||||
_Creature->setFaction(24);
|
||||
_Creature->Attack(player, true);
|
||||
player->PlayerTalkClass->CloseGossip();
|
||||
}
|
||||
}
|
||||
|
||||
//This function is called when the player clicks an option on the gossip menu
|
||||
bool GossipSelect_custom_example(Player *player, Creature *_Creature, uint32 sender, uint32 action )
|
||||
{
|
||||
if (sender == GOSSIP_SENDER_MAIN)
|
||||
SendDefaultMenu_custom_example(player, _Creature, action);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//This function is called when the player opens the gossip menu
|
||||
bool GossipHello_custom_example(Player *player, Creature *_Creature)
|
||||
{
|
||||
player->ADD_GOSSIP_ITEM( 0, GOSSIP_ITEM , GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
|
||||
player->PlayerTalkClass->SendGossipMenu(907,_Creature->GetGUID());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//Our Recive emote function
|
||||
bool ReceiveEmote_custom_example(Player *player, Creature *_Creature, uint32 emote)
|
||||
{
|
||||
_Creature->HandleEmoteCommand(emote);
|
||||
|
||||
if (emote == TEXTEMOTE_DANCE)
|
||||
((custom_exampleAI*)_Creature->AI())->DoSay(SAY_DANCE,LANG_UNIVERSAL,NULL);
|
||||
|
||||
if (emote == TEXTEMOTE_SALUTE)
|
||||
((custom_exampleAI*)_Creature->AI())->DoSay(SAY_SALUTE,LANG_UNIVERSAL,NULL);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//This is the actual function called only once durring InitScripts()
|
||||
//It must define all handled functions that are to be run in this script
|
||||
//For example if you want this Script to handle Emotes you must include
|
||||
//newscript->ReciveEmote = My_Emote_Function;
|
||||
void AddSC_custom_example()
|
||||
{
|
||||
Script *newscript;
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name="custom_example";
|
||||
newscript->GetAI = &GetAI_custom_example;
|
||||
newscript->pGossipHello = &GossipHello_custom_example;
|
||||
newscript->pGossipSelect = &GossipSelect_custom_example;
|
||||
newscript->pReceiveEmote = &ReceiveEmote_custom_example;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
/* Copyright (C) 2006 - 2008 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
SDName: Custom_Gossip_Codebox
|
||||
SD%Complete: 100
|
||||
SDComment: Show a codebox in gossip option
|
||||
SDCategory: Script Examples
|
||||
EndScriptData */
|
||||
|
||||
#include "precompiled.h"
|
||||
#include <cstring>
|
||||
|
||||
//This function is called when the player opens the gossip menubool
|
||||
bool GossipHello_custom_gossip_codebox(Player *player, Creature *_Creature)
|
||||
{
|
||||
player->ADD_GOSSIP_ITEM_EXTENDED(0, "A quiz: what's your name?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1, "", 0, true);
|
||||
player->ADD_GOSSIP_ITEM(0, "I'm not interested", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
|
||||
|
||||
player->PlayerTalkClass->SendGossipMenu(907,_Creature->GetGUID());
|
||||
return true;
|
||||
}
|
||||
|
||||
//This function is called when the player clicks an option on the gossip menubool
|
||||
bool GossipSelect_custom_gossip_codebox(Player *player, Creature *_Creature, uint32 sender, uint32 action )
|
||||
{
|
||||
if(action == GOSSIP_ACTION_INFO_DEF+2)
|
||||
{
|
||||
_Creature->Say("Normal select, guess you're not interested.", LANG_UNIVERSAL, 0);
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GossipSelectWithCode_custom_gossip_codebox( Player *player, Creature *_Creature, uint32 sender, uint32 action, const char* sCode )
|
||||
{
|
||||
if(sender == GOSSIP_SENDER_MAIN)
|
||||
{
|
||||
if(action == GOSSIP_ACTION_INFO_DEF+1)
|
||||
{
|
||||
if(std::strcmp(sCode, player->GetName())!=0)
|
||||
{
|
||||
_Creature->Say("Wrong!", LANG_UNIVERSAL, 0);
|
||||
_Creature->CastSpell(player, 12826, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
_Creature->Say("You're right, you are allowed to see my inner secrets.", LANG_UNIVERSAL, 0);
|
||||
_Creature->CastSpell(player, 26990, true);
|
||||
}
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void AddSC_custom_gossip_codebox()
|
||||
{
|
||||
Script *newscript;
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name="custom_gossip_codebox";
|
||||
newscript->pGossipHello = &GossipHello_custom_gossip_codebox;
|
||||
newscript->pGossipSelect = &GossipSelect_custom_gossip_codebox;
|
||||
newscript->pGossipSelectWithCode = &GossipSelectWithCode_custom_gossip_codebox;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,201 @@
|
||||
/* Copyright (C) 2006 - 2008 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
SDName: Test
|
||||
SD%Complete: 100
|
||||
SDComment: Script used for testing escortAI
|
||||
SDCategory: Script Examples
|
||||
EndScriptData */
|
||||
|
||||
#include "precompiled.h"
|
||||
#include "../npc/npc_escortAI.h"
|
||||
|
||||
struct TRINITY_DLL_DECL npc_testAI : public npc_escortAI
|
||||
{
|
||||
public:
|
||||
|
||||
// CreatureAI functions
|
||||
npc_testAI(Creature *c) : npc_escortAI(c) {Reset();}
|
||||
|
||||
uint32 DeathCoilTimer;
|
||||
uint32 ChatTimer;
|
||||
|
||||
// Pure Virtual Functions
|
||||
void WaypointReached(uint32 i)
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
case 1:
|
||||
m_creature->Say("Hmm a nice day for a walk alright", LANG_UNIVERSAL, 0);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
{
|
||||
m_creature->Say("Wild Felboar attack!", LANG_UNIVERSAL, 0);
|
||||
Creature* temp = m_creature->SummonCreature(21878, m_creature->GetPositionX()+5, m_creature->GetPositionY()+7, m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000);
|
||||
|
||||
temp->AI()->AttackStart(m_creature);
|
||||
}
|
||||
break;
|
||||
|
||||
case 4:
|
||||
{
|
||||
m_creature->Say("Time for me to go! See ya around $N!", LANG_UNIVERSAL, PlayerGUID);
|
||||
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_WAVE);
|
||||
|
||||
Unit* temp = Unit::GetUnit(*m_creature, PlayerGUID);
|
||||
if (temp)
|
||||
{
|
||||
temp->MonsterSay("Bye Bye!", LANG_UNIVERSAL, 0);
|
||||
temp->HandleEmoteCommand(EMOTE_ONESHOT_WAVE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Aggro(Unit*)
|
||||
{
|
||||
if (IsBeingEscorted)
|
||||
m_creature->Say("Help $N! I'm under attack!", LANG_UNIVERSAL, PlayerGUID);
|
||||
else m_creature->Say("Die scum!", LANG_UNIVERSAL, 0);
|
||||
}
|
||||
|
||||
void Reset()
|
||||
{
|
||||
DeathCoilTimer = 4000;
|
||||
ChatTimer = 4000;
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
if (IsBeingEscorted)
|
||||
{
|
||||
//killer = m_creature when player got to far from creature
|
||||
if (killer == m_creature)
|
||||
{
|
||||
Unit *pTemp = Unit::GetUnit(*m_creature,PlayerGUID);
|
||||
if( pTemp )
|
||||
DoWhisper("How dare you leave me like that! I hate you! =*(", pTemp);
|
||||
}
|
||||
else m_creature->Say("...no...how could you let me die $N", LANG_UNIVERSAL, PlayerGUID);
|
||||
}
|
||||
else m_creature->Say("ugh...", LANG_UNIVERSAL, 0);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
//Must update npc_escortAI
|
||||
npc_escortAI::UpdateAI(diff);
|
||||
|
||||
//Combat check
|
||||
if (InCombat && m_creature->getVictim())
|
||||
{
|
||||
if (DeathCoilTimer < diff)
|
||||
{
|
||||
m_creature->Say("Taste death!", LANG_UNIVERSAL, 0);
|
||||
m_creature->CastSpell(m_creature->getVictim(), 33130, false);
|
||||
|
||||
DeathCoilTimer = 4000;
|
||||
}else DeathCoilTimer -= diff;
|
||||
}else
|
||||
{
|
||||
//Out of combat but being escorted
|
||||
if (IsBeingEscorted)
|
||||
if (ChatTimer < diff)
|
||||
{
|
||||
if (m_creature->HasAura(3593, 0))
|
||||
{
|
||||
m_creature->Say("Fireworks!", LANG_UNIVERSAL, 0);
|
||||
m_creature->CastSpell(m_creature, 11540, false);
|
||||
}else
|
||||
{
|
||||
m_creature->Say("Hmm, I think I could use a buff", LANG_UNIVERSAL, 0);
|
||||
m_creature->CastSpell(m_creature, 3593, false);
|
||||
}
|
||||
|
||||
ChatTimer = 12000;
|
||||
}else ChatTimer -= diff;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_test(Creature *_Creature)
|
||||
{
|
||||
npc_testAI* testAI = new npc_testAI(_Creature);
|
||||
|
||||
testAI->AddWaypoint(0, 1231, -4419, 23);
|
||||
testAI->AddWaypoint(1, 1198, -4440, 23, 0);
|
||||
testAI->AddWaypoint(2, 1208, -4392, 23);
|
||||
testAI->AddWaypoint(3, 1231, -4419, 23, 5000);
|
||||
testAI->AddWaypoint(4, 1208, -4392, 23, 5000);
|
||||
|
||||
return (CreatureAI*)testAI;
|
||||
}
|
||||
|
||||
bool GossipHello_npc_test(Player *player, Creature *_Creature)
|
||||
{
|
||||
player->TalkedToCreature(_Creature->GetEntry(),_Creature->GetGUID());
|
||||
_Creature->prepareGossipMenu(player,0);
|
||||
|
||||
player->ADD_GOSSIP_ITEM(0, "Click to Test Escort(Attack, Defend, Run)", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
|
||||
player->ADD_GOSSIP_ITEM(0, "Click to Test Escort(NoAttack, NoDefend, Walk)", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
|
||||
player->ADD_GOSSIP_ITEM(0, "Click to Test Escort(NoAttack, Defend, Walk)", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
|
||||
|
||||
_Creature->sendPreparedGossip( player );
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GossipSelect_npc_test(Player *player, Creature *_Creature, uint32 sender, uint32 action )
|
||||
{
|
||||
if (action == GOSSIP_ACTION_INFO_DEF+1)
|
||||
{
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
((npc_escortAI*)(_Creature->AI()))->Start(true, true, true, player->GetGUID());
|
||||
|
||||
return true; // prevent Trinity core handling
|
||||
}
|
||||
|
||||
if (action == GOSSIP_ACTION_INFO_DEF+2)
|
||||
{
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
((npc_escortAI*)(_Creature->AI()))->Start(false, false, false, player->GetGUID());
|
||||
|
||||
return true; // prevent Trinity core handling
|
||||
}
|
||||
|
||||
if (action == GOSSIP_ACTION_INFO_DEF+3)
|
||||
{
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
((npc_escortAI*)(_Creature->AI()))->Start(false, true, false, player->GetGUID());
|
||||
|
||||
return true; // prevent Trinity core handling
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void AddSC_test()
|
||||
{
|
||||
Script *newscript;
|
||||
newscript = new Script;
|
||||
newscript->Name="test";
|
||||
newscript->GetAI = &GetAI_test;
|
||||
newscript->pGossipHello = &GossipHello_npc_test;
|
||||
newscript->pGossipSelect = &GossipSelect_npc_test;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
@@ -191,3 +191,4 @@ void AddSC_go_scripts()
|
||||
newscript->pGOHello = &GOHello_go_tablet_of_the_seven;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -169,3 +169,4 @@ void guardAI::UpdateAI(const uint32 diff)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,3 +23,4 @@ struct TRINITY_DLL_DECL guardAI : public ScriptedAI
|
||||
void UpdateAI(const uint32 diff);
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
@@ -4071,3 +4071,4 @@ void AddSC_guards()
|
||||
newscript->GetAI = &GetAI_guard_undercity;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -593,3 +593,4 @@ void AddSC_item_scripts()
|
||||
newscript->pItemUse = &ItemUse_item_zezzak_shard;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
/* Copyright (C) 2006 - 2008 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
SDName: Item_Test
|
||||
SD%Complete: 100
|
||||
SDComment: Used for Testing Item Scripts
|
||||
SDCategory: Items
|
||||
EndScriptData */
|
||||
|
||||
#include "precompiled.h"
|
||||
|
||||
extern void LoadDatabase();
|
||||
|
||||
bool ItemUse_item_test(Player *player, Item* _Item, SpellCastTargets const& targets)
|
||||
{
|
||||
LoadDatabase();
|
||||
return true;
|
||||
}
|
||||
|
||||
void AddSC_item_test()
|
||||
{
|
||||
Script *newscript;
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name="item_test";
|
||||
newscript->pItemUse = &ItemUse_item_test;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
@@ -300,3 +300,4 @@ void npc_escortAI::Start(bool bAttack, bool bDefend, bool bRun, uint64 pGUID)
|
||||
//Disable questgiver flag
|
||||
m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
|
||||
}
|
||||
|
||||
|
||||
@@ -85,3 +85,4 @@ struct TRINITY_DLL_DECL npc_escortAI : public ScriptedAI
|
||||
bool Run;
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
@@ -142,3 +142,4 @@ void AddSC_npc_innkeeper()
|
||||
newscript->pGossipSelect = &GossipSelect_npc_innkeeper;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -1201,3 +1201,4 @@ void AddSC_npc_professions()
|
||||
//newscript->pGossipSelect = &GossipSelect_go_soothsaying_for_dummies;
|
||||
newscript->RegisterSelf();*/
|
||||
}
|
||||
|
||||
|
||||
@@ -1213,3 +1213,4 @@ void AddSC_npcs_special()
|
||||
newscript->GetAI = &GetAI_npc_snake_trap_serpents;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -60,3 +60,4 @@ void AddSC_alterac_mountains()
|
||||
newscript->GetAI = &GetAI_npc_ravenholdt;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -162,3 +162,4 @@ void AddSC_arathi_highlands()
|
||||
newscript->pQuestAccept = &QuestAccept_npc_professor_phizzlethorpe;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -317,3 +317,4 @@ void AddSC_ashenvale()
|
||||
newscript->pQuestAccept = &QuestAccept_npc_ruul_snowhoof;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -356,3 +356,4 @@ void AddSC_boss_exarch_maladaar()
|
||||
newscript->GetAI = &GetAI_mob_stolen_soul;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -208,4 +208,5 @@ void AddSC_boss_shirrak_the_dead_watcher()
|
||||
newscript->Name="mob_focus_fire";
|
||||
newscript->GetAI = &GetAI_mob_focus_fire;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -287,3 +287,4 @@ void AddSC_boss_nexusprince_shaffar()
|
||||
newscript->GetAI = &GetAI_mob_ethereal_beacon;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -136,3 +136,4 @@ void AddSC_boss_pandemonius()
|
||||
newscript->GetAI = &GetAI_boss_pandemonius;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -440,3 +440,4 @@ void AddSC_boss_darkweaver_syth()
|
||||
newscript->GetAI = &GetAI_mob_syth_shadow;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -219,3 +219,4 @@ void AddSC_boss_talon_king_ikiss()
|
||||
newscript->GetAI = &GetAI_boss_talon_king_ikiss;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -7,3 +7,4 @@
|
||||
|
||||
#define DATA_IKISSDOOREVENT 1
|
||||
#endif
|
||||
|
||||
|
||||
@@ -72,3 +72,4 @@ void AddSC_instance_sethekk_halls()
|
||||
newscript->GetInstanceData = &GetInstanceData_instance_sethekk_halls;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -203,3 +203,4 @@ void AddSC_boss_ambassador_hellmaw()
|
||||
newscript->GetAI = &GetAI_boss_ambassador_hellmaw;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -175,3 +175,4 @@ void AddSC_boss_blackheart_the_inciter()
|
||||
newscript->GetAI = &GetAI_boss_blackheart_the_inciter;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -321,3 +321,4 @@ void AddSC_boss_grandmaster_vorpil()
|
||||
newscript->GetAI = &GetAI_mob_voidtraveler;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -201,3 +201,4 @@ void AddSC_boss_murmur()
|
||||
newscript->GetAI = &GetAI_boss_murmur;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -12,3 +12,4 @@
|
||||
#define DATA_MURMUREVENT 5
|
||||
#define DATA_GRANDMASTERVORPIL 6
|
||||
#endif
|
||||
|
||||
|
||||
+1
@@ -244,3 +244,4 @@ void AddSC_instance_shadow_labyrinth()
|
||||
newscript->GetInstanceData = &GetInstanceData_instance_shadow_labyrinth;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -515,3 +515,4 @@ void AddSC_azshara()
|
||||
newscript->GetAI = &GetAI_mob_depth_charge;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -152,3 +152,4 @@ void AddSC_boss_azuregos()
|
||||
newscript->GetAI = &GetAI_boss_azuregos;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -698,3 +698,4 @@ void AddSC_azuremyst_isle()
|
||||
newscript->RegisterSelf();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -556,3 +556,4 @@ void AddSC_the_barrens()
|
||||
newscript->pQuestAccept = &QuestAccept_npc_wizzlecrank_shredder;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -66,3 +66,4 @@ void AddSC_black_temple()
|
||||
newscript->pGossipSelect = &GossipSelect_npc_spirit_of_olum;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -345,3 +345,4 @@ void AddSC_boss_gurtogg_bloodboil()
|
||||
newscript->GetAI = &GetAI_boss_gurtogg_bloodboil;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -2221,3 +2221,4 @@ void AddSC_boss_illidan()
|
||||
newscript->GetAI = &GetAI_parasitic_shadowfiend;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -313,3 +313,4 @@ void AddSC_boss_mother_shahraz()
|
||||
newscript->GetAI = &GetAI_boss_shahraz;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -685,3 +685,4 @@ void AddSC_boss_reliquary_of_souls()
|
||||
newscript->GetAI = &GetAI_npc_enslaved_soul;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -836,3 +836,4 @@ void AddSC_boss_shade_of_akama()
|
||||
newscript->pGossipSelect = &GossipSelect_npc_akama;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -311,3 +311,4 @@ void AddSC_boss_supremus()
|
||||
newscript->GetAI = &GetAI_npc_volcano;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -534,3 +534,4 @@ void AddSC_boss_teron_gorefiend()
|
||||
newscript->GetAI = &GetAI_boss_teron_gorefiend;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -223,3 +223,4 @@ void AddSC_boss_najentus()
|
||||
newscript->pGOHello = &GOHello_go_najentus_spine;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -32,3 +32,4 @@
|
||||
#define DATA_GAMEOBJECT_SUPREMUS_DOORS 25
|
||||
#define DATA_BLOOD_ELF_COUNCIL_VOICE 26
|
||||
#endif
|
||||
|
||||
|
||||
@@ -865,3 +865,4 @@ void AddSC_boss_illidari_council()
|
||||
newscript->GetAI = &GetAI_boss_high_nethermancer_zerevor;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -349,3 +349,4 @@ void AddSC_instance_black_temple()
|
||||
newscript->GetInstanceData = &GetInstanceData_instance_black_temple;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -1322,3 +1322,4 @@ void AddSC_blackrock_depths()
|
||||
newscript->pChooseReward = &ChooseReward_npc_rocknot;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -104,3 +104,4 @@ void AddSC_boss_ambassador_flamelash()
|
||||
newscript->GetAI = &GetAI_boss_ambassador_flamelash;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -113,3 +113,4 @@ void AddSC_boss_anubshiah()
|
||||
newscript->GetAI = &GetAI_boss_anubshiah;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -102,3 +102,4 @@ void AddSC_boss_draganthaurissan()
|
||||
newscript->GetAI = &GetAI_boss_draganthaurissan;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -165,3 +165,4 @@ void AddSC_boss_general_angerforge()
|
||||
newscript->GetAI = &GetAI_boss_general_angerforge;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -79,3 +79,4 @@ void AddSC_boss_gorosh_the_dervish()
|
||||
newscript->GetAI = &GetAI_boss_gorosh_the_dervish;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -86,3 +86,4 @@ void AddSC_boss_grizzle()
|
||||
newscript->GetAI = &GetAI_boss_grizzle;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -103,3 +103,4 @@ void AddSC_boss_high_interrogator_gerstahn()
|
||||
newscript->GetAI = &GetAI_boss_high_interrogator_gerstahn;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -82,3 +82,4 @@ void AddSC_boss_magmus()
|
||||
newscript->GetAI = &GetAI_boss_magmus;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -97,3 +97,4 @@ void AddSC_boss_moira_bronzebeard()
|
||||
newscript->GetAI = &GetAI_boss_moira_bronzebeard;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -641,3 +641,4 @@ void AddSC_boss_tomb_of_seven()
|
||||
newscript->pGossipSelect = &GossipSelect_boss_doomrel;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -23,4 +23,5 @@
|
||||
#define DATA_GO_BAR_KEG 16
|
||||
#define DATA_GO_BAR_KEG_TRAP 17
|
||||
#define DATA_GO_BAR_DOOR 18
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -304,4 +304,5 @@ InstanceData* GetInstanceData_instance_blackrock_depths(Map* map)
|
||||
newscript->Name = "instance_blackrock_depths";
|
||||
newscript->GetInstanceData = &GetInstanceData_instance_blackrock_depths;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -99,3 +99,4 @@ void AddSC_boss_drakkisath()
|
||||
newscript->GetAI = &GetAI_boss_drakkisath;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -203,3 +203,4 @@ void AddSC_boss_gyth()
|
||||
newscript->GetAI = &GetAI_boss_gyth;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -93,3 +93,4 @@ void AddSC_boss_halycon()
|
||||
newscript->GetAI = &GetAI_boss_halycon;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -129,3 +129,4 @@ void AddSC_boss_highlordomokk()
|
||||
newscript->GetAI = &GetAI_boss_highlordomokk;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -84,3 +84,4 @@ void AddSC_boss_mothersmolderweb()
|
||||
newscript->GetAI = &GetAI_boss_mothersmolderweb;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -125,3 +125,4 @@ void AddSC_boss_overlordwyrmthalak()
|
||||
newscript->GetAI = &GetAI_boss_overlordwyrmthalak;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -91,3 +91,4 @@ void AddSC_boss_pyroguard_emberseer()
|
||||
newscript->GetAI = &GetAI_boss_pyroguard_emberseer;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -83,3 +83,4 @@ void AddSC_boss_quatermasterzigris()
|
||||
newscript->GetAI = &GetAI_boss_quatermasterzigris;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -89,3 +89,4 @@ void AddSC_boss_rend_blackhand()
|
||||
newscript->GetAI = &GetAI_boss_rend_blackhand;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -93,3 +93,4 @@ void AddSC_boss_shadowvosh()
|
||||
newscript->GetAI = &GetAI_boss_shadowvosh;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -91,3 +91,4 @@ void AddSC_boss_thebeast()
|
||||
newscript->GetAI = &GetAI_boss_thebeast;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -119,3 +119,4 @@ void AddSC_boss_warmastervoone()
|
||||
newscript->GetAI = &GetAI_boss_warmastervoone;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -126,3 +126,4 @@ void AddSC_boss_broodlord()
|
||||
newscript->GetAI = &GetAI_boss_broodlord;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -312,3 +312,4 @@ void AddSC_boss_chromaggus()
|
||||
newscript->GetAI = &GetAI_boss_chromaggus;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
@@ -101,3 +101,4 @@ void AddSC_boss_ebonroc()
|
||||
newscript->GetAI = &GetAI_boss_ebonroc;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user