int SwitchAttackIndex(IWeapon weapon) { AttackMode[] modes = weapon.GetAttackMode(); if (modes.Length == 0) { return(-1); } m_ModeIndex.Clear(); int length = modes.Length; if (entity.Group != null) { for (int i = 0; i < length; i++) { AttackMode mode = modes[i]; if (mode.IsInCD()) { continue; } if (mode.type == AttackType.Ranged) { m_ModeIndex.Add(i); } } } else { for (int i = 0; i < length; i++) { AttackMode mode = modes[i]; if (mode.IsInCD()) { continue; } if (selectattackEnemy.SqrDistanceLogic >= mode.minRange * mode.minRange && selectattackEnemy.SqrDistanceLogic <= mode.maxRange * mode.maxRange) { m_ModeIndex.Add(i); } } } if (m_ModeIndex.Count == 0) { return(Random.Range(0, modes.Length)); } else { return(m_ModeIndex[Random.Range(0, m_ModeIndex.Count)]); } }
public virtual bool IsInCD(int index = 0) { return(m_AttackRanges.IsInCD()); }