211 Commits

Author SHA1 Message Date
khbsd
a4ecd7338b
fix: seen flags for first mon in enemy party (#7791)
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
2025-09-28 09:53:55 +02:00
grintoul
916f083852
Added trainerBackPic to Trainer struct to de-couple trainer pic and trainer back pic defines (#7425) 2025-08-13 11:02:41 +02:00
cawtds
59350cc32f
Increase party action limit (#7119) 2025-06-24 15:15:04 +02:00
Eduardo Quezada
b094b70dc5
More battle controller function consolidation. (#6877) 2025-06-21 10:59:41 +02:00
Hedara
bdd7c5bfa8 Merge branch 'master' into master-merge
Conflicts:
	src/contest_painting.c
2025-06-09 23:27:18 +02:00
Alex
d33651bfd0
Battle controller pret documentation (#7029) 2025-06-02 14:22:11 +02:00
Eduardo Quezada
8697bef20c
BtlController_EmitTwoReturnValues cleanup (#6855) 2025-06-01 11:29:02 +02:00
jfb1337
096493aa35
AI: Add AI_SMART_TERA flag to make smarter decisions about when to terastalize. (#6705)
Co-authored-by: jfb1337 <>
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
2025-05-31 09:47:25 +02:00
AlexOn1ine
33607529cd conflicts 2025-05-16 10:46:32 +02:00
Hedara
49906a81f7 Merge commit 'c39ef1a03002a7af94' into pret-merge
Conflicts:
	src/battle_ai_switch_items.c
	src/battle_controller_link_opponent.c
	src/battle_controller_link_partner.c
	src/battle_controller_opponent.c
	src/battle_controller_player.c
	src/battle_controller_player_partner.c
	src/battle_controller_recorded_opponent.c
	src/battle_controller_recorded_player.c
	src/battle_controller_safari.c
	src/battle_controller_wally.c
	src/battle_controllers.c
	src/battle_main.c
	src/battle_script_commands.c
	src/battle_util.c
	src/battle_util2.c
	src/pokemon.c
2025-05-15 17:31:50 +02:00
Bassoonian
e42890e954
Consolidates a bunch of battle controller functions (#6838) 2025-05-15 11:26:18 +02:00
Eduardo Quezada
392d662c12
Rename GetPartyBattlerData to GetBattlerMon (#6800) 2025-05-09 15:14:09 +02:00
Eduardo Quezada
1f23fe0dd3
Use GetPartyBattlerData where appropiate (#6779) 2025-05-06 17:13:50 +02:00
DavidJCobb
0f17e70371 Shorter names for engine/controller communication enum members 2025-05-02 00:01:15 -04:00
Alex
55f9f6adea
Refactor battler flee and watch options + clean up (#6724) 2025-04-30 11:54:42 -04:00
hedara90
d1aa49cca3
Remove compressed palettes (#6455) 2025-04-26 22:58:40 +02:00
DavidJCobb
b4ee45f3e8 Renamed BATTLELINKMSGTYPE_ to BATTLELINKCOMMTYPE_
I want to avoid the word "message" since PRET has already chosen "battle message" as the term for predefined strings usable in the battle scripts and UI.

I was considering the term "battle link packet" instead, but the library for wireless communications already uses the word "packet" even though GBATEK does not. I'm going with "battle link communication type" instead. For this particular context, I don't think we need a compound noun ("X type"); the singular noun "type" is fine enough.
2025-04-26 11:37:20 -04:00
DavidJCobb
d8721b668e Fixed find-and-replace mistake
Functions were using the wrong constant.
2025-04-26 10:54:22 -04:00
DavidJCobb
9dc48899d3 BUFFER_A/B -> BATTLELINKMSGTYPE; link send/recv. task data names
Replaced the BUFFER_A and BUFFER_B constants with the BATTLELINKMSGTYPE enum, which also identifies the "controller becoming idle" message type.

Named the task data for the link send task and the link receive task. Added macros to functions related to those tasks, for legibility.
2025-04-26 00:13:42 -04:00
hedara90
4e01ce6993
Moved some AI stuff out of the battlestruct (#6405)
Co-authored-by: Hedara <hedara90@gmail.com>
2025-03-11 21:23:02 +01:00
Hedara
06d31bc8ea Merge branch 'master' into final-1.10-master-upcoming-merge 2025-02-26 22:07:10 +01:00
hedara90
cf43787d72
Added MOVE_TARGET_OPPONENT and added it to Me First, (#6336)
Co-authored-by: Hedara <hedara90@gmail.com>
2025-02-25 22:28:22 +01:00
Pawkkie
4359cbb77c
SwitchType enum to clean up GetMostSuitableMonToSwitchInto (#6184) 2025-02-05 16:49:53 +01:00
Alex
da9943d3b8
Clean up array access by using index instead of dereferencing the value (#6057) 2025-01-20 16:44:22 +01:00
hedara90
7c6c9120ea
Ewram and unused function cleanup sweep (#6019)
Co-authored-by: Hedara <hedara90@gmail.com>
2025-01-15 14:07:12 +01:00
psf
a7f77ed08d
Adds B_VAR_DIFFICULTY and related functions READ DESC (#5337)
Co-authored-by: sbird <sbird@no.tld>
Co-authored-by: Philipp AUER <SBird1337@users.noreply.github.com>
Co-authored-by: Martin Griffin <martinrgriffin@gmail.com>
Co-authored-by: hedara90 <90hedara@gmail.com>
2025-01-04 14:25:03 +01:00
Eduardo Quezada
9669a0554d
Encapsulate move data (#5852) 2025-01-01 20:34:33 +01:00
Pawkkie
9882e0aea6
Refactor ShouldSwitchIfAllBadMoves (#5452)
* Refactor ShouldSwitchIfAllBadMoves

* Rest of bugfix

* Enable Shed Tail test

* Revert "Enable Shed Tail test"

This reverts commit e0b9a3affcf3c465c8743741e5ca61bde6c8cb18.

* Better names for i, j

* Fix MAX_MON_MOVES that should be MAX_BATTLERS_COUNT

* battlerIndex  / moveIndex  fix

* Update src/battle_controller_player_partner.c

---------

Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
2024-10-16 11:22:48 -04:00
hedara90
e4c81ba6e0
Removed all instances of gBitTable[x] (#5123)
* Replaced all the gBitTable[X] usages with 1 << X, and cleaned up script output

* Fixed failed merge in online viewer

---------

Co-authored-by: Hedara <hedara90@gmail.com>
2024-08-17 10:28:09 -05:00
AgustinGDLV
9797640dff
Gimmick Refactor (#4449)
* 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
2024-06-22 22:25:40 +02:00
Bassoonian
d6422da284
Fix partner palette problem (#4736) 2024-06-07 21:05:16 +02:00
Eduardo Quezada D'Ottone
0522ec0247
Trainer data encapsulation (#4216)
* 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
2024-02-22 14:22:57 +01:00
Frank DeBlasio
7f50c0b9c3
Simplify gTrainerSprites (#4140)
* Simplified y_offset equations

* Removed trainer pic animation from gTrainerSprites

* Used metaprogram to simplify trainer sprites without mugshots

* Incorporated comments

---------

Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
2024-02-06 22:24:36 +01:00
LOuroboros
a64e1c63c1
Move data unification (#3999)
* 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>
2024-01-29 08:51:32 -03:00
Frank DeBlasio
5cdee87489
Refactor Trainer sprites (#3597)
* 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
2023-12-20 23:14:33 +01:00
Alex
1e25b53433
Partner Battle refactor (#3592)
* Partner Battle refactor

* fix for steven id

* clean up

* Use trainer partner names for id

* removed testing leftover

* comment change

* more review changes

* fix compiling

* remove partener count

---------

Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
2023-12-20 12:38:28 +01:00
ghoulslash
c5ef339b25
add TryShinyAnimation to Controller_PlayerPartnerShowIntroHealthbox (#3757)
Co-authored-by: ghoulslash <pokevoyager0@gmail.com>
2023-12-17 21:10:03 +01:00
Bassoonian
e5ac2fe0b1 Clean up pokemon/ball/dex mentions in comments 2023-12-12 19:02:36 +01:00
Pawkkie
b93dfb9d59
Smarter SwitchAI Mon Choices | HasBadOdds Switch Check (#3253)
* 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>
2023-11-11 14:37:35 +01:00
DizzyEggg
4dff0362df
Fix ai vs ai battles switch issue (#3283) 2023-09-10 19:01:12 -03:00
DizzyEggg
7c2ad314d4 merge with upcoming 2023-09-04 09:40:48 +02:00
DizzyEggg
aae4a0970c merge with upcoming 2023-08-30 15:46:27 +02:00
DizzyEggg
493c330cbd merge with upcoming 2023-08-30 13:23:55 +02:00
kittenchilly
028536e2d3 Spaces 2023-08-29 17:12:09 -05:00
kittenchilly
d540eccbb1 Merge branch 'upcoming' into ultraburst 2023-08-29 16:17:35 -05:00
DizzyEggg
156aa59f18 start removing gActiveBattler in controller emitters 2023-08-29 15:21:31 +02:00
DizzyEggg
44acd287f1 solve conflicts 2023-08-29 10:41:05 +02:00
DizzyEggg
9cf5376c96 use GetBattlerParty in LoadMonSprite 2023-08-21 09:43:01 +02:00
GriffinR
aca7998b93 Add missing use of ALL_MOVES_MASK 2023-08-16 14:33:15 -04:00
kittenchilly
c3e31af5f3 Ultra burst trigger 2023-08-09 22:12:26 -05:00