Script_RunImmediatelyUntilEffect runs a script until either a specified
effect may occur or it reaches an end.
All existing script commands and natives, and some specials, call
Script_RequestEffects which allows us to analyze them.
Any downstream script commands/natives/specials will be statically known
not to call Script_RequestEffects and treated as if they have all
effects. Manually tagging them with requests_effects=1 and calling
Script_RequestEffects will make them analyzable.
Using these, we're able to execute scripts until they either exit with
no effect, or would possibly have an effect. This allows us to:
1. Not run on frame map scripts or triggers if they would have no
effect.
2. Immediately run triggers if they only affect flags/vars. This removes
the lag frames when biking into the Cycling Road, for example.
3. Migrate on load/on transition/on resume/on return to field/on dive
warp scripts onto the global script context if they would block
(approximated via SCREFF_HARDWARE).
4. Support arbitrary control flow in trainer scripts. The trainer does
not see the player if the script has no effect, and the trainer will
use whichever trainerbattle command is branched to.
5. Support arbitrary scripts in trainer scripts. cant_see and
cant_see_if_* commands have been introduced so that scripts are able
to do something when the player interacts with the trainer even if
that trainer wouldn't see them.
* add debug build target
* fix maybe uninitialized error
* add option to undef NDEBUG
* debug for agbcc
* init instead of ignore to not break agbcc
* make clean removes modern and agbcc artifacts. explicit use of -O0 again for NOOPT
* automatically enable debug menu when building for debug
* automatically enable debug menu when building for debug
* automatically enable debug menu when building for debug
* clean up previous mess omg
* remove preproc around debug menus
* automatically enable debug menu when building for debug
* clean up previous mess omg
* Apply suggestions from code review
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* Update Makefile
* Update field_control_avatar.c
* make debug print independent
* remove unwanted changes
* remove trailing endif
---------
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
* Update debug.inc
Created new merge as per discussion in discord, previous pull request https://github.com/rh-hideout/pokeemerald-expansion/pull/4286
* Added new file 'config.inc' as per feedback
Added new file 'config.inc' as per feedback
* Restore order
* fixed, my bad
---------
Co-authored-by: Eduardo Quezada <eduardo602002@gmail.com>
* 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
* Upgrading the debug menu's 'Poison Party'
* Optimized the 'No Pokémon' check in Debug_EventScript_InflictStatus1
* Killed a pointless function call in Script_SetStatus1
* Added Frostbite support to ¡inflict status1'
* 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>
* 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>