//Function : Damage //~~~~~~~~~~~~~~~~~~~~~~~~ //int _incomingdamage | Damage value of Player's attack //ELEM _elem | Element of Player's attack //~~~~~~~~~~~~~~~~~~~~~~~~ //Call this function to attack this Enemy. Minimum damage will always be 1. public void Damage(int _incomingdamage, ELEM _elem) { m_hpCurrent -= (int)Mathf.Clamp((float)_incomingdamage * elementChecker.CompareElement((int)data.Elem, (int)_elem) - (data.DEF + m_defBoost), 1, 99999); if (m_hpCurrent <= 0) { m_hpCurrent = 0; //Enemy dies } HPGaugeReference.SetWaitGauge((float)m_hpCurrent / (float)data.HP); }
public float CompareElement(int _defensive, int _offensive) { ELEM defensive = (ELEM)_defensive; ELEM offensive = (ELEM)_offensive; switch (offensive) { case ELEM.FIRE: { if (defensive == ELEM.WIND) { return(m_multiplierSuperEffective); } else if (defensive == ELEM.WATER) { return(m_multiplierNotEffective); } } break; case ELEM.WIND: { if (defensive == ELEM.VOID) { return(m_multiplierSuperEffective); } else if (defensive == ELEM.FIRE) { return(m_multiplierNotEffective); } } break; case ELEM.VOID: { if (defensive == ELEM.EARTH) { return(m_multiplierSuperEffective); } else if (defensive == ELEM.WIND) { return(m_multiplierNotEffective); } } break; case ELEM.EARTH: { if (defensive == ELEM.WATER) { return(m_multiplierSuperEffective); } else if (defensive == ELEM.VOID) { return(m_multiplierNotEffective); } } break; case ELEM.WATER: { if (defensive == ELEM.FIRE) { return(m_multiplierSuperEffective); } else if (defensive == ELEM.EARTH) { return(m_multiplierNotEffective); } } break; default: break; } return(1); }