aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKandera <KanderaDev@gmail.com>2012-03-28 08:29:42 -0400
committerKandera <KanderaDev@gmail.com>2012-03-28 08:29:42 -0400
commit6763c237778a6fda4380ea1351ff3d79414acab9 (patch)
tree180f079b9f4b212e8fc3844f6d999c99063322a1 /src
parente95d614f5240a01c38cbd3cff390c654cec56a97 (diff)
Core/Spells: attempt to fix penance doing nothing on "friendly" non faction targets. should return invalid targets
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp
index b012fe5f183..a327a200c98 100644
--- a/src/server/scripts/Spells/spell_priest.cpp
+++ b/src/server/scripts/Spells/spell_priest.cpp
@@ -185,6 +185,11 @@ class spell_pri_penance : public SpellScriptLoader
{
PrepareSpellScript(spell_pri_penance_SpellScript);
+ bool Load()
+ {
+ return GetCaster()->GetTypeId() == TYPEID_PLAYER;
+ }
+
bool Validate(SpellInfo const* spellEntry)
{
if (!sSpellMgr->GetSpellInfo(PRIEST_SPELL_PENANCE_R1))
@@ -219,10 +224,21 @@ class spell_pri_penance : public SpellScriptLoader
}
}
+ SpellCastResult CheckCast()
+ {
+ Player* caster = GetCaster()->ToPlayer();
+ if (GetTargetUnit())
+ if (Player* target = GetTargetUnit()->ToPlayer())
+ if (caster->GetTeam() != target->GetTeam() && !caster->IsValidAttackTarget(target))
+ return SPELL_FAILED_BAD_TARGETS;
+ return SPELL_CAST_OK;
+ }
+
void Register()
{
// add dummy effect spell handler to Penance
OnEffectHitTarget += SpellEffectFn(spell_pri_penance_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
+ OnCheckCast += SpellCheckCastFn(spell_pri_penance_SpellScript::CheckCast);
}
};