Пример #1
0
    //----------------------------------------------------------------------------

    /*!
     *          @brief	限界突破パラメーター取得
     */
    //----------------------------------------------------------------------------
    static public double GetParamCharm(uint nLimitOverLevel, int nLimitOverType)
    {
        if (nLimitOverType == 0)
        {
            return(0);
        }

        MasterDataLimitOver cLimitOverMaster = MasterDataUtil.GetLimitOverFromID(nLimitOverType);

        if (cLimitOverMaster == null)
        {
            return(0);
        }

        // 成長タイプ
        MasterDataDefineLabel.LimitOverCurveType nGrowType = cLimitOverMaster.limit_grow;

        // 限界突破の最大値
        int fLimitOverMax = cLimitOverMaster.limit_over_max;

        //--------------------------------
        // 成長曲線タイプでべき乗係数を変化
        //--------------------------------
        float fRate = 1.0f;

        switch (nGrowType)
        {
        case MasterDataDefineLabel.LimitOverCurveType.NONE: fRate = 0.0f; break;

        case MasterDataDefineLabel.LimitOverCurveType.NORMAL: fRate = 1.0f; break;

        case MasterDataDefineLabel.LimitOverCurveType.PRECOCITY: fRate = 0.7f; break;

        case MasterDataDefineLabel.LimitOverCurveType.LATE_DEVELOPMENT: fRate = 1.5f; break;
        }

        int    nMaxRate   = 0;
        double dParamRate = 0;

        nMaxRate = cLimitOverMaster.limit_over_max_charm;

        if (nLimitOverLevel > 0)
        {
            double dRate = Math.Floor(nMaxRate * Mathf.Pow((float)nLimitOverLevel / (float)fLimitOverMax, fRate) * 10);
            dParamRate = dRate / 10;

            if (dParamRate > nMaxRate)
            {
                dParamRate = nMaxRate;
            }
        }

        return(dParamRate);
    }
Пример #2
0
    /*==========================================================================*/
    /*		func																*/
    /*==========================================================================*/

    //----------------------------------------------------------------------------

    /*!
     *          @brief	限界突破パラメーター取得
     */
    //----------------------------------------------------------------------------
    static public float GetParam(uint nLimitOverLevel, int nLimitOverType, int nLimitOverParam)
    {
        if (nLimitOverType <= 0)
        {
            return(0);
        }

        // nLimitOverTypeはFixIDとして値を受け取っています
        MasterDataLimitOver cLimitOverMaster = MasterDataUtil.GetLimitOverFromID(nLimitOverType);

        if (cLimitOverMaster == null)
        {
            return(0);
        }

        // 成長タイプ
        MasterDataDefineLabel.LimitOverCurveType nGrowType = cLimitOverMaster.limit_grow;

        //--------------------------------
        // 成長曲線タイプでべき乗係数を変化
        //--------------------------------
        float fRate = 1.0f;

        switch (nGrowType)
        {
        case MasterDataDefineLabel.LimitOverCurveType.NONE: fRate = 0.0f; break;

        case MasterDataDefineLabel.LimitOverCurveType.NORMAL: fRate = 1.0f; break;

        case MasterDataDefineLabel.LimitOverCurveType.PRECOCITY: fRate = 0.7f; break;

        case MasterDataDefineLabel.LimitOverCurveType.LATE_DEVELOPMENT: fRate = 1.5f; break;
        }

        int   nMaxRate   = 0;
        float nParamRate = 0;

        // 限界突破の最大値
        int fLimitOverMax = cLimitOverMaster.limit_over_max;

        switch (nLimitOverParam)
        {
        case (int)EGET.ePARAM_HP:     // HP上昇値
            nMaxRate = cLimitOverMaster.limit_over_max_hp;

            if (nLimitOverLevel > 0)
            {
                nParamRate = (nMaxRate * Mathf.Pow((float)nLimitOverLevel / (float)fLimitOverMax, fRate));
            }
            break;

        case (int)EGET.ePARAM_ATK:     // ATK上昇値
            nMaxRate = cLimitOverMaster.limit_over_max_atk;

            if (nLimitOverLevel > 0)
            {
                nParamRate = (nMaxRate * Mathf.Pow((float)nLimitOverLevel / (float)fLimitOverMax, fRate));
            }
            break;

        case (int)EGET.ePARAM_COST:     // COST上昇値
            nMaxRate = cLimitOverMaster.limit_over_max_cost;

            if (nLimitOverLevel > 0)
            {
                nParamRate = (int)(nMaxRate * Mathf.Pow((float)nLimitOverLevel / (float)fLimitOverMax, fRate));
            }
            break;

        case (int)EGET.ePARAM_LIMITOVER_MAX:     // 限界突破最大値
            nParamRate = fLimitOverMax;
            break;
        }
        return(nParamRate);
    }