public string ConvertMoveEffectToString(EMoveEffect effect) { switch (effect) { case EMoveEffect.PerformanceBased: return("Performance Based"); case EMoveEffect.TempoDown: return("Tempo Down"); case EMoveEffect.TempoUp: return("Tempo Up"); default: return(effect.ToString()); } }
public void ApplyDamage() { CharacterData attackingChar = null; CharacterData defendingChar = null; if (_lastToMoveIsPlayer) { attackingChar = player; defendingChar = enemy; } else { attackingChar = enemy; defendingChar = player; } float damage = 0; float tempoMultiplier = 1; if (_lastToMoveIsPlayer) { if (playerEffect == EMoveEffect.TempoUp) { tempoMultiplier += statsModifiers.SpeedEffectMultiplier; } if (playerEffect == EMoveEffect.PerformanceBased) { damage = statsModifiers.ExtraHypeDamage * hypeBarValue; damage += (currentMove.performanceDamage + currentMove.baseDamage) * statsModifiers.PerformanceModifier(attackingChar.GetCurveAPerformance()) * (currentmoveScore / currentMove.rythmData.Length); } else { damage = currentMove.baseDamage * statsModifiers.AtackModifier(attackingChar.GetCurveAttack()) + statsModifiers.ExtraHypeDamage * hypeBarValue; damage += currentMove.performanceDamage * tempoMultiplier * statsModifiers.PerformanceModifier(attackingChar.GetCurveAPerformance()) * (currentmoveScore / currentMove.rythmData.Length); } if (currentmoveScore == currentMove.rythmData.Length) { if (playerEffect == EMoveEffect.Perfection) { damage += currentMove.extraDamage * statsModifiers.PerfectionEffectMultiplier * statsModifiers.PerformanceModifier(attackingChar.GetCurveAPerformance()); } else { damage += currentMove.extraDamage * statsModifiers.PerformanceModifier(attackingChar.GetCurveAPerformance()); } } if (playerEffect == EMoveEffect.PerformanceBased) { damage *= statsModifiers.PerformanceBasedEffectMultiplier; } damage -= damage * statsModifiers.DefenseModifier(defendingChar.GetCurveDefense()); enemycurrenthealth -= damage; correctInputCombo = 0; StartCoroutine(DelayedNextTurn(true)); } else { if (enemyEffect == EMoveEffect.TempoUp) { tempoMultiplier += statsModifiers.SpeedEffectMultiplier; } if (enemyEffect == EMoveEffect.PerformanceBased) { damage = statsModifiers.ExtraHypeDamage * hypeBarValue; damage += (currentMove.performanceDamage + currentMove.baseDamage) * statsModifiers.PerformanceModifier(attackingChar.GetCurveAPerformance()) * (1 - (currentmoveScore / currentMove.rythmData.Length)); } else { damage = currentMove.baseDamage * statsModifiers.AtackModifier(attackingChar.GetCurveAttack()) + statsModifiers.ExtraHypeDamage * hypeBarValue; damage += currentMove.performanceDamage * tempoMultiplier * statsModifiers.PerformanceModifier(attackingChar.GetCurveAPerformance()) * (1 - (currentmoveScore / currentMove.rythmData.Length)); } if (currentmoveScore == 0) { if (enemyEffect == EMoveEffect.Perfection) { damage += currentMove.extraDamage * statsModifiers.PerfectionEffectMultiplier * statsModifiers.PerformanceModifier(attackingChar.GetCurveAPerformance()); } else { damage += currentMove.extraDamage * statsModifiers.PerformanceModifier(attackingChar.GetCurveAPerformance()); } } if (enemyEffect == EMoveEffect.PerformanceBased) { damage *= statsModifiers.PerformanceBasedEffectMultiplier; } damage -= damage * statsModifiers.DefenseModifier(defendingChar.GetCurveDefense()); playercurrenthealth -= damage; correctInputCombo = 0; StartCoroutine(DelayedNextTurn(false)); } if (_lastToMoveIsPlayer) { playerEffect = currentMove.effect; OnUIUpdate?.Invoke(true, false); } else { enemyEffect = currentMove.effect; OnUIUpdate?.Invoke(true, true); } AnimatorTest.hip_Hop_0 = false; Debug.Log(damage + " damage dealt"); BattleAudioController.Instance.FadeBackToMain(); }