aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2013_07_22_00_world_spell_spell_script_names_434.sql3
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp10
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp2
-rw-r--r--src/server/scripts/Spells/spell_warrior.cpp46
4 files changed, 50 insertions, 11 deletions
diff --git a/sql/updates/world/2013_07_22_00_world_spell_spell_script_names_434.sql b/sql/updates/world/2013_07_22_00_world_spell_spell_script_names_434.sql
new file mode 100644
index 00000000000..46059c6ddcc
--- /dev/null
+++ b/sql/updates/world/2013_07_22_00_world_spell_spell_script_names_434.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `spell_id`=20230;
+INSERT INTO `spell_script_names`(`spell_id`, `ScriptName`) VALUES
+(20230,'spell_warr_retaliation');
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 90aaac251c2..4a4401d14be 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -5433,16 +5433,6 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere
}
case SPELLFAMILY_WARRIOR:
{
- // Retaliation
- if (dummySpell->SpellFamilyFlags[1] & 0x8)
- {
- // check attack comes not from behind
- if (!HasInArc(M_PI, victim))
- return false;
-
- triggered_spell_id = 22858;
- break;
- }
// Glyph of Sunder Armor
if (dummySpell->Id == 58387)
{
diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp
index 9578c246c94..9ee4075bd38 100644
--- a/src/server/scripts/Spells/spell_priest.cpp
+++ b/src/server/scripts/Spells/spell_priest.cpp
@@ -94,6 +94,7 @@ class spell_pri_body_and_soul : public SpellScriptLoader
void HandleEffectSpeedProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
+ // Proc only with Power Word: Shield or Leap of Faith
if (!(eventInfo.GetDamageInfo()->GetSpellInfo()->SpellFamilyFlags[0] & 0x1 || eventInfo.GetDamageInfo()->GetSpellInfo()->SpellFamilyFlags[2] & 0x80000))
return;
@@ -103,6 +104,7 @@ class spell_pri_body_and_soul : public SpellScriptLoader
void HandleEffectDispelProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
+ // Proc only with Cure Disease
if (eventInfo.GetDamageInfo()->GetSpellInfo()->Id != SPELL_PRIEST_CURE_DISEASE || eventInfo.GetProcTarget() != GetTarget())
return;
diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp
index 9688554f4f9..ad287e04a6d 100644
--- a/src/server/scripts/Spells/spell_warrior.cpp
+++ b/src/server/scripts/Spells/spell_warrior.cpp
@@ -42,11 +42,12 @@ enum WarriorSpells
SPELL_WARRIOR_JUGGERNAUT_CRIT_BONUS_TALENT = 64976,
SPELL_WARRIOR_LAST_STAND_TRIGGERED = 12976,
SPELL_WARRIOR_RALLYING_CRY = 97463,
+ SPELL_WARRIOR_RETALIATION_DAMAGE = 22858,
SPELL_WARRIOR_SECOUND_WIND_PROC_RANK_1 = 29834,
SPELL_WARRIOR_SECOUND_WIND_PROC_RANK_2 = 29838,
SPELL_WARRIOR_SECOUND_WIND_TRIGGER_RANK_1 = 29841,
SPELL_WARRIOR_SECOUND_WIND_TRIGGER_RANK_2 = 29842,
- SPELL_WARRIOR_SHIELD_SLAM = 23922 ,
+ SPELL_WARRIOR_SHIELD_SLAM = 23922,
SPELL_WARRIOR_SLAM = 50782,
SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK = 26654,
SPELL_WARRIOR_TAUNT = 355,
@@ -529,6 +530,48 @@ class spell_warr_rend : public SpellScriptLoader
}
};
+// 20230 - Retaliation
+class spell_warr_retaliation : public SpellScriptLoader
+{
+ public:
+ spell_warr_retaliation() : SpellScriptLoader("spell_warr_retaliation") { }
+
+ class spell_warr_retaliation_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_warr_retaliation_AuraScript);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_WARRIOR_RETALIATION_DAMAGE))
+ return false;
+ return true;
+ }
+
+ bool CheckProc(ProcEventInfo& eventInfo)
+ {
+ // check attack comes not from behind
+ return GetTarget()->isInFront(eventInfo.GetProcTarget(), M_PI);
+ }
+
+ void HandleEffectProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
+ {
+ PreventDefaultAction();
+ GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_WARRIOR_RETALIATION_DAMAGE, true, NULL, aurEff);
+ }
+
+ void Register() OVERRIDE
+ {
+ DoCheckProc += AuraCheckProcFn(spell_warr_retaliation_AuraScript::CheckProc);
+ OnEffectProc += AuraEffectProcFn(spell_warr_retaliation_AuraScript::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
+ }
+ };
+
+ AuraScript* GetAuraScript() const OVERRIDE
+ {
+ return new spell_warr_retaliation_AuraScript();
+ }
+};
+
// 64380, 65941 - Shattering Throw
class spell_warr_shattering_throw : public SpellScriptLoader
{
@@ -934,6 +977,7 @@ void AddSC_warrior_spell_scripts()
new spell_warr_overpower();
new spell_warr_rallying_cry();
new spell_warr_rend();
+ new spell_warr_retaliation();
new spell_warr_second_wind_proc();
new spell_warr_second_wind_trigger();
new spell_warr_shattering_throw();