所有世代的神奇宝贝战斗中的损坏计算器。
如果您目前正在寻找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许可证的条款分发。