summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElectroDeoxys <ElectroDeoxys@gmail.com>2019-07-27 13:42:10 +0100
committerElectroDeoxys <ElectroDeoxys@gmail.com>2019-08-07 23:24:59 +0100
commitdbb18d2deb3dc8a8013b710c93e24b68e23b528f (patch)
tree6c206c44e958ad7a84fbd15d7f4067236fc229e6
parentc3d8aa9869650d1f15bcc4abb58c4226dfe2840c (diff)
Label Func_158b2
-rw-r--r--src/engine/bank05.asm141
1 files changed, 98 insertions, 43 deletions
diff --git a/src/engine/bank05.asm b/src/engine/bank05.asm
index 38a3719..c4a6f86 100644
--- a/src/engine/bank05.asm
+++ b/src/engine/bank05.asm
@@ -1205,130 +1205,147 @@ Func_158b2: ; 158b2 (5:58b2)
ld a, DUELVARS_ARENA_CARD_STATUS
call GetTurnDuelistVariable
or a
- jr z, .asm_158f1 ; no status
+ jr z, .check_ko ; no status
and DOUBLE_POISONED
- jr z, .asm_158e5 ; no poison
+ jr z, .check_cnf ; no poison
ld a, $02
call AddToWcdbe
-
-.asm_158e5
+.check_cnf
ld a, [hl]
- and $0f
- cp $01
- jr nz, .asm_158f1
+ and CNF_SLP_PRZ
+ cp CONFUSED
+ jr nz, .check_ko
ld a, $01
call AddToWcdbe
-.asm_158f1
+.check_ko
xor a
ldh [hTempPlayAreaLocation_ff9d], a
call CheckIfAnyMoveKnocksOutDefendingCard
- jr nc, .active_cant_knock_out
+ jr nc, .active_cant_ko
call CheckIfCardCanUseSelectedMove
jp nc, .active_cant_use_move
call LookForEnergyNeededInHand
- jr nc, .active_cant_knock_out
+ jr nc, .active_cant_ko
.active_cant_use_move
ld a, $05
call SubFromWcdbe
ld a, [wAIOpponentPrizeCount]
cp 2
- jr nc, .active_cant_knock_out
+ jr nc, .active_cant_ko
ld a, $23
call SubFromWcdbe
-.active_cant_knock_out
+.active_cant_ko
call CheckIfDefendingPokemonCanKnockOut
- jr nc, .asm_15930
+ jr nc, .defending_cant_ko
ld a, $02
call AddToWcdbe
- call Func_17426
- jr c, .asm_1594d
+
+ call CheckIfNotABossDeckID
+ jr c, .check_resistance_1
ld a, [wAIPlayerPrizeCount]
cp 2
jr nc, .asm_15941
ld a, $01
ld [$cdd7], a
-.asm_15930
- call Func_17426
- jr c, .asm_1594d
+
+.defending_cant_ko
+ call CheckIfNotABossDeckID
+ jr c, .check_resistance_1
ld a, [wAIPlayerPrizeCount]
cp 2
jr nc, .asm_15941
ld a, $02
call AddToWcdbe
+
.asm_15941
ld a, [wAIOpponentPrizeCount]
cp 2
- jr nc, .asm_1594d
+ jr nc, .check_resistance_1
ld a, $02
call SubFromWcdbe
-.asm_1594d
+
+.check_resistance_1
call GetArenaCardColor
call TranslateColorToWR
ld b, a
ld a, [wAIPlayerResistance]
and b
- jr z, .asm_15980
+ jr z, .check_weakness_1
ld a, $01
call AddToWcdbe
+
+; check bench for Pokémon that
+; the defending card is not resistant to
+; if one is found, skip SubFromWcdbe
ld a, [wAIPlayerResistance]
ld b, a
ld a, DUELVARS_BENCH
call GetTurnDuelistVariable
-.asm_15968
+.loop_resistance_1
ld a, [hli]
cp $ff
- jr z, .asm_1597b
+ jr z, .exit_loop_resistance_1
call LoadCardDataToBuffer1_FromDeckIndex
ld a, [wLoadedCard1Type]
call TranslateColorToWR
and b
- jr nz, .asm_15968
- jr .asm_15980
-.asm_1597b
+ jr nz, .loop_resistance_1
+ jr .check_weakness_1
+.exit_loop_resistance_1
ld a, $02
call SubFromWcdbe
-.asm_15980
+
+.check_weakness_1
ld a, [wAIPlayerColor]
ld b, a
call GetArenaCardWeakness
and b
- jr z, .asm_159ad
+ jr z, .check_resistance_2
ld a, $02
call AddToWcdbe
+
+; check bench for Pokémon that
+; is not weak to defending Pokémon
+; if one is found, skip SubFromWcdbe
ld a, [wAIPlayerColor]
ld b, a
ld a, DUELVARS_BENCH
call GetTurnDuelistVariable
-.asm_15998
+.loop_weakness_1
ld a, [hli]
cp $ff
- jr z, .asm_159a8
+ jr z, .exit_loop_weakness_1
call LoadCardDataToBuffer1_FromDeckIndex
ld a, [wLoadedCard1Weakness]
and b
- jr nz, .asm_15998
- jr .asm_159ad
-.asm_159a8
+ jr nz, .loop_weakness_1
+ jr .check_resistance_2
+.exit_loop_weakness_1
ld a, $03
call SubFromWcdbe
-.asm_159ad
+
+.check_resistance_2
ld a, [wAIPlayerColor]
ld b, a
call GetArenaCardResistance
and b
- jr z, .asm_159bc
+ jr z, .check_weakness_2
ld a, $03
call SubFromWcdbe
-.asm_159bc
+
+; check bench for Pokémon that
+; is the defending Pokémon's weakness
+; if none is found, skip AddFromWcdbe
+.check_weakness_2
ld a, [wAIPlayerWeakness]
ld b, a
ld a, DUELVARS_BENCH
call GetTurnDuelistVariable
ld e, $00
-.asm_159c7
+.loop_weakness_2
inc e
ld a, [hli]
cp $ff
@@ -1339,9 +1356,10 @@ Func_158b2: ; 158b2 (5:58b2)
call TranslateColorToWR
pop de
and b
- jr z, .asm_159c7
+ jr z, .loop_weakness_2
ld a, $02
call AddToWcdbe
+
push de
ld a, DUELVARS_ARENA_CARD
call GetTurnDuelistVariable
@@ -1413,7 +1431,7 @@ Func_158b2: ; 158b2 (5:58b2)
ld a, [wAIOpponentPrizeCount]
cp 2
jr nc, .asm_15a7a
- call Func_17426
+ call CheckIfNotABossDeckID
jr c, .asm_15a7a
xor a
ldh [hTempPlayAreaLocation_ff9d], a
@@ -2031,8 +2049,45 @@ CheckIfDefendingPokemonCanKnockOutWithMove: ; 173e4 (5:73e4)
ret
; 0x17414
-Func_17414 ; 17414 (5:7414)
- INCROM $17414, $17426
+; sets carry if Opponent's deck ID
+; is between LEGENDARY_MOLTRES_DECK_ID (inclusive)
+; and MUSCLES_FOR_BRAINS_DECK_ID (exclusive)
+; these are the decks for Grandmaster/Club Master/Ronald
+CheckIfOpponentHasBossDeckID: ; 17414 (5:7414)
+ push af
+ ld a, [wOpponentDeckID]
+ cp LEGENDARY_MOLTRES_DECK_ID
+ jr c, .no_carry
+ cp MUSCLES_FOR_BRAINS_DECK_ID
+ jr nc, .no_carry
+ pop af
+ scf
+ ret
+
+.no_carry
+ pop af
+ or a
+ ret
+; 0x17426
+
+; sets carry if not a boss fight
+; and if s0a00a == 0
+CheckIfNotABossDeckID: ; 17426 (5:7426)
+ call EnableSRAM
+ ld a, [s0a00a]
+ call DisableSRAM
+ or a
+ jr nz, .no_carry
+ call CheckIfOpponentHasBossDeckID
+ jr nc, .carry
+.no_carry
+ or a
+ ret
+
+.carry
+ scf
+ ret
+; 0x1743b
-Func_17426 ; 17426 (5:7426)
- INCROM $17426, $18000 \ No newline at end of file
+Func_1743b ; 1743b (5:743b)
+ INCROM $1743b, $18000 \ No newline at end of file