2010-07-02 16:13:40 +02:00
/* Copyright (C) 2008 - 2010 Trinity <http://www.trinitycore.org/>
2010-07-02 16:02:40 +02:00
* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
2008-10-21 13:19:26 -05:00
* 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
*/
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
/* ScriptData
SDName: Western_Plaguelands
SD%Complete: 90
2010-02-03 22:27:35 +01:00
SDComment: Quest support: 5097, 5098, 5216, 5219, 5222, 5225, 5229, 5231, 5233, 5235. To obtain Vitreous Focuser (could use more spesifics about gossip items)
2008-10-21 13:19:26 -05:00
SDCategory: Western Plaguelands
EndScriptData */
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
/* ContentData
npcs_dithers_and_arbington
2009-06-10 22:12:58 +02:00
npc_myranda_the_hag
2008-10-21 13:19:26 -05:00
npc_the_scourge_cauldron
2010-04-07 18:09:10 +02:00
npc_andorhal_tower
2008-10-21 13:19:26 -05:00
EndContentData */
2009-10-17 15:51:44 -07:00
2010-06-08 23:44:55 +02:00
#include "ScriptPCH.h"
2010-05-01 00:19:04 +02:00
#include "ScriptedEscortAI.h"
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
/*######
## npcs_dithers_and_arbington
######*/
2009-10-17 15:51:44 -07:00
2009-01-23 19:45:49 +01:00
#define GOSSIP_HDA1 "What does the Felstone Field Cauldron need?"
#define GOSSIP_HDA2 "What does the Dalson's Tears Cauldron need?"
#define GOSSIP_HDA3 "What does the Writhing Haunt Cauldron need?"
#define GOSSIP_HDA4 "What does the Gahrron's Withering Cauldron need?"
2009-10-17 15:51:44 -07:00
2009-01-23 19:45:49 +01:00
#define GOSSIP_SDA1 "Thanks, i need a Vitreous Focuser"
2009-10-17 15:51:44 -07:00
2009-08-14 00:39:07 +02:00
bool GossipHello_npcs_dithers_and_arbington ( Player * pPlayer , Creature * pCreature )
2008-10-21 13:19:26 -05:00
{
2009-08-14 00:39:07 +02:00
if ( pCreature -> isQuestGiver ())
pPlayer -> PrepareQuestMenu ( pCreature -> GetGUID ());
if ( pCreature -> isVendor ())
2009-08-14 00:02:13 +02:00
pPlayer -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_VENDOR , GOSSIP_TEXT_BROWSE_GOODS , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_TRADE );
2009-10-17 15:51:44 -07:00
2009-08-14 00:02:13 +02:00
if ( pPlayer -> GetQuestRewardStatus ( 5237 ) || pPlayer -> GetQuestRewardStatus ( 5238 ))
2008-10-21 13:19:26 -05:00
{
2009-08-14 00:02:13 +02:00
pPlayer -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_HDA1 , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 1 );
pPlayer -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_HDA2 , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 2 );
pPlayer -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_HDA3 , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 3 );
pPlayer -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_HDA4 , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 4 );
2009-08-14 00:39:07 +02:00
pPlayer -> SEND_GOSSIP_MENU ( 3985 , pCreature -> GetGUID ());
2008-10-21 13:19:26 -05:00
} else
2009-12-20 13:35:08 +02:00
pPlayer -> SEND_GOSSIP_MENU ( pPlayer -> GetGossipTextId ( pCreature ), pCreature -> GetGUID ());
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
return true ;
}
2009-10-17 15:51:44 -07:00
2010-04-19 09:26:37 +02:00
bool GossipSelect_npcs_dithers_and_arbington ( Player * pPlayer , Creature * pCreature , uint32 /*uiSender*/ , uint32 uiAction )
2008-10-21 13:19:26 -05:00
{
2009-08-15 00:32:04 +02:00
switch ( uiAction )
2008-10-21 13:19:26 -05:00
{
case GOSSIP_ACTION_TRADE :
2009-08-14 00:39:07 +02:00
pPlayer -> SEND_VENDORLIST ( pCreature -> GetGUID ());
2008-10-21 13:19:26 -05:00
break ;
case GOSSIP_ACTION_INFO_DEF + 1 :
2009-08-14 00:02:13 +02:00
pPlayer -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_SDA1 , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 5 );
2009-08-14 00:39:07 +02:00
pPlayer -> SEND_GOSSIP_MENU ( 3980 , pCreature -> GetGUID ());
2008-10-21 13:19:26 -05:00
break ;
case GOSSIP_ACTION_INFO_DEF + 2 :
2009-08-14 00:02:13 +02:00
pPlayer -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_SDA1 , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 5 );
2009-08-14 00:39:07 +02:00
pPlayer -> SEND_GOSSIP_MENU ( 3981 , pCreature -> GetGUID ());
2008-10-21 13:19:26 -05:00
break ;
case GOSSIP_ACTION_INFO_DEF + 3 :
2009-08-14 00:02:13 +02:00
pPlayer -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_SDA1 , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 5 );
2009-08-14 00:39:07 +02:00
pPlayer -> SEND_GOSSIP_MENU ( 3982 , pCreature -> GetGUID ());
2008-10-21 13:19:26 -05:00
break ;
case GOSSIP_ACTION_INFO_DEF + 4 :
2009-08-14 00:02:13 +02:00
pPlayer -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_SDA1 , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 5 );
2009-08-14 00:39:07 +02:00
pPlayer -> SEND_GOSSIP_MENU ( 3983 , pCreature -> GetGUID ());
2008-10-21 13:19:26 -05:00
break ;
case GOSSIP_ACTION_INFO_DEF + 5 :
2009-08-14 00:02:13 +02:00
pPlayer -> CLOSE_GOSSIP_MENU ();
2009-08-14 00:39:07 +02:00
pCreature -> CastSpell ( pPlayer , 17529 , false );
2008-10-21 13:19:26 -05:00
break ;
}
return true ;
}
2009-10-17 15:51:44 -07:00
2009-06-10 22:12:58 +02:00
/*######
## npc_myranda_the_hag
######*/
2009-10-17 15:51:44 -07:00
2009-10-17 07:42:48 -07:00
enum eMyranda
2009-06-10 22:12:58 +02:00
{
QUEST_SUBTERFUGE = 5862 ,
QUEST_IN_DREAMS = 5944 ,
SPELL_SCARLET_ILLUSION = 17961
};
2009-10-17 15:51:44 -07:00
2009-06-10 22:12:58 +02:00
#define GOSSIP_ITEM_ILLUSION "I am ready for the illusion, Myranda."
2009-10-17 15:51:44 -07:00
2009-06-10 22:12:58 +02:00
bool GossipHello_npc_myranda_the_hag ( Player * pPlayer , Creature * pCreature )
{
2009-08-14 00:02:13 +02:00
if ( pCreature -> isQuestGiver ())
2009-06-10 22:12:58 +02:00
pPlayer -> PrepareQuestMenu ( pCreature -> GetGUID ());
2009-10-17 15:51:44 -07:00
2009-08-14 00:02:13 +02:00
if ( pPlayer -> GetQuestStatus ( QUEST_SUBTERFUGE ) == QUEST_STATUS_COMPLETE &&
2009-06-10 22:12:58 +02:00
! pPlayer -> GetQuestRewardStatus ( QUEST_IN_DREAMS ) && ! pPlayer -> HasAura ( SPELL_SCARLET_ILLUSION ))
{
pPlayer -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_ITEM_ILLUSION , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 1 );
pPlayer -> SEND_GOSSIP_MENU ( 4773 , pCreature -> GetGUID ());
return true ;
}
else
2009-12-20 13:35:08 +02:00
pPlayer -> SEND_GOSSIP_MENU ( pPlayer -> GetGossipTextId ( pCreature ), pCreature -> GetGUID ());
2009-10-17 15:51:44 -07:00
2009-06-10 22:12:58 +02:00
return true ;
}
2009-10-17 15:51:44 -07:00
2010-04-19 09:26:37 +02:00
bool GossipSelect_npc_myranda_the_hag ( Player * pPlayer , Creature * /*pCreature*/ , uint32 /*uiSender*/ , uint32 uiAction )
2009-06-10 22:12:58 +02:00
{
2009-08-15 00:32:04 +02:00
if ( uiAction == GOSSIP_ACTION_INFO_DEF + 1 )
2009-06-10 22:12:58 +02:00
{
pPlayer -> CLOSE_GOSSIP_MENU ();
2009-10-31 19:47:00 +01:00
pPlayer -> CastSpell ( pPlayer , SPELL_SCARLET_ILLUSION , false );
2009-06-10 22:12:58 +02:00
}
return true ;
}
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
/*######
## npc_the_scourge_cauldron
######*/
2009-10-17 15:51:44 -07:00
2010-02-05 00:31:28 +01:00
struct npc_the_scourge_cauldronAI : public ScriptedAI
2008-10-21 13:19:26 -05:00
{
2009-03-31 18:12:49 -06:00
npc_the_scourge_cauldronAI ( Creature * c ) : ScriptedAI ( c ) {}
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
void Reset () {}
2009-10-17 15:51:44 -07:00
2010-04-19 09:26:37 +02:00
void EnterCombat ( Unit * /*who*/ ) {}
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
void DoDie ()
{
//summoner dies here
2010-04-14 23:07:41 +02:00
me -> DealDamage ( me , me -> GetHealth (), NULL , DIRECT_DAMAGE , SPELL_SCHOOL_MASK_NORMAL , NULL , false );
2008-10-21 13:19:26 -05:00
//override any database `spawntimesecs` to prevent duplicated summons
2010-04-14 23:07:41 +02:00
uint32 rTime = me -> GetRespawnDelay ();
2009-08-14 00:02:13 +02:00
if ( rTime < 600 )
2010-04-14 23:07:41 +02:00
me -> SetRespawnDelay ( 600 );
2008-10-21 13:19:26 -05:00
}
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
void MoveInLineOfSight ( Unit * who )
{
if ( ! who || who -> GetTypeId () != TYPEID_PLAYER )
return ;
2009-10-17 15:51:44 -07:00
2009-08-14 00:02:13 +02:00
if ( who -> GetTypeId () == TYPEID_PLAYER )
2008-10-21 13:19:26 -05:00
{
2010-04-14 23:07:41 +02:00
switch ( me -> GetAreaId ())
2008-10-21 13:19:26 -05:00
{
case 199 : //felstone
2009-08-14 00:02:13 +02:00
if ( CAST_PLR ( who ) -> GetQuestStatus ( 5216 ) == QUEST_STATUS_INCOMPLETE ||
CAST_PLR ( who ) -> GetQuestStatus ( 5229 ) == QUEST_STATUS_INCOMPLETE )
2008-10-21 13:19:26 -05:00
{
2010-04-14 23:07:41 +02:00
me -> SummonCreature ( 11075 , 0.0f , 0.0f , 0.0f , 0.0f , TEMPSUMMON_TIMED_OR_DEAD_DESPAWN , 600000 );
2008-10-21 13:19:26 -05:00
DoDie ();
}
break ;
case 200 : //dalson
2009-08-14 00:02:13 +02:00
if ( CAST_PLR ( who ) -> GetQuestStatus ( 5219 ) == QUEST_STATUS_INCOMPLETE ||
CAST_PLR ( who ) -> GetQuestStatus ( 5231 ) == QUEST_STATUS_INCOMPLETE )
2008-10-21 13:19:26 -05:00
{
2010-04-14 23:07:41 +02:00
me -> SummonCreature ( 11077 , 0.0f , 0.0f , 0.0f , 0.0f , TEMPSUMMON_TIMED_OR_DEAD_DESPAWN , 600000 );
2008-10-21 13:19:26 -05:00
DoDie ();
}
break ;
case 201 : //gahrron
2009-08-14 00:02:13 +02:00
if ( CAST_PLR ( who ) -> GetQuestStatus ( 5225 ) == QUEST_STATUS_INCOMPLETE ||
CAST_PLR ( who ) -> GetQuestStatus ( 5235 ) == QUEST_STATUS_INCOMPLETE )
2008-10-21 13:19:26 -05:00
{
2010-04-14 23:07:41 +02:00
me -> SummonCreature ( 11078 , 0.0f , 0.0f , 0.0f , 0.0f , TEMPSUMMON_TIMED_OR_DEAD_DESPAWN , 600000 );
2008-10-21 13:19:26 -05:00
DoDie ();
}
break ;
case 202 : //writhing
2009-08-14 00:02:13 +02:00
if ( CAST_PLR ( who ) -> GetQuestStatus ( 5222 ) == QUEST_STATUS_INCOMPLETE ||
CAST_PLR ( who ) -> GetQuestStatus ( 5233 ) == QUEST_STATUS_INCOMPLETE )
2008-10-21 13:19:26 -05:00
{
2010-04-14 23:07:41 +02:00
me -> SummonCreature ( 11076 , 0.0f , 0.0f , 0.0f , 0.0f , TEMPSUMMON_TIMED_OR_DEAD_DESPAWN , 600000 );
2008-10-21 13:19:26 -05:00
DoDie ();
}
break ;
}
}
}
};
2009-08-14 00:39:07 +02:00
CreatureAI * GetAI_npc_the_scourge_cauldron ( Creature * pCreature )
2008-10-21 13:19:26 -05:00
{
2009-08-14 00:39:07 +02:00
return new npc_the_scourge_cauldronAI ( pCreature );
2008-10-21 13:19:26 -05:00
}
2009-10-17 15:51:44 -07:00
2010-02-03 22:27:35 +01:00
/*######
2010-04-07 18:09:10 +02:00
## npcs_andorhal_tower
2010-02-03 22:27:35 +01:00
######*/
enum eAndorhalTower
{
GO_BEACON_TORCH = 176093
};
2010-02-05 00:31:28 +01:00
struct npc_andorhal_towerAI : public Scripted_NoMovementAI
2010-02-03 22:27:35 +01:00
{
npc_andorhal_towerAI ( Creature * c ) : Scripted_NoMovementAI ( c ) {}
void MoveInLineOfSight ( Unit * pWho )
{
if ( ! pWho || pWho -> GetTypeId () != TYPEID_PLAYER )
return ;
2010-04-14 23:07:41 +02:00
if ( me -> FindNearestGameObject ( GO_BEACON_TORCH , 10.0f ))
CAST_PLR ( pWho ) -> KilledMonsterCredit ( me -> GetEntry (), me -> GetGUID ());
2010-02-03 22:27:35 +01:00
}
};
CreatureAI * GetAI_npc_andorhal_tower ( Creature * pCreature )
{
return new npc_andorhal_towerAI ( pCreature );
}
2010-05-01 00:19:04 +02:00
/*######
## npc_anchorite_truuen
######*/
enum eTruuen
{
NPC_GHOST_UTHER = 17233 ,
NPC_THEL_DANIS = 1854 ,
NPC_GHOUL = 1791 , //ambush
QUEST_TOMB_LIGHTBRINGER = 9446 ,
SAY_WP_0 = - 1999981 , //Beware! We are attacked!
SAY_WP_1 = - 1999982 , //It must be the purity of the Mark of the Lightbringer that is drawing forth the Scourge to attack us. We must proceed with caution lest we be overwhelmed!
SAY_WP_2 = - 1999983 , //This land truly needs to be cleansed by the Light! Let us continue on to the tomb. It isn't far now...
SAY_WP_3 = - 1999984 , //Be welcome, friends!
SAY_WP_4 = - 1999985 , //Thank you for coming here in remembrance of me. Your efforts in recovering that symbol, while unnecessary, are certainly touching to an old man's heart.
SAY_WP_5 = - 1999986 , //Please, rise my friend. Keep the Blessing as a symbol of the strength of the Light and how heroes long gone might once again rise in each of us to inspire.
SAY_WP_6 = - 1999987 //Thank you my friend for making this possible. This is a day that I shall never forget! I think I will stay a while. Please return to High Priestess MacDonnell at the camp. I know that she'll be keenly interested to know of what has transpired here.
};
struct npc_anchorite_truuenAI : public npc_escortAI
{
npc_anchorite_truuenAI ( Creature * pCreature ) : npc_escortAI ( pCreature ) { }
uint32 m_uiChatTimer ;
uint64 UghostGUID ;
uint64 TheldanisGUID ;
Creature * Ughost ;
Creature * Theldanis ;
void Reset ()
{
m_uiChatTimer = 7000 ;
}
void JustSummoned ( Creature * pSummoned )
{
if ( pSummoned -> GetEntry () == NPC_GHOUL )
pSummoned -> AI () -> AttackStart ( me );
}
void WaypointReached ( uint32 i )
{
Player * pPlayer = GetPlayerForEscort ();
switch ( i )
{
case 8 :
DoScriptText ( SAY_WP_0 , me );
me -> SummonCreature ( NPC_GHOUL , me -> GetPositionX () + 7.0f , me -> GetPositionY () + 7.0f , me -> GetPositionZ (), 0.0f , TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT , 90000 );
me -> SummonCreature ( NPC_GHOUL , me -> GetPositionX () + 5.0f , me -> GetPositionY () + 5.0f , me -> GetPositionZ (), 0.0f , TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT , 90000 );
break ;
case 9 :
DoScriptText ( SAY_WP_1 , me );
break ;
case 14 :
me -> SummonCreature ( NPC_GHOUL , me -> GetPositionX () + 7.0f , me -> GetPositionY () + 7.0f , me -> GetPositionZ (), 0.0f , TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT , 90000 );
me -> SummonCreature ( NPC_GHOUL , me -> GetPositionX () + 5.0f , me -> GetPositionY () + 5.0f , me -> GetPositionZ (), 0.0f , TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT , 90000 );
me -> SummonCreature ( NPC_GHOUL , me -> GetPositionX () + 10.0f , me -> GetPositionY () + 10.0f , me -> GetPositionZ (), 0.0f , TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT , 90000 );
me -> SummonCreature ( NPC_GHOUL , me -> GetPositionX () + 8.0f , me -> GetPositionY () + 8.0f , me -> GetPositionZ (), 0.0f , TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT , 90000 );
break ;
case 15 :
DoScriptText ( SAY_WP_2 , me );
case 21 :
Theldanis = GetClosestCreatureWithEntry ( me , NPC_THEL_DANIS , 150 );
DoScriptText ( SAY_WP_3 , Theldanis );
break ;
case 22 :
break ;
case 23 :
Ughost = me -> SummonCreature ( NPC_GHOST_UTHER , 971.86 , - 1825.42 , 81.99 , 0.0f , TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT , 30000 );
Ughost -> AddUnitMovementFlag ( MOVEMENTFLAG_LEVITATING );
DoScriptText ( SAY_WP_4 , Ughost , me );
m_uiChatTimer = 4000 ;
break ;
case 24 :
DoScriptText ( SAY_WP_5 , Ughost , me );
m_uiChatTimer = 4000 ;
break ;
case 25 :
DoScriptText ( SAY_WP_6 , Ughost , me );
m_uiChatTimer = 4000 ;
break ;
case 26 :
if ( pPlayer )
pPlayer -> GroupEventHappens ( QUEST_TOMB_LIGHTBRINGER , me );
break ;
}
}
2010-05-01 22:25:14 +02:00
void EnterCombat ( Unit * /*pWho*/ ){}
2010-05-01 00:19:04 +02:00
2010-05-01 22:25:14 +02:00
void JustDied ( Unit * /*pKiller*/ )
2010-05-01 00:19:04 +02:00
{
Player * pPlayer = GetPlayerForEscort ();
if ( pPlayer )
pPlayer -> FailQuest ( QUEST_TOMB_LIGHTBRINGER );
}
void UpdateAI ( const uint32 uiDiff )
{
npc_escortAI :: UpdateAI ( uiDiff );
DoMeleeAttackIfReady ();
if ( HasEscortState ( STATE_ESCORT_ESCORTING ))
m_uiChatTimer = 6000 ;
}
};
CreatureAI * GetAI_npc_anchorite_truuen ( Creature * pCreature )
{
return new npc_anchorite_truuenAI ( pCreature );
}
bool QuestAccept_npc_anchorite_truuen ( Player * pPlayer , Creature * pCreature , Quest const * quest )
{
npc_escortAI * pEscortAI = CAST_AI ( npc_anchorite_truuenAI , pCreature -> AI ());
if ( quest -> GetQuestId () == QUEST_TOMB_LIGHTBRINGER )
pEscortAI -> Start ( true , true , pPlayer -> GetGUID ());
return false ;
}
2008-10-21 13:19:26 -05:00
/*######
##
######*/
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
void AddSC_western_plaguelands ()
{
Script * newscript ;
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
newscript = new Script ;
2009-10-17 04:23:24 -07:00
newscript -> Name = "npcs_dithers_and_arbington" ;
2008-10-21 13:19:26 -05:00
newscript -> pGossipHello = & GossipHello_npcs_dithers_and_arbington ;
newscript -> pGossipSelect = & GossipSelect_npcs_dithers_and_arbington ;
2008-11-20 16:16:57 -06:00
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2009-06-10 22:12:58 +02:00
newscript = new Script ;
newscript -> Name = "npc_myranda_the_hag" ;
newscript -> pGossipHello = & GossipHello_npc_myranda_the_hag ;
newscript -> pGossipSelect = & GossipSelect_npc_myranda_the_hag ;
newscript -> RegisterSelf ();
2009-10-17 15:51:44 -07:00
2008-10-21 13:19:26 -05:00
newscript = new Script ;
2009-10-17 04:23:24 -07:00
newscript -> Name = "npc_the_scourge_cauldron" ;
2008-12-22 23:11:25 +01:00
newscript -> GetAI = & GetAI_npc_the_scourge_cauldron ;
2008-11-20 16:16:57 -06:00
newscript -> RegisterSelf ();
2010-02-03 22:27:35 +01:00
newscript = new Script ;
newscript -> Name = "npc_andorhal_tower" ;
newscript -> GetAI = & GetAI_npc_andorhal_tower ;
newscript -> RegisterSelf ();
2010-05-01 00:19:04 +02:00
newscript = new Script ;
newscript -> Name = "npc_anchorite_truuen" ;
newscript -> GetAI = & GetAI_npc_anchorite_truuen ;
newscript -> pQuestAccept = & QuestAccept_npc_anchorite_truuen ;
newscript -> RegisterSelf ();
2008-10-21 13:19:26 -05:00
}