Kalkulator kerusakan untuk semua generasi pertempuran Pokémon.
Jika Anda saat ini melihat smogon/damage-calc dan bukan garpu, ini adalah repositori resmi untuk pertarungan Pokémon! Kalkulator Kerusakan: https://calc.pokememonshowdown.com.
Repositori ini menampung paket yang menerapkan mekanika rumus kerusakan inti di setiap generasi ( @smogon/calc
) serta logika dan markup untuk UI resmi.
@smogon/calc
Paket @smogon/calc
memberi kekuatan pada UI, menyediakan antarmuka terprogram untuk komputasi rentang kerusakan. Subpackage ini berisi kode yang akan berjalan di server atau browser dan dapat digunakan sebagai blok bangunan untuk UI atau aplikasi alternatif.
$ npm install @smogon/calc
Atau, seperti yang dirinci di bawah ini, jika Anda menggunakan @smogon/calc
di browser dan ingin cara yang nyaman untuk memulai, cukup bergantung pada versi yang ditranspil dan minified melalui UNPKG:
< script src =" https://unpkg.com/@smogon/calc/dist/data/production.min.js " > </ script >
< script src =" https://unpkg.com/@smogon/calc " > </ script >
Dalam contoh ini, kode @smogon/calc/data
disertakan juga untuk memenuhi persyaratan lapisan data CALC. Atau, lapisan data yang lebih lengkap seperti @pkmn/data
dapat digunakan sebagai gantinya, lihat di bawah.
@smogon/calc
mengekspor semua tipe data yang diperlukan untuk melakukan perhitungan. Metode calculate
membutuhkan:
Generation
yang berisi informasi tentang mekanika formula kerusakan yang akan diterapkan dan di mana semua data tentang generasi dapat ditemukan.Pokemon
penyerang dan bek (catatan: hanya atribut yang relevan yang diperlukan, segala sesuatu yang lain harus memiliki default yang masuk akal). Konstruktor Pokemon
juga membutuhkan Generation
untuk menyediakan data Pokémon untuk generasi tersebut.Move
yang digunakan oleh penyerang (yang juga membutuhkan argumen Generation
untuk ruang lingkup data pindah ke generasi tertentu).Field
yang berisi informasi tentang keadaan masing -masing Side
. calculate
Pengembalian Objek Result
yang berisi metode untuk mengambil gulungan kerusakan, rentang, deskripsi, informasi recoil/drain, dll.
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
hadir dengan semua data yang diperlukan untuk perhitungan kerusakan - secara default, itu memperlihatkan ini melalui objek Generations
dari @smogon/calc/data
. Sebagai jalan pintas, argumen Generation
yang diperlukan oleh calculate
, Pokemon
, Move
sebagai gantinya dapat dengan mudah menjadi nomor pembuatan (mis. 5
), dan itu akan menangani mendapatkan objek Generation
generasi di belakang layar dari lapisan data yang dikirimkannya.
Data dalam calc/data
harus disinkronkan dengan Pokémon Showdown. Jika ada masalah dengan data CALC, harap perbaiki di simulator terlebih dahulu. Secara umum, Anda mungkin tidak boleh membuat pengeditan manual ke salah satu file data, dan di masa depan, mereka cenderung dihasilkan secara terprogram.
Dalam beberapa kasus penggunaan lanjutan, Anda mungkin ingin menggunakan lapisan data yang berbeda dengan kalkulator. Titik masuk @smogon/calc/adaptable
dapat digunakan dengan lapisan data apa pun yang mengimplementasikan antarmuka Generations
CALC. Antarmuka ini adalah subset antarmuka Generations
@pkmn/data
, jadi @pkmn/data
(yang berisi semua data yang relevan secara kompetitif dari Pokémon Showdown) dapat digunakan dengan titik masuk yang dapat disesuaikan untuk aplikasi yang ingin menghindari memiliki dua set terpisah dari Data yang sama dikirimkan kepada pengguna.
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 } } )
) ;
Cara yang disarankan untuk menggunakan @smogon/calc
di browser web adalah dengan mengonfigurasi bundler Anda (Webpack, Rollup, Parcel, dll) untuk meminimalkannya dan mengemasnya dengan sisa aplikasi Anda. Jika Anda tidak menggunakan bundler, production.min.js
kenyamanan.min.js termasuk dalam paket. Anda hanya perlu bergantung pada ./node_modules/@smogon/calc/production.min.js
dalam tag script
(yang merupakan jalan pintas UNPKG di atas), setelah itu calc
dapat diakses sebagai global. Anda juga harus memiliki implementasi Generations
yang disediakan, Anda dapat bergantung pada lapisan data kalkulator dengan tergantung pada ./node_modules/@smogon/calc/data/production.min.js
(atau @smogon/calc/data
melalui UNPKG), atau Anda dapat menggunakan lapisan data alternatif seperti @pkmn/data
. Anda harus memuat lapisan data Anda sebelum memuat Calc:
< script src =" ./node_modules/@smogon/calc/data/production.min.js " > </ script >
< script src =" ./node_modules/@smogon/calc/production.min.js " > </ script >
Lapisan UI saat ini ditulis dalam Vanilla Javascript dan HTML. Untuk melihat UI secara lokal Anda pertama -tama harus menginstal dependensi dengan menjalankan npm install
di level atas dan tanpa calc/
. Ini harus membuat node_modules/
folder di bawah direktori root dan di bawah calc/
:
$ npm install
$ cd calc && npm install
Selanjutnya, jalankan node build
dari direktori root klon Anda dari repositori ini. Ini harus menjalankan npm run compile
di calc/
Subdirectory untuk mengkompilasi paket @smogon/calc
dari TypeScript ke JavaScript yang dapat dijalankan di browser, dan kemudian mengkompilasi html 'templated' dan salin semuanya ke dalam dist/
folder tingkat atas ' . Untuk kemudian melihat UI, buka dist/index.html
- cukup klik dua kali pada file dari file manajer file sistem operasi Anda UI harus membukanya di browser default Anda.
$ node build
$ open dist/index.html # open works on macOS, simply double-clicking the file on Windows/macOS works
Jika Anda membuat perubahan pada apa pun di calc/
, Anda harus menjalankan node build
dari level atas untuk mengkompilasi file dan menyalinnya ke dist/
lagi. Jika Anda membuat perubahan pada HTML atau JavaScript di src/
Anda harus menjalankan node build view
sebelum perubahan akan terlihat di browser Anda ( node build
juga berfungsi, tetapi lebih lambat, karena akan mengkompilasi calc/
juga, yang tidak perlu Jika Anda tidak melakukan perubahan pada direktori itu).
Sebelum membuka permintaan tarik, harap pastikan lulus npm test
:
$ npm test
Repositori ini juga memiliki paket internal di bawah import/
yang digunakan untuk mengisi data Pokémon Sets (serta data tentang opsi pertempuran acak) yang digunakan oleh UI. Sebelum membuat perubahan di sini, Anda harus menjalankan npm install
dari bawah import/
direktori untuk menginstal dependensinya karena tidak diinstal secara default. TASKS.md
berisi lebih banyak informasi tentang cara memperbarui set secara terprogram.
Proyek ini dibuat oleh Honko dan terutama dikelola oleh Austin dan Jetou.
Banyak kontributor lain telah menambahkan fitur atau perbaikan bug yang berkontribusi, silakan lihat daftar lengkap kontributor.
Paket ini didistribusikan berdasarkan ketentuan lisensi MIT.