* First attempt at a port
* Slightly broken but working
* Got images working and opponent palettes
* half finished compressed spritesheet approach instead
* fix the palettes (smh)
* fix hflip, and a lot of clean-up
* Add B_SHOW_TYPES
* Got Illusion working
* Add num type enum
* Updated function to get type
* Fixed type icon position and cleaned up functions
* Updated illusions and Tera handling
* Added BATTLE_TYPE_IS_SINGLE and DOUBLE
* Removed IS_BATTLE_TYPE_SINGLE
* Implemented BATTLE_TYPE_IS_DOUBLE across repo
* Removed SIDE macro
* Updated config
* Deprecated battler alive macro
* Reindented file
* Added exceptions for 2v1
* Replaced Fainted check with Null check
* Added functionality for only types of caught mons
* UseDoubleBattleCoords updated
* Added ShouldFlipTypeIcon
* Renamed TryLoadTypeIcon
* Refactored functions
* Refactored functions
* Refactored functions
* Refactored functions
* Renamed SEEN to CAUGHT
* Reset config
* Added useSecondPalette and isOrdinary to gTypesInfo
* Further simplified secondPalette and isOrdinary
* Changed isordinary to isSpecialCase
* Renamed to useSecondTypeIconPalette
* Fixed Stellar type interactions
* fixed spacing
* fixed include/config/battle.h
* fixed
* fixed include/config/general.h
* changed type1 and type2
* Moved IsDoubleBattle to include.battle.h
Removed BATTLE_TYPE_IS_DOUBLE
Removed IS_DOUBLE_BATTLE
* Changed IsBattlerFainted to IsBattlerAlive
* Removed IsBattlerNull
* Moved GetBattlerData to be inline
* Renamed GetMonDefensiveTeraType
* Removed IsIllusionActive
* Fixed identation
* found one last isDoubleBattle hold out
* fixed redundant brackets
* Fixed spacing for B_SHOW_TYPES
* Update src/battle_script_commands.c
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* Fixed padding
* Reindent file and refactored GetTypeIconHideMovement
* Update include/data.h
---------
Co-authored-by: RavePossum <ravepossum@proton.me>
Co-authored-by: Frank <fdeblasio1004@gmail.com>
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* Dynamic Hidden Power Types
* Dynamic Ivy Cudgel is summary screens
* Dynamic Move types
* missed unnecessary comment that got left in
* format cleanup, return cleanup, added Tera Blast and Tera Starstorm, Revelation dance fix-> now displays live type update when tera is selected during battle before move selection
* forgot to revert config defaults
* Update src/pokemon.c
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* if block spaces/ raging bull fix/ more condensing on checks/ reallocating config check/ tera blast fix (was displaying tera blast type on non tera'd mons in party when battler was tera'd)
* revert configs
* added Hail check to Weather Ball
* Fixed agbcc compile/brackets/u32 changes
* Quick fix to ensure Judgment/Techno Blast/Natural Gift are not affected by -ate abilities
* Update src/pokemon_summary_screen.c
---------
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* Change GET_MOVE_TYPE to a function
* add in battle check to GetMoveType function, move it to battle_util.c
* Update src/battle_util.c
Co-authored-by: Eduardo Quezada <eduardo602002@gmail.com>
* Update src/battle_util.c
---------
Co-authored-by: Eduardo Quezada <eduardo602002@gmail.com>
* Fix speed ties
* fixup! Fix speed ties
* fixup! Fix speed ties
* fixup! fixup! Fix speed ties
* fixup! Fix speed ties
* Workaround for Comatose-Ditto interaction
* Filename in list (no proper sorting yet)
* Line number and message in error list + removed sorting
* Style adjustment
* Added missing file/line number to "expected N passes/successes"
* Fixed Known Failing Passing test list
* Separated test list from totals
* Assumption fails list
* Better names
* Filename for KNOWN_FAILINGs passing
* Moved total back to the bottom
* Spaces correction
* Fixed test list count
* Source file for Alloc fails on tests
* Moved sourceLine from BattleTest to Test struct
* Fixed assumptions failed "and more" counter
* Fixed ASSUMPTION block not printing their line numbers
* Fixed when stopLine is printed
* Renamed stopLine to failedAssumptionsBlockLine
* Replace Opportunist todo tests with proper tests
* add failing test
* desc
* Fixes to Opportunist and Mirror Herb adjustments
* more tests
* some fixes
* first turn events switch
* simple enum + revert test desc
* Smarter Focus Punch
* Smarter Substitute, review feedback
* Use HasAnyKnownMove instead of isFirstTurn
* When are we removing agbcc again
* Use HasMoveEffect
* Refactors damage non types
* correction
* Refactor weather damage script
* new line
* correction
* there was a hail test already
* ndebug
* add sandstorm test
* Update src/battle_script_commands.c
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
---------
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* Added GetMaxNumMoneyDigits and GetMoneyBoxHorizontalPosition to header
Replaced use of PrintMoneyAmount
* Added define for MAX_MONEY_DIGITS
Removed GetMaxNumMoneyDigits
Converted uses of ConvertIntToDecimalStringN that called for 7 money digits to use MAX_MONEY_DIGITS
Replaced 6 money digits in PrintMoneyAmount with MAX_MONEY_DIGITS
* Use preproc and MAX_MONEY_DIGITS to increase the width of the sell item money box
* Added GetItemSoldMoneyHorizonalPosition and fixed ConvertInt in PrintMoneyAmount to use MAX_MONEY_DIGITS
* Added GetItemSoldMoneyHorizonalPosition and fixed ConvertInt in PrintMoneyAmount to use MAX_MONEY_DIGITS
* Removed width and tilemap changes
* Modified CountDigits to count digits greater than 1
Fixed PrintMoneyAmount to work with large digits
* Added an early return to PrependFontIdToFit
* First prototype working
* Updated GetMoneyBoxHorizontalPosition with amount
* Updated GetMoneyBoxHorizontalPosition with amount
* Got version working with one space before
* Got version working with one space before
* Got version working with all spacingOC
* cleaned up PrintMoneyAmount
* Created CalculateleadingSpacesForMoney
* Cleaned up for PR
* Changed tabs to spaces per https://github.com/rh-hideout/pokeemerald-expansion/pull/4943\#issuecomment-2223023365
* dynamic ai func
* add AI_TagBattlePreferFoe as an example
* Update src/battle_ai_main.c
* Update src/battle_ai_main.c
---------
Co-authored-by: ghoulslash <pokevoyager0@gmail.com>
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* Added config to prevent unobtainable Pokemon from being shiny
* Added config for disabling shinies if the player has no Poke Balls
* Removed check for adventure started flag
* consolidated gimmick checks, triggers, communication, and activation; updated test runner
* fixed improper use of .usableGimmick
* cleaning up battle_dynamax.c, changing function args to u32s
* fixed '#ifdef TESTING' causing errors
* updated z-moves to use gimmick interface, pared down redundancies; no AI/tests
* added support for z-moves in tests, consolidated gimmick fields
* removed ShouldUseMaxMove and .usingMaxMove
* renamed TryChangeZIndicator, updated z move display
* added several z-move tests and fixed various z-move interactions; fixed z-move category calc
* fixed useless battler arg in GetTypeBasedZMove
* added basic test check for bad Z-Move or Mega usage
* reworked test runner gimmick functionality; added support for Ultra Burst + Z-Move to test Light That Burns the Sky
* fixed gimmick test logic; fixed damage category override
* fixed mega rayquaza test fail
* consolidated gimmick indicator logic; added graphics to gGimmicksInfo
* removed TeraData struct
* reimplemented AI logic for Z-Moves; no changes
* updated Z-Move and Ultra Burst trigger gfx
* added testrunner check for multiple gimmick use
* fixed duplicate z-move call in test
* reorganized data/graphics/gimmicks.h
* added signature Z-Move ability tests; implemented Guardian of Alola
* fixed bad test update
* fixed Thousand Arrows not affecting Tera Flying; clean-up
* fixed -ate tests
* fixed tera tests
* fixed tera tests really
* fixed last batch of tests
* fixed -ate mega test again
* code review
* code review pt.2
* tweaked CanTera again
* dynamax flag only required for player
* Split Pokémon Object Events from Following Pokémon functionality
* Renamed follower pngs and palettes
* Define renames
* Reorder configs
* Renaming: SpeciesInfo fields, macros and palettes.
* add createmon and setwilddoubleflag script cmds to support createing mons at given player or enemy slots and setting up 2v1 battles
* give givemon macro PARTY_SIZE for tests
* style fixes
* add createmon test
---------
Co-authored-by: ghoulslash <pokevoyager0@gmail.com>
* improved Surf/Thunderbolt test that previously relied on correct AI guess
* remove unnecessary mod
* fixed infinite rng loop
* wrong ability num and readability
* Update src/battle_ai_util.c
---------
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* AI uses safest option to faint foes
* dont calculate non crit dmg unless it's needed
* struct SimulatedDamage
* add GetDamageByRollType and name DamageRollType
* Parametrize test AI flags
* use simDamage member's instead of dmg & minDmg
* newer generation soundproof heal bell interactions
* Fix bugs and rewrite AnyPartyMemberStatused
* add missing check, tests, clean up
* fix ai code and rename battler for clarity
* Add FORM_CHANGE_BATTLE_TERASTALLIZATION and allow species to force tera types
* Fix form change not changing tera type
* Update form_species_tables.h
* Address reviews
* Can't change the forced Tera Type anymore
* Revert "Can't change the forced Tera Type anymore"
This reverts commit 67157250efeaf5ffefc45ac1955b09f27f09788b.
* Fix a lot of things
* Oops
* Update pokemon.h
* Update pokemon.h
* Address reviews
* Update tera_starstorm.c
* Update test/battle/gimmick/terastal.c
---------
Co-authored-by: Eduardo Quezada <eduardo602002@gmail.com>
* fix getboxmondata for evolutiontracker if compiled with agbcc
* refactored move animation scripts as part of gMovesInfo
* migration script for move anims
* default animation, migration for battle_anim_scripts.s
* added warning for missing animation
* add include to migration
* add struct member in migration script
* removed include and struct member from migration script
---------
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* Set TYPE_MYSTERY as type 0
* Remove redundant TYPE_NONE
* Moved Gen 1-3 type damage categories to gTypesInfo
* Set TYPE_NONE as 0 instead
* Grouped type info to a single file
* Fixed sTypeEffectivenessTable static name
* Adjusted MON_DATA_TERA_TYPE to account for shift in type IDs
* oops, missed the extern
* Moved Tera Type RGB values to gTypesInfo
* Fixed Tera Type test
* Added option test feature to set IVs
* Hidden Power type test
* Tera Type safeguard in givemon
* Removed isHiddenPowerType for a future PR that refactors Hidden Power
* Review changes
* Port xaman move desc to modern expansion
* Fix modern compiler error
* Fix compliling + EFFECT_PLACEHOLDER support
* Change to L-button to avoid conflict with Mega Evolution
* Reorder and change priority to category
* add sprite for move category icon, declare category icon sprite data extern
* remove static category icon sprite data from hgss dex for global data
* Change to else if
---------
Co-authored-by: Pawkkie <moog272@gmail.com>
Co-authored-by: RavePossum <ravepossum@proton.me>
* add saveattacker/savetarget stack
* add safety checks to savedAttackerCount/savedTargetCount
* add testing warnings for saveattacker/savetarget
* update frisk with saveattacker
* restoretarget at end of red card battle scripts, remove testing checks on SaveAttacker,SaveTarget
---------
Co-authored-by: ghoulslash <pokevoyager0@gmail.com>
* #defines for damage roll bounds
* Risky AI behavior implemented
* Ignore score penalty to EFFECT_RECOIL_IF_MISS moves if accuracy has been lowered
* Adjust score defines
* EFFECT_MIND_BLOWN
* Use GetBestDmgMoveFromBattler instead of AI_CompareDamagingMoves
* Damage roll selection and AI_FLAG_CONSERVATIVE
* Clarify enum names
* Simplify AverageRollDmg line
* Change u8s to u32s
* Turns out Boomburst does a lot of damage lol
* Spacing
* Belch scoring fix and test
* Add assumptions for pocket
* Update test to AI_SINGLE_BATTLE_TEST
* Alex's fixes
* Missed reverting a line
* Mucked up spacing mb
* Mucked up the spacing fix mb MB
* fix getboxmondata for evolutiontracker if compiled with agbcc
* fixed full restore curing status condition when used in battle on party member with missing hp
added more full restore tests
* formatting, removed unused
* move restorebattlerdata out of Ai_CalcDmg
* fix SetBattlerdata calls
* add saved field to struct AI_SavedBattleMon to prevent overwriting saved mon info
* AI_CalcPartyMonDamage set opposing battler known data
---------
Co-authored-by: ghoulslash <pokevoyager0@gmail.com>
* stat stage related AI fixes
* add more ai fixes and 2 tests
* use legal ability in tests
* Fix test and remove mold breaker check
* Use DoesBattlerIgnoreAbilityChecks
* Fixes Costar, Zero to Hero, Supreme Overlord and Ruin abilities' switch-in messages
* Fixed typo in Supreme Overlord's String Id
* Fixes spacing in battle_string_ids.h
* Split isLegendary into isRestrictedLegendary and isSubLegendary
* Address reviews and fix build
* Update frontier_util.c
* Remove gFrontierBannedSpecies , fast edition
* Sped up name generation
* More speed up
* Split Frontier restriction into its own flag
* Mythicals shouldn't be banned always anymore
* u32
---------
Co-authored-by: Eduardo Quezada <eduardo602002@gmail.com>
In the Pokémon Storage System, even FONT_SMALL_NARROWER isn't sufficient
to prevent clipping in all cases. e.g. Unremarkable Teacup clips. We
have decided to accept that cost to make the rest of the user experience
better, but downstream projects that don't like that trade-off can
either a) alter the Pokémon Storage System UI, or b) set
I_EXPANDED_ITEM_NAMES to FALSE.
In contests, even FONT_NARROWER isn't sufficient to prevent clipping in
all cases. e.g. Stomping Tantrum clips. We have decided to accept that
cost to make the rest of the user experience better, but downstream
projects that don't like that trade-off can either a) alter the contest
UI, or b) set B_EXPANDED_MOVE_NAMES to FALSE.
PARAMETRIZE_LABEL is like PARAMETRIZE, except that it allows the user to
provide a label which will be displayed in the test name line. This is
useful for tracking _which_ PARAMETRIZE case failed in the situation
where the numbers are unwieldy.
* wrote foundational terastal tests
* implemented baseline test-only Tera functionality; modified GetBattlerType + STAB calculations, misc. changes to some moves
* added tests and func. for Stellar type, more tests for Tera Blast
* more tests for Stellar type, Conversion fixes, Color Change + Conversion2 future proof
* implemented tera blast, expanded stellar type func., fixed tests
* last set of Tera/Tera Blast tests for checklist, protean fix
* implemented in-battle Terastallization, WIP stellar indicator and tera animation
* fixed bad merge
* expanded NUMBER_OF_MON_TYPES, cut down on TYPE_STELLAR hackiness, added Stellar type to summary
* fixed type indicators
* added tera logic to AI
* implemented code review changes, added B_TERA_ORB_NO_COST
* updated AI to calc damage with Tera when applicable; minor rework to AI gimmick handling
* fixed Tera Blast split choice occuring when not Terastallized
* fixed Tera Blast using Last Respects BP calcs
* added tera type to TrainerMon, code review tweaks
* Implemented chain fishing
* Added configs
* I_FISHING_MINIGAME implemented
* Refactored Check For Bite
* CLeaned up version of metatile checks
* Removed debug script
* Added helper functinons
* Cleaned up CalculateFishingProximityOdds
* Added new constatnts for cardinal direction and axis
* Updated with constants
* Reordered functions
* Cleaned up some functions
* Moved constants
* Created UpdateChainFishingSpeciesAndStreak
When 3 sides are blocked, every cast will get a mon
* Created DoesFishingMinigameAllowCancel
* Removed fishing chain check
* Fixed bug where streak was not incremented correctly
Fixed bug where Land was not properly counted
Fixed bug where streak was always being read as maxed
* Updated variable and function names
* Updated variable and function names
* Moved UpdateChainFishingSpeciesAndStreak to happen before shiny rolls occur
* Removed debug statements
* Applied feedback from https://github.com/rh-hideout/pokeemerald-expansion/pull/4343\#discussion_r1551278416
* Fixed default item config and changed gChainFishingDexNavStreak and sLastFishingSpecies to only use EWRAM when features are enabled
* Update include/config/item.h
Include feedback from https://github.com/rh-hideout/pokeemerald-expansion/pull/4343#discussion_r1567145660
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* Changed Dexnav to DexNav per https://github.com/rh-hideout/pokeemerald-expansion/pull/4343\#discussion_r1567145660
---------
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* Added first working version
* Fixed spacing and set config to false
* Update src/overworld.c
Updated spacing per https://github.com/rh-hideout/pokeemerald-expansion/pull/4370#discussion_r1555917636
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
---------
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
$ python3 migration_scripts/convert_parties.py src/data/trainers.h src/data/trainer_parties.h src/data/npc_trainers.party
Is available to convert Trainer Control-formatted trainers/parties into
Competitive-formatted ones.
Multiple '#include's can be placed in the trainer section of src/data.c
to support spreading the trainers across multiple .party files.
trainerproc does not interpret the values, leaving that job to the C
compiler, so we use '#line' to associate those errors with the lines in
the .party file(s). Because the columns don't make sense we use
-fno-show-column and -fno-diagostics-show-caret. We might want to move
gTrainers into its own file so that the rest of src/data.c isn't
affected by those flags.
Extensions (misfeatures, imo):
- .party files are passed through cpp, so '#define's are supported, and so
are '// ...' and '/* ... */' comments.
- .party files also support writing, e.g. 'SPECIES_PIKACHU' instead of
'Pikachu'. This allows people to write constants explicitly if they
like.
Pragmas:
- '#pragma trainerproc ivs explicit' requires an explicit 'IVs:' line
rather than defaulting to 31s.
- '#pragma trainerproc ivs <IVs>' changes the default IVs.
- '#pragma trainerproc level explicit' requires an explicit 'Level:'
line rather than defaulting to 100.
- '#pragma trainerproc level <level>' changes the default level.
Co-authored-by: Eduardo Quezada <eduardo602002@gmail.com>
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* more customization to struct FacilityMon, remove facility item ids, convert vanilla data, add CreateFacilityMon universal function
* fix some unused vars
* use TrainerMon struct instead of FacilityMon
* add dynamaxLevel, gigantamaxFactor to CreateFacilityMon
* some struct TrainerMon documentation
---------
Co-authored-by: ghoulslash <pokevoyager0@gmail.com>
* Absolute IDs
* Mothim internal forms
* Scatterbug/Spewpa internal forms
* Fixed Mothim not having form tables
* Totem Alolan Raticate
* Moved shared dex text to its own folder
* Totem Mimikyu
* Added missing empty third-ability fields
* Totem Gumshoos + missing totem flags
* Renamed files to better match their contents
* Fixed Disguise on Totem Mimikyu
* Totem Vikavolt/Alolan Marowak + missing Gumshoos form table
* Totem Ribombee/Araquanid/Lurantis/Salazzle
* Totem Togedemaru/Kommo-O
* Partner Pikachu/Eevee
* Reintroduced shinyLocked species flag for convenience
* Revert "Reintroduced shinyLocked species flag for convenience"
This reverts commit 3e07bd378ba6a249effe0aed83a424d0c775f236.
* Moved BERRY_MUTATION_CHANCE to include/config/overworld.h and renamed it to OW_BERRY_MUTATION_CHANCE
* Move level_caps.h to config folder
* Multiple EV/IV refered as EVs/IVs
* Disabled decap by default
* Level up learnsetst comments
* Moved gTypeNames into gTypes
* Added invalid move text to struct
* Added max move to struct
* Added icon palette to struct
* Added macros for invalid and max moves
* Swapped palette and max move order
* Renamed invalid to generic
* Renamed invalid to generic in struct definition
* Added zMoves and items to type struct
* Addressed comments
* Incorporated newer comments
* Updated comment format
* Lvl up learnsets by generation
I think the title sums it up pretty nicely
* Update level_up_learnsets.h
forgot some newer pokemon
* divided the learnset file into generations
* Separated learnsets by generation
Separated the learnsets by generation, added a bit more documentation in the config file
* Update src/pokemon.c
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
* Update include/config/pokemon.h
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
* PLA aux item sprites
* Gen 6 lvl up Learnset update
Updates gen 6's level up learnsets to ORAS (previously XY)
* Revert "Merge branch 'upcoming' of https://github.com/MartyKen/pokeemerald-expansion into upcoming"
This reverts commit 53462c4088926a813f216a7917b1dfeb5ef2ca25, reversing
changes made to 051a93058c83c691f8476fbb97035e64fcee38aa.
---------
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
* Add LGPE+ Premier Ball Bonus config
* Capitalization
* Premier Ball count in message + only give the amount of Premier Balls possible
* Review changes
* Updated B_TELEPORT_BEHAVIOR to match Premier Ball config
* Update src/shop.c
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
---------
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* Moved existing sanitized trainer data functions to include/data.h
* Sanitized encounterMusic_gender
* Sanitized trainer class ID
* Sanitized trainer pic ID
* Sanitized trainer starting status
* Sanitized obtaining Trainer struct
* Sanitized trainer double battle flag
* Sanitized trainer party size
* Sanitized trainer mugshot data
* Sanitized trainer name
* Consolidated Dome Brain trainer data to the rest of the frontier data
* Sanitized trainer items
* Removed accidental test data
* Sanitized trainer party
* Sanitized trainer AI flags
* Final encapsulation bit
* Adds Tidy Up + minor Dragon Cheer follow up
* improve tidy up script
* Add IncreaseTidyUpScore function
* remove useless calls
* 2 small tests and a correction for IncreasyTidyUpScore
* Sets neutral nature and ability 0 as default in trainer control
* add config to generate a random ability
* minor correction
* move config to battle.h
* fixed compiling
* Updated the way in which ScrCmd_givemon and ScriptGiveMon assign a default ability
When an abilityNum is not assigned in a call to givemon performed inside of an overworld script, ScriptGiveMonParameterized will make sure to generate an abilityNum of 0 or 1 in the same way vanilla does it; by defaulting to 0, and then tweaking it based on the least relevant bit of the Pokémon's personality.
ScriptGiveMon will set the default ability of a Pokémon in the same way now too, because even though it was rewritten in #3924, it should ideally produce a Pokémon in a similar way than vanilla does it.
* Removed pointless abilityNum setup in ScriptGiveMonParameterized
* Allow developers to choose metric or imperial, and their decimal seperator of choice for Pokédex entries
- Creates which cleans up the existing implementing of printing height and weight to the pokedex
- Developers can choose to use metric or imperial units of measurement in the Pokédex
- - Developers can choose to use any character as a decimal seperator in the Pokédex
- Allows users to define units and decimal seperators independently
- Fixes a bug in Lotad / Seedot house
* Fixed compilation issue with agbcc
* Updated to include HGSS Dex and address PR Feedback
This reverts commit c267dd6ee6.
# TODOs changed:
# -: Needs to be updated if compiling for a different processor than the GBA's:
# TODOs changed:
# -: Needs to be updated if compiling for a different processor than the GBA's:
# TODOs changed:
# -: Needs to be updated if compiling for a different processor than the GBA's:
* SaveBlock3 in sector footers
* Update load_save.c
Since mgriffin is currently not available I took the liberty to edit the file. Hope it's fine.
* SaveBlock3 in debug menu (#3)
---------
Co-authored-by: DizzyEggg <jajkodizzy@wp.pl>
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
Co-authored-by: psf <77138753+pkmnsnfrn@users.noreply.github.com>
* Last Respects effect + Fixed Supreme Overlord
* Fixed ability pop-up happening when there's no fainted party members
* Fixed Supreme Overlord counting faints during the battle instead of fainted party
* Removed invalid test.
* Converted GetSupremeOverlordModifier to an inline function
* Created inline functions to obtain faint counters
* Fixed erroneous implemenation and tests
* Teachable learnset helper mechanics
* Rename folder and python script
* Some teachable learnset work
* Update PoryMoves file labels
* Add header and make custom json
* Include found moves in output file
* Update SV file to latest version
* Don't run if there are no jsons to be found
* Add Basculin duplication in json
* Add universal move support to
* Ignore and skip Mew
* Integrate tool in Makefile
* Condense Basculin learnsets
* Split Oinkologne for easier generation
* Add Deoxys' XD move tutor data
* Add missing Darumaka/Yamask Galarian SwSh TMs
* Add TID species to sv.json
* Update sv.json to The Indigo Disk data
* Add Python install instructions
* Fix Makefile
* Expand header with more information
* Add config to allow disabling the learnset helper
* Update include/config/pokemon.h
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
* Don't crash if the config is missing
---------
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
* Lvl up learnsets by generation
I think the title sums it up pretty nicely
* Update level_up_learnsets.h
forgot some newer pokemon
* divided the learnset file into generations
* Separated learnsets by generation
Separated the learnsets by generation, added a bit more documentation in the config file
* Update src/pokemon.c
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
* Update include/config/pokemon.h
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
---------
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
* Introducing an expanded givemon
* Added debug features to check a Pokémon's EV and IV
* Added a parameter to set a custom mon's gender
* Added a debug feature to clear the party
* Defined the EV/IV getters in gSpecials
* Added Gigantamax Factor toggle to givecustommon
* Updated Gigantamax Factor label in givecustommon macro
* Added tera type parameter to givecustommon
Misc. changes:
-Added a few harmless comments to CreateCustomMon for consistency reasons.
* Cleaned up the code inside CreateCustomMon a bit
Also updated the values assigned to the parameters of ScriptGiveCustomMon
This is temporary though. I'll probably end up turning them into 2byte parameters so they can be filled when the scripting command is called by using variables once I solve the bigger problem that the scripting command is currently facing.
* Foolproofed the Poké Ball check in CreateCustomMon
* Assigned a default gender to givecustommon
This solved the nasty issue by which the command wasn't working properly if you didn't fill in each parameter when calling givecustommon in a script.
* Reinforced the gender checks at CreateCustomMon
* Re-reinforced the gender checks at CreateCustomMon
* Compressed givecustommon and added tests
-Made givecustommon skip unspecified parameters.
-Added scripting variables support for every parameter.
-Added tests.
* Updated the default values of some ScriptGiveCustomMon parameters
* Replaced vanilla's givemon with givecustommon
Misc. Changes:
-Renamed CreateCustomMon to ScriptGiveMonParameterized.
-The truth is that the function was never limited to creating the skeleton of a Pokémon like the actual CreateMon functions do, so that label was never correct. The function was always an expanded ScriptGiveMon.
-Moved the core functions to src/script_pokemon_util.c which is where they actually belong.
-Updated ScriptGiveMonParameterized a little to incorporateb changes that were applied to the original ScriptGiveMon, namely, Synchronize ability and form change handling.
-Introduced a new ScriptGiveMon to replace the original one.
* Corrected givecustommon tests
* Fixed the default IV values for the new givemon
* Updated DebugAction_Party_ClearParty for consistency with the other debug functions
* Updated the text strings used by the Check EV/IV debug features
---------
Co-authored-by: Martin Griffin <martinrgriffin@gmail.com>
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* settwoturnstring command
* Unified two-turn attacks and Meteor Beam
To do: Solar Beam
* Solar Beam
Also fixed various function, removed EFFECT_GUST (who knows why that exists?)
* Updated Solar Beam + tests
* Redid two turn move + animations logic
Removed pointless various function; to do: remove Skull Bash, fix AI test
* Removed now-pointless flag
* Removed Skull Bash
And temporarily commented out failing AI tests
* Removed Sky Uppercut effect
Not sure when or why this was ever necessary
* Removed BattleScript_EffectSemiInvulnerable
Now uses BattleScript_EffectTwoTurnsAttack. Kept the effect; used the argument field to determine which STATUS3 such moves should apply but added a function to jump over weather checks in BattleScript_EffectTwoTurnsAttack if the current move is semi-invulnerable (since the instant-fire weather check and STATUS3 use the same field)
* Applied review changes
* Replaced VARIOUS with callnative
Tried to fix test but couldn't :/ wtf is going on
* Fixed one AI test
Cant fix the other...
* Added KNOWN_FAILING to failing AI tests
Separated them out into their own test
* Optimised script, overhauled charge turn string setting
Condensed multiple confusing macros into one, jumpifweathercheckchargeeffects. Script now tweaked and trimmed, string ids for charge turns now added to argument along with status3 (thanks to compression macro) and instant-fire-weather for semi-invulnerable and two-turn moves respectively. Also introduced a savedStringId in gBattleScripting to make string selection work.
* Unified two turn move tests + minor corrections
* Added semi-invulnerable move tests
Set the Razor Wind test to known failing - something to do with its animation?
---------
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* metaprogram.h
Created by Mr. Griffin. Removed non-relevant parts
* Added DEFAULT/DEFAULT_2 macros
Also added a demonstration in battle_main
* Removed GET_ARGS
* Expanded DEFAULT
Because why not?
* Added EXCEPT
Expands to everything but the first x arguments.
* Added BIT_INDEX (thanks to MGriffin) and COMPRESS_BIT macros
These let you compress a bit up to a word in size inside a single byte and uncompress at the same time. BIT_INDEX just tells you where the bit is.
* Updated HANDLE_EXPANDED_MOVE_NAME
---------
Co-authored-by: Martin Griffin <martinrgriffin@gmail.com>
* Renamed VAR_TERRAIN and introduced a var-based field terrains timer
* Fixed sky battle configs alignment and syntax
* Added B_VAR_TERRAIN_TIMER handling to Overworld_ResetBattleFlagsAndVars
* Removed pointless edits to EndTurnTerrain
* Updated B_VAR_TERRAIN_TIMER's comment
* Updated the syntax of ABILITYEFFECT_SWITCH_IN_TERRAIN to comply with Agbcc
* Nuked pointless VarGet calls in the case ABILITYEFFECT_SWITCH_IN_TERRAIN of AbilityBattleEffects
* Reverted changes made to BS_SetRemoveTerrain
I shouldn't have touched it at all since it's not involved with B_VAR_TERRAIN functionality.
* Removed trailing spaces in the case ABILITYEFFECT_SWITCH_IN_TERRAIN of AbilityBattleEffects
* Remove non-existent tilesets from label comments and alphabetize
* Fixed braces style
* gbagfx bit depth upconversion fix
* jsonproc: filter out every non-alphanumeric character
* fix(linking): link gflib/malloc.c at top of EWRAM in ld_script_modern.ld
* Adds move Upper Hand
* Requested changes
- Tabs / spaces where proper
- HitFromAtkString -> HitFromAccCheck
- Actually compiles now lol
- Moved assumes into relevant tests
- Cleaned up the check for TryUpperHand
* Fixed || positioning
* Update upper_hand.c
* Revert "Merge remote-tracking branch 'upstream/master' into upper-hand"
This reverts commit b21275dfe9a8c106069a5d34ecba9c84064f599f, reversing
changes made to 89b1ad1ea1655bf30c51a7f0f7a0b176cc64635a.
* AI logic and conflicts solved
* Test fix
* Fix Sheer Force test
* Requested changes
* Requested changes
* Update battle_script_commands.c
---------
Co-authored-by: GriffinR <griffin.g.richards@gmail.com>
Co-authored-by: Eduardo Quezada <eduardo602002@gmail.com>
Co-authored-by: Sierraffinity <sierra@domoreaweso.me>
Co-authored-by: sbird <sbird@no.tld>
* Splits First Impression effect from Fake Out
* Fix test failing
* rename EFFECT_FAKE_OUT
* use moveeffect chance for fake out and priority field for first impression
* rename rest of fake out
* messed up merge
* remove useful comment
---------
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
* Made gBattleMoves handle the InGame name and description of battle moves
No more multiple arrays in separate, individual files.
Note:
-Keep an eye on Task_LearnedMove.
* Reintroduced move names
Misc:
-Fixed Trick-or-Treat and Light of Ruin's expanded names.
-Introduced a new field for Z-Move names, and a constant for their name length.
-Added a few TODOs to GetBattleMoveName.
-Updated GetMaxMoveName and GetZMoveName. There's no reason not to let GetBattleMoveName handle everything on its own.
* Updated GetBattleMoveName to handle Z-Move Names
Misc:
-Removed pointless TODO about MOVE_NAME_LENGTH.
-The compiler doesn't allow to have a move name with a value higher than MOVE_NAME_LENGTH, therefore it's pointless to worry about it.
* Fixed a couple of expanded move names
* Removed zMoveName variable of struct BattleMove and extended the name variable's size
* Ditched no longer used MOVE_NAME_LENGTH constant
* Corrected the names of the max moves
I should have done this after updating the size of the name variable of the struct BattleMove, but I didn't think about it at all until Cancer Fairy indirectly gave me the idea.
* Fixed U-turn's name
* Brought back MOVE_NAME_LENGTH
I think it doesn't make sense to have a Z_MOVE_NAME_LENGTH because the length in question is used for all battle moves, not just the Z-Moves.
* Introduced a union for Move/Z-Move names in the struct BattleMove
* Fixed the union for gBattleMoves move names
Also updated GetBattleMoveName to properly handle Max Move names.
Also also renamed the "zMoveName" variable to "bigMoveName" which better reflects its purpose. Z-Move names weren't the only thing it covered, since it also handles Max Move names.
* Removed deprecated GetZMoveName and GetMaxMoveName
* Reintroduced mention to gMoveNames in sGFRomHeader
* Fixed move names and ported move descriptions
* Fused the struct ContestMove into the struct BattleMove
* Removed no longer used Z_MOVE_NAME_LENGTH constant
* Renamed the struct BattleMove's bigMoveName variable and introduced macros to prettify move names
* Reintroduced the contest parameters for Pokémon moves
* Renamed gBattleMoves to gMovesInfo
This is consistent with gSpeciesInfo, the array that contains most of the species data.
* Renamed the BattleMove struct to MovesInfo
This is consistent with the struct SpeciesInfo, which contains the variables used by the gSpeciesInfo array.
* Removed empty lines separating battle params from contest params in gMovesInfo
* Renamed MovesInfo to MoveInfo
* Added Cancer Fairy's HANDLE_EXPANDED_MOVE_NAME macro
Used to handle moves with expanded names in a more comfortable manner.
Also fixed Trick-or-Treat's expanded name.
* Renamed GetBattleMoveName to GetMoveName
* Added a comment pointing out that the shared move descriptions are shared move descriptions
* Re-aligned one of the escape characters of CHECK_MOVE_FLAG
* Renamed the battle_moves.h file to moves_info.h instead for consistency's sake
* Applied Eduardo's adjustments
* Using compound string for regular move names as well, saving 1180 bytes and making their use consistent
* Move description formatting
* Updated Pursuit test after merge
* Renamed the BATTLE_CATEGORY constants to DAMAGE_CATEGORY
---------
Co-authored-by: Nephrite <thechurchofcage@gmail.com>
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
* Rename gItems to gItemsInfo
* Rename gAbilities to gAbilitiesInfo
* Just fixing up my bad merge
---------
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
* Created gMoveBattleEffects array
* Renamed array to gBattleMoveEffects
Applied array in battle_util.c and battle_script_commands.c; doesn't build yet...
* Got it building...
* Added missing battle_tv effects
* Fixed and got it building
I'm an idiot sometimes
* Added battle_tv scores, encourage Encore flag
All works and builds just fine
* Merge fixes
* Reformatted battle_move_effects
Also tweaked struct, added macro
---------
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* A few new gen 9 move animations
* draco meteor anim
tmp
* applied suggestions
* fix compile
* add more crystals to ice spinner
* further fixes
---------
Co-authored-by: ghoulslash <41651341+ghoulslash@users.noreply.github.com>
* Updated CopyItemNameHandlePlural to deal with plural names
* Fixed whitespace in a few places
* Fixed whitespace in a few places
* Add remaining plural forms.
* Created ITEM_NAME_PLURAL_LENGTH
* Updated ITEM_NAME_PLURAL_LENGTH per feedback https://github.com/rh-hideout/pokeemerald-expansion/pull/4001\#discussion_r1453598165
* Reverted ITEM_NAME_PLURAL_LENGTH to +2 and added new comment
* Removed GetBerryCountString from CopyItemNameHandlePlural
Will deprecate the former in a future feature: https://github.com/rh-hideout/pokeemerald-expansion/issues/4010
---------
Co-authored-by: Zimmermann Gyula <graiondilach@hotmail.com>
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* Refactor battle mugshots
The battle mugshot transitions have been merged into the one transition id and are now loaded depending on the trainer data.
Two new fields have been added to struct Trainer; mugshotEnabled and mugshotColor. mugshotEnabled is the toggle for loading the mugshot transition when set to TRUE and mugshotColor is the color of the mugshot for that particular trainer.
The Elite Four and Champion have been updated so their mugshots are correctly loaded when you battle them.
A bug has also been fixed where if the player starts on a tile that has an active field effect, the player's sprite will use the palette of the opponent's sprite.
* Added a new folder in src/data named battle_transitions.
The two look ups for the opponent rotation scaling and coords have been put into their own files and added into this new folder.
The coords look up has also been changed to use the struct.
* Fixed errors with modern that were preventing compile
* Added mugshot coords to gTrainerSprites
* Added rotation scales to gTrainerSprites
* Replaced tabs with spaces
* Incorporated comments
* Added battle_transition include back to data.c
* Fixed alignment issues in Mugshots_CreateTrainerPics
---------
Co-authored-by: pkmnsnfrn <pkmnsnfrn@gmail.com>
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* Gen 1 exp yield config
* I'm a dumdum
* Gen 2 configs
* Exp yield configs up to gen3
* Gen 4 configs
* Gen 5 configs
* Configs up to gen6
* Gen7 configs
* Final form exp adjustments
* Expanded the amount of max items per stack from 99 to 999
* Set Battle Pyramid Bag stack limit back to 99
This commit exists for archival purposes.
People who may want to set the limit of item stacks in the Battle Pyramid's bag to 999 can refer to its code diff.
* Reintroduced the Battle Pyramid changes through a MAX_PYRAMID_BAG_ITEM_CAPACITY constant
* Gave 3 digit support to the Battle Pyramid's bag
* Rewrote the comment for MAX_PYRAMID_BAG_ITEM_CAPACITY
* Made DebugAction_Give_Item_SelectQuantity use MAX_ITEM_DIGITS
* Ditched BERRY_CAPACITY_DIGITS and BAG_ITEM_CAPACITY_DIGITS
* Removed MAX_BERRY_CAPACITY
No point in keeping it if we're making all item stacks cap at 999.
* Applied review corrections
* Removed pointless local var in DebugAction_Give_Item_SelectQuantity
* Defined a MAX_PYRAMID_ITEM_DIGITS
* Cleaned up some of the functions in which MAX_ITEM_DIGITS is used
Summary:
-Removed pointless local variables in CheckBagHasSpace, AddBagItem, PrintItemQuantity and PrintItemSoldAmount.
-Removed pointless brackets in an if statement of CheckBagHasSpace.
-Initialized the pocket local variable of CheckBagHasSpace from the get go to save a few lines too.
---------
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
* Removed EFFECT_HURRICANE in favor of using EFFECT_THUNDER
* Added EFFECT_BLIZZARD
* Helping the IDE a little
* Added EFFECT_RAIN_ALWAYS_HIT for Forces of Nature moves
* Removed MOVE_SELF_DESTRUCT and MOVE_EXPLOSION hardcoding
* Removed EFFECT_FRUSTRATION hardcoding
MOVE_SELF_DESTRUCT
* Cleaned up sPoints_MoveEffect
* Removed MOVE_AURA_WHEEL and MOVE_PRESENT hardcoding
* Fixed compile
Not the ideal solution but Fling now has a hardcoded check for Shield Dust and acts accordingly - a better long term solution inolves making a bunch of reusable MOVE_EFFECTS and rejigging attackcanceler but I didn't feel like doing that today...
* Fix some ball multiplier configs
* Updated the comment of B_LURE_BALL_MODIFIER
* Specified the effects of B_LURE_BALL_MODIFIER in itsa state its effects in a more specific manner
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
* Corrected the comments of B_DREAM_BALL_MODIFIER, B_SPORT_BALL_MODIFIER and B_SAFARI_BALL_MODIFIER
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
* Turned the ternaries in the case for the Lure Ball's catch rate in Cmd_handleballthrow into a regular if/else if statement
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
---------
Co-authored-by: LOuroboros <lunosouroboros@gmail.com>
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
* 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
* Archaludon?
* more archuladon stuff
* Hydrapple and Gouging Fire
* Raging Bolt
* Iron Boulder and Iron Crown
* Terapagos
* Pecharunt
* Update gen_9.h
* Pokedex orders
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
* Implement Pokemon Box Link functionality
* Update item_use.c
* Update item_use.c
* Can only use box link if the map allows escape
* Revert "Can only use box link if the map allows escape"
This reverts commit be5b46b6c4420cd350ac1932d4c3562f7bfbebe5.
* Overworld_IsEscapingAllowed
---------
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* 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
* Implemented a CannotUseItemsInBattle function
This fucntion is the result of merging CannotUseBagBattleItem and CannotUsePartyBattleItem. No reason to split the work between 2 functions when you can do it all with just 1.
Misc. Changes:
-Turned most of the if statements inside the function into "else if" statements for performance reasons.
-Refactored how the local variable "cannotUse" was used turning it into a bool.
* Made CannotUseItemsInBattle use a switch statement
Misc. Changes:
-Removed pointless parentheses from case EFFECT_ITEM_SET_FOCUS_ENERGY
-Removed pointless i loop variable from case EFFECT_ITEM_INCREASE_ALL_STATS and replaced a hardcoded 1 in its for loop.
-Turned the i loop variable declared at the top of the function into a u32 variable
-Removed pointless comments. The EFFECT_ITEM constants are readable enough to convey what sort of items they affect.
---------
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
* Tests dont allow to send out pokemon with 0 hp
* remove test test
* handle in-game 0 hp sent out
---------
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* Added TrainerSprite struct with coordinates
* Added .frontPic to struct
* Added .palette to TrainerSprite struct
* Added .animation to the struct
* Added define for sprite size
* Condensed animations since they were all the same
* Improved TRAINER_SPRITE/PAL defines
* Simplified seemingly unused .y_offset and TRAINER_PIC_SIZE values
* Condensed TRAINER_SPRITE and TRAINER_PAL into TRAINER_PIC
* Renamed .size to .y_offset since that what it appears to actually be
* Moved y_offset into TRAINER_PIC
* Moved animation inside of TRAINER_PIC
* Added array number to preproc
* Removed trailing spaces
* Added sprite/palette files to preproc
* Revert adding sprites to preproc as it fails agbcc
This reverts commit dce57f8d1bfab70b4c6630a9c4e5b43495891459.
* Added backsprite struct
* Added animations to backsprite struct
* Changed TRAINER_PIC to TRAINER_SPRITE
* Added animation to backsprite preproc
* Added .backPic to struct
* Moved array number into backsprite preproc
* Removed definitions for trainer sprites
* Hardcoded sAnims_Trainer into struct since every sprite uses it
* Fixed TRAINER_SPRITE arguments
* u16 for FunctionTest PARAMETRIZE
* Speed up CB2_TestRunner
* Use DACS to handle illegal instructions
DACS is available in mgba from 44e074a15e
This is not 0.10.2, but will presumably be available in the next
release. Alternatively, a GBA BIOS could be used.
---------
Co-authored-by: DizzyEggg <jajkodizzy@wp.pl>
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
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>
Since Gen 6, the capture rate curve was changed to make pokeballs more effective on lower level pokemon
It's by 65536 divided by 255 to the power of(1/5.33) and I did the work of translating that so a rough approximation can be done in integers, and so far, it seems to work close enough. I use this in my romhack for months now and it works fine.
* Remove unnecessary const
* Test that species ID tables are shared between all forms
* Use P_FAMILY_MELTAN
* Test that form change tables contain only IDs in form species tables
* Fix isPrimalReversion typo
* Test form change targets have appropriate species flags
* Fix#3689
* 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
* Original implementation from Phlayne
* Moved Sky Battle Flag / Var into a config
* Optimized existing code and fixed existing bugs
Added error message for when sky battle var and flag are not set
Merged CanDoSkyBattle and PrepareSkyBattle into one special
* Added compatibility for Gen7+
* Commented out Volt Crash from banned moves
* Cleaned up debug scripts from testing
* Fixed bug where player did not white out even if they had no healthy Pokémon and only an egg
Zeroed out both Sky Battle configs
* Removed extra include from src/field_specials.c
Removed extra line break in src/battle_script_commands.c
* Added FLAG_DISABLED_IN_SKY_BATTLE
Added FLAG_DISABLED_IN_SKY_BATTLE to appropriate moves
* Changed DoesSkyBattleCancelCurrentMove to look at move flags
* Fixed alignment and spacing in battle_moves.h
* Added FLAG_DISABLED_IN_SKY_BATTLE to Sticky Web
* Added FLAG_DISABLED_IN_SKY_BATTLE to Steel Roller
* Disabled the ability to change Battle Terrain when Sky Battle is happening
Stopped Ceaseless Edge from spawning Spikes when Sky Battle is happening
Added B_SKY_BATTLE_STRICT_MECHANICS config
* Fixed bug with SKY_BATTLE_STRICT_MECHANICS where conditions were not consistently being applied
* Add rulesVariants to the BattleStruct
Added skyBattle check in AllocateBattleResources
* Replaced B_FLAG_SKY_BATTLE checks with rulesVariants.skyBattle checks
* Fixed debug script
* Reverted include/config/battle.h
* Fixed spacing and placement of functions
* Fixed debug script omission
Fixed bug where Spikes did not set from Ceaseless Edge and Stone Axe
* Added FLAG_DISABLED_IN_SKY_BATTLE to Psychic Terrain
* Addressed DizzyEgg PR feedback
* Forgot a file in last commit
* Addressed feedback from DizzyEggg
* Address Lunos' PR feedback
* Update specials.inc
Added an empty line at the end of data/specials.inc
* Fixed spacing
* Apply suggestions from code review
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
* Updated skyBattleBanned and HandleBattleVariantEndParty to use correct names
* Removed STRICT_MOVES and STRICT_MECHANICS
* Fixed minor spacing issues with merge
* Merged in upcoming
* Implemented feedback from Jasper
5da6117d1b
---------
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
* Added initial config for times of day
* Changed TIME_DUSK/DUSK_EVO to EVENING
* Added morning and evening to Gens 3/4
* Renamed *_EVO_HOUR_BEGIN/END to just *_HOUR_BEGIN/END
* Incorporated comments
* Legendary Mon Fusion Evolution Compatibility Added
Kyurem, Calyrex, and Necrozma Fusions have been implemented, however, the animation for the the process is incomplete, the party menu screen needs to be updated while the screen is whited out and it has proved beyond me right now. Smh
* Added Fusion Move Prompts
Handles cases for learning the fusion moves from the other fused mon and deleting the move when you unfuse (plus learning confusion (well a set choice in the data struct) if there are no moves left after deleting one)
* Fix Bug With Fusion Mon Move Learning
If the main fusion came after the fused mon in the party order it would try to teach the move to the next member in the party
* Apply suggestions from code review
Co-authored-by: LOuroboros <lunosouroboros@gmail.com>
* Fix build
* Fix fusion items being used up
* Fixed animations
* RefreshPartyMenu
* Apply suggestions from code review
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
* Apply suggestions
* Update form_change_tables.h
* Fix animation and simplify fusion tables
* Fix party full message
* Remove trailing whitespaces
* Update party_menu.c
* Update party_menu.c
* Make IsFusionMon better
* Apply suggestions from code review
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
---------
Co-authored-by: TeamAquasHideout <jonathonheddings@gmail.com>
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
Co-authored-by: LOuroboros <lunosouroboros@gmail.com>
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* First draft of repel lure
* Updated all lure and repel scripts
* Optimized inc file
* Updated y coord
* optimized sprays.c
* Removed spray.inc
* Updated cosnt use
* Removed dead repel and lure code
* Updated debug for testing
* testing new inc file
* turn on debug and options
* playground generated inc file without ifs
* pory generated inc with ifdef complete
* Updated spray.c with new inc
* reverted item config
* Reverted event scripts
* Reverted event scripts
* Revert config
* Added testing scripts for debug
* Added back specials
* reverted debug scripts
* Updated use of constants
* Addressed tabs > spaces feedback
https://github.com/rh-hideout/pokeemerald-expansion/pull/3594\#discussion_r1402917676
* Updated constant names to avoid confusion
Made inc file changes
https://github.com/rh-hideout/pokeemerald-expansion/pull/3594\#pullrequestreview-1746418044
* Updated constant name of NUM_SPRAY_TYPES to NUM_SPRAY_STRENGTH to be more accurate
* 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>
* Made function for time-based evolutions
* Incorporated Edu's comments and time variables
* Moved time of day begin/end variables to rtc.h
* Fixed if/else statement to pass building with modern
* Added morning
* Added ability to check if end time > beginning time
* Updated times to match SwSh
---------
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>
Rename HITMARKER_IGNORE_SAFEGUARD to HITMARKER_STATUS_ABILITY_EFFECT.
This flag is used exclusively by status-inflicting Abilities,
and has 3 main functions:
- Whether the effect bypasses Shield Dust
- Whether the effect bypasses Safeguard
- Which text string to display when the status condition is inflicted
(i.e. whether it was inflicted by a move or Ability)
I believe this new name better represents what the flag actually does.
This name was structured to parallel HITMARKER_SYNCHRONISE_EFFECT.
* Added Japan-only Walda PC icons
* Added a config for the Japanese icons
* Update overworld.h with suggestions
---------
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
* Form changing method for Shaymin Sky into Land at night
* Ordered form change tables
* Refactored form change type to support both night and day
* Removed added space
---------
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* Gen 1 and 2 families + fixes
- Fixed mixed identation.
- Fixed Azurill being Normal/Water type in Pre-Gen6 setting.
- Fixed Wobbuffett being before Wynaut
- Fixed Dudunsparce's macro being out of order
* Updated macros of Megas that shared held item with base forms
* Gen 3 families
* Separated Latis macro
* Gen 4 families
* Moved Misc Info to the top of arrays
* Renamed FAMILY_x to P_FAMILY_x
* Gen 5 families
* Gen 6 families
* Gen 7 families
* Gen 8 families
* Gen 9 families
* Mega Evolutions
* Gigantamax Form toggles
* Alolan Forms
* Galarian Forms
* Added missing comments
* Hisuian Forms
* Paldean Forms
* Fixed missing Paldean form flags
* Fixed order
---------
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* 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>
* Added missing cross-gen evolutions
* Added forms for evos
* Converted some EVO_NONEs into EVO_MOVE
* Moved Ursaring's evolution up
* Added evolution methods for Dudunsparce and Maushold
* 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
* Mon animation names
* Moved indicator code so it follows the same standards as the other indicators
* Whitespace
* Fixed modern compile
* Fixed issue that caused Low Key Toxtricity learning Amped moves when Gigantamaxed
* 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.
* Catch OOM in tests
* Alias gBattleTestRunnerState with sBackupMapData
Reverts #3398 "Fix Broken Move Anims in Tests" which moved the AI logs
to statically-allocated EWRAM_DATA instead of being part of
gBattleTestRunnerState.
* 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>