diff --git a/sql/updates/world/4.3.4/2017_11_14_00_world.sql b/sql/updates/world/4.3.4/2017_11_14_00_world.sql new file mode 100644 index 00000000000..08d9a45db89 --- /dev/null +++ b/sql/updates/world/4.3.4/2017_11_14_00_world.sql @@ -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"); diff --git a/src/server/scripts/EasternKingdoms/zone_elwynn_forest.cpp b/src/server/scripts/EasternKingdoms/zone_elwynn_forest.cpp index 51577adc2b2..36422695882 100644 --- a/src/server/scripts/EasternKingdoms/zone_elwynn_forest.cpp +++ b/src/server/scripts/EasternKingdoms/zone_elwynn_forest.cpp @@ -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(); }