ref: 9b8f57a7308691f67f9025b5dcc621941dbc3afd
parent: f8455e9b4f0270811dac718810811292beb41da6
author: Fredrik Ljungdahl <[email protected]>
date: Sat Jan 7 20:33:38 EST 2017
Explain a major AI-related bug with type matchup checks
--- a/battle/effect_commands.asm
+++ b/battle/effect_commands.asm
@@ -1542,6 +1542,12 @@
jr z, CheckTypeMatchup
ld hl, BattleMonType1
CheckTypeMatchup: ; 347d3
+; There is an incorrect assumption about this function made in the AI related code: when
+; the AI calls CheckTypeMatchup (not BattleCheckTypeMatchup), it assumes that placing the
+; offensive type in a will make this function do the right thing. Since a is overwritten,
+; this assumption is incorrect. A simple fix would be to load the move type for the
+; current move into a in BattleCheckTypeMatchup, before falling through, which is
+; consistent with how the rest of the code assumes this code works like.
push hl
push de
push bc