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.