Handle New Evolutions #7

Closed
smell-of-curry wants to merge 1 commit from handle-new-evos into master
smell-of-curry commented 2025-12-19 17:58:10 +00:00 (Migrated from github.com)

For https://github.com/smell-of-curry/pokebedrock-beh/pull/31


Note

Standardizes evolution data to a new schema with additional condition fields and updates many species entries and biome keys to match.

  • Evolution schema updates (sim/dex-species.ts):
    • Replace/normalize evoType variants to new set: levelUp, useItem, trade, shed, takeStep, changeNickname, afterBattle, other.
    • Add new evolution condition fields: evoMinHappiness, evoPartyForms, evoNickname, evoWeather, evoMinTakenDamage, evoMinRecoilDamage, and typed evoBiomes (using MinecraftBiomeTypes or namespaced IDs).
    • Import WeatherType and MinecraftBiomeTypes to support new fields.
  • Pokedex data normalization (data/pokedex.ts):
    • Mass convert species to the new evolution model (primarily switching to evoType: "levelUp" and moving specifics into dedicated fields such as happiness, item/time, move requirements, steps).
    • Encode special evolutions with new fields (e.g., Shedinja shed, Sirfetch’d afterBattle with evoCriticalHitCount, Basculegion afterBattle with evoMinRecoilDamage, Runerigus damage+biome requirements, Wyrdeer/Overqwil/Annihilape/Dudunsparce/Girafarig line use levelUp with move/use-count fields, Kingambit useItem: "Leaders Crest").
    • Normalize biome identifiers to enum-style keys (e.g., ColdTaiga, FrozenOcean; remove spaced names) and update region/weather-based evolutions (Goodra/Goodra-Hisui via evoWeather).

Written by Cursor Bugbot for commit dbb5983931. This will update automatically on new commits. Configure here.

Summary by CodeRabbit

  • New Features

    • Added nickname-based, weather-dependent, and damage-threshold evolution conditions.
    • Introduced party form requirements and biome-specific evolution variations.
  • Refactor

    • Standardized evolution trigger types across all Pokémon entries.
    • Updated evolution conditions and requirements with improved condition specificity.
    • Normalized biome and location identifiers throughout the Pokedex.

✏️ Tip: You can customize this high-level summary in your review settings.

For https://github.com/smell-of-curry/pokebedrock-beh/pull/31 <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Standardizes evolution data to a new schema with additional condition fields and updates many species entries and biome keys to match. > > - **Evolution schema updates (sim/dex-species.ts)**: > - Replace/normalize `evoType` variants to new set: `levelUp`, `useItem`, `trade`, `shed`, `takeStep`, `changeNickname`, `afterBattle`, `other`. > - Add new evolution condition fields: `evoMinHappiness`, `evoPartyForms`, `evoNickname`, `evoWeather`, `evoMinTakenDamage`, `evoMinRecoilDamage`, and typed `evoBiomes` (using `MinecraftBiomeTypes` or namespaced IDs). > - Import `WeatherType` and `MinecraftBiomeTypes` to support new fields. > - **Pokedex data normalization (data/pokedex.ts)**: > - Mass convert species to the new evolution model (primarily switching to `evoType: "levelUp"` and moving specifics into dedicated fields such as happiness, item/time, move requirements, steps). > - Encode special evolutions with new fields (e.g., Shedinja `shed`, Sirfetch’d `afterBattle` with `evoCriticalHitCount`, Basculegion `afterBattle` with `evoMinRecoilDamage`, Runerigus damage+biome requirements, Wyrdeer/Overqwil/Annihilape/Dudunsparce/Girafarig line use `levelUp` with move/use-count fields, Kingambit `useItem: "Leaders Crest"`). > - Normalize biome identifiers to enum-style keys (e.g., `ColdTaiga`, `FrozenOcean`; remove spaced names) and update region/weather-based evolutions (Goodra/Goodra-Hisui via `evoWeather`). > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit dbb5983931680256ee56be77147b587227b59fa8. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added nickname-based, weather-dependent, and damage-threshold evolution conditions. * Introduced party form requirements and biome-specific evolution variations. * **Refactor** * Standardized evolution trigger types across all Pokémon entries. * Updated evolution conditions and requirements with improved condition specificity. * Normalized biome and location identifiers throughout the Pokedex. <sub>✏️ Tip: You can customize this high-level summary in your review settings.</sub> <!-- end of auto-generated comment: release notes by coderabbit.ai -->
coderabbitai[bot] commented 2025-12-19 17:58:49 +00:00 (Migrated from github.com)

Walkthrough

This pull request refactors the evolution trigger system across Pokémon data and type definitions. The changes standardize evolution types (e.g., replacing levelMove, levelHappiness, and similar variants with levelUp), introduce new evolution constraints (evoMinHappiness, evoMinTakenDamage, evoPartyForms), add nickname-based and weather-dependent evolutions, and normalize biome identifiers throughout the Pokédex.

Changes

Cohort / File(s) Change Summary
Evolution Type System Update
sim/dex-species.ts
Updated evoType enum to replace legacy trigger types (levelMove, levelHappiness, levelHold, levelShed, steps) with standardized ones (levelUp, shed, takeStep, changeNickname, afterBattle). Added type support for new evolution constraint fields: evoMinHappiness, evoMinTakenDamage, evoMinRecoilDamage, evoPartyForms, evoNickname, evoWeather, and expanded evoBiomes typing to support biome keys and subbiome notation.
Pokédex Data Normalization
data/pokedex.ts
Bulk update of Pokémon evolution data across hundreds of entries: standardized evoType values to new system, added evoMinHappiness fields, introduced nickname-based evolutions (evoNickname), added weather and biome conditions, updated biome identifiers to concatenated forms (e.g., "Cold Taiga" → "ColdTaiga"), and adjusted evolution-gating fields to align with the new trigger framework.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20–30 minutes

  • Type definition changes in sim/dex-species.ts: Carefully verify that the new evoType enum values are exhaustive and that new optional fields (evoPartyForms, evoNickname, etc.) are correctly typed, particularly the evoBiomes union type incorporating biome keys and subbiome notation.
  • Data consistency in data/pokedex.ts: Due to the high volume of entries modified, spot-check a representative sample of evolution updates to confirm that evoType replacements are semantically correct and that new constraint fields (e.g., evoMinHappiness: 160) accurately reflect the original evolution logic.
  • Biome identifier normalization: Verify that all biome name transformations are consistent with the new biome key definitions elsewhere in the codebase.
  • #3: Also modifies sim/dex-species.ts to add evolution-related constraint fields (evoNickname, evoMinTakenDamage, evoMinRecoilDamage, evoPartyForms), indicating overlapping evolution system enhancements.

Poem

🐰 Evolutions hop anew—
Old trigger names bid adieu,
Levelup's the way, nicknames too,
Biomes align in forms so true,
Happy happiness, at last on cue!

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Handle New Evolutions' is directly related to the main changes in the pull request, which involve updating and refactoring the evolution system across Pokédex data and type definitions.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch handle-new-evos

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

