* Added five ability flags
Omitted duplicate flags that are basically "can't copy" (Role Play, Receiver, Entrainment, Skill Swap), didn't bother adding Neutralizing Gas flag,
* Mold Breaker and Trace
* Gastro Acid, Simple Beam, Worry Seed
Decided to keep the Simple Beam/Worry Seed functions
* Entrainment done
* Skill Swap
* Doodle/Role Play + flag descriptions
Also adjusted Doodle test
* Wandering Spirit, Mummy, Neutralizing Gas
Neutralizing Gas really only needs to check for other mons with Neutralizing Gas, otherwise unsuppressable abilities are handled separately.
* Renamed flags
Function no longer has ability to apply effects from moveEffect - for that, seteffectprimary or secondary is now recommended. Removed EFFECT_RAMPAGE, updated a few tests
* Change Ivy Cudgel to be based on Ogerpon form rather than held item
* Update ivy_cudgel.c
* Address reviews
* Update test/battle/move_effect/ivy_cudgel.c
---------
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
Both working by applying an additional effect; added a generic "jumpifnotcurrentmoveargtype" type command to make it possible, relpacing secret power's function
* Check progress in non-battle PARAMETRIZEd tests
* Overworld Script Tests
* Backward-compatible BoxPokemon Refactor
Reuses space that contains zeros to provide space for:
- HP/status in the box
- 12-character nicknames
- Up to 63 PokéBalls
- Shininess separate from PID
- Hidden Nature
- Hyper Training
- Dynamax Level
- Gigantamax Factor
- Terastallization Types
- Shadow
Implements:
- OW_PC_HEAL to switch between Gen7- and Gen8+ behavior
- Nature Mints
- Dynamax Candy
- Hyper Training commands (canhypertrain/hypertrain)
- Gigantamax Factor commands (hasgigantamaxfactor/togglegigantamaxfactor)
- Terastallization Type on the summary screen
- Prevents Gigantamax Factor Pokémon from evolving into a species without a Gigantamax form
* fixup! Backward-compatible BoxPokemon Refactor
* displaydexinfo fix from Jasper
* Adds ability Embody Aspect + minor fix to Hospitality
* comment out failing tests related to neutralizing gas
* fixes neutralizing gas bug
* leftover
* Added missing CannotUseItemsInBattle tests
* Removed individual assumptions for the EFFECT_ITEM_ESCAPE tests and added a single global one
* Added assumption for the move-related EFFECT_ITEM_ESCAPE test
* Moved the Mean Look assumption for consistency with other tests and to be extra safe
Replaced ALWAYS_CRIT with an alwaysCriticalHit flag to account for the fact that in earlier generations, there is no crit stage at which crits are guaranteed. Renamed critBoost to criticalHitStage (at Edu's prompting). Reorder .criticalHitStage defines in battle_moves.h to be aligned with struct order.
* Unified EFFECT_RECOIL
Combined EFFECT_RECOIL_25/33/50/33_STATUS into a single EFFECT; added an extra field to BattleMove 'secondaryData' that contains the franction of HP recoil; argument still holds status effect for Flare Blitz/Volt Tackle
* BattleMove struct change
Added critrate, recoil, multihit fields, made zMove into a union of effect/powerOverride for status/non-status moves respectively. Added new recoil field and zMove field to all moves. To-do: crit rate, multihit
* Critrate field added
Moves use a critRate field instead of a flag - obsoletes EFFECT_ALWAYS_CRIT
* Just a little define
Makes clear that critBoost = 3 means ALWAYS CRIT
* Added a proper recoil field
Just to make it unambiguous and flexible - can finally have a move with 69% recoil.
* Fixed AI damage calculation for multi-strike moves
* Fixes + removed unused effects
* Tests fixes
Two to fix: pass when run in isolation but not when the whole group is run, which is annoying...
* Minor fixes
* Minor tweaks
* Fixed move effects
* recoil tests
---------
Co-authored-by: Alex <alexthenotes@gmail.com>
* Fix Ion Deluge interaction with VoltAbsorb/LightRod
* Use move target all battlers for ion deluge fix
* fix teatime failing
---------
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* Added SpeciesInfo fields
# Conflicts:
# include/pokemon.h
* Added missing comments
* Renamed gigantamax to isGigantamax
* Converted species flags to agbcc bit flags
* Added padding after flags
* Pikachu form config
* Dex text
* Reordered Paradox flag
* Missing Pikachu ifdef comments
* Moved P_GEN_x_POKEMON settings to the species_families file
* Gen 1 Dex entries
* Renamed file to species_enabled.h
* Prevent Pokémon from evolving if their evolution is disabled
* Prevent Pokémon from being affected by Eviolite if their evolution is disabled
* Prevent Pokémon offspring if they're disabled
* Corrected imprementation of evolution prevention
It could potentially overwrite items by accident
* Cross-evo configs
* Gen 2 dex entries
* Changed cry table to use assignable IDs
# Conflicts:
# include/pokemon.h
* Form table pointers
* Beginning support for moving data to gSpeciesInfo
* Pokédexes reads text from gSpeciesInfo
* Reading species names from gSpeciesInfo
* Fixed erroneous copy-paste
* Moved Bulbasaur to Raichu Family data do gSpeciesinfo
* Added female pic sizes
* Macros for Front, Back, Palette and Learnsets
* Sandshrew to Dugtrio Families
* Obtains Height/Weight from gSpeciesInfo
* Read category from gSpeciesInfo
* Removed unused data from pokedex_entries.h
* Moved Gen 1 data to gSpeciesInfo
* Moved Gen 2 data to gSpeciesInfo + fixed Ursaluna Bloodmoon not producing Teddiursa eggs
* Moved Gen 3 data to gSpeciesInfo
* Moved Gen 4 data to gSpeciesInfo
* HGSS dex properly shows form sprites
* Fixed data type for GetSpeciesHeight/Weight
* Reading Pokédex Size data from gSpeciesInfo
* Cleaned up mon graphic decompression function
* Reading Front Pics gSpeciesInfo
* Reading Back Pics gSpeciesInfo
* Updated uses of GetMonSpritePalStruct to allow loading the data directly instead of reading the struct
* Reading palettes from gSpeciesInfo
* Reading animation delay from gSpeciesInfo
* Fixed Pokémon Debug Menu not reading animation delay
* Reading front anim Id from gSpeciesInfo
* Reading back anim Id from gSpeciesInfo
* Reading Animation Frames from gSpeciesInfo
* Reading Icon Sprites from gSpeciesInfo
* Reading Icon Palette IDs from gSpeciesInfo
* Reading Footprints from gSpeciesInfo
* Reading Mon Pic sizes from gSpeciesInfo
* Separate mon pic sizes for female mon
* Reading Level Up Learnsets from gSpeciesInfo
* Reading Teachable Learnsets from gSpeciesInfo
* Reading National Dex Number from gSpeciesInfo
* Reading Enemy Mon Elevation from gSpeciesInfo
* Reading Evolutions from gSpeciesInfo
* Reading form table from gSpeciesInfo
* Fixed button label inconsistency in pokémon debug menu
* Reading form change table from gSpeciesInfo
* Removed need to define mon graphics in include/graphics.h
* Reordered mon graphics by family
* Fixed National dex number offset
* gFrontierBannedSpecies now checks IsSpeciesEnabled
* Added 3 more toggles for Fusions, Primal Reversions and Ultra Burst
* Gen 3 & 4 family toggles for dex entries
* Fixed missing Mr. Rime data
* Gen 1 dex descriptions as compound strings
* Gen 2 dex descriptions as compound strings
* Gen 3 dex descriptions as compound strings
* Gen 4 dex descriptions as compound strings
* Fixed compile in agbcc
* Moved Gen 5 data to gSpeciesInfo
* Using PLACEHOLDER_ANIM_SINGLE_FRAME when needed (same hash)
* Renamed PLACEHOLDER_TWO_FRAME_ANIMATION to PLACEHOLDER_ANIM_TWO_FRAMES
* Fixed capitalization for front pic anims
* Fixed `CanEvolve`
* Moved Gen 6 data to gSpeciesInfo
* Gen 7 without macros
* Gen 8 without macros
* Gen 9 without macros
* Fixed Gen 9 sound data
* Finished moving Gen 7 data in macros (by Alex)
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* Ultra Necrozma is now included in the fusion forms define
* Cries are now properly excluded from the rom when disabling species
* Removed P_GEN_x_POKEMON from form_change_tables.h
* Fixed Yanmega's cry ignoring the P_GEN_4_CROSS_EVOS setting
* Added P_NEW_EVOS_IN_REGIONAL_DEX setting
* Automatic ASSUMPTION_FAIL when used species are disabled
* Finished moving Gen 8 data in macros (by Alex)
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* Expanded Alcremie macro
* Finished moving Gen 9 data in macros (by Alex)
* Fixed missing data for Komala and Marshadow
* Form species id tables use family toggles + added missing Ursaluna form species id table
* Fixed Genesect palettes
* Fixed Flabébé family graphics
* Fixed Minior Graphics
* Fixed missing Calyrex data
* Family toggles in mon graphcis (By Jasper/Bassoonian)
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* Fixed missing Ogerpon data
* Ordered Level Up Learnsets (missing toggles)
Also added White Basculin learnset
* Added more Minior synonyms
* Fixed enamorus order
* Reordered teachable learnsets
* Removed sSpeciesXXX level up learnsets + reordered
* Removed unneeded assumes
* Removed unused extra animations
* Family toggles in mon level up learnsets (By Jasper/Bassoonian)
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* Fixed Phione graphics inclusion
* Family toggles for Teachable Learnsets
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* Ordered Front Pic Anims
* Family toggles for front pic animations
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* Fixed HGSS dex incorrectly showing the wrong mon when catching it
* Family toggles for Egg Moves + reodered
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* Fixed HGSS not checking for null footprints
* Review changes
* Fixed Female difference mon not using their macros
* Fixed Alcremie Macro
* Fixed compile error when disabling the Bulbasaur family
* Fixed Turtwig and Chimchar family + Houndour and Mareep cries not being excluded properly
* Re-added missing Egg graphical data
* Fixed crash during the Birch Intro when Lotad is disabled
* Renamed PALLETE to PALETTES
* Removed extra spacing for YOffsets
* Fixed compile when only disabling cross-gen evolutions
* Added Tera Forms define (Ogerpon and Terapagos)
* Fixed Necrozma macro
* Removed .noFlip = FALSE
* Fixed dex number in summary screen for forms when nat dex is disabled
* Fixed Paldean form paths
---------
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* Chilly Reception Effect
* Wrap Chilling Reception Message Better
* Animation & Some Testing
* Remove Wimp Out cases from Chilly Reception tests
* Animation tweaks
* Battle Script Updates
* Created CheckPrimalWeather macro for Weather Effects
* Updated Chilly Reception logic to switch even if weather doesn't change
Testing Updates
* Fixed test: Move does not animate if weather fails to change
* Remove snow animation check during failure path test
* * Fix indentation
* Move Chilly Reception animation to always play (even when weather change fails)
* Updates to MoveSwitch and PartingShot to get closer to original logic
* Update BattleScript_EffectChillyReception logic
* * Move CHILLY_RECEPTION animation
* Test updates
* Fix Chilly Reception MESSAGE checks
---------
Co-authored-by: Patrick Curran <rapidnutcracker@gmail.com>
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* Applied Alex's fix for ABILITYEFFECT_TRACE
* Added Trace tests written by Alex/Rainonline
* Updated Trace's target-choosing capabilities and added a double battle test for it
Credits to Alex/Rainonline.
* Removed 2 of the 3 'Trace on opponent's switch-in' tests
* Added another Trace test
* Consider Encore / lowered stats / hazards
* Fix poorly thought out Return FALSE
* Incorporate Egg's feedback
* Tests for hazards and stats, and some fixes
---------
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* Adds combined pledge move effects
* added pledge status and various other fixes
* leftover
* fix triple arrow test tag
* pledge moves can not be redirected by absorbing abilities
* more pledge changes
* remove duplicate test
* Stab boost, Rainbow anim and new SeaOfFire anim
* leftover
---------
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* Adds Raging Bull and various fixes
* fix compiling on abgcc
* syrup bomb anim fix
* sticky syrup anim in link battles
* fix sticky syrup in link battles
* fix battler index
---------
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* Adds Glaive Rush
* Fixes: Glaive Rush status is removed until users next turn
* Glaive Rush no affect
* simplify glaive rush script
* simlify script further
* leftover
* Fix Plasma Fists and Relic Song + tests
* Callnative for Plasma Fists
* Use Status Field Ion Deludge for Plasma Fists
* add assumes for flinch_status
---------
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* Added Embargo battle tests
* Expanded Embargo doesn't prevent Primal Reversion to avoid CI failure
* Applied corrections to some of the Embargo tests
* SwitchAI makes much smarter mon choices
* Add HasHadOdds check to ShouldSwitch decision
* Remove early return
* Rework Baton Pass check as per discussion with Alex
* Forgot to adjust a comment
* Don't program before breakfast lol (if / else if fix)
* Switch AI_CalcDamage for AI_DATA->simulatedDmg in HasBadOdds
Thanks Alex! :D
* Typo in a hitToKO comparison
* Remove and replace AI_CalcPartyMonBestMoveDamage and IsAiPartyMonOHKOBy from https://github.com/rh-hideout/pokeemerald-expansion/pull/3146
See https://discord.com/channels/419213663107416084/1144447521960251472 for details
* Major refactor, new struct, switchin considers damage / healing from hazards / status / held item / weather
* Forgot Snow exists and heals Ice Body, haven't played Switch games lol
* (766a1a27a7) Compatibility, use new struct field instead of function call
* Fixing oversight from previous upstream merge
* Improve TSpikes handling to make GetSwitchinHazardDamage more applicable
Small fixes:
- EFFECT_EXPLOSION typo (!= to ==)
- Order of if statements near bestResistEffective
- Spacing of terms in big HasBadOdds if statements
* Forgot to uncomment blocks disabled for debugging what turned out to be vanilla behaviour lol
* Remove another holdover from debugging, sorry :/
* Lastly, undoing my debug trainer
* Type matchup based on species type rather than current type
Suggested by BLourenco on Discord, the idea is that a mon that's had its type affected by a move like Soak will still have moves as though it was its regular typing, and so prioritizing the temporary typing wouldn't be ideal.
https://discord.com/channels/419213663107416084/1144447521960251472/1146644578141736970
* gActiveBattler upcoming merge fixes
* Egg changes part 1
* Egg changes part 2, just need to address EWRAM still
* Move SwitchinCandidate struct to AiLogicData
* Consider Steel type when checking TSpikes
* Comment about CanBePoisoned compatibility
* Changes for Egg's 2nd review
* Put period back in comment, whoops lol
* Latest upcoming merge fixes
* Missed a few u32 updates
* Combine GetBestMonIntegrate functions / flags, some modularization
* Fix merge error
* Make modern fixes
* Two tests done, two to go
* Accidentally pushed reference test, removing it
* Type matchup switching tests
* Tests for defensive vs offense switches
---------
Co-authored-by: DizzyEggg <jajkodizzy@wp.pl>
* tests for intimidate defiant
* sheer force fix + tests
* white herb tests
* tests for stealth rock, weak armor and last resort fix
* style changes to weak armor test
* Made Reflect Type handle 3rd types
Misc:
-Turned VARIOUS_TRY_REFLECT_TYPE into a callnative (BS_TryReflectType)
-Introduced a macro to to check for typeless Pokémon (Pokémon who have Mystery in all 3 type slots) in battle.
-Made the new BS_TryReflectType take into account the forms for Arceus and Silvally, rather than just their default form.
* Fixed duplicated test names
* Test improvements for Jaboca, Kee and Rowap Berries
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* Lansat Berry test improvements
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* Jaboca Berry/Bug Bite interaction test
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
---------
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* Fixes Salt Cure visual bug if mon fainted by direct attack
* Removes duplicate give all tm/hms in the debug menu
* test
* Revert "Removes duplicate give all tm/hms in the debug menu"
This reverts commit 4e80451d6f.
* Fixed Roost clearing type3 when used by a pure Flying-type. (Gen 5+)
* Created a test file for Roost.
* Marked tests as TODO for now.
* Added more tests for HP healed and type changing.
* Created a function to handle Roost's Flying suppression when getting a battler's type. Added more tests.
* Added test for not-yet-aquired Flying-type. Fixed/rewrote some other tests.
* Now using GetBattlerType() in most relevant places. Fixed some tests.
* Added tests for interactions between Roost and Delta Stream, type-changing effects, Grassy Terrain healing, Levitate, Air Balloon, Magnet Rise, and Telekinesis.
* Added test for interaction between Roost and Reflect Type.
* Gen 4 tests merged with Gen 5+ tests.
* Removed errant space.
Co-authored-by: LOuroboros <lunosouroboros@gmail.com>
---------
Co-authored-by: LOuroboros <lunosouroboros@gmail.com>