mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-19 00:48:56 +01:00
Core/Quests: updated and fixed quest 176 'Wanted: "Hogger' for Cataclysm
This commit is contained in:
106
sql/updates/world/4.3.4/2017_11_14_00_world.sql
Normal file
106
sql/updates/world/4.3.4/2017_11_14_00_world.sql
Normal file
@@ -0,0 +1,106 @@
|
||||
DELETE FROM `creature` WHERE `guid` IN (280330, 280327, 280328, 280329, 280331);
|
||||
DELETE FROM `creature_addon` WHERE `guid` IN (280330, 280327, 280328, 280329, 280331);
|
||||
|
||||
UPDATE `creature_template` SET `AIName`= '', `scriptname`= 'npc_hogger' WHERE `entry`= 448;
|
||||
|
||||
UPDATE `creature_template_addon` SET `mount`= 2410 WHERE `entry`= 46942;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`= 448;
|
||||
UPDATE `creature` SET `MovementType`= 0, `SpawnDist`= 0 WHERE `guid`= 280348;
|
||||
|
||||
DELETE FROM `creature_text` WHERE `CreatureID` IN (448, 46943, 46942);
|
||||
INSERT INTO `creature_text` (`CreatureID`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `BroadcastTextId`, `comment`) VALUES
|
||||
(448, 0, 0, 'Yipe! Help Hogger!', 14, 0, 100, 0, 0, 0, 46936, 'Hogger'),
|
||||
(448, 1, 0, 'Hogger is eating! Stop him!', 41, 0, 100, 0, 0, 0, 46939, 'Hogger'),
|
||||
(448, 2, 0, 'Hogger is stunned!', 41, 0, 100, 0, 0, 0, 46940, 'Hogger to Hogger'),
|
||||
(448, 3, 0, 'No hurt Hogger!', 14, 0, 100, 0, 0, 0, 47000, 'Hogger'),
|
||||
(448, 4, 0, 'Grrr...', 12, 0, 100, 0, 0, 0, 46937, 'Hogger to Hogger'),
|
||||
(448, 5, 0, 'Nooooo...', 12, 0, 100, 0, 0, 0, 46938, 'Hogger to Hogger'),
|
||||
(46943, 0, 0, 'General Marcus Jonathan!', 12, 0, 100, 0, 0, 0, 0, 'Ragamuffin to Hogger'),
|
||||
(46943, 1, 0, 'Wow!', 12, 0, 100, 0, 0, 0, 47006, 'Ragamuffin to Hogger'),
|
||||
(46942, 0, 0, 'Hold your blade, adventurer!', 14, 0, 100, 25, 0, 0, 47004, 'General Hammond Clay to Hogger'),
|
||||
(46942, 1, 0, 'This beast leads the Riverpaw gnoll gang and may be the key to ending gnoll aggression in Elwynn.', 12, 0, 100, 25, 0, 0, 47007, 'General Hammond Clay to Hogger'),
|
||||
(46942, 2, 0, 'We''re taking him into custody in the name of King Varian Wrynn.', 12, 0, 100, 25, 0, 0, 47008, 'General Hammond Clay to Hogger'),
|
||||
(46942, 3, 0, 'Take us to the Stockades, Andromath.', 12, 0, 100, 25, 0, 0, 47009, 'General Hammond Clay to Hogger');
|
||||
|
||||
|
||||
DELETE FROM `creature_summon_groups` WHERE `summonerId`= 448 AND `summonerType`= 0;
|
||||
INSERT INTO `creature_summon_groups` (`summonerId`, `summonerType`, `groupId`, `entry`, `position_x`, `position_y`, `position_z`, `orientation`, `summonType`) VALUES
|
||||
(448, 0, 0, 46942, -10128.3, 656.465, 36.05443, 2.045435, 8),
|
||||
(448, 0, 0, 46941, -10123, 656.875, 36.05113, 1.971813, 8),
|
||||
(448, 0, 0, 46940, -10132.9, 653.561, 36.05033, 2.0209991, 8);
|
||||
|
||||
-- Creature General Marcus Jonathan 46942 SAI
|
||||
SET @ENTRY := 46942;
|
||||
UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`= @ENTRY;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(@ENTRY, 0, 0, 1, 1, 0, 100, 1, 1, 1, 0, 0, 11, 64195, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "When out of combat and timer at the begining between 1 and 1 ms (and later repeats every 0 and 0 ms) - Self: Cast spell 64195 on Self // "),
|
||||
(@ENTRY, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, " Linked - None: Talk 0 // "),
|
||||
(@ENTRY, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, " Linked - Self: Set walk // "),
|
||||
(@ENTRY, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10131.2, 662.197, 36.0578, 0, " Linked - Self: Move to None (point id 0) // "),
|
||||
(@ENTRY, 0, 4, 0, 1, 0, 100, 1, 4000, 4000, 0, 0, 12, 46943, 8, 0, 0, 0, 0, 8, 0, 0, 0, -10122.5, 660.198, 36.0366, 2.83775, "When out of combat and timer at the begining between 4000 and 4000 ms (and later repeats every 0 and 0 ms) - Self: Summon creature Ragamuffin (46943) at (-10122.5, 660.198, 36.0366, 2.83775) // "),
|
||||
(@ENTRY, 0, 5, 0, 1, 0, 100, 1, 4100, 4100, 0, 0, 12, 46943, 8, 0, 0, 0, 0, 8, 0, 0, 0, -10130.9, 653.302, 36.0501, 1.65242, "When out of combat and timer at the begining between 4100 and 4100 ms (and later repeats every 0 and 0 ms) - Self: Summon creature Ragamuffin (46943) at (-10130.9, 653.302, 36.0501, 1.65242) // "),
|
||||
(@ENTRY, 0, 6, 0, 1, 0, 100, 1, 7000, 7000, 0, 0, 43, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "When out of combat and timer at the begining between 7000 and 7000 ms (and later repeats every 0 and 0 ms) - Self: Dismount // "),
|
||||
(@ENTRY, 0, 7, 0, 1, 0, 100, 1, 8000, 8000, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10135.7, 668.389, 36.0412, 0, "When out of combat and timer at the begining between 8000 and 8000 ms (and later repeats every 0 and 0 ms) - Self: Move to None (point id 0) // "),
|
||||
(@ENTRY, 0, 8, 0, 1, 0, 100, 1, 16000, 16000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "When out of combat and timer at the begining between 16000 and 16000 ms (and later repeats every 0 and 0 ms) - None: Talk 1 // "),
|
||||
(@ENTRY, 0, 9, 0, 1, 0, 100, 1, 22000, 22000, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "When out of combat and timer at the begining between 22000 and 22000 ms (and later repeats every 0 and 0 ms) - None: Talk 2 // "),
|
||||
(@ENTRY, 0, 10, 0, 1, 0, 100, 0, 30000, 30000, 0, 0, 66, 0, 0, 0, 0, 0, 0, 11, 46941, 30, 0, 0, 0, 0, 0, "When out of combat and timer at the begining between 30000 and 30000 ms (and later repeats every 0 and 0 ms) - Self: Look at Creature High Sorcerer Andromath (46941) in 30 yd // "),
|
||||
(@ENTRY, 0, 11, 0, 1, 0, 100, 0, 31000, 31000, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "When out of combat and timer at the begining between 31000 and 31000 ms (and later repeats every 0 and 0 ms) - None: Talk 3 // "),
|
||||
(@ENTRY, 0, 12, 13, 1, 0, 100, 1, 34000, 34000, 0, 0, 11, 87459, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "When out of combat and timer at the begining between 34000 and 34000 ms (and later repeats every 0 and 0 ms) - Self: Cast spell 87459 on Self // "),
|
||||
(@ENTRY, 0, 13, 0, 61, 0, 100, 0, 0, 0, 0, 0, 41, 2000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, " Linked - Self: Despawn in 2000 ms // ");
|
||||
|
||||
-- Creature High Sorcerer Andromath 46941 SAI
|
||||
SET @ENTRY := 46941;
|
||||
UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`= @ENTRY;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(@ENTRY, 0, 0, 0, 1, 0, 100, 1, 1, 1, 0, 0, 11, 64195, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "When out of combat and timer at the begining between 1 and 1 ms (and later repeats every 0 and 0 ms) - Self: Cast spell 64195 on Self // "),
|
||||
(@ENTRY, 0, 1, 0, 1, 0, 100, 1, 4000, 4000, 0, 0, 66, 0, 0, 0, 0, 0, 0, 11, 448, 30, 0, 0, 0, 0, 0, "When out of combat and timer at the begining between 4000 and 4000 ms (and later repeats every 0 and 0 ms) - Self: Look at Creature Hogger (448) in 30 yd // "),
|
||||
(@ENTRY, 0, 2, 3, 1, 0, 100, 1, 34000, 34000, 0, 0, 11, 64446, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "When out of combat and timer at the begining between 34000 and 34000 ms (and later repeats every 0 and 0 ms) - Self: Cast spell 64446 on Self // "),
|
||||
(@ENTRY, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 41, 2000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, " Linked - Self: Despawn in 2000 ms // ");
|
||||
|
||||
-- Creature Maginor Dumas 46940 SAI
|
||||
SET @ENTRY := 46940;
|
||||
UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`= @ENTRY;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(@ENTRY, 0, 0, 0, 1, 0, 100, 1, 1, 1, 0, 0, 11, 64195, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "When out of combat and timer at the begining between 1 and 1 ms (and later repeats every 0 and 0 ms) - Self: Cast spell 64195 on Self // "),
|
||||
(@ENTRY, 0, 1, 0, 1, 0, 100, 1, 4000, 4000, 0, 0, 66, 0, 0, 0, 0, 0, 0, 11, 448, 30, 0, 0, 0, 0, 0, "When out of combat and timer at the begining between 4000 and 4000 ms (and later repeats every 0 and 0 ms) - Self: Look at Creature Hogger (448) in 30 yd // "),
|
||||
(@ENTRY, 0, 2, 3, 1, 0, 100, 1, 34000, 34000, 0, 0, 11, 64446, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "When out of combat and timer at the begining between 34000 and 34000 ms (and later repeats every 0 and 0 ms) - Self: Cast spell 64446 on Self // "),
|
||||
(@ENTRY, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 41, 2000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, " Linked - Self: Despawn in 2000 ms // ");
|
||||
|
||||
-- Creature Minion of Hogger 46932 SAI
|
||||
SET @ENTRY := 46932;
|
||||
UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`= @ENTRY;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(@ENTRY, 0, 0, 0, 1, 0, 100, 1, 1000, 1000, 0, 0, 49, 0, 0, 0, 0, 0, 0, 25, 10, 1, 0, 0, 0, 0, 0, "When out of combat and timer at the begining between 1000 and 1000 ms (and later repeats every 0 and 0 ms) - Self: Attack Closest enemy player in 10 yards // "),
|
||||
(@ENTRY, 0, 1, 0, 60, 0, 100, 1, 14000, 14000, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Every 0 and 0 ms (for the first time, timer between 14000 and 14000 ms) - Self: Die // "),
|
||||
(@ENTRY, 0, 2, 0, 6, 0, 100, 0, 0, 0, 0, 0, 11, 87402, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "On death - Self: Cast spell 87402 on Self // ");
|
||||
|
||||
-- Creature Ragamuffin 46943 SAI
|
||||
SET @ENTRY := 46943;
|
||||
UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`= @ENTRY;
|
||||
|
||||
-- Creature Ragamuffin 46943 SAI
|
||||
SET @ENTRY := 46943;
|
||||
UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`= @ENTRY;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@ENTRY*100,@ENTRY*100+1) AND `source_type`=9;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(@ENTRY, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 80, @ENTRY*100, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Ragamuffin- On just summoned - action list"),
|
||||
(@ENTRY*100, 9, 0, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 69, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -10128.8, 662.185, 36.0578, 0, "Ragamuffin- action list - Move to pos "),
|
||||
(@ENTRY*100, 9, 1, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Ragamuffin- action list - say text"),
|
||||
(@ENTRY*100, 9, 2, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 69, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -10122.5, 660.198, 36.0702, 0, "Ragamuffin- action list - Move to pos"),
|
||||
(@ENTRY*100, 9, 3, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Ragamuffin- action list - Despawn"),
|
||||
|
||||
(@ENTRY, 0, 1, 0, 54, 0, 100, 0, 0, 0, 0, 0, 80, @ENTRY*100+1, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Ragamuffin- On just summoned - action list"),
|
||||
(@ENTRY*100+1, 9, 0, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 69, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -10131.5, 660.094, 36.0578, 0, "Ragamuffin- action list - Move to pos "),
|
||||
(@ENTRY*100+1, 9, 1, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Ragamuffin- action list - say text"),
|
||||
(@ENTRY*100+1, 9, 2, 0, 0, 0, 100, 0, 6000, 6000, 0, 0, 69, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -10130.9, 653.302, 36.0578, 0, "Ragamuffin- action list - Move to pos"),
|
||||
(@ENTRY*100+1, 9, 3, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Ragamuffin- action list - Despawn");
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=46943 AND SourceId = 0;
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`, `ConditionTarget`, `ConditionTypeOrReference`, `ConditionValue1`,`ConditionValue2`,`ConditionValue3`, `Comment`) VALUES
|
||||
(22, 1, 46943, 0, 1, 29, 46941, 2, 0, "If there is creature High Sorcerer Andromath (46941) within range 4 yards to Invoker"),
|
||||
(22, 2, 46943, 0, 1, 29, 46940, 2, 0, "If there is creature Maginor Dumas (46940) within range 4 yards to Invoker");
|
||||
@@ -291,9 +291,195 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
enum WantedHogger
|
||||
{
|
||||
// Hogger
|
||||
SPELL_VICIOUS_SLICE = 87337,
|
||||
SPELL_SUMMON_MINIONS = 87366,
|
||||
SPELL_EATING = 87351,
|
||||
SPELL_UPSET_STOMACH = 87352,
|
||||
SPELL_TELEPORT_VISUAL = 64446,
|
||||
|
||||
SAY_HELP_HOGGER = 0,
|
||||
SAY_ANNOUNCE_HEAL = 1,
|
||||
SAY_ANNOUNCE_STUN = 2,
|
||||
SAY_SURRENDER = 3,
|
||||
SAY_OUTRO_1 = 4,
|
||||
SAY_OUTRO_2 = 5,
|
||||
|
||||
EVENT_VICIOUS_SLICE = 1,
|
||||
EVENT_MOVE_TO_MEAT = 2,
|
||||
EVENT_EAT_MEAT = 3,
|
||||
EVENT_MAKE_AGGRESSIVE = 4,
|
||||
EVENT_SUMMON_GENERAL = 5,
|
||||
EVENT_FACE_TO_GENERAL = 6,
|
||||
EVENT_SAY_OUTRO_2 = 7,
|
||||
EVENT_CAST_TELEPORT = 8,
|
||||
EVENT_DESPAWN = 9,
|
||||
|
||||
POINT_EAT_MEAT = 1,
|
||||
POINT_SURRENDER = 2,
|
||||
};
|
||||
|
||||
Position const HoggerMeatPos = { -10145.12f, 667.582f, 37.53608f };
|
||||
Position const HoggerEndPos = { -10136.9f, 670.009f, 36.03682f };
|
||||
|
||||
class npc_hogger : public CreatureScript
|
||||
{
|
||||
public:
|
||||
npc_hogger() : CreatureScript("npc_hogger") { }
|
||||
|
||||
struct npc_hoggerAI : public ScriptedAI
|
||||
{
|
||||
npc_hoggerAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
}
|
||||
|
||||
void Reset()
|
||||
{
|
||||
me->GetMotionMaster()->MoveRandom(7.0f);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
_calledForHelp = false;
|
||||
_defeated = false;
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
events.ScheduleEvent(EVENT_VICIOUS_SLICE, Seconds(5));
|
||||
me->GetMotionMaster()->Clear(MOTION_SLOT_IDLE);
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* attacker, uint32& damage) override
|
||||
{
|
||||
if (damage >= me->GetHealth())
|
||||
damage = me->GetHealth() - 1;
|
||||
|
||||
if (me->GetHealthPct() <= 50 && !_calledForHelp)
|
||||
{
|
||||
Talk(SAY_HELP_HOGGER);
|
||||
DoCast(SPELL_SUMMON_MINIONS);
|
||||
events.ScheduleEvent(EVENT_MOVE_TO_MEAT, Seconds(4));
|
||||
_calledForHelp = true;
|
||||
}
|
||||
|
||||
if (me->GetHealth() == 1 && !_defeated)
|
||||
{
|
||||
events.Reset();
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->RemoveAllAuras();
|
||||
me->KillSelf();
|
||||
me->setDeathState(ALIVE);
|
||||
me->setRegeneratingHealth(false);
|
||||
me->SetHealth(1);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
Talk(SAY_SURRENDER);
|
||||
me->GetMotionMaster()->MovePoint(POINT_SURRENDER, HoggerEndPos, true);
|
||||
_defeated = true;
|
||||
}
|
||||
}
|
||||
|
||||
void MovementInform(uint32 type, uint32 pointId) override
|
||||
{
|
||||
if (type != POINT_MOTION_TYPE)
|
||||
return;
|
||||
|
||||
switch (pointId)
|
||||
{
|
||||
case POINT_EAT_MEAT:
|
||||
events.ScheduleEvent(EVENT_EAT_MEAT, 1);
|
||||
break;
|
||||
case POINT_SURRENDER:
|
||||
events.ScheduleEvent(EVENT_SUMMON_GENERAL, 1);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
|
||||
{
|
||||
if (spell->Id == SPELL_UPSET_STOMACH)
|
||||
{
|
||||
events.CancelEvent(EVENT_MAKE_AGGRESSIVE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
Talk(SAY_ANNOUNCE_STUN);
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!UpdateVictim() && !_defeated)
|
||||
return;
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_VICIOUS_SLICE:
|
||||
DoCastVictim(SPELL_VICIOUS_SLICE);
|
||||
events.Repeat(Seconds(11), Seconds(12));
|
||||
break;
|
||||
case EVENT_MOVE_TO_MEAT:
|
||||
me->AttackStop();
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
Talk(SAY_ANNOUNCE_HEAL);
|
||||
me->GetMotionMaster()->MovePoint(POINT_EAT_MEAT, HoggerMeatPos, true);
|
||||
break;
|
||||
case EVENT_EAT_MEAT:
|
||||
DoCast(me, SPELL_EATING);
|
||||
events.ScheduleEvent(EVENT_MAKE_AGGRESSIVE, Seconds(12));
|
||||
break;
|
||||
case EVENT_MAKE_AGGRESSIVE:
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
break;
|
||||
case EVENT_SUMMON_GENERAL:
|
||||
me->SummonCreatureGroup(0);
|
||||
events.ScheduleEvent(EVENT_FACE_TO_GENERAL, Seconds(12));
|
||||
break;
|
||||
case EVENT_FACE_TO_GENERAL:
|
||||
Talk(SAY_OUTRO_1);
|
||||
me->SetFacingTo(5.339049f);
|
||||
events.ScheduleEvent(EVENT_SAY_OUTRO_2, Seconds(15));
|
||||
break;
|
||||
case EVENT_SAY_OUTRO_2:
|
||||
Talk(SAY_OUTRO_2);
|
||||
events.ScheduleEvent(EVENT_CAST_TELEPORT, Seconds(7));
|
||||
break;
|
||||
case EVENT_CAST_TELEPORT:
|
||||
DoCast(me, SPELL_TELEPORT_VISUAL, true);
|
||||
events.ScheduleEvent(EVENT_DESPAWN, Seconds(2));
|
||||
break;
|
||||
case EVENT_DESPAWN:
|
||||
me->setRegeneratingHealth(true);
|
||||
me->DespawnOrUnsummon();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
private:
|
||||
bool _calledForHelp;
|
||||
bool _defeated;
|
||||
EventMap events;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_hoggerAI(creature);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_elwynn_forest()
|
||||
{
|
||||
new npc_stormwind_infantry();
|
||||
new npc_blackrock_battle_worg();
|
||||
new npc_injured_stormwind_infantry_dummy();
|
||||
new npc_hogger();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user