<!-- This is an auto-generated comment: summarize by coderabbit.ai --> <!-- walkthrough_start --> ## Walkthrough This pull request refactors the evolution trigger system across Pokémon data and type definitions. The changes standardize evolution types (e.g., replacing `levelMove`, `levelHappiness`, and similar variants with `levelUp`), introduce new evolution constraints (`evoMinHappiness`, `evoMinTakenDamage`, `evoPartyForms`), add nickname-based and weather-dependent evolutions, and normalize biome identifiers throughout the Pokédex. ## Changes | Cohort / File(s) | Change Summary | |---|---| | **Evolution Type System Update** <br> `sim/dex-species.ts` | Updated evoType enum to replace legacy trigger types (`levelMove`, `levelHappiness`, `levelHold`, `levelShed`, `steps`) with standardized ones (`levelUp`, `shed`, `takeStep`, `changeNickname`, `afterBattle`). Added type support for new evolution constraint fields: `evoMinHappiness`, `evoMinTakenDamage`, `evoMinRecoilDamage`, `evoPartyForms`, `evoNickname`, `evoWeather`, and expanded `evoBiomes` typing to support biome keys and subbiome notation. | | **Pokédex Data Normalization** <br> `data/pokedex.ts` | Bulk update of Pokémon evolution data across hundreds of entries: standardized `evoType` values to new system, added `evoMinHappiness` fields, introduced nickname-based evolutions (`evoNickname`), added weather and biome conditions, updated biome identifiers to concatenated forms (e.g., "Cold Taiga" → "ColdTaiga"), and adjusted evolution-gating fields to align with the new trigger framework. | ## Estimated code review effort 🎯 3 (Moderate) | ⏱️ ~20–30 minutes - **Type definition changes in `sim/dex-species.ts`**: Carefully verify that the new evoType enum values are exhaustive and that new optional fields (`evoPartyForms`, `evoNickname`, etc.) are correctly typed, particularly the `evoBiomes` union type incorporating biome keys and subbiome notation. - **Data consistency in `data/pokedex.ts`**: Due to the high volume of entries modified, spot-check a representative sample of evolution updates to confirm that `evoType` replacements are semantically correct and that new constraint fields (e.g., `evoMinHappiness: 160`) accurately reflect the original evolution logic. - **Biome identifier normalization**: Verify that all biome name transformations are consistent with the new biome key definitions elsewhere in the codebase. ## Possibly related PRs - **#3**: Also modifies `sim/dex-species.ts` to add evolution-related constraint fields (`evoNickname`, `evoMinTakenDamage`, `evoMinRecoilDamage`, `evoPartyForms`), indicating overlapping evolution system enhancements. ## Poem > 🐰 *Evolutions hop anew—* > *Old trigger names bid adieu,* > *Levelup's the way, nicknames too,* > *Biomes align in forms so true,* > *Happy happiness, at last on cue!* <!-- walkthrough_end --> <!-- pre_merge_checks_walkthrough_start --> ## Pre-merge checks and finishing touches <details> <summary>✅ Passed checks (3 passed)</summary> | Check name | Status | Explanation | | :----------------: | :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. | | Title check | ✅ Passed | The title 'Handle New Evolutions' is directly related to the main changes in the pull request, which involve updating and refactoring the evolution system across Pokédex data and type definitions. | | Docstring Coverage | ✅ Passed | No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. | </details> <!-- pre_merge_checks_walkthrough_end --> <!-- finishing_touch_checkbox_start --> <details> <summary>✨ Finishing touches</summary> - [ ] <!-- {"checkboxId": "7962f53c-55bc-4827-bfbf-6a18da830691"} --> 📝 Generate docstrings <details> <summary>🧪 Generate unit tests (beta)</summary> - [ ] <!-- {"checkboxId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} --> Create PR with unit tests - [ ] <!-- {"checkboxId": "07f1e7d6-8a8e-4e23-9900-8731c2c87f58", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} --> Post copyable unit tests in a comment - [ ] <!-- {"checkboxId": "6ba7b810-9dad-11d1-80b4-00c04fd430c8", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} --> Commit unit tests in branch `handle-new-evos` </details> </details> <!-- finishing_touch_checkbox_end --> <!-- tips_start --> --- Thanks for using [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=smell-of-curry/pokebedrock-showdown&utm_content=7)! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. <details> <summary>❤️ Share</summary> - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code) </details> <sub>Comment `@coderabbitai help` to get the list of available commands and usage tips.</sub> <!-- tips_end --> <!-- internal state start --> <!-- DwQgtGAEAqAWCWBnSTIEMB26CuAXA9mAOYCmGJATmriQCaQDG+Ats2bgFyQAOFk+AIwBWJBrngA3EsgEBPRvlqU0AgfFwA6NPEgQAfACgjoCEYDEZyAAUASpETZWaCrKPR1AGxJcAEplpekAByJADukACiEvgeePD4GMiQBkGOApRcAOyQyQCqNgAyXLC4uNyIHAD0lUTqsNgCGkzMlYhsHh5g+ABmYAzYFC6V3PgA1iTptBT4DKNgiLD4obRLGMPYHZXZeYgZ9u2dPX0DLjkGAMr4AwwkkAJUGAywxf5eYOShYCTRSQbQzqRcHcHk8uMw0IgaHxkudcNRsBV+NwyGcbN94GFKIiAML4bjwDz4IHJAoqEgeREACgwCRIAEoztiKCRqHR0JxIAAmAAMnIArGAAIycoUATmggsyHD5AA4OILuQAtIwAEWkDAo8G44gSXAARAAxfB8EplCrVWq4eqNZqtA5dXr9QayYZjCZ0aazMDpWDrTYAZkFeqM+mM4CgZHoPRwBGIZGUNHozTYGA5vH4wlE4ikMnkTCUVFU6i0OlDJigcFQqEwMcIpHIVETClY7C4VHCDicpzkCgLKjUmm0ujAhjDpgMtGoaFd4yUAA8NLgKgY9auDBZIABBACScYbrPonfBp2jT0wpEQIcg33w0FkyMYsHP0nQGvwiGQ4Iw8isYwAl8wCTXqmmrSBwBg5FAepeFIHh+Nw+LkB+eoADSQNB3zkgAsvgUioehMHkj4MS0PhGGwREc64FQeroBgh7wMwBLONe0R3g+EhoLEL7MtwHhoDc9ChHUBGYR4uTcLRlI9DQWDCVa6C0LQ6jxBgXGQN0GIeLQyAOE86DIDeWHwBg8GIdIiKCgAbNyaE3gUYmKUICK4CmS5ocakDMvxTbdPxRCIHSGgQbokCXGwrExHECSfrhbIEJANIYGAhEeJAbBWooiB2RoRAaHZbH3rcZ4YKQ9AJXqCIkNuNDMLR8mwJFNUkMwinKTqiSQJScDYPRlBhQQ5BoQ5aDdANtJoThQGwhN164AwGh0h5fAVdRaBKPVInqC1XkkAAjtg8DMm5iDBZBkXsbc2DcJOTYJfc+Drf1DCskQxoYsgHjwOM6GjVCABC1C4F4tH+OhcLjLCJCSZACXMn5WboB4UJqTQsOakQpB8Ew9EqTFZ2hUZcUaVpOm7XCJlsqEsCULcaAIV9L0CF4aECHgF1FYlSxI/ARCdQ1omwRJtGAcywKPQEsjBVAIThJ563OZCbI3mA3kHiT5I6eB51GSZZmUx+XDWdybXxfgiWOJQVyGdEsQdcg3TGmwFAePIRDqz2T4IQb2U83zJlEJAAupRJ3oQmyOPtapp0hRG0TGRg/zjBgKpoOCpB0fQN5WM4uCyEaFDMMgJnUYo2CCSgWCICwtw3nb0ddSQuX5ZAuQUAs8DdNgaE2L1lC8wiDIJQ4CHGkC61Rwk6nu+IpWMJqULwGgBNx/gADqLJWv1YNq02N64rjHXNidpv0CZ9iYVQaXsKByBwyQCNiEHm80xQYe7FG2MJJPanX7b0WdUpE3PKaFzhfUxvgc2nFNSYHcpAAA4pAqYaA0KIMUFQMAPgkCHVQUgqgj5nyBRXk1WqBV8DNWYJuQCvVcBoTBjeaAVAlCq3JOrTSmtkDXVumbXaj8gTbWYO/ZW/97ZdR6n1PgM0hqQG3Dcca0iDRHVuFIkgdl5qLUrulY0tw+ICWkNLSA/14hsEqMyWoQE1IRRpIXLi8AABe1BVLa0JtEIxNdOE3TYdMVqzANjiDAKEY09BHaFzvubHGL1ZJsKdsgIBzc0J6lxNpGA2h3a0UAEmE6Ekm0H+LzNAZFZG3BwjQ7QiQMnoUKcU1MpTED4RIOooKBgZbwFmJYkgQis4iKcbHMKyIGCdxaZFeuMUubhBMgwWISgObIn1CVUgQQWmjDaZtBSN4FmtLTrcTi3FYnAJbtuDAow0DyEySqEyDYBC0gANyQBwhQZEoxzaZL8KVFwNyiSv0rpCTANwiFNMMUDLwlQ/qUDDqUQIM8A7ONXpdSAXD1YVRBRQQG4KSC0RCRfKQV8hkALvk+IEMwnToG6FCO4gKXyeV6gWHg75cBguBsVb+eNAF7NAUdbo9SniAEwCWgaFNwUBuAiFhPk2QhKLmohajSoDGUQDcDomASDW0gLdNATkXInWhWFS+6l7KOXoWxRiJBKj7yZUfdh2lkAKxcjw9IpR+rwy8E/D46NeZY12fE6wiBZAd01gChYwr1Z11xcNWQL0MCeg0jEiVi1iGpGdkqtQNdM6RsLolTZcLPE0DCX7OSIlnWJoivAJQqYBlYjhR/TRW9ewTHDsQ842q/6EF3hHU1DdQi02PuwNkVwgRAOiAfH+DJz7dDQNEPg0ZnUkDnHxFp6gXWYzLX29eL9KBkLcWwX2urYJkIodGqV1gGiMy3FYbc9gBgjrkZSJQEznCOJinSTVVhD0tNdteadY82S/lnFO5VU57DUXLrgAYtxjo1NhjTewmzWbs3UMgHGFNyBZxAh9LlkV51uuTRldaf6nxSDuCQFE8KmwQmVeqTUkx0CXKkATIw65LCbmRgmBuCUq3Xv4o2Bu0Yp0jAoE2Ty3Bn0MGAuIcQ0grxBHNtxj9tB1jM0GV3R4R9PJ5wfIgXmqNgPIHbWLCe3a+DHTirQDQMAINzJfM4W4KqUqOSIy+Bq58q1Sd45+t084FCJDhKmLqgFlLdFkAHaZqi2oBd1qZem5kPxkIctukhLVjXRA3tQV+8X8DrukClnOvH85RuTRgRZbS+hPlKiFrp97jMScSmEHggnSM3o4yMzyam+bwjFmZ7NCmxCcb4CXSgF67MdpLtMWg5c6DBQMBESEjF1b5hA+iKrD8QkciwnQeAjgVxriaeONTLR5zzD6R9Rcy5VzBg3DuPcCY2RHmcPIU8RWLxXiiFFI+1FXX9RU7cL1StWrwwEgQduXAGGcxpOEKqlqsDcf8Jd+plcJnYGUnPEO3A0ILDoGhCGJAoZI4IaVEg6yllQeJQDclaFz4T2ZbDc2a0plgyqruoOCBAgGYkAF3YWL1K8HiCtDGGHKSpRwlINCqVKJrUF2JfWSFfapWItpUXsFzg015f+6GRCTOoDa/TlpjUXsLvbugMW2yi0ppxaIsGixwhb3kBZ3avBpBdrPlgGbBiDml2GxXSdpWHcxTWiXREoWk5kFTunILoW0RMAJIHtApA6H0UigncXFkurUw7aF+PH4UB4tuM6pieXfGtS9hF5AzIDpKLckboN9t92UW4JDzpT3VLuZoFRI31esvJsjsy330RMt5wLkXLqHwGRcUJKEXS+2/MBaL4dZk9AW95xTX3jF5fVI3LWfl9N1IwiD6UsgPLGy2AdON/XyfJf2CIBXwlldfAN+hEHzHm8aXYkD/Fk9cHGBmfTAwG5dS7f7ZoQFvf4xF8YHWGIqegEjVVXqevaMAtW4cYb1ZNGArTESBwIsJNGkOEDqAxKvGvO4QAkAxCIgAHVxQAnfbmASG4bUZAOAh2bxW5SmDUP6NLS6ZARrF7UqJAhSVVPUGAjgFAmA9FJ2agNCXififpOeKtG3ZnJVXRc+SETUUqAAbQAF10AEJpgBJYADFNwlI2REst4KBYUwYE5RAqASUmCipi5mAeMlwKcz1R5eNwNM95sL8ktt479iD3F8CA4Y5aNTtGN6tOoWMIM2Nb1REuN31nNP5qs5MhN2AVIxN/lsR+JDZ7BGJKhdtEB9t9ElwelAcHxKRmR1oEhXYH1W5M02Qh8lg2RtlsAXxuhvFnFzoAByKnEgJoyAAAH0gCaNp1qnaK6KaL5zin6O6KFyoioBGMGLF3Cx9kmKlxIjmLEnlzoEmKVnKEmI+UoCaJChyAIEaNChaKYTaM6O6N6JakWKFm4FWIV0mPR0x0mLMzxzaUmKRRRQZQ2P0O2J1njhMk3G6A5U6yAlAxMl9jZiBBTxmIl1Pi6kKJWAwFfQhO9glwAH4uAMA0hKA6Rciu9c5stQlUT/15CiBlD+9N9sT8AnjNkCS5CAtr8sTvjl1XCKACS4Dox3tow9DX5YU6TySE5/cU405I8SACT0TmB0gr8B9eSTJQ98Bw9BTSARSMSJSySGSH8CTKRWSxp2SxpjCGCzDADmCTiAADAAEgAG8aTSoABfDgc0y0ogK0o0ukEknk1UkgngZkKQhEV9EI6fAyXaIo+E+QAA9xaktg4kpQm5JneKCDEiWrdjO9DAckqwTUd6OfXqMzegSkMElAGwhwQYK4XGOeGAgNJsZmGYUYIOcA/wnhaMyKB/SAV+ekck3ENoepFpXvWbcEEEuFR4O7OgHpAAeX0MilLNFVJndRAUim71kEugZHgxMlqNsKnSQFoSDhEmzlxN7zB3Kggwhz6lrwbOaD4nbPEL3I9z6FbRGXzL6z1xZDG2ACCEHKCAiFHA3CwkwE7mkCBEUUCE3F/lkDsUoCMAm3EHBCbBm12mZ3m3+LHi4GW2UjW2OxDBHDHAjBj2jDQDwDrHjEbBbRbFTDbDQA7EcGPHkB7Bm0LAHBLGHEMHLGPnUAAH0i1EBGLPSMR21aBGLvkHDQwDB6LaBVA+RRQZR/RRRAwrIZReQ+QrICMZL0hMhMhBQAAWTIAQWUTITkTkNS4SkdGUWitChi3AZinSNiubTixiyMAy+im3Ri52UgRip4UQUYVinioEPis0kKPUJAWwf6QkWYOgXEAi3AX8JWUiLgEdCkVRLyhYK4bSPyis2wPUCKriXYFCLypAQcrFTUHQjAZKjSVK6KnIPUZSWgXuFOGYWEIkxAbEGmWYfKgDIq9CUq8q9wBlWq5yhqigWo9K4qlq3qNUWVTUbUVSDq+qlKqK3qgiEyWcbcD8WoxAKq/K1cKa6CCEXAMa0YNEBwZGWpLgBQnYyATynIE69CJy2YIITZZawajULUI+Ta1CQ64q75IDPa9GHqp69CbjfiVGVSZaza+wUYLUZEegKAXEJQGwfsdQLlZABAIgWAazWCM9LseQVAMgFQLwIzR6064qnzNFfUUIZwPLUqbGnGvUd6WoX+Tay6tgZapQIau6v6w6q0qanIY6sm860YGm/G9CNqwITm0m06vUF6hELqj6nGr66dH6xM5auAW4ETQIJol5AIW4WWSID3RAdo1AZSZkMQV9ZtcqSnCDbsh3fs4uLACQjYNKSfb8v/BAfSEyW2PDIjALHeB+X7d6M82uD3ewb1WqV8aYNPL9P8NzFVZNd7UjTSPLe2DQQWk6vUPG5awmigYmogOO4q3WhITSIgYDfKyKtKz68mjGEyLiamq6/UBWtFZm1mo6wuzm7m66mYe0yAXENnUgdO9CEWt6xqmu4q76zAGW/UCrDrURR2KlStUzfs4JAkF8BKb4LibAVkZVJu8MhQNupuMKIGpEwOFYBgZupgdex8Zy2O3u9CZkauYZPK/UAATSuEYBrG6qwCNIAAFKKoaKZIB6wLtl697wzEAjTbDGJeBiZd7964oqBSAT7C7E6CaiaA4O6i7eYS6PAy7ab9RQG/7gxTqrSQolDVrkiQqbAbrhqOplruhBQ+RNL/RlKeQrIrIBAZRlLGHMhuQZRBQBBlLBL2HlKSB/QZRMg0A+RORuhMgaGrJhQRK+QGABBOQrJRQBB2GWQ+RaBuRugZQ+QBArJNLSa1rIRbA+aeaSqZQSAZRuhRRBRaBRROQSArJlK0AZQ6GLGGA+RuQFQGHRRRQR0+GBBug+R1oRGSA7GH4+R/iBAPGFHtK+GrI+H/QzGWGdGMGiTW7lBSBndKBf5YRWR8qzScGcH+LwwPSSA7LKAHLObWKrL9AgA --> <!-- internal state end -->
coderabbitai[bot] (Migrated from github.com) reviewed 2025-12-19 18:03:12 +00:00
coderabbitai[bot] (Migrated from github.com) left a comment

