ギャンブルシステム
ギャンブルシステムは、EliteMobs に本格的なカジノを追加します。プレイヤーは 4 種類のミニゲームでエリートコインを賭け、資金が尽きれば借金を負い、取り立て屋(Debt Collector)が訪ねてくればその報いを受けることになります。サーバー管理者は、配当倍率から借金の上限まで、システムのあらゆる側面を設定できます。
セットアップ
ギャンブルシステムには、専用に設定した NPC を通じてアクセスします。各ゲームと表示には、それぞれ固有の NPC インタラクションタイプがあります。
ギャンブル用 NPC をセットアップするには、NPC 設定ファイルを作成し、interactionType を次のいずれかの値に設定します。
| インタラクションタイプ | 説明 |
|---|---|
GAMBLING_BLACKJACK | ブラックジャックの賭けメニューを開きます |
GAMBLING_COINFLIP | コインフリップの賭けメニューを開きます |
GAMBLING_SLOTS | スロットマシンの賭けメニューを開きます |
GAMBLING_HIGHERLOWER | ハイアンドローの賭けメニューを開きます |
Gambling Den Owner NPC は特別なインタラクションタイプを使用しません。セットアップするには、ファイル名を gambling_den_owner.yml として NPC を作成します。このファイル名に基づいて、ハウス収益の表示が NPC の頭上に自動的に現れます。
ゲーム
ブラックジャック
標準的なブラックジャックのルールが適用されます。目標は、21 を超えずにできるだけ 21 に近づけることです。
ルール
- プレイヤーとディーラーの双方に 2 枚のカードが配られます。
- ディーラーの 2 枚目のカードは、プレイヤーがスタンドするまで伏せられています。
- エースは 11 または 1 として数えられます(可能な場合はバーストを避けるよう自動的に調整されます)。
- 絵札(ジャック、クイーン、キング)は 10 として数えられます。
- ディーラーは 17 でスタンドします。
- プレイヤーは最大 5 枚までカードを持てます。
アクション
| アクション | 説明 |
|---|---|
| Hit | カードをもう 1 枚引きます。 |
| Stand | 現在の手札を維持します。その後ディーラーがプレイします。 |
| Double Down | 賭け金を 2 倍にし、カードをちょうど 1 枚引いてから自動的にスタンドします。最初のアクション時(カードが 2 枚のとき)にのみ利用可能で、賭け金を 2 倍にできる資金がある場合に限られます。 |
配当
| 結果 | デフォルト倍率 |
|---|---|
| 通常の勝利(プレイヤーの合計がディーラーを上回る、またはディーラーがバースト) | 2.0x |
| ブラックジャック(最初の 2 枚で 21) | 2.5x |
| プッシュ(引き分け) | 1.0x(賭け金が返却されます) |
| 敗北(プレイヤーがバースト、またはディーラーの合計の方が高い) | 0x(賭け金を失います) |
メニューを閉じた場合
ディーラーのターン中にプレイヤーがメニューを閉じた場合、ディーラーの手は自動的に進行し、結果が確定します。スタンドする前にメニューを閉じた場合、賭け金は没収されます。
コインフリップ
シンプルな 50/50 のゲームです。表か裏を選び、コインが運命を決めます。
遊び方
- 表(Heads)ボタンと裏(Tails)ボタンとともにゲームが開きます。
- どちらかをクリックして選択します。
- コインを投げるアニメーションが再生されます。
- 結果が表示されます。
配当
| 結果 | デフォルト倍率 |
|---|---|
| 予想が的中 | 1.9x |
| エッジ(コインが縁で立つ) | 5.0x |
| 予想が外れ | 0x(賭け金を失います) |
エッジという結果
コインが表でも裏でもなく縁で立つ確率が 1% あります。この場合、プレイヤーは選択にかかわらず必ず勝利し、賭け金に対して 5 倍の配当を受け取ります。このまれなイベントには専用のチャットメッセージと視覚演出が表示されます。
メニューを閉じた場合
選択を行う前にプレイヤーがメニューを閉じた場合、賭け金は没収されます。
スロットマシン
3 つのリールを回してシンボルを揃えると勝利します。レアなシンボルほど配当が高くなります。
遊び方
- 3x3 のリールグリッドとスピンボタンとともにゲームが開きます。
- スピンをクリックしてリールを回します。
- 各リールがアニメーションとともに順番に停止します。
- 中央の行(ペイライン)が結果を決定します。
シンボルと配当
各シンボルには出現頻度を決める重みがあります。同じシンボルが 3 つ揃った場合の配当倍率は 100 / weight で計算されます。シンボルが 2 つ揃った場合は、そのシンボルの 3 つ揃い配当の 25% が支払われます。
| シンボル | 重み | 確率 | 3 つ揃いの配当 | 2 つ揃いの配当 |
|---|---|---|---|---|
| Cherry | 35 | 35% | 2.86x | 0.71x |
| Lemon | 28 | 28% | 3.57x | 0.89x |
| Orange | 20 | 20% | 5.0x | 1.25x |
| Golden Bell | 10 | 10% | 10.0x | 2.5x |
| Silver Bar | 5 | 5% | 20.0x | 5.0x |
| Lucky 7 | 2 | 2% | 50.0x | 12.5x |
Lucky 7 が 3 つ揃うとジャックポットとなり、特別な視覚効果と効果音が発生します。
メニューを閉じた場合
スピンする前にプレイヤーがメニューを閉じた場合、賭け金は没収されます。
ハイアンドロー
連勝を積み重ねるカードゲームです。次のカードが現在のカードより大きいか小さいかを予想し、倍率を積み上げていきます。いつでもキャッシュアウトできますし、すべてを賭け続けることもできます。
遊び方
- カードが 1 枚引かれて表示されます(値は 2 から 14 までで、エースは 14 です)。
- 次のカードが現在のカードより Higher(大きい) か Lower(小さい) かを予想します。
- 予想が的中すると倍率が上がり、公開されたカードが新たな現在のカードになります。
- 少なくとも 1 回的中した後は、いつでも Cash Out できます。
- 予想が外れると、賭け金をすべて失います。
- 次のカードが現在のカードと同じだった場合は敗北として扱われます。
連勝倍率
的中するたびに、設定された倍率(デフォルト 1.3x)が獲得額に掛けられます。倍率は累積します。
| 連勝数 | 倍率(デフォルト) | 100 コイン賭けた場合の配当 |
|---|---|---|
| 1 | 1.3x | 130 |
| 2 | 1.69x | 169 |
| 3 | 2.197x | 219.7 |
| 4 | 2.856x | 285.6 |
| 5 | 3.713x | 371.3 |
| ... | ... | ... |
| 12 | ~23.3x | ~2,330 |
最大連勝数と自動キャッシュアウト
最大連勝数は 12 です。プレイヤーが 12 回連続で的中すると自動的にキャッシュアウトされ、獲得額が支払われます。これにより倍率が際限なく膨らむのを防ぎます。
メニューを閉じた場合
連勝中にプレイヤーがメニューを閉じた場合は自動的にキャッシュアウトされ、その時点の獲得額を受け取ります。1 度も予想しないまま閉じた場合は、賭け金は没収されます。
賭け
ゲームが始まる前に、プレイヤーには賭け金を選ぶための賭けメニューが表示されます。
賭け金の制限
| 設定 | デフォルト値 |
|---|---|
| 最低賭け金 | 10 |
設定可能な最高賭け金はありません。プレイヤーは(借金システムによる与信を含めて)支払える範囲で好きなだけ賭けられます。
賭けメニューの操作
賭けメニューにはいくつかの操作があります。
- 増減ボタン -- 3 段階の増加ボタンと減少ボタンです。プレイヤーが 100 コイン以上を所持していて借金がない場合、増減は残高に対する割合ベース(5%、10%、25%)になります。それ以外の場合は、10、50、100 の固定額が使われます。
- All In -- 賭け金を(利用可能な与信を含めて)プレイヤーが支払える最大額に設定します。
- Reset -- 賭け金を最低額にリセットします。
- Play -- 現在の賭け金でゲームを開始します。プレイヤーがその賭け金を支払える場合にのみ有効です。
- Cancel -- 賭けずにメニューを閉じます。
メニューには、プレイヤーの現在の残高、既存の借金、利用可能な与信が表示されます。
借金システム
プレイヤーは借金を負うことで残高を超えて賭けられます。カジノは固定された上限まで与信を提供します。
借金の仕組み
- プレイヤーが残高を超える賭けを行うと、不足分がギャンブル借金として加算されます。
- プレイヤーが積み上げられる借金の上限は 500 コインです。これはハードコードされており、設定できません。
- 借金が上限を超えてしまうような賭けは行えません。
- プレイヤーが勝利した場合、獲得額は残高に加算される前にまず借金の返済に充てられます。
利用可能な与信
プレイヤーの利用可能な与信は maxDebt - currentDebt で計算されます。これは賭けメニューに表示されます。
借金の警告
プレイヤーが借金を負うと、警告メッセージが表示されます。未返済の借金を抱えている間、取り立て屋がやってくる可能性があります。
取り立て屋ボス
取り立て屋(Debt Collector)は、ギャンブルの借金を抱えているプレイヤーを追い詰めるためにスポーンするカスタムボスです。
スポーン条件
- プレイヤーに未返済のギャンブル借金があること。
- オンラインの全プレイヤーに対して、60 分ごと(設定可能)に定期チェックが実行されます。
- 各チェックでは、条件を満たすプレイヤーに対して 50% の確率(設定可能)で取り立て屋がスポーンします。
- 1 人のプレイヤーにつき、同時にアクティブな取り立て屋は 1 体だけです。
- 取り立て屋はカスタムボスファイル
debt_collector.ymlを使用します。
レベルスケーリング
取り立て屋のレベルは、対象プレイヤーの戦闘レベルに基づきます。ステータス(体力、ダメージなど)は debt_collector.yml のカスタムボス設定ファイルで決まり、EliteMobs の他のカスタムボスと同じルールに従います。
挙動
- 取り立て屋はプレイヤーから 5〜10 ブロック離れた位置にスポーンします。
- スポーンの対象となったプレイヤーを即座にターゲットにします。
- デフォルトでは 600 秒(10 分)のタイムアウトがあります。その時間内に倒されなかった場合はデスポーンし、また戻ってくるとプレイヤーに警告します。
結果
| 結果 | 効果 |
|---|---|
| プレイヤーが取り立て屋を倒す | ボスはデスポーンします。プレイヤーの借金は減りませんが、また戻ってくるというメッセージが表示されます。 |
| 取り立て屋がプレイヤーを倒す | プレイヤーの借金が 50 コイン(設定可能)減ります。これで借金が完済された場合はプレイヤーに通知されます。取り立て屋は 5 秒後にデスポーンします。 |
| タイムアウト(時間内に倒されなかった) | 取り立て屋はデスポーンし、警告メッセージを送ります。次のチェック時に再びスポーンを試みます。 |
Gambling Den Owner
Gambling Den Owner は、頭上にハウス収益をフローティングテキストとして表示する特別な NPC です。これは、すべてのギャンブル活動からハウスが積み上げた利益または損失の合計を示します。
- プラスの収益は緑で表示されます(例:
+1234.56)。 - マイナスの収益(プレイヤーの勝ちが負けを上回っている状態)は赤で表示されます(例:
-567.89)。 - 表示は 1 秒ごとに更新されます。
- ハウス収益は
house_earnings.ymlに永続化され、サーバー再起動後も維持されます。
設定
ギャンブルの設定はすべて GamblingSettings.yml に保存されます。以下はゲームプレイに影響する主要な設定です。
一般設定
| キー | 説明 | デフォルト |
|---|---|---|
gamblingEnabled | ギャンブルシステム全体を有効または無効にします。無効の場合、ギャンブル NPC は機能せず、取り立て屋もスポーンしません。 | true |
minBet | すべてのギャンブルゲームにおける最低賭け金です。 | 10 |
注意: 借金の上限(500.0)はハードコードされており、設定できません。
配当倍率
| キー | 説明 | デフォルト |
|---|---|---|
payouts.blackjack.normal | ブラックジャックの通常勝利時の配当倍率です。 | 2.0 |
payouts.blackjack.blackjack | ナチュラルブラックジャック(最初の 2 枚で 21)を達成した際の配当倍率です。 | 2.5 |
payouts.coinFlip | コインフリップに勝利した際の配当倍率です。ハウスエッジを設けるには 2.0 未満にします(1.9 でハウスエッジ 5%)。 | 1.9 |
payouts.coinFlip.edgeChance | コインが縁で立つ(ボーナス勝利)確率(0.0〜1.0)です。無効にするには 0.0 に設定します。 | 0.01 |
payouts.coinFlip.edgePayout | コインが縁で立った際の配当倍率です。 | 5.0 |
payouts.higherLower.multiplierV2 | ハイアンドローで的中するたびに適用される倍率です。乗算で累積します。 | 1.3 |
スロットマシンの配当
スロットマシンの配当は設定できません。シンボルの重みから 100 / weight の式で自動的に計算されます。
| シンボル | 重み | 3 つ揃いの配当 | 2 つ揃いの配当 |
|---|---|---|---|
| Cherry | 35 | 2.86x | 0.71x |
| Lemon | 28 | 3.57x | 0.89x |
| Orange | 20 | 5.0x | 1.25x |
| Bell | 10 | 10.0x | 2.50x |
| Bar | 5 | 20.0x | 5.00x |
| Lucky 7 | 2 | 50.0x | 12.50x |
GamblingSettings.yml には payouts.slots.* というキーは一切存在しません。このファイル内のスロットマシン関連のエントリーは slots.* の UI 文字列(ボタン名、ラベル、結果のタイトル)だけです。配当は常にハードコードされたシンボルの重みから導出されます。
取り立て屋の設定
| キー | 説明 | デフォルト |
|---|---|---|
debtCollector.spawnChance | 各チェックで取り立て屋がスポーンする確率(0.0〜1.0)です。 | 0.5 |
debtCollector.checkIntervalMinutes | 借金のあるプレイヤーに対して取り立て屋をスポーンさせるべきかを確認する間隔(分)です。 | 60 |
debtCollector.timeoutSeconds | 倒されなかった場合に取り立て屋がデスポーンするまでの時間(秒)です。 | 600 |
debtCollector.debtReductionOnPlayerDeath | 取り立て屋がプレイヤーを倒した際に減額される借金の額です。 | 50.0 |
経済面の安全性
ギャンブルシステムは安全性を最優先したトランザクションモデルを採用しています。すべての賭け金は差し引かれ、結果は視覚的なアニメーションが再生される前に金銭面で確定します。これにより、プレイヤーがアニメーションの途中で切断して損失を回避したり、勝利を複製したりする悪用を防ぎます。アニメーション中や終了後のどの時点で切断しても、金銭面の状態はすでに正しく確定しています。