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)