aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNyeriah <sarah.trysan@live.com>2015-04-24 02:44:14 -0300
committerNyeriah <sarah.trysan@live.com>2015-04-24 02:44:14 -0300
commita735088ea17eb4ea8ba4b1be8552f9bf1b8e9c98 (patch)
tree69d87f6e9e79ffc5e30cd2df9fb8d586df4c7808 /src
parent1688fbf90ce34824f75b19b151a9bd24c1d0e231 (diff)
Scripts/Stonecore: Prevent Slabhide from dying during air phases
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Maelstrom/Stonecore/boss_slabhide.cpp12
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