fix(Scripts/Northrend): Last Rites [Quest 12019] (#8691)
This commit is contained in:
@@ -0,0 +1,102 @@
|
|||||||
|
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1634939032065262806');
|
||||||
|
|
||||||
|
-- *** Quest "Last rites" ***
|
||||||
|
|
||||||
|
-- Remove Quest SAI
|
||||||
|
UPDATE `creature_template` SET `AIName`='' WHERE `entry` IN (26170,26203,25301,25250,25251);
|
||||||
|
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (26170,26203,25301,25250,25251) AND `source_type`=0;
|
||||||
|
DELETE FROM `waypoints` WHERE `entry` IN (26170);
|
||||||
|
|
||||||
|
-- Add Gossip Option
|
||||||
|
DELETE FROM `gossip_menu_option` WHERE `MenuID`=9417;
|
||||||
|
INSERT INTO `gossip_menu_option` (`MenuID`,`OptionID`,`OptionIcon`,`OptionText`,`OptionBroadcastTextID`,`OptionType`,`OptionNpcFlag`,`ActionMenuID`,`ActionPoiID`,`BoxCoded`,`BoxMoney`,`BoxText`,`BoxBroadcastTextID`,`VerifiedBuild`) VALUES
|
||||||
|
(9417,0,0,"Let's do this, Thassarian. It's now or never.",25840,1,1,0,0,0,0,NULL,0,0);
|
||||||
|
|
||||||
|
-- Add Gossip Text
|
||||||
|
DELETE FROM `gossip_menu` WHERE `MenuID`=9417 AND `TextID`=12664;
|
||||||
|
INSERT INTO `gossip_menu` (`MenuID`,`TextID`) VALUES
|
||||||
|
(9417,12664);
|
||||||
|
|
||||||
|
-- Condition for source Gossip menu condition type Area id
|
||||||
|
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=14 AND `SourceGroup`=9417 AND `SourceEntry` IN (12663,12664) AND `SourceId`=0;
|
||||||
|
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||||
|
(14, 9417, 12663, 0, 0, 23, 0, 4126, 0, 0, 0, 0, 0, '', 'Show gossip menu 9417 text id 12663 if target area is The Wailing Ziggurat.'),
|
||||||
|
(14, 9417, 12664, 0, 0, 23, 0, 4128, 0, 0, 0, 0, 0, '', 'Show gossip menu 9417 text id 12664 if target area is Naxxanar.');
|
||||||
|
|
||||||
|
-- Condition for source Gossip menu option condition type Quest taken
|
||||||
|
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=9417 AND `SourceEntry`=0 AND `SourceId`=0;
|
||||||
|
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||||
|
(15, 9417, 0, 0, 0, 9, 0, 12019, 0, 0, 0, 0, 0, '', 'Show gossip menu 9417 option id 0 if quest Last Rites has been taken.'),
|
||||||
|
(15, 9417, 0, 0, 0, 23, 0, 4128, 0, 0, 0, 0, 0, '', 'Show gossip menu 9417 option id 0 if target area is Naxxanar.');
|
||||||
|
|
||||||
|
-- Pathing for Thassarian entry 26170 Quest script for "Last Rites"
|
||||||
|
SET @PATH := 1013030;
|
||||||
|
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||||
|
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||||
|
(@PATH,1,3700.08,3574.54,473.322,0,0,0,100,0),
|
||||||
|
(@PATH,2,3705.94,3573.63,476.841,0,0,0,100,0),
|
||||||
|
(@PATH,3,3714.32,3572.3,477.442,0,0,0,100,0);
|
||||||
|
|
||||||
|
-- Pathing for Arthas entry 26203 Quest script for "Last Rites"
|
||||||
|
SET @PATH := 1013031;
|
||||||
|
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||||
|
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||||
|
(@PATH,1,3733.2195,3538.1602,477.44214,0,0,0,100,0),
|
||||||
|
(@PATH,2,3736.5,3556.1494,477.44086,0,0,0,100,0),
|
||||||
|
(@PATH,3,3737.5398,3565.2202,477.44086,0,0,0,100,0);
|
||||||
|
|
||||||
|
-- Pathing for Talbot entry 25301 Quest script for "Last Rites"
|
||||||
|
SET @PATH := 1013032;
|
||||||
|
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||||
|
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||||
|
(@PATH,1,3746.96,3607.5063,473.32144,0,0,0,100,0),
|
||||||
|
(@PATH,2,3742.525,3586.4636,477.44086,0,0,0,100,0),
|
||||||
|
(@PATH,3,3738.237,3570.3462,477.44086,0,0,0,100,0);
|
||||||
|
|
||||||
|
-- Pathing for Arlos entry 25250 Quest script for "Last Rites"
|
||||||
|
SET @PATH := 1013033;
|
||||||
|
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||||
|
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||||
|
(@PATH,1,3742.4668,3598.8833,477.44287,0,0,0,100,0),
|
||||||
|
(@PATH,2,3739.2288,3587.0754,477.44086,0,0,0,100,0),
|
||||||
|
(@PATH,3,3735.5718,3572.422,477.44086,0,0,0,100,0);
|
||||||
|
|
||||||
|
-- Pathing for Leryssa entry 25251 Quest script for "Last Rites"
|
||||||
|
SET @PATH := 1013034;
|
||||||
|
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||||
|
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||||
|
(@PATH,1,3750.0989,3603.0605,474.0086,0,0,0,100,0),
|
||||||
|
(@PATH,2,3747.6187,3591.2925,477.44186,0,0,0,100,0),
|
||||||
|
(@PATH,3,3741.9653,3571.4446,477.44086,0,0,0,100,0);
|
||||||
|
|
||||||
|
-- Add scriptnames
|
||||||
|
UPDATE `creature_template` SET `ScriptName`='npc_leryssa' WHERE `entry`=25251;
|
||||||
|
UPDATE `creature_template` SET `ScriptName`='npc_counselor_talbot' WHERE `entry`=25301;
|
||||||
|
UPDATE `creature` SET `ScriptName`='npc_thassarian' WHERE `guid`=101136;
|
||||||
|
UPDATE `creature` SET `ScriptName`='npc_thassarian2' WHERE `guid`=101303;
|
||||||
|
|
||||||
|
-- Image of the Lich King flags were wrong
|
||||||
|
UPDATE `creature_template` SET `unit_flags`=768 WHERE `entry`=26203;
|
||||||
|
|
||||||
|
-- Prince Valanar fix class and expansion and add missing loot
|
||||||
|
UPDATE `creature_template` SET `exp`=2, `unit_class`=8, `lootid`=28189,`mingold`=3000, `maxgold`=6500 WHERE `entry`=28189;
|
||||||
|
|
||||||
|
-- Prince Valanar loot "Just an educated guess after watching several videos"
|
||||||
|
DELETE FROM `creature_loot_template` WHERE `entry`=28189;
|
||||||
|
INSERT INTO `creature_loot_template` (`Entry`,`Item`,`Reference`,`Chance`,`QuestRequired`,`LootMode`,`GroupId`,`MinCount`,`MaxCount`,`Comment`) VALUES
|
||||||
|
(28189, 33373, 0, 10, 0, 1, 1, 1, 1, 'Fur-lined-belt'),
|
||||||
|
(28189, 33374, 0, 10, 0, 1, 1, 1, 1, 'Fur-lined-boots'),
|
||||||
|
(28189, 33375, 0, 10, 0, 1, 1, 1, 1, 'Fur-lined-bracers'),
|
||||||
|
(28189, 33376, 0, 10, 0, 1, 1, 1, 1, 'Fur-lined-gloves'),
|
||||||
|
(28189, 33377, 0, 10, 0, 1, 1, 1, 1, 'Fur-lined-pants'),
|
||||||
|
(28189, 33470, 0, 50, 0, 1, 2, 1, 3, 'Frostweave Cloth');
|
||||||
|
|
||||||
|
-- creature Thassarian kill should not give XP
|
||||||
|
UPDATE `creature_template` SET `flags_extra`=64 WHERE `entry`=26170;
|
||||||
|
-- High Deathpriest Isidorus should constantly play beg emote
|
||||||
|
UPDATE `creature_addon` SET `emote`=20 WHERE `guid`=101355;
|
||||||
|
|
||||||
|
-- Condition for source Spell implicit target condition type Object entry guid
|
||||||
|
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=46685;
|
||||||
|
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||||
|
(13, 1, 46685, 0, 0, 31, 0, 3, 26173, 0, 0, 0, 0, '', 'Spell Borean Tundra - Quest - Thassarian Flay (effect 0) will hit the potential target of the spell if target is unit Tanathal.');
|
||||||
@@ -1428,10 +1428,670 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*######
|
||||||
|
## Quest 12019: Last Rites
|
||||||
|
######*/
|
||||||
|
|
||||||
|
// NPC 26170: Thassarian
|
||||||
|
enum Thassarian
|
||||||
|
{
|
||||||
|
EVENT_THASSARIAN_SCRIPT_1 = 1,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_2 = 2,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_3 = 3,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_4 = 4,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_5 = 5,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_6 = 6,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_7 = 7,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_8 = 8,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_9 = 9,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_10 = 10,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_11 = 11,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_12 = 12,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_13 = 13,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_14 = 14,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_15 = 15,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_16 = 16,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_17 = 17,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_18 = 18,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_19 = 19,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_20 = 20,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_21 = 21,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_22 = 22,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_23 = 23,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_24 = 24,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_25 = 25,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_26 = 26,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_27 = 27,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_28 = 28,
|
||||||
|
EVENT_THASSARIAN_SCRIPT_29 = 29,
|
||||||
|
EVENT_THASSARIAN_CAST = 30,
|
||||||
|
FACTION_UNDEAD_SCOURGE = 974,
|
||||||
|
FACTION_VALIANCE_EXPEDITION_7 = 1974,
|
||||||
|
FACTION_UNDEAD_SCOURGE_9 = 1988,
|
||||||
|
NPC_IMAGE_LICH_KING = 26203,
|
||||||
|
NPC_COUNSELOR_TALBOT = 25301,
|
||||||
|
NPC_PRINCE_VALANAR = 28189,
|
||||||
|
NPC_GENERAL_ARLOS = 25250,
|
||||||
|
NPC_LERYSSA = 25251,
|
||||||
|
NPC_TANATHAL = 26173,
|
||||||
|
SPELL_THASSARIAN_FLAY = 46685,
|
||||||
|
SPELL_TRANSFORM_VALANAR = 46753,
|
||||||
|
SPELL_BLOOD_PRESENCE = 50995,
|
||||||
|
SAY_THASSARIAN_1 = 0,
|
||||||
|
SAY_THASSARIAN_2 = 1,
|
||||||
|
SAY_THASSARIAN_3 = 2,
|
||||||
|
SAY_THASSARIAN_4 = 3,
|
||||||
|
SAY_THASSARIAN_5 = 4,
|
||||||
|
SAY_THASSARIAN_6 = 5,
|
||||||
|
SAY_THASSARIAN_7 = 6,
|
||||||
|
SAY_TALBOT_1 = 0,
|
||||||
|
SAY_TALBOT_2 = 1,
|
||||||
|
SAY_TALBOT_3 = 2,
|
||||||
|
SAY_TALBOT_4 = 3,
|
||||||
|
SAY_LICH_1 = 0,
|
||||||
|
SAY_LICH_2 = 1,
|
||||||
|
SAY_LICH_3 = 2,
|
||||||
|
SAY_ARLOS_1 = 0,
|
||||||
|
SAY_ARLOS_2 = 1,
|
||||||
|
SAY_LERYSSA_1 = 0,
|
||||||
|
SAY_LERYSSA_2 = 1,
|
||||||
|
SAY_LERYSSA_3 = 2,
|
||||||
|
SAY_LERYSSA_4 = 3,
|
||||||
|
PATH_THASSARIAN = 1013030,
|
||||||
|
PATH_ARTHAS = 1013031,
|
||||||
|
PATH_TALBOT = 1013032,
|
||||||
|
PATH_ARLOS = 1013033,
|
||||||
|
PATH_LERYSSA = 1013034
|
||||||
|
};
|
||||||
|
|
||||||
|
class npc_thassarian : public CreatureScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
npc_thassarian() : CreatureScript("npc_thassarian") {}
|
||||||
|
|
||||||
|
struct npc_thassarianAI : public ScriptedAI
|
||||||
|
{
|
||||||
|
npc_thassarianAI(Creature* creature) : ScriptedAI(creature){}
|
||||||
|
|
||||||
|
void Reset() override
|
||||||
|
{
|
||||||
|
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_CAST, 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateAI(uint32 diff) override
|
||||||
|
{
|
||||||
|
_events.Update(diff);
|
||||||
|
|
||||||
|
if (uint32 eventId = _events.ExecuteEvent())
|
||||||
|
{
|
||||||
|
switch (eventId)
|
||||||
|
{
|
||||||
|
case EVENT_THASSARIAN_CAST:
|
||||||
|
{
|
||||||
|
if (Unit* tanathal = me->FindNearestCreature(NPC_TANATHAL, 10.0f))
|
||||||
|
{
|
||||||
|
me->CastSpell(tanathal, SPELL_THASSARIAN_FLAY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
EventMap _events;
|
||||||
|
};
|
||||||
|
|
||||||
|
CreatureAI* GetAI(Creature* creature) const override
|
||||||
|
{
|
||||||
|
return new npc_thassarianAI(creature);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class npc_thassarian2 : public CreatureScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
npc_thassarian2() : CreatureScript("npc_thassarian2") {}
|
||||||
|
|
||||||
|
struct npc_thassarian2AI : public ScriptedAI
|
||||||
|
{
|
||||||
|
npc_thassarian2AI(Creature* creature) : ScriptedAI(creature)
|
||||||
|
{
|
||||||
|
Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Initialize()
|
||||||
|
{
|
||||||
|
_arthasGUID.Clear();
|
||||||
|
_talbotGUID.Clear();
|
||||||
|
_leryssaGUID.Clear();
|
||||||
|
_arlosGUID.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Reset() override
|
||||||
|
{
|
||||||
|
me->setFaction(FACTION_VALIANCE_EXPEDITION_7);
|
||||||
|
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||||
|
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||||
|
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
|
||||||
|
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||||
|
Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetData(uint32 /*type*/, uint32 data) override
|
||||||
|
{
|
||||||
|
switch (data)
|
||||||
|
{
|
||||||
|
case NPC_LERYSSA:
|
||||||
|
{
|
||||||
|
if (Creature* arlos = ObjectAccessor::GetCreature(*me, _arlosGUID))
|
||||||
|
{
|
||||||
|
arlos->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_STUN);
|
||||||
|
}
|
||||||
|
if (Creature* leryssa = ObjectAccessor::GetCreature(*me, _leryssaGUID))
|
||||||
|
{
|
||||||
|
leryssa->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_STUN);
|
||||||
|
leryssa->SetOrientation(4.537856f);
|
||||||
|
}
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_8, 1000);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case NPC_COUNSELOR_TALBOT:
|
||||||
|
{
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_18, 0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MovementInform(uint32 type, uint32 param) override
|
||||||
|
{
|
||||||
|
if (type == WAYPOINT_MOTION_TYPE && param == 2)
|
||||||
|
{
|
||||||
|
me->SetWalk(false);
|
||||||
|
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY1H);
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_1, 2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateAI(uint32 diff) override
|
||||||
|
{
|
||||||
|
_events.Update(diff);
|
||||||
|
|
||||||
|
if (uint32 eventId = _events.ExecuteEvent())
|
||||||
|
{
|
||||||
|
switch (eventId)
|
||||||
|
{
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_1:
|
||||||
|
// Summon Arthas and Talbot
|
||||||
|
if (Creature* arthas = me->SummonCreature(NPC_IMAGE_LICH_KING, 3729.4614f, 3520.386f, 473.4048f, 1.361f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 120000))
|
||||||
|
{
|
||||||
|
_arthasGUID = arthas->GetGUID();
|
||||||
|
arthas->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||||
|
arthas->SetReactState(REACT_PASSIVE);
|
||||||
|
arthas->SetWalk(true);
|
||||||
|
}
|
||||||
|
if (Creature* talbot = me->SummonCreature(NPC_COUNSELOR_TALBOT, 3748.7627f, 3614.0374f, 473.4048f, 4.5553f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 120000))
|
||||||
|
{
|
||||||
|
_talbotGUID = talbot->GetGUID();
|
||||||
|
talbot->SetWalk(true);
|
||||||
|
}
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_2, 1000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_2:
|
||||||
|
// Arthas load path
|
||||||
|
if (Creature* arthas = ObjectAccessor::GetCreature(*me, _arthasGUID))
|
||||||
|
{
|
||||||
|
arthas->GetMotionMaster()->MovePath(PATH_ARTHAS, false);
|
||||||
|
}
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_3, 1000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_3:
|
||||||
|
// Talbot load path
|
||||||
|
if (Creature* talbot = ObjectAccessor::GetCreature(*me, _talbotGUID))
|
||||||
|
{
|
||||||
|
talbot->GetMotionMaster()->MovePath(PATH_TALBOT, false);
|
||||||
|
}
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_4, 20000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_4:
|
||||||
|
// Talbot transform and knell
|
||||||
|
if (Creature* talbot = ObjectAccessor::GetCreature(*me, _talbotGUID))
|
||||||
|
{
|
||||||
|
talbot->CastSpell(talbot, SPELL_TRANSFORM_VALANAR);
|
||||||
|
talbot->UpdateEntry(NPC_PRINCE_VALANAR);
|
||||||
|
talbot->SetFullHealth();
|
||||||
|
talbot->setFaction(FACTION_UNDEAD_SCOURGE);
|
||||||
|
talbot->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||||
|
talbot->SetReactState(REACT_PASSIVE);
|
||||||
|
talbot->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||||
|
}
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_5, 7000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_5:
|
||||||
|
// Talbot say text 1
|
||||||
|
if (Creature* talbot = ObjectAccessor::GetCreature(*me, _talbotGUID))
|
||||||
|
{
|
||||||
|
talbot->AI()->Talk(SAY_TALBOT_1);
|
||||||
|
}
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_6, 9000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_6:
|
||||||
|
// Summon General Arlos and Leryssa
|
||||||
|
if (Creature* arlos = me->SummonCreature(NPC_GENERAL_ARLOS, 3746.2825f, 3616.3699f, 473.4048f, 4.5029f, TEMPSUMMON_CORPSE_TIMED_DESPAWN))
|
||||||
|
{
|
||||||
|
_arlosGUID = arlos->GetGUID();
|
||||||
|
arlos->SetWalk(true);
|
||||||
|
arlos->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
|
arlos->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
|
||||||
|
arlos->GetMotionMaster()->MovePath(PATH_ARLOS, false);
|
||||||
|
}
|
||||||
|
if (Creature* leryssa = me->SummonCreature(NPC_LERYSSA, 3751.0986f, 3614.9219f, 473.4048f, 4.5029f, TEMPSUMMON_CORPSE_TIMED_DESPAWN))
|
||||||
|
{
|
||||||
|
_leryssaGUID = leryssa->GetGUID();
|
||||||
|
leryssa->SetWalk(true);
|
||||||
|
leryssa->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
|
leryssa->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
|
||||||
|
leryssa->GetMotionMaster()->MovePath(PATH_LERYSSA, false);
|
||||||
|
}
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_7, 7000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_7:
|
||||||
|
// Talbot say text 2
|
||||||
|
if (Creature* talbot = ObjectAccessor::GetCreature(*me, _talbotGUID))
|
||||||
|
{
|
||||||
|
talbot->AI()->Talk(SAY_TALBOT_2);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_8:
|
||||||
|
// Thassarian say text 1 and move to location
|
||||||
|
Talk(SAY_THASSARIAN_1);
|
||||||
|
me->SetWalk(false);
|
||||||
|
me->GetMotionMaster()->MovePoint(0, 3722.527f, 3567.2583f, 477.44086f);
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_9, 7000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_9:
|
||||||
|
// Thassarian say text 2
|
||||||
|
Talk(SAY_THASSARIAN_2);
|
||||||
|
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation());
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_10, 6000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_10:
|
||||||
|
// Arthas turn to Thassarian and Talbot stand
|
||||||
|
if (Creature* arthas = ObjectAccessor::GetCreature(*me, _arthasGUID))
|
||||||
|
{
|
||||||
|
arthas->SetFacingToObject(me);
|
||||||
|
}
|
||||||
|
if (Creature* talbot = ObjectAccessor::GetCreature(*me, _talbotGUID))
|
||||||
|
{
|
||||||
|
talbot->SetStandState(UNIT_STAND_STATE_STAND);
|
||||||
|
}
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_11, 4000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_11:
|
||||||
|
// Arthas say text 2
|
||||||
|
if (Creature* arthas = ObjectAccessor::GetCreature(*me, _arthasGUID))
|
||||||
|
{
|
||||||
|
arthas->AI()->Talk(SAY_LICH_2);
|
||||||
|
}
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_12, 18000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_12:
|
||||||
|
// Thassarian say text 3
|
||||||
|
Talk(SAY_THASSARIAN_3);
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_13, 10000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_13:
|
||||||
|
// Talbot say text 3
|
||||||
|
if (Creature* talbot = ObjectAccessor::GetCreature(*me, _talbotGUID))
|
||||||
|
{
|
||||||
|
talbot->AI()->Talk(SAY_TALBOT_3);
|
||||||
|
}
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_14, 5000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_14:
|
||||||
|
// Arthas turn to Talbot say text 3
|
||||||
|
if (Creature* arthas = ObjectAccessor::GetCreature(*me, _arthasGUID))
|
||||||
|
{
|
||||||
|
if (Creature* talbot = ObjectAccessor::GetCreature(*me, _talbotGUID))
|
||||||
|
{
|
||||||
|
arthas->SetFacingToObject(talbot);
|
||||||
|
}
|
||||||
|
arthas->AI()->Talk(SAY_LICH_3);
|
||||||
|
}
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_15, 5000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_15:
|
||||||
|
// Arthas turn to me and emote
|
||||||
|
if (Creature* arthas = ObjectAccessor::GetCreature(*me, _arthasGUID))
|
||||||
|
{
|
||||||
|
arthas->SetFacingToObject(me);
|
||||||
|
arthas->HandleEmoteCommand(EMOTE_ONESHOT_POINT);
|
||||||
|
}
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_16, 5000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_16:
|
||||||
|
// Arthas despawn
|
||||||
|
if (Creature* arthas = ObjectAccessor::GetCreature(*me, _arthasGUID))
|
||||||
|
{
|
||||||
|
arthas->RemoveFromWorld();
|
||||||
|
}
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_17, 3000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_17:
|
||||||
|
// Talbot say text 4 and attack
|
||||||
|
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||||
|
if (Creature* talbot = ObjectAccessor::GetCreature(*me, _talbotGUID))
|
||||||
|
{
|
||||||
|
talbot->AI()->Talk(SAY_TALBOT_4);
|
||||||
|
talbot->setFaction(FACTION_UNDEAD_SCOURGE_9);
|
||||||
|
talbot->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||||
|
talbot->SetReactState(REACT_AGGRESSIVE);
|
||||||
|
talbot->Attack(me, false);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_18:
|
||||||
|
// Arlos say text 1
|
||||||
|
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY1H);
|
||||||
|
if (Creature* arlos = ObjectAccessor::GetCreature(*me, _arlosGUID))
|
||||||
|
{
|
||||||
|
arlos->AI()->Talk(SAY_ARLOS_1);
|
||||||
|
arlos->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);
|
||||||
|
arlos->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||||
|
}
|
||||||
|
if (Creature* leryssa = ObjectAccessor::GetCreature(*me, _leryssaGUID))
|
||||||
|
{
|
||||||
|
leryssa->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);
|
||||||
|
}
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_19, 3000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_19:
|
||||||
|
// Leryssa set facing to me
|
||||||
|
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||||
|
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
|
||||||
|
if (Creature* leryssa = me->FindNearestCreature(NPC_LERYSSA, 50.0f, true))
|
||||||
|
{
|
||||||
|
_leryssaGUID = leryssa->GetGUID();
|
||||||
|
leryssa->SetFacingToObject(me);
|
||||||
|
me->SetFacingToObject(leryssa);
|
||||||
|
}
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_20, 3000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_20:
|
||||||
|
// Arlos say text 2 and die. Leryssa say text 1
|
||||||
|
if (Creature* arlos = me->FindNearestCreature(NPC_GENERAL_ARLOS, 50.0f, true))
|
||||||
|
{
|
||||||
|
_arlosGUID = arlos->GetGUID();
|
||||||
|
arlos->AI()->Talk(SAY_ARLOS_2);
|
||||||
|
arlos->SetStandState(UNIT_STAND_STATE_DEAD);
|
||||||
|
}
|
||||||
|
if (Creature* leryssa = ObjectAccessor::GetCreature(*me, _leryssaGUID))
|
||||||
|
{
|
||||||
|
leryssa->AI()->Talk(SAY_LERYSSA_1);
|
||||||
|
}
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_21, 5000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_21:
|
||||||
|
// Thassarian say text 4
|
||||||
|
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||||
|
Talk(SAY_THASSARIAN_4);
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_22, 3000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_22:
|
||||||
|
// Leryssa run to Thassarian
|
||||||
|
if (Creature* leryssa = ObjectAccessor::GetCreature(*me, _leryssaGUID))
|
||||||
|
{
|
||||||
|
leryssa->SetWalk(false);
|
||||||
|
leryssa->MonsterMoveWithSpeed(3726.751f, 3568.1633f, 477.44086f, leryssa->GetSpeed(MOVE_RUN));
|
||||||
|
}
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_23, 2000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_23:
|
||||||
|
// Leryssa say text 2
|
||||||
|
if (Creature* leryssa = ObjectAccessor::GetCreature(*me, _leryssaGUID))
|
||||||
|
{
|
||||||
|
leryssa->AI()->Talk(SAY_LERYSSA_2);
|
||||||
|
leryssa->SetStandState(UNIT_STAND_STATE_SIT);
|
||||||
|
}
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_24, 5000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_24:
|
||||||
|
// Thassarian say text 5
|
||||||
|
Talk(SAY_THASSARIAN_5);
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_25, 10000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_25:
|
||||||
|
// Leryssa say text 3
|
||||||
|
if (Creature* leryssa = ObjectAccessor::GetCreature(*me, _leryssaGUID))
|
||||||
|
{
|
||||||
|
leryssa->AI()->Talk(SAY_LERYSSA_3);
|
||||||
|
}
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_26, 12000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_26:
|
||||||
|
// Thassarian say text 6
|
||||||
|
Talk(SAY_THASSARIAN_6);
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_27, 11000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_27:
|
||||||
|
// Leryssa say text 4
|
||||||
|
if (Creature* leryssa = ObjectAccessor::GetCreature(*me, _leryssaGUID))
|
||||||
|
{
|
||||||
|
leryssa->AI()->Talk(SAY_LERYSSA_4);
|
||||||
|
}
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_28, 12000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_28:
|
||||||
|
// Thassarian say text 7
|
||||||
|
Talk(SAY_THASSARIAN_7);
|
||||||
|
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_29, 35000);
|
||||||
|
break;
|
||||||
|
case EVENT_THASSARIAN_SCRIPT_29:
|
||||||
|
Cleanup();
|
||||||
|
me->DespawnOrUnsummon(30000ms, 120s);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!UpdateVictim())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
DoMeleeAttackIfReady();
|
||||||
|
}
|
||||||
|
|
||||||
|
void JustDied(Unit* /*killer*/) override
|
||||||
|
{
|
||||||
|
Cleanup();
|
||||||
|
me->DespawnOrUnsummon(1000ms, 120s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Cleanup()
|
||||||
|
{
|
||||||
|
if (Creature* talbot = ObjectAccessor::GetCreature(*me, _talbotGUID))
|
||||||
|
{
|
||||||
|
talbot->RemoveFromWorld();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Creature* leryssa = ObjectAccessor::GetCreature(*me, _leryssaGUID))
|
||||||
|
{
|
||||||
|
leryssa->RemoveFromWorld();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Creature* arlos = ObjectAccessor::GetCreature(*me, _arlosGUID))
|
||||||
|
{
|
||||||
|
arlos->RemoveFromWorld();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Creature* arthas = ObjectAccessor::GetCreature(*me, _arthasGUID))
|
||||||
|
{
|
||||||
|
arthas->RemoveFromWorld();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sGossipHello(Player* /*player*/) override
|
||||||
|
{
|
||||||
|
if (!me->HasAura(SPELL_BLOOD_PRESENCE))
|
||||||
|
{
|
||||||
|
DoCastSelf(SPELL_BLOOD_PRESENCE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sGossipSelect(Player* player, uint32 /*sender*/, uint32 action) override
|
||||||
|
{
|
||||||
|
if (action == 0)
|
||||||
|
{
|
||||||
|
_playerGUID = player->GetGUID();
|
||||||
|
CloseGossipMenuFor(player);
|
||||||
|
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||||
|
me->GetMotionMaster()->MovePath(PATH_THASSARIAN, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
EventMap _events;
|
||||||
|
ObjectGuid _playerGUID;
|
||||||
|
ObjectGuid _arthasGUID;
|
||||||
|
ObjectGuid _talbotGUID;
|
||||||
|
ObjectGuid _leryssaGUID;
|
||||||
|
ObjectGuid _arlosGUID;
|
||||||
|
};
|
||||||
|
|
||||||
|
CreatureAI* GetAI(Creature* creature) const override
|
||||||
|
{
|
||||||
|
return new npc_thassarian2AI(creature);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// NPC 25251: Leryssa
|
||||||
|
class npc_leryssa : public CreatureScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
npc_leryssa() : CreatureScript("npc_leryssa") {}
|
||||||
|
|
||||||
|
struct npc_leryssaAI : public ScriptedAI
|
||||||
|
{
|
||||||
|
npc_leryssaAI(Creature* creature) : ScriptedAI(creature) {}
|
||||||
|
|
||||||
|
void MovementInform(uint32 type, uint32 param) override
|
||||||
|
{
|
||||||
|
if (type == WAYPOINT_MOTION_TYPE && param == 2)
|
||||||
|
{
|
||||||
|
if (me->IsSummon())
|
||||||
|
{
|
||||||
|
if (Unit* summoner = me->ToTempSummon()->GetSummonerUnit())
|
||||||
|
{
|
||||||
|
summoner->ToCreature()->AI()->SetData(1, NPC_LERYSSA);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
CreatureAI* GetAI(Creature* creature) const override
|
||||||
|
{
|
||||||
|
return new npc_leryssaAI(creature);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// NPC 25301: Counselor Talbot
|
||||||
|
enum CounselorTalbot
|
||||||
|
{
|
||||||
|
AREA_LAST_RITES = 4128,
|
||||||
|
SPELL_DEFLECTION = 51009,
|
||||||
|
SPELL_SOUL_BLAST = 50992,
|
||||||
|
SPELL_VAMPIRIC_BOLT = 51016,
|
||||||
|
EVENT_DEFLECTION = 1,
|
||||||
|
EVENT_SOUL_BLAST = 2,
|
||||||
|
EVENT_VAMPIRIC_BOLT = 3
|
||||||
|
};
|
||||||
|
|
||||||
|
class npc_counselor_talbot : public CreatureScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
npc_counselor_talbot() : CreatureScript("npc_counselor_talbot") {}
|
||||||
|
|
||||||
|
struct npc_counselor_talbotAI : public ScriptedAI
|
||||||
|
{
|
||||||
|
npc_counselor_talbotAI(Creature* creature) : ScriptedAI(creature) {}
|
||||||
|
|
||||||
|
void Reset() override {}
|
||||||
|
|
||||||
|
void EnterCombat(Unit* /*who*/) override
|
||||||
|
{
|
||||||
|
_events.ScheduleEvent(EVENT_DEFLECTION, 10000, 20000);
|
||||||
|
_events.ScheduleEvent(EVENT_SOUL_BLAST, 4000, 6000);
|
||||||
|
_events.ScheduleEvent(EVENT_VAMPIRIC_BOLT, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateAI(uint32 diff) override
|
||||||
|
{
|
||||||
|
if (!UpdateVictim())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (me->GetAreaId() == AREA_LAST_RITES)
|
||||||
|
{
|
||||||
|
_events.Update(diff);
|
||||||
|
|
||||||
|
if (uint32 eventId = _events.ExecuteEvent())
|
||||||
|
{
|
||||||
|
switch (eventId)
|
||||||
|
{
|
||||||
|
case EVENT_DEFLECTION:
|
||||||
|
DoCastSelf(SPELL_DEFLECTION);
|
||||||
|
_events.ScheduleEvent(EVENT_DEFLECTION, 10000, 20000);
|
||||||
|
break;
|
||||||
|
case EVENT_SOUL_BLAST:
|
||||||
|
DoCastVictim(SPELL_SOUL_BLAST);
|
||||||
|
_events.ScheduleEvent(EVENT_SOUL_BLAST, 4000, 6000);
|
||||||
|
break;
|
||||||
|
case EVENT_VAMPIRIC_BOLT:
|
||||||
|
DoCastVictim(SPELL_VAMPIRIC_BOLT);
|
||||||
|
_events.ScheduleEvent(EVENT_VAMPIRIC_BOLT, 3000, 4000);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DoMeleeAttackIfReady();
|
||||||
|
}
|
||||||
|
|
||||||
|
void JustDied(Unit* /*killer*/) override
|
||||||
|
{
|
||||||
|
if (me->IsSummon())
|
||||||
|
{
|
||||||
|
if (Unit* summoner = me->ToTempSummon()->GetSummonerUnit())
|
||||||
|
{
|
||||||
|
summoner->ToCreature()->AI()->SetData(1, NPC_COUNSELOR_TALBOT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
EventMap _events;
|
||||||
|
};
|
||||||
|
|
||||||
|
CreatureAI* GetAI(Creature* creature) const override
|
||||||
|
{
|
||||||
|
return new npc_counselor_talbotAI(creature);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
void AddSC_borean_tundra()
|
void AddSC_borean_tundra()
|
||||||
{
|
{
|
||||||
// Ours
|
// Ours
|
||||||
new spell_q11919_q11940_drake_hunt();
|
new spell_q11919_q11940_drake_hunt();
|
||||||
|
new npc_thassarian();
|
||||||
|
new npc_thassarian2();
|
||||||
|
new npc_leryssa();
|
||||||
|
new npc_counselor_talbot();
|
||||||
|
|
||||||
// Theirs
|
// Theirs
|
||||||
new npc_sinkhole_kill_credit();
|
new npc_sinkhole_kill_credit();
|
||||||
|
|||||||
Reference in New Issue
Block a user