pokecrystal-board/engine/events/move_deleter.asm

167 lines
2.5 KiB
NASM
Raw Normal View History

MoveDeletion:
ld hl, .IntroText
2015-02-11 13:20:22 -08:00
call PrintText
call YesNoBox
jr c, .declined
ld hl, .AskWhichMonText
2015-02-11 13:20:22 -08:00
call PrintText
2017-12-24 09:47:30 -08:00
farcall SelectMonFromParty
jr c, .declined
2018-01-23 14:39:09 -08:00
ld a, [wCurPartySpecies]
2015-02-11 13:20:22 -08:00
cp EGG
jr z, .egg
2018-01-23 14:39:09 -08:00
ld a, [wCurPartyMon]
ld hl, wPartyMon1Moves + 1
ld bc, PARTYMON_STRUCT_LENGTH
2015-02-11 13:20:22 -08:00
call AddNTimes
ld a, [hl]
and a
jr z, .onlyonemove
ld hl, .AskWhichMoveText
2015-02-11 13:20:22 -08:00
call PrintText
call LoadStandardMenuHeader
2017-12-24 09:47:30 -08:00
farcall ChooseMoveToDelete
2015-02-11 13:20:22 -08:00
push af
2015-12-18 17:07:09 -08:00
call ReturnToMapWithSpeechTextbox
2015-02-11 13:20:22 -08:00
pop af
jr c, .declined
2015-12-15 15:59:49 -08:00
ld a, [wMenuCursorY]
2015-02-11 13:20:22 -08:00
push af
2018-01-23 14:39:09 -08:00
ld a, [wCurSpecies]
2015-02-11 13:20:22 -08:00
ld [wd265], a
call GetMoveName
ld hl, .ConfirmDeleteText
2015-02-11 13:20:22 -08:00
call PrintText
call YesNoBox
pop bc
jr c, .declined
call .DeleteMove
2015-02-11 13:20:22 -08:00
call WaitSFX
ld de, SFX_MOVE_DELETED
call PlaySFX
call WaitSFX
ld hl, .MoveDeletedText
2015-02-11 13:20:22 -08:00
call PrintText
ret
.egg
ld hl, .EggText
2015-02-11 13:20:22 -08:00
call PrintText
ret
.declined
ld hl, .DeclinedDeletionText
2015-02-11 13:20:22 -08:00
call PrintText
ret
.onlyonemove
ld hl, .OnlyOneMoveText
2015-02-11 13:20:22 -08:00
call PrintText
ret
.OnlyOneMoveText: ; 0x2c5d1
2015-02-11 13:20:22 -08:00
; That #MON knows only one move.
text_jump UnknownText_0x1c5eba
db "@"
; 0x2c5d6
.ConfirmDeleteText: ; 0x2c5d6
2015-02-11 13:20:22 -08:00
; Oh, make it forget @ ?
text_jump UnknownText_0x1c5eda
db "@"
; 0x2c5db
.MoveDeletedText: ; 0x2c5db
2015-02-11 13:20:22 -08:00
; Done! Your #MON forgot the move.
text_jump UnknownText_0x1c5ef5
db "@"
; 0x2c5e0
.EggText: ; 0x2c5e0
2015-02-11 13:20:22 -08:00
; An EGG doesn't know any moves!
text_jump UnknownText_0x1c5f17
db "@"
; 0x2c5e5
.DeclinedDeletionText: ; 0x2c5e5
2015-02-11 13:20:22 -08:00
; No? Come visit me again.
text_jump UnknownText_0x1c5f36
db "@"
; 0x2c5ea
.AskWhichMoveText: ; 0x2c5ea
2015-02-11 13:20:22 -08:00
; Which move should it forget, then?
text_jump UnknownText_0x1c5f50
db "@"
; 0x2c5ef
.IntroText: ; 0x2c5ef
2015-02-11 13:20:22 -08:00
; Um… Oh, yes, I'm the MOVE DELETER. I can make #MON forget moves. Shall I make a #MON forget?
text_jump UnknownText_0x1c5f74
db "@"
; 0x2c5f4
.AskWhichMonText: ; 0x2c5f4
2015-02-11 13:20:22 -08:00
; Which #MON?
text_jump UnknownText_0x1c5fd1
db "@"
; 0x2c5f9
.DeleteMove: ; 2c5f9
2015-02-11 13:20:22 -08:00
ld a, b
push bc
dec a
ld c, a
ld b, 0
2018-01-23 14:39:09 -08:00
ld hl, wPartyMon1Moves
2015-02-11 13:20:22 -08:00
add hl, bc
2018-01-23 14:39:09 -08:00
ld a, [wCurPartyMon]
ld bc, PARTYMON_STRUCT_LENGTH
2015-02-11 13:20:22 -08:00
call AddNTimes
pop bc
push bc
inc b
.loop
2015-02-11 13:20:22 -08:00
ld a, b
cp NUM_MOVES + 1
jr z, .okay
2015-02-11 13:20:22 -08:00
inc hl
ld a, [hld]
ld [hl], a
inc hl
inc b
jr .loop
2015-02-11 13:20:22 -08:00
.okay
2015-02-11 13:20:22 -08:00
xor a
ld [hl], a
pop bc
ld a, b
push bc
dec a
ld c, a
ld b, 0
2018-01-23 14:39:09 -08:00
ld hl, wPartyMon1PP
2015-02-11 13:20:22 -08:00
add hl, bc
2018-01-23 14:39:09 -08:00
ld a, [wCurPartyMon]
ld bc, PARTYMON_STRUCT_LENGTH
2015-02-11 13:20:22 -08:00
call AddNTimes
pop bc
inc b
.loop2
2015-02-11 13:20:22 -08:00
ld a, b
cp NUM_MOVES + 1
jr z, .done
2015-02-11 13:20:22 -08:00
inc hl
ld a, [hld]
ld [hl], a
inc hl
inc b
jr .loop2
2015-02-11 13:20:22 -08:00
.done
2015-02-11 13:20:22 -08:00
xor a
ld [hl], a
ret