#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