Actionable comments posted: 1

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 53ec63615e and dbb5983931.

📒 Files selected for processing (2)
  • data/pokedex.ts (62 hunks)
  • sim/dex-species.ts (5 hunks)
👮 Files not reviewed due to content moderation or server errors (1)
  • data/pokedex.ts
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: Agent
  • GitHub Check: CodeQL analysis (javascript-typescript)
  • GitHub Check: Cursor Bugbot
  • GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (3)
sim/dex-species.ts (3)

203-207: New evolution constraint fields are well-designed.

The additions provide fine-grained control over evolution conditions:

  • evoMinHappiness complements existing evoMinAffection (distinct mechanics in modern Pokemon games)
  • evoPartyForms, evoNickname, evoWeather enable new evolution triggers
  • evoMinTakenDamage and evoMinRecoilDamage support damage-based evolutions

All fields are optional and properly documented, ensuring backward compatibility.

Also applies to: 255-259, 299-318


3-4: The imported types are available in the specified libraries. WeatherType and MoonPhase are documented enumerations exported from @minecraft/server, and MinecraftBiomeTypes is exported from @minecraft/vanilla-data. The imports in lines 3-4 are valid.


319-323: Type restriction correctly improves type safety; data fully conforms.

The updated type constrains evoBiomes to either MinecraftBiomeTypes keys or namespaced identifiers (namespace:id), enhancing type safety while maintaining flexibility. All 21 unique biome values in the pokedex (ColdBeach, ColdOcean, ColdTaiga, etc.) follow the PascalCase pattern and are valid keys within MinecraftBiomeTypes from the @minecraft/vanilla-data dependency. The type change poses no breaking changes.

