shithub: pokecrystal

ref: 2b4a4ccaab3d04fe593bcea9739f56c0673dad24
dir: /engine/battle/effect_commands/thief.asm/

View raw version
BattleCommand_Thief: ; 37492
; thief

	ld a, [hBattleTurn]
	and a
	jr nz, .enemy

; The player needs to be able to steal an item.

	call .playeritem
	ld a, [hl]
	and a
	ret nz

; The enemy needs to have an item to steal.

	call .enemyitem
	ld a, [hl]
	and a
	ret z

; Can't steal mail.

	ld [wd265], a
	ld d, a
	farcall ItemIsMail
	ret c

	ld a, [EffectFailed]
	and a
	ret nz

	ld a, [wLinkMode]
	and a
	jr z, .stealenemyitem

	ld a, [wBattleMode]
	dec a
	ret z

.stealenemyitem
	call .enemyitem
	xor a
	ld [hl], a
	ld [de], a

	call .playeritem
	ld a, [wd265]
	ld [hl], a
	ld [de], a
	jr .stole


.enemy

; The enemy can't already have an item.

	call .enemyitem
	ld a, [hl]
	and a
	ret nz

; The player must have an item to steal.

	call .playeritem
	ld a, [hl]
	and a
	ret z

; Can't steal mail!

	ld [wd265], a
	ld d, a
	farcall ItemIsMail
	ret c

	ld a, [EffectFailed]
	and a
	ret nz

; If the enemy steals your item,
; it's gone for good if you don't get it back.

	call .playeritem
	xor a
	ld [hl], a
	ld [de], a

	call .enemyitem
	ld a, [wd265]
	ld [hl], a
	ld [de], a


.stole
	call GetItemName
	ld hl, StoleText
	jp StdBattleTextBox


.playeritem
	ld a, 1
	call BattlePartyAttr
	ld d, h
	ld e, l
	ld hl, BattleMonItem
	ret

.enemyitem
	ld a, 1
	call OTPartyAttr
	ld d, h
	ld e, l
	ld hl, EnemyMonItem
	ret
; 37517