Exemple #1
0
int16 CBattleEntity::GetRangedWeaponDelay(bool tp)
{
    CItemWeapon* PRange = (CItemWeapon*)m_Weapons[SLOT_RANGED];
    CItemWeapon* PAmmo = (CItemWeapon*)m_Weapons[SLOT_AMMO];

    // base delay
    int delay = 240;

    if (PRange != nullptr && PRange->getDamage() != 0) {
        delay += ((PRange->getDelay() * 60) / 1000);
    }

    if (PAmmo != nullptr && PAmmo->isThrowing())
    {
        // this is a throwing weapon
        delay += ((PAmmo->getDelay() * 60) / 1000);
    }

    delay = (((delay - getMod(MOD_RANGED_DELAY)) * 1000) / 110);

    //apply haste and delay reductions that don't affect tp
    if (!tp)
    {
        delay = delay * ((float)(100 + getMod(MOD_RANGED_DELAYP)) / 100);
    }
    else {

        if (PAmmo != nullptr && PAmmo->getDamage() != 0 && !PAmmo->isThrowing()) {
            delay += ((PAmmo->getDelay() * 60) / 1000);
        }
    }
    return delay;
}
Exemple #2
0
int16 CBattleEntity::GetAmmoDelay(bool tp)
{
    CItemWeapon* PAmmo = (CItemWeapon*)m_Weapons[SLOT_AMMO];

    int delay = 240;
    if (PAmmo != nullptr && PAmmo->getDamage() != 0) {
        delay += ((PAmmo->getDelay() * 60) / 1000);
    }

    delay = (((delay - getMod(MOD_RANGED_DELAY)) * 1000) / 110);
    //don't think delay reduction affects cooldown time
    //if (!tp)
    //{
    //	delay = delay * ((float)(100 + getMod(MOD_RANGED_DELAYP))/100);
    //}
    return delay;
}