賭博系統
賭博系統為 EliteMobs 加入了一座功能完整的賭場。玩家可以在四款不同的小遊戲中押注他們的精英金幣,錢輸光時會負債,而當討債人上門時就得承擔後果。伺服器管理員可以設定這套系統的每一個面向,從賠付倍率到負債上限都可以。
前置設定
賭博系統透過特別設定過的 NPC 來存取。每款遊戲與顯示都有各自的 NPC 互動類型。
要設定一個賭博 NPC,請建立一個 NPC 設定檔,並將 interactionType 設為以下其中一個值:
| 互動類型 | 說明 |
|---|---|
GAMBLING_BLACKJACK | 開啟二十一點的下注選單 |
GAMBLING_COINFLIP | 開啟擲硬幣的下注選單 |
GAMBLING_SLOTS | 開啟拉霸機的下注選單 |
GAMBLING_HIGHERLOWER | 開啟比大小的下注選單 |
賭場老闆 NPC 不使用特殊的互動類型。要設定它,請建立一個檔名為 gambling_den_owner.yml 的 NPC。莊家收益顯示會依據這個檔名自動出現在該 NPC 上方。
遊戲
二十一點
適用標準的二十一點規則。目標是在不超過 21 點的前提下盡量接近 21 點。
規則
- 玩家與莊家各發兩張牌。
- 莊家的第二張牌在玩家停牌前都是蓋著的。
- A 可算作 11 或 1(在可能的情況下會自動調整以避免爆牌)。
- 花牌(J、Q、K)算作 10。
- 莊家在 17 點停牌。
- 玩家最多可持有 5 張牌。
動作
| 動作 | 說明 |
|---|---|
| Hit | 再抽一張牌。 |
| Stand | 保留目前的手牌;接著由莊家行動。 |
| Double Down | 把賭注加倍,剛好抽一張牌,然後自動停牌。只有在你的第一個動作時(也就是你有 2 張牌時)才可使用,且必須負擔得起加倍的賭注。 |
賠付
| 結果 | 預設倍率 |
|---|---|
| 一般獲勝(玩家點數勝過莊家,或莊家爆牌) | 2.0x |
| 二十一點(前兩張牌就是 21 點) | 2.5x |
| 和局(平手) | 1.0x(退還賭注) |
| 落敗(玩家爆牌或莊家點數較高) | 0x(賭注損失) |
關閉選單
如果玩家在莊家回合期間關閉選單,莊家的手牌會自動打完並結算結果。如果玩家在停牌前關閉選單,賭注會被沒收。
擲硬幣
一款簡單的 50/50 遊戲。選擇正面或反面,硬幣決定你的命運。
玩法
- 遊戲開啟時會有一個正面按鈕與一個反面按鈕。
- 點擊其中一個做出選擇。
- 播放擲硬幣動畫。
- 顯示結果。
賠付
| 結果 | 預設倍率 |
|---|---|
| 猜對 | 1.9x |
| 立起(硬幣立在邊緣上) | 5.0x |
| 猜錯 | 0x(賭注損失) |
立起結果
硬幣有 1% 的機率會立在邊緣上,而非正面或反面。發生這種情況時,玩家無論選了什麼都必定獲勝,並獲得賭注的 5 倍賠付。這個罕見事件會顯示特別的聊天訊息與視覺效果。
關閉選單
如果玩家在做出選擇前關閉選單,賭注會被沒收。
拉霸機
轉動三個轉軸並湊出相同符號即可獲勝。越稀有的符號賠付越高。
玩法
- 遊戲開啟時會有一個 3x3 的轉軸格與一個 Spin 按鈕。
- 點擊 Spin 開始轉動轉軸。
- 每個轉軸會依序伴隨動畫停下。
- 中間那一列(賠付線)決定結果。
符號與賠付
每個符號都有一個決定其出現頻率的權重。湊齊三個相同符號的賠付倍率以 100 / weight 計算。湊齊兩個符號的賠付為該符號三連賠付的 25%。
| 符號 | 權重 | 機率 | 三連賠付 | 二連賠付 |
|---|---|---|---|---|
| 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 就是頭獎,並會有特別的視覺與音效。
關閉選單
如果玩家在轉動前關閉選單,賭注會被沒收。
比大小
一款以連勝為核心的紙牌遊戲。猜下一張牌比目前這張大還是小,並累積倍率。你可以隨時兌現,也可以孤注一擲。
玩法
- 抽出一張牌並顯示(數值範圍為 2 到 14,其中 A = 14)。
- 猜下一張牌會比目前這張大還是小。
- 如果猜對,你的倍率會提高,翻出的牌會成為新的目前牌。
- 只要至少猜對一次,你就可以隨時兌現。
- 如果猜錯,你會失去全部賭注。
- 如果下一張牌與目前的牌相同,算作落敗。
連勝倍率
每猜對一次,你的獎金就會乘上所設定的倍率(預設 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 次猜對時,系統會自動為他們兌現並發放獎金。這可以避免倍率失控。
關閉選單
如果玩家在擁有連勝時關閉選單,系統會自動為他們兌現並發放目前的獎金。如果他們在做出任何猜測前就關閉,賭注會被沒收。
下注
在任何遊戲開始之前,玩家會看到一個下注選單來選擇他們的賭注。
下注上下限
| 設定 | 預設值 |
|---|---|
| 最低下注 | 10 |
沒有可設定的最高下注。玩家可以下注到他們負擔得起的上限(包含來自負債系統的信用額度)。
下注選單控制項
下注選單提供數個控制項:
- Increment Buttons —— 三種級距的增加與減少按鈕。如果玩家至少有 100 金幣且沒有負債,級距會以百分比計算(餘額的 5%、10%、25%)。否則會使用 10、50、100 的固定金額。
- All In —— 把賭注設為玩家負擔得起的上限(包含可用信用額度)。
- Reset —— 把賭注重設為最低值。
- Play —— 以目前的賭注開始遊戲。只有在玩家負擔得起該賭注時才會啟用。
- Cancel —— 不下注並關閉選單。
選單會顯示玩家目前的餘額、任何既有負債,以及可用信用額度。
負債系統
玩家可以透過負債來下注超過自身餘額的金額。賭場提供的信用額度上限是固定的。
負債如何運作
- 當玩家下的注超過其餘額時,超出的部分會被加為賭債。
- 玩家可累積的最高負債為 500 金幣。這是寫死的,無法設定。
- 玩家無法下會使其負債超過上限的注。
- 當玩家獲勝時,獎金會先用來償還負債,之後才會加入餘額。
可用信用額度
玩家的可用信用額度計算方式為:maxDebt - currentDebt。這會顯示在下注選單中。
負債警告
當玩家陷入負債時,他們會收到一則警告訊息。只要背著未清償的負債,討債人就可能上門找他們。
討債人 BOSS
討債人是一個會生成出來追捕背負賭債玩家的自訂 BOSS。
生成條件
- 玩家必須有未清償的賭債。
- 系統每 60 分鐘(可設定)會對所有線上玩家執行一次週期性檢查。
- 每次檢查都有 50% 的機率(可設定)為符合條件的玩家生成討債人。
- 每位玩家同一時間只能有一個討債人處於活躍狀態。
- 討債人使用自訂 BOSS 檔案
debt_collector.yml。
等級縮放
討債人的等級以目標玩家的戰鬥等級為基準。它的數值(生命值、傷害等)由 debt_collector.yml 自訂 BOSS 設定檔決定,遵循與 EliteMobs 中其他自訂 BOSS 相同的規則。
行為
- 討債人會在距離玩家 5 到 10 格的地方生成。
- 它會立刻鎖定它被生成出來針對的那位玩家。
- 它預設有 600 秒的逾時(10 分鐘)。如果在那段時間內沒有被擊殺,它就會消失並警告玩家它會再回來。
結果
| 結果 | 效果 |
|---|---|
| 玩家擊殺討債人 | BOSS 消失。玩家的負債不會減少,但他們會收到一則訊息說它會再回來。 |
| 討債人擊殺玩家 | 玩家的負債減少 50 金幣(可設定)。如果這樣就完全清償了負債,玩家會收到通知。討債人會在 5 秒後消失。 |
| 逾時(未能及時擊殺) | 討債人消失並送出一則警告訊息。它會在下一次檢查時嘗試再次生成。 |
賭場老闆
賭場老闆是一個特殊 NPC,會以浮動文字顯示的方式在頭上顯示莊家收益。這會顯示莊家從所有賭博活動中累積的總盈虧。
- 正收益以綠色顯示(例如
+1234.56)。 - 負收益(玩家贏的比輸的多)以紅色顯示(例如
-567.89)。 - 該顯示每秒更新一次。
- 莊家收益會保存到
house_earnings.yml,並在伺服器重新啟動後保留。
設定
所有賭博設定都存放在 GamblingSettings.yml 中。以下是影響遊戲玩法的主要設定。
一般設定
| 鍵 | 說明 | 預設值 |
|---|---|---|
gamblingEnabled | 啟用或停用整套賭博系統。停用時,賭博 NPC 不會運作,討債人也不會生成。 | true |
minBet | 所有賭博遊戲的最低下注金額。 | 10 |
註:最高負債(500.0)是寫死的,無法設定。
賠付倍率
| 鍵 | 說明 | 預設值 |
|---|---|---|
payouts.blackjack.normal | 二十一點一般獲勝的賠付倍率。 | 2.0 |
payouts.blackjack.blackjack | 拿到天生二十一點(前兩張牌就是 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 公式,從符號權重自動計算出來的:
| 符號 | 權重 | 三連賠付 | 二連賠付 |
|---|---|---|---|
| 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 |
經濟安全性
賭博系統採用安全優先的交易模型。所有賭注都會在任何視覺動畫播放之前就先扣除,結果也會先在財務上結算完畢。這可以防止玩家在動畫進行到一半時斷線以避免損失或複製獲勝的漏洞。無論玩家在動畫期間或之後的任何時間點斷線,他們的財務狀態都已經是正確的。