diff --git a/hwe/sammo/Betting.php b/hwe/sammo/Betting.php index f2829ef6..83305a7e 100644 --- a/hwe/sammo/Betting.php +++ b/hwe/sammo/Betting.php @@ -26,7 +26,7 @@ class Betting return Json::encode($bettingType); } - public function purifyBettingKey(array $bettingType): array + public function purifyBettingKey(array $bettingType, bool $ignoreOver = false): array { $selectCnt = $this->info->selectCnt; sort($bettingType, SORT_NUMERIC); @@ -39,7 +39,7 @@ class Betting throw new \InvalidArgumentException('올바르지 않은 값이 있습니다.(0 미만)' . print_r($bettingType, true)); } - if (Util::array_last($bettingType) >= count($this->info->candidates)) { + if (!$ignoreOver && Util::array_last($bettingType) >= count($this->info->candidates)) { throw new \InvalidArgumentException('올바르지 않은 값이 있습니다.(초과)' . print_r($bettingType, true)); } diff --git a/hwe/sammo/Event/Action/FinishNationBetting.php b/hwe/sammo/Event/Action/FinishNationBetting.php index 6cecba38..214fee48 100644 --- a/hwe/sammo/Event/Action/FinishNationBetting.php +++ b/hwe/sammo/Event/Action/FinishNationBetting.php @@ -49,10 +49,20 @@ class FinishNationBetting extends \sammo\Event\Action } $winnerTypes = []; + + $notInBettingWinner = 0; foreach ($winnerNations as $winnerNationID) { - $winnerTypes[] = $nationIDMap[$winnerNationID]; + if(key_exists($winnerNationID, $nationIDMap)){ + $winnerTypes[] = $nationIDMap[$winnerNationID]; + } + else{ + //혹시라도 베팅 시점 이후에 생성된 국가라 없을 수 있다. + $winnerTypes[] = count($nationIDMap) + $notInBettingWinner; + $notInBettingWinner += 1; + } } - $winnerTypes = $bettingHelper->purifyBettingKey($winnerTypes); + + $winnerTypes = $bettingHelper->purifyBettingKey($winnerTypes, $notInBettingWinner > 0); $bettingHelper->giveReward($winnerTypes); $logger = new ActionLogger(0, 0, $env['year'], $env['month']);