diff options
author | Nyeriah <sarah.trysan@live.com> | 2015-04-24 02:44:14 -0300 |
---|---|---|
committer | Nyeriah <sarah.trysan@live.com> | 2015-04-24 02:44:14 -0300 |
commit | a735088ea17eb4ea8ba4b1be8552f9bf1b8e9c98 (patch) | |
tree | 69d87f6e9e79ffc5e30cd2df9fb8d586df4c7808 /src | |
parent | 1688fbf90ce34824f75b19b151a9bd24c1d0e231 (diff) |
Scripts/Stonecore: Prevent Slabhide from dying during air phases
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Maelstrom/Stonecore/boss_slabhide.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/server/scripts/Maelstrom/Stonecore/boss_slabhide.cpp b/src/server/scripts/Maelstrom/Stonecore/boss_slabhide.cpp index fe6c7504637..f37dbd507eb 100644 --- a/src/server/scripts/Maelstrom/Stonecore/boss_slabhide.cpp +++ b/src/server/scripts/Maelstrom/Stonecore/boss_slabhide.cpp @@ -116,6 +116,7 @@ class boss_slabhide : public CreatureScript me->SetByteFlag(UNIT_FIELD_BYTES_1, 3, UNIT_BYTE1_FLAG_ALWAYS_STAND | UNIT_BYTE1_FLAG_HOVER); me->SetReactState(REACT_PASSIVE); instance->SetData(DATA_SLABHIDE_INTRO, NOT_STARTED); + _isFlying = false; } void Reset() override @@ -130,6 +131,7 @@ class boss_slabhide : public CreatureScript me->SetDisableGravity(false); me->RemoveByteFlag(UNIT_FIELD_BYTES_1, 3, UNIT_BYTE1_FLAG_ALWAYS_STAND | UNIT_BYTE1_FLAG_HOVER); me->SetReactState(REACT_AGGRESSIVE); + _isFlying = false; } void EnterCombat(Unit* /*victim*/) override @@ -142,6 +144,12 @@ class boss_slabhide : public CreatureScript events.ScheduleEvent(EVENT_AIR_PHASE, 10000); } + void DamageTaken(Unit* /*attacker*/, uint32& damage) override + { + if (_isFlying && damage >= me->GetHealth()) + damage = me->GetHealth() - 1; // Let creature health fall to 1 hp but prevent it from dying during air phase. + } + void JustDied(Unit* /*killer*/) override { _JustDied(); @@ -196,9 +204,11 @@ class boss_slabhide : public CreatureScript events.ScheduleEvent(EVENT_TAKEOFF, 100); break; case POINT_SLABHIDE_IN_AIR: + _isFlying = true; events.ScheduleEvent(EVENT_STALACTITE, 400); break; case POINT_SLABHIDE_LAND: + _isFlying = false; //DoCast(me, SPELL_COOLDOWN_5S); // unknown purpose events.ScheduleEvent(EVENT_ATTACK, 1200); break; @@ -297,7 +307,7 @@ class boss_slabhide : public CreatureScript (*itr)->Delete(); } - EventMap events; + bool _isFlying; }; CreatureAI* GetAI(Creature* creature) const override |