From 59766e10c6a39b7bc5782fc6c02ca81189c1e9ed Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Thu, 18 Jul 2024 18:12:41 +0200 Subject: [PATCH] fix(Core/Spell): Allow using SpellDifficulty in bg (#19422) * fix(Core/Spell): Allow using SpellDifficulty in bg * cherry-pick commit (https://github.com/TrinityCore/TrinityCore/commit/e4caf52e5a3820399d7ddd5ea3963c36d1d71e28) * "Allow get SpellDifficulty on battleground maps This is only for Isle of Conquest (Bracket 71-79 is Regular Difficulty, Bracket 80-84 is heroic or 25Man) Spells of IoC Battleground vehicles, cannons, bombs and bosses have SpellDifficulty in DBC" * Remove redundant CastSpell and assign a variable instead Co-Authored-By: Gildor <521036+Jildor@users.noreply.github.com> * Update isle_of_conquest.cpp --------- Co-authored-by: Gildor <521036+Jildor@users.noreply.github.com> --- .../rev_1721214859612463300.sql | 5 ++++ src/server/game/Spells/SpellMgr.cpp | 2 +- .../scripts/Northrend/isle_of_conquest.cpp | 25 +++++++++++-------- 3 files changed, 21 insertions(+), 11 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1721214859612463300.sql 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