ポケモンと戦うすべての世代のダメージ計算機。
現在、フォークではなくSmogon/Damage-Calcを見ている場合、これはPokémonHowdownの公式リポジトリです!ダメージ計算機:https://calc.pokemonshowdown.com。
このリポジトリには、各世代にコアダメージフォーミュラメカニクスを実装するパッケージ( @smogon/calc )の両方と、公式のUIのロジックとマークアップの両方を収容しています。
@smogon/calc @smogon/calcパッケージはUIにパワーを与え、ダメージ範囲を計算するためのプログラムインターフェイスを提供します。このサブパッケージには、サーバーまたはブラウザの両方で実行されるコードが含まれており、代替UIまたはアプリケーションのビルディングブロックとして使用できます。
$ npm install @smogon/calcまたは、以下に詳述しているように、ブラウザで@smogon/calcを使用していて、開始するための便利な方法が必要な場合は、unpkgを介して導入されたバージョンと模倣バージョンに依存します。
< script src =" https://unpkg.com/@smogon/calc/dist/data/production.min.js " > </ script >
< script src =" https://unpkg.com/@smogon/calc " > </ script >この例では、 @smogon/calc/dataコードも含まれており、Calcのデータレイヤー要件を満たしています。または、 @pkmn/dataなどのより完全に機能するデータレイヤーを代わりに使用することもできます。以下を参照してください。
@smogon/calc計算を実行するために必要なすべてのデータ型をエクスポートします。 calculate方法が必要です:
Generation 。Pokemon (注:関連する属性のみが必要です。他のすべては賢明なデフォルトを持つ必要があります)。 Pokemonコンストラクターは、 Generationが世代にポケモンのデータを提供するために世代を要求しています。Move (特定の世代への移動データを範囲するためのGeneration引数も必要です)。Sideの状態に関する情報を含むFieldオブジェクト。 calculate 、ダメージロール、範囲、説明、反動/排出情報などを取得するための方法を含むResultオブジェクトを返します。
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は、損傷計算に必要なすべてのデータがパッケージ化されています。デフォルトでは、 @smogon/calc/dataからGenerationsオブジェクトを介してこれを公開します。ショートカットとして、 calculateで要求されるGeneration議論、 Pokemon Move 、代わりに単に生成数(例えば5 )になることができ、それが出荷するデータレイヤーから舞台裏でその世代のGenerationオブジェクトを取得することを処理します。
calc/dataのデータは、ポケモン対決と同期しておく必要があります。 Calcのデータに問題がある場合は、最初にSimulatorで修正してください。一般に、おそらくデータファイルのいずれかに手動編集を行うべきではなく、将来、プログラムで生成される可能性があります。
いくつかの高度なユースケースでは、計算機で異なるデータレイヤーを使用することをお勧めします。 @smogon/calc/adaptableエントリポイントは、CalcのGenerationsインターフェイスを実装する任意のデータレイヤーで使用できます。このインターフェイスは@pkmn/dataのGenerationsインターフェイスのサブセットであるため、 @pkmn/data (pokémon対決からのすべての競争力のあるデータが含まれています)は、2つの個別のセットのセットを避けたいアプリケーション用の適応可能なエントリポイントで使用できます。同じデータがユーザーに出荷されました。
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 } } )
) ;Webブラウザーで@smogon/calc使用する推奨される方法は、バンドラー(Webpack、ロールアップ、小包など)を構成して、それを最小限に抑えて、残りのアプリケーションでパッケージ化することです。バンドラーを使用しない場合、便利なproduction.min.jsがパッケージに含まれています。 ./node_modules/@smogon/calc/production.min.jsに依存する必要があります(上記のUNPKG scriptが行っていることです) calcまた、 Generations実装を提供する必要があります./node_modules/@smogon/calc/data/production.min.js (または@smogon/calc/data )に依存して、計算機のデータレイヤーに依存することもできます。 @pkmn/dataなどの代替データレイヤーを使用できます。計算をロードする前に、データレイヤーをロードする必要があります。
< script src =" ./node_modules/@smogon/calc/data/production.min.js " > </ script >
< script src =" ./node_modules/@smogon/calc/production.min.js " > </ script > UIレイヤーは現在、Vanilla JavaScriptおよびHTMLで記述されています。 UIをローカルで表示するには、最初に依存関係をインストールする必要があります。これは、 calc/なしでnpm installを実行してnpmインストールを実行する必要があります。これにより、ルートディレクトリとcalc/両方の下にnode_modules/フォルダーが作成されます。
$ npm install
$ cd calc && npm install次に、このリポジトリのクローンのルートディレクトリからnode buildを実行します。これにより、 calc/ subdirectoryでnpm run compile実行して、ブラウザで実行できるQualscriptからJavaScriptに@smogon/calcパッケージをコンパイルし、「テンプレート」HTMLをコンパイルして、すべてをトップレベルのdist/フォルダーにコピーする必要があります。その後、UIを表示するには、 dist/index.htmlを開く - オペレーティングシステムのファイルマネージャーからファイルをダブルクリックするだけで、デフォルトのブラウザでそれを開く必要があります。
$ node build
$ open dist/index.html # open works on macOS, simply double-clicking the file on Windows/macOS works calc/の何かに変更を加える場合は、上部レベルからnode buildを実行してファイルをコンパイルし、 dist/再びコピーする必要があります。 src/でHTMLまたはJavaScriptに変更を加えた場合、ブラウザで変更が表示される前にnode build viewを実行する必要があります( node buildも機能しますが、 calc/同様にコンパイルされるため、より遅くなります。そのディレクトリに変更を加えなかった場合)。
プルリクエストを開く前に、 npm testパスを確認してください。
$ npm testこのリポジトリには、UIで使用されるポケモンセットデータ(およびランダムバトルオプションに関するデータ)の居住に使用されるimport/の下にある内部パッケージもあります。ここで変更を加える前に、デフォルトではインストールされていないため、依存関係をインストールするには、 import/ディレクトリの下からnpm install実行する必要があります。 TASKS.mdには、プログラムでセットを更新する方法に関する詳細情報が含まれています。
このプロジェクトはホンコによって作成され、主にオースティンとジェットーによって維持されています。
他の多くの貢献者が追加の機能を追加したり、貢献したバグ修正を行っています。貢献者の完全なリストをご覧ください。
このパッケージは、MITライセンスの条件の下で配布されます。