Exemplo n.º 1
0
    public void reinforceCalc(out int resultLevel, out float resultPer, out int price, GameIDData org, List <GameIDData> sources)
    {
        P_Reinforce orgData = getReinforceData();

        if (org.level >= MAX_LEVEL)
        {
            Debug.LogError("강화 오류!");
        }

        // 재료 아이템에서 추가 경험치를 얻는다.
        int getExp = 0;


        foreach (GameIDData src in sources)         // LEO_BD1_1_0_0
        {
// 구버전.
//			for ( $level = 1; $level <= $srcLevel; $level++ )
//			{
//				$srcKey = $srcParts[0].$srcRare.$srcLevel;
//				$getExp += WSDBGameData::$GM_EQUIPMENT_REINFORCE[$srcKey]['GIVE_EXP'];
//			}

//			for ( int i = 1 ; i <= src.level; ++i )
//			{
//				getExp += UnityEngine.Mathf.CeilToInt( src.getReinforceData(i).gx );
//			}

// 신버전.
//			$getExp += WSDBGameData::$GM_EQUIPMENT_REINFORCE[$srcKey]['GIVE_EXP'];

            if (org.rare == RareType.SS && src.rare < RareType.SS)
            {
                getExp += UnityEngine.Mathf.CeilToInt(src.getReinforceData(src.level).gx / 2);
            }
            else
            {
                getExp += UnityEngine.Mathf.CeilToInt(src.getReinforceData(src.level).gx);
            }
        }

        // 강화 비용 정산
        price = orgData.rp * sources.Count;

        addExpRune(org, getExp, out resultLevel, out resultPer);
    }
Exemplo n.º 2
0
    public void addExpRune(GameIDData orgData, int plusExp, out int resultLevel, out float resultPer)
    {
        if (MAX_LEVEL <= orgData.level)
        {
            Debug.LogError("오류");
        }

        int orgLevel = orgData.level;
        int orgExp   = orgData.exp;

        do
        {
            P_Reinforce data = orgData.getReinforceData(orgLevel);

            if (plusExp >= (data.nx - orgExp))
            {
                orgLevel += 1;
                plusExp  -= (data.nx - orgExp);
                orgExp    = 0;
            }
            else
            {
                orgExp += plusExp;
                plusExp = 0;
            }
        } while (0 < plusExp && 20 > orgLevel);


        resultLevel = orgLevel;

        resultPer = (float)orgExp / (float)getReinforceData(resultLevel).nx;
        if (resultPer > 1)
        {
            resultPer = 1;
        }
    }