슬롯 배수 오지급 버그 - 잘못된 괄호 위치와 와일드 검사 누락
배수 피처가 있는 슬롯에서 두 가지 오지급이 있었다.
- 프리스핀에서 9 심볼이 나왔는데 배수가 나타났다. 9 심볼일 때는 배수가 나타나지 않아야 한다.
- 여러 라인이 당첨된 경우, 페이라인에 스캐터 심볼이 없는데도 배수가 곱해진 상금이 지급됐다. 스캐터 심볼이 없는 라인은 배수 없이 지급해야 한다.
1. 함수 인자 안에 들어간 비교식
섹션 제목: “1. 함수 인자 안에 들어간 비교식”프리스핀 당첨 이후 평가(Evaluation) 처리에서 match 검사의 비교식이 함수의 반환값이 아니라 인자 안에 들어가 있었다.
if (result->GetNumMatch(pSymbolWD->id > 0))pSymbolWD->id > 0이 먼저 평가되어 bool이 인자로 넘어가므로, 실제로 match되지 않는 심볼(예: 9)에도 조건이 참이 되어 배수가 적용됐다.
2. 와일드(스캐터) 심볼 검사 누락
섹션 제목: “2. 와일드(스캐터) 심볼 검사 누락”같은 경로에서 당첨 라인에 와일드(스캐터) 심볼이 있는지 확인하는 로직이 없어, 항상 배수가 적용된 상금이 만들어졌다.
win.second = result->CreateNewWinMultiplied(result->wildMultiplier, pRefLegend);1. 괄호 위치 수정
섹션 제목: “1. 괄호 위치 수정”비교를 함수 반환값에 대해 하도록 고쳤다.
// 변경 전if (result->GetNumMatch(pSymbolWD->id > 0))// 변경 후if (result->GetNumMatch(pSymbolWD->id) > 0)2. 당첨 라인의 와일드 존재 여부 확인
섹션 제목: “2. 당첨 라인의 와일드 존재 여부 확인”당첨된 릴 범위 안에 와일드 심볼이 있을 때만 배수를 적용하도록 검사를 추가했다.
bool hasWild = false;for (int32_t reel = 0; reel < pRefLegend->numMatches; reel++){ if (result->GetNumMatchInColumn(reel, pSymbolWD->id) > 0) { hasWild = true; break; }}if (hasWild) win.second = result->CreateNewWinMultipliedAndSet(result->wildMultiplier, pRefLegend);