Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
138 commits
Select commit Hold shift + click to select a range
c6f0ffd
Summary Pages update
bassforte123 Oct 13, 2024
cd01ae4
Delete effect_cancel.binold
bassforte123 Oct 13, 2024
7bddb1d
Update .gitignore
bassforte123 Oct 13, 2024
f378320
Update .gitignore
bassforte123 Oct 13, 2024
3a170d8
Updating Summary Pages
bassforte123 Oct 13, 2024
b275fc2
Changing "ability" change names to "trait"
bassforte123 Oct 13, 2024
737b681
adding nature detail comments
bassforte123 Oct 13, 2024
e90c40f
Merge branch 'master' into Innate-System
bassforte123 Oct 13, 2024
4abc4bf
Revert "Merge branch 'master' into Innate-System"
bassforte123 Oct 13, 2024
3a0f613
First Multi Ability steps
bassforte123 Nov 4, 2024
450ea27
Changes reverted to full test clear state
bassforte123 Nov 5, 2024
8b0852a
Base feature fix
bassforte123 Nov 10, 2024
8d0d830
Invert Trait activation
bassforte123 Nov 11, 2024
5460165
Ability order reversion
bassforte123 Nov 11, 2024
148c66c
Conversion to Redux
bassforte123 Nov 16, 2024
03d0e9f
Beginning changes for Intimidate
bassforte123 Nov 21, 2024
82f0ccf
Switch In Ability updates
bassforte123 Nov 25, 2024
4d3d108
Switchin Abilities finished
bassforte123 Nov 26, 2024
5261164
Turn End and Move Block Abilities converted
bassforte123 Nov 28, 2024
9a55a1f
ABILITYEFFECT_MOVE_END completed
bassforte123 Nov 30, 2024
db9e58b
Ability case statements completed
bassforte123 Dec 3, 2024
6e12c89
battle util tentitive complete
bassforte123 Dec 13, 2024
167b5b1
Battle_Util complete + redundants returned
bassforte123 Dec 15, 2024
e44f7aa
AI system updated
bassforte123 Dec 21, 2024
a5b6f21
battle_script_commands updated
bassforte123 Dec 25, 2024
4451c20
gLastUsedAbility mostly updated
bassforte123 Dec 30, 2024
554e770
Trait Stack System started
bassforte123 Jan 2, 2025
2d61c81
fixed bug and updated protean
bassforte123 Jan 3, 2025
24ce2ca
Initial ability stack conversion
bassforte123 Jan 3, 2025
8a8fd5e
ability popup system updated
bassforte123 Jan 14, 2025
71b5f6c
Trait Stack updated to include Battler, Trait Stack Memory leak fixed
bassforte123 Jan 17, 2025
f25821c
gLastUsedBattlerAbility removed
bassforte123 Jan 17, 2025
a51845f
First Beta
bassforte123 Jan 25, 2025
3c3aff1
Update README.md
bassforte123 Jan 25, 2025
7a09c5b
Merge branch 'Trait-System' of https://github.com/bassforte123/pokeem…
bassforte123 Jan 25, 2025
829411b
Update README.md
bassforte123 Jan 25, 2025
434a54d
Update README.md
bassforte123 Jan 25, 2025
07fdb90
Update README.md
bassforte123 Jan 25, 2025
f05ad3a
Update README.md
bassforte123 Jan 25, 2025
3ece73f
Update README.md
bassforte123 Jan 25, 2025
b5dea97
Updated some missed abilities
bassforte123 Jan 26, 2025
c64a935
Merge branch 'Trait-System' of https://github.com/bassforte123/pokeem…
bassforte123 Jan 26, 2025
b3273d5
More updated abilities
bassforte123 Jan 26, 2025
78dca52
More abilities updated to traits
bassforte123 Jan 26, 2025
afb89f8
More ability clean up
bassforte123 Jan 26, 2025
b944f75
non battle abilities updated
bassforte123 Jan 27, 2025
922787b
Update README.md
bassforte123 Jan 27, 2025
0cd6ae0
Update pokemon.h
bassforte123 Jan 28, 2025
dec37ea
Rebase undone, Bugged crits fixed, back to stable Beta
bassforte123 Jan 30, 2025
0067dda
Post Branch Merge Troubleshooting
bassforte123 Feb 1, 2025
60529fe
AI troubleshooting
bassforte123 Feb 1, 2025
5db3030
Update battle_ai_switch_items.c
bassforte123 Feb 1, 2025
552857d
Troubleshooting merge
bassforte123 Feb 1, 2025
de68f86
Merge remote-tracking branch 'upstream/master'
bassforte123 Feb 1, 2025
04267b6
Merge branch 'master 1.10.3' into Trait-System
bassforte123 Feb 1, 2025
43e3e66
Initial merge to 1.10.3
bassforte123 Feb 1, 2025
aaffafb
testing
bassforte123 Feb 2, 2025
6b4cb06
Troubleshooting
bassforte123 Feb 2, 2025
e15fe33
removing troubleshooting flags
bassforte123 Feb 3, 2025
92f1701
Base testing for 1.10.3 complete (final testing still needed)
bassforte123 Feb 4, 2025
1eede95
Second Stable Beta
bassforte123 Feb 6, 2025
d3cdbe1
Beta 2 update
bassforte123 Feb 7, 2025
c391fe9
Stable beta update
bassforte123 Feb 15, 2025
e285d8d
Bug fixes
bassforte123 Feb 18, 2025
acb11b9
Summary Screen updated
bassforte123 Feb 20, 2025
5c5f014
Summary Screen completed
bassforte123 Feb 20, 2025
eb03cd5
Memo Screen removed
bassforte123 Feb 20, 2025
ab10b60
Test List updated
bassforte123 Feb 21, 2025
004905b
Revert "removing troubleshooting flags"
bassforte123 Feb 21, 2025
665671b
Merge remote-tracking branch 'upstream/master'
bassforte123 Feb 21, 2025
b2ba6c5
Removed troubleshooting flags
bassforte123 Feb 21, 2025
5bf2806
Bugfix: Unnerve displays
bassforte123 Feb 21, 2025
b0d0952
Run Away ability message fixed
bassforte123 Feb 24, 2025
e8d6676
Update battle_util.c
bassforte123 Feb 24, 2025
3d9b659
Merge tag '1.11.0'
bassforte123 Mar 26, 2025
d8f86b0
Base testing for 1.10.3 complete (final testing still needed)
bassforte123 Apr 11, 2025
4941fc8
1.11.0 merge complete Manual testing still needed
bassforte123 Apr 14, 2025
60d3a91
Merge tag 'expansion/1.11.1'
bassforte123 Apr 14, 2025
75c94ef
Merge branch 'master' into Trait-System
bassforte123 Apr 14, 2025
b328b32
Initial Release 1.11.1
bassforte123 Apr 14, 2025
44845c9
Test System updated to account for Innates
bassforte123 Apr 24, 2025
c10be67
Full Release (1.11.1)
bassforte123 Apr 30, 2025
c9811c2
Initial setup testing
bassforte123 Jul 2, 2025
615536a
Initial merge to 1.12.1
bassforte123 Jul 2, 2025
c511606
minor test update
bassforte123 Jul 2, 2025
3a30d37
Merge tag 'expansion/1.12.1' into Trait-System
bassforte123 Jul 2, 2025
ad268dd
Initial Merge Completed
bassforte123 Jul 2, 2025
26f9302
Typo fixes
bassforte123 Jul 4, 2025
e2b1788
Beta 1.12.1
bassforte123 Jul 7, 2025
38cb0a5
Release 1.12.1
bassforte123 Jul 10, 2025
9e6d802
Update README.md
bassforte123 Jul 10, 2025
5637f95
Update README.md
bassforte123 Jul 10, 2025
93c89bc
Update README.md
bassforte123 Jul 10, 2025
1677236
Update spread_moves.c
bassforte123 Jul 10, 2025
8c8b5ed
Minor cleanup
bassforte123 Jul 17, 2025
c74b014
Change battler innate handling
Aug 29, 2025
81d25d2
Merge tag 'expansion/1.13.1'
bassforte123 Sep 19, 2025
8530c37
Ball Fetch updated
bassforte123 Sep 20, 2025
5b9c550
Added exception for Strange Ball
bassforte123 Sep 21, 2025
da2a8c8
Merge pull request #2 from hedara90/improve-speed-of-innate-handling
bassforte123 Sep 21, 2025
8a86585
Capture/Ball Fetch Fixed
bassforte123 Sep 21, 2025
44fd999
Merge branch 'master' into Trait-System
bassforte123 Oct 3, 2025
df2c73a
Initial Merge Complete
bassforte123 Oct 21, 2025
56fda28
Merge to 1.13.1 Complete
bassforte123 Oct 25, 2025
5752cf2
AI Updated
bassforte123 Oct 26, 2025
051225a
Full Release 1.13.1
bassforte123 Oct 30, 2025
d6fb275
1.13.1 Hotfix
bassforte123 Oct 30, 2025
130bf88
Update README.md
bassforte123 Oct 30, 2025
09ed673
Merge tag 'expansion/1.14.0'
bassforte123 Dec 8, 2025
d0b4d89
Merge tag 'expansion/1.14.1'
bassforte123 Dec 8, 2025
d7a9662
Gorilla Tactics and White Herb fixes
bassforte123 Dec 11, 2025
537e7f3
Merge branch 'master' into Trait-System
bassforte123 Dec 16, 2025
1aaeceb
Initial merge
bassforte123 Dec 16, 2025
479cf95
Vanilla tests pass
bassforte123 Dec 19, 2025
0ddee41
Multitest troubleshooting
bassforte123 Dec 21, 2025
4ce5c1f
Incorporating #8611
bassforte123 Dec 21, 2025
6c4f0f2
Multi Ability Tests added: 1/3
bassforte123 Dec 24, 2025
6901fab
Improvements on Switch In and Stat conflicts
bassforte123 Dec 27, 2025
1ecc9b5
Multi Test cases 1/2 complete
bassforte123 Dec 29, 2025
9a91172
Multi Tests completed
bassforte123 Dec 30, 2025
a9a9e45
Clean up 1/2
bassforte123 Dec 31, 2025
ea3258c
removed unneeded ability variables
bassforte123 Jan 1, 2026
58a8600
Multi specific testing
bassforte123 Jan 4, 2026
f732c88
Multi Ability specific tests expanded
bassforte123 Jan 8, 2026
d44e9b8
End Turn ability conflicts fix in progress
bassforte123 Jan 9, 2026
ff0d08f
ability block testing
bassforte123 Jan 13, 2026
ca21f1c
1.14.1 Release
bassforte123 Jan 15, 2026
9484b58
Update README.md
bassforte123 Jan 15, 2026
ea0f1b7
Merge branch 'Master1.14.2' into Trait-System
bassforte123 Jan 15, 2026
aa11204
Merge to 1.14.2 complete
bassforte123 Jan 15, 2026
787c1cc
Tests updated for future toggleability
bassforte123 Jan 27, 2026
eeed797
Update test Multi to Traits
bassforte123 Jan 27, 2026
106b092
Item Abilities updated
bassforte123 Jan 31, 2026
1e925e4
Update README.md
bassforte123 Jan 31, 2026
3367b4a
Update README.md
bassforte123 Jan 31, 2026
0c9757b
Merge tag 'expansion/1.14.3' into Trait-System
bassforte123 Feb 10, 2026
6cf038e
Update to 1.14.3.1
bassforte123 Feb 11, 2026
dddfc67
weather transformation abilities update
bassforte123 Feb 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
35 changes: 35 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,38 @@
<img width="480" height="320" alt="image" src="https://github.com/user-attachments/assets/68460785-37b4-4562-bea1-d85ceed3b8ff" />

