Пример #1
0
uint16 CBattleEntity::EVA()
{
    int16 evasion = GetSkill(SKILL_EVA);

    if (evasion > 200) { //Evasion skill is 0.9 evasion post-200
        evasion = 200 + (evasion - 200)*0.9;
    }
    return dsp_max(0, (m_modStat[MOD_EVA] + evasion + AGI() / 2) * ((100 + m_modStat[MOD_EVAP]) / 100));
}
Пример #2
0
uint16 CBattleEntity::RACC(uint8 skill, uint16 bonusSkill)
{
    int skill_level = GetSkill(skill) + bonusSkill;
    uint16 acc = skill_level;
    if (skill_level > 200)
    {
        acc = 200 + (skill_level - 200)*0.9;
    }
    acc += getMod(MOD_RACC);
    acc += battleutils::GetRangedAccuracyBonuses(this);
    acc += AGI() / 2;
    if (this->objtype == TYPE_PET && ((CPetEntity*)this)->getPetType() == PETTYPE_AUTOMATON)
    {
        acc += ((CCharEntity*)PMaster)->PMeritPoints->GetMeritValue(MERIT_FINE_TUNING, (CCharEntity*)PMaster);
    }

    return ((100 + getMod(MOD_RACCP)) * acc) / 100 +
        dsp_min(((100 + getMod(MOD_FOOD_RACCP)) * acc) / 100, getMod(MOD_FOOD_RACC_CAP));
}
Пример #3
0
uint16  CBattleEntity::EVA()
{
    return dsp_max(0, (m_modStat[MOD_EVA] * (100 + m_modStat[MOD_EVAP])) / 100 + AGI() / 2);
}