**Actionable comments posted: 1** <details> <summary>📜 Review details</summary> **Configuration used**: defaults **Review profile**: CHILL **Plan**: Pro <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between 53ec63615e046bfe8d55db85c7ba553d3ffabacb and dbb5983931680256ee56be77147b587227b59fa8. </details> <details> <summary>📒 Files selected for processing (2)</summary> * `data/pokedex.ts` (62 hunks) * `sim/dex-species.ts` (5 hunks) </details> <details> <summary>👮 Files not reviewed due to content moderation or server errors (1)</summary> * data/pokedex.ts </details> <details> <summary>⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)</summary> * GitHub Check: Agent * GitHub Check: CodeQL analysis (javascript-typescript) * GitHub Check: Cursor Bugbot * GitHub Check: Analyze (javascript-typescript) </details> <details> <summary>🔇 Additional comments (3)</summary><blockquote> <details> <summary>sim/dex-species.ts (3)</summary><blockquote> `203-207`: **New evolution constraint fields are well-designed.** The additions provide fine-grained control over evolution conditions: - `evoMinHappiness` complements existing `evoMinAffection` (distinct mechanics in modern Pokemon games) - `evoPartyForms`, `evoNickname`, `evoWeather` enable new evolution triggers - `evoMinTakenDamage` and `evoMinRecoilDamage` support damage-based evolutions All fields are optional and properly documented, ensuring backward compatibility. Also applies to: 255-259, 299-318 --- `3-4`: The imported types are available in the specified libraries. WeatherType and MoonPhase are documented enumerations exported from @minecraft/server, and MinecraftBiomeTypes is exported from @minecraft/vanilla-data. The imports in lines 3-4 are valid. --- `319-323`: **Type restriction correctly improves type safety; data fully conforms.** The updated type constrains `evoBiomes` to either `MinecraftBiomeTypes` keys or namespaced identifiers (`namespace:id`), enhancing type safety while maintaining flexibility. All 21 unique biome values in the pokedex (`ColdBeach`, `ColdOcean`, `ColdTaiga`, etc.) follow the PascalCase pattern and are valid keys within `MinecraftBiomeTypes` from the `@minecraft/vanilla-data` dependency. The type change poses no breaking changes. </blockquote></details> </blockquote></details> </details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
@ -199,0 +204,4 @@
* The minimum required happiness the evolving Pokémon species to evolve into this Pokémon species.
* @pokebedrock
*/
readonly evoMinHappiness?: number;
coderabbitai[bot] (Migrated from github.com) commented 2025-12-19 18:03:11 +00:00

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Search for usages of old evoType values that were removed

echo "=== Searching for removed evoType values ==="

# Search for these patterns in TypeScript/JavaScript files, excluding node_modules
rg -nP "(levelMove|levelExtra|levelHappiness|levelHold|levelShed|steps)" \
  --type ts --type tsx --type js --type jsx

echo "=== Search complete ==="

Repository: smell-of-curry/pokebedrock-showdown

Length of output: 192


🏁 Script executed:

#!/bin/bash
# Broader search for old evoType values without strict file type filtering

echo "=== Searching all source files for removed evoType values ==="

# Search for these patterns with simpler approach
rg -n "(levelMove|levelExtra|levelHappiness|levelHold|levelShed)" \
  --exclude node_modules

echo "=== Checking for 'steps' evoType (more specific to avoid false positives) ==="

rg -n "evoType.*steps|'steps'.*evo|\"steps\".*evo" \
  --exclude node_modules

echo "=== Search complete ==="

Repository: smell-of-curry/pokebedrock-showdown

Length of output: 1083


🏁 Script executed:

#!/bin/bash
# Search for old evoType values using proper rg glob syntax