# Trait System (Release 1.14.2)

This is the full release of the Multi-Ability function I'm calling the Trait System!
Currently updated to Pokeemerald Expansion 1.14.2

The Trait System allows you to assign more than one ability to each pokemon for more complex and more interesting setups.

- General terminology I'm going for is:
- Ability = Same as vanilla.
- Innate = Additional abilities that are the same for all members of a species.
- Trait = Encompassing term for either one
Note: for the sake of making merging a little easier, "Ability" is still used in many places when "Trait" is intended.
- Abilities work exactly the same as vanilla where a pokemon could have one of 3 ability options, however Innates are fixed to each species and don't change.
- To add Innates you just need to add a new .innates parameter underneath the existing .abilities one using the same formatting. Example innate setups have been included commented out for all pokemon in the Gen 1 families.
- ex: .innates = { ABILITY_PROTEAN, ABILITY_ROUGH_SKIN, ABILITY_CLEAR_BODY },
- Uses the MAX_MON_INNATES variable to control how many Innates are available, default is 3 totaling up to 4 active abilities per pokemon. If you assign more innates than the max, surplus entries will simply be ignored. This means you could even set MAX_MON_INATES to 0 and you would functionally just get the original vanilla system.
- There is a new Summary Page "Traits" to display the four slots along with some color changes across the vanilla pages for color balance.
- Most effects that target Abilities still only target a pokemon's primary Ability, ignoring their Innates. Neutralizing Gas, Worry Seed, Trace, and Mummy for example all only affect Abilities but not Innates. Mold Breaker type Traits however work on everything, including Innates. (NOTE: Trace is also not designed to be an Innate since it replaces itself as part of its effect. Trace in particular should ALWAYS be assigned as an Ability or else you'll get an infinite loop lock.)
- The basic code design is all Ability checks have been replaced with Trait checks, reading all passives a pokemon has whenever an Ability is looked for. All previously mutually exclusive abilities like the weather ones which use a Switch Case format has been replaced with If statements so that they can all be called anyway (though natually any abilities that actually conflict will overwrite by code order, Drought and Snow Warning will both activate, but Snow Warning is later in the list so ultimately the weather will be snow/hail. Really this is only a consideration for future randomizer settings.)
- Reffer to the AbilityEffect enum table for a more detailed list of how timing interactions work. Most abilities will interact fine but there are exceptions such as abilities which activate during a terrain or weather change where only one ability in that timing window will activate at a time.
- If activated at the same time, Harvest, Pickup, and Ball Fetch will activate in that respective priority order.
- Ability popups have been modified into a Stack system so that when multiple abilities are triggered at once, they are stored then read out in the correct order. Battle Message logic has also been updated to account for the new timings.
- Make Test system updated to account for Innates as well, all vanilla tests involving Abilities are given a second copy suffixed (Multi) where the tested Ability is instead an Innate. There is also a new multi_abilities.c test file which contains more intensive innate specific tests such as potential conflicts in Traits or timings.
- A useful template for organizing pokemon and assigning Traits can be found here: https://docs.google.com/spreadsheets/d/1pNtGGapXx20svfM0PpztHYHJnbgvXHS8tc_i-h0a0Po/edit?gid=0#gid=0
Note that the Data sheet includes a collumn for automatically generating the .innate line to be added into Expansion's lists based on how you fill out the Pokemon's innate list.

