aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeader <keader.android@gmail.com>2017-04-02 11:08:29 -0300
committerfunjoker <funjoker109@gmail.com>2020-04-27 12:25:52 +0200
commit287ed04c8b89c7a265452576f288ec83e4fa7e7c (patch)
treec8ddff63879e625e71df908b9efcf6d2f3d6cc2d
parent2ff501d15fc09b3037e9c8f8c9f6703870c13f4c (diff)
Core/Scripts: Fixed Baltharus the Warborn clones
*Clones not working after wipe *Changed Clone Action for a event (to check casting) (cherry picked from commit 6b8c4fb74feb2210d2fb9ea60ec23ab407ffeb39)
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp34
1 files changed, 18 insertions, 16 deletions
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
index e39a01547f1..2c48fee879e 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
@@ -51,7 +51,8 @@ enum Events
EVENT_CLEAVE,
EVENT_ENERVATING_BRAND,
EVENT_INTRO_TALK,
- EVENT_SUMMONS_ATTACK
+ EVENT_SUMMONS_ATTACK,
+ EVENT_CLONE
};
enum Actions
@@ -73,10 +74,8 @@ class boss_baltharus_the_warborn : public CreatureScript
struct boss_baltharus_the_warbornAI : public BossAI
{
- boss_baltharus_the_warbornAI(Creature* creature) : BossAI(creature, DATA_BALTHARUS_THE_WARBORN), _introDone(false)
- {
- _cloneCount = RAID_MODE<uint8>(1, 2, 2, 2);
- }
+ boss_baltharus_the_warbornAI(Creature* creature) : BossAI(creature, DATA_BALTHARUS_THE_WARBORN),
+ _introDone(false), _cloneCount(RAID_MODE<uint8>(1, 2, 2, 2)) { }
void Reset() override
{
@@ -85,6 +84,7 @@ class boss_baltharus_the_warborn : public CreatureScript
instance->SetData(DATA_BALTHARUS_SHARED_HEALTH, me->GetMaxHealth());
if (Creature* channelTarget = instance->GetCreature(DATA_CRYSTAL_CHANNEL_TARGET))
DoCast(channelTarget, SPELL_BARRIER_CHANNEL);
+ _cloneCount = RAID_MODE<uint8>(1, 2, 2, 2);
}
void DoAction(int32 action) override
@@ -100,8 +100,8 @@ class boss_baltharus_the_warborn : public CreatureScript
break;
case ACTION_CLONE:
{
- DoCastSelf(SPELL_CLEAR_DEBUFFS);
- DoCastSelf(SPELL_CLONE);
+ DoCastSelf(SPELL_CLEAR_DEBUFFS, true);
+ DoCastSelf(SPELL_CLONE, true);
DoCastSelf(SPELL_REPELLING_WAVE);
Talk(SAY_CLONE);
--_cloneCount;
@@ -150,14 +150,14 @@ class boss_baltharus_the_warborn : public CreatureScript
if (GetDifficulty() == DIFFICULTY_10_N)
{
if (me->HealthBelowPctDamaged(50, damage) && _cloneCount == 1)
- DoAction(ACTION_CLONE);
+ events.ScheduleEvent(EVENT_CLONE, Milliseconds(1));
}
else
{
if (me->HealthBelowPctDamaged(66, damage) && _cloneCount == 2)
- DoAction(ACTION_CLONE);
+ events.ScheduleEvent(EVENT_CLONE, Milliseconds(1));
else if (me->HealthBelowPctDamaged(33, damage) && _cloneCount == 1)
- DoAction(ACTION_CLONE);
+ events.ScheduleEvent(EVENT_CLONE, Milliseconds(1));
}
if (me->GetHealth() > damage)
@@ -173,19 +173,18 @@ class boss_baltharus_the_warborn : public CreatureScript
void UpdateAI(uint32 diff) override
{
- bool introPhase = events.IsInPhase(PHASE_INTRO);
- if (!introPhase && !UpdateVictim())
+ if (!events.IsInPhase(PHASE_INTRO) && !UpdateVictim())
return;
- if (!introPhase)
+ if (!events.IsInPhase(PHASE_INTRO))
me->SetHealth(instance->GetData(DATA_BALTHARUS_SHARED_HEALTH));
- events.Update(diff);
-
- if (!introPhase && me->HasUnitState(UNIT_STATE_CASTING))
+ if (!events.IsInPhase(PHASE_INTRO) && me->HasUnitState(UNIT_STATE_CASTING))
return;
+ events.Update(diff);
+
while (uint32 eventId = events.ExecuteEvent())
{
switch (eventId)
@@ -210,6 +209,9 @@ class boss_baltharus_the_warborn : public CreatureScript
case EVENT_SUMMONS_ATTACK:
summons.DoZoneInCombat(NPC_BALTHARUS_THE_WARBORN_CLONE);
break;
+ case EVENT_CLONE:
+ DoAction(ACTION_CLONE);
+ break;
default:
break;
}