pokebedrock-showdown
v0.1.13
Published
A modified version of the Pokémon Showdown server, designed for PokeBedrock.
Downloads
563
Readme
A PokeBedrock Fork of Pokémon Showdown
Goal
Try to keep this fork with the least amount of changes to the original codebase. However since we NEED to make changes to make it work in minecraft we need to keep all changes small and prefix them all with // @pokebedrock ensuring when merge conflicts come (when syncing with the original codebase) we can easily see what changes are needed to be made.
Current Changes:
Core System Changes:
- Reworked Config: Modified to not use reading/writing to files as script api doesn't support that.
- Better Type Safety: Added more specific type definitions throughout the codebase.
- ESM Compatibility: Fixed compatibility issues with Minecraft Bedrock's Script API.
- Removed Dynamic Requires:
sim/dex&sim/teamsnow uses a static import map to avoid dynamic requires (which is not supported in Minecraft Bedrock's Script API).
Pokemon Data & Features:
- UUID System: Added a whole UUID system which allows pokemon to be searched easily by interpreter.
- Cosmetic Forms: Added extensive cosmetic forme support for many Pokemon including:
- Pikachu variants (Witch, Captain, Santa, Detective, Doll)
- Halloween forms (Sandshrew, Sandslash, Gastly, Haunter, Gengar, Celebi, Darkrai, Trubbish, Garbodor, Golett, Golurk, Gible, Gabite, Garchomp, Zoroark)
- Christmas forms (Mew, Gardevoir, Gallade, Comfey, Snorlax)
- Seasonal forms (Torterra-StPatrick, Spheal-Watermelon)
- Independence forms (Cubone, Dugtrio, Houndoom, Wailord)
- Spinda pattern variants
- Vivillon Valentine pattern
Evolution System Enhancements:
- Enhanced Evolution Properties: Added better properties to describe evolutions in pokedex:
evoTime: Specifies time of day for evolution (day/night/evening)evoGender: Required gender for evolutionevoPartySpecies: Required species in party for evolutionevoTradeSpecies: Required trade partner speciesevoPartyType: Required type in party for evolutionevoKnownMoveType: Required move type for evolutionevoMinAffection: Minimum affection required for evolutionevoRelativePhysicalStats: Stat comparison requirements for evolutionevoStatusEffect: Required status condition for evolutionevoBiomes: Required biomes for evolutionevoPriority: Evolution priority systemevoCosmeticForme: Required cosmetic forme for evolutionevoType: Enhanced evolution type systemchangeEvent: Event that triggers forme changes
Battle System:
- Bag Item System: Added comprehensive bag items with actions for:
- Healing items (Potion, Super Potion, Hyper Potion, Max Potion, Full Restore)
- Revival items (Revive, Max Revive)
- Status cure items (Pecha Berry, Cheri Berry, etc.)
- PP restoration (Leppa Berry with move-specific targeting)
- Stat-boosting berries (Sitrus Berry, Oran Berry, etc.)
- Revive System: Added
revive()function for Pokemon to handle revival mechanics. - Enhanced Heal Messages: Added
DETAILSto-healinstruction so we can read the pokemon being healed. - Critical Hit Enhancement: Added source parameter to
-critmessages for better tracking.
Protocol & Communication:
- New Instructions: Added simulator protocol instructions:
bag-item: For using bag items on Pokemonused-ball: For tracking ball usageforceforme: For forcing Pokemon forme changes/evolutions
- Enhanced Details: Send
detailschangeafter mega evolution so it will look good. - Kill Tracking: Added
-killedinstruction to send messages when a pokemon is killed.
Move & Battle Mechanics:
- PP System: Enhanced PP tracking with current/max PP support from movesInfo.
- Move Targeting: Better type safety for move targets.
- Status Effects: Enhanced status effect handling for bag items and berries.
Technical Improvements:
- Type Definitions: Improved TypeScript definitions throughout the codebase.
- Const Assertions: Added
as constto data tables for better type inference. - Error Handling: Enhanced error handling for bag items and forme changes.
Releasing a new NPM Version
If your smell-of-curry and you want to release a new version, you can do the following:
- Update the version in
package.json - Run
npm run build-npm - Run
npm publish
