pokecrystal-board/engine/events/move_deleter.asm

151 lines
2.1 KiB
NASM

MoveDeletion:
ld hl, .DeleterIntroText
call PrintText1bpp
call YesNoBox
jr c, .declined
ld hl, .DeleterAskWhichMonText
call PrintText1bpp
farcall SelectMonFromParty
jr c, .declined
ld a, [wCurPartySpecies]
cp EGG
jr z, .egg
ld a, [wCurPartyMon]
ld hl, wPartyMon1Moves + 1
ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld a, [hl]
and a
jr z, .onlyonemove
ld hl, .DeleterAskWhichMoveText
call PrintText1bpp
call LoadStandardMenuHeader
farcall ChooseMoveToDelete
push af
call ReturnToMapWithSpeechTextbox
pop af
jr c, .declined
ld a, [wMenuCursorY]
push af
ld a, [wCurSpecies]
ld [wNamedObjectIndex], a
call GetMoveName
ld hl, .AskDeleteMoveText
call PrintText1bpp
call YesNoBox
pop bc
jr c, .declined
call .DeleteMove
call WaitSFX
ld de, SFX_MOVE_DELETED
call PlaySFX
call WaitSFX
ld hl, .DeleterForgotMoveText
call PrintText1bpp
ret
.egg
ld hl, .MailEggText
call PrintText1bpp
ret
.declined
ld hl, .DeleterNoComeAgainText
call PrintText1bpp
ret
.onlyonemove
ld hl, .MoveKnowsOneText
call PrintText1bpp
ret
.MoveKnowsOneText:
text_far _MoveKnowsOneText
text_end
.AskDeleteMoveText:
text_far _AskDeleteMoveText
text_end
.DeleterForgotMoveText:
text_far _DeleterForgotMoveText
text_end
.MailEggText:
text_far _DeleterEggText
text_end
.DeleterNoComeAgainText:
text_far _DeleterNoComeAgainText
text_end
.DeleterAskWhichMoveText:
text_far _DeleterAskWhichMoveText
text_end
.DeleterIntroText:
text_far _DeleterIntroText
text_end
.DeleterAskWhichMonText:
text_far _DeleterAskWhichMonText
text_end
.DeleteMove:
ld a, b
push bc
dec a
ld c, a
ld b, 0
ld hl, wPartyMon1Moves
add hl, bc
ld a, [wCurPartyMon]
ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
pop bc
push bc
inc b
.loop
ld a, b
cp NUM_MOVES + 1
jr z, .okay
inc hl
ld a, [hld]
ld [hl], a
inc hl
inc b
jr .loop
.okay
xor a
ld [hl], a
pop bc
ld a, b
push bc
dec a
ld c, a
ld b, 0
ld hl, wPartyMon1PP
add hl, bc
ld a, [wCurPartyMon]
ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
pop bc
inc b
.loop2
ld a, b
cp NUM_MOVES + 1
jr z, .done
inc hl
ld a, [hld]
ld [hl], a
inc hl
inc b
jr .loop2
.done
xor a
ld [hl], a
ret