Sistema de Apostas
O Sistema de Apostas adiciona um casino completo ao EliteMobs. Os jogadores podem apostar as suas Elite Coins em quatro minijogos, ficar endividados quando o dinheiro acaba e receber a visita do Cobrador de Dívidas. Os administradores podem configurar grande parte do sistema, incluindo os multiplicadores de Blackjack, Cara ou Coroa e Maior ou Menor. Os pagamentos das slots e a dívida máxima estão fixados no código.
Preparação
Os jogadores acedem aos jogos através de NPCs configurados para esse fim e precisam de elitemobs.gambling.npc, concedida por predefinição. Os quatro jogos têm tipos de interação próprios; o visor dos lucros da casa é selecionado pelo nome do ficheiro do NPC.
Para configurar um NPC de apostas, crie um ficheiro de configuração de NPC e defina o interactionType para um dos seguintes valores:
| Tipo de interação | Descrição |
|---|---|
GAMBLING_BLACKJACK | Abre o menu de aposta do Blackjack |
GAMBLING_COINFLIP | Abre o menu de aposta do Cara ou Coroa |
GAMBLING_SLOTS | Abre o menu de aposta da Máquina de Slots |
GAMBLING_HIGHERLOWER | Abre o menu de aposta do Maior ou Menor |
O NPC Dono da Casa de Apostas não usa um tipo de interação especial. Para o configurar, crie um NPC com o nome de ficheiro gambling_den_owner.yml. O visor dos lucros da casa aparecerá automaticamente acima do NPC com base neste nome de ficheiro.
O EliteMobs inclui configurações de NPC prontas para as cinco funções; normalmente basta colocá-los:
| Ficheiro | Função |
|---|---|
blackjack_dealer.yml | Blackjack (Vincent, o dealer) |
coin_flipper.yml | Cara ou Coroa (Lucky Pete) |
slot_machine_operator.yml | Máquina de Slots (Spinner Sam) |
card_shark.yml | Maior ou Menor (Ace Morgan, o jogador de cartas) |
gambling_den_owner.yml | Visor dos lucros da casa |
Jogos
Blackjack
O objetivo é chegar o mais perto possível de 21 sem passar. Esta implementação aplica as seguintes regras.
Regras
- Tanto o jogador como o dealer recebem duas cartas.
- A segunda carta do dealer fica escondida até o jogador ficar (stand).
- Os Ases contam como 11 ou 1 (ajustado automaticamente para evitar passar de 21 sempre que possível).
- As figuras (Valete, Dama, Rei) contam como 10.
- O dealer fica (stand) aos 17.
- As cartas são sorteadas de forma independente, com reposição; não há um baralho finito para contar. Chegar a 21 após Hit ativa automaticamente Stand.
- O menu mostra cinco espaços de cartas por mão. Cartas adicionais continuam a contar para o total, mesmo quando já não cabem nesses espaços.
- Um Blackjack natural do jogador é pago imediatamente, mesmo que o dealer também tenha um Blackjack natural.
Ações
| Ação | Descrição |
|---|---|
| Pedir carta (Hit) | Tira outra carta. |
| Ficar (Stand) | Mantém a sua mão atual; o dealer joga depois. |
| Dobrar (Double Down) | Paga outra aposta igual, duplica o total, tira exatamente uma carta e fica, salvo se passar de 21. Só está disponível na primeira ação com 2 cartas, se o saldo restante mais o crédito cobrirem a aposta adicional. |
Prémios
| Resultado | Multiplicador padrão |
|---|---|
| Vitória normal (o total do jogador supera o do dealer, ou o dealer passa de 21) | 2.0x |
| Blackjack (21 com as duas primeiras cartas) | 2.5x |
| Empate (push) | 1.0x (aposta devolvida) |
| Derrota (o jogador passa de 21 ou o total do dealer é mais alto) | 0x (aposta perdida) |
Fechar o menu
Se um jogador fechar o menu durante a vez do dealer, a mão do dealer é jogada automaticamente e o resultado é resolvido. Se um jogador fechar o menu antes de ficar (stand), a aposta é perdida.
Cara ou Coroa
Um jogo simples de 50/50. Escolha Cara ou Coroa, e a moeda decide o seu destino.
Como jogar
- O jogo abre com um botão de Cara e um botão de Coroa.
- Clique num deles para fazer a sua escolha.
- É reproduzida uma animação de lançamento da moeda.
- O resultado é mostrado.
Prémios
| Resultado | Multiplicador padrão |
|---|---|
| Palpite correto | 1.9x |
| Canto (a moeda fica em pé sobre a borda) | 5.0x |
| Palpite errado | 0x (aposta perdida) |
O resultado de borda
Há 1% de probabilidade de a moeda ficar em pé sobre a borda em vez de sair Cara ou Coroa. Quando isso acontece, o jogador ganha sempre, independentemente da sua escolha, e recebe um prémio de 5x sobre a aposta. É mostrada uma mensagem de chat especial e um visual próprio para este evento raro.
Com estes valores, Cara e Coroa ocorrem em 49,5% dos casos cada uma. O retorno esperado é 0.495 × 1.9 + 0.01 × 5 = 0.9905 vezes a aposta, dando uma vantagem total de 0,95% à casa. A vantagem de 5% de um lançamento simples com pagamento de 1,9x só se aplica quando o resultado de borda está desativado. Os multiplicadores incluem a aposta inicial.
Fechar o menu
Se um jogador fechar o menu antes de fazer uma escolha, a aposta é perdida.
Máquina de Slots
Gire três rolos e combine símbolos para ganhar. Os símbolos mais raros pagam mais.
Como jogar
- O jogo abre com uma grelha de rolos 3x3 e um botão de Girar.
- Clique em Girar para pôr os rolos a andar.
- Cada rolo para em sequência com uma animação.
- A linha do meio (linha de prémio) determina o resultado.
Símbolos e prémios
Cada rolo sorteia um símbolo de forma independente com os pesos abaixo. Três símbolos iguais pagam 100 / weight. Exatamente dois iguais em qualquer posição da linha central, incluindo a primeira e a terceira, pagam 25% desse valor. São retornos totais que incluem a aposta: um par de cerejas ou limões devolve menos do que o valor apostado, mesmo que o menu indique uma vitória.
| Símbolo | Peso | Probabilidade | Prémio de 3 iguais | Prémio de 2 iguais |
|---|---|---|---|---|
| Cereja | 35 | 35% | 2.86x | 0.71x |
| Limão | 28 | 28% | 3.57x | 0.89x |
| Laranja | 20 | 20% | 5.0x | 1.25x |
| Sino Dourado | 10 | 10% | 10.0x | 2.5x |
| Barra de Prata | 5 | 5% | 20.0x | 5.0x |
| 7 da Sorte | 2 | 2% | 50.0x | 12.5x |
Três 7 da Sorte é o Jackpot e recebe um efeito visual e sonoro especial.
Fechar o menu
Se um jogador fechar o menu antes de girar, a aposta é perdida.
Após um resultado, Spin Again cobra outra aposta do mesmo valor e volta ao ecrã de preparação. O jogador tem depois de clicar em Spin; fechar o menu entre estes passos perde a aposta acabada de cobrar.
Maior ou Menor
Um jogo de cartas baseado em sequências de acertos. Adivinhe se a carta seguinte é maior ou menor do que a atual e vá acumulando multiplicador. Retire o dinheiro a qualquer momento ou arrisque tudo.
Como jogar
- É tirada uma carta e mostrada (os valores vão de 2 a 14, em que Ás = 14).
- Adivinhe se a carta seguinte será Maior ou Menor do que a carta atual.
- Se acertar, o seu multiplicador aumenta e a carta revelada passa a ser a nova carta atual.
- Pode Retirar (Cash Out) a qualquer momento depois de pelo menos um palpite correto.
- Se errar, perde a aposta inteira.
- Se a carta seguinte for igual à carta atual, conta como derrota.
Multiplicador de sequência
Cada palpite correto multiplica os seus ganhos pelo multiplicador configurado (padrão 1.3x). O multiplicador acumula:
| Sequência | Multiplicador (padrão) | Prémio numa aposta de 100 moedas |
|---|---|---|
| 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 |
Sequência máxima e retirada automática
A sequência máxima é 12. Quando um jogador chega a 12 palpites corretos, o dinheiro é retirado automaticamente e os ganhos são atribuídos. Isto evita multiplicadores descontrolados.
Fechar o menu
Se um jogador fechar o menu enquanto tem uma sequência vencedora, o dinheiro é retirado automaticamente e recebe os ganhos atuais. Se fechar antes de fazer qualquer palpite, a aposta é perdida.
Apostas
Antes de qualquer jogo começar, é apresentado ao jogador um menu de aposta para escolher o valor a apostar.
Limites de aposta
| Definição | Valor padrão |
|---|---|
| Aposta mínima | 10 |
Não há aposta máxima configurável. O menu usa quantidades inteiras de moedas; All In descarta as frações ao somar o saldo e o crédito disponível.
minBet define o valor de Reset e o limite inferior dos botões de diminuição. O valor inicial é max(minBet, 10). Não é uma validação universal de transações: All In pode definir um valor positivo abaixo de minBet, que Play aceita atualmente se for possível pagá-lo. Não dependa desta definição para impor um mínimo em todos os percursos.
Controlos do menu de aposta
O menu de aposta oferece vários controlos:
- Botões de incremento -- Três tamanhos para aumentar e diminuir. Com pelo menos 100 moedas e sem dívida, usam 5%, 10% e 25% do saldo, truncados a moedas inteiras com um mínimo de 1. Caso contrário, usam 10, 50 e 100.
- All In -- Define a aposta no máximo que o jogador pode pagar (incluindo o crédito disponível).
- Reset -- Reinicia a aposta para o mínimo.
- Play -- Inicia o jogo com a aposta atual. Só está ativo se o jogador tiver dinheiro para a aposta.
- Cancel -- Fecha o menu sem apostar.
O menu mostra o saldo atual. As linhas de dívida e crédito disponível aparecem quando a dívida é positiva, embora jogadores sem dívida também possam usar crédito.
Sistema de dívida
Os jogadores podem apostar além do seu saldo ficando endividados. O casino concede crédito até um limite fixo.
Como funciona a dívida
- Quando um jogador faz uma aposta que excede o seu saldo, o valor restante é adicionado como dívida de apostas.
- A dívida máxima que um jogador pode acumular é de 500 moedas. Este valor está fixado no código e não é configurável.
- Os jogadores não podem fazer apostas que empurrassem a sua dívida acima do máximo.
- Quando um jogador ganha, os seus ganhos são primeiro aplicados a pagar a dívida antes de serem adicionados ao saldo. Outros rendimentos obtidos através do EliteMobs também pagam primeiro esta dívida, mesmo com a integração Vault ativa. Os reembolsos de compras de encantamentos não passam pela cobrança de dívida.
Crédito disponível
Para valores de dívida finitos, o crédito disponível é max(0, maxDebt - currentDebt). O menu mostra-o quando o jogador tem dívida.
Aviso de dívida
Quando um jogador fica endividado, recebe uma mensagem de aviso. O Cobrador de Dívidas pode vir atrás dele enquanto tiver dívida pendente.
Boss Cobrador de Dívidas
O Cobrador de Dívidas é um boss personalizado que aparece para perseguir jogadores com dívidas de apostas.
Condições de spawn
- O jogador tem de ter dívida de apostas pendente.
- Uma verificação periódica corre a cada 60 minutos (configurável) para todos os jogadores online.
- A primeira verificação espera um intervalo completo após a inicialização. Também deve ter passado um intervalo desde a última tentativa de spawn para esse jogador; este temporizador é reiniciado ao desligar o plugin.
- Cada verificação tem 50% de probabilidade (configurável) de fazer aparecer o Cobrador de Dívidas para um jogador elegível.
- Só pode estar ativo um Cobrador de Dívidas por jogador de cada vez.
- O Cobrador de Dívidas usa o ficheiro de boss personalizado
debt_collector.yml.
A verificação periódica não exclui mundos ou modos de jogo por si só; o spawn normal de um boss personalizado pode ainda falhar. Pagar a dívida impede futuros spawns periódicos, mas não remove automaticamente um cobrador já presente.
Escalonamento de nível
O ficheiro incluído debt_collector.yml usa nível dinâmico e scaledCombat: true, adaptando os cálculos de combate a cada jogador. Os multiplicadores de vida e dano vêm desse ficheiro. A rotina de spawn não atribui diretamente o nível de combate do jogador perseguido; alterar a configuração do boss altera o seu escalonamento.
Comportamento
- O cobrador tenta dez posições à superfície, entre 5 e 10 blocos de distância horizontal. Se nenhuma servir, usa um desvio de até 5 blocos em cada eixo horizontal à altura do jogador.
- Visa imediatamente o jogador para quem apareceu.
- Tem um tempo limite de 600 segundos (10 minutos) por padrão. Se não for morto nesse tempo, desaparece e avisa o jogador de que voltará.
Resultados
| Resultado | Efeito |
|---|---|
| O Cobrador de Dívidas morre | O alvo registado recebe a mensagem de regresso se estiver online, mesmo que outro jogador o tenha matado. A dívida não diminui. |
| O jogador morre de um golpe direto do cobrador | A dívida da vítima diminui 50 moedas (configurável). É notificada se a dívida ficar saldada. O cobrador é removido após 5 segundos. A última entidade a causar dano tem de ser diretamente um boss debt_collector.yml; o gestor não procura atiradores de projéteis nem mortes ambientais posteriores. |
| Expira o tempo do gestor | O cobrador é removido e envia um aviso. Uma verificação periódica futura pode criar outro se o jogador continuar elegível e o sorteio de probabilidade tiver sucesso. |
Dono da Casa de Apostas
O Dono da Casa de Apostas mostra os Lucros da Casa em texto flutuante. O valor corresponde às apostas registadas menos os pagamentos, incluindo apostas financiadas com dívida. Não é um saldo bancário separado nem o dinheiro já cobrado aos devedores.
- Os lucros positivos são mostrados a verde (por exemplo,
+1234.56). - Os lucros negativos (jogadores a ganhar mais do que a perder) são mostrados a vermelho (por exemplo,
-567.89). - O visor atualiza a cada segundo.
- Os lucros da casa são guardados em
house_earnings.ymle sobrevivem a reinícios do servidor.
Configuração
Todas as definições de apostas estão guardadas no GamblingSettings.yml. Abaixo estão as principais definições que afetam a jogabilidade.
Definições gerais
| Chave | Descrição | Padrão |
|---|---|---|
gamblingEnabled | Ativa ou desativa todo o sistema de apostas. Quando desativado, os NPCs de apostas não funcionam e o Cobrador de Dívidas não aparece. | true |
minBet | Valor de Reset e limite inferior dos botões de diminuição; consulte a limitação de All In acima. | 10 |
Nota: a dívida máxima (500.0) está fixada no código e não é configurável.
O carregador exige inteiros positivos para minBet, o intervalo de verificação do cobrador e o tempo limite. As probabilidades devem ser finitas e estar entre 0 e 1. Os multiplicadores de pagamento e a redução de dívida por morte devem ser finitos e não negativos. Valores inválidos geram um aviso e são substituídos pelos predefinidos na configuração carregada.
Multiplicadores de prémio
| Chave | Descrição | Padrão |
|---|---|---|
payouts.blackjack.normal | Multiplicador de prémio para uma vitória normal no Blackjack. | 2.0 |
payouts.blackjack.blackjack | Multiplicador de prémio por conseguir um Blackjack natural (21 com as duas primeiras cartas). | 2.5 |
payouts.coinFlip.normal | Multiplicador por acertar Cara/Coroa. Um pagamento de 1,9x só dá uma vantagem de 5% à casa quando o resultado de borda está desativado. | 1.9 |
payouts.coinFlip.edgeChance | Probabilidade (0.0 a 1.0) de a moeda ficar em pé sobre a borda (vitória bónus). Defina 0.0 para desativar. | 0.01 |
payouts.coinFlip.edgePayout | Multiplicador de prémio quando a moeda fica em pé sobre a borda. | 5.0 |
payouts.higherLower.multiplierV2 | Multiplicador aplicado por cada palpite correto no Maior ou Menor. Acumula multiplicativamente. | 1.3 |
As definições de Cara ou Coroa partilham uma única secção YAML:
payouts:
coinFlip:
normal: 1.9
edgeChance: 0.01
edgePayout: 5.0
Se o seu ficheiro existente guarda um número diretamente em payouts.coinFlip, mova esse valor para normal e acrescente as duas definições de borda. O EliteMobs desativa as apostas e indica esta correção sem reescrever o ficheiro. Recarregue depois de a corrigir.
Prémios da Máquina de Slots
Os prémios da máquina de slots não são configuráveis. São calculados automaticamente a partir dos pesos dos símbolos usando a fórmula 100 / weight:
| Símbolo | Peso | Prémio de 3 iguais | Prémio de 2 iguais |
|---|---|---|---|
| Cereja | 35 | 2.86x | 0.71x |
| Limão | 28 | 3.57x | 0.89x |
| Laranja | 20 | 5.0x | 1.25x |
| Sino | 10 | 10.0x | 2.50x |
| Barra | 5 | 20.0x | 5.00x |
| 7 da Sorte | 2 | 50.0x | 12.50x |
Não existem quaisquer chaves payouts.slots.* no GamblingSettings.yml — as únicas entradas de máquina de slots no ficheiro são as strings de interface slots.* (nomes de botões, etiquetas, títulos de resultado). Os prémios são sempre derivados dos pesos de símbolos fixados no código.
Definições do Cobrador de Dívidas
| Chave | Descrição | Padrão |
|---|---|---|
debtCollector.spawnChance | Probabilidade (0.0 a 1.0) de o Cobrador de Dívidas aparecer em cada verificação. | 0.5 |
debtCollector.checkIntervalMinutes | Com que frequência (em minutos) se verifica se o Cobrador de Dívidas deve aparecer para jogadores endividados. | 60 |
debtCollector.timeoutSeconds | Quanto tempo (em segundos) até o Cobrador de Dívidas desaparecer se não for morto. | 600 |
debtCollector.debtReductionOnPlayerDeath | Valor de dívida reduzido quando o Cobrador de Dívidas mata o jogador. | 50.0 |
Segurança da economia
As apostas são cobradas antes de abrir o jogo. Cara ou Coroa e Slots liquidam o resultado antes da animação; Maior ou Menor regista cada palpite antes da animação e paga quando o jogador retira os ganhos. Blackjack resolve o resultado quando o dealer acaba de tirar cartas, ou joga imediatamente essa mão se o menu fechar durante a vez dele. Os pagamentos são arredondados a duas casas decimais e incluem a aposta original. O gestor comum impede que o mesmo pagamento pendente seja atribuído duas vezes.
As regras de fecho acima também se aplicam quando o inventário fecha ao desligar-se do servidor. Estas proteções não permitem recuperar uma sessão inacabada após uma falha do servidor ou o encerramento do plugin; evite reiniciar durante partidas ativas.