Ícone Pokémon Global Server Pokémon Global Server

Combate

Wiki de combate

Combate por rodadas, ações ordenadas por atributo e resultado reproduzido por log.

O cliente monta a jogada e envia as ações. No servidor, Partida.py recebe as jogadas, ColetorAcoes.py valida limites, custos e alvos, RodadorTurno.py executa cada passo, PokemonBatalha.py resolve dano, cura, energia, barreira e efeitos, e o log final volta para o cliente animar o resultado. A wiki abaixo evita regras antigas de tick/física que não representam o fluxo atual do código.

01

Planejamento

Cada lado envia até 5 ações por rodada, com limite de 2 ações para o mesmo Pokémon.

02

Ordem

As ações comuns são ordenadas por Inteligência e depois Velocidade. Captura entra depois das ações comuns.

03

Log

Cada ação gera eventos de início, acerto, falha, dano, cura, energia e fim de rodada para o client reproduzir.

Regras reais do código

Fluxo principal da batalha

Estes blocos seguem os módulos atuais do servidor de batalha, não uma descrição antiga do sistema.

Ações e validação

Tipos aceitos: ataque, movimento, troca de posição, troca com reserva e captura. O servidor rejeita ação de Pokémon morto, fora do lado correto, na reserva, sem alvo válido ou sem energia.

Bloqueios atuais: Dormindo/Congelado impedem ações comuns, Paralisado impede ataque e Enraizado impede movimento ou troca.

Ordem e custo

Ordem: Inteligência decrescente; empate por Velocidade; captura depois das ações comuns. Movimento custa 15, troca custa 20 e ataque usa o custo das propriedades do ataque.

A segunda ação do mesmo Pokémon na rodada custa 1,10x do custo base.

Energia

Ao fim da rodada, cada Pokémon vivo recupera energia igual ao seu atributo Ene do Pokémon. Energizado altera esse ganho em +25% e Descarregado em -25%.

O gasto de energia é registrado no log quando uma ação validada consome custo real maior que zero.

Dano

Dano bruto recebe multiplicadores e ajustes condicionais, depois Amplificação, multiplicador de tipo, STAB de 1,20x quando o tipo combina com o usuário, crítico, defesa e Durabilidade.

A defesa efetiva usa max(0, defesa - Per/2) e o redutor é 100 / (100 + defesa efetiva). Durabilidade entra como redução fixa depois da defesa.

Barreira, protegido e cura

Protegido anula o dano recebido uma vez. Se houver Barreira, ela absorve o dano antes da Vida.

A cura também aceita multiplicadores/ajustes condicionais. Se o alvo estiver Queimado, a cura final é multiplicada por 0,65x.

Acerto

A chance base usa Acurácia do usuário e Assertividade do alvo. Depois o código ajusta a chance pela diferença relativa de Velocidade.

Em caso de erro, o servidor registra ataque_errou e a ação falha naquele alvo.