From e2fe17034aeae39d8e2354aa7ef7aa2fa235780a Mon Sep 17 00:00:00 2001 From: Wowka321 Date: Wed, 3 Feb 2010 20:48:17 +0100 Subject: [PATCH] [9295] Implement SPELL_AURA_MOD_BLOCK_CRIT_CHANCE This fixes talent 47294 and ranks Signed-off-by: Lightguard --- src/game/SpellAuras.cpp | 2 +- src/game/Unit.cpp | 5 +++++ src/shared/revision_nr.h | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 421fbbb5a..87ec3ff6d 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -303,7 +303,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]= &Aura::HandleAuraModIncreaseHealth, //250 SPELL_AURA_MOD_INCREASE_HEALTH_2 &Aura::HandleNULL, //251 SPELL_AURA_MOD_ENEMY_DODGE &Aura::HandleNULL, //252 haste all? - &Aura::HandleNULL, //253 SPELL_AURA_MOD_BLOCK_CRIT_CHANCE + &Aura::HandleNoImmediateEffect, //253 SPELL_AURA_MOD_BLOCK_CRIT_CHANCE implemented in Unit::CalculateMeleeDamage &Aura::HandleNULL, //254 SPELL_AURA_MOD_DISARM_SHIELD disarm Shield &Aura::HandleNoImmediateEffect, //255 SPELL_AURA_MOD_MECHANIC_DAMAGE_TAKEN_PERCENT implemented in Unit::SpellDamageBonus &Aura::HandleNoReagentUseAura, //256 SPELL_AURA_NO_REAGENT_USE Use SpellClassMask for spell select diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 72a63a290..15830d569 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -1457,6 +1457,11 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da damageInfo->HitInfo |= HITINFO_BLOCK; damageInfo->procEx |= PROC_EX_BLOCK; damageInfo->blocked_amount = damageInfo->target->GetShieldBlockValue(); + + // Target has a chance to double the blocked amount if it has SPELL_AURA_MOD_BLOCK_CRIT_CHANCE + if (roll_chance_i(pVictim->GetTotalAuraModifier(SPELL_AURA_MOD_BLOCK_CRIT_CHANCE))) + damageInfo->blocked_amount *= 2; + if (damageInfo->blocked_amount >= damageInfo->damage) { damageInfo->TargetState = VICTIMSTATE_BLOCKS; diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 0742e8d6c..0c0a6d602 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "9294" + #define REVISION_NR "9295" #endif // __REVISION_NR_H__