コード例 #1
0
    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());
        }
    }
コード例 #2
0
    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();
    }