echo "=== Searching for removed evoType values ==="

# Search with glob to exclude node_modules
rg -g '!node_modules' "(levelMove|levelExtra|levelHappiness|levelHold|levelShed)" .

if [ $? -eq 0 ]; then
  echo "Found matches (above)"
else
  echo "No matches found"
fi

echo ""
echo "=== Searching for 'steps' evoType ==="

rg -g '!node_modules' "evoType.*steps|'steps'|\"steps\"" . | grep -i "evo"

if [ $? -eq 0 ]; then
  echo "Found potential matches (above)"
else
  echo "No matches found"
fi

echo "=== Search complete ==="

Repository: smell-of-curry/pokebedrock-showdown

Length of output: 1067


🏁 Script executed:

#!/bin/bash
# Examine the files that reference old evoType values

echo "=== Examining sim/team-validator.ts ==="
grep -n "levelMove" sim/team-validator.ts -A2 -B2

echo ""
echo "=== Examining server/chat-commands/info.ts (first 50 lines) ==="
grep -n "levelMove\|levelExtra\|levelHold" server/chat-commands/info.ts -A2 -B2 | head -40

echo ""
echo "=== Checking data file examples ==="
grep -n "levelExtra" data/mods/gen7/pokedex.ts | head -5

Repository: smell-of-curry/pokebedrock-showdown

Length of output: 1229


Incomplete evolution type refactoring - multiple code paths still reference removed evoType values.

The type definition in sim/dex-species.ts has been updated to remove levelMove, levelExtra, levelHold, etc., but the following files still contain logic for these removed types and will fail at runtime:

  • sim/team-validator.ts:2765 checks for evoType === 'levelMove' (removed type)
  • server/chat-commands/info.ts:676-689 has switch cases for 'levelExtra', 'levelHold', 'levelMove' (removed types)
  • server/chat-plugins/randombattles/ssb.tsx has identical outdated switch cases
  • Data files (data/mods/gen7/pokedex.ts, data/mods/gen8bdsp/pokedex.ts, data/mods/gen4/pokedex.ts) still declare Pokémon using evoType: "levelExtra" and other removed values

Update these files to handle only the new evoType values (levelUp, trade, useItem, shed, takeStep, changeNickname, afterBattle, other) or migrate data to use new types.

🤖 Prompt for AI Agents
In sim/dex-species.ts around lines 177-191 the evoType union was simplified to
remove legacy values like 'levelMove', 'levelExtra', and 'levelHold'; update all
code and data that still reference the removed values: change
sim/team-validator.ts at ~line 2765 to treat former
'levelMove'/'levelExtra'/'levelHold' cases as 'levelUp' (or the appropriate new
type) and remove checks for removed strings; in server/chat-commands/info.ts
lines 676-689 and server/chat-plugins/randombattles/ssb.tsx update the switch
cases to only handle 'levelUp', 'trade', 'useItem', 'shed', 'takeStep',
'changeNickname', 'afterBattle', 'other' (map old cases to 'levelUp' or
consolidate logic), and update the data files data/mods/gen7/pokedex.ts,
data/mods/gen8bdsp/pokedex.ts, data/mods/gen4/pokedex.ts to replace evoType
values like "levelExtra"/"levelHold"/"levelMove" with the appropriate new value
(typically "levelUp" or another matching new enum) so runtime checks match the
new type union.
_⚠️ Potential issue_ | _🔴 Critical_ <details> <summary>🧩 Analysis chain</summary> 🏁 Script executed: ```shell #!/bin/bash # Search for usages of old evoType values that were removed echo "=== Searching for removed evoType values ===" # Search for these patterns in TypeScript/JavaScript files, excluding node_modules rg -nP "(levelMove|levelExtra|levelHappiness|levelHold|levelShed|steps)" \ --type ts --type tsx --type js --type jsx echo "=== Search complete ===" ``` Repository: smell-of-curry/pokebedrock-showdown Length of output: 192 --- 🏁 Script executed: ```shell #!/bin/bash # Broader search for old evoType values without strict file type filtering echo "=== Searching all source files for removed evoType values ===" # Search for these patterns with simpler approach rg -n "(levelMove|levelExtra|levelHappiness|levelHold|levelShed)" \ --exclude node_modules echo "=== Checking for 'steps' evoType (more specific to avoid false positives) ===" rg -n "evoType.*steps|'steps'.*evo|\"steps\".*evo" \ --exclude node_modules echo "=== Search complete ===" ``` Repository: smell-of-curry/pokebedrock-showdown Length of output: 1083 --- 🏁 Script executed: ```shell #!/bin/bash # Search for old evoType values using proper rg glob syntax echo "=== Searching for removed evoType values ===" # Search with glob to exclude node_modules rg -g '!node_modules' "(levelMove|levelExtra|levelHappiness|levelHold|levelShed)" . if [ $? -eq 0 ]; then echo "Found matches (above)" else echo "No matches found" fi echo "" echo "=== Searching for 'steps' evoType ===" rg -g '!node_modules' "evoType.*steps|'steps'|\"steps\"" . | grep -i "evo" if [ $? -eq 0 ]; then echo "Found potential matches (above)" else echo "No matches found" fi echo "=== Search complete ===" ``` Repository: smell-of-curry/pokebedrock-showdown Length of output: 1067 --- 🏁 Script executed: ```shell #!/bin/bash # Examine the files that reference old evoType values echo "=== Examining sim/team-validator.ts ===" grep -n "levelMove" sim/team-validator.ts -A2 -B2 echo "" echo "=== Examining server/chat-commands/info.ts (first 50 lines) ===" grep -n "levelMove\|levelExtra\|levelHold" server/chat-commands/info.ts -A2 -B2 | head -40 echo "" echo "=== Checking data file examples ===" grep -n "levelExtra" data/mods/gen7/pokedex.ts | head -5 ``` Repository: smell-of-curry/pokebedrock-showdown Length of output: 1229 --- </details> **Incomplete evolution type refactoring - multiple code paths still reference removed evoType values.** The type definition in `sim/dex-species.ts` has been updated to remove `levelMove`, `levelExtra`, `levelHold`, etc., but the following files still contain logic for these removed types and will fail at runtime: - `sim/team-validator.ts:2765` checks for `evoType === 'levelMove'` (removed type) - `server/chat-commands/info.ts:676-689` has switch cases for `'levelExtra'`, `'levelHold'`, `'levelMove'` (removed types) - `server/chat-plugins/randombattles/ssb.tsx` has identical outdated switch cases - Data files (`data/mods/gen7/pokedex.ts`, `data/mods/gen8bdsp/pokedex.ts`, `data/mods/gen4/pokedex.ts`) still declare Pokémon using `evoType: "levelExtra"` and other removed values Update these files to handle only the new evoType values (`levelUp`, `trade`, `useItem`, `shed`, `takeStep`, `changeNickname`, `afterBattle`, `other`) or migrate data to use new types. <details> <summary>🤖 Prompt for AI Agents</summary> ``` In sim/dex-species.ts around lines 177-191 the evoType union was simplified to remove legacy values like 'levelMove', 'levelExtra', and 'levelHold'; update all code and data that still reference the removed values: change sim/team-validator.ts at ~line 2765 to treat former 'levelMove'/'levelExtra'/'levelHold' cases as 'levelUp' (or the appropriate new type) and remove checks for removed strings; in server/chat-commands/info.ts lines 676-689 and server/chat-plugins/randombattles/ssb.tsx update the switch cases to only handle 'levelUp', 'trade', 'useItem', 'shed', 'takeStep', 'changeNickname', 'afterBattle', 'other' (map old cases to 'levelUp' or consolidate logic), and update the data files data/mods/gen7/pokedex.ts, data/mods/gen8bdsp/pokedex.ts, data/mods/gen4/pokedex.ts to replace evoType values like "levelExtra"/"levelHold"/"levelMove" with the appropriate new value (typically "levelUp" or another matching new enum) so runtime checks match the new type union. ``` </details> <!-- fingerprinting:phantom:poseidon:puma --> <!-- This is an auto-generated comment by CodeRabbit -->
cursor[bot] (Migrated from github.com) reviewed 2025-12-19 18:03:24 +00:00
cursor[bot] (Migrated from github.com) commented 2025-12-19 18:03:25 +00:00

