//---------------------------------------------------------------------------- /*! * @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); }
/*==========================================================================*/ /* 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); }