Calculatrice de dommages pour toutes les générations de Pokémon se battant.
Si vous regardez actuellement le smogon / dommage-cal et non une fourche, c'est le référentiel officiel de la confrontation Pokémon! Calculateur de dégâts: https://calc.pokemonshowdown.com.
Ce référentiel abrite à la fois le package implémentant la mécanique des formules de dégâts de base dans chaque génération ( @smogon/calc ) ainsi que la logique et le balisage pour l'interface utilisateur officielle.
@smogon/calc Le package @smogon/calc alimente l'interface utilisateur, fournissant une interface programmatique pour calculer les plages de dégâts. Ce sous-package contient du code qui s'exécutera sur le serveur ou le navigateur et peut être utilisé comme bloc de construction pour des UIS ou des applications alternatives.
$ npm install @smogon/calc Alternativement, comme détaillé ci-dessous, si vous utilisez @smogon/calc dans le navigateur et que vous souhaitez commencer, dépendez simplement d'une version transpirée et minifiée via UNPKG:
< script src =" https://unpkg.com/@smogon/calc/dist/data/production.min.js " > </ script >
< script src =" https://unpkg.com/@smogon/calc " > </ script > Dans cet exemple, le code @smogon/calc/data est également inclus pour répondre aux besoins de la couche de données du calc. Alternativement, une couche de données plus complète telle que @pkmn/data peut être utilisée à la place, voir ci-dessous.
@smogon/calc exporte tous les types de données nécessaires pour effectuer un calcul. Les méthodes calculate nécessitent:
Generation qui contient des informations sur les mécanismes de formule de dommage à appliquer et où toutes les données sur la génération peuvent être trouvées.Pokemon (Remarque: Seuls les attributs pertinents sont requis, tout le reste devrait avoir des défauts sensibles). Le constructeur Pokemon nécessite également une Generation pour fournir les données des Pokémon pour la génération.Move étant utilisé par l'attaquant (qui nécessite également un argument Generation pour élaborer les données de déplacement vers la génération particulière).Field contenant des informations sur l'état de chaque Side . calculate Renvoie un objet Result qui contient des méthodes de récupération des rouleaux de dégâts, des gammes, des descriptions, des informations de recul / drain, 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 est emballé avec toutes les données requises pour le calcul des dommages - par défaut, il expose cela via son objet Generations à partir de @smogon/calc/data . En tant que raccourci, l'argument Generation requis par calculate , Pokemon , Move peut plutôt être le numéro de génération (par exemple 5 ), et il gérera l'obtention de cet objet Generation des générations dans les coulisses de la couche de données avec laquelle il est expédié.
Les données dans calc/data doivent être conservées en synchronisation avec Pokémon. S'il y a un problème avec les données du calc, veuillez d'abord le réparer dans le simulateur. En général, vous ne devriez probablement pas effectuer de modifications manuelles à aucun des fichiers de données, et à l'avenir, ils sont susceptibles d'être générés par programme.
Dans certains cas d'utilisation avancés, vous souhaiterez peut-être utiliser une couche de données différente avec la calculatrice. Le point d'entrée @smogon/calc/adaptable peut être utilisé avec n'importe quelle couche de données qui implémente l'interface Generations du calc. Cette interface est un sous-ensemble de l'interface Generations de @pkmn/data , donc @pkmn/data (qui contient toutes les données pertinentes de manière compétitive de Pokémon Showdown) peut être utilisée avec le point de saisie adaptable pour les applications qui souhaitent éviter d'avoir deux ensembles distincts d'ensembles séparés de les mêmes données expédiées aux utilisateurs.
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 } } )
) ; La façon recommandée d'utiliser @smogon/calc dans un navigateur Web est de configurer votre bundler (webpack, rollup, colis, etc.) pour le minimiser et l'emballer avec le reste de votre application. Si vous n'utilisez pas de bundler, une production.min.js de commodité.min.js est incluse dans le package. Il vous suffit de dépendre de ./node_modules/@smogon/calc/production.min.js dans une balise script (c'est ce que fait le raccourci Unfkg ci-dessus), après quoi calc sera accessible en tant que global. Vous devez également avoir une mise en œuvre Generations fournie, vous pouvez soit dépendre de la couche de données de la calculatrice en fonction de ./node_modules/@smogon/calc/data/production.min.js (ou @smogon/calc/data via untkg), ou Vous pouvez utiliser une couche de données alternative telle que @pkmn/data . Vous devez charger votre couche de données avant de charger le calc:
< script src =" ./node_modules/@smogon/calc/data/production.min.js " > </ script >
< script src =" ./node_modules/@smogon/calc/production.min.js " > </ script > La couche d'interface utilisateur est actuellement écrite en JavaScript Vanilla et HTML. Pour afficher l'interface utilisateur localement, vous devez d'abord installer des dépendances en exécutant npm install au niveau supérieur et sans calc/ . Cela devrait créer un dossier node_modules/ sous le répertoire racine et sous calc/ :
$ npm install
$ cd calc && npm install Ensuite, exécutez node build à partir du répertoire racine de votre clone de ce référentiel. Cela devrait exécuter npm run compile dans le sous-répertoire calc/ pour compiler le package @smogon/calc de TypeScript à JavaScript qui peut être exécuté dans le navigateur, puis compiler le HTML 'Templaté' et tout copier dans le dossier dist/ niveau supérieur . Pour voir ensuite l'interface utilisateur, ouvrez dist/index.html - Il suffit de double-cliquer sur le fichier de l'interface utilisateur de gestionnaire de fichiers de votre système d'exploitation doit l'ouvrir dans votre navigateur par défaut.
$ node build
$ open dist/index.html # open works on macOS, simply double-clicking the file on Windows/macOS works Si vous apportez des modifications à quelque chose dans calc/ , vous devez exécuter node build à partir du niveau supérieur pour compiler les fichiers et les copier à nouveau dans dist/ . Si vous apportez des modifications au HTML ou au JavaScript dans src/ vous devez exécuter node build view avant que les modifications ne deviennent visibles dans votre navigateur ( node build fonctionne également, mais elle est plus lente, car elle compilera également calc/ , ce qui n'est pas nécessaire Si vous n'avez apporté aucune modification à ce répertoire).
Avant d'ouvrir une demande de traction, veuillez vous assurer des passes npm test :
$ npm test Ce référentiel abrite également un package interne sous import/ qui est utilisé pour remplir les données des ensembles Pokémon (ainsi que des données sur les options de combat aléatoires) utilisées par l'interface utilisateur. Avant d'apporter des modifications ici, vous devez exécuter npm install à partir de l' import/ répertoire pour installer ses dépendances car elles ne sont pas installées par défaut. TASKS.md contient plus d'informations sur la façon de mettre à jour programmatique des ensembles.
Ce projet a été créé par Honko et est principalement maintenu par Austin et Jetou.
De nombreux autres contributeurs ont ajouté des fonctionnalités ou des correctifs de bogues contribués, veuillez consulter la liste complète des contributeurs.
Ce package est distribué en vertu des termes de la licence MIT.