58 Commits

Author SHA1 Message Date
AlexOn1ine
d767211c4a helper function to get the species type based on personality 2025-03-31 14:49:40 +02:00
Eduardo Quezada
21bc5cfd30
Debug menu and createmon additions/cleanup (#5994) 2025-01-11 10:07:47 +01:00
Martin Griffin
bb781f21a1
Arbitrary trainer scripts + map script/trigger softlock prevention (#5033)
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.
2025-01-08 10:27:00 +00:00
Eduardo Quezada
91c7bd9e53
Fixed givemon not respecting perfect IVs for species (#5873) 2024-12-26 21:22:45 +01:00
Alex
76eae8ed00
Decouple Poke Ball ids from item ids (#5560) 2024-10-28 18:03:15 +01:00
Eduardo Quezada
18980b20a3
Remove trailing whitespace (master) (#5174) 2024-08-14 19:48:20 -07:00
Eduardo Quezada
cc00446eb8 Merge branch '_RHH/master' into _RHH/upcoming
# Conflicts:
#	src/data/graphics/pokemon.h
#	src/data/pokemon/species_info/gen_9_families.h
2024-07-26 09:42:52 -04:00
sneed
298ee34097
fix givemon not giving Cherish Ball (#5022) 2024-07-24 20:37:46 +02:00
Eduardo Quezada
ae48293806 Merge branch '_RHH/master' into _RHH/upcoming
# Conflicts:
#	src/battle_ai_util.c
2024-07-22 23:06:44 -04:00
cawtds
30ff2fa337 fix givemon random ivs 2024-07-22 17:18:22 +02:00
ghoulslash
353727a805
Add createmon Script Cmd, Support for 2v1Wild Battles (#4688)
* 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>
2024-06-13 19:11:36 +02:00
Eduardo Quezada
0be643a517
Set TYPE_NONE as type 0 + other type data tweaks (#4462)
* 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
2024-06-01 07:38:22 +02:00
Bassoonian
c5552f53da
checkteratype setteratype (#4460) 2024-04-30 00:12:34 +02:00
AgustinGDLV
84a9d4ffcf
Terastallization (#4110)
* 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
2024-04-24 11:17:46 +02:00
Alex
ee3a577240
Fixes givemon moves not defaulting to none (#4377) 2024-04-11 20:34:11 +01:00
LOuroboros
15aa909944
Updated OW_SYNCHRONIZE_NATURE statement in ScriptGiveMonParameterized (#4271)
Fixes an issue where the nature of a Deoxys would be randomized even if one was set at the time of calling givemon or the functions related to it.
2024-03-14 22:02:19 +01:00
Eduardo Quezada
1568b0a424
Pre-1.8 tweaks (#4275)
* 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
2024-03-12 12:21:03 +01:00
LOuroboros
ff482957bd
Made ScriptGiveMonParameterized recognize the state of P_FLAG_FORCE_SHINY and P_FLAG_FORCE_NO_SHINY (#4256)
* Made ScriptGiveMonParameterized recognize the state of the P_FLAG_FORCE_SHINY

* And made it respect P_FLAG_FORCE_NO_SHINY too
2024-03-08 23:26:25 +01:00
LOuroboros
64b7cfeb29
Upgrading the debug menu's 'Poison Party' (#4235)
* 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'
2024-03-01 19:55:54 +01:00
LOuroboros
1f349e0fb9
Renamed NUM_ABILITY_VANILLA to NUM_ABILITY_PERSONALITY (#4196) 2024-02-15 15:22:25 +01:00
LOuroboros
eb7ddeb66c
Updated the way in which ScriptGiveMonParameterized and ScrCmd_givemon chooe a default ability (#4192)
* 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
2024-02-15 08:01:34 +01:00
LOuroboros
916e4814bd
Implemented Custom/Complex/Expanded GiveMon scripting command (#3924)
* 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>
2024-02-08 09:11:13 +01:00
Eduardo Quezada D'Ottone
b20be66175
Max Soup ban now checks for mythicals instead of array (#4017)
* Removed sGigantaxFactorLockedSpecies to instead check for mythicals

* Applied review comments

---------

Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
2024-01-17 13:08:34 -03:00
Bassoonian
9e051aa058 Merge branch 'master' of https://github.com/pret/pokeemerald into pretmergenewyears 2023-12-30 20:49:05 +01:00
Martin Griffin
3ad66028e9
Backwards-compatible BoxPokémon Refactor (#3438)
* 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
2023-12-27 17:48:17 +01:00
Bassoonian
e5ac2fe0b1 Clean up pokemon/ball/dex mentions in comments 2023-12-12 19:02:36 +01:00
Eduardo Quezada
1fc712f153 Merge remote-tracking branch '_pret/master' into RHH/pr/upcoming/pret_20231210
# Conflicts:
#	Makefile
#	data/battle_scripts_1.s
#	gflib/malloc.c
#	gflib/malloc.h
#	include/battle.h
#	ld_script.ld
#	ld_script_modern.ld
#	src/battle_ai_script_commands.c
#	src/battle_main.c
#	src/battle_script_commands.c
#	src/battle_util.c
#	src/data/pokemon/species_info.h
#	src/pokemon.c
2023-12-10 13:27:09 -03:00
Bassoonian
ab25e6bfa5
Fixes Synchronize's OW effect and adds configs (#3480) 2023-10-28 23:24:20 -03:00
Eduardo Quezada D'Ottone
26971fc3ac
Add species defines for base forms with names (#3248)
* Fixed Aegislash test not being properly made.
* Added conditions to BattleSetup_StartLegendaryBattle switch
2023-10-23 12:59:15 +01:00
Eduardo Quezada D'Ottone
ada29313de
Fix for wild double battles with an in-game partner (#3210)
Co-authored-by: DizzyEggg <jajkodizzy@wp.pl>
2023-08-11 17:29:10 -04:00
Alex
f6f0e5fa33
Fix for wrong mon position for scripted wild doubles (#2996) 2023-05-14 19:03:14 -04:00
Eduardo Quezada
4625a46748 Merge branch 'RHH/upcoming' into RHH/pr/feature/formBattleChange
# Conflicts:
#	src/battle_interface.c
#	src/battle_main.c
#	src/battle_script_commands.c
#	src/battle_util.c
2023-03-07 11:26:33 -03:00
Eduardo Quezada
9917f5cc8b Merge remote-tracking branch 'pret/master' into RHH/sync/pret_20230303
# Conflicts:
#	Makefile
#	include/constants/pokemon.h
#	include/pokemon.h
#	make_tools.mk
#	src/battle_ai_script_commands.c
#	src/battle_controllers.c
#	src/battle_main.c
#	src/battle_script_commands.c
#	src/party_menu.c
#	src/pokemon.c
#	src/trade.c
#	src/trainer_pokemon_sprites.c
2023-03-03 11:00:50 -03:00
Eduardo Quezada
079ca8ab29 Renamed MON_DATA_SPECIES2 to MON_DATA_SPECIES_OR_EGG for clarification 2023-02-24 07:53:02 -03:00
Eduardo Quezada
b74f0777da Renamed form change constants 2022-10-20 17:22:58 -03:00
LOuroboros
f1c153e469 Merged FORM_ITEM_HOLD_ABILITY into FORM_ITEM_HOLD
There was never a reason not to.
2022-09-06 18:37:16 -03:00
LOuroboros
f82c946ff3 Merge branch 'pokemon_expansion' of https://github.com/rh-hideout/pokeemerald-expansion into rhhmerge 2022-04-03 13:26:27 -03:00
Eduardo Quezada D'Ottone
8b49f8f925
Merge branch 'pokemon_expansion' into PE_FormChangeHoldItems 2021-12-19 12:08:52 -03:00
ultima-soul
b0b8b9bf46 Merge branch 'item_expansion' of github.com:rh-hideout/pokeemerald-expansion into master_sync 2021-12-17 23:51:29 -08:00
ultima-soul
26f29a04fd Revert "Merge branch 'item_expansion' of github.com:rh-hideout/pokeemerald-expansion into item_expansion_sync"
This reverts commit ac2bcece75fa3bf5bc4018ce659e51a635d46b97, reversing
changes made to 349262ebc35abb090e51c689c74ee839713c83c6.
2021-12-10 09:41:54 -08:00
ultima-soul
ac2bcece75 Merge branch 'item_expansion' of github.com:rh-hideout/pokeemerald-expansion into item_expansion_sync 2021-12-09 14:16:05 -08:00
ultima-soul
d408b56549 Merge branch 'master' of github.com:pret/pokeemerald into item_expansion_sync 2021-12-01 20:18:57 -08:00
ultima-soul
23bf41713c Merge branch 'master' of github.com:pret/pokeemerald into battle_engine_sync 2021-12-01 20:17:08 -08:00
LOuroboros
2e67153982 Renamed the Enigma Berries' constants 2021-12-01 22:16:38 -03:00
ultima-soul
a8f9a54787 Merge branch 'master' of github.com:pret/pokeemerald into item_expansion_sync 2021-11-21 10:41:32 -08:00
ultima-soul
3ed51d6d91 Merge branch 'master' of github.com:pret/pokeemerald into battle_engine_sync 2021-11-21 10:40:26 -08:00
GriffinR
63c5905914 Continue updating event macro comments 2021-11-16 13:10:23 -05:00
Eduardo Quezada D'Ottone
aec4d78bd4 Fixed edge case with givemon 2021-11-04 21:22:03 -03:00
GriffinR
6e62c057f5 Document remaining symbols in pokemon.c 2021-10-02 23:48:12 -04:00
ultima-soul
53e900a643 Rearranged rest of item ids except for Key Items. 2021-07-02 22:43:50 -07:00