From 5386a1d7a0d322b427ea59e8fca9f4e39090329c Mon Sep 17 00:00:00 2001 From: blinkysc <37940565+blinkysc@users.noreply.github.com> Date: Mon, 3 Nov 2025 00:45:18 -0600 Subject: [PATCH] fix(Script/HoS): Various issues with brann boss (#23413) --- .../Ulduar/HallsOfStone/brann_bronzebeard.cpp | 44 +++++++------------ 1 file changed, 17 insertions(+), 27 deletions(-) diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp index b8943360b..e4305328f 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp @@ -389,7 +389,7 @@ public: Talk(SAY_BRANN_ESCORT_START); me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_PASSIVE); me->SetReactState(REACT_AGGRESSIVE); - me->SetRegeneratingHealth(false); + me->SetRegeneratingHealth(true); break; case ACTION_START_TRIBUNAL: { @@ -616,15 +616,8 @@ public: { if (!canExecuteEvents) return; - uint32 Time = 40000 - (2500 * WaveNum); SummonCreatures(NPC_DARK_RUNE_PROTECTOR, 3, 0); - if (WaveNum > 2) - 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)); + events.Repeat(IsHeroic() ? 23500ms : 32500ms); break; } case EVENT_SUMMON_STORMCALLER: @@ -633,7 +626,7 @@ public: return; SummonCreatures(NPC_DARK_RUNE_STORMCALLER, 2, 1); - + events.Repeat(IsHeroic() ? 32s : 41500ms); break; } case EVENT_SUMMON_CUSTODIAN: @@ -642,7 +635,7 @@ public: return; SummonCreatures(NPC_IRON_GOLEM_CUSTODIAN, 1, 1); - + events.Repeat(IsHeroic() ? 32s : 45s); break; } case EVENT_TRIBUNAL_END: @@ -836,17 +829,14 @@ void brann_bronzebeard::brann_bronzebeardAI::InitializeEvent() Creature* cr = nullptr; if ((cr = me->SummonCreature(NPC_KADDRAK, 923.7f, 326.9f, 219.5f, 2.1f, TEMPSUMMON_TIMED_DESPAWN, 580000))) { - cr->SetInCombatWithZone(); KaddrakGUID = cr->GetGUID(); } if ((cr = me->SummonCreature(NPC_MARNAK, 895.974f, 363.571f, 219.337f, 5.5f, TEMPSUMMON_TIMED_DESPAWN, 580000))) { - cr->SetInCombatWithZone(); MarnakGUID = cr->GetGUID(); } if ((cr = me->SummonCreature(NPC_ABEDNEUM, 892.25f, 331.25f, 223.86f, 0.6f, TEMPSUMMON_TIMED_DESPAWN, 580000))) { - cr->SetInCombatWithZone(); AbedneumGUID = cr->GetGUID(); } @@ -859,8 +849,9 @@ void brann_bronzebeard::brann_bronzebeardAI::InitializeEvent() events.ScheduleEvent(EVENT_MARNAK_VISUAL, 105s); events.ScheduleEvent(EVENT_ABEDNEUM_VISUAL, 207s); - // Fight - events.ScheduleEvent(EVENT_SUMMON_MONSTERS, 47s); + events.ScheduleEvent(EVENT_SUMMON_MONSTERS, 52s); + events.ScheduleEvent(EVENT_SUMMON_STORMCALLER, 122s); + events.ScheduleEvent(EVENT_SUMMON_CUSTODIAN, 228s); events.ScheduleEvent(EVENT_KADDRAK_HEAD, 47s); events.ScheduleEvent(EVENT_MARNAK_HEAD, 115s); events.ScheduleEvent(EVENT_ABEDNEUM_HEAD, 217s); @@ -981,7 +972,6 @@ public: void JustEngagedWith(Unit*) override { - events.ScheduleEvent(EVENT_DRP_CHARGE, 10s); events.ScheduleEvent(EVENT_DRP_CLEAVE, 7s); } @@ -996,14 +986,6 @@ public: 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: { 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(); } }; @@ -1095,7 +1085,7 @@ public: void JustEngagedWith(Unit*) override { 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 { @@ -1117,7 +1107,7 @@ public: case EVENT_IGC_GROUND_SMASH: { me->CastSpell(me->GetVictim(), SPELL_IGC_GROUND_SMASH, false); - events.Repeat(5s); + events.Repeat(20s, 40s); break; } }