🎰 Bazinga BET — v1.36
Simulador de casa de apostas sem dinheiro real — só diversão! Cadastre-se, receba fichas fictícias (BZ$) e jogue os jogos de cassino da equipe BZG.
⚠️ Este projeto é 100% de brincadeira. Não envolve dinheiro real, apostas reais, pagamentos ou saques de nenhum tipo. Tudo fica salvo só no seu navegador.
📌 Regra deste arquivo: a partir da v1.5, toda mudança feita no projeto é registrada no Changelog no fim deste documento, da mais recente para a mais antiga.
📁 Estrutura de pastas
BZG-BET/
├── index.html Lobby (pagina inicial)
├── cadastro.html Tela de cadastro/login (obrigatoria no 1o acesso)
├── profile.html Perfil do jogador (avatar, cor do nome, titulo, temas, stats)
├── passe.html Passe de Batalha (100 niveis, em 10 capitulos)
├── colecao.html Colecao/album de figurinhas dos Bazingas
├── ranking.html Ranking online (Supabase) - saldo/recorde/nivel entre jogadores
├── settings.html Configuracoes (som, tema, turbo, conta)
├── privacidade.html Politica de Privacidade (acessivel sem conta, LGPD)
├── favicon.svg
├── games/ Todas as paginas de JOGO (com aposta) ficam aqui
│ ├── crash.html, double.html, mines.html, tower.html, plinko.html,
│ │ dice.html, hilo.html, roulette.html, blackjack.html,
│ │ raspadinha.html, limbo.html, coinflip.html, horse.html,
│ │ bazinguinha.html, bonanza.html
├── minigames/ Minigames SEM aposta (nao mexem no saldo)
│ ├── torre.html Torre do CBPB_Gamer - empilhar blocos
│ ├── arcoiris.html Sequencia Arco-iris (com Dhani) - memoria, tipo Simon Says
│ ├── sombra.html Sombra Rapida (com Shadow) - reflexo, tipo whack-a-mole
│ └── alien.html Fuga Alienigena (com Alien Jo) - desviar de meteoros, em canvas
├── css/
│ ├── style.css Estilos globais (sidebar, topbar, cards, temas)
│ ├── games/*.css Estilo especifico de cada jogo
│ ├── minigames/*.css Estilo especifico de cada minigame
│ └── pages/*.css Estilo especifico de cada pagina (perfil, passe, colecao, config, cadastro, legal.css p/ privacidade)
└── js/
├── core/ Modulos compartilhados (ver tabela abaixo)
├── games/*.js Logica de cada jogo (com aposta)
├── minigames/*.js Logica de cada minigame (sem aposta)
└── pages/*.js Logica de cada pagina (lobby, perfil, passe, colecao, config, cadastro)
Cada jogo é só HTML + CSS + JS puro, sem build. Uma página em games/ ou minigames/ referencia os arquivos compartilhados com ../ (ex.: ../css/style.css, ../js/core/storage.js). As páginas da raiz (lobby, perfil, config, passe, coleção, cadastro) referenciam sem ../.
Módulos em js/core/
| Arquivo | Função |
|---|
storage.js | Tudo fica salvo em UM objeto no localStorage (bazingaBetState): saldo, conta, perfil, estatísticas (incl. recorde de saldo), histórico, cosméticos, Passe de Batalha, colecionáveis, recordes de minigame |
layout.js | Monta a sidebar e a topbar (com o card de perfil e os mini-campos de Nível/Recorde/Maior Prêmio) em toda página; também é o "porteiro": exige cadastro antes de liberar qualquer página, e bloqueia acesso direto aos jogos em desenvolvimento; calcula os prefixos de pasta (games/, minigames/, raiz) dinamicamente |
theme.js | Sistema de temas (dark/light + 10 temas extras desbloqueáveis no Passe) |
sounds.js | Efeitos sonoros gerados por código (Web Audio API, 100% local) + música ambiente (vídeo do YouTube em loop, escondido — única parte do site que depende de internet) |
ui.js | Formatação de dinheiro, toasts (avisos), nome colorido do jogador |
bots.js | Só gera os "outros jogadores" simulados no painel ao vivo do Crash e do Double (ver seção própria) |
particles.js / effects.js | Confete, flash de tela, animação de "Big Win" |
achievements.js | Lista de conquistas + verificação automática |
modes.js | Modo Turbo (acelera as animações) |
battlepass.js | Regras do Passe de Batalha |
collectibles.js | Catálogo dos 110 colecionáveis (Equipe BZG + Amigos dos Bazingas), drop aleatório a cada aposta, recompensa por álbum completo |
leaderboard.js | Ranking online via Supabase (BZG.leaderboard). Login anônimo (sem e-mail) + apelido = o do cadastro + upsert do saldo/recorde/nível (tabela leaderboard) e do maior ganho por jogo (tabela game_scores). Roda em segundo plano em todas as páginas (o layout.js injeta o SDK sozinho fora da página de Ranking). A chave pública fica no topo do arquivo (segurança via RLS) |
🔐 Cadastro (conta local, sem banco de dados)
Ao abrir o site pela primeira vez em um navegador, a tela de cadastro é obrigatória (cadastro.html) antes de acessar qualquer outra página — isso é verificado por layout.js em toda página que carrega a sidebar/topbar.
O cadastro pede só nome de jogador e senha (sem e-mail), mas não existe servidor nem banco de dados: tudo fica gravado só no localStorage do navegador (dentro do mesmo objeto de sempre, chave account). Por isso:
- É uma conta por navegador — não dá para "logar" com o mesmo cadastro em outro computador ou celular.
- A senha não passa por nenhum tipo de criptografia real (não faz sentido ter isso sem servidor) — é só para deixar o fluxo pronto para o dia em que o projeto ganhar um backend de verdade.
- "Sair da conta" (em Configurações) volta para a tela de cadastro, mas mantém saldo/histórico salvos — só é preciso cadastrar de novo (ou o próximo visitante do navegador cria a própria conta).
- "Apagar tudo" (em Configurações) apaga a conta também, e o site pede um novo cadastro.
- Política de Privacidade (
privacidade.html): página independente, acessível mesmo sem conta (não passa pelo "porteiro" do layout.js) — link no checkbox do cadastro e no rodapé de Configurações. Explica que hoje nada sai do navegador, exceto o tráfego técnico de terceiros (Google Fonts, YouTube da música de fundo). Ver seção LGPD abaixo.
⚖️ LGPD e privacidade
Hoje (sem backend), o risco de LGPD é baixo: nome de jogador e senha ficam só no localStorage, quem administra o site nunca recebe nem armazena esses dados. As únicas trocas com terceiros são o carregamento do Google Fonts e do vídeo do YouTube (música de fundo) — ambos processam o IP de quem visita, como a maioria dos sites da internet, e isso está documentado em privacidade.html. O botão "Apagar tudo" em Configurações já cobre o direito de eliminação de dados.
Isso muda quando o modo multiplayer/ranking (planejado com Supabase) for ao ar: nesse momento o site passa a coletar e-mail e estatísticas num servidor de verdade, e vira necessário ter base legal (consentimento no cadastro), e fluxos reais de acesso/correção/exclusão dos dados guardados no servidor. Isso está no escopo do plano de multiplayer.
🎮 Jogos
Ativos
| Jogo | Tema da equipe BZG | Como funciona | RTP aproximado |
|---|
| 🛶 Canoa Furada | Crash | Multiplicador sobe ao vivo, retire antes de "afundar" | ~96% |
| 🎡 Double | — | Aposta em vermelho/preto/branco (branco paga 14x) | ~93.3% (15 números, padrão Blaze) |
| 🥒 Mines do Pikles | Mines | Revele células fugindo das bombas, cada acerto aumenta o multiplicador | ajustável pelo nº de bombas |
| 🗑️ Lixeira do Linden | Tower | Suba 8 andares sem pisar na armadilha | até ~25x |
| 🎃 Plinko da Abóbora | Plinko | Casa sorteada por RNG binomial (a mesma distribuição de um plinko físico), a bolinha é guiada até ela; 8/12/16 linhas, risco baixo/médio/alto | ~96–97% exato em toda combinação |
| 🎲 Dado 616 | Dice | Escolha acima ou abaixo de um alvo | ~99% |
| 🃏 HiLo do Panetone | HiLo | A próxima carta vem maior ou menor? Multiplicador acumula | ~98–99% |
| 🎯 Roleta | Roulette | Roleta europeia (0–36) com mesa de apostas completa | ~97% (número cheio paga 36x) |
| 🍑 21 do Bogão | Blackjack | Blackjack clássico contra o dealer, natural paga 2.5x | ~99.5% |
| 🎟️ Raspadinha | Scratch | Raspe 9 campos, ache 3 iguais | ~90% |
| 📉 Limbo | Limbo | Escolha um alvo; se o resultado sorteado passar dele, você ganha | ~99% |
| 🔋 Moeda da Pilha | Coinflip | Cara ou coroa, quase 2x | ~98% |
| 🏇 Corrida BZG | Horse | Aposte num dos 6 corredores da equipe BZG; se ele vencer, dobra a aposta (2x fixo), sem odds diferentes por corredor | ~96% |
| 🐯 Bazinguinha | Slot (estilo Fortune Tiger) | 3×3, 5 linhas (3 horizontais + 2 diagonais). ⚡ é curinga. Wild grudento: caiu um ⚡, ele trava e os outros re-giram de graça; enquanto vier ⚡ novo, gira de novo. Tela cheia paga ×10 (máx 2500x) | ~95% |
| 💎 Bazinga Bonanza | Slot (estilo Sweet Bonanza) |
Controles que valem pra todos os jogos de aposta (centralizados em layout.js): apertar Enter num campo de valor já aposta/joga; os botões rápidos ½ / 2x / Máx nunca deixam o valor passar do seu saldo; e o site lembra o último valor apostado em cada jogo (guardado por página no localStorage, chave bzgBet:<caminho>).
🚧 Em desenvolvimento (fora do ar)
- Nenhum! A partir da v1.18 todos os jogos estão no ar (o último, Bazinga Bonanza, entrou). O mecanismo de "em desenvolvimento" continua disponível pra jogos futuros: marque o item com
dev: true em js/core/layout.js e js/pages/lobby.js e coloque data-dev="true" no <body> da página — o layout.js esconde o link e bloqueia o acesso direto pela URL.
🎥 Painel "ao vivo" do Crash e do Double
Só esses dois jogos mostram outros apostadores simulados entrando na rodada, apostando e retirando ao seu lado — isso é intencional, dá a sensação de rodada compartilhada (como em sites de apostas de verdade) e não afeta o seu resultado nem o RTP. Não existe mais nenhum "jogador falso" em outro lugar do site (o antigo ticker de vitórias no lobby, o ranking diário fake e a contagem de "X jogando agora" nos cards foram removidos — antes de ir pro ar de verdade, não faz sentido mostrar números fictícios como se fossem reais).
🎫 Passe de Batalha
- 100 níveis, cada um custando 2.500 XP (o XP é o mesmo do perfil: 1 XP a cada BZ$10 apostados) — são 250.000 XP para zerar o passe (= BZ$ 2,5 milhões apostados). De propósito: completar o passe é MUITO difícil (desde a v1.15).
- Organizado em 10 capítulos de 10 níveis, um por personagem: o Capítulo 1 é dedicado a todos os 4 Amigos dos Bazingas juntos (Dhani, Shadow, CBPB_Gamer, Alien Jo); os Capítulos 2–10 são um pra cada um dos 9 membros da Equipe BZG (Abóbora, Panetone, Canoa Furada, 616, Pikles Gamer, Pilha Avulsa, Linden, Bogão, Pitoco) — ver
CHAPTERS em js/pages/passe.js e SPECIALS em js/core/battlepass.js. Uma barra de navegação rápida no topo pula direto para qualquer capítulo.
- Todo nível dá uma recompensa cosmética específica (nenhum nível "genérico", e nenhuma figurinha — a Coleção agora é só drop; ver
SPECIALS em battlepass.js, cobre os 100 níveis 1 a 1): 56 avatares (um pra cada personagem + dezenas de novos: 🦖🐳🦋🍕🎸🛸🪐🗿🏰🐬🐘 e mais), 15 cores de nome (as 7 antigas + Aqua, Lava, Tóxico, Realeza, Pôr do Sol, Galáxia, Algodão Doce, Esmeralda), 10 temas extras (os 6 antigos + Sangue, Oceano, Vulcão, Lavanda) e 18 títulos, além do Modo Turbo (nível 30). As cores/temas/títulos novos foram adicionados junto (CSS .bzg-name.color-* e :root[data-skin="*"] em style.css, THEMES em theme.js, TITLES/COLOR_LABELS em battlepass.js).
- A única recarga do Passe vem do bônus de capítulo: ao resgatar o último nível de qualquer um dos 10 capítulos (10, 20, 30... 100), o jogador ganha +BZ$ 5.000 de recarga — exatamente uma vez por capítulo, +BZ$ 50.000 no total ao zerar o passe inteiro. Nenhum outro nível dá recarga. Ver
CHAPTER_BONUS em battlepass.js; cada capítulo mostra esse aviso no cabeçalho.
- Progresso e resgate ficam em
passe.html; o botão "Resgatar tudo" resgata todos os níveis já alcançados de uma vez, em qualquer capítulo (incluindo os bônus de capítulo).
🎴 Coleção de colecionáveis
- Um álbum de figurinhas temáticas com dois grupos — ver
js/core/collectibles.js:
- 🎪 Equipe BZG: 9 personagens (Abóbora, Panetone, Canoa Furada, 616, Pikles Gamer, Pilha Avulsa, Linden, Bogão, Pitoco), 10 itens cada = 90.
- 🤝 Amigos dos Bazingas: 4 personagens (Dhani, Shadow, CBPB_Gamer, Alien Jo — cada um também estrela um dos minigames sem aposta), 5 itens cada = 20.
- 110 colecionáveis no total.
- Só uma forma de conseguir figurinhas: drop 100% aleatório — toda aposta, em qualquer jogo, tem uma chance pequena (5%) de soltar uma figurinha, sem nenhum vínculo com o jogo que você está jogando (ver evento
bzg:bet-recorded → collectibles.rollOnBet() em layout.js). O Passe de Batalha não dá mais figurinhas — de propósito, a Coleção virou uma coleta lenta que depende só da sorte, pra dar valor a completar cada álbum.
- Raridade (4 níveis, ver
RARITY/rarityFor() em collectibles.js): cada figurinha é Comum (cinza), Rara (azul), Épica (roxa) ou Lendária (dourada) — derivada da posição no álbum (o último item de cada personagem é sempre o Lendário). O sorteio é ponderado por raridade (Comum peso 12, Rara 5, Épica 2, Lendária 1), então as Lendárias caem bem menos — e como completar o álbum exige a Lendária, a coleta é de propósito longa.
- Aviso de drop repaginado: em vez de um toast simples, sai um card animado no centro da tela ("revelação") com a figurinha grande, um brilho passando por cima, a raridade colorida, o nome e o progresso do álbum daquele personagem; Épicas/Lendárias/álbum-completo ainda soltam confete. Não bloqueia o jogo (fecha sozinho ou ao tocar). Ver
reveal() em collectibles.js e os estilos .cr-* em style.css.
- Completar o álbum de um personagem desbloqueia o avatar exclusivo dele (o mesmo avatar usado pelo bot daquele personagem no painel ao vivo, quando aplicável) — com uma revelação especial "🏆 Álbum completo!".
- Página própria em
colecao.html: barra de progresso geral (%), legenda de raridades, faixa de "Últimas" figurinhas (as 6 mais recentes) e cada carta mostra sua raridade com borda/brilho colorido. Tem aba "Álbum" (funcional) e aba .
🧱 Minigames (sem aposta)
- Seção separada dos jogos de aposta: minigames que não mexem no saldo, vivem em
minigames/ (com css/minigames/ e js/minigames/ próprios) e têm sua própria seção na sidebar. Cada um é estrelado por um dos Amigos dos Bazingas.
| Minigame | Amigo | Mecânica | Recompensa |
|---|
| 🧱 Torre do CBPB_Gamer | CBPB_Gamer | Empilhar blocos, clique/espaço na hora certa; encaixes perfeitos seguidos fazem a torre voltar a crescer | XP + recorde de andares |
| 🏳️🌈 Sequência Arco-íris | Dhani | Memorize e repita a sequência de cores (tipo Simon Says); cada pad toca uma nota musical própria (vira uma melodia) | XP + recorde de rodadas |
| 🌑 Sombra Rápida | Shadow | Clique nos "olhos" antes que sumam, 30s por rodada; de vez em quando aparece um olho dourado ⭐ que vale 3 | XP + recorde de acertos |
| 👽 Fuga Alienígena | Alien Jo | Desvie de meteoros com o disco voador (mouse/toque/setas); pegue as estrelas ⭐ pra ganhar +2s cada | XP + recorde de segundos |
- Todos dão XP direto (
storage.addXp) e guardam recorde pessoal (storage.reportMinigameScore/getMinigameBest, campo genérico best). Sem relação com os jogos de aposta existentes (ex.: a Torre não tem ligação com "Lixeira do Linden").
- Mais minigames podem ser adicionados depois seguindo o mesmo padrão (
MINIGAME_ITEMS em layout.js).
⚙️ Configurações
- Música e efeitos sonoros (ligar/desligar)
- Tema visual: dark/light + 10 temas extras (desbloqueados no Passe) — também dá pra trocar pelo mostruário na página de Perfil
- Modo Turbo: acelera as animações dos jogos (desbloqueado no Passe, nível 30)
- Conta: editar perfil, ver saldo e valor de recarga atual, sair da conta
- Zona de perigo: apagar todos os dados (saldo, perfil, histórico, conquistas e conta)
💳 Saldo e recarga
- Todo jogador começa com BZ$ 10.000.
- O botão "Recarregar" (na topbar e em Configurações) preenche o saldo até o valor de recarga atual (base + bônus do Passe de Batalha).
- Se o saldo chegar a zero, o site recarrega sozinho automaticamente (sem precisar clicar em nada) e avisa com um toast — ver o listener central em
layout.js (bzg:balance-changed).
- Topbar: logo depois do menu, um card de perfil clicável (avatar, nome colorido, título, nível) leva direto pro Perfil — antes ficava só na sidebar. Mais à direita, 3 mini-campos mostram sempre Nível, Recorde de saldo (maior saldo que o jogador já teve,
stats.peakBalance) e Maior prêmio (maior pagamento em uma única aposta, stats.maxWin) — tudo atualiza ao vivo a cada aposta/bônus/recarga.
🏆 Conquistas
76 conquistas em js/core/achievements.js, cobrindo: primeira aposta, sequências de vitória/derrota, multiplicadores altos, marcos de saldo e de volume apostado, níveis do perfil e do Passe, cosméticos desbloqueados, recargas automáticas, marcos específicos de cada jogo (ex.: acertar o branco no Double, número cheio na Roleta, blackjack natural), progresso na Coleção de colecionáveis (Equipe, Amigos e tudo junto) e recordes nos 4 minigames sem aposta. São verificadas automaticamente a cada aposta.
▶️ Como jogar localmente
Não precisa instalar nada: baixe o projeto e dê duplo-clique em index.html. Como não há cadastro ainda nesse navegador, ele vai te mandar direto para cadastro.html — crie uma conta (fictícia) e o resto do site libera. Tudo funciona offline, exceto a música de fundo (ver Tecnologia abaixo), que precisa de internet.
🛠️ Tecnologia
- HTML + CSS + JavaScript puro — sem frameworks, sem build, sem servidor
- Persistência via
localStorage (uma chave única bazingaBetState, mais bzgTheme/bzgMusic/bzgSfx)
- Efeitos sonoros gerados por código com Web Audio API (sem arquivos de áudio) — 100% local
- Música de fundo: um vídeo do YouTube tocando em loop, escondido (só o áudio, sem player visível na tela) via YouTube IFrame API — ver
js/core/sounds.js. É a única parte do site que depende de internet; sem conexão, ela simplesmente não toca e o resto do site continua funcionando normalmente. Como todo autoplay com som, só começa a tocar depois do primeiro clique/tecla do jogador (mesma regra de navegadores que já valia antes).
- RTPs calibrados por simulação de Monte Carlo (scripts descartáveis, não fazem parte do site)
🚀 Deploy
O site é 100% estático. Publicado no Vercel, com deploy automático a cada push no GitHub:
- Suba este repositório para o GitHub
- No Vercel, clique em Add New → Project e importe o repositório
- Não precisa configurar nada (sem build command, sem output directory) — só clicar em Deploy
- Todo push na branch
main publica sozinho
📝 Changelog
v1.36 (2026-10-02) — 🤖 Sem bots, valores mais reais
- Bots removidos de Canoa, Double e Roleta (Ao Vivo e Solo): a mesa mostra só pessoas reais.
js/core/bots.js apagado.
- Saldo inicial e recarga: BZ$ 1.000 (era 10.000). Aposta padrão: BZ$ 10 (era 100).
- Valores com centavos em todo o site (ex.: BZ$ 1.019,20); prêmios agora pagam centavos (BZ$ 10 × 1,25 = BZ$ 12,50). Apostas continuam em valores inteiros.
- Uma única vez, todo saldo antigo volta para BZ$ 1.000 (o recorde de saldo também recomeça; nível, conquistas e coleção continuam).
- XP: 1 ponto a cada BZ$ 1 apostado (as apostas ficaram 10x menores, então o ritmo de nível continua o mesmo).
- Conquistas de dinheiro, "vitória grande" e degraus de aposta do Bazinguinha ajustados para a escala nova.
v1.35 (2026-10-01) — 🔒 Revisão de segurança + aviso "só brincadeira"
- Aviso na primeira visita: explica que tudo é de brincadeira, que as fichas não valem dinheiro, que não dá para depositar/sacar, que ninguém vai pedir Pix/cartão/senha, que o site é para maiores de 18 anos e indica o CVV (188). Aparece uma vez por navegador.
- Corrigida falha grave no ranking: a "cor do nome" vinda de outros jogadores ia direto para o HTML; alguém poderia rodar código no navegador de quem abrisse o ranking. Agora só nomes de cor simples são aceitos (ranking, chat e mesas ao vivo).
- Números do ranking sempre tratados como número; aposta do Double ao vivo só aceita as 3 cores; o próprio apelido também é protegido nas mesas.
app.html não redireciona mais para fora do site.
- A biblioteca do Supabase agora fica no próprio site (
js/vendor/), sem depender de CDN de terceiros.
vercel.json com cabeçalhos de segurança (CSP, anti-iframe, nosniff, etc.).
- Bot "ReiDoPix" virou "ReiDaSorte" (nada que lembre dinheiro real).
v1.34 (2026-10-01) — 🔴 Ao Vivo de verdade: Canoa, Double e Roleta + chat
- Canoa, Double e Roleta ao vivo: todo mundo joga a mesma rodada, na mesma hora. As rodadas seguem o relógio do servidor (
server_now() no Supabase) e o resultado sai do número da rodada — todo aparelho calcula igual, sem servidor pago.
- Apostas de jogadores reais aparecem na mesa (bolinha verde). Bots continuam aparecendo quando tem pouca gente, marcados com BOT.
- Chave Ao Vivo / Solo em cada um dos 3 jogos (Solo = como era antes). A Roleta ao vivo gira sozinha a cada 25s.
- Chat: botão flutuante em todas as páginas, com abas Global e Mesa (nos jogos ao vivo). Guarda as últimas 100 mensagens por sala, 1 mensagem a cada 2s, palavrões viram *** e links viram [link].
- Contador real de jogadores online (menu lateral e chat) e "👥 X na mesa" nos jogos; o lobby mostra quantos estão jogando cada mesa.
- Arquivos novos:
js/core/live.js (relógio, presença, mesa, chat) e js/core/chat.js (janela do chat). Tabela nova no Supabase: chat_messages.
- Política de Privacidade atualizada (ranking, chat e ao vivo).
v1.33 (2026-10-01) — 📈 Progresso mais difícil, recarga fixa
- Subir de nível ficou 3x mais difícil (perfil e Passe de Batalha: 7.500 XP por nível do Passe).
- A recarga é sempre BZ$ 10.000 — nada aumenta mais esse valor (bônus antigos foram zerados).
- Completar um capítulo do Passe agora dá 1 figurinha nova garantida (antes aumentava a recarga).
v1.32 (2026-10-01) — 🤖 Modo Auto no Bazinguinha
- Botão AUTO na máquina: escolha 10, 25, 50, 100 ou ∞ giros.
- Regras para parar: ganho de 10x/25x/100x ou mais, saldo abaixo de um valor, ou tela cheia ×10.
- O botão mostra os giros restantes; toque nele para parar.
v1.31 (2026-10-01) — 🔇 Sem música de fundo, figurinhas e vitórias com imagem
- Música de fundo removida: saem o player do YouTube, o botão de música da topbar e os controles de música em Configurações (
startMusic/toggleMusic etc. viram funções vazias). A moldura app.html (que só existia para a música não parar) deixou de ser usada: as páginas abrem direto de novo e links antigos app.html#<página> redirecionam para a página.
- Figurinhas da Coleção com imagem:
BZG.collectibles.iconHTML(item) usa assets/colecao/<id>.webp (110 imagens a caminho pelo Codex, prompt em docs/codex-colecao-bigwin.md) no álbum, nas recentes e na revelação; sem a imagem, mostra o emoji.
- Grandes vitórias com arte: o Big Win mostra
assets/bigwin/grande|mega|bazinga.webp atrás do título de cada nível (some se não existir).
- Ícone da aba novo (
assets/logo/icone.webp) em todas as páginas.
v1.30 (2026-10-01) — 🔊 Áudio novo, Bonanza na caverna, Bazinguinha com os itens dos Bazingas
- Áudio refeito (tudo sintetizado, sem arquivos):
sounds.js ganhou um motor novo (compressor + limitador, reverb leve, envelopes, ruído filtrado, variação de tom, limite de vozes e de frequência nos ticks, nada antes da 1ª interação, pausa com a aba escondida). Todas as funções antigas continuam e soam melhor.
- Vitórias:
winSmall/winMedium/winBig/winFor, chuva de moedas, contagem com "tic" acelerando, e no Big Win uma fanfarra por nível (Grande/Mega/BAZINGA) com whoosh + impacto ao subir e "coletar" no fim.
- Jogos: rolos e suspense do Bazinguinha, bolinha da Roleta rolando e assentando, motor do Crash subindo com o multiplicador, tom subindo a cada acerto no Mines/Tower/HiLo, pinos do Plinko, cartas, dados, raspadinha, moeda, galope e torcida na Corrida; no Bonanza cascata, estouro das joias subindo a cada cascata, bônus caindo, orbe carregando e multiplicando, entrada e re-disparo das grátis.
- Interface: cliques, hover discreto, menus, avisos por tipo, conquista, subir de nível e recarga.
- Volume: dois controles em Configurações ("Volume dos efeitos" e "Volume da música"), salvos no navegador; o da música vai para a moldura.
- Bazinga Bonanza na caverna: visual sério de templo antigo — tabuleiro de pedra com moldura de ouro envelhecido, painéis de pedra, Guardião de pedra num nicho, tochas e cristais; rodadas grátis acendem a caverna em dourado. Símbolos viram "Joias dos Bazingas" (Diamante BZG, Rubi do Panetone, Quartzo do Bogão, Ametista do Pitoco, Jade do 616, Esmeralda do Pikles, Topázio da Pilha, Âmbar da Abóbora, Ídolo BZG, Orbe multiplicador). Imagens novas a caminho pelo Codex (
docs/codex-quentao-bazinguinha-bonanza.md).
- Bazinguinha com os itens dos Bazingas: os símbolos passam a ser Pêssego do Bogão, Panetone, Picles, Pilha e Abóbora (imagens no clima oriental a caminho; até lá, os desenhos SVG). O mascote O Menor Quentão será refeito pelo desenho original (
docs/ref/menor-quentao-desenho.png).
v1.29 (2026-10-01) — 🖼️ Logo novo e imagens dos caça-níqueis
- Logo em imagem (
assets/logo/logo.webp, gerado pelo Codex) no menu lateral, com zoom leve no hover; se não carregar, volta o desenho SVG antigo. Ícone da aba (app.html) agora é assets/logo/icone.webp.
- Imagens do Codex nos caça-níqueis: cenário, logo, topo, mascotes e símbolos em
assets/bazinguinha/ e assets/bonanza/ — carregados automaticamente pelo assets.js da v1.28.
v1.28 (2026-10-01) — 🏮 Bazinguinha e 🍭 Bonanza com tela imersiva
- Bazinguinha no estilo "tigrinho" (arte própria): máquina em retrato com telhado de telhas verde-jade, lanternas balançando e o mascote O Menor Quentão sentado em cima dos rolos; rolos creme com moldura dourada e moedinhas com os números das 5 linhas; faixa vermelha e dourada com o ganho grande; pílulas de Saldo/Aposta/Ganho; botão de girar redondo verde-jade, −/+, menu "Prêmios e regras" e turbo ⚡. A área do jogo ocupa a altura da tela e a máquina cresce junto; em telas largas aparecem pergaminhos com as regras dos lados. Cenário de pátio de festa à noite, linhas vencedoras douradas se desenhando, símbolos vencedores pulsando, mascote reagindo.
- Bazinga Bonanza no estilo Pragmatic (Sweet/Gems Bonanza): palco imersivo em terra dos doces (nuvens, morros de bala, pirulito), logo no canto, grade grande num tabuleiro de vidro com borda dourada, cards "Comprar bônus" e "Aposta" à esquerda, Estrela-Bônus flutuando e botão de girar redondo à direita, barra de saldo e ganho embaixo. Rodadas grátis mudam o clima (noite magenta, raios, contador grande de rodadas e ganho total). Tabela de pagamentos montada direto dos dados do jogo.
- Imagens do Codex com plano B: novo
js/core/assets.js (BZG.assets.preload) — os dois jogos usam cenário, logo, topo, mascotes e símbolos de assets/bazinguinha/ e assets/bonanza/ assim que existirem (prompt em docs/codex-slots-logo.md) e, enquanto não existem, ficam com os desenhos SVG/CSS.
- Matemática intacta: pesos, pagamentos, chances e SCALE conferidos linha a linha contra a versão anterior.
- Correções gerais: painel de aposta não estoura mais a largura no celular (bug da v1.27), a topbar cabe em tablets e notebooks (esconde os mini-stats extras abaixo de 1600px, saldo nunca quebra linha) e saíram do repositório capturas de tela de teste que tinham entrado por engano.
v1.27 (2026-10-01) — 🖥️ Site usa a tela toda + banner com todos os jogos
- Mais espaço na tela: a área central deixou de ter 1160px de largura máxima e passou a ocupar quase a tela toda (até 2200px, com margem de 16–40px). O lobby mostra mais cartões por linha e a área dos jogos fica maior.
- Banner do lobby passa por todos os jogos: um slide por jogo (gerados por
initBanner() em lobby.js), com a capa ilustrada inteira e inclinada à direita, a mesma capa ampliada e desfocada no fundo, ícone, selo (NOVO / AO VIVO), nome, descrição e "Jogar agora". Troca a cada 5s, pausa com o mouse em cima, tem setas e dá pra arrastar no celular.
v1.26 (2026-10-01) — 🖼️ Capas ilustradas no lobby
- Capas dos jogos: os cartões do lobby agora mostram uma arte ilustrada de cada jogo (
assets/capas/<id>.webp, 768×1024, geradas pelo Codex a partir de docs/codex-capas.md), com o nome por cima da faixa escura de baixo e zoom suave no hover. Se uma capa não carregar, o cartão volta sozinho ao visual com ícone.
- Minigames no lobby: nova seção "Minigames (sem aposta)" com as capas da Torre, Sequência Arco-íris, Sombra Rápida e Fuga Alienígena.
v1.25 (2026-10-01) — 🎡 Roleta com giro de verdade
- Roda redesenhada (
drawWheel em roulette.js): aro de madeira, pista com losangos defletores, casas com separadores dourados, prato central com torre e cruz que giram junto, e desenho nítido em telas retina (canvas 400px lógico × densidade da tela).
- Bolinha de verdade: a roda gira num sentido e desacelera; a bolinha corre na pista no sentido contrário, perde velocidade, desce quicando pelas casas (com "tec-tec" a cada separador) e assenta no número — daí gira junto com a roda. O número continua sorteado antes (RNG justo); a animação só leva a bolinha até ele. A casa onde caiu brilha e o número aparece no centro.
- Câmera aproxima a roda quando a bolinha começa a cair (respeita
prefers-reduced-motion). Giro de 6s (metade no Turbo).
v1.24 (2026-10-01) — 🧈 Animações fluidas nos caça-níqueis + Plinko consertado
- Plinko consertado: as abóboras ficavam paradas em cima dos pinos da penúltima fileira e só caíam pelo limite de 10s. Causa: o "assentar na casa sorteada" puxava a bolinha para o centro da casa antes de ela passar pela penúltima fileira, cujos pinos ficam exatamente em cima desse centro. Agora o assentar só começa depois dessa fileira, e uma bolinha que bate reto no topo de um pino escorrega para o lado. Queda volta a levar ~2,5–4,5s (antes: 10s cravados).
- Bazinguinha mais fluido: os rolos param com um quique suave (passam um pouco do ponto e voltam), o desfoque pesado do giro virou um "esticar" do símbolo (bem mais leve), a re-rolagem do WILD troca só as casas que giraram (os wilds travados não piscam mais) e as linhas vencedoras se desenham de ponta a ponta.
- Bonanza mais fluido: na cascata, só caem os símbolos que desceram, cada um da sua distância e com quique — antes a grade inteira era redesenhada e caía de novo a cada cascata. No giro novo os símbolos caem coluna por coluna.
- Brilhos sem engasgo (os dois jogos): os brilhos pulsantes (vencedores, WILD travado, bônus, bombas, moldura) deixaram de redesenhar sombras a cada quadro e viraram uma camada que só muda de transparência. Medido: 60 quadros por segundo durante o giro e as cascatas.
v1.23 (2026-10-01) — 🎰 Bazinguinha e Bonanza turbinados, reset geral, sem bônus diário
- Reset geral:
RESET_TOKEN em theme.js trocado para v1.23-reset — na próxima visita, todo jogador recomeça do zero (saldo, nível, passe, coleção e cadastro). O ranking online (Supabase) é zerado junto, quando esta versão entra no ar.
- Bônus diário (Panetone diário) removido: sai o modal de coleta (
showDailyBonus em layout.js) e as 4 conquistas que dependiam dele (Fiel à casa, 7/14/30 dias). O limite de recarga continua subindo pelo Passe.
- Símbolos desenhados nos caça-níqueis: abóbora, pilha, picles, bolo, pêssego, diamante, carta, dado, raio (WILD), bônus e bomba agora são SVG (
s-* em icons.js), na grade e nas tabelas de prêmios.
- Bazinguinha: suspense na 3ª coluna (quando as duas primeiras já formam meia linha, ela gira mais devagar, brilhando, com o banner "Será?!"), símbolos vencedores pulam, o ganho sobe contando na barra e prêmios de 5x+ tremem a máquina.
- Bazinga Bonanza: vencedores explodem antes da cascata, "+BZ$" sobe a cada cascata e o ganho do giro aparece ao vivo; "FALTA 1!" quando falta 1 bônus para as rodadas grátis (a grade pulsa); as bombas acendem e explodem antes de multiplicar, com tremor; a barra das rodadas grátis mostra o ganho acumulado.
- Giro automático nos dois jogos (novo
js/core/autospin.js): 10, 25, 50 ou 100 giros, botão Parar, espera a animação de vitória grande fechar e para sozinho sem saldo.
- Tabela de prêmios com nome à esquerda e prêmio à direita (vale também para a Raspadinha).
v1.22 (2026-10-01) — 🎃 Ícone novo da Abóbora
- Plinko da Abóbora: ícone redesenhado — abóbora redonda e brilhante, com folha e carinha sorrindo (bochechas rosadas), no lugar da abóbora de Halloween.
v1.21 (2026-10-01) — 🎨 Ícones desenhados + telas de jogo novas
- Ícones desenhados (SVG) no lugar dos emojis: novo
js/core/icons.js (BZG.icons.tile/art/nav) com um ícone para cada um dos 15 jogos e 4 minigames, mais os ícones de linha do menu e do topo (Lobby, Ranking, Coleção, Passe, Perfil, Configurações, música, efeitos, tema, menu, nível, saldo). Aparecem iguais em qualquer aparelho. Usados no menu lateral, no título da topbar, nos cartões do lobby e na tabela de últimas apostas. Se o arquivo faltar, tudo volta para os emojis antigos.
- Telas de jogo novas (todas): aposta à esquerda (340px) e jogo à direita; campos maiores, botão de apostar vermelho pulsando, botão de colher/retirar verde, opções ativas em vermelho, histórico em linhas alternadas e área do jogo com brilho na cor do jogo (
--game-c, definida pelo layout.js). No celular o jogo fica em cima e a aposta embaixo.
- Mines: casas com cara de botão, picles e bomba desenhados no lugar dos emojis 🥒/💣.
v1.20 (2026-10-01) — 🟥 Visual novo estilo Blaze + vitórias em 3 níveis
- Visual cinza-escuro + vermelho (tema escuro, estilo Blaze): nova paleta em
:root[data-theme="dark"], vermelho #f12c4c, item ativo do menu lateral em vermelho sólido, saldo grudado no botão vermelho Recarregar na topbar. Os outros temas/skins continuam funcionando.
- Lobby: banner maior com ícone flutuando e botão pulsando; cartões de jogo coloridos (uma cor por jogo, ícone grande, nome em destaque); nova tabela "Suas últimas apostas" com as 8 apostas mais recentes do próprio jogador (dados reais do histórico, sem jogadores falsos).
- Big Win em 3 níveis (
BZG.effects.bigWin reescrito): Grande Vitória (azul), Mega Vitória (rosa) e BAZINGA! (dourado). O valor sobe contando e tremendo, e o nível sobe ao vivo durante a contagem com flash, anel e aviso "SUBIU DE NÍVEL!". Confete, moedas e fogos aumentam a cada nível e a tela treme no BAZINGA. Botão Pular/COLETAR, fecha sozinho, mais rápido no modo turbo, e respeita prefers-reduced-motion. Faixas: BAZINGA ≥ 100x, Mega ≥ 25x (ou prêmio ≥ BZ$ 100 mil), senão Grande.
- Música sem parar ao trocar de página: nova moldura
app.html guarda o player do YouTube e mostra as páginas num iframe. Toda página aberta direto (link, favorito, /) é redirecionada por theme.js para app.html#<página>; o endereço e o título da aba acompanham a página, e o botão Voltar funciona. As páginas pedem a música para a moldura (BZG.musicHost em sounds.js). Aberto via file://, segue sem moldura.
- Big Win em todos os jogos: o evento
bzg:bet-recorded agora leva won/payout/multiplier/bet, e qualquer vitória ≥ 10x (ou prêmio ≥ BZ$ 25 mil) abre a animação automaticamente — antes só 5 jogos chamavam.
v1.19 (2026-07-11) — 🔥 Bazinguinha: mascote O Menor Quentão + novas animações
- Mascote novo: O Menor Quentão (personagem do Arthur, desenhado 100% em CSS — cabeça amarela, óculos escuros, bracinhos), no topo da máquina da Bazinguinha. Ele reage aos giros: pula e gira feliz na vitória (
hype na tela cheia / grandes prêmios, happy nas vitórias e a cada wild novo do respin), fica de nariz torto na derrota (sad), com aura de calor. Ver .mq-* em css/games/bazinguinha.css e reactMascot() em js/games/bazinguinha.js.
- Novas animações no slot: os rolos ganham motion blur enquanto giram, um flash de "quique" quando cada coluna para, e as células vencedoras têm um brilho que varre por cima. Pesquisa do Fortune Tiger (Jogo do Tigrinho) confirmou que a mecânica da Bazinguinha já é fiel (3×3, 5 linhas, wild grudento com respin, tela cheia ×10, máx 2500x, RTP ~95% vs 96,81% do original).
- Otimização: todas as animações usam só
transform/opacity/filter (aceleradas por GPU) e respeitam prefers-reduced-motion; a página já se beneficia do carregamento do ranking em tempo ocioso (v1.17).
v1.18 (2026-07-11) — 💎 Bazinga Bonanza no ar (estilo Sweet Bonanza)
- 💎 Bazinga Bonanza saiu de "Em desenvolvimento" e virou um slot completo no estilo Sweet Bonanza, com os ícones do Bazinga: grade 6×5 que paga em qualquer lugar (8+ do mesmo símbolo, faixas 8-9 / 10-11 / 12+), cascata/tumble (vencedores explodem, novos caem, pode ganhar de novo no mesmo giro), 🎇 bônus (4+ dispara 10 rodadas grátis, +5 no retrigger) e 💣 bombas de multiplicador (somam e multiplicam o ganho do giro; chovem nas rodadas grátis). Tem compra de rodadas grátis por 20x. Calibrado por Monte Carlo (5M giros): RTP ~94,8%, disparo de grátis ~1 em 210. Visual "candy" roxo/rosa (
css/games/bonanza.css reescrito) pra diferenciar do Bazinguinha. Agora todos os jogos estão no ar — a seção "Em desenvolvimento" ficou vazia. Ativação: removido data-dev do <body> e a flag dev:true em layout.js/lobby.js.
v1.17 (2026-07-10) — Avatares no ranking, Panetone que sobe a recarga, otimização
- Ranking com a cara de cada jogador: as linhas do ranking (na página de Ranking E nos widgets embutidos) agora mostram o avatar (ícone), o nome na cor desbloqueada e o título de cada jogador.
leaderboard.js sincroniza avatar/name_color/title e tem um rowNameHTML(row) que monta isso; reusa as classes globais .bzg-name.color-* / .bzg-title e a nova .lb-avatar. (Precisou de 3 colunas novas em cada tabela do Supabase.)
- Panetone diário agora aumenta o limite de recarga: em vez de dar dinheiro na hora, o bônus diário sobe o seu piso de recarga (
reloadBonus) — jogar todo dia faz a sua rede de segurança crescer (dia 1 = +500 … dia 7+ = +5000). Ver claimBonus() em storage.js e o modal em layout.js.
- Recarga mais ágil: cooldown da recarga de 30s → 10s.
- Otimização geral:
getState() agora é memoizado — antes ele re-lia o localStorage e refazia ~13 merges a cada chamada (e é chamado dezenas de vezes por ação); agora parseia uma vez, saveState atualiza o cache e o evento storage invalida entre abas.
- O ranking online carrega em
requestIdleCallback (a página fica interativa primeiro) e não re-sincroniza em navegação rápida (throttle de 20s via sessionStorage), cortando uploads redundantes a cada troca de página.
v1.16 (2026-07-10) — Rankings embutidos em cada tela
- Widget de ranking em toda página (injetado pelo
layout.js, estilos .lbw-* em style.css): agora o ranking aparece no contexto de cada tela, sem precisar abrir a página de Ranking.
- Página principal (lobby): o ranking geral com abas (💰 Saldo / 📈 Recorde / ⭐ Nível).
- Cada jogo de aposta: o ranking de maior ganho naquele jogo.
- Cada minigame: o ranking de quem chegou mais longe (recorde de pontos).
- Top 8, com medalhas, destaque na sua linha ("VOCÊ") e link "Ver ranking completo →". Não dispara novo reset (o token de lançamento não mudou).
v1.15 (2026-07-10) — 🏆 Ranking online (multiplayer!) + odds mais justas + Passe mais difícil
- Ranking online OBRIGATÓRIO e automático (
ranking.html + js/pages/ranking.js + css/pages/ranking.css): primeira funcionalidade online do projeto. Todo jogador entra no ranking automaticamente com o apelido do cadastro (sem e-mail, sem senha, sem passo extra). Dois quadros:
- Ranking geral com 3 abas: 💰 Saldo agora, 📈 Recorde de saldo, ⭐ Nível.
- Ranking por jogo (seletor): o maior ganho numa única aposta em cada jogo de aposta, e o recorde de pontos em cada minigame (Torre/Arco-íris/Sombra/Fuga Alienígena).
- Medalhas 🥇🥈🥉 e destaque na sua própria linha ("VOCÊ").
- Backend: Supabase (
js/core/leaderboard.js, módulo BZG.leaderboard, SDK @supabase/supabase-js via CDN). Login anônimo por baixo dos panos (cada aparelho ganha um id próprio, só edita a própria linha — garantido por RLS). Duas tabelas: leaderboard (geral) e game_scores (por jogo). A chave pública fica no código de propósito (segurança via RLS). O jogo continua 100% salvo localmente; o Supabase é só a vitrine, sincronizada em segundo plano em toda página (o layout.js injeta o SDK sozinho; offline, só o ranking não atualiza). Novo item "🏆 Ranking" na barra lateral.
- Odds auditadas e mais realistas (RTP real de cada jogo conferido no código): a maioria já estava correta (Dado 99%, Blackjack 99,5%, HiLo/Moeda 98%, Roleta 97,3%, Mines/Tower 97%, Crash/Corrida 96%, Double 93,3%, Raspadinha 90%). Plinko reescrito: antes o resultado saía da física e algumas tabelas passavam de 100% de RTP em telas menores (brecha de farm) — agora a casa é sorteada por RNG binomial (a mesma distribuição de um plinko físico de verdade) e a bolinha é guiada até ela, dando RTP exato ~96–97% em toda combinação, à prova de tamanho de tela. Tabelas recalibradas em
js/games/plinko.js.
- Anti-farm na recarga: a recarga de saldo (manual e automática ao zerar) agora tem um cooldown de 30s. Sem isso dava pra apostar tudo num jogo de alta variância, zerar, recarregar de graça e repetir a jato até acertar um multiplicador gigante (farmando o ranking). A 1ª recarga é sempre imediata; as seguintes esperam. Ver
reloadCooldownLeft() em storage.js.
- Passe de Batalha MUITO mais difícil de completar: cada nível agora custa (era 600) — zerar os 100 níveis pede (era 600 mil). Ver em .
v1.14 (2026-07-09)
- 🐯 Bazinguinha no ar (saiu de "Em desenvolvimento"): virou um slot de verdade no estilo Fortune Tiger — 3×3, 5 linhas (3 horizontais + 2 diagonais), ⚡ curinga que substitui qualquer símbolo, e tela cheia do mesmo símbolo pagando ×10 (máx 2500x).
- Wild grudento com respin (mecânica nova): quando cai um ⚡, ele trava no lugar (brilho elétrico) e só os outros símbolos re-giram de graça; se a re-rolagem trouxer um ⚡ novo, ele também trava e gira de novo — encadeando até a tela encher. Cada respin tem sua própria animação (célula entra girando) e som. Ver
maybeRespin()/respinRound() em js/games/bazinguinha.js e as regras .ft-cell.locked / .ft-cell.reroll / .ft-banner.respin em css/games/bazinguinha.css.
- RTP calibrado por Monte Carlo (6 milhões de giros): pagamentos 🎃1 / 🔋1.5 / 🥒2.5 / 🍰5 / 🍑12.5 / ⚡50 (por linha) com pesos 30/25/20/15/10/3 → RTP ~95%, respin dispara em ~23% dos giros, tela cheia ~1 em 10.000.
- Ativação: removido o
data-dev="true" do <body> de games/bazinguinha.html e a flag dev: true dos itens da Bazinguinha em js/core/layout.js e js/pages/lobby.js (agora com selo NOVO). A paytable da página ganhou um bloco explicando o respin.
v1.13 (2026-07-09)
- Figurinhas mais raras: a chance de soltar um colecionável a cada aposta caiu de 15% para 5% (
DROP_CHANCE em collectibles.js) — some com a coleta 3× mais lenta, deixando a Coleção ainda mais valiosa de completar. A raridade por item (peso 12/5/2/1) continua igual.
v1.12 (2026-07-09)
- Aviso de colecionável muito melhor: o antigo toast virou um card de revelação animado no centro da tela — figurinha grande com brilho passando, raridade colorida, nome e progresso do álbum, confete nas melhores, e um card dourado especial pra "🏆 Álbum completo!". Não bloqueia o jogo (
pointer-events:none no fundo; fecha sozinho ou ao tocar). Ver reveal() em collectibles.js + estilos .cr-* em style.css.
- Sistema de colecionáveis com raridade: 4 níveis (Comum/Rara/Épica/Lendária) derivados da posição no álbum (
rarityFor()), com sorteio ponderado (RARITY weights 12/5/2/1) — Lendárias caem bem menos, então completar álbum ficou de propósito mais demorado. Na página da Coleção (colecao.html): barra de progresso geral %, legenda de raridades, faixa "Últimas" (6 figurinhas mais recentes por data) e cada carta com borda/brilho da cor da raridade. Novos exports em collectibles.js (RARITY, rarityFor, rarityMeta).
- Polimento visual geral (
style.css): botões principais ganharam um brilho premium no topo; títulos de seção ganharam uma barrinha de destaque vermelho→amarelo; painéis ganharam um filete de luz no topo; cards de jogo têm uma passada de brilho ao passar o mouse; o lobby entra com um fade suave escalonado (só opacidade, respeitando prefers-reduced-motion). Aplicado nos componentes compartilhados, então melhora Lobby, telas de jogo, Perfil, Passe e Coleção de uma vez.
v1.11 (2026-07-09)
- Passe de Batalha sem figurinhas — só cosméticos: os 56 níveis que davam figurinha da Coleção agora dão cosméticos de verdade. O Passe passou a ter, ao todo, 56 avatares (um por personagem + dezenas de novos), 15 cores de nome (8 novas: Aqua, Lava, Tóxico, Realeza, Pôr do Sol, Galáxia, Algodão Doce, Esmeralda), 10 temas (4 novos: Sangue, Oceano, Vulcão, Lavanda) e 18 títulos (11 novos). A Coleção virou 100% drop (só cai apostando, nunca pelo Passe) — de propósito, pra ser uma coleta lenta e valorizar completar cada álbum. Ver
SPECIALS/TITLES/COLOR_LABELS em battlepass.js, THEMES em theme.js e as regras .bzg-name.color-* / :root[data-skin="*"] em style.css. O bônus de capítulo (+BZ$ 5.000 por capítulo, +50.000 no total) não mudou.
- Subir de nível ficou bem mais demorado (de novo): a curva progressiva ficou bem mais dura — o custo base subiu de 1.000 → 3.000 XP e o incremento por nível de 100 → 750 XP (nível 1→2 agora pede 3.000 XP = BZ$ 30.000 apostados; 2→3 pede 3.750; 3→4 pede 4.500...). Ver
LEVEL_BASE_XP/LEVEL_STEP_XP em storage.js. O Passe (600 XP fixo por nível) não muda.
- Responsividade completa no celular: revisão de todas as páginas em telas pequenas (testado de 320px a 390px, sem estouro horizontal em nenhuma). Principais correções: topbar agora cabe inteira no celular — o botão "Recarregar" vira um ícone 🔄 e o chip de perfil mostra só o avatar (o botão de tema não some mais, cortado na borda); cabeçalho dos capítulos do Passe empilha direito (o título parava de ficar espremido palavra por palavra e o selo de bônus desce pra sua própria linha); mesa da Roleta ficou mais compacta e rola na horizontal dentro do painel. Jogos, minigames, Coleção e Perfil já eram responsivos e passaram no teste. Ver os novos blocos
@media em style.css, passe.css e roulette.css.
- Revisão de todos os jogos com melhorias:
- Todos os jogos de aposta ganharam 3 melhorias de uma vez (centralizadas em
layout.js, valem pra todos): (1) apertar Enter num campo de valor já aposta/joga, sem precisar clicar no botão; (2) os botões ½ / 2x / Máx nunca passam do seu saldo (o 2x para no que você tem); (3) o site em cada jogo, pra não ter que redigitar toda vez que voltar.
v1.10 (2026-07-09)
- Recarga do Passe rebalanceada: a recarga deixou de vir de dezenas de níveis avulsos — agora o único jeito de ganhar recarga no Passe é o bônus de capítulo (+BZ$ 5.000 exatos por capítulo completo, 10 no total = +BZ$ 50.000 ao zerar). Todos os 56 níveis que antes davam
reloadBoost agora dão uma figurinha garantida da Coleção do personagem daquele capítulo (novo reward collectible em battlepass.js, chama storage.grantCollectible direto). Passe de Batalha agora tem uma recompensa específica em todos os 100 níveis (nenhum nível "genérico" sobrando).
- Corrigido bug de reinício no meio da partida (relatado por um jogador) na Sombra Rápida e na Sequência Arco-íris: o botão de ação também serve pra reiniciar durante a partida ("Reiniciar"), mas clicar nele no meio de uma rodada não cancelava os
setTimeout da rodada anterior — duas sequências ficavam rodando ao mesmo tempo, causando comportamento errado (sombras/pads acendendo fora de hora, placar estranho). sombra.js agora cancela os timers antigos no início de startGame(); arcoiris.js usa um contador de "geração" (gameToken) pra invalidar cadeias antigas e força limpar todos os pads ao reiniciar. Torre e Fuga Alienígena não tinham esse bug (usam cancelAnimationFrame/redesenho completo a cada frame, sem estado de CSS residual).
v1.9 (2026-07-09)
- Nível muito mais difícil de subir: saiu o custo fixo de 1.000 XP por nível, entrou uma curva progressiva — cada nível pede 100 XP a mais que o anterior (nível 1→2 custa 1.000, 2→3 custa 1.100, 3→4 custa 1.200...). No nível 25 já é ~2x mais difícil que antes; no nível 100, quase 6x mais difícil (584.100 XP acumulado, contra 99.000 antes). Ver
xpForLevel()/getLevel() em storage.js. As conquistas de nível (10/25/50/75/100 e "Veterano") foram recalculadas pros novos limiares. O Passe de Batalha não muda (continua 600 XP fixo por nível — usa o mesmo XP total, mas com progressão própria).
- Política de Privacidade (
privacidade.html, nova): explica o que é guardado (hoje, nada em servidor — tudo no localStorage), os serviços de terceiros usados (Google Fonts, YouTube) e o que muda quando o multiplayer chegar. Acessível mesmo sem conta; linkada no cadastro e em Configurações.
- Passe de Batalha reestruturado por personagem: os 10 capítulos deixaram de ter nomes genéricos e passaram a ser 1 por personagem — Capítulo 1 = todos os 4 Amigos dos Bazingas juntos, Capítulos 2–10 = um pra cada um dos 9 membros da Equipe BZG (Abóbora, Panetone, Canoa Furada, 616, Pikles Gamer, Pilha Avulsa, Linden, Bogão, Pitoco).
- Passe de Batalha com muito mais cosméticos: 44 níveis com recompensa especial agora (eram 33) — 23 avatares (quase o dobro, incluindo um de cada personagem), as 7 cores, os 10 temas extras e os 7 títulos continuam todos lá. Inclui os avatares 🐒 (Macaco) e 🇧🇷 (Bandeira do Brasil) pedidos pelo usuário.
- Bônus de capítulo: completar (resgatar) o último nível de qualquer um dos 10 capítulos dá +BZ$ 5.000 de recarga extra, além do que aquele nível já desse — ver
CHAPTER_BONUS em battlepass.js. Aparece como aviso no cabeçalho de cada capítulo em passe.html.
v1.8 (2026-07-08)
- Cadastro simplificado: removido o campo de e-mail — agora é só nome de jogador e senha.
storage.js createAccount() não guarda mais e-mail (contas antigas que já tinham o campo continuam funcionando normalmente, o campo só fica sem uso).
- Música de fundo trocada: saiu a trilha gerada por código (acordes via Web Audio API), entrou um vídeo do YouTube em loop, tocando escondido (só áudio, sem player visível) via YouTube IFrame API. É a única parte do site que passa a depender de internet — sem conexão, só a música não toca, o resto (efeitos sonoros inclusive) continua 100% local. Mesma regra de autoplay de antes: só começa a tocar depois do primeiro clique/tecla.
- Corrigido o avatar do Alien Jo: voltou a ser 👽 (o pedido original) — o problema não era o emoji, era ele já estar liberado de graça pra todo mundo (na lista base de avatares) e também como recompensa do Passe, o que tornava inútil completar o álbum dele. Removido 👽 da lista de avatares gratuitos; agora é exclusivo de quem completa a Coleção do Alien Jo ou chega ao nível 27 do Passe. A dica de cadeado no Perfil agora mostra as duas formas quando existem duas.
v1.7 (2026-07-08)
- Card de perfil movido da sidebar pro header: avatar, nome colorido, título e nível agora aparecem num chip clicável na topbar (logo após o menu), em vez de no rodapé da sidebar. O link "Perfil" na sidebar virou um item simples igual aos outros (Coleção, Passe, Configurações).
- Corrigido bug do Recorde de Saldo: quem já jogava antes da v1.6 ficava travado mostrando exatamente BZ$ 10.000 de recorde, mesmo tendo saldo muito maior — o preenchimento automático de campos novos (
Object.assign) escondia a falta do dado antes do código de fallback rodar, então o fallback nunca disparava. Também corrigido: claimBonus() (bônus diário) não atualizava o recorde de saldo.
- Novo membro da Equipe BZG: 🐣 Pitoco — 9º personagem, com álbum de 10 figurinhas próprio (mascote da casa, sem jogo associado) e entrada no painel ao vivo do Crash/Double (
bots.js).
- Novo grupo na Coleção: 🤝 Amigos dos Bazingas — 4 personagens novos, cada um com álbum de 5 figurinhas e seu próprio minigame sem aposta: Dhani (🏳️🌈), Shadow (🌑), CBPB_Gamer (🎮) e Alien Jo (🛸). Coleção agora tem 110 itens no total (era 80), exibidos em duas seções separadas em
colecao.html.
- 3 minigames novos + 1 retematizado (Torre da Turma virou "Torre do CBPB_Gamer", com paleta neon): Sequência Arco-íris (Dhani, memória tipo Simon Says), Sombra Rápida (Shadow, reflexo tipo whack-a-mole, 30s por rodada) e Fuga Alienígena (Alien Jo, desviar de meteoros em canvas).
storage.js generalizou o campo de recorde de minigame de bestFloor (só fazia sentido pra Torre) para best (serve pra qualquer um), com migração automática pra quem já tinha recorde salvo na Torre.
- Esclarecimento: o drop de colecionáveis já era 100% aleatório entre todos os personagens desde a v1.6 — nenhum jogo específico sorteia só a figurinha "dele". Isso ficou mais explícito na documentação.
- +6 conquistas novas (total 80): álbum completo da Equipe, álbum completo dos Amigos, e recordes nos 3 minigames novos, além de uma por ter pelo menos 1 recorde em cada minigame.
v1.6 (2026-07-08)
- Primeiros passos rumo à v2.0 (visão de multiplayer/placar de líderes com jogadores reais — ainda não implementada; tudo abaixo continua 100% local, sem backend):
- Topbar: 3 mini-campos novos ao lado do saldo — Nível, Recorde de saldo (
stats.peakBalance, novo) e Maior prêmio (stats.maxWin). storage.js agora rastreia o pico de saldo em todo ponto que altera o saldo (aposta, bônus diário, recarga manual/automática).
- Perfil reestruturado: avatares, cores de nome, títulos e temas agora mostram todos os itens possíveis, os bloqueados com selo de cadeado 🔒 e dica de como desbloquear (Passe de Batalha ou Coleção) — antes só apareciam os já desbloqueados. Novas seções de Temas (mostruário com clique pra aplicar) e resumo da Coleção. Estatísticas ganharam "Recorde de saldo" e "Maior prêmio único".
- Passe de Batalha reestruturado em 10 capítulos temáticos de 10 níveis cada, com navegação rápida por capítulo (era uma lista única com os 100 níveis em sequência).
- Coleção de colecionáveis (novo sistema): álbum de 80 figurinhas (8 personagens BZG × 10), com drop aleatório a cada aposta (15% de chance) e avatar exclusivo ao completar o álbum de um personagem. Nova página
colecao.html; aba "Loja" já visível mas marcada Em breve.
- Minigame sem aposta: "Torre da Turma" (
minigames/torre.html) — empilhar blocos sem arriscar fichas, dá XP e guarda recorde pessoal. Nova pasta minigames/ (com css/minigames/, js/minigames/) e nova seção "Minigames" na sidebar, preparada para receber mais minigames no futuro.
- +7 conquistas novas (total 74): progresso na Coleção (primeira figurinha, 20, 50, álbum completo de 1 personagem, todos os 8) e recordes na Torre da Turma (10 e 25 andares).
- Corrigido durante o desenvolvimento:
claimBonus() não estava atualizando o recorde de saldo (peakBalance) ao creditar o bônus diário.
v1.5 (2026-07-08)
- Reorganização completa de pastas: todos os HTML de jogo foram movidos para
games/; só lobby, perfil, config, passe e o novo cadastro ficam na raiz. layout.js calcula os caminhos dinamicamente (raiz vs. games/).
- Cadastro obrigatório: nova tela
cadastro.html (nome, e-mail, senha — guardado só no navegador, sem backend). Todo acesso ao site exige conta; "Sair da conta" disponível em Configurações.
- Removidos os "jogadores falsos" externos: ticker de vitórias, ranking diário e contagem de "X jogando agora" no lobby saíram do ar. O painel ao vivo de apostas do Crash e do Double foi mantido (é atmosfera do jogo, não prova social).
- Bazinguinha e Bazinga Bonanza marcados como "Em desenvolvimento": sem link ativo na sidebar/lobby, acesso direto pela URL redireciona pro lobby.
- Passe de Batalha: agora com 100 níveis (era 30), custando 600 XP cada (era 400). Parou de dar dinheiro direto; níveis "comuns" agora dão +BZ$ 5.000 no valor de recarga (reward
reloadBoost).
- Recarga automática: se o saldo zerar, o site recarrega sozinho (usa o valor de recarga atual, incluindo bônus do Passe) e avisa por toast.
- +56 conquistas novas (total 67), cobrindo progressão de nível, Passe de Batalha, saldo, volume apostado, sequências, multiplicadores, bônus diário, cosméticos e marcos específicos de cada jogo.
- Documentação: este README foi totalmente reescrito para refletir o estado atual do projeto.
- Corrida BZG (Horse) já tinha sido simplificada nesta mesma sessão para pagar 2x fixo por corredor (sem odds diferentes).
- Faxina de código morto:
bots.js perdeu as funções que só serviam pro ticker/ranking removidos; CSS órfão do ticker/ranking removido de style.css.
v1.0 (2026-07-05 a 2026-07-08)
- Lançamento inicial com 15+ jogos temáticos da equipe BZG, bônus diário, conquistas, Big Win, perfil com nível/XP, múltiplos temas visuais, Modo Turbo, Passe de Batalha (versão de 30 níveis), e os jogos Bazinga Bonanza / Corrida BZG (com odds variáveis, depois simplificada).
- Removidos por serem redundantes: Slots, Roda da Sorte e o jogo de torre "Torre BZG" (stack).