BurningTimesAi/공유/소통/완료/2026-04-16_REQ001_응답_각성트리_퍼...

2.8 KiB

from to type subject priority status date ref
개발팀장 기획팀장 REQ응답 REQ001 응답 — 각성트리 퍼센트값 파싱 방식 확인 high 대기 2026-04-16 공유/소통/기획팀→개발팀/2026-04-14_REQ001_각성트리_퍼센트값_해석확인.md

REQ001 응답 — 각성트리 퍼센트값('500%') 실제 파싱 방식

결론

'500%'는 런타임에서 5.0f(= 500 * 0.01)로 파싱된다. '5'와 결과가 동일하며, 데이터 입력 형식의 불일치(입력 오류)이다.

기획팀이 제시한 4가지 가능성 중 사실상 (D) 데이터 입력 오류에 해당. 단, 런타임 결과는 정상 동작하므로 긴급 수정은 불필요.

코드 근거

핵심 파싱 메서드: table_base.cs 20~26행 Get_Value(string str)

protected float Get_Value(string str)
{
    if (IsPercentValue(str)) return float.Parse(str.Replace("%", "")) * 0.01f;
    else if (str.Contains("s")) return float.Parse(str.Replace("s", ""));
    else if (str.Contains("exp")) return float.Parse(str.Replace("exp", ""));
    return float.Parse(str);
}
  • % 포함 시: 숫자 추출 후 * 0.01f 적용
  • % 미포함 시: 숫자를 그대로 float 변환

table_PCAwakening.cs 53행에서 호출

temp.f_Value = Get_Value(temp.s_Value);

파싱 결과 비교

s_Value 파싱 결과 (f_Value) 해석
"5" 5.0f 고정값 5
"500%" 5.0f (= 500 * 0.01) 퍼센트 표기이나 결과 동일

실측 검증: PCID=6001, MaxHP 노드

  • Step 2, 14, 26: s_Value="5" => f_Value = 5.0
  • Step 39, 51, 63, 86, 110, 123: s_Value="500%" => f_Value = 5.0

PCID 6001에만 500% 형식이 다수 존재. PCID 6002~6005는 대부분 정수 형식 사용.

만렙 총 효과 계산 (기획팀 질문 2번)

Get_Value(int pcid, ServerData sdata, int addlv) 메서드: f_Value + (f_ValuePerLv * (lv - 1))

따라서 s_Value="500%", s_UpgradeStatValuePara="100%", n_MaxLv=5 일 때:

  • f_Value = 5.0, f_ValuePerLv = 1.0 (100% * 0.01)
  • 만렙 효과 = 5.0 + 1.0 * 4 = 9.0 (고정값 +9)

기획팀 추정 900%는 잘못된 해석. 실제는 고정값 +9.

기획팀 밸런싱 시 유의사항

  1. '500%'는 "MaxHP를 500% 배율 적용"이 아니라, 파이프라인에 의해 고정값 5.0으로 변환
  2. 레벨업당 고정 증분 방식 (f_Value + f_ValuePerLv * (lv-1))
  3. Phase 3 기여도 재계산 시 DPS +1067%라는 비정상 수치는 해소됨 — 실제 효과는 고정값 수준
  4. 다른 스탯(Attack_Min, Attack_Max, MaxPotion 등)도 동일한 파싱 로직 적용

권장 조치

기획 엑셀 시트에서 s_Value 컬럼 포맷을 정수 또는 퍼센트 한 가지로 통일 권장. 현재 런타임 결과는 동일하므로 긴급 수정 불필요.