diff --git a/data/sql/updates/pending_db_world/rev_1721214859612463300.sql b/data/sql/updates/pending_db_world/rev_1721214859612463300.sql new file mode 100644 index 000000000..79af9ba1d --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1721214859612463300.sql @@ -0,0 +1,5 @@ +-- +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_ioc_bomb_blast_criteria' AND `spell_id` IN (67813,67814); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(67813, 'spell_ioc_bomb_blast_criteria'), +(67814, 'spell_ioc_bomb_blast_criteria'); diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 0ca1165c9..1c315f532 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -492,7 +492,7 @@ uint32 SpellMgr::GetSpellIdForDifficulty(uint32 spellId, Unit const* caster) con if (!GetSpellInfo(spellId)) return spellId; - if (!caster || !caster->GetMap() || !caster->GetMap()->IsDungeon()) + if (!caster || !caster->GetMap() || (!caster->GetMap()->IsDungeon() && !caster->GetMap()->IsBattleground())) return spellId; uint32 mode = uint32(caster->GetMap()->GetSpawnMode()); diff --git a/src/server/scripts/Northrend/isle_of_conquest.cpp b/src/server/scripts/Northrend/isle_of_conquest.cpp index c9e14c87e..18e1ce201 100644 --- a/src/server/scripts/Northrend/isle_of_conquest.cpp +++ b/src/server/scripts/Northrend/isle_of_conquest.cpp @@ -331,11 +331,12 @@ class spell_ioc_repair_turret_aura : public AuraScript enum blastCriteria { - SPELL_SEAFORIUM_BLAST = 66676, - SPELL_HUGE_SEAFORIUM_BLAST = 66672, - - SPELL_BOMB_INABLE_CREDIT = 68366, - SPELL_BOMB_INATION_CREDIT = 68367, + SPELL_SEAFORIUM_BLAST = 66676, + SPELL_SEAFORIUM_BLAST_H = 67814, + SPELL_HUGE_SEAFORIUM_BLAST = 66672, + SPELL_HUGE_SEAFORIUM_BLAST_H = 67813, + SPELL_BOMB_INABLE_CREDIT = 68366, + SPELL_BOMB_INATION_CREDIT = 68367 }; class spell_ioc_bomb_blast_criteria : public SpellScript @@ -347,16 +348,20 @@ class spell_ioc_bomb_blast_criteria : public SpellScript return ValidateSpellInfo({ SPELL_BOMB_INABLE_CREDIT, SPELL_BOMB_INATION_CREDIT }); } - void HandleGameObjectDamage(SpellEffIndex /*effIndex*/) + void HandleGameObjectDamage(SpellEffIndex /*effIndex*/) { + uint32 creditSpell = 0; Unit* owner = GetCaster()->GetOwner(); if (!owner) return; - if (GetSpellInfo()->Id == SPELL_SEAFORIUM_BLAST) - owner->CastSpell(owner, SPELL_BOMB_INABLE_CREDIT, true); - else if (GetSpellInfo()->Id == SPELL_HUGE_SEAFORIUM_BLAST) - owner->CastSpell(owner, SPELL_BOMB_INATION_CREDIT, true); + uint32 spellId = GetSpellInfo()->Id; + if (spellId == SPELL_SEAFORIUM_BLAST || spellId == SPELL_SEAFORIUM_BLAST_H) + creditSpell = SPELL_BOMB_INABLE_CREDIT; + else if (spellId == SPELL_HUGE_SEAFORIUM_BLAST || spellId == SPELL_HUGE_SEAFORIUM_BLAST_H) + creditSpell = SPELL_BOMB_INATION_CREDIT; + + owner->CastSpell(owner, creditSpell, true); } void Register() override