Bug: Goodra-Hisui uses wrong weather type for evolution

The evoWeather for Goodra-Hisui is set to 'Thunder' but the commented-out evoCondition says "during rain", same as regular Goodra which correctly uses evoWeather: 'Rain'. Both variants should evolve during rain according to the game mechanics, so 'Thunder' appears to be incorrect. This will cause Goodra-Hisui to only evolve during thunderstorms instead of during any rain.

Fix in Cursor Fix in Web

### Bug: Goodra-Hisui uses wrong weather type for evolution <!-- **Medium Severity** --> <!-- DESCRIPTION START --> The `evoWeather` for Goodra-Hisui is set to `'Thunder'` but the commented-out `evoCondition` says "during rain", same as regular Goodra which correctly uses `evoWeather: 'Rain'`. Both variants should evolve during rain according to the game mechanics, so `'Thunder'` appears to be incorrect. This will cause Goodra-Hisui to only evolve during thunderstorms instead of during any rain. <!-- DESCRIPTION END --> <!-- LOCATIONS START data/pokedex.ts#L12841-L12843 LOCATIONS END --> <a href="https://cursor.com/open?data=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImJ1Z2JvdC12MiJ9.eyJ2ZXJzaW9uIjoxLCJ0eXBlIjoiQlVHQk9UX0ZJWF9JTl9DVVJTT1IiLCJkYXRhIjp7InJlZGlzS2V5IjoiYnVnYm90OmI1NDM4MWU2LWQ0YTUtNDY2MC04YTRhLTBhYjQ4MDEzZGY2YiIsImVuY3J5cHRpb25LZXkiOiJVeGJrTzFuMG1pdXdkY09fbGdXeW9Od2tubnNrczlpcHhRbVlQRVhPaHBFIiwiYnJhbmNoIjoiaGFuZGxlLW5ldy1ldm9zIn0sImlhdCI6MTc2NjE2NzQwNCwiZXhwIjoxNzY4NzU5NDA0fQ.PoUq-rhi28ZImqRyOElKwlZgX7xRS2RPLbQGqg-1yCxkIyPI5ar6WoSAc-vzxrAYk9fWa42j4A8xN5kh7aXYcKZDpUUaYAZC5bWaKG4YZAl1uHmhepIUQL3bayWxSyF4oFHTxLdD7LTrF6nt6sVH0tEN7PWSnApVkBVdtYH2U_w2ZJDq0rtIPn8emS4vybUypeBmFir12r6g88Vs7d_tkkKm8LQUWLWNzxpYwUcU7siJ6jw8zhWhpJID1BFMRZHJpUWNf4jemRXyhGYcGv0SKo1TSkuL_KjnuugiEolbMRdbi2AvyM-nK4yqs4yDcLqpHy09eKxMHBrsDHqv3LCjfg" target="_blank" rel="noopener noreferrer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/fix-in-cursor-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/fix-in-cursor-light.svg"><img alt="Fix in Cursor" src="https://cursor.com/fix-in-cursor.svg"></picture></a>&nbsp;<a href="https://cursor.com/agents?data=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImJ1Z2JvdC12MiJ9.eyJ2ZXJzaW9uIjoxLCJ0eXBlIjoiQlVHQk9UX0ZJWF9JTl9XRUIiLCJkYXRhIjp7InJlZGlzS2V5IjoiYnVnYm90OmI1NDM4MWU2LWQ0YTUtNDY2MC04YTRhLTBhYjQ4MDEzZGY2YiIsImVuY3J5cHRpb25LZXkiOiJVeGJrTzFuMG1pdXdkY09fbGdXeW9Od2tubnNrczlpcHhRbVlQRVhPaHBFIiwiYnJhbmNoIjoiaGFuZGxlLW5ldy1ldm9zIiwicmVwb093bmVyIjoic21lbGwtb2YtY3VycnkiLCJyZXBvTmFtZSI6InBva2ViZWRyb2NrLXNob3dkb3duIiwicHJOdW1iZXIiOjcsImNvbW1pdFNoYSI6ImRiYjU5ODM5MzE2ODAyNTZlZTU2YmU3NzE0N2I1ODcyMjdiNTlmYTgiLCJwcm92aWRlciI6ImdpdGh1YiJ9LCJpYXQiOjE3NjYxNjc0MDQsImV4cCI6MTc2ODc1OTQwNH0.Gi-kpvJ2zp-jIm63PQnDxDut2J34l_KRkJtF0MWEBxyNe-NHeb3tvZnQzN_YgPtS5fkndrPZW0pqhcG-iWxJEi4pwU-H8EvqZd3silXRd3LXerMaV88EYoXI4tzVxRYK5H5Ex6PtOmjXPLxmSYGYaQ8ExRho0o-y3sPEqHR4fhqL7uoec5TtQ5quWZr96zPtgAl7GktAii4-RNIqRGvbb4dTdVRJkzAjl7JGgqPGxg0_vaIRIWAp7vtl9eeT6St_cElmlfkN13zQWs4rCXfcbA5xcvdNMkYJyecq2AKUShIk0aMV9PyAYEVa4efyuwZdlgCGfnrGZ-oTRLrzHVpBig" target="_blank" rel="noopener noreferrer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/fix-in-web-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/fix-in-web-light.svg"><img alt="Fix in Web" src="https://cursor.com/fix-in-web.svg"></picture></a>
cursor[bot] (Migrated from github.com) commented 2025-12-19 18:03:25 +00:00

Bug: Urshifu evolution biome missing from array

The evoBiomes array only contains ["RoofedForest"] but the evoCondition text states "Use the Scroll of Darkness in a Dark Oak Biome or Pale Oak Biome". The "Pale Oak" biome is documented as a valid evolution location but is not included in the evoBiomes array, meaning evolution will not work in that biome despite the condition text suggesting it should.

Fix in Cursor Fix in Web

