mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Scripts/Spells: Correctly implement Murmur's Touch & Dire Brew (#28058)
This commit is contained in:
7
sql/updates/world/3.3.5/2022_06_26_00_world.sql
Normal file
7
sql/updates/world/3.3.5/2022_06_26_00_world.sql
Normal file
@@ -0,0 +1,7 @@
|
||||
--
|
||||
DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (-33711,-38794,33686,51010);
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_murmur_murmurs_touch','spell_item_dire_brew');
|
||||
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
|
||||
(33711,'spell_murmur_murmurs_touch'),
|
||||
(38794,'spell_murmur_murmurs_touch'),
|
||||
(51010,'spell_item_dire_brew');
|
||||
@@ -3383,7 +3383,9 @@ void SpellMgr::LoadSpellInfoCorrections()
|
||||
38762, // Force of Neltharaku
|
||||
51122, // Fierce Lightning Stike
|
||||
71848, // Toxic Wasteling Find Target
|
||||
36146 // Chains of Naberius
|
||||
36146, // Chains of Naberius
|
||||
33711, // Murmur's Touch
|
||||
38794 // Murmur's Touch
|
||||
}, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->MaxAffectedTargets = 1;
|
||||
@@ -3500,13 +3502,6 @@ void SpellMgr::LoadSpellInfoCorrections()
|
||||
spellInfo->_GetEffect(EFFECT_1).TargetA = SpellImplicitTargetInfo(TARGET_UNIT_TARGET_ALLY);
|
||||
});
|
||||
|
||||
// Murmur's Touch
|
||||
ApplySpellFix({ 33711, 38794 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->MaxAffectedTargets = 1;
|
||||
spellInfo->_GetEffect(EFFECT_0).TriggerSpell = 33760;
|
||||
});
|
||||
|
||||
// Fingers of Frost
|
||||
ApplySpellFix({ 44544 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
|
||||
@@ -26,11 +26,16 @@ EndScriptData */
|
||||
#include "ObjectAccessor.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "shadow_labyrinth.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
enum Murmur
|
||||
enum Texts
|
||||
{
|
||||
EMOTE_SONIC_BOOM = 0
|
||||
};
|
||||
|
||||
enum Spells
|
||||
{
|
||||
// Spell
|
||||
SPELL_RESONANCE = 33657,
|
||||
SPELL_MAGNETIC_PULL = 33689,
|
||||
SPELL_SONIC_SHOCK = 38797,
|
||||
@@ -38,8 +43,11 @@ enum Murmur
|
||||
SPELL_SONIC_BOOM_CAST = 33923,
|
||||
SPELL_SONIC_BOOM_EFFECT = 33666,
|
||||
SPELL_MURMURS_TOUCH = 33711,
|
||||
// Text
|
||||
EMOTE_SONIC_BOOM = 0
|
||||
SPELL_MURMURS_TOUCH_H = 38794,
|
||||
|
||||
SPELL_MURMURS_TOUCH_DUMMY = 33760,
|
||||
SPELL_SHOCKWAVE = 33686,
|
||||
SPELL_SHOCKWAVE_KNOCK_BACK = 33673
|
||||
};
|
||||
|
||||
enum Events
|
||||
@@ -215,10 +223,77 @@ class spell_murmur_thundering_storm : public SpellScript
|
||||
}
|
||||
};
|
||||
|
||||
// 33711, 38794 - Murmur's Touch
|
||||
class spell_murmur_murmurs_touch : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_murmur_murmurs_touch);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
SPELL_MURMURS_TOUCH_DUMMY,
|
||||
SPELL_SHOCKWAVE,
|
||||
SPELL_SHOCKWAVE_KNOCK_BACK
|
||||
});
|
||||
}
|
||||
|
||||
void OnPeriodic(AuraEffect const* aurEff)
|
||||
{
|
||||
Unit* target = GetTarget();
|
||||
|
||||
switch (GetId())
|
||||
{
|
||||
case SPELL_MURMURS_TOUCH:
|
||||
switch (aurEff->GetTickNumber())
|
||||
{
|
||||
case 7:
|
||||
case 10:
|
||||
case 12:
|
||||
case 13:
|
||||
target->CastSpell(target, SPELL_MURMURS_TOUCH_DUMMY, true);
|
||||
break;
|
||||
case 14:
|
||||
target->CastSpell(target, SPELL_MURMURS_TOUCH_DUMMY, true);
|
||||
target->CastSpell(target, SPELL_SHOCKWAVE, true);
|
||||
target->CastSpell(target, SPELL_SHOCKWAVE_KNOCK_BACK, true);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SPELL_MURMURS_TOUCH_H:
|
||||
switch (aurEff->GetTickNumber())
|
||||
{
|
||||
case 3:
|
||||
case 6:
|
||||
target->CastSpell(target, SPELL_MURMURS_TOUCH_DUMMY, true);
|
||||
break;
|
||||
case 7:
|
||||
target->CastSpell(target, SPELL_MURMURS_TOUCH_DUMMY, true);
|
||||
target->CastSpell(target, SPELL_SHOCKWAVE, true);
|
||||
target->CastSpell(target, SPELL_SHOCKWAVE_KNOCK_BACK, true);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_murmur_murmurs_touch::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_murmur()
|
||||
{
|
||||
RegisterShadowLabyrinthCreatureAI(boss_murmur);
|
||||
RegisterSpellScript(spell_murmur_sonic_boom);
|
||||
RegisterSpellScript(spell_murmur_sonic_boom_effect);
|
||||
RegisterSpellScript(spell_murmur_thundering_storm);
|
||||
RegisterSpellScript(spell_murmur_murmurs_touch);
|
||||
}
|
||||
|
||||
@@ -901,6 +901,64 @@ class spell_item_party_time : public AuraScript
|
||||
}
|
||||
};
|
||||
|
||||
enum DireBrew
|
||||
{
|
||||
MODEL_CLASS_CLOTH_MALE = 25229,
|
||||
MODEL_CLASS_CLOTH_FEMALE = 25233,
|
||||
MODEL_CLASS_LEATHER_MALE = 25230,
|
||||
MODEL_CLASS_LEATHER_FEMALE = 25234,
|
||||
MODEL_CLASS_MAIL_MALE = 25231,
|
||||
MODEL_CLASS_MAIL_FEMALE = 25235,
|
||||
MODEL_CLASS_PLATE_MALE = 25232,
|
||||
MODEL_CLASS_PLATE_FEMALE = 25236
|
||||
};
|
||||
|
||||
// 51010 - Dire Brew
|
||||
class spell_item_dire_brew : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_item_dire_brew);
|
||||
|
||||
void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
Unit* target = GetTarget();
|
||||
|
||||
uint32 model = 0;
|
||||
uint8 gender = target->GetGender();
|
||||
|
||||
switch (target->GetClass())
|
||||
{
|
||||
case CLASS_PRIEST:
|
||||
case CLASS_MAGE:
|
||||
case CLASS_WARLOCK:
|
||||
model = gender == GENDER_MALE ? MODEL_CLASS_CLOTH_MALE : MODEL_CLASS_CLOTH_FEMALE;
|
||||
break;
|
||||
case CLASS_ROGUE:
|
||||
case CLASS_DRUID:
|
||||
model = gender == GENDER_MALE ? MODEL_CLASS_LEATHER_MALE : MODEL_CLASS_LEATHER_FEMALE;
|
||||
break;
|
||||
case CLASS_HUNTER:
|
||||
case CLASS_SHAMAN:
|
||||
model = gender == GENDER_MALE ? MODEL_CLASS_MAIL_MALE : MODEL_CLASS_MAIL_FEMALE;
|
||||
break;
|
||||
case CLASS_WARRIOR:
|
||||
case CLASS_PALADIN:
|
||||
case CLASS_DEATH_KNIGHT:
|
||||
model = gender == GENDER_MALE ? MODEL_CLASS_PLATE_MALE : MODEL_CLASS_PLATE_FEMALE;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (model)
|
||||
target->SetDisplayId(model);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
AfterEffectApply += AuraEffectApplyFn(spell_item_dire_brew::AfterApply, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL);
|
||||
}
|
||||
};
|
||||
|
||||
enum DiscerningEyeBeastMisc
|
||||
{
|
||||
SPELL_DISCERNING_EYE_BEAST = 59914
|
||||
@@ -4222,6 +4280,7 @@ void AddSC_item_spell_scripts()
|
||||
RegisterSpellScript(spell_item_desperate_defense);
|
||||
RegisterSpellScript(spell_item_deviate_fish);
|
||||
RegisterSpellScript(spell_item_party_time);
|
||||
RegisterSpellScript(spell_item_dire_brew);
|
||||
RegisterSpellScript(spell_item_discerning_eye_beast_dummy);
|
||||
RegisterSpellScript(spell_item_echoes_of_light);
|
||||
RegisterSpellScript(spell_item_extract_gas);
|
||||
|
||||
Reference in New Issue
Block a user