2010-07-06 03:27:41 +02:00
/*
2011-01-01 15:01:13 +01:00
* Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
2010-07-06 03:27:41 +02:00
* Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
2008-10-21 13:19:26 -05:00
*
2010-07-06 03:27:41 +02: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.
2008-10-21 13:19:26 -05:00
*
2010-07-06 03:27:41 +02:00
* 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, see <http://www.gnu.org/licenses/>.
2008-10-21 13:19:26 -05:00
*/
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"
2010-08-09 01:52:26 +02:00
class npcs_dithers_and_arbington : public CreatureScript
2008-10-21 13:19:26 -05:00
{
2010-08-08 22:54:58 +06:00
public :
npcs_dithers_and_arbington () : CreatureScript ( "npcs_dithers_and_arbington" ) { }
2009-10-17 15:51:44 -07:00
2011-07-02 22:52:42 +02:00
bool OnGossipSelect ( Player * player , Creature * creature , uint32 /*uiSender*/ , uint32 uiAction )
2008-10-21 13:19:26 -05:00
{
2011-07-02 22:52:42 +02:00
player -> PlayerTalkClass -> ClearMenus ();
2010-08-08 22:54:58 +06:00
switch ( uiAction )
{
case GOSSIP_ACTION_TRADE :
2011-07-02 22:52:42 +02:00
player -> GetSession () -> SendListInventory ( creature -> GetGUID ());
2010-08-08 22:54:58 +06:00
break ;
case GOSSIP_ACTION_INFO_DEF + 1 :
2011-07-02 22:52:42 +02:00
player -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_SDA1 , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 5 );
player -> SEND_GOSSIP_MENU ( 3980 , creature -> GetGUID ());
2010-08-08 22:54:58 +06:00
break ;
case GOSSIP_ACTION_INFO_DEF + 2 :
2011-07-02 22:52:42 +02:00
player -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_SDA1 , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 5 );
player -> SEND_GOSSIP_MENU ( 3981 , creature -> GetGUID ());
2010-08-08 22:54:58 +06:00
break ;
case GOSSIP_ACTION_INFO_DEF + 3 :
2011-07-02 22:52:42 +02:00
player -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_SDA1 , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 5 );
player -> SEND_GOSSIP_MENU ( 3982 , creature -> GetGUID ());
2010-08-08 22:54:58 +06:00
break ;
case GOSSIP_ACTION_INFO_DEF + 4 :
2011-07-02 22:52:42 +02:00
player -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_SDA1 , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 5 );
player -> SEND_GOSSIP_MENU ( 3983 , creature -> GetGUID ());
2010-08-08 22:54:58 +06:00
break ;
case GOSSIP_ACTION_INFO_DEF + 5 :
2011-07-02 22:52:42 +02:00
player -> CLOSE_GOSSIP_MENU ();
creature -> CastSpell ( player , 17529 , false );
2010-08-08 22:54:58 +06:00
break ;
}
return true ;
}
2009-10-17 15:51:44 -07:00
2011-07-02 22:52:42 +02:00
bool OnGossipHello ( Player * player , Creature * creature )
2008-10-21 13:19:26 -05:00
{
2011-07-02 22:18:03 +02:00
if ( creature -> isQuestGiver ())
2011-07-02 22:52:42 +02:00
player -> PrepareQuestMenu ( creature -> GetGUID ());
2011-07-02 22:18:03 +02:00
if ( creature -> isVendor ())
2011-07-02 22:52:42 +02:00
player -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_VENDOR , GOSSIP_TEXT_BROWSE_GOODS , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_TRADE );
2010-08-08 22:54:58 +06:00
2011-07-02 22:52:42 +02:00
if ( player -> GetQuestRewardStatus ( 5237 ) || player -> GetQuestRewardStatus ( 5238 ))
2010-08-08 22:54:58 +06:00
{
2011-07-02 22:52:42 +02:00
player -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_HDA1 , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 1 );
player -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_HDA2 , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 2 );
player -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_HDA3 , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 3 );
player -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_HDA4 , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 4 );
player -> SEND_GOSSIP_MENU ( 3985 , creature -> GetGUID ());
2010-08-08 22:54:58 +06:00
} else
2011-07-02 22:52:42 +02:00
player -> SEND_GOSSIP_MENU ( player -> GetGossipTextId ( creature ), creature -> GetGUID ());
2010-08-08 22:54:58 +06:00
return true ;
2008-10-21 13:19:26 -05:00
}
2010-08-08 22:54:58 +06: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."
2010-08-09 01:52:26 +02:00
class npc_myranda_the_hag : public CreatureScript
2009-06-10 22:12:58 +02:00
{
2010-08-08 22:54:58 +06:00
public :
npc_myranda_the_hag () : CreatureScript ( "npc_myranda_the_hag" ) { }
2009-10-17 15:51:44 -07:00
2011-07-02 22:52:42 +02:00
bool OnGossipSelect ( Player * player , Creature * /*creature*/ , uint32 /*uiSender*/ , uint32 uiAction )
2009-06-10 22:12:58 +02:00
{
2011-07-02 22:52:42 +02:00
player -> PlayerTalkClass -> ClearMenus ();
2010-08-08 22:54:58 +06:00
if ( uiAction == GOSSIP_ACTION_INFO_DEF + 1 )
{
2011-07-02 22:52:42 +02:00
player -> CLOSE_GOSSIP_MENU ();
player -> CastSpell ( player , SPELL_SCARLET_ILLUSION , false );
2010-08-08 22:54:58 +06:00
}
2009-06-10 22:12:58 +02:00
return true ;
}
2009-10-17 15:51:44 -07:00
2011-07-02 22:52:42 +02:00
bool OnGossipHello ( Player * player , Creature * creature )
2009-06-10 22:12:58 +02:00
{
2011-07-02 22:18:03 +02:00
if ( creature -> isQuestGiver ())
2011-07-02 22:52:42 +02:00
player -> PrepareQuestMenu ( creature -> GetGUID ());
2010-08-08 22:54:58 +06:00
2011-07-02 22:52:42 +02:00
if ( player -> GetQuestStatus ( QUEST_SUBTERFUGE ) == QUEST_STATUS_COMPLETE &&
! player -> GetQuestRewardStatus ( QUEST_IN_DREAMS ) && ! player -> HasAura ( SPELL_SCARLET_ILLUSION ))
2010-08-08 22:54:58 +06:00
{
2011-07-02 22:52:42 +02:00
player -> ADD_GOSSIP_ITEM ( GOSSIP_ICON_CHAT , GOSSIP_ITEM_ILLUSION , GOSSIP_SENDER_MAIN , GOSSIP_ACTION_INFO_DEF + 1 );
player -> SEND_GOSSIP_MENU ( 4773 , creature -> GetGUID ());
2010-08-08 22:54:58 +06:00
return true ;
}
else
2011-07-02 22:52:42 +02:00
player -> SEND_GOSSIP_MENU ( player -> GetGossipTextId ( creature ), creature -> GetGUID ());
2010-08-08 22:54:58 +06:00
return true ;
2009-06-10 22:12:58 +02:00
}
2010-08-08 22:54:58 +06:00
};
2008-10-21 13:19:26 -05:00
/*######
## npc_the_scourge_cauldron
######*/
2010-08-09 01:52:26 +02:00
class npc_the_scourge_cauldron : public CreatureScript
2008-10-21 13:19:26 -05:00
{
2010-08-08 22:54:58 +06:00
public :
npc_the_scourge_cauldron () : CreatureScript ( "npc_the_scourge_cauldron" ) { }
2009-10-17 15:51:44 -07:00
2011-07-02 22:18:03 +02:00
CreatureAI * GetAI ( Creature * creature ) const
2008-10-21 13:19:26 -05:00
{
2011-07-02 22:18:03 +02:00
return new npc_the_scourge_cauldronAI ( creature );
2008-10-21 13:19:26 -05:00
}
2009-10-17 15:51:44 -07:00
2010-08-08 22:54:58 +06:00
struct npc_the_scourge_cauldronAI : public ScriptedAI
2008-10-21 13:19:26 -05:00
{
2011-06-30 14:24:56 +02:00
npc_the_scourge_cauldronAI ( Creature * c ) : ScriptedAI ( c ) {}
2010-08-08 22:54:58 +06:00
void Reset () {}
void EnterCombat ( Unit * /*who*/ ) {}
2009-10-17 15:51:44 -07:00
2010-08-08 22:54:58 +06:00
void DoDie ()
2008-10-21 13:19:26 -05:00
{
2010-08-08 22:54:58 +06:00
//summoner dies here
me -> DealDamage ( me , me -> GetHealth (), NULL , DIRECT_DAMAGE , SPELL_SCHOOL_MASK_NORMAL , NULL , false );
//override any database `spawntimesecs` to prevent duplicated summons
uint32 rTime = me -> GetRespawnDelay ();
if ( rTime < 600 )
me -> SetRespawnDelay ( 600 );
}
2011-06-30 14:24:56 +02:00
void MoveInLineOfSight ( Unit * who )
2010-08-08 22:54:58 +06:00
{
if ( ! who || who -> GetTypeId () != TYPEID_PLAYER )
return ;
if ( who -> GetTypeId () == TYPEID_PLAYER )
2008-10-21 13:19:26 -05:00
{
2010-08-08 22:54:58 +06:00
switch ( me -> GetAreaId ())
{
case 199 : //felstone
if ( CAST_PLR ( who ) -> GetQuestStatus ( 5216 ) == QUEST_STATUS_INCOMPLETE ||
CAST_PLR ( who ) -> GetQuestStatus ( 5229 ) == QUEST_STATUS_INCOMPLETE )
{
me -> SummonCreature ( 11075 , 0.0f , 0.0f , 0.0f , 0.0f , TEMPSUMMON_TIMED_OR_DEAD_DESPAWN , 600000 );
DoDie ();
}
break ;
case 200 : //dalson
if ( CAST_PLR ( who ) -> GetQuestStatus ( 5219 ) == QUEST_STATUS_INCOMPLETE ||
CAST_PLR ( who ) -> GetQuestStatus ( 5231 ) == QUEST_STATUS_INCOMPLETE )
{
me -> SummonCreature ( 11077 , 0.0f , 0.0f , 0.0f , 0.0f , TEMPSUMMON_TIMED_OR_DEAD_DESPAWN , 600000 );
DoDie ();
}
break ;
case 201 : //gahrron
if ( CAST_PLR ( who ) -> GetQuestStatus ( 5225 ) == QUEST_STATUS_INCOMPLETE ||
CAST_PLR ( who ) -> GetQuestStatus ( 5235 ) == QUEST_STATUS_INCOMPLETE )
{
2011-04-29 20:47:02 +02:00
me -> SummonCreature ( 11078 , 0.0f , 0.0f , 0.0f , 0.0f , TEMPSUMMON_TIMED_OR_DEAD_DESPAWN , 600000 );
2010-08-08 22:54:58 +06:00
DoDie ();
}
break ;
case 202 : //writhing
if ( CAST_PLR ( who ) -> GetQuestStatus ( 5222 ) == QUEST_STATUS_INCOMPLETE ||
CAST_PLR ( who ) -> GetQuestStatus ( 5233 ) == QUEST_STATUS_INCOMPLETE )
{
2011-04-29 20:47:02 +02:00
me -> SummonCreature ( 11076 , 0.0f , 0.0f , 0.0f , 0.0f , TEMPSUMMON_TIMED_OR_DEAD_DESPAWN , 600000 );
2010-08-08 22:54:58 +06:00
DoDie ();
}
break ;
}
2008-10-21 13:19:26 -05:00
}
}
2010-08-08 22:54:58 +06:00
};
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-08-09 01:52:26 +02:00
class npc_andorhal_tower : public CreatureScript
2010-02-03 22:27:35 +01:00
{
2010-08-08 22:54:58 +06:00
public :
npc_andorhal_tower () : CreatureScript ( "npc_andorhal_tower" ) { }
2010-02-03 22:27:35 +01:00
2011-07-02 22:18:03 +02:00
CreatureAI * GetAI ( Creature * creature ) const
2010-02-03 22:27:35 +01:00
{
2011-07-02 22:18:03 +02:00
return new npc_andorhal_towerAI ( creature );
2010-02-03 22:27:35 +01:00
}
2010-08-08 22:54:58 +06:00
struct npc_andorhal_towerAI : public Scripted_NoMovementAI
{
2011-06-30 14:24:56 +02:00
npc_andorhal_towerAI ( Creature * c ) : Scripted_NoMovementAI ( c ) {}
2010-08-08 22:54:58 +06:00
2011-07-02 23:53:38 +02:00
void MoveInLineOfSight ( Unit * who )
2010-08-08 22:54:58 +06:00
{
2011-07-02 23:53:38 +02:00
if ( ! who || who -> GetTypeId () != TYPEID_PLAYER )
2010-08-08 22:54:58 +06:00
return ;
if ( me -> FindNearestGameObject ( GO_BEACON_TORCH , 10.0f ))
2011-07-02 23:53:38 +02:00
CAST_PLR ( who ) -> KilledMonsterCredit ( me -> GetEntry (), me -> GetGUID ());
2010-08-08 22:54:58 +06:00
}
};
2010-02-03 22:27:35 +01:00
};
2010-05-01 00:19:04 +02:00
/*######
## npc_anchorite_truuen
######*/
enum eTruuen
{
NPC_GHOST_UTHER = 17233 ,
NPC_THEL_DANIS = 1854 ,
2010-08-08 19:45:53 +02:00
NPC_GHOUL = 1791 , //ambush
2010-05-01 00:19:04 +02:00
QUEST_TOMB_LIGHTBRINGER = 9446 ,
2010-09-05 02:16:58 +06:00
SAY_WP_0 = - 1800064 , //Beware! We are attacked!
SAY_WP_1 = - 1800065 , //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 = - 1800066 , //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 = - 1800067 , //Be welcome, friends!
SAY_WP_4 = - 1800068 , //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 = - 1800069 , //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 = - 1800070 //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.
2010-05-01 00:19:04 +02:00
};
2010-08-09 01:52:26 +02:00
class npc_anchorite_truuen : public CreatureScript
2010-08-08 22:54:58 +06:00
{
public :
npc_anchorite_truuen () : CreatureScript ( "npc_anchorite_truuen" ) { }
2010-05-01 00:19:04 +02:00
2011-09-15 14:08:17 +02:00
bool OnQuestAccept ( Player * player , Creature * creature , Quest const * quest )
2010-08-08 22:54:58 +06:00
{
2011-07-02 22:18:03 +02:00
npc_escortAI * pEscortAI = CAST_AI ( npc_anchorite_truuen :: npc_anchorite_truuenAI , creature -> AI ());
2010-05-01 00:19:04 +02:00
2010-08-08 19:45:53 +02:00
if ( quest -> GetQuestId () == QUEST_TOMB_LIGHTBRINGER )
2011-07-02 22:52:42 +02:00
pEscortAI -> Start ( true , true , player -> GetGUID ());
2010-08-08 22:54:58 +06:00
return false ;
2010-05-01 00:19:04 +02:00
}
2011-07-02 22:18:03 +02:00
CreatureAI * GetAI ( Creature * creature ) const
2010-05-01 00:19:04 +02:00
{
2011-07-02 22:18:03 +02:00
return new npc_anchorite_truuenAI ( creature );
2010-05-01 00:19:04 +02:00
}
2010-08-08 22:54:58 +06:00
struct npc_anchorite_truuenAI : public npc_escortAI
2010-05-01 00:19:04 +02:00
{
2011-07-02 22:18:03 +02:00
npc_anchorite_truuenAI ( Creature * creature ) : npc_escortAI ( creature ) { }
2010-08-08 22:54:58 +06:00
uint32 m_uiChatTimer ;
uint64 UghostGUID ;
uint64 TheldanisGUID ;
Creature * Ughost ;
Creature * Theldanis ;
void Reset ()
2010-08-08 19:45:53 +02:00
{
2010-08-08 22:54:58 +06:00
m_uiChatTimer = 7000 ;
}
2011-07-03 00:28:03 +02:00
void JustSummoned ( Creature * summoned )
2010-05-01 00:19:04 +02:00
{
2011-07-03 00:28:03 +02:00
if ( summoned -> GetEntry () == NPC_GHOUL )
summoned -> AI () -> AttackStart ( me );
2010-08-08 22:54:58 +06:00
}
2010-08-08 19:45:53 +02:00
2010-08-08 22:54:58 +06:00
void WaypointReached ( uint32 i )
{
2011-07-02 22:52:42 +02:00
Player * player = GetPlayerForEscort ();
2010-08-08 22:54:58 +06:00
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 ;
2010-08-08 19:45:53 +02:00
case 14 :
2010-08-08 22:54:58 +06:00
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 );
2010-08-08 19:45:53 +02:00
case 21 :
2010-08-08 22:54:58 +06:00
Theldanis = GetClosestCreatureWithEntry ( me , NPC_THEL_DANIS , 150 );
DoScriptText ( SAY_WP_3 , Theldanis );
break ;
case 22 :
2010-08-08 19:45:53 +02:00
break ;
2010-08-08 22:54:58 +06:00
case 23 :
2011-04-29 20:47:02 +02:00
Ughost = me -> SummonCreature ( NPC_GHOST_UTHER , 971.86f , - 1825.42f , 81.99f , 0.0f , TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT , 30000 );
2010-08-08 22:54:58 +06:00
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 :
2011-07-02 22:52:42 +02:00
if ( player )
player -> GroupEventHappens ( QUEST_TOMB_LIGHTBRINGER , me );
2010-08-08 19:45:53 +02:00
break ;
2010-08-08 22:54:58 +06:00
}
2010-05-01 00:19:04 +02:00
}
2011-07-02 23:53:38 +02:00
void EnterCombat ( Unit * /*who*/ ){}
2010-05-01 00:19:04 +02:00
2011-07-02 23:58:05 +02:00
void JustDied ( Unit * /*killer*/ )
2010-08-08 22:54:58 +06:00
{
2011-07-02 22:52:42 +02:00
Player * player = GetPlayerForEscort ();
if ( player )
player -> FailQuest ( QUEST_TOMB_LIGHTBRINGER );
2010-08-08 22:54:58 +06:00
}
2010-05-01 00:19:04 +02:00
2010-08-08 22:54:58 +06:00
void UpdateAI ( const uint32 uiDiff )
{
npc_escortAI :: UpdateAI ( uiDiff );
DoMeleeAttackIfReady ();
if ( HasEscortState ( STATE_ESCORT_ESCORTING ))
m_uiChatTimer = 6000 ;
}
};
2010-05-01 00:19:04 +02:00
2010-08-08 22:54:58 +06:00
};
2010-05-01 00:19:04 +02:00
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 ()
{
2010-08-08 22:54:58 +06:00
new npcs_dithers_and_arbington ();
new npc_myranda_the_hag ();
new npc_the_scourge_cauldron ();
new npc_andorhal_tower ();
new npc_anchorite_truuen ();
2008-10-21 13:19:26 -05:00
}