Schadensrechner für alle Generationen von Pokémon -Kämpfen.
Wenn Sie sich derzeit Smogon/Schadenscalc und keine Gabel ansehen, ist dies das offizielle Repository für den Pokémon Showdown! Schadensrechner: https://calc.pokemonshowdown.com.
Dieses Repository beherbergt sowohl das Paket, das die Mechanik der Kernschadensformeln in jeder Generation ( @smogon/calc
) als auch Logik und Markup für die offizielle Benutzeroberfläche implementiert.
@smogon/calc
Das @smogon/calc
-Paket versorgt die Benutzeroberfläche und bietet eine programmatische Schnittstelle für die Berechnung von Schadensbereichen. Dieses Unterpackungsbereich enthält Code, der sowohl auf dem Server als auch auf dem Browser ausgeführt wird und als Baustein für alternative Benutzeroberflächen oder Anwendungen verwendet werden kann.
$ npm install @smogon/calc
Alternativ sind, wie unten beschrieben, wenn Sie @smogon/calc
im Browser verwenden und eine bequeme Möglichkeit wünschen, zu beginnen, einfach von einer transpilierten und minifizierten Version über UNPKG abhängen:
< script src =" https://unpkg.com/@smogon/calc/dist/data/production.min.js " > </ script >
< script src =" https://unpkg.com/@smogon/calc " > </ script >
In diesem Beispiel ist auch der @smogon/calc/data
-Code enthalten, um die Datenschichtanforderung der CALC zu erfüllen. Alternativ kann stattdessen eine vollwertigere Datenschicht wie @pkmn/data
verwendet werden, siehe unten.
@smogon/calc
exportiert alle Datentypen, die zur Durchführung einer Berechnung erforderlich sind. Die calculate
erfordern:
Generation
, die Informationen darüber enthält, welche Schadensformelmechanik angewendet werden soll und wo alle Daten zur Erzeugung gefunden werden können.Pokemon
(Hinweis: Es sind nur relevante Attribute erforderlich, alles andere sollten vernünftige Standardeinstellungen haben). Der Pokemon
-Konstruktor benötigt auch eine Generation
, um die Daten des Pokémon für die Generation bereitzustellen.Move
, der vom Angreifer verwendet wird (für das auch ein Generation
erforderlich ist, um die Bewegungsdaten in die jeweilige Generation zu umgehen).Field
, das Informationen über den Zustand jeder Side
enthält. calculate
Sie ein Result
, das Methoden zum Abholen von Schadensrollen, Bereichen, Beschreibungen, Rückstoß-/Abflussinformationen usw. enthält.
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
wird mit allen für die Schadensberechnung erforderlichen Daten verpackt - standardmäßig wird dies über sein Generations
von @smogon/calc/data
aufgedeckt. Als Verknüpfung kann das von calculate
, Pokemon
, Move
erforderliche Generation
stattdessen einfach die Erzeugungsnummer sein (z. B. 5
), und es wird das Erhalten dieses Generations Generation
-Objekts hinter den Szenen aus der von ihm gelieferten Datenschicht behandeln.
Die Daten in calc/data
müssen mit Pokémon Showdown synchronisiert werden. Wenn es mit den Daten der CALC ein Problem gibt, beheben Sie diese bitte zuerst im Simulator. Im Allgemeinen sollten Sie wahrscheinlich keine manuellen Änderungen an einer der Datendateien vornehmen, und in Zukunft werden sie wahrscheinlich programmgesteuert generiert.
In einigen erweiterten Anwendungsfällen möchten Sie möglicherweise eine andere Datenschicht mit dem Taschenrechner verwenden. Der @smogon/calc/adaptable
Einstiegspunkt kann mit jeder Datenschicht verwendet werden, die die Generations
der CALC implementiert. Diese Schnittstelle ist eine Untergruppe der Generations
von @pkmn/data
, sodass @pkmn/data
(die alle wettbewerbsfähigen Daten aus Pokémon Showdown enthält) mit dem anpassbaren Einstiegspunkt für Anwendungen verwendet werden möchten, die vermeiden möchten, zwei separate Sätze von zu haben Die gleichen Daten wurden an Benutzer geliefert.
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 } } )
) ;
Die empfohlene Methode zur Verwendung von @smogon/calc
in einem Webbrowser besteht darin, Ihren Bundler (Webpack, Rollup, Paket usw.) zu konfigurieren , um ihn zu minimieren und mit dem Rest Ihrer Anwendung zu verpacken. Wenn Sie keinen Bundler verwenden, ist eine Convenience production.min.js
im Paket enthalten. Sie müssen sich lediglich auf ./node_modules/@smogon/calc/production.min.js
in einem script
-Tag (was die obige Abkürzung der UNPKG -Abteilung erbringt) angewiesen werden, wonach calc
als global zugänglich ist. Sie müssen außerdem eine Generations
-Implementierung zur Verfügung stellen. Sie können @smogon/calc/data
entweder von der Datenschicht des Taschenrechners abhängig machen ./node_modules/@smogon/calc/data/production.min.js
Sie können eine alternative Datenschicht wie @pkmn/data
verwenden. Sie müssen Ihre Datenschicht laden, bevor Sie die CALC laden:
< script src =" ./node_modules/@smogon/calc/data/production.min.js " > </ script >
< script src =" ./node_modules/@smogon/calc/production.min.js " > </ script >
Die UI -Schicht ist derzeit in Vanille JavaScript und HTML geschrieben. Um die Benutzeroberfläche lokal anzuzeigen, müssen Sie zunächst Abhängigkeiten installieren, indem Sie npm install
auf der oberen Ebene und ohne calc/
ausführen. Dies sollte sowohl unter dem node_modules/
als auch unter calc/
:
$ npm install
$ cd calc && npm install
Führen Sie als nächstes node build
aus dem Stammverzeichnis Ihres Klons dieses Repositorys aus. Dies sollte npm run compile
im calc/
Subditionory ausführen, um das @smogon/calc
Paket von TypeScript zu JavaScript zu kompilieren, das im Browser ausgeführt werden kann, und dann das HTML "Vorlagen" zu kompilieren und alles in den oberen Ebene dist/
Ordner zu kopieren . Um die Benutzeroberfläche anzuzeigen, öffnen Sie dist/index.html
- Doppelklicken Sie einfach auf die Datei von der Dateimanager -Benutzeroberfläche Ihres Betriebssystems in Ihrem Standardbrowser.
$ node build
$ open dist/index.html # open works on macOS, simply double-clicking the file on Windows/macOS works
Wenn Sie in calc/
Änderungen an irgendetwas vornehmen, müssen Sie node build
von der obersten Ebene ausführen, um die Dateien zu kompilieren und in dist/
erneut zu kopieren. Wenn Sie Änderungen an der HTML oder JavaScript in src/
Sie vornehmen müssen, müssen Sie node build view
ausführen, bevor die Änderungen in Ihrem Browser sichtbar werden ( node build
funktioniert auch, ist jedoch langsamer, da es auch calc/
auch kompiliert, was nicht erforderlich ist, was unnötig ist Wenn Sie keine Änderungen an diesem Verzeichnis vorgenommen haben).
Stellen Sie vor dem Öffnen einer Pull -Anfrage sicher, dass npm test
:
$ npm test
In diesem Repository befindet sich auch ein internes Paket unter import/
das zur Bevölkerung der Pokémon -Sets Daten (sowie Daten über zufällige Kampfoptionen) von der Benutzeroberfläche verwendet wird. Bevor Sie hier Änderungen vornehmen, müssen Sie npm install
unter dem import/
Verzeichnis ausführen, um seine Abhängigkeiten zu installieren, da diese standardmäßig nicht installiert sind. TASKS.md
enthält weitere Informationen zum programmgesteuerten Aktualisieren von Sätzen.
Dieses Projekt wurde von Honko erstellt und wird hauptsächlich von Austin und Jetou gepflegt.
Viele andere Mitwirkende haben hinzugefügt oder fehlgeschlagene Fehlerbehebungen beigetragen. Weitere Informationen finden Sie in der vollständigen Liste der Mitwirkenden.
Dieses Paket wird unter den Bedingungen der MIT -Lizenz verteilt.