2.8 KiB
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.
기획팀 밸런싱 시 유의사항
'500%'는 "MaxHP를 500% 배율 적용"이 아니라, 파이프라인에 의해 고정값 5.0으로 변환- 레벨업당 고정 증분 방식 (f_Value + f_ValuePerLv * (lv-1))
- Phase 3 기여도 재계산 시 DPS +1067%라는 비정상 수치는 해소됨 — 실제 효과는 고정값 수준
- 다른 스탯(Attack_Min, Attack_Max, MaxPotion 등)도 동일한 파싱 로직 적용
권장 조치
기획 엑셀 시트에서 s_Value 컬럼 포맷을 정수 또는 퍼센트 한 가지로 통일 권장. 현재 런타임 결과는 동일하므로 긴급 수정 불필요.