How pklucid/lucid-calc works
EKalc combines a browser damage-calculator UI with the @smogon/calc library and its generation-specific Pokémon data. The principal workflow is to choose a generation, attacker, defender, move, and field state; calculate damage using that generation’s mechanics; then present ranges, descriptions, and related results. The README also documents imported Pokémon sets and random-battle options, which support the UI. UI-to-calculator wiring and several internal mechanics links are not shown in the sampled excerpts, so uncertain links are omitted or marked unverified.
Main entry points: index.ts Calculator API · adaptable.ts Adaptable API · shared_controls.js Calculator controls · sets Generation sets
Components 28
Browser UI
- Calculator controls
src/js/shared_controls.js - Honkalculate controls
src/js/honkalculate_controls.js - Random controls
src/js/index_randoms_controls.js - Moveset import
src/js/moveset_import.js
Calculator Library
- Calculator API
calc/src/index.ts - Adaptable API
calc/src/adaptable.ts - Pokémon state
calc/src/pokemon.ts - Move state
calc/src/move.ts - Field state
calc/src/field.ts - Stat calculations
calc/src/stats.ts - Damage result
calc/src/result.ts - Result descriptions
calc/src/desc.ts
Generation Data
- Species data
calc/src/data/species.ts - Move data
calc/src/data/moves.ts - Ability data
calc/src/data/abilities.ts - Item data
calc/src/data/items.ts - Nature data
calc/src/data/natures.ts - Type data
calc/src/data/types.ts
Damage Mechanics
- Gen 1–2 mechanics
calc/src/mechanics/gen12.ts - Gen 3 mechanics
calc/src/mechanics/gen3.ts - Gen 4 mechanics
calc/src/mechanics/gen4.ts - Gen 5–6 mechanics
calc/src/mechanics/gen56.ts - Gen 7–9 mechanics
calc/src/mechanics/gen789.ts - Mechanics helpers
calc/src/mechanics/util.ts
Sets and Import
- Generation sets
src/js/data/sets - Set import package
import/src/sets.ts - Trainer name data
script/main.py
Other components
- Calculator user
Connections 21
- Calculator user → Calculator controls: sets inputs
README.md - Calculator controls → Calculator API: requests calculation
- Honkalculate controls → Calculator API: uses calculator
- Random controls → Generation sets: uses battle sets
- Moveset import → Generation sets: imports sets
- Set import package → Generation sets: populates sets
README.md - Trainer name data → Calculator controls: supports trainer data
- Calculator API → Adaptable API: delegates calculation
calc/src/index.ts - Adaptable API → Pokémon state: constructs Pokémon
calc/src/adaptable.ts - Adaptable API → Move state: constructs move
calc/src/adaptable.ts - Adaptable API → Field state: accepts field state
calc/src/adaptable.ts - Pokémon state → Species data: loads species
- Move state → Move data: loads move data
- Calculator API → Gen 1–2 mechanics: applies mechanics
- Calculator API → Gen 3 mechanics: applies mechanics
- Calculator API → Gen 4 mechanics: applies mechanics
- Calculator API → Gen 5–6 mechanics: applies mechanics
- Calculator API → Gen 7–9 mechanics: applies mechanics
- Gen 7–9 mechanics → Mechanics helpers: uses helpers
calc/src/mechanics/gen789.ts - Calculator API → Damage result: returns result
calc/src/index.ts - Damage result → Result descriptions: builds descriptions
calc/src/result.ts