### Bug: Urshifu evolution biome missing from array <!-- **Medium Severity** --> <!-- DESCRIPTION START --> The `evoBiomes` array only contains `["RoofedForest"]` but the `evoCondition` text states "Use the Scroll of Darkness in a Dark Oak Biome or Pale Oak Biome". The "Pale Oak" biome is documented as a valid evolution location but is not included in the `evoBiomes` array, meaning evolution will not work in that biome despite the condition text suggesting it should. <!-- DESCRIPTION END --> <!-- LOCATIONS START data/pokedex.ts#L16761-L16763 LOCATIONS END --> <a href="https://cursor.com/open?data=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImJ1Z2JvdC12MiJ9.eyJ2ZXJzaW9uIjoxLCJ0eXBlIjoiQlVHQk9UX0ZJWF9JTl9DVVJTT1IiLCJkYXRhIjp7InJlZGlzS2V5IjoiYnVnYm90OjhhN2U0YzlkLTY3NGYtNGU2My1iNDU3LTAwNzE2ZDA4ZDM3MiIsImVuY3J5cHRpb25LZXkiOiJCVzNIU045VmFxQnhEcHNfd2xzTFZRak02MTdaaHhydDlfZWhUX3ZaOXFNIiwiYnJhbmNoIjoiaGFuZGxlLW5ldy1ldm9zIn0sImlhdCI6MTc2NjE2NzQwNCwiZXhwIjoxNzY4NzU5NDA0fQ.gzQakZvcmnsp4IssIVzso8qulw0onSyGfBrIMJhIiIRaNLa2fbFo_GYafmnpKbG3J7sCvKtPI1jFbIrNSq7FWV5MGRuH64jpibX8vsckuVMzw3s3loNTGCT8HgyrC5ryc2Uhuu77fmFnOIsvyO4kMWvac7jvKCmuEGZD3ntXMfUvuFTPEhQdIlw1F7xArA1URvwKFslW_YiyuycxUwoRJ-JBArvZ4OnzdTflh1AG2Oy6nEm9q_UWQfxkS3Y4h8Rioo9814vNlRQxWZqSNlerkJSVK9WKK_fUPIaZRdaJuU8Kr59LtzwJzKVhgPu7XpehnyMlQJ1AlumvaDeXYOgiuw" target="_blank" rel="noopener noreferrer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/fix-in-cursor-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/fix-in-cursor-light.svg"><img alt="Fix in Cursor" src="https://cursor.com/fix-in-cursor.svg"></picture></a>&nbsp;<a href="https://cursor.com/agents?data=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImJ1Z2JvdC12MiJ9.eyJ2ZXJzaW9uIjoxLCJ0eXBlIjoiQlVHQk9UX0ZJWF9JTl9XRUIiLCJkYXRhIjp7InJlZGlzS2V5IjoiYnVnYm90OjhhN2U0YzlkLTY3NGYtNGU2My1iNDU3LTAwNzE2ZDA4ZDM3MiIsImVuY3J5cHRpb25LZXkiOiJCVzNIU045VmFxQnhEcHNfd2xzTFZRak02MTdaaHhydDlfZWhUX3ZaOXFNIiwiYnJhbmNoIjoiaGFuZGxlLW5ldy1ldm9zIiwicmVwb093bmVyIjoic21lbGwtb2YtY3VycnkiLCJyZXBvTmFtZSI6InBva2ViZWRyb2NrLXNob3dkb3duIiwicHJOdW1iZXIiOjcsImNvbW1pdFNoYSI6ImRiYjU5ODM5MzE2ODAyNTZlZTU2YmU3NzE0N2I1ODcyMjdiNTlmYTgiLCJwcm92aWRlciI6ImdpdGh1YiJ9LCJpYXQiOjE3NjYxNjc0MDQsImV4cCI6MTc2ODc1OTQwNH0.Ws02EQHXAcx88AD97M96EfdvgIvdiLrbY7L-xDAEcPYr29WUv_TQE09GIW17ddA4lc8latpSMsNhWm1jhAHyiBWY18F9s-BskUW0H68nnlxjY0bpL0aLi3lYi8Qom2KrcFfJ9Y_TpB32Gukda3mvqwNMuh-htnHsIQEEXxPfRSfhNBM74N5ZwJxd2dIfGH9zZdpX54zL9s1N8k1-n_DlVNuR5otHZYUMy6m5LZ3YPAQ5Q69_Fv_S2JaZdl7h6kN0T4YVNqcDEl1spzKTuzEQv3-WK1tIeT2qQFlOZZeDS1Fm5S0kzkbL9VR_qngdD20fR-ZrYInmeIgacrEfHkShYw" target="_blank" rel="noopener noreferrer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/fix-in-web-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/fix-in-web-light.svg"><img alt="Fix in Web" src="https://cursor.com/fix-in-web.svg"></picture></a>
cursor[bot] (Migrated from github.com) commented 2025-12-19 18:03:25 +00:00

Bug: Basculegion-F not updated with new evolution properties

Basculegion (male) was updated to use evoType: "afterBattle" with evoMinRecoilDamage: 294, but Basculegion-F still uses the old evoType: "other" with just evoCondition. Both forms evolve from Basculin-White-Striped under identical conditions (receiving 294+ recoil damage), so Basculegion-F should also be updated to match the male form's new structured evolution properties.

Fix in Cursor Fix in Web

### Bug: Basculegion-F not updated with new evolution properties <!-- **Medium Severity** --> <!-- DESCRIPTION START --> Basculegion (male) was updated to use `evoType: "afterBattle"` with `evoMinRecoilDamage: 294`, but Basculegion-F still uses the old `evoType: "other"` with just `evoCondition`. Both forms evolve from Basculin-White-Striped under identical conditions (receiving 294+ recoil damage), so Basculegion-F should also be updated to match the male form's new structured evolution properties. <!-- DESCRIPTION END --> <!-- LOCATIONS START data/pokedex.ts#L17030-L17033 LOCATIONS END --> <a href="https://cursor.com/open?data=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImJ1Z2JvdC12MiJ9.eyJ2ZXJzaW9uIjoxLCJ0eXBlIjoiQlVHQk9UX0ZJWF9JTl9DVVJTT1IiLCJkYXRhIjp7InJlZGlzS2V5IjoiYnVnYm90OmU3YzY5ZDA1LTAzYzYtNDhlOC05NGJlLTBlNDU4OTE5ODUyYSIsImVuY3J5cHRpb25LZXkiOiJCWFhsbXNiT0txMDZSRHpaWV96WWVBSENtTFhGY1ltRG5nSHJQSGFhU3cwIiwiYnJhbmNoIjoiaGFuZGxlLW5ldy1ldm9zIn0sImlhdCI6MTc2NjE2NzQwNCwiZXhwIjoxNzY4NzU5NDA0fQ.nUeeTS8Qe9jwvX3yipHTWqbmPCP8xN8O9a2nMye7ypOy5TveivLNGvXbSNCrT-gQnqX1rEoxk22sWCDZUJZFxG5XBrwU3KW7Hw2kQ_m981dZ-cN-gfL9dK-bGS-DHoyHxVFUOCx5bDrLx9MstJRxZJGPXAq3YnTWlpYr5rhm-zWW6vEewFodPNbvG7D1m5UsDYL9EFTv30xiks6SxdXGavTg8kT6avl8Pm1pK3yiaNRImGGJ6cQ6xQ6wMBYSH0yPGP6RfGR1S9DOca7GQWuOTq0KNYFnQG6WAbxNKeVeo4_zF8TLjijHp7H5ep4vRGEnsrM8SS_8_s6UNsRtPAhSAw" target="_blank" rel="noopener noreferrer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/fix-in-cursor-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/fix-in-cursor-light.svg"><img alt="Fix in Cursor" src="https://cursor.com/fix-in-cursor.svg"></picture></a>&nbsp;<a href="https://cursor.com/agents?data=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImJ1Z2JvdC12MiJ9.eyJ2ZXJzaW9uIjoxLCJ0eXBlIjoiQlVHQk9UX0ZJWF9JTl9XRUIiLCJkYXRhIjp7InJlZGlzS2V5IjoiYnVnYm90OmU3YzY5ZDA1LTAzYzYtNDhlOC05NGJlLTBlNDU4OTE5ODUyYSIsImVuY3J5cHRpb25LZXkiOiJCWFhsbXNiT0txMDZSRHpaWV96WWVBSENtTFhGY1ltRG5nSHJQSGFhU3cwIiwiYnJhbmNoIjoiaGFuZGxlLW5ldy1ldm9zIiwicmVwb093bmVyIjoic21lbGwtb2YtY3VycnkiLCJyZXBvTmFtZSI6InBva2ViZWRyb2NrLXNob3dkb3duIiwicHJOdW1iZXIiOjcsImNvbW1pdFNoYSI6ImRiYjU5ODM5MzE2ODAyNTZlZTU2YmU3NzE0N2I1ODcyMjdiNTlmYTgiLCJwcm92aWRlciI6ImdpdGh1YiJ9LCJpYXQiOjE3NjYxNjc0MDQsImV4cCI6MTc2ODc1OTQwNH0.bkAnVVOvbQCJB5RuA8NdUr2hgyVSiLTsa-pWmKCK4dLouCEzb6gBDHSSIz693LydjKMbZ6918eMJkkf1dFMxw9kzims9HlcnnwXm6yu71--OCc7mmHNdaSYVwG0H8gQKbrwiFprGZeTCREvDNONrSqEqSRNSZeQdBBDMmfiDThineSH2TTCL0m7PyoQ1psfPvRZdPq99WjfvAMhhn4RPYzt-l-KSFB9-4qOgW76PIm-YibfCYpr9eVhdrzTbYaMcstWEJKxwjPnLCIHE2v7Eoc_yZXrO5NHEnpelrXk4D7hUU_ck1W6uiqOP8nMwFVyE1A2fzpx36Q-kI01gl3y_bA" target="_blank" rel="noopener noreferrer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/fix-in-web-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/fix-in-web-light.svg"><img alt="Fix in Web" src="https://cursor.com/fix-in-web.svg"></picture></a>
copilot-pull-request-reviewer[bot] (Migrated from github.com) reviewed 2025-12-19 18:05:00 +00:00
copilot-pull-request-reviewer[bot] (Migrated from github.com) left a comment

