Hello, I have attack speed problem (skip damage) when i attack from the mount with the other races too, not only shaman, but at higher attack speed value, for example:
- after 140 attack speed points, shaman begins to miss attacks
- after 155 attack speed points, assassin begins to miss attacks
- after 155 attack speed points, sura begins to miss attacks
- after 170 attack speed points, warrior begins to miss attacks
I implemented Ikarus_ Developer fix for the shaman and it works great, now i'm trying to expand it for the other races.
this is the fix for shaman
- #ifdef __ENABLE_SHAMAN_ATTACK_FIX__
- float CActorInstance::__GetInvisibleTimeAdjust(const UINT uiSkill, const NRaceData::TAttackData& c_rAttackData) {
- static const int shamanw = 3, shamanm = 7;
- if ((GetRace() != shamanw && GetRace() != shamanm) ||
- uiSkill != 0 ||
- m_fAtkSpd < 1.3)
- return 0.0f;
- const auto scale = (m_fAtkSpd - 1.3) / 1.3;
- const auto inv = c_rAttackData.fInvisibleTime * 0.5;
- return inv * scale;
- }
- #endif
and this is the fix i tried to make for other races, atm in game looks good but i would like to ask you if you think this could be unexpected bugs or something, or if there is a better way to do this, thank you
- #ifdef __ENABLE_SHAMAN_ATTACK_FIX__
- float CActorInstance::__GetInvisibleTimeAdjust(const UINT uiSkill, const NRaceData::TAttackData& c_rAttackData) {
- static const int shamanw = 3, shamanm = 7;
- static const int warriorm = 0, warriorw = 4;
- static const int assassinf = 1, assassinm = 5;
- static const int suram = 2, suraf = 6;
- const auto scale = (m_fAtkSpd - 1.3) / 1.3;
- const auto inv = c_rAttackData.fInvisibleTime * 0.5;
- if ((GetRace() == shamanw || GetRace() == shamanm) && uiSkill == 0 && m_fAtkSpd > 1.3)
- return inv * scale;
- if ((GetRace() == warriorm || GetRace() == warriorw) && uiSkill == 0 && m_fAtkSpd > 1.3)
- return inv * scale;
- if ((GetRace() == assassinf || GetRace() == assassinm) && uiSkill == 0 && m_fAtkSpd > 1.3)
- return inv * scale;
- if ((GetRace() == suram || GetRace() == suraf) && uiSkill == 0 && m_fAtkSpd > 1.3)
- return inv * scale;
- return 0.0f;
- }
- #endif
- #################
- ### VERSION 2 ###
- #################
- #ifdef __ENABLE_SHAMAN_ATTACK_FIX__
- float CActorInstance::__GetInvisibleTimeAdjust(const UINT uiSkill, const NRaceData::TAttackData& c_rAttackData) {
- static const int shamanw = 3, shamanm = 7;
- static const int warriorm = 0, warriorw = 4;
- static const int assassinf = 1, assassinm = 5;
- static const int suram = 2, suraf = 6;
- const auto scale1 = (m_fAtkSpd - 1.3) / 1.3;
- const auto inv1 = c_rAttackData.fInvisibleTime * 0.5;
- const auto scale2 = (m_fAtkSpd - 1.4) / 1.4;
- const auto inv2 = c_rAttackData.fInvisibleTime * 0.5;
- const auto scale3 = (m_fAtkSpd - 1.6) / 1.6;
- const auto inv3 = c_rAttackData.fInvisibleTime * 0.5;
- if ((GetRace() == shamanw || GetRace() == shamanm) && uiSkill == 0 && m_fAtkSpd > 1.3)
- return inv1 * scale1;
- if ((GetRace() == warriorm || GetRace() == warriorw) && uiSkill == 0 && m_fAtkSpd > 1.6)
- return inv3 * scale3;
- if ((GetRace() == assassinf || GetRace() == assassinm) && uiSkill == 0 && m_fAtkSpd > 1.4)
- return inv2 * scale2;
- if ((GetRace() == suram || GetRace() == suraf) && uiSkill == 0 && m_fAtkSpd > 1.4)
- return inv2 * scale2;
- return 0.0f;
- }
- #endif