Exemple #1
0
    public virtual void CalculatePreCoeffs()
    {
        preCoeffs[0].exchangeResult = ExchangeResult.No;
        preCoeffs[1].exchangeResult = ExchangeResult.No;

        preCoeffs[0].parry = (UnityEngine.Random.value <= defencePart);
        preCoeffs[1].parry = (UnityEngine.Random.value <= defencePart);

        // Предварительные коэффициенты на основе текущего набора оружия
        switch (weaponSet)
        {
        case WeaponSet.SwordShield:
            preCoeffs[0].damage  = UnityEngine.Random.Range(m_Tweakers.DamageBaseMin, m_Tweakers.DamageBaseMax + 1);
            preCoeffs[0].damage += series.AddSeriesDamage();
            preCoeffs[1].damage  = 0f;
            preCoeffs[0].block   = (UnityEngine.Random.Range(0f, 1f) <= m_Tweakers.BlockChance);
            preCoeffs[1].block   = (UnityEngine.Random.Range(0f, 1f) <= m_Tweakers.BlockChance);
            break;

        case WeaponSet.SwordSword:
            preCoeffs[0].damage         = UnityEngine.Random.Range(m_Tweakers.DamageBaseMin, m_Tweakers.DamageBaseMax + 1);
            preCoeffs[0].damage        += series.AddSeriesDamage();
            preCoeffs[1].damage         = UnityEngine.Random.Range(m_Tweakers.DamageBaseMin * m_Tweakers.CoefSecondSword, m_Tweakers.DamageBaseMax * m_Tweakers.CoefSecondSword);
            preCoeffs[1].damage        += series.AddSeriesDamage();
            preCoeffs[0].block          = false;
            preCoeffs[1].block          = false;
            preCoeffs[0].blockVs2Handed = false;
            break;

        case WeaponSet.TwoHandedSword:
            preCoeffs[0].damage         = UnityEngine.Random.Range(m_Tweakers.DamageBaseMin * m_Tweakers.Coef2HandedSword, m_Tweakers.DamageBaseMax * m_Tweakers.Coef2HandedSword);
            preCoeffs[0].damage        += series.AddSeriesDamage();
            preCoeffs[1].damage         = 0f;
            preCoeffs[0].block          = false;
            preCoeffs[1].block          = false;
            preCoeffs[0].blockVs2Handed = false;
            break;
        }
        // А также предварительные коэффициенты на основе решения
        switch (decision)
        {
        case Decision.Attack:
            preCoeffs[0].evade = false;
            preCoeffs[1].evade = false;
            break;

        default:                                                        // точно какая-то смена
            preCoeffs[0].evade          = (UnityEngine.Random.Range(0f, 1f) <= m_Tweakers.EvadeOnChangeChance);
            preCoeffs[1].evade          = (UnityEngine.Random.Range(0f, 1f) <= m_Tweakers.EvadeOnChangeChance);
            preCoeffs[0].block          = false;
            preCoeffs[1].block          = false;
            preCoeffs[0].blockVs2Handed = false;
            preCoeffs[0].parry          = false;
            preCoeffs[1].parry          = false;
            break;
        }
    }