mirror of
https://github.com/pret/pokeyellow.git
synced 2026-05-27 13:32:36 -05:00
349 lines
7.1 KiB
NASM
Executable File
349 lines
7.1 KiB
NASM
Executable File
DoInGameTradeDialogue: ; 71b86 (1c:5b86)
|
|
; trigger the trade offer/action specified by wWhichTrade
|
|
call SaveScreenTilesToBuffer2
|
|
ld hl,TradeMons
|
|
ld a,[wWhichTrade]
|
|
ld bc,$e
|
|
call AddNTimes
|
|
ld a,[hli]
|
|
ld [wInGameTradeGiveMonSpecies],a
|
|
ld a,[hli]
|
|
ld [wInGameTradeReceiveMonSpecies],a
|
|
ld a,[hli]
|
|
push af
|
|
ld de,wInGameTradeMonNick
|
|
ld bc, NAME_LENGTH
|
|
call CopyData
|
|
pop af
|
|
ld l,a
|
|
ld h,0
|
|
ld de,InGameTradeTextPointers
|
|
add hl,hl
|
|
add hl,de
|
|
ld a,[hli]
|
|
ld [wInGameTradeTextPointerTablePointer],a
|
|
ld a,[hl]
|
|
ld [wInGameTradeTextPointerTablePointer + 1],a
|
|
ld a,[wInGameTradeGiveMonSpecies]
|
|
ld de,wInGameTradeGiveMonName
|
|
call InGameTrade_GetMonName
|
|
ld a,[wInGameTradeReceiveMonSpecies]
|
|
ld de,wInGameTradeReceiveMonName
|
|
call InGameTrade_GetMonName
|
|
ld a,$4
|
|
ld [wInGameTradeTextPointerTableIndex],a
|
|
ld b,FLAG_TEST
|
|
call InGameTrade_FlagActionPredef
|
|
ld a,c
|
|
and a
|
|
jr nz,.printText
|
|
; if the trade hasn't been done yet
|
|
ld a,$0
|
|
ld [wInGameTradeTextPointerTableIndex],a
|
|
call .printText
|
|
ld a,$1
|
|
ld [wInGameTradeTextPointerTableIndex],a
|
|
call YesNoChoice
|
|
ld a,[wCurrentMenuItem]
|
|
and a
|
|
jr nz,.printText
|
|
call InGameTrade_DoTrade
|
|
jr c,.printText
|
|
ld hl, TradedForText
|
|
call PrintText
|
|
.printText
|
|
ld hl,wInGameTradeTextPointerTableIndex
|
|
ld a,[hld] ; wInGameTradeTextPointerTableIndex
|
|
ld e,a
|
|
ld d,0
|
|
ld a,[hld] ; wInGameTradeTextPointerTablePointer + 1
|
|
ld l,[hl] ; wInGameTradeTextPointerTablePointer
|
|
ld h,a
|
|
add hl,de
|
|
add hl,de
|
|
ld a,[hli]
|
|
ld h,[hl]
|
|
ld l,a
|
|
jp PrintText
|
|
|
|
; copies name of species a to hl
|
|
InGameTrade_GetMonName: ; 71c0c (1c:5c0c)
|
|
push de
|
|
ld [wd11e],a
|
|
call GetMonName
|
|
ld hl,wcd6d
|
|
pop de
|
|
ld bc, NAME_LENGTH
|
|
jp CopyData
|
|
|
|
INCLUDE "data/trades.asm"
|
|
|
|
InGameTrade_DoTrade: ; 71ca9 (1c:5ca9)
|
|
xor a ; NORMAL_PARTY_MENU
|
|
ld [wPartyMenuTypeOrMessageID],a
|
|
dec a
|
|
ld [wUpdateSpritesEnabled],a
|
|
call DisplayPartyMenu
|
|
push af
|
|
call InGameTrade_RestoreScreen
|
|
pop af
|
|
ld a,$1
|
|
jp c,.tradeFailed ; jump if the player didn't select a pokemon
|
|
ld a,[wInGameTradeGiveMonSpecies]
|
|
ld b,a
|
|
ld a,[wcf91]
|
|
cp b
|
|
ld a,$2
|
|
jr nz,.tradeFailed ; jump if the selected mon's species is not the required one
|
|
ld a,[wWhichPokemon]
|
|
ld hl,wPartyMon1Level
|
|
ld bc, wPartyMon2 - wPartyMon1
|
|
call AddNTimes
|
|
ld a,[hl]
|
|
ld [wCurEnemyLVL],a
|
|
ld b,FLAG_SET
|
|
call InGameTrade_FlagActionPredef
|
|
ld hl, ConnectCableText
|
|
call PrintText
|
|
ld a,[wWhichPokemon]
|
|
push af
|
|
ld a,[wCurEnemyLVL]
|
|
push af
|
|
call LoadHpBarAndStatusTilePatterns
|
|
call InGameTrade_PrepareTradeData
|
|
predef InternalClockTradeAnim
|
|
pop af
|
|
ld [wCurEnemyLVL],a
|
|
pop af
|
|
ld [wWhichPokemon],a
|
|
ld a,[wInGameTradeReceiveMonSpecies]
|
|
ld [wcf91],a
|
|
xor a
|
|
ld [wMonDataLocation],a ; not used
|
|
ld [wRemoveMonFromBox],a
|
|
call RemovePokemon
|
|
ld a,$80 ; prevent the player from naming the mon
|
|
ld [wMonDataLocation],a
|
|
call AddPartyMon
|
|
call InGameTrade_CopyDataToReceivedMon
|
|
call InGameTrade_CheckForTradeEvo
|
|
call ClearScreen
|
|
call InGameTrade_RestoreScreen
|
|
callba RedrawMapView
|
|
and a
|
|
ld a,$3
|
|
jr .tradeSucceeded
|
|
.tradeFailed ; never jumped to
|
|
scf
|
|
.tradeSucceeded
|
|
ld [wInGameTradeTextPointerTableIndex],a
|
|
ret
|
|
|
|
InGameTrade_RestoreScreen: ; 71d36 (1c:5d36)
|
|
call GBPalWhiteOutWithDelay3
|
|
call RestoreScreenTilesAndReloadTilePatterns
|
|
call ReloadTilesetTilePatterns
|
|
call LoadScreenTilesFromBuffer2
|
|
call Delay3
|
|
call LoadGBPal
|
|
ld c, 10
|
|
call DelayFrames
|
|
jpba LoadWildData
|
|
|
|
InGameTrade_PrepareTradeData: ; 71d55 (1c:5d55)
|
|
ld hl, wTradedPlayerMonSpecies
|
|
ld a, [wInGameTradeGiveMonSpecies]
|
|
ld [hli], a ; wTradedPlayerMonSpecies
|
|
ld a, [wInGameTradeReceiveMonSpecies]
|
|
ld [hl], a ; wTradedEnemyMonSpecies
|
|
ld hl, wPartyMonOT
|
|
ld bc, NAME_LENGTH
|
|
ld a, [wWhichPokemon]
|
|
call AddNTimes
|
|
ld de, wTradedPlayerMonOT
|
|
ld bc, NAME_LENGTH
|
|
call InGameTrade_CopyData
|
|
ld hl, InGameTrade_TrainerString
|
|
ld de, wTradedEnemyMonOT
|
|
call InGameTrade_CopyData
|
|
ld de, wLinkEnemyTrainerName
|
|
call InGameTrade_CopyData
|
|
ld hl, wPartyMon1OTID
|
|
ld bc, wPartyMon2 - wPartyMon1
|
|
ld a, [wWhichPokemon]
|
|
call AddNTimes
|
|
ld de, wTradedPlayerMonOTID
|
|
ld bc, $2
|
|
call InGameTrade_CopyData
|
|
call Random
|
|
ld hl, hRandomAdd
|
|
ld de, wTradedEnemyMonOTID
|
|
jp CopyData
|
|
|
|
InGameTrade_CopyData: ; 71da5 (1c:5da5)
|
|
push hl
|
|
push bc
|
|
call CopyData
|
|
pop bc
|
|
pop hl
|
|
ret
|
|
|
|
InGameTrade_CopyDataToReceivedMon: ; 71dad (1c:5dad)
|
|
ld hl, wPartyMonNicks
|
|
ld bc, NAME_LENGTH
|
|
call InGameTrade_GetReceivedMonPointer
|
|
ld hl, wInGameTradeMonNick
|
|
ld bc, NAME_LENGTH
|
|
call CopyData
|
|
ld hl, wPartyMonOT
|
|
ld bc, NAME_LENGTH
|
|
call InGameTrade_GetReceivedMonPointer
|
|
ld hl, InGameTrade_TrainerString
|
|
ld bc, NAME_LENGTH
|
|
call CopyData
|
|
ld hl, wPartyMon1OTID
|
|
ld bc, wPartyMon2 - wPartyMon1
|
|
call InGameTrade_GetReceivedMonPointer
|
|
ld hl, wTradedEnemyMonOTID
|
|
ld bc, $2
|
|
jp CopyData
|
|
|
|
; the received mon's index is (partyCount - 1),
|
|
; so this adds bc to hl (partyCount - 1) times and moves the result to de
|
|
InGameTrade_GetReceivedMonPointer: ; 71de3 (1c:5de3)
|
|
ld a, [wPartyCount]
|
|
dec a
|
|
call AddNTimes
|
|
ld e, l
|
|
ld d, h
|
|
ret
|
|
|
|
InGameTrade_FlagActionPredef: ; 71ded (1c:5ded)
|
|
ld hl,wCompletedInGameTradeFlags
|
|
ld a,[wWhichTrade]
|
|
ld c,a
|
|
predef_jump FlagActionPredef
|
|
|
|
InGameTrade_CheckForTradeEvo: ; 71df9 (1c:5df9)
|
|
ld a,[wInGameTradeReceiveMonSpecies]
|
|
cp KADABRA
|
|
jr z,.tradeEvo
|
|
cp GRAVELER
|
|
jr z,.tradeEvo
|
|
cp MACHOKE
|
|
jr z,.tradeEvo
|
|
cp HAUNTER
|
|
jr z,.tradeEvo
|
|
ret
|
|
|
|
.tradeEvo
|
|
ld a,[wPartyCount]
|
|
dec a
|
|
ld [wWhichPokemon],a
|
|
ld a,$1
|
|
ld [wForceEvolution],a
|
|
ld a,LINK_STATE_TRADING
|
|
ld [wLinkState],a
|
|
callab EvolveTradeMon
|
|
xor a ; LINK_STATE_NONE
|
|
ld [wLinkState],a
|
|
jp PlayDefaultMusic
|
|
|
|
InGameTrade_TrainerString: ; 71e2d (1c:5e2d)
|
|
; "TRAINER@@@@@@@@@@"
|
|
db $5d, "@@@@@@@@@@"
|
|
|
|
InGameTradeTextPointers: ; 71e38 (1c:5e38)
|
|
dw TradeTextPointers1
|
|
dw TradeTextPointers2
|
|
dw TradeTextPointers3
|
|
|
|
TradeTextPointers1: ; 71e3e (1c:5e3e)
|
|
dw WannaTrade1Text
|
|
dw NoTrade1Text
|
|
dw WrongMon1Text
|
|
dw Thanks1Text
|
|
dw AfterTrade1Text
|
|
|
|
TradeTextPointers2: ; 71e48 (1c:5e48)
|
|
dw WannaTrade2Text
|
|
dw NoTrade2Text
|
|
dw WrongMon2Text
|
|
dw Thanks2Text
|
|
dw AfterTrade2Text
|
|
|
|
TradeTextPointers3: ; 71e52 (1c:5e52)
|
|
dw WannaTrade3Text
|
|
dw NoTrade3Text
|
|
dw WrongMon3Text
|
|
dw Thanks3Text
|
|
dw AfterTrade3Text
|
|
|
|
ConnectCableText: ; 71e5c (1c:5e5c)
|
|
TX_FAR _ConnectCableText
|
|
db "@"
|
|
|
|
TradedForText: ; 71e61 (1c:5e61)
|
|
TX_FAR _TradedForText
|
|
db $11, $a, "@"
|
|
|
|
WannaTrade1Text: ; 71e66 (1c:5e66)
|
|
TX_FAR _WannaTrade1Text
|
|
db "@"
|
|
|
|
NoTrade1Text: ; 71e6b (1c:5e6b)
|
|
TX_FAR _NoTrade1Text
|
|
db "@"
|
|
|
|
WrongMon1Text: ; 71e70 (1c:5e70)
|
|
TX_FAR _WrongMon1Text
|
|
db "@"
|
|
|
|
Thanks1Text: ; 71e75 (1c:5e75)
|
|
TX_FAR _Thanks1Text
|
|
db "@"
|
|
|
|
AfterTrade1Text: ; 71e7a (1c:5e7a)
|
|
TX_FAR _AfterTrade1Text
|
|
db "@"
|
|
|
|
WannaTrade2Text: ; 71e7f (1c:5e7f)
|
|
TX_FAR _WannaTrade2Text
|
|
db "@"
|
|
|
|
NoTrade2Text: ; 71e84 (1c:5e84)
|
|
TX_FAR _NoTrade2Text
|
|
db "@"
|
|
|
|
WrongMon2Text: ; 71e89 (1c:5e89)
|
|
TX_FAR _WrongMon2Text
|
|
db "@"
|
|
|
|
Thanks2Text: ; 71e8e (1c:5e8e)
|
|
TX_FAR _Thanks2Text
|
|
db "@"
|
|
|
|
AfterTrade2Text: ; 71e93 (1c:5e93)
|
|
TX_FAR _AfterTrade2Text
|
|
db "@"
|
|
|
|
WannaTrade3Text: ; 71e98 (1c:5e98)
|
|
TX_FAR _WannaTrade3Text
|
|
db "@"
|
|
|
|
NoTrade3Text: ; 71e9d (1c:5d9d)
|
|
TX_FAR _NoTrade3Text
|
|
db "@"
|
|
|
|
WrongMon3Text: ; 71ea2 (1c:5ea2)
|
|
TX_FAR _WrongMon3Text
|
|
db "@"
|
|
|
|
Thanks3Text: ; 71ea7 (1c:5ea7)
|
|
TX_FAR _Thanks3Text
|
|
db "@"
|
|
|
|
AfterTrade3Text: ; 71eac (1c:5eac)
|
|
TX_FAR _AfterTrade3Text
|
|
db "@"
|