- The AI system largely works the same just with Innates added on top and fixed. This means the AI can still treat Abilities as unknown until they learn what the Ability is directly, but Innates will always be treated as known.

Basic code bedrock design comes from old Emerald Redux code with permission.

Huge thanks to the RH Hideout discord community for their help, advice, and testing, especially Alex, Surskitty, Kleem, Meister_anon, and MGriffin who helped make this possible.


# About `pokeemerald-expansion`

![Gif that shows debugging functionality that is unique to pokeemerald-expansion such as rerolling Trainer ID, Cheat Start, PC from Debug Menu, Debug PC Fill, Pokémon Sprite Visualizer, Debug Warp to Map, and Battle Debug Menu](https://github.com/user-attachments/assets/cf9dfbee-4c6b-4bca-8e0a-07f116ef891c) ![Gif that shows overworld functionality that is unique to pokeemerald-expansion such as indoor running, BW2 style map popups, overworld followers, DNA Splicers, Gen 1 style fishing, OW Item descriptions, Quick Run from Battle, Use Last Ball, Wild Double Battles, and Catch from EXP](https://github.com/user-attachments/assets/383af243-0904-4d41-bced-721492fbc48e) ![Gif that shows off a number of modern Pokémon battle mechanics happening in the pokeemerald-expansion engine: 2 vs 1 battles, modern Pokémon, items, moves, abilities, fully customizable opponents and partners, Trainer Slides, and generational gimmicks](https://github.com/user-attachments/assets/50c576bc-415e-4d66-a38f-ad712f3316be)
Expand Down
9 changes: 8 additions & 1 deletion asm/macros/battle_script.inc
Original file line number Diff line number Diff line change
Expand Up @@ -1252,8 +1252,9 @@
.4byte \jumpInstr
.endm

.macro tryrecycleitem failInstr:req
.macro tryrecycleitem type:req, failInstr:req
.byte 0xea
.byte \type
.4byte \failInstr
.endm

Expand Down Expand Up @@ -2469,3 +2470,9 @@
.macro tryabsorbtoxicspikesonfaint
callnative BS_TryAbsorbToxicSpikesOnFaint
.endm

.macro pushtraitstack battler:req, ability:req
callnative BS_PushTraitStack
.byte \battler
.2byte \ability
.endm
4 changes: 4 additions & 0 deletions charmap.txt
Original file line number Diff line number Diff line change
Expand Up @@ -426,6 +426,10 @@ B_PARTNER_NAME_WITH_CLASS = FD 44
B_ATK_TRAINER_NAME_WITH_CLASS = FD 45
B_EFF_TEAM1 = FD 46
B_EFF_TEAM2 = FD 47
B_EFF2_TEAM1 = FD 48
B_EFF2_TEAM2 = FD 49
B_DEF_ABILITY2 = FD 4A
B_ATK_PARTNER_NAME_WITH_PREFIX = FD 4B

@ indicates the end of a town/city name (before " TOWN" or " CITY")
NAME_END = FC 00
Expand Down
Loading