Калькулятор повреждений для всех поколений сражения покемонов.
Если вы в настоящее время смотрите на Smogon/Car-Calc, а не на вилку, это официальный репозиторий для Showdown Pokémon! Калькулятор повреждений: https://calc.pokemonshowdown.com.
В этом репозитории находится как пакет, внедряющий механики формулы ядра в каждом поколении ( @smogon/calc
), а также логику и разметку для официального пользовательского интерфейса.
@smogon/calc
Пакет @smogon/calc
поддерживает пользовательский интерфейс, обеспечивая программный интерфейс для диапазонов ущерба. Этот подпака содержит код, который будет работать как на сервере, так и на браузере и может использоваться в качестве строительного блока для альтернативных пользовательских интерфейсов или приложений.
$ 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
поставляется со всеми данными, необходимыми для расчета повреждений - по умолчанию, он раскрывает это через свой объект Generations
из @smogon/calc/data
. В качестве ярлыка, аргумент Generation
, требуемый путем calculate
, Pokemon
, Move
вместо этого может быть просто номером генерации (например, 5
), и он будет обрабатывать получение этого объекта Generation
поколений за кулисами из уровня данных, с которым он отправляется.
Данные в calc/data
должны быть синхронизированы с Pokémon Showdown. Если есть проблема с данными CALC, сначала исправьте ее в симуляторе. В целом, вы, вероятно, не должны делать ручные изменения ни в одном из файлов данных, и в будущем они, вероятно, будут генерироваться программно.
В некоторых вариантах расширенного использования вы можете использовать другой уровень данных с калькулятором. Точка входа @smogon/calc/adaptable
может использоваться с любым уровнем данных, который реализует интерфейс Calc's Generations
. Этот интерфейс представляет собой подмножество интерфейса @pkmn/data
Generations
, так что @pkmn/data
(которые содержат все конкурентно релевантные данные из Pokémon Showdow Те же данные, отправленные пользователям.
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 } } )
) ;
Рекомендуемый способ использования @smogon/calc
в веб -браузере состоит в том, чтобы настроить ваш Bundler (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
через UNPKG), или или или или или или или или или или Вы можете использовать альтернативный уровень данных, такой как @pkmn/data
. Вы должны загрузить свой уровень данных перед загрузкой Calc:
< script src =" ./node_modules/@smogon/calc/data/production.min.js " > </ script >
< script src =" ./node_modules/@smogon/calc/production.min.js " > </ script >
Уровень пользовательского интерфейса в настоящее время написан в ванильном JavaScript и HTML. Чтобы просмотреть пользовательский интерфейс локально, вы сначала должны установить зависимости, выполняя npm install
на верхнем уровне и без calc/
. Это должно создать node_modules/
Polder как в корневом каталоге, так и в calc/
:
$ npm install
$ cd calc && npm install
Затем запустите node build
из корневого каталога вашего клона этого репозитория. Это должно запустить npm run compile
в calc/
Subercectory для составления пакета @smogon/calc
от TypeScript в JavaScript, который можно запустить в браузере, а затем скомпилировать «шаблон» HTML и копировать все в dist/
Polder верхнего уровня. Полем Затем просмотрите пользовательский интерфейс, откройте 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/
снова. Если вы внесете изменения в HTML или JavaScript в src/
вы должны запустить node build view
прежде чем изменения станут видимыми в вашем браузере (также работает node build
, но он будет медленнее, так как он также будет компилировать calc/
что не нужно. Если вы не внесли никаких изменений в этот каталог).
Перед открытием запроса на привлечение, пожалуйста, убедитесь, что npm test
:
$ npm test
В этом репозитории также находится внутренний пакет в import/
который используется для заполнения данных покемонов (а также данные о случайных вариантах битвы), используемых пользовательским интерфейсом. Перед внесением изменений здесь вы должны запустить npm install
из -под import/
каталога, чтобы установить свои зависимости, поскольку они не установлены по умолчанию. TASKS.md
содержит больше информации о том, как программно обновлять наборы.
Этот проект был создан Хонко и в первую очередь поддерживается Остином и Джету.
Многие другие участники добавили функции или внесены исправления ошибок, пожалуйста, смотрите полный список участников.
Этот пакет распространяется в соответствии с условиями лицензии MIT.