shithub: pokecrystal

ref: 4756027ee095670cdc3069d480cb63363051795e
dir: /battle/effects/thief.asm/

View raw version
BattleCommand50: ; 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 [$d265], a
	ld d, a
	callba ItemIsMail
	ret c

	ld a, [EffectFailed]
	and a
	ret nz

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

	ld a, [IsInBattle]
	dec a
	ret z

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

	call .playeritem
	ld a, [$d265]
	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 [$d265], a
	ld d, a
	callba 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, [$d265]
	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