Calculadora de danos para todas as gerações de luta de Pokémon.
Se você está atualmente olhando para Smogon/Danh-Calc e não um garfo, este é o repositório oficial do Pokémon Showdown! Calculadora de danos: https://calc.pokemonShowdown.com.
Esse repositório abriga o pacote que implementa a mecânica de fórmula de danos principais em cada geração ( @smogon/calc ), bem como lógica e marcação para a interface do usuário oficial.
@smogon/calc O pacote @smogon/calc alimenta a interface do usuário, fornecendo uma interface programática para intervalos de danos à computação. Este subpackage contém código que será executado no servidor ou no navegador e pode ser usado como um bloco de construção para UIs ou aplicativos alternativos.
$ npm install @smogon/calc Como alternativa, conforme detalhado abaixo, se você estiver usando @smogon/calc no navegador e deseja uma maneira conveniente de começar, basta depender de uma versão transpilada e minificada via unpkg:
< script src =" https://unpkg.com/@smogon/calc/dist/data/production.min.js " > </ script >
< script src =" https://unpkg.com/@smogon/calc " > </ script > Neste exemplo, o código @smogon/calc/data também está incluído para atender ao requisito da camada de dados do calc. Como alternativa, uma camada de dados mais completa, como @pkmn/data pode ser usada, veja abaixo.
@smogon/calc exporta todos os tipos de dados necessários para executar um cálculo. Os métodos calculate exigem:
Generation que contém informações sobre qual mecânica de fórmula de dano se aplica e onde todos os dados sobre a geração podem ser encontrados.Pokemon (Nota: Somente atributos relevantes são necessários, todo o resto deve ter padrões sensatos). O construtor Pokemon também exige que uma Generation forneça os dados do Pokémon para a geração.Move que está sendo usado pelo invasor (que também requer um argumento Generation para escopo os dados de mover para a geração específica).Field que contém informações sobre o estado de cada Side . calculate retornos Um objeto Result que contém métodos para buscar rolos de danos, faixas, descrições, informações de recuo/drenagem etc.
import { calculate , Generations , Pokemon , Move } from '@smogon/calc' ;
const gen = Generations . get ( 5 ) ; // alternatively: const gen = 5;
const result = calculate (
gen ,
new Pokemon ( gen , 'Gengar' , {
item : 'Choice Specs' ,
nature : 'Timid' ,
evs : { spa : 252 } ,
boosts : { spa : 1 } ,
} ) ,
new Pokemon ( gen , 'Chansey' , {
item : 'Eviolite' ,
nature : 'Calm' ,
evs : { hp : 252 , spd : 252 } ,
} ) ,
new Move ( gen , 'Focus Blast' )
) ; @smogon/calc é empacotado com todos os dados necessários para o cálculo de danos - por padrão, ele expõe isso por meio de seu objeto Generations de @smogon/calc/data . Como atalho, o argumento Generation exigido pelo calculate , Pokemon , Move pode ser simplesmente o número da geração (por exemplo, 5 ) e lidará com o objeto Generation de gerações nos bastidores da camada de dados com os quais ele envia.
Os dados em calc/data devem ser mantidos em sincronia com o Pokémon Showdown. Se houver um problema com os dados do Calc, corrija -os primeiro no simulador. Em geral, você provavelmente não deve fazer edições manuais em nenhum dos arquivos de dados e, no futuro, é provável que eles sejam gerados programaticamente.
Em alguns casos de uso avançado, você pode usar uma camada de dados diferente com a calculadora. O ponto de entrada @smogon/calc/adaptable pode ser usado com qualquer camada de dados que implemente a interface Generations do Calc. Essa interface é um subconjunto da interface de Generations de @pkmn/data , então @pkmn/data (que contém todos os dados competitivos relevantes do Pokémon Showdown) podem ser usados com o ponto de entrada adaptável para aplicações que desejam evitar ter dois conjuntos separados de os mesmos dados enviados para os usuários.
import { Dex } from '@pkmn/dex' ;
import { Generations } from '@pkmn/data' ;
import { calculate , Pokemon , Move , Field } from '@smogon/calc/adaptable' ;
const gens = new Generations ( Dex ) ;
const gen = gens . get ( 1 ) ;
const result = calculate (
gen ,
new Pokemon ( gen , 'Gengar' ) ,
new Pokemon ( gen , 'Vulpix' ) ,
new Move ( gen , 'Surf' ) ,
new Field ( { defenderSide : { isLightScreen : true } } )
) ; A maneira recomendada de usar @smogon/calc em um navegador da web é configurar seu empacotador (Webpack, rollup, parcela etc.) para minimizá -lo e empacotá -lo com o restante do seu aplicativo. Se você não usa um empacota, uma production.min.js de conveniência.Min.js está incluída no pacote. Você simplesmente precisa depender de ./node_modules/@smogon/calc/production.min.js em uma tag script (que é o que o atalho UNSPKG acima está fazendo), após o que calc estará acessível como global. Você também deve ter uma implementação Generations fornecida, ou pode depender da camada de dados da calculadora, dependendo de ./node_modules/@smogon/calc/data/production.min.js (ou @smogon/calc/data via unpkg) ou Você pode usar uma camada de dados alternativa, como @pkmn/data . Você deve carregar sua camada de dados antes de carregar o calc:
< script src =" ./node_modules/@smogon/calc/data/production.min.js " > </ script >
< script src =" ./node_modules/@smogon/calc/production.min.js " > </ script > A camada da interface do usuário está atualmente escrita em Javascript e HTML de baunilha. Para visualizar a interface do usuário localmente, você deve primeiro instalar dependências executando npm install no nível superior e sem calc/ . Isso deve criar uma pasta node_modules/ no diretório raiz e em calc/ :
$ npm install
$ cd calc && npm install Em seguida, execute node build a partir do diretório raiz do seu clone deste repositório. Isso deve executar npm run compile no calc/ subdiretório para compilar o pacote @smogon/calc do TypeScript para JavaScript que pode ser executado no navegador e, em seguida, compilar o html 'modificado' e copiar tudo no nível superior dist/ pasta . Para visualizar a interface do usuário, abra dist/index.html - Basta clicar duas vezes no arquivo da interface do usuário do seu sistema de arquivos do sistema operacional deve abri -lo no seu navegador padrão.
$ node build
$ open dist/index.html # open works on macOS, simply double-clicking the file on Windows/macOS works Se você fizer alterações em qualquer coisa em calc/ , deve executar node build a partir do nível superior para compilar os arquivos e copiá -los para dist/ novamente. Se você fizer alterações no HTML ou JavaScript no src/ você deverá executar node build view antes que as alterações se tornem visíveis no seu navegador ( node build também funciona, mas é mais lenta, pois compilará calc/ também, o que é desnecessário Se você não fez nenhuma alteração nesse diretório).
Antes de abrir uma solicitação de tração, verifique se os testes npm test :
$ npm test Esse repositório também abriga um pacote interno em import/ que é usado para preencher os dados dos Pokémon Define (bem como dados sobre opções de batalha aleatória) usadas pela interface do usuário. Antes de fazer alterações aqui, você deve executar npm install em Under the import/ Directory para instalar suas dependências, pois elas não são instaladas por padrão. TASKS.md contém mais informações sobre como atualizar programaticamente os conjuntos.
Este projeto foi criado por Honko e é mantido principalmente por Austin e Jetou.
Muitos outros colaboradores adicionaram recursos ou correções contribuídas por bugs, consulte a lista completa de colaboradores.
Este pacote é distribuído nos termos da licença do MIT.