修复豹子号5,30不显示中大奖的问题
This commit is contained in:
@@ -36,8 +36,10 @@ class PlayStartLogic
|
||||
private const MIN_COIN_EXTRA = 100;
|
||||
/** 豹子号中大奖额外平台币(无 BIGWIN 配置时兜底) */
|
||||
private const SUPER_WIN_BONUS = 500;
|
||||
/** 可触发超级大奖的 grid_number(5=全1 10=全2 15=全3 20=全4 25=全5) */
|
||||
private const SUPER_WIN_GRID_NUMBERS = [5, 10, 15, 20, 25];
|
||||
/** 可触发超级大奖的 grid_number(5=全1 10=全2 15=全3 20=全4 25=全5 30=全6);其中 5 和 30 固定 100% 出豹子 */
|
||||
private const SUPER_WIN_GRID_NUMBERS = [5, 10, 15, 20, 25, 30];
|
||||
/** grid_number 为 5 或 30 时豹子概率固定 100%(DiceRewardConfig tier=BIGWIN 约定) */
|
||||
private const SUPER_WIN_ALWAYS_GRID_NUMBERS = [5, 30];
|
||||
|
||||
/**
|
||||
* 执行一局游戏
|
||||
@@ -117,16 +119,21 @@ class PlayStartLogic
|
||||
$realEv = (float) ($chosen['real_ev'] ?? 0);
|
||||
$rewardWinCoin = 100 + $realEv; // 摇色子中奖平台币 = 100 + DiceRewardConfig.real_ev
|
||||
|
||||
// 当抽到的 grid_number 为 5/10/15/20/25 时,从缓存查 tier=BIGWIN 同 grid_number 的配置,按 weight 决定是否生成豹子组合
|
||||
// 当抽到的 grid_number 为 5/10/15/20/25/30 时,可出豹子;其中 grid_number=5 与 30 固定 100% 豹子(BIGWIN 约定)
|
||||
$superWinCoin = 0;
|
||||
$isWin = 0;
|
||||
if (in_array($rollNumber, self::SUPER_WIN_GRID_NUMBERS, true)) {
|
||||
$bigWinConfig = DiceRewardConfig::getCachedByTierAndGridNumber('BIGWIN', $rollNumber);
|
||||
$weight = $bigWinConfig !== null
|
||||
? max(0.0, min(100.0, (float) ($bigWinConfig['weight'] ?? 0)))
|
||||
: 100.0;
|
||||
$roll = mt_rand(1, 10000) / 10000;
|
||||
if ($roll <= $weight / 100) {
|
||||
$alwaysSuperWin = in_array($rollNumber, self::SUPER_WIN_ALWAYS_GRID_NUMBERS, true);
|
||||
$doSuperWin = $alwaysSuperWin;
|
||||
if (!$doSuperWin) {
|
||||
$weight = $bigWinConfig !== null
|
||||
? max(0.0, min(100.0, (float) ($bigWinConfig['weight'] ?? 0)))
|
||||
: 100.0;
|
||||
$roll = mt_rand(1, 10000) / 10000;
|
||||
$doSuperWin = $roll <= $weight / 100;
|
||||
}
|
||||
if ($doSuperWin) {
|
||||
$rollArray = $this->getSuperWinRollArray($rollNumber);
|
||||
$isWin = 1;
|
||||
$superWinCoin = $bigWinConfig !== null
|
||||
@@ -307,11 +314,14 @@ class PlayStartLogic
|
||||
}
|
||||
|
||||
/**
|
||||
* 豹子组合:grid_number 5->[1,1,1,1,1],10->[2,2,2,2,2],15->[3,3,3,3,3],20->[4,4,4,4,4],25->[5,5,5,5,5]
|
||||
* 豹子组合:5->[1,1,1,1,1],10->[2,2,2,2,2],15->[3,3,3,3,3],20->[4,4,4,4,4],25->[5,5,5,5,5],30->[6,6,6,6,6]
|
||||
* @return int[]
|
||||
*/
|
||||
private function getSuperWinRollArray(int $gridNumber): array
|
||||
{
|
||||
if ($gridNumber === 30) {
|
||||
return array_fill(0, 5, 6);
|
||||
}
|
||||
$n = (int) ($gridNumber / 5);
|
||||
$n = max(1, min(5, $n));
|
||||
return array_fill(0, 5, $n);
|
||||
|
||||
Reference in New Issue
Block a user