Jump to content

tsunamirus

Members
  • Posts

    7
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Posts posted by tsunamirus

  1. Try this:

                if (spellProto->SpellFamilyFlags & UI64LIT(0x800000))
               {
                   // Mind Flay buffs - each depends on Shadow Word: Pain present on the target
                   if (pVictim->GetAura(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_PRIEST, UI64LIT(0x8000), 0, GetGUID()))
                   {
                       // Twisted Faith
                       if (Aura * aur = GetAura(SPELL_AURA_OVERRIDE_CLASS_SCRIPTS, SPELLFAMILY_PRIEST, 2848, 1))
                           DoneTotalMod *= (aur->GetModifier()->m_amount+100.0f) / 100.0f;
                       // Glyph of Mind Flay
                       if (Aura *aur = GetAura(55687, EFFECT_INDEX_0))
                           DoneTotalMod *= (aur->GetModifier()->m_amount+100.0f) / 100.0f;
                   }
               }

  2. float Unit::MeleeMissChanceCalc(const Unit *pVictim, WeaponAttackType attType) const
    {
       if(!pVictim)
           return 0.0f;
    
       // Base misschance 5%
       float misschance = 5.0f;
    
       // DualWield - Melee spells and physical dmg spells - 5% , white damage 24%
       if (haveOffhandWeapon() && attType != RANGED_ATTACK)
       {
           bool isNormal = false;
           for (uint32 i = CURRENT_FIRST_NON_MELEE_SPELL; i < CURRENT_MAX_SPELL; ++i)
           {
               if( m_currentSpells[i] && (GetSpellSchoolMask(m_currentSpells[i]->m_spellInfo) & SPELL_SCHOOL_MASK_NORMAL) )
               {
                   isNormal = true;
                   break;
               }
           }
           if (!isNormal && !m_currentSpells[CURRENT_MELEE_SPELL])
               misschance += 19.0f;
       }
    
       int32 skillBonus = int32(pVictim->GetDefenseSkillValue(this)) - int32(this->GetWeaponSkillValue(attType, pVictim));
    
       if (abs(skillBonus) <= 10)
           misschance += skillBonus * 0.1f;
       else
           misschance += 1.0f + (skillBonus - 10) * 0.4f;
    
       // Hit chance from attacker based on ratings and auras
       if (attType == RANGED_ATTACK)
           misschance -= m_modRangedHitChance;
       else
           misschance  -= m_modMeleeHitChance;
    
       // Hit chance for victim based on ratings
       if (pVictim->GetTypeId()==TYPEID_PLAYER)
       {
           if (attType == RANGED_ATTACK)
               misschance += ((Player*)pVictim)->GetRatingBonusValue(CR_HIT_TAKEN_RANGED);
           else
               misschance += ((Player*)pVictim)->GetRatingBonusValue(CR_HIT_TAKEN_MELEE);
       }
    
       // Modify miss chance by victim auras
       if(attType == RANGED_ATTACK)
           misschance -= pVictim->GetTotalAuraModifier(SPELL_AURA_MOD_ATTACKER_RANGED_HIT_CHANCE);
       else
           misschance -= pVictim->GetTotalAuraModifier(SPELL_AURA_MOD_ATTACKER_MELEE_HIT_CHANCE);
    
       // Limit miss chance from 0 to 60%
       if ( misschance < 0.0f)
           return 0.0f;
       if ( misschance > 60.0f)
           return 60.0f;
    
       return misschance;
    }
    

    whole MeleeMissChanceCalc function with formula accordng to Wowwiki.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use