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); }
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; } }