Система азартных игр
Система азартных игр добавляет в EliteMobs полноценное казино. Игроки могут ставить свои Элитные монеты в четырёх разных мини-играх, залезать в долги, когда деньги заканчиваются, и отвечать за последствия, когда к ним придёт Сборщик долгов. Администраторы серверов могут настроить каждый аспект системы — от множителей выплат до лимитов долга.
Настройка
Доступ к системе азартных игр осуществляется через специально настроенных NPC. У каждой игры и каждого табло свой тип взаимодействия NPC.
Чтобы настроить NPC азартных игр, создайте конфигурационный файл NPC и задайте interactionType одно из следующих значений:
| Тип взаимодействия | Описание |
|---|---|
GAMBLING_BLACKJACK | Открывает меню ставок для Блэкджека |
GAMBLING_COINFLIP | Открывает меню ставок для Подбрасывания монеты |
GAMBLING_SLOTS | Открывает меню ставок для Игрового автомата |
GAMBLING_HIGHERLOWER | Открывает меню ставок для «Больше или меньше» |
NPC «Владелец игорного дома» не использует специальный тип взаимодействия. Чтобы настроить его, создайте NPC с именем файла gambling_den_owner.yml. Табло доходов заведения появится над NPC автоматически на основании этого имени файла.
Игры
Блэкджек
Действуют стандартные правила Блэкджека. Цель — набрать как можно ближе к 21, не превысив это число.
Правила
- И игроку, и дилеру раздаётся по две карты.
- Вторая карта дилера скрыта, пока игрок не спасует.
- Тузы считаются как 11 или 1 (автоматически корректируется, чтобы по возможности избежать перебора).
- Фигурные карты (Валет, Дама, Король) считаются как 10.
- Дилер останавливается на 17.
- Игроки могут держать до 5 карт.
Действия
| Действие | Описание |
|---|---|
| Hit | Взять ещё карту. |
| Stand | Оставить текущую руку; далее играет дилер. |
| Double Down | Удвоить ставку, взять ровно одну карту, затем автоматически спасовать. Доступно только при вашем первом действии (когда у вас 2 карты) и только если вы можете позволить себе удвоить ставку. |
Выплаты
| Исход | Множитель по умолчанию |
|---|---|
| Обычная победа (сумма игрока превосходит дилера, либо у дилера перебор) | 2.0x |
| Блэкджек (21 первыми двумя картами) | 2.5x |
| Ничья (push) | 1.0x (ставка возвращается) |
| Проигрыш (у игрока перебор либо сумма дилера выше) | 0x (ставка потеряна) |
Закрытие меню
Если игрок закрывает меню во время хода дилера, рука дилера разыгрывается автоматически, и результат подводится. Если игрок закрывает меню до того, как спасовал, ставка теряется.
Подбрасывание монеты
Простая игра 50/50. Выберите «орла» или «решку», и монета решит вашу судьбу.
Как играть
- Игра открывается с кнопками «орёл» и «решка».
- Нажмите одну из них, чтобы сделать выбор.
- Проигрывается анимация подбрасывания монеты.
- Показывается результат.
Выплаты
| Исход | Множитель по умолчанию |
|---|---|
| Верная догадка | 1.9x |
| Ребро (монета встаёт на ребро) | 5.0x |
| Неверная догадка | 0x (ставка потеряна) |
Исход «ребро»
Существует 1% вероятность, что монета встанет на ребро вместо «орла» или «решки». Когда это происходит, игрок всегда выигрывает независимо от своего выбора и получает выплату 5x от своей ставки. Для этого редкого события показываются особое сообщение в чате и визуальное оформление.
Закрытие меню
Если игрок закрывает меню до того, как сделал выбор, ставка теряется.
Игровой автомат
Крутите три барабана и собирайте совпадающие символы, чтобы выиграть. Более редкие символы платят больше.
Как играть
- Игра открывается сеткой барабанов 3x3 и кнопкой «Spin».
- Нажмите «Spin», чтобы запустить барабаны.
- Каждый барабан останавливается по очереди с анимацией.
- Результат определяется средним рядом (линией выплат).
Символы и выплаты
У каждого символа есть вес, определяющий, как часто он выпадает. Множитель выплаты за совпадение трёх одинаковых символов рассчитывается как 100 / weight. Совпадение двух символов платит 25% от выплаты за три совпадения для этого символа.
| Символ | Вес | Шанс | Выплата за 3 совпадения | Выплата за 2 совпадения |
|---|---|---|---|---|
| Вишня | 35 | 35% | 2.86x | 0.71x |
| Лимон | 28 | 28% | 3.57x | 0.89x |
| Апельсин | 20 | 20% | 5.0x | 1.25x |
| Золотой колокольчик | 10 | 10% | 10.0x | 2.5x |
| Серебряный слиток | 5 | 5% | 20.0x | 5.0x |
| Счастливая семёрка | 2 | 2% | 50.0x | 12.5x |
Три счастливые семёрки — это Джекпот, который сопровождается особым визуальным и звуковым эффектом.
Закрытие меню
Если игрок закрывает меню до того, как раскрутил барабаны, ставка теряется.
Больше или меньше
Карточная игра, основанная на серии. Угадайте, будет ли следующая карта больше или меньше текущей, и наращивайте множитель. Забирайте выигрыш в любой момент или рискуйте всем.
Как играть
- Вытягивается и показывается карта (значения от 2 до 14, где Туз = 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 |
Настраиваемой максимальной ставки нет. Игроки могут ставить столько, сколько могут себе позволить (включая кредит из системы долгов).
Элементы управления в меню ставок
Меню ставок предоставляет несколько элементов управления:
- Кнопки шага -- три размера кнопок увеличения и уменьшения. Если у игрока не менее 100 монет и нет долга, шаг рассчитывается в процентах (5%, 10%, 25% от баланса). Иначе используются фиксированные значения 10, 50 и 100.
- All In -- устанавливает ставку на максимум, который игрок может себе позволить (включая доступный кредит).
- Reset -- сбрасывает ставку до минимума.
- Play -- начинает игру с текущей ставкой. Активна, только если игрок может позволить себе ставку.
- Cancel -- закрывает меню без ставки.
Меню показывает текущий баланс игрока, имеющийся долг и доступный кредит.
Система долгов
Игроки могут ставить сверх своего баланса, залезая в долг. Казино предоставляет кредит до фиксированного лимита.
Как работают долги
- Когда игрок делает ставку, превышающую его баланс, оставшаяся сумма добавляется как игорный долг.
- Максимальный долг, который может накопить игрок, составляет 500 монет. Это значение задано жёстко в коде и не настраивается.
- Игроки не могут делать ставки, которые вывели бы их долг за пределы максимума.
- Когда игрок выигрывает, выигрыш сначала идёт на погашение долга и лишь потом добавляется к балансу.
Доступный кредит
Доступный кредит игрока рассчитывается как: maxDebt - currentDebt. Он отображается в меню ставок.
Предупреждение о долге
Когда игрок залезает в долг, он получает предупреждающее сообщение. Пока у него есть непогашенный долг, за ним может прийти Сборщик долгов.
Босс «Сборщик долгов»
Сборщик долгов — это кастомный босс, который появляется, чтобы выследить игроков, имеющих игорный долг.
Условия появления
- У игрока должен быть непогашенный игорный долг.
- Периодическая проверка выполняется каждые 60 минут (настраивается) для всех игроков в сети.
- Каждая проверка имеет 50% вероятность (настраивается) породить Сборщика долгов для подходящего игрока.
- Одновременно на одного игрока может быть активен только один Сборщик долгов.
- Сборщик долгов использует файл кастомного босса
debt_collector.yml.
Масштабирование уровня
Уровень Сборщика долгов зависит от боевого уровня целевого игрока. Его характеристики (здоровье, урон и т. д.) определяются конфигурационным файлом кастомного босса debt_collector.yml по тем же правилам, что и у любого другого кастомного босса в EliteMobs.
Поведение
- Сборщик долгов появляется в 5-10 блоках от игрока.
- Он немедленно берёт в цель того игрока, ради которого был порождён.
- По умолчанию у него тайм-аут 600 секунд (10 минут). Если его не убить за это время, он исчезает и предупреждает игрока, что вернётся.
Исходы
| Исход | Эффект |
|---|---|
| Игрок убивает Сборщика долгов | Босс исчезает. Долг игрока не уменьшается, но игрок получает сообщение, что босс вернётся. |
| Сборщик долгов убивает игрока | Долг игрока уменьшается на 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:
| Символ | Вес | Выплата за 3 совпадения | Выплата за 2 совпадения |
|---|---|---|---|
| Вишня | 35 | 2.86x | 0.71x |
| Лимон | 28 | 3.57x | 0.89x |
| Апельсин | 20 | 5.0x | 1.25x |
| Колокольчик | 10 | 10.0x | 2.50x |
| Слиток | 5 | 20.0x | 5.00x |
| Счастливая семёрка | 2 | 50.0x | 12.50x |
Ключей payouts.slots.* в GamblingSettings.yml вообще нет — единственные записи слот-машины в файле — это UI-строки slots.* (названия кнопок, подписи, заголовки результатов). Выплаты всегда выводятся из жёстко заданных весов символов.
Настройки Сборщика долгов
| Ключ | Описание | По умолчанию |
|---|---|---|
debtCollector.spawnChance | Вероятность (от 0.0 до 1.0), что Сборщик долгов появится при каждой проверке. | 0.5 |
debtCollector.checkIntervalMinutes | Как часто (в минутах) проверять, должен ли появиться Сборщик долгов для игроков в долгу. | 60 |
debtCollector.timeoutSeconds | Через какое время (в секундах) Сборщик долгов исчезает, если его не убили. | 600 |
debtCollector.debtReductionOnPlayerDeath | Размер уменьшения долга, когда Сборщик долгов убивает игрока. | 50.0 |
Безопасность экономики
Система азартных игр использует транзакционную модель «безопасность прежде всего». Все ставки списываются, а исходы финансово подводятся до проигрывания каких-либо визуальных анимаций. Это исключает эксплойты, при которых игрок мог бы отключиться посреди анимации, чтобы избежать проигрыша или продублировать выигрыш. Если игрок отключается в любой момент во время или после анимации, его финансовое состояние уже корректно.