เครื่องคำนวณความเสียหายสำหรับการต่อสู้โปเกมอนทุกรุ่น
หากคุณกำลังดู smogon/damage-calc ไม่ใช่ส้อมนี่คือที่เก็บอย่างเป็นทางการสำหรับการประลองโปเกมอน! เครื่องคำนวณความเสียหาย: https://calc.pokemonshowdown.com
ที่เก็บนี้มีทั้งแพคเกจที่ใช้กลไกสูตรความเสียหายหลักในแต่ละรุ่น ( @smogon/calc
) รวมถึงตรรกะและมาร์กอัปสำหรับ UI อย่างเป็นทางการ
@smogon/calc
แพ็คเกจ @smogon/calc
ให้อำนาจ UI ซึ่งให้อินเทอร์เฟซโปรแกรมสำหรับการคำนวณช่วงความเสียหาย แพคเกจย่อยนี้มีรหัสที่จะทำงานทั้งบนเซิร์ฟเวอร์หรือเบราว์เซอร์และสามารถใช้เป็นหน่วยการสร้างสำหรับ UIs ทางเลือกหรือแอปพลิเคชัน
$ npm install @smogon/calc
อีกทางเลือกหนึ่งตามรายละเอียดด้านล่างหากคุณใช้ @smogon/calc
ในเบราว์เซอร์และต้องการวิธีที่สะดวกในการเริ่มต้นขึ้นอยู่กับรุ่น transpiled และ minified ผ่าน 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
code รวมอยู่ด้วยเพื่อตอบสนองความต้องการเลเยอร์ข้อมูลของ Calc อีกทางเลือกหนึ่งอาจใช้เลเยอร์ข้อมูลที่มีคุณสมบัติครบถ้วนเช่น @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 หากมีปัญหากับข้อมูลของ CALL โปรดแก้ไขในตัวจำลองก่อน โดยทั่วไปคุณไม่ควรทำการแก้ไขด้วยตนเองกับไฟล์ข้อมูลใด ๆ และในอนาคตพวกเขามีแนวโน้มที่จะถูกสร้างขึ้นเป็นโปรแกรม
ในบางกรณีการใช้งานขั้นสูงคุณอาจต้องการใช้เลเยอร์ข้อมูลอื่นกับเครื่องคิดเลข @smogon/calc/adaptable
สามารถใช้กับเลเยอร์ข้อมูลใด ๆ ที่ใช้อินเทอร์เฟซ Generations
ของ Calc อินเทอร์เฟซนี้เป็นชุดย่อยของอินเทอร์เฟซ Generations
ของ @pkmn/data
ดังนั้น @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 ของคุณ (Webpack, Rollup, พัสดุ ฯลฯ ) เพื่อลดและจัดทำแพ็คเกจด้วยแอปพลิเคชันที่เหลือของคุณ หากคุณไม่ได้ใช้ Bundler production.min.js
ความสะดวกสบาย 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 >
ปัจจุบันชั้น UI ถูกเขียนขึ้นในวานิลลาจาวาสคริปต์และ HTML ในการดู UI ในเครื่องคุณต้องติดตั้งการพึ่งพาก่อนโดยเรียกใช้ npm install
ที่ระดับบนสุดและไม่มี calc/
สิ่งนี้ควรสร้าง node_modules/
โฟลเดอร์ภายใต้ทั้งรูทไดเรกทอรีและภายใต้ calc/
:
$ npm install
$ cd calc && npm install
จากนั้นเรียกใช้ node build
จากไดเรกทอรีรากของโคลนของคุณในที่เก็บนี้ สิ่งนี้ควรเรียกใช้ npm run compile
ใน calc/
Subdirectory เพื่อรวบรวมแพ็คเกจ @smogon/calc
จาก typeScript ไปยัง JavaScript ที่สามารถทำงานในเบราว์เซอร์แล้วรวบรวม HTML 'templated' และคัดลอกทุกอย่างลงใน 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/
อีกครั้ง calc/
node build
ทำการเปลี่ยนแปลง HTML หรือ JavaScript ใน src/
คุณต้องเรียกใช้ node build view
ก่อนที่การเปลี่ยนแปลงจะปรากฏในเบราว์เซอร์ของคุณ หากคุณไม่ได้ทำการเปลี่ยนแปลงใด ๆ กับไดเรกทอรีนั้น)
ก่อนที่จะเปิดคำขอดึงโปรดตรวจสอบให้แน่ใจว่าผ่าน npm test
:
$ npm test
ที่เก็บนี้ยังเป็นที่ตั้งของแพ็คเกจภายในภายใต้ import/
ซึ่งใช้สำหรับการเติมข้อมูลชุดโปเกมอน (รวมถึงข้อมูลเกี่ยวกับตัวเลือกการต่อสู้แบบสุ่ม) ที่ UI ใช้ ก่อนที่จะทำการเปลี่ยนแปลงที่นี่คุณต้องเรียกใช้ npm install
จากภายใต้ import/
ไดเรกทอรีเพื่อติดตั้งการอ้างอิงเนื่องจากไม่ได้ติดตั้งโดยค่าเริ่มต้น TASKS.md
มีข้อมูลเพิ่มเติมเกี่ยวกับวิธีการอัปเดตชุดโปรแกรม
โครงการนี้ถูกสร้างขึ้นโดย Honko และได้รับการดูแลเป็นหลักโดย Austin และ Jetou
ผู้มีส่วนร่วมอื่น ๆ อีกมากมายได้เพิ่มคุณสมบัติหรือการแก้ไขข้อบกพร่องที่มีส่วนร่วมโปรดดูรายชื่อผู้สนับสนุนทั้งหมด
แพ็คเกจนี้มีการแจกจ่ายภายใต้ข้อกำหนดของใบอนุญาต MIT