ポケモンと戦うすべての世代のダメージ計算機。
現在、フォークではなく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ライセンスの条件の下で配布されます。