mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-08 07:48:02 +00:00
fix(Script/HoS): Various issues with brann boss (#23413)
This commit is contained in:
@@ -389,7 +389,7 @@ public:
|
|||||||
Talk(SAY_BRANN_ESCORT_START);
|
Talk(SAY_BRANN_ESCORT_START);
|
||||||
me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_PASSIVE);
|
me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_PASSIVE);
|
||||||
me->SetReactState(REACT_AGGRESSIVE);
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
me->SetRegeneratingHealth(false);
|
me->SetRegeneratingHealth(true);
|
||||||
break;
|
break;
|
||||||
case ACTION_START_TRIBUNAL:
|
case ACTION_START_TRIBUNAL:
|
||||||
{
|
{
|
||||||
@@ -616,15 +616,8 @@ public:
|
|||||||
{
|
{
|
||||||
if (!canExecuteEvents)
|
if (!canExecuteEvents)
|
||||||
return;
|
return;
|
||||||
uint32 Time = 40000 - (2500 * WaveNum);
|
|
||||||
SummonCreatures(NPC_DARK_RUNE_PROTECTOR, 3, 0);
|
SummonCreatures(NPC_DARK_RUNE_PROTECTOR, 3, 0);
|
||||||
if (WaveNum > 2)
|
events.Repeat(IsHeroic() ? 23500ms : 32500ms);
|
||||||
events.ScheduleEvent(EVENT_SUMMON_STORMCALLER, Seconds(urand(10 - WaveNum, 15 - WaveNum)));
|
|
||||||
if (WaveNum > 5)
|
|
||||||
events.ScheduleEvent(EVENT_SUMMON_CUSTODIAN, Seconds(urand(10 - WaveNum, 15 - WaveNum)));
|
|
||||||
|
|
||||||
WaveNum++;
|
|
||||||
events.Repeat(Milliseconds(Time));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case EVENT_SUMMON_STORMCALLER:
|
case EVENT_SUMMON_STORMCALLER:
|
||||||
@@ -633,7 +626,7 @@ public:
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
SummonCreatures(NPC_DARK_RUNE_STORMCALLER, 2, 1);
|
SummonCreatures(NPC_DARK_RUNE_STORMCALLER, 2, 1);
|
||||||
|
events.Repeat(IsHeroic() ? 32s : 41500ms);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case EVENT_SUMMON_CUSTODIAN:
|
case EVENT_SUMMON_CUSTODIAN:
|
||||||
@@ -642,7 +635,7 @@ public:
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
SummonCreatures(NPC_IRON_GOLEM_CUSTODIAN, 1, 1);
|
SummonCreatures(NPC_IRON_GOLEM_CUSTODIAN, 1, 1);
|
||||||
|
events.Repeat(IsHeroic() ? 32s : 45s);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case EVENT_TRIBUNAL_END:
|
case EVENT_TRIBUNAL_END:
|
||||||
@@ -836,17 +829,14 @@ void brann_bronzebeard::brann_bronzebeardAI::InitializeEvent()
|
|||||||
Creature* cr = nullptr;
|
Creature* cr = nullptr;
|
||||||
if ((cr = me->SummonCreature(NPC_KADDRAK, 923.7f, 326.9f, 219.5f, 2.1f, TEMPSUMMON_TIMED_DESPAWN, 580000)))
|
if ((cr = me->SummonCreature(NPC_KADDRAK, 923.7f, 326.9f, 219.5f, 2.1f, TEMPSUMMON_TIMED_DESPAWN, 580000)))
|
||||||
{
|
{
|
||||||
cr->SetInCombatWithZone();
|
|
||||||
KaddrakGUID = cr->GetGUID();
|
KaddrakGUID = cr->GetGUID();
|
||||||
}
|
}
|
||||||
if ((cr = me->SummonCreature(NPC_MARNAK, 895.974f, 363.571f, 219.337f, 5.5f, TEMPSUMMON_TIMED_DESPAWN, 580000)))
|
if ((cr = me->SummonCreature(NPC_MARNAK, 895.974f, 363.571f, 219.337f, 5.5f, TEMPSUMMON_TIMED_DESPAWN, 580000)))
|
||||||
{
|
{
|
||||||
cr->SetInCombatWithZone();
|
|
||||||
MarnakGUID = cr->GetGUID();
|
MarnakGUID = cr->GetGUID();
|
||||||
}
|
}
|
||||||
if ((cr = me->SummonCreature(NPC_ABEDNEUM, 892.25f, 331.25f, 223.86f, 0.6f, TEMPSUMMON_TIMED_DESPAWN, 580000)))
|
if ((cr = me->SummonCreature(NPC_ABEDNEUM, 892.25f, 331.25f, 223.86f, 0.6f, TEMPSUMMON_TIMED_DESPAWN, 580000)))
|
||||||
{
|
{
|
||||||
cr->SetInCombatWithZone();
|
|
||||||
AbedneumGUID = cr->GetGUID();
|
AbedneumGUID = cr->GetGUID();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -859,8 +849,9 @@ void brann_bronzebeard::brann_bronzebeardAI::InitializeEvent()
|
|||||||
events.ScheduleEvent(EVENT_MARNAK_VISUAL, 105s);
|
events.ScheduleEvent(EVENT_MARNAK_VISUAL, 105s);
|
||||||
events.ScheduleEvent(EVENT_ABEDNEUM_VISUAL, 207s);
|
events.ScheduleEvent(EVENT_ABEDNEUM_VISUAL, 207s);
|
||||||
|
|
||||||
// Fight
|
events.ScheduleEvent(EVENT_SUMMON_MONSTERS, 52s);
|
||||||
events.ScheduleEvent(EVENT_SUMMON_MONSTERS, 47s);
|
events.ScheduleEvent(EVENT_SUMMON_STORMCALLER, 122s);
|
||||||
|
events.ScheduleEvent(EVENT_SUMMON_CUSTODIAN, 228s);
|
||||||
events.ScheduleEvent(EVENT_KADDRAK_HEAD, 47s);
|
events.ScheduleEvent(EVENT_KADDRAK_HEAD, 47s);
|
||||||
events.ScheduleEvent(EVENT_MARNAK_HEAD, 115s);
|
events.ScheduleEvent(EVENT_MARNAK_HEAD, 115s);
|
||||||
events.ScheduleEvent(EVENT_ABEDNEUM_HEAD, 217s);
|
events.ScheduleEvent(EVENT_ABEDNEUM_HEAD, 217s);
|
||||||
@@ -981,7 +972,6 @@ public:
|
|||||||
|
|
||||||
void JustEngagedWith(Unit*) override
|
void JustEngagedWith(Unit*) override
|
||||||
{
|
{
|
||||||
events.ScheduleEvent(EVENT_DRP_CHARGE, 10s);
|
|
||||||
events.ScheduleEvent(EVENT_DRP_CLEAVE, 7s);
|
events.ScheduleEvent(EVENT_DRP_CLEAVE, 7s);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -996,14 +986,6 @@ public:
|
|||||||
|
|
||||||
switch (events.ExecuteEvent())
|
switch (events.ExecuteEvent())
|
||||||
{
|
{
|
||||||
case EVENT_DRP_CHARGE:
|
|
||||||
{
|
|
||||||
if (Unit* tgt = SelectTarget(SelectTargetMethod::Random, 0))
|
|
||||||
me->CastSpell(tgt, SPELL_DRP_CHARGE, false);
|
|
||||||
|
|
||||||
events.Repeat(10s);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case EVENT_DRP_CLEAVE:
|
case EVENT_DRP_CLEAVE:
|
||||||
{
|
{
|
||||||
me->CastSpell(me->GetVictim(), SPELL_DRP_CLEAVE, false);
|
me->CastSpell(me->GetVictim(), SPELL_DRP_CLEAVE, false);
|
||||||
@@ -1012,6 +994,14 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Unit* victim = me->GetVictim())
|
||||||
|
{
|
||||||
|
if (!me->IsWithinMeleeRange(victim) && !me->HasUnitState(UNIT_STATE_CHARGING))
|
||||||
|
{
|
||||||
|
me->CastSpell(victim, SPELL_DRP_CHARGE, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -1095,7 +1085,7 @@ public:
|
|||||||
void JustEngagedWith(Unit*) override
|
void JustEngagedWith(Unit*) override
|
||||||
{
|
{
|
||||||
events.ScheduleEvent(EVENT_IGC_CRUSH, 6s);
|
events.ScheduleEvent(EVENT_IGC_CRUSH, 6s);
|
||||||
events.ScheduleEvent(EVENT_IGC_GROUND_SMASH, 4s);
|
events.ScheduleEvent(EVENT_IGC_GROUND_SMASH, 20s);
|
||||||
}
|
}
|
||||||
void UpdateAI(uint32 diff) override
|
void UpdateAI(uint32 diff) override
|
||||||
{
|
{
|
||||||
@@ -1117,7 +1107,7 @@ public:
|
|||||||
case EVENT_IGC_GROUND_SMASH:
|
case EVENT_IGC_GROUND_SMASH:
|
||||||
{
|
{
|
||||||
me->CastSpell(me->GetVictim(), SPELL_IGC_GROUND_SMASH, false);
|
me->CastSpell(me->GetVictim(), SPELL_IGC_GROUND_SMASH, false);
|
||||||
events.Repeat(5s);
|
events.Repeat(20s, 40s);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user