diff --git a/data/sql/updates/pending_db_world/rev_1626953516206751500.sql b/data/sql/updates/pending_db_world/rev_1626953516206751500.sql new file mode 100644 index 000000000..73d5b87fd --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1626953516206751500.sql @@ -0,0 +1,5 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1626953516206751500'); + +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 13278 AND `spell_effect` = 13493; +INSERT INTO `spell_linked_spell` (`spell_trigger`,`spell_effect`,`type`,`comment`) VALUES +(13278, 13493, 0, 'Gnomish Death Ray'); diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index d5b3dc670..fac63d0e4 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -7081,12 +7081,6 @@ void SpellMgr::LoadDbcDataCorrections() spellInfo->AttributesEx3 |= SPELL_ATTR3_ALLOW_AURA_WHILE_DEAD; }); - // Gnomish Death Ray - ApplySpellFix({ 13278, 13280 }, [](SpellEntry* spellInfo) - { - spellInfo->EffectImplicitTargetA[0] = TARGET_UNIT_TARGET_ENEMY; - }); - // Stormchops ApplySpellFix({ 43730 }, [](SpellEntry* spellInfo) { diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index eb8ad35aa..00e23362a 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -2126,8 +2126,7 @@ public: // 13280 Gnomish Death Ray enum GnomishDeathRay { - SPELL_GNOMISH_DEATH_RAY_SELF = 13493, - SPELL_GNOMISH_DEATH_RAY_TARGET = 13279, + SPELL_GNOMISH_DEATH_RAY_TARGET = 13279, }; class spell_item_gnomish_death_ray : public SpellScriptLoader @@ -2141,18 +2140,17 @@ public: bool Validate(SpellInfo const* /*spellInfo*/) override { - return ValidateSpellInfo({ SPELL_GNOMISH_DEATH_RAY_SELF, SPELL_GNOMISH_DEATH_RAY_TARGET }); + return ValidateSpellInfo({ SPELL_GNOMISH_DEATH_RAY_TARGET }); } void HandleDummy(SpellEffIndex /*effIndex*/) { - Unit* caster = GetCaster(); - if (Unit* target = GetHitUnit()) + if (Unit* caster = GetCaster()) { - if (urand(0, 99) < 15) - caster->CastSpell(caster, SPELL_GNOMISH_DEATH_RAY_SELF, true, nullptr); // failure - else - caster->CastSpell(target, SPELL_GNOMISH_DEATH_RAY_TARGET, true, nullptr); + if (Unit* target = ObjectAccessor::GetUnit(*caster, caster->GetGuidValue(UNIT_FIELD_CHANNEL_OBJECT))) + { + caster->CastSpell(target, SPELL_GNOMISH_DEATH_RAY_TARGET, true); + } } }