diff options
| author | ElectroDeoxys <ElectroDeoxys@gmail.com> | 2019-09-16 21:15:28 +0100 | 
|---|---|---|
| committer | ElectroDeoxys <ElectroDeoxys@gmail.com> | 2019-09-16 21:15:28 +0100 | 
| commit | d7de7b06afffc0cc5df4ca82acb918d6f808820b (patch) | |
| tree | 284441cc40365c7fc56b8d882b2f5730c6c35c8c /src | |
| parent | f448efd6d47f98f7b6b12825739b13c3e954c81b (diff) | |
Work on AIPlaySuperPotion
Diffstat (limited to 'src')
| -rw-r--r-- | src/engine/bank08.asm | 67 | 
1 files changed, 49 insertions, 18 deletions
| diff --git a/src/engine/bank08.asm b/src/engine/bank08.asm index d4f6258..5dd1a16 100644 --- a/src/engine/bank08.asm +++ b/src/engine/bank08.asm @@ -290,7 +290,7 @@ FindTargetCardForPotion: ; 20204 (8:4204)  	call GetTurnDuelistVariable  	cp $ff  	ret z -	call CheckIfEitherAttackHaveBoostIfTakenDamageEffect +	call .check_boost_if_taken_damage	  	jr c, .has_boost_damage  	call GetCardDamage  	cp 20 ; if damage >= 20 @@ -339,7 +339,7 @@ FindTargetCardForPotion: ; 20204 (8:4204)  ; return carry if either of the attacks are usable  ; and have the BOOST_IF_TAKEN_DAMAGE effect. -CheckIfEitherAttackHaveBoostIfTakenDamageEffect: ; 2027e (8:427e) +.check_boost_if_taken_damage ; 2027e (8:427e)  	push de  	xor a ; first attack  	ld [wSelectedMoveIndex], a @@ -352,11 +352,11 @@ CheckIfEitherAttackHaveBoostIfTakenDamageEffect: ; 2027e (8:427e)  	ld a, $01 ; second attack  	ld [wSelectedMoveIndex], a  	farcall CheckIfSelectedMoveIsUnusable -	jr c, .no_carry +	jr c, .false  	ld a, MOVE_FLAG3_ADDRESS | BOOST_IF_TAKEN_DAMAGE_F  	call CheckLoadedMoveFlag  	jr c, .set_carry -.no_carry +.false  	pop de  	or a  	ret @@ -400,7 +400,7 @@ CheckIfSuperPotionPreventsKnockOut: ; 202cc (8:42cc)  	xor a  	ldh [hTempPlayAreaLocation_ff9d], a  	ld e, a -	call CheckIfHasAttachedEnergy +	call .check_attached_energy  	ret nc  	farcall CheckIfDefendingPokemonCanKnockOut  	jr nc, .no_carry @@ -433,9 +433,7 @@ CheckIfSuperPotionPreventsKnockOut: ; 202cc (8:42cc)  ; 0x20305  ; returns carry if card has energies attached. -; input: -;	e = location to check, i.e. PLAY_AREA_* -CheckIfHasAttachedEnergy: ; 20305 (8:4305) +.check_attached_energy ; 20305 (8:4305)  	call GetPlayAreaCardAttachedEnergies  	ld a, [wTotalAttachedEnergies]  	or a @@ -497,16 +495,16 @@ FindTargetCardForSuperPotion: ; 2030f (8:430f)  	cp $ff  	ret z  	ld d, a -	call Func_20394 -	jr nc, .asm_20366 -	call Func_2039e -	jr c, .asm_20366 +	call .check_attached_energy +	jr nc, .next +	call .check_boost_if_taken_damage +	jr c, .next  	call Func_203c8 -	jr c, .asm_20366 +	jr c, .next  	call GetCardDamage  	cp 40 ; if damage >= 40  	jr nc, .found -.asm_20366 +.next  	inc e  	jr .loop @@ -548,11 +546,44 @@ FindTargetCardForSuperPotion: ; 2030f (8:430f)  	ret  ; 0x20394 -Func_20394: ; 20394 (8:4394) -	INCROM $20394, $2039e +; returns carry if card has energies attached. +.check_attached_energy ; 20394 (8:4394) +	call GetPlayAreaCardAttachedEnergies +	ld a, [wTotalAttachedEnergies] +	or a +	ret z +	scf +	ret +; 0x2039e -Func_2039e: ; 2039e (8:439e) -	INCROM $2039e, $203c8 +; return carry if either of the attacks are usable +; and have the BOOST_IF_TAKEN_DAMAGE effect. +.check_boost_if_taken_damage ; 2039e (8:439e) +	push de +	xor a ; first attack +	ld [wSelectedMoveIndex], a +	farcall CheckIfSelectedMoveIsUnusable +	jr c, .second_attack +	ld a, MOVE_FLAG3_ADDRESS | BOOST_IF_TAKEN_DAMAGE_F +	call CheckLoadedMoveFlag +	jr c, .set_carry +.second_attack +	ld a, $01 ; second attack +	ld [wSelectedMoveIndex], a +	farcall CheckIfSelectedMoveIsUnusable +	jr c, .false +	ld a, MOVE_FLAG3_ADDRESS | BOOST_IF_TAKEN_DAMAGE_F +	call CheckLoadedMoveFlag +	jr c, .set_carry +.false +	pop de +	or a +	ret +.set_carry +	pop de +	scf +	ret +; 0x203c8  Func_203c8: ; 203c8 (8:43c8)  	INCROM $203c8, $2282e | 
