rendered paste bodyIndex: game/Spell.cpp
===================================================================
--- game/Spell.cpp (revision 5242)
+++ game/Spell.cpp (working copy)
@@ -3798,7 +3799,7 @@
case SPELL_EFFECT_WEAPON_DAMAGE_NOSCHOOL:
{
if(m_caster->GetTypeId() != TYPEID_PLAYER) return SPELL_FAILED_TARGET_NOT_PLAYER;
- if(m_spellInfo->rangeIndex == 1 || m_spellInfo->rangeIndex == 2 || m_spellInfo->rangeIndex == 7)
+ if(m_spellInfo->rangeIndex == 1 || m_spellInfo->rangeIndex == 2 || m_spellInfo->rangeIndex == 6 || m_spellInfo->rangeIndex == 7)
break;
Item *pItem = ((Player*)m_caster)->GetItemByPos( INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_RANGED );
if(!pItem || pItem->IsBroken() || pItem->GetProto()->Class != ITEM_CLASS_WEAPON )
Index: game/SpellEffects.cpp
===================================================================
--- game/SpellEffects.cpp (revision 5242)
+++ game/SpellEffects.cpp (working copy)
@@ -3210,7 +3253,7 @@
// FIXME: we also need select OFF_ATTACK if trigering some spell at offhand attack
else if(m_spellInfo->SpellVisual==3136 || m_spellInfo->SpellIconID==2293)
attType = BASE_ATTACK;
- else if(m_spellInfo->rangeIndex != 1 && m_spellInfo->rangeIndex != 2 && m_spellInfo->rangeIndex != 7)
+ else if(m_spellInfo->rangeIndex != 1 && m_spellInfo->rangeIndex != 2 && m_spellInfo->rangeIndex != 6 && m_spellInfo->rangeIndex != 7)
{
attType = RANGED_ATTACK;
Index: game/Unit.cpp
===================================================================
--- game/Unit.cpp (revision 5242)
+++ game/Unit.cpp (working copy)
@@ -4308,7 +4308,7 @@
return;
}
}
- if( ((Player*)this)->HasSpellCooldown(32910))
+ if( ((Player*)this)->HasSpellCooldown(25504) || ((Player*)this)->HasSpellCooldown(33750))
return;
SpellEntry const* windfurySpellEntry = sSpellStore.LookupEntry(windfurySpellId);
@@ -4316,9 +4316,35 @@
int32 addvalue = windfurySpellEntry->EffectBasePoints[0];
CastCustomSpell(this, 32910, &addvalue, NULL, NULL, true, castItem, triggeredByAura);
+
+ // Windfury Deals damage Equal to 2 attacks
+ SpellModifier *mod = new SpellModifier;
+ mod->op = SPELLMOD_DAMAGE;
+ mod->value = 100;
+ mod->type = SPELLMOD_PCT;
+ mod->spellId = 0;
+ mod->effectId = 0;
+ mod->lastAffected = 0;
+ mod->mask = 0x800000LL;
+ mod->charges = 0;
+
+ ((Player*)this)->AddSpellMod(mod, true);
+
+ // Main-Hand
+ int32 MainAPBonus = (int32)CalculateSpellDamage(dummySpell,0,dummySpell->EffectBasePoints[0],pVictim)/14 * GetAttackTime(BASE_ATTACK)/1000;
+ CastCustomSpell(pVictim,25504,&MainAPBonus,NULL,NULL,true,NULL,triggeredByAura);
+ ((Player*)this)->AddSpellCooldown(25504,0,time(NULL) + 3);
+
+ // Off-Hand
+ if(haveOffhandWeapon())
+ {
+ int32 OffAPBonus = (int32)CalculateSpellDamage(dummySpell,0,dummySpell->EffectBasePoints[0],pVictim)/14 * GetAttackTime(OFF_ATTACK)/1000;
+ CastCustomSpell(pVictim,33750,&OffAPBonus,NULL,NULL,true,NULL,triggeredByAura);
+ ((Player*)this)->AddSpellCooldown(33750,0,time(NULL) + 3);
+ }
+
+ ((Player*)this)->AddSpellMod(mod, false);
- ((Player*)this)->AddSpellCooldown(32910,0,time(NULL) + 3);
-
return;
}