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; }
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; }