Pull request overview

This PR refactors the Pokemon evolution system to handle new evolution types and conditions specific to the Pokebedrock project. The changes consolidate evolution types (replacing levelHappiness, levelMove, levelExtra, levelHold, levelShed, and steps with more generic types like levelUp) and add new properties to support Minecraft-specific evolution conditions.

  • Simplified evolution type definitions by consolidating multiple specific types into levelUp with accompanying condition properties
  • Added new evolution types (shed, takeStep, changeNickname, afterBattle) and properties (evoMinHappiness, evoWeather, evoMinTakenDamage, evoMinRecoilDamage, evoNickname, evoPartyForms) to support Minecraft-specific mechanics
  • Updated biome references from space-separated format to PascalCase (e.g., "Ice Mountains" → "IceMountains") for consistency with TypeScript naming conventions

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 5 comments.

File Description
sim/dex-species.ts Defines new evolution types and adds evolution-related properties for Minecraft integration (weather, damage tracking, biomes, nicknames)
data/pokedex.ts Updates Pokemon evolution data to use the new simplified evolution type system and adds specific evolution conditions with the new properties

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

## Pull request overview This PR refactors the Pokemon evolution system to handle new evolution types and conditions specific to the Pokebedrock project. The changes consolidate evolution types (replacing `levelHappiness`, `levelMove`, `levelExtra`, `levelHold`, `levelShed`, and `steps` with more generic types like `levelUp`) and add new properties to support Minecraft-specific evolution conditions. - Simplified evolution type definitions by consolidating multiple specific types into `levelUp` with accompanying condition properties - Added new evolution types (`shed`, `takeStep`, `changeNickname`, `afterBattle`) and properties (`evoMinHappiness`, `evoWeather`, `evoMinTakenDamage`, `evoMinRecoilDamage`, `evoNickname`, `evoPartyForms`) to support Minecraft-specific mechanics - Updated biome references from space-separated format to PascalCase (e.g., "Ice Mountains" → "IceMountains") for consistency with TypeScript naming conventions ### Reviewed changes Copilot reviewed 2 out of 2 changed files in this pull request and generated 5 comments. | File | Description | | ---- | ----------- | | sim/dex-species.ts | Defines new evolution types and adds evolution-related properties for Minecraft integration (weather, damage tracking, biomes, nicknames) | | data/pokedex.ts | Updates Pokemon evolution data to use the new simplified evolution type system and adds specific evolution conditions with the new properties | --- 💡 <a href="/smell-of-curry/pokebedrock-showdown/new/master/.github/instructions?filename=*.instructions.md" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Add Copilot custom instructions</a> for smarter, more guided reviews. <a href="https://docs.github.com/en/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Learn how to get started</a>.
copilot-pull-request-reviewer[bot] (Migrated from github.com) commented 2025-12-19 18:04:59 +00:00

The commented evoCondition "during rain" is misleading because the weather is set to "Thunder" (not "Rain"). The comment should either be updated to reflect the correct weather condition or removed if it's intentionally left as outdated information.

The commented evoCondition "during rain" is misleading because the weather is set to "Thunder" (not "Rain"). The comment should either be updated to reflect the correct weather condition or removed if it's intentionally left as outdated information.
copilot-pull-request-reviewer[bot] (Migrated from github.com) commented 2025-12-19 18:04:59 +00:00

Property name inconsistency with codebase naming convention. The property name should be "evoPartyFormes" (with an 'e') to be consistent with the established terminology used throughout this codebase (e.g., "cosmeticFormes", "otherFormes"). This also needs to match the property definition in sim/dex-species.ts.

Property name inconsistency with codebase naming convention. The property name should be "evoPartyFormes" (with an 'e') to be consistent with the established terminology used throughout this codebase (e.g., "cosmeticFormes", "otherFormes"). This also needs to match the property definition in sim/dex-species.ts.
copilot-pull-request-reviewer[bot] (Migrated from github.com) commented 2025-12-19 18:04:59 +00:00

Grammar error in documentation. The phrase "the evolving Pokémon species to evolve" is missing the word "for" or "in order to". It should read "for the evolving Pokémon species to evolve" to be grammatically correct.

Grammar error in documentation. The phrase "the evolving Pokémon species to evolve" is missing the word "for" or "in order to". It should read "for the evolving Pokémon species to evolve" to be grammatically correct.
@ -290,0 +302,4 @@
*/
readonly evoNickname?: string;
/**
* Weather Required for the evolution.
copilot-pull-request-reviewer[bot] (Migrated from github.com) commented 2025-12-19 18:05:00 +00:00

The word "forms" is misspelled as "forms" in the documentation comment. It should be "formes" to be consistent with the terminology used throughout the codebase (as seen in properties like "cosmeticFormes", "otherFormes", etc.).

	 * At least one pokemon with these formes must be present in party for evolution, listed in ID form.
The word "forms" is misspelled as "forms" in the documentation comment. It should be "formes" to be consistent with the terminology used throughout the codebase (as seen in properties like "cosmeticFormes", "otherFormes", etc.). ```suggestion * At least one pokemon with these formes must be present in party for evolution, listed in ID form. ```
@ -290,0 +305,4 @@
* Weather Required for the evolution.
* @pokebedrock
*/
readonly evoWeather?: keyof typeof WeatherType;
copilot-pull-request-reviewer[bot] (Migrated from github.com) commented 2025-12-19 18:05:00 +00:00

Property name inconsistency with codebase naming convention. The property should be named "evoPartyFormes" (with an 'e') to be consistent with other forme-related properties in the codebase such as "cosmeticFormes" and "otherFormes". The term "formes" is the established terminology used throughout this Pokemon codebase.

	 * At least one pokemon with these formes must be present in party for evolution, listed in ID form.
	 * @pokebedrock
	*/
	readonly evoPartyFormes?: string[];
Property name inconsistency with codebase naming convention. The property should be named "evoPartyFormes" (with an 'e') to be consistent with other forme-related properties in the codebase such as "cosmeticFormes" and "otherFormes". The term "formes" is the established terminology used throughout this Pokemon codebase. ```suggestion * At least one pokemon with these formes must be present in party for evolution, listed in ID form. * @pokebedrock */ readonly evoPartyFormes?: string[]; ```

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pokebedrock/pokebedrock-showdown!7
No description provided.