* Combine moveset from allies and uses it to get a move * Clearer implementation of combining user and teammates' moves * Refactor assist and sleep talk to use metronome's attribute for calling a move * Refactor move filtering in RandomMovesetMoveAttr, creates arrays with invalid moves for assist/sleep talk * Refactor RandomMoveAttr to set moveId in condition, places reused code in callMove in RandomMoveAttr * Correct invalid move lists, adds Max/Z moves to metronome's list * Remove ignoresVirtual from beta merge * Remove Max/Z moves per frutescens' comment * Fix bug with metronome/copycat/assist/sleep talk targeting ally * Experimental async/await to be tested * Refactor other attributes to extend CallMoveAttr * Replace QueuedMove with TurnMove, refactor to attempt two-turn move fix for metronome * Fix Swallow test due to TurnMove refactor * Further fixes for TurnMove refactor * Fix metronome two turn moves for enemy pokemon * Replace nested ternary with if-else block per DayKev's comment * Minor fixes * Adjust command phase args handling * Create metronome test, refactor RandomMoveAttr for easier testing * Add unit test for recharge moves * Refactor Copycat and Mirror Move, adjust move targeting * Add unit test for ally targeting with Aromatic Mist * Add tests for secondary effects and recharge moves for metronome * Add test for Roar, remove test for Acupressure * Create test for Assist * Add test for assist failing * Add sleep talk unit test coverage * Adjust move-phase to better track last move for copycat, write and update unit tests for assist/copycat * Create moveHistory in Battle to track all moves used, adjust mirror move to use this, writes unit tests * Correct mirror move implementation, rewrite unit test to adjust * Add docs to attrs, update assist to only grab allies sets * Update assist unit test to match expected functionality * Update metronome unit test to use getMoveOverride * Update copycat unit test to use metronome getMoveOverride mock * Fix phase interception * Add docs from missed conversations * Update assist tests to use manual moveset overrides Minor fixes to other tests * Remove `export` from `CallMoveAttr` * Add missing `.unimplemented()` to some Max- and Z-Moves --------- Co-authored-by: Tempoanon <163687446+Tempo-anon@users.noreply.github.com> Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
PokéRogue is a browser based Pokémon fangame heavily inspired by the roguelite genre. Battle endlessly while gathering stacking items, exploring many different biomes, fighting trainers, bosses, and more!
Contributing
🛠️ Development
If you have the motivation and experience with Typescript/Javascript (or are willing to learn) please feel free to fork the repository and make pull requests with contributions. If you don't know what to work on but want to help, reference the below To-Do section or the #feature-vote channel in the discord.
💻 Environment Setup
Prerequisites
- node: 20.13.1
- npm: how to install
Running Locally
- Clone the repo and in the root directory run
npm install
- if you run into any errors, reach out in the #dev-corner channel in discord
- Run
npm run start:dev
to locally run the project inlocalhost:8000
Linting
We're using ESLint as our common linter and formatter. It will run automatically during the pre-commit hook but if you would like to manually run it, use the npm run eslint
script. To view the complete rules, check out the eslint.config.js file.
📚 Documentation
You can find the auto-generated documentation here. For information on enemy AI, check out the enemy-ai.md file. For detailed guidelines on documenting your code, refer to the comments.md file.
❔ FAQ
How do I test a new _______?
- In the
src/overrides.ts
file there are overrides for most values you'll need to change for testing
How do I retrieve the translations?
- The translations were moved to the dedicated translation repository and are now applied as a submodule in this project.
- The command to retrieve the translations is
git submodule update --init --recursive
. If you still struggle to get it working, please reach out to #dev-corner channel in Discord.
🪧 To Do
Check out Github Issues to see how can you help us!
📝 Credits
If this project contains assets you have produced and you do not see your name, please reach out, either here on GitHub or via Discord.
Thank you to all the wonderful people that have contributed to the PokéRogue project! You can find the credits here.