Port the remaining effect commands and AI_Smart_EffectHandlers; unsupported effects are still refused. Includes Kurt's balls, Park and Safari balls and special battle types.
Complete through 8fae1f0 (pushed to main on 2026-10-03):
Multi-hit and special-damage effects.
Moves spanning several turns; status and field effects.
Weather, Substitute, Transform, Mimic, called moves, Conversion/Conversion2, Sketch, Baton Pass, Roar/Whirlwind and Teleport. Every move's effect script has a handler; explicit unsafe edge cases remain refused.
Smoke Ball, Metal Powder, MysteryBerry, Berserk Gene and the unused held stat-raising effects; trainer berry consumption persists in the stored party.
Exp. Share participant/holder awards and stat experience.
Traded Pokemon obedience using Johto badges.
Remaining AI_Smart_EffectHandlers (77704fe; 6,024 emulator states per browser match the original AI_Smart).
Kurt's balls and the Park Ball's multiplier (b547ca2; 6,153 emulator catch states per browser). Heavy Ball refused for Kadabra/Sunflora, whose original read runs into VRAM. There is no Safari Ball item in Crystal.
Special battle types (8fae1f0): forced shiny, trap, forced item, Celebi, Suicune, roaming (struct DVs/HP, CleanUpBattleRAM's roaming roll) and the Bug-Catching Contest (PARKBALL× menu, Park Ball count, contest catch and switch screen, out-of-balls end, contest encounters through BugCatchingContestBattleScript). Scripts load the special types with loadvar VAR_BATTLETYPE.
Validation: 576 unit tests passed (3 skipped); without the private ROM, 136 passed and 443 skipped. Chromium/WebKit: 149 passed, 19 intentional skips. Native/reference builds and reference/vendor/release checks passed. Metal Powder matched the unmodified original routine across 320 cases per browser. Other new held-item, experience and obedience paths have local unit coverage and source review. No CI or physical-device validation.
Remaining boundaries also include Unown generation, Beat Up with Eggs, Johto badge stat boosts, and original routines that overrun move lists or loop indefinitely. The badge implementation above covers obedience. Card remains En cours.
Final validation (8fae1f0): 596 unit tests passed (3 skipped); without the private ROM 141 passed and 458 skipped. Chromium/WebKit: 155 passed, 19 intentional skips, including the Smart AI (6,024 states), Kurt's balls (6,153 states) emulator comparisons and the contest menu/switch screen. Builds and reference/vendor/release checks passed. No CI or physical-device validation.
Left for the map cards: National Park's contest event (registration, timer, judging; the contest state is runtime-only), the Burned Tower roaming release and roaming encounters (UpdateRoamMons/JumpRoamMons), and the Ilex Forest Celebi event (CelebiShrineEvent, CheckCaughtCelebi). Still refused: Unown encounters, Beat Up with Eggs, Heavy Ball against Kadabra/Sunflora, and original routines that loop forever or run off a move list.
Port the remaining effect commands and `AI_Smart_EffectHandlers`; unsupported effects are still refused. Includes Kurt's balls, Park and Safari balls and special battle types.
Commits: 9e0a2cd, c53edb7, 8f5b464, 32d736e, 77704fe, b547ca2, 8fae1f0
Complete through 8fae1f0 (pushed to main on 2026-10-03):
- [x] Multi-hit and special-damage effects.
- [x] Moves spanning several turns; status and field effects.
- [x] Weather, Substitute, Transform, Mimic, called moves, Conversion/Conversion2, Sketch, Baton Pass, Roar/Whirlwind and Teleport. Every move's effect script has a handler; explicit unsafe edge cases remain refused.
- [x] Smoke Ball, Metal Powder, MysteryBerry, Berserk Gene and the unused held stat-raising effects; trainer berry consumption persists in the stored party.
- [x] Exp. Share participant/holder awards and stat experience.
- [x] Traded Pokemon obedience using Johto badges.
- [x] Remaining AI_Smart_EffectHandlers (77704fe; 6,024 emulator states per browser match the original AI_Smart).
- [x] Kurt's balls and the Park Ball's multiplier (b547ca2; 6,153 emulator catch states per browser). Heavy Ball refused for Kadabra/Sunflora, whose original read runs into VRAM. There is no Safari Ball item in Crystal.
- [x] Special battle types (8fae1f0): forced shiny, trap, forced item, Celebi, Suicune, roaming (struct DVs/HP, CleanUpBattleRAM's roaming roll) and the Bug-Catching Contest (PARKBALL× menu, Park Ball count, contest catch and switch screen, out-of-balls end, contest encounters through BugCatchingContestBattleScript). Scripts load the special types with loadvar VAR_BATTLETYPE.
Validation: 576 unit tests passed (3 skipped); without the private ROM, 136 passed and 443 skipped. Chromium/WebKit: 149 passed, 19 intentional skips. Native/reference builds and reference/vendor/release checks passed. Metal Powder matched the unmodified original routine across 320 cases per browser. Other new held-item, experience and obedience paths have local unit coverage and source review. No CI or physical-device validation.
Remaining boundaries also include Unown generation, Beat Up with Eggs, Johto badge stat boosts, and original routines that overrun move lists or loop indefinitely. The badge implementation above covers obedience. Card remains En cours.
Final validation (8fae1f0): 596 unit tests passed (3 skipped); without the private ROM 141 passed and 458 skipped. Chromium/WebKit: 155 passed, 19 intentional skips, including the Smart AI (6,024 states), Kurt's balls (6,153 states) emulator comparisons and the contest menu/switch screen. Builds and reference/vendor/release checks passed. No CI or physical-device validation.
Left for the map cards: National Park's contest event (registration, timer, judging; the contest state is runtime-only), the Burned Tower roaming release and roaming encounters (UpdateRoamMons/JumpRoamMons), and the Ilex Forest Celebi event (CelebiShrineEvent, CheckCaughtCelebi). Still refused: Unown encounters, Beat Up with Eggs, Heavy Ball against Kadabra/Sunflora, and original routines that loop forever or run off a move list.
kawa
added this to the Pokemon Crystal - Web project 2026-10-01 11:36:30 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Port the remaining effect commands and
AI_Smart_EffectHandlers; unsupported effects are still refused. Includes Kurt's balls, Park and Safari balls and special battle types.Commits:
9e0a2cd,c53edb7,8f5b464,32d736e,77704fe,b547ca2,8fae1f0Complete through
8fae1f0(pushed to main on 2026-10-03):8fae1f0): forced shiny, trap, forced item, Celebi, Suicune, roaming (struct DVs/HP, CleanUpBattleRAM's roaming roll) and the Bug-Catching Contest (PARKBALL× menu, Park Ball count, contest catch and switch screen, out-of-balls end, contest encounters through BugCatchingContestBattleScript). Scripts load the special types with loadvar VAR_BATTLETYPE.Validation: 576 unit tests passed (3 skipped); without the private ROM, 136 passed and 443 skipped. Chromium/WebKit: 149 passed, 19 intentional skips. Native/reference builds and reference/vendor/release checks passed. Metal Powder matched the unmodified original routine across 320 cases per browser. Other new held-item, experience and obedience paths have local unit coverage and source review. No CI or physical-device validation.
Remaining boundaries also include Unown generation, Beat Up with Eggs, Johto badge stat boosts, and original routines that overrun move lists or loop indefinitely. The badge implementation above covers obedience. Card remains En cours.
Final validation (
8fae1f0): 596 unit tests passed (3 skipped); without the private ROM 141 passed and 458 skipped. Chromium/WebKit: 155 passed, 19 intentional skips, including the Smart AI (6,024 states), Kurt's balls (6,153 states) emulator comparisons and the contest menu/switch screen. Builds and reference/vendor/release checks passed. No CI or physical-device validation.Left for the map cards: National Park's contest event (registration, timer, judging; the contest state is runtime-only), the Burned Tower roaming release and roaming encounters (UpdateRoamMons/JumpRoamMons), and the Ilex Forest Celebi event (CelebiShrineEvent, CheckCaughtCelebi). Still refused: Unown encounters, Beat Up with Eggs, Heavy Ball against Kadabra/Sunflora, and original routines that loop forever or run off a move list.