From a74e57fb22f4250e31d430e65484cabc30afe1d5 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 6 Mar 2022 18:26:00 +0100 Subject: [PATCH] fix(Core/Spells): Implemented SPELL_ATTR0_CU_IGNORE_EVADE. (#10832) Added channel beam at Razorgore pre-fight. Fixed #10767 --- .../updates/pending_db_world/rev_1645894175235390600.sql | 5 +++++ src/server/game/Entities/Unit/Unit.cpp | 2 +- src/server/game/Spells/SpellInfo.h | 2 +- src/server/game/Spells/SpellInfoCorrections.cpp | 6 ++++++ src/server/game/Spells/SpellMgr.cpp | 3 +++ 5 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1645894175235390600.sql diff --git a/data/sql/updates/pending_db_world/rev_1645894175235390600.sql b/data/sql/updates/pending_db_world/rev_1645894175235390600.sql new file mode 100644 index 000000000..0050f7df1 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1645894175235390600.sql @@ -0,0 +1,5 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1645894175235390600'); + +DELETE FROM `smart_scripts` WHERE `entryorguid`=12557 AND `id`=5; +INSERT INTO `smart_scripts` VALUES +(12557,0,5,0,1,0,100,1,500,500,0,0,0,11,45537,0,0,0,0,0,11,12435,90,0,0,0,0,0,0,'Grethok the Controller - OCC - Cast Channel Beam'); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index e2660fe36..5188c1ad0 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -3139,7 +3139,7 @@ SpellMissInfo Unit::SpellHitResult(Unit* victim, SpellInfo const* spell, bool Ca return SPELL_MISS_NONE; // Return evade for units in evade mode - if (victim->GetTypeId() == TYPEID_UNIT && victim->ToCreature()->IsEvadingAttacks() && !spell->HasAura(SPELL_AURA_CONTROL_VEHICLE)) + if (victim->GetTypeId() == TYPEID_UNIT && victim->ToCreature()->IsEvadingAttacks() && !spell->HasAura(SPELL_AURA_CONTROL_VEHICLE) && !spell->HasAttribute(SPELL_ATTR0_CU_IGNORE_EVADE)) return SPELL_MISS_EVADE; // Try victim reflect spell diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h index 133c7ce3c..c80bf7c3d 100644 --- a/src/server/game/Spells/SpellInfo.h +++ b/src/server/game/Spells/SpellInfo.h @@ -184,7 +184,7 @@ enum SpellCustomAttributes SPELL_ATTR0_CU_DIRECT_DAMAGE = 0x00000100, SPELL_ATTR0_CU_CHARGE = 0x00000200, SPELL_ATTR0_CU_PICKPOCKET = 0x00000400, - SPELL_ATTR0_CU_NONE4 = 0x00000800, // UNUSED + SPELL_ATTR0_CU_IGNORE_EVADE = 0x00000800, SPELL_ATTR0_CU_NEGATIVE_EFF0 = 0x00001000, SPELL_ATTR0_CU_NEGATIVE_EFF1 = 0x00002000, SPELL_ATTR0_CU_NEGATIVE_EFF2 = 0x00004000, diff --git a/src/server/game/Spells/SpellInfoCorrections.cpp b/src/server/game/Spells/SpellInfoCorrections.cpp index 93ce85f5a..bae72540a 100644 --- a/src/server/game/Spells/SpellInfoCorrections.cpp +++ b/src/server/game/Spells/SpellInfoCorrections.cpp @@ -4210,6 +4210,12 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->AttributesEx2 |= SPELL_ATTR2_IGNORE_LINE_OF_SIGHT; }); + // Cosmetic - Lightning Beam Channel + ApplySpellFix({ 45537 }, [](SpellInfo* spellInfo) + { + spellInfo->AttributesEx2 |= SPELL_ATTR2_IGNORE_LINE_OF_SIGHT; + }); + for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i) { SpellInfo* spellInfo = mSpellInfoMap[i]; diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index d22ebff47..f19f55562 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -3400,6 +3400,9 @@ void SpellMgr::LoadSpellInfoCustomAttributes() case 44535: // Spirit Heal, abilities also have no cost spellInfo->Effects[EFFECT_0].MiscValue = 127; break; + case 45537: // Cosmetic - Lightning Beam Channel + spellInfo->AttributesCu |= SPELL_ATTR0_CU_IGNORE_EVADE; + break; } if (spellInfo->Speed > 0.0f)