所有世代的神奇寶貝戰鬥中的損壞計算器。
如果您目前正在尋找Smogon/alage-calc而不是叉子,那麼這是PokémonShowdown的官方存儲庫!損壞計算器: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
代碼,以滿足計算的數據層需求。另外,可以使用更完整的數據層,例如@pkmn/data
,請參見下文。
@smogon/calc
導出執行計算所需的所有數據類型。 calculate
方法需要:
Generation
包含有關要應用哪種損壞公式機制以及可以找到有關生成的所有數據的信息。Pokemon
(注意:僅需要相關屬性,其他所有內容都應具有明智的默認值)。 Pokemon
構造函數還需要Generation
來為這一代人提供神奇寶貝的數據。Move
(這也需要Generation
參數將移動數據范圍範圍範圍範圍範圍範圍範圍。Field
對象,其中包含有關Side
狀態的信息。 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
, Pokemon
, Move
所需的Generation
參數可以僅僅是生成號碼(例如5
),它將處理該世代在與其傳輸的數據層後面的世代Generation
對象。
calc/data
中的數據必須與PokémonShowdown同步。如果計算數據存在問題,請先將其修復在模擬器中。通常,您可能不應該對任何數據文件進行手動編輯,將來可能會通過編程生成。
在某些高級用例中,您可能希望與計算器一起使用不同的數據層。 @smogon/calc/adaptable
入口點可以與實現Calc Generations
接口的任何數據層一起使用。該接口是@pkmn/data
的Generations
接口的子集,因此@pkmn/data
(其中包含來自神奇寶貝攤牌的所有競爭性相關數據)可以與適應性的輸入點一起用於應用程序,以避免避免使用兩組單獨的集合將相同的數據發送給用戶。
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,rollup,parcel等)將其最小化並在其餘的應用程序中包裝。如果您不使用Bundler,則包含在包裝中的便利性production.min.js
。您只需要依靠./node_modules/@smogon/calc/production.min.js
中的script
標籤(這是上面的UNPKG快捷方式所做的),然後calc
可以作為全局訪問。您還必須提供Generations
實現,您可以通過./node_modules/@smogon/calc/data/production.min.js
(或@smogon/calc/data
via Unckg)或您可以使用諸如@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
來安裝依賴項。這應該在root目錄和calc/
node_modules/
$ npm install
$ cd calc && npm install
接下來,從此存儲庫的克隆的根目錄中運行node build
。這應該運行npm在calc/
子目錄中npm run compile
,以將可以在瀏覽器中運行的Typescript到JavaScript編譯@smogon/calc
package,然後編譯“模板” html並將所有內容複製到頂級dist/
文件夾中。然後查看UI,請打開dist/index.html
只需在操作系統文件管理器UI上雙擊文件上的雙擊,請在默認瀏覽器中將其打開即可。
$ 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
該存儲庫還包含一個正在import/
內部軟件包,該軟件包用於填充UI使用的Pokémon集數據(以及有關隨機戰鬥選項的數據)。在此處進行更改之前,您必須在import/
Directory下運行npm install
以安裝其依賴項,因為默認情況下未安裝它們。 TASKS.md
包含有關如何編程更新集的更多信息。
該項目是由Honko創建的,主要由Austin和Jetou維護。
許多其他貢獻者還添加了功能或貢獻錯誤修復程序,請參閱貢獻者的完整列表。
該軟件包根據MIT許可證的條款分發。