모든 세대의 포켓몬 전투에 대한 손상 계산기.
현재 포크가 아닌 Smogon/Damage-Calc를보고 있다면 Pokémon 대결의 공식 저장소입니다! 손상 계산기 : https://calc.pokemonshowdown.com.
이 저장소에는 각 세대 ( @smogon/calc
)의 핵심 손상 공식 역학을 구현하는 패키지와 공식 UI의 논리 및 마크 업이 있습니다.
@smogon/calc
@smogon/calc
패키지는 UI에 전원을 공급하여 피해 범위를 계산하기위한 프로그래밍 방식 인터페이스를 제공합니다. 이 하위 패키지에는 서버 또는 브라우저 모두에서 실행될 코드가 포함되어 있으며 대체 UIS 또는 응용 프로그램의 빌딩 블록으로 사용할 수 있습니다.
$ npm install @smogon/calc
또는 아래에 자세히 설명 된 바와 같이 브라우저에서 @smogon/calc
사용하고 시작하는 편리한 방법을 원한다면 UNBKG를 통해 전송되고 미니스트 버전에 의존하는 경우 :
< script src =" https://unpkg.com/@smogon/calc/dist/data/production.min.js " > </ script >
< script src =" https://unpkg.com/@smogon/calc " > </ script >
이 예에서 Calc의 데이터 계층 요구 사항을 충족하기 위해 @smogon/calc/data
Code가 포함되어 있습니다. 또는 @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
객체를 통해이를 노출시킵니다. 바로 가기로서, Pokemon
, Move
calculate
에 필요한 Generation
인수 인 대신에 생성 번호 (예 : 5
)가 될 수 있으며, 이는 데이터 계층에서 나오는 데이터 계층에서 세대 Generation
객체를 얻는 것을 처리 할 것입니다.
calc/data
의 데이터는 Pokémon 대결과 동기화되어야합니다. Calc의 데이터에 문제가 있으면 먼저 시뮬레이터에서 문제를 해결하십시오. 일반적으로 데이터 파일을 수동 편집하지 않아야하며 향후 프로그래밍 방식으로 생성 될 가능성이 높습니다.
일부 고급 사용 사례에서는 계산기와 함께 다른 데이터 계층을 사용할 수 있습니다. @smogon/calc/adaptable
진입 점은 Calc의 Generations
인터페이스를 구현하는 모든 데이터 계층과 함께 사용할 수 있습니다. 이 인터페이스는 @pkmn/data
의 Generations
인터페이스의 하위 집합이므로 @pkmn/data
(Pokémon Showdown의 경쟁적으로 관련된 모든 데이터를 포함 함)는 두 개의 별도 세트를 피하려는 응용 프로그램에 적응 가능한 진입 점과 함께 사용할 수 있습니다. 동일한 데이터가 사용자에게 선적되었습니다.
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 (웹 팩, 롤업, 소포 등)를 구성하여 이를 최소화하고 나머지 응용 프로그램과 함께 패키지하는 것입니다. 번들을 사용하지 않으면 편의 production.min.js
패키지에 포함되어 있습니다. script
태그에서 ./node_modules/@smogon/calc/production.min.js
에 의존하면 (위의 UNPKG 바로 가기가 수행하는 것), 그 후에 calc
글로벌로 액세스 할 수 있습니다. 또한 Generations
구현이 제공되어야하며 ./node_modules/@smogon/calc/data/production.min.js
(또는 @smogon/calc/data
)에 따라 계산기의 데이터 계층에 의존 할 수 있습니다. @pkmn/data
와 같은 대체 데이터 계층을 사용할 수 있습니다. calc를로드하기 전에 데이터 계층을로드해야합니다.
< script src =" ./node_modules/@smogon/calc/data/production.min.js " > </ script >
< script src =" ./node_modules/@smogon/calc/production.min.js " > </ script >
UI 층은 현재 바닐라 JavaScript 및 HTML로 작성되었습니다. UI를 로컬로 보려면 먼저 npm install
최상위 레벨과 calc/
없이 실행하여 종속성을 설치해야합니다. 루트 디렉토리와 calc/
에서 node_modules/
폴더를 생성해야합니다.
$ npm install
$ cd calc && npm install
다음 으로이 저장소 클론의 루트 디렉토리에서 node build
실행하십시오. calc/
Subdirectory에서 npm run compile
실행하여 브라우저에서 실행할 수있는 TypeScript에서 JavaScript로 @smogon/calc
패키지를 컴파일 한 다음 '템플릿'HTML을 컴파일하고 모든 것을 최상위 dist/
Folder로 복사해야합니다. . 그런 다음 UI를 보려면 Open 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/
Again으로 복사해야합니다. src/
에서 HTML 또는 JavaScript를 변경하면 브라우저에서 변경 사항이 표시되기 전에 node build view
실행해야합니다 ( node build
도 작동하지만 calc/
COMM을 컴파일하므로 불필요합니다. 해당 디렉토리를 변경하지 않은 경우).
풀 요청을 열기 전에 npm test
통과되는지 확인하십시오.
$ npm test
이 저장소에는 UI가 사용하는 Pokémon 세트 데이터 (및 임의의 전투 옵션에 대한 데이터)를 채우는 데 사용되는 import/
에 따라 내부 패키지가 있습니다. 여기에서 변경하기 전에 import/
기본적으로 설치되지 않았으므로 의존성을 설치하려면 npm install
실행해야합니다. TASKS.md
에는 프로그래밍 방식으로 세트를 프로그래밍 방식으로 업데이트하는 방법에 대한 자세한 정보가 포함되어 있습니다.
이 프로젝트는 Honko에 의해 만들어졌으며 주로 Austin과 Jetou가 관리합니다.
다른 많은 기고자들은 기능을 추가하거나 기고 된 버그 수정을했습니다. 전체 기고자 목록을 참조하십시오.
이 패키지는 MIT 라이센스의 조건에 따라 배포됩니다.