Compare commits

...

2 Commits

Author SHA1 Message Date
gtkk
f5711dc6f7 FIX Onyxia Crash (#2062)
Solve these two problems #2043 #1981
@Regrad is the main contributor of the code, while I was just helping to
submit the pull request. Express my gratitude to him.
After testing, the code is proven to be effective.
2026-01-25 14:03:53 +01:00
bashermens
43e8e31980 Update PULL_REQUEST_TEMPLATE.md (#2066) 2026-01-25 13:46:23 +01:00
3 changed files with 17 additions and 5 deletions

View File

@@ -109,6 +109,7 @@ If yes, please specify:
AI assistance is allowed, but all submitted code must be fully understood, reviewed, and owned by the contributor.
Any AI-influenced changes must be verified against existing CORE and PB logic. We expect contributors to be honest
about what they do and do not understand.
---
## Final Checklist

View File

@@ -45,8 +45,19 @@ bool RaidOnyxiaSpreadOutAction::Execute(Event event)
if (!boss)
return false;
Player* target = boss->GetCurrentSpell(CURRENT_GENERIC_SPELL)->m_targets.GetUnitTarget()->ToPlayer();
if (target != bot)
// Trigger may fire on one tick, but the action can execute on a later tick.
// By that time the cast may have finished, so current spell can be null.
Spell* currentSpell = boss->GetCurrentSpell(CURRENT_GENERIC_SPELL);
if (!currentSpell || !currentSpell->m_spellInfo)
return false;
// Fireball
if (currentSpell->m_spellInfo->Id != 18392)
return false;
Unit* unitTarget = currentSpell->m_targets.GetUnitTarget();
Player* target = unitTarget ? unitTarget->ToPlayer() : nullptr;
if (!target || target != bot)
return false;
// bot->Yell("Spreading out — I'm the Fireball target!", LANG_UNIVERSAL);
@@ -60,7 +71,7 @@ bool RaidOnyxiaMoveToSafeZoneAction::Execute(Event event)
return false;
Spell* currentSpell = boss->GetCurrentSpell(CURRENT_GENERIC_SPELL);
if (!currentSpell)
if (!currentSpell || !currentSpell->m_spellInfo)
return false;
uint32 spellId = currentSpell->m_spellInfo->Id;

View File

@@ -17,7 +17,7 @@ bool OnyxiaDeepBreathTrigger::IsActive()
// Check if Onyxia is casting
Spell* currentSpell = boss->GetCurrentSpell(CURRENT_GENERIC_SPELL);
if (!currentSpell)
if (!currentSpell || !currentSpell->m_spellInfo)
return false;
uint32 spellId = currentSpell->m_spellInfo->Id;
@@ -65,7 +65,7 @@ bool RaidOnyxiaFireballSplashTrigger::IsActive()
// Check if Onyxia is casting Fireball
Spell* currentSpell = boss->GetCurrentSpell(CURRENT_GENERIC_SPELL);
if (!currentSpell || currentSpell->m_spellInfo->Id != 18392) // 18392 is the classic Fireball ID
if (!currentSpell || !currentSpell->m_spellInfo || currentSpell->m_spellInfo->Id != 18392) // 18392 is the classic Fireball ID // 18392 is the classic Fireball ID
return false;
GuidVector nearbyUnits = AI_VALUE(GuidVector, "nearest friendly players");