콘텐츠로 이동

슬롯 배수 오지급 버그 - 잘못된 괄호 위치와 와일드 검사 누락

배수 피처가 있는 슬롯에서 두 가지 오지급이 있었다.

  1. 프리스핀에서 9 심볼이 나왔는데 배수가 나타났다. 9 심볼일 때는 배수가 나타나지 않아야 한다.
  2. 여러 라인이 당첨된 경우, 페이라인에 스캐터 심볼이 없는데도 배수가 곱해진 상금이 지급됐다. 스캐터 심볼이 없는 라인은 배수 없이 지급해야 한다.

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

비교를 함수 반환값에 대해 하도록 고쳤다.

// 변경 전
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);