ref: d0d61cb3ab847ff0c72a840363b89d4acf05b5f5
parent: 080704e49f49777baac124d1bba8c1066acd1bb1
parent: 0e76127da878efbe86997eb5a58e6bcd4bf66ff5
author: yenatch <yenatch@gmail.com>
date: Sat Jun 24 13:43:48 EDT 2017
Merge pull request #354 from FredrIQ/comments Fix a reversed label mistake and reference a major bug
--- a/battle/ai/items.asm
+++ b/battle/ai/items.asm
@@ -238,7 +238,7 @@
res SUBSTATUS_RAGE, [hl]
xor a
- ld [LastPlayerCounterMove], a
+ ld [LastEnemyCounterMove], a
scf
ret
--- a/battle/ai/scoring.asm
+++ b/battle/ai/scoring.asm
@@ -756,7 +756,7 @@
AI_Smart_MirrorMove: ; 3895b
; If the player did not use any move last turn...
- ld a, [LastEnemyCounterMove]
+ ld a, [LastPlayerCounterMove]
and a
jr nz, .asm_38968
@@ -1353,7 +1353,7 @@
AI_Smart_Mimic: ; 38ba8
- ld a, [LastEnemyCounterMove]
+ ld a, [LastPlayerCounterMove]
and a
jr z, .asm_38be9
@@ -1361,7 +1361,7 @@
jr nc, .asm_38bef
push hl
- ld a, [LastEnemyCounterMove]
+ ld a, [LastPlayerCounterMove]
call AIGetEnemyMove
ld a, $1
@@ -1380,7 +1380,7 @@
dec [hl]
.asm_38bd4
- ld a, [LastEnemyCounterMove]
+ ld a, [LastPlayerCounterMove]
push hl
ld hl, UsefulMoves
ld de, 1
@@ -1438,7 +1438,7 @@
cp $3
jr nc, .asm_38c30
- ld a, [LastEnemyCounterMove]
+ ld a, [LastPlayerCounterMove]
and a
jr z, .asm_38c38
@@ -1499,7 +1499,7 @@
.asm_38c68
push hl
- ld a, [LastEnemyCounterMove]
+ ld a, [LastPlayerCounterMove]
ld hl, .EncoreMoves
ld de, 1
call IsInArray
@@ -1615,7 +1615,7 @@
AI_Smart_Spite: ; 38cd5
- ld a, [LastEnemyCounterMove]
+ ld a, [LastPlayerCounterMove]
and a
jr nz, .asm_38ce7
@@ -1837,7 +1837,7 @@
jr nc, .asm_38df3
push hl
- ld a, [LastEnemyCounterMove]
+ ld a, [LastPlayerCounterMove]
ld hl, UsefulMoves
ld de, 1
call IsInArray
@@ -2367,7 +2367,7 @@
AI_Smart_Earthquake: ; 39044
; Greatly encourage this move if the player is underground and the enemy is faster.
- ld a, [LastEnemyCounterMove]
+ ld a, [LastPlayerCounterMove]
cp DIG
ret nz
@@ -2741,7 +2741,7 @@
cp $3
jr nc, .asm_391ca
- ld a, [LastEnemyCounterMove]
+ ld a, [LastPlayerCounterMove]
and a
jr z, .asm_391d2
@@ -2775,7 +2775,7 @@
AI_Smart_Gust: ; 391d5
; Greatly encourage this move if the player is flying and the enemy is faster.
- ld a, [LastEnemyCounterMove]
+ ld a, [LastPlayerCounterMove]
cp FLY
ret nz
--- a/battle/ai/switch.asm
+++ b/battle/ai/switch.asm
@@ -229,7 +229,7 @@
cp 11
ret nc
- ld a, [LastEnemyCounterMove]
+ ld a, [LastPlayerCounterMove]
and a
jr z, .no_last_counter_move
@@ -378,8 +378,8 @@
ld [CurSpecies], a
call GetBaseData
- ; the enemy's last move is damaging...
- ld a, [LastEnemyCounterMove]
+ ; the player's last move is damaging...
+ ld a, [LastPlayerCounterMove]
dec a
ld hl, Moves + MOVE_POWER
call GetMoveAttr
@@ -568,7 +568,7 @@
push hl
ld [CurSpecies], a
call GetBaseData
- ld a, [LastEnemyCounterMove]
+ ld a, [LastPlayerCounterMove]
and a
jr z, .skip_move
--- a/battle/core.asm
+++ b/battle/core.asm
@@ -3366,8 +3366,8 @@
ResetEnemyBattleVars: ; 3d557
; and draw empty TextBox
xor a
- ld [LastEnemyCounterMove], a
ld [LastPlayerCounterMove], a
+ ld [LastEnemyCounterMove], a
ld [LastEnemyMove], a
ld [CurEnemyMove], a
dec a
@@ -3766,8 +3766,8 @@
NewEnemyMonStatus: ; 3d834
xor a
- ld [LastEnemyCounterMove], a
ld [LastPlayerCounterMove], a
+ ld [LastEnemyCounterMove], a
ld [LastEnemyMove], a
ld hl, EnemySubStatus1
rept 4
@@ -4217,8 +4217,8 @@
ld [CurMoveNum], a
ld [TypeModifier], a
ld [wPlayerMoveStruct + MOVE_ANIM], a
- ld [LastEnemyCounterMove], a
ld [LastPlayerCounterMove], a
+ ld [LastEnemyCounterMove], a
ld [LastPlayerMove], a
call CheckAmuletCoin
call FinishBattleAnim
@@ -4258,8 +4258,8 @@
NewBattleMonStatus: ; 3dbde
xor a
- ld [LastEnemyCounterMove], a
ld [LastPlayerCounterMove], a
+ ld [LastEnemyCounterMove], a
ld [LastPlayerMove], a
ld hl, PlayerSubStatus1
rept 4
--- a/battle/effect_commands.asm
+++ b/battle/effect_commands.asm
@@ -971,7 +971,7 @@
.EndDisobedience:
xor a
ld [LastPlayerMove], a
- ld [LastEnemyCounterMove], a
+ ld [LastPlayerCounterMove], a
; Break Encore too.
ld hl, PlayerSubStatus5
@@ -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
--- a/home/battle.asm
+++ b/home/battle.asm
@@ -227,7 +227,7 @@
dw wPlayerMoveStructPower, wEnemyMoveStructPower
dw wPlayerMoveStructType, wEnemyMoveStructType
dw CurPlayerMove, CurEnemyMove
- dw LastEnemyCounterMove, LastPlayerCounterMove
+ dw LastPlayerCounterMove, LastEnemyCounterMove
dw LastPlayerMove, LastEnemyMove
; 3a90
--- a/misc/mobile_5c.asm
+++ b/misc/mobile_5c.asm
@@ -206,7 +206,7 @@
; 170c8b
Function170c8b: ; 170c8b
- ld hl, LastPlayerCounterMove
+ ld hl, LastEnemyCounterMove
ld b, $5
.asm_170c90
ld a, [hl]
--- a/wram.asm
+++ b/wram.asm
@@ -635,9 +635,9 @@
wWhichMonFaintedFirst:: ds 1
; exists so you can't counter on switch
-LastEnemyCounterMove:: ; c6f8
+LastPlayerCounterMove:: ; c6f8
ds 1
-LastPlayerCounterMove:: ; c6f9
+LastEnemyCounterMove:: ; c6f9
ds 1
wEnemyMinimized:: ds 1 ; c6fa