From 877579d3864c504389b271f38a7516f2ec0eeb25 Mon Sep 17 00:00:00 2001 From: Chaplain Date: Sun, 25 Sep 2011 14:20:41 +0300 Subject: Revert "Core/Spells: Fix talent Sword Specialization for melee abilities" This reverts commit cdd41601579e6e76dc2d82ceeb9de24af31aa79e. --- src/server/game/Entities/Unit/Unit.cpp | 19 ------------------- 1 file changed, 19 deletions(-) mode change 100755 => 100644 src/server/game/Entities/Unit/Unit.cpp (limited to 'src/server') diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp old mode 100755 new mode 100644 index d6199cbd910..2d663f83856 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -8792,25 +8792,6 @@ bool Unit::HandleProcTriggerSpell(Unit* victim, uint32 damage, AuraEffect* trigg break; } - // Sword Specialization - if (auraSpellInfo->SpellFamilyName == SPELLFAMILY_GENERIC && auraSpellInfo->SpellIconID == 1462 && procSpell) - { - if (Player* plr = ToPlayer()) - { - if (cooldown && plr->HasSpellCooldown(16459)) - return false; - - // this required for attacks like Mortal Strike - plr->RemoveSpellCooldown(procSpell->Id); - - CastSpell(victim, procSpell->Id, true); - - if (cooldown) - plr->AddSpellCooldown(16459, 0, time(NULL) + cooldown); - return true; - } - } - // Blade Barrier if (auraSpellInfo->SpellFamilyName == SPELLFAMILY_DEATHKNIGHT && auraSpellInfo->SpellIconID == 85) { -- cgit v1.2.3 From 224bb96deb881d1ea4a0eded92016b4b7172d182 Mon Sep 17 00:00:00 2001 From: Chaplain Date: Sun, 25 Sep 2011 16:42:12 +0300 Subject: Core/Spells: Fix talent Sword Specialization. --- src/server/game/Entities/Unit/Unit.cpp | 15 +++++++-------- src/server/game/Entities/Unit/Unit.h | 1 + src/server/game/Spells/Spell.cpp | 4 ++++ 3 files changed, 12 insertions(+), 8 deletions(-) (limited to 'src/server') diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 2d663f83856..7bca9f97d88 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -1968,7 +1968,7 @@ void Unit::AttackerStateUpdate (Unit* victim, WeaponAttackType attType, bool ext return; // ignore ranged case // melee attack spell casted at main hand attack only - no normal melee dmg dealt - if (attType == BASE_ATTACK && m_currentSpells[CURRENT_MELEE_SPELL]) + if (attType == BASE_ATTACK && m_currentSpells[CURRENT_MELEE_SPELL] && !extra) m_currentSpells[CURRENT_MELEE_SPELL]->cast(); else { @@ -1993,15 +1993,14 @@ void Unit::AttackerStateUpdate (Unit* victim, WeaponAttackType attType, bool ext sLog->outStaticDebug("AttackerStateUpdate: (NPC) %u attacked %u (TypeId: %u) for %u dmg, absorbed %u, blocked %u, resisted %u.", GetGUIDLow(), victim->GetGUIDLow(), victim->GetTypeId(), damageInfo.damage, damageInfo.absorb, damageInfo.blocked_amount, damageInfo.resist); } +} - if (!extra && m_extraAttacks) +void Unit::HandleProcExtraAttackFor(Unit* victim) +{ + while (m_extraAttacks) { - while(m_extraAttacks) - { - AttackerStateUpdate(victim, BASE_ATTACK, true); - if (m_extraAttacks > 0) - --m_extraAttacks; - } + AttackerStateUpdate(victim, BASE_ATTACK, true); + --m_extraAttacks; } } diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index c54a627fa27..e25a5a9bcf9 100755 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1455,6 +1455,7 @@ class Unit : public WorldObject void CalculateMeleeDamage(Unit* pVictim, uint32 damage, CalcDamageInfo* damageInfo, WeaponAttackType attackType = BASE_ATTACK); void DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss); + void HandleProcExtraAttackFor(Unit* victim); void CalculateSpellDamageTaken(SpellNonMeleeDamage* damageInfo, int32 damage, SpellInfo const* spellInfo, WeaponAttackType attackType = BASE_ATTACK, bool crit = false); void DealSpellDamage(SpellNonMeleeDamage* damageInfo, bool durabilityLoss); diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 68dde527ab7..99b7e30e906 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3472,6 +3472,10 @@ void Spell::_handle_finish_phase() if (m_comboPointGain) m_caster->m_movedPlayer->GainSpellComboPoints(m_comboPointGain); } + + if (m_caster->m_extraAttacks && GetSpellInfo()->HasEffect(SPELL_EFFECT_ADD_EXTRA_ATTACKS)) + m_caster->HandleProcExtraAttackFor(m_caster->getVictim()); + // TODO: trigger proc phase finish here } -- cgit v1.2.3