From 0b4088fdb81b0ac5bcbd3d9d603c1687e3875b29 Mon Sep 17 00:00:00 2001 From: ariel- Date: Sun, 9 Oct 2016 20:12:08 -0300 Subject: Core/Spell: Fix 2 more off by one probability calc and duplicated logic in spell hit roll (cherry picked from commit 4cdbc1a09bf9a90d1ab756ca6a3ad084ff4199bb) --- src/server/game/Entities/Unit/Unit.cpp | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 999feb07560..3b9376afac5 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -2228,13 +2228,8 @@ bool Unit::isSpellBlocked(Unit* victim, SpellInfo const* spellProto, WeaponAttac if (victim->HasAuraType(SPELL_AURA_IGNORE_HIT_DIRECTION) || victim->HasInArc(float(M_PI), this)) { - // Check creatures flags_extra for disable block - if (victim->GetTypeId() == TYPEID_UNIT && - victim->ToCreature()->GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_NO_BLOCK) - return false; - float blockChance = GetUnitBlockChance(attackType, victim); - if (roll_chance_f(blockChance)) + if (blockChance && roll_chance_f(blockChance)) return true; } @@ -2339,7 +2334,7 @@ SpellMissInfo Unit::MeleeSpellHitResult(Unit* victim, SpellInfo const* spellInfo canDodge = false; // only if in front - if (victim->HasInArc(float(M_PI), this) || victim->HasAuraType(SPELL_AURA_IGNORE_HIT_DIRECTION)) + if (!victim->HasUnitState(UNIT_STATE_CONTROLLED) && (victim->HasInArc(float(M_PI), this) || victim->HasAuraType(SPELL_AURA_IGNORE_HIT_DIRECTION))) { int32 deflect_chance = victim->GetTotalAuraModifier(SPELL_AURA_DEFLECT_SPELLS) * 100; tmp += deflect_chance; @@ -2484,8 +2479,7 @@ SpellMissInfo Unit::MagicSpellHitResult(Unit* victim, SpellInfo const* spellInfo int32 tmp = 10000 - HitChance; - int32 rand = irand(0, 10000); - + int32 rand = irand(0, 9999); if (rand < tmp) return SPELL_MISS_MISS; -- cgit v1.2.3