2015-02-07 10:43:08 +00:00
|
|
|
DoInGameTradeDialogue: ; 71ad9 (1c:5ad9)
|
2014-05-22 22:13:20 +00:00
|
|
|
; trigger the trade offer/action specified by wWhichTrade
|
|
|
|
call SaveScreenTilesToBuffer2
|
|
|
|
ld hl,TradeMons
|
|
|
|
ld a,[wWhichTrade]
|
|
|
|
ld b,a
|
|
|
|
swap a
|
|
|
|
sub b
|
|
|
|
sub b
|
|
|
|
ld c,a
|
2015-02-07 10:43:08 +00:00
|
|
|
ld b,0
|
2014-05-22 22:13:20 +00:00
|
|
|
add hl,bc
|
|
|
|
ld a,[hli]
|
2015-02-07 10:43:08 +00:00
|
|
|
ld [wInGameTradeGiveMonSpecies],a
|
2014-05-22 22:13:20 +00:00
|
|
|
ld a,[hli]
|
2015-02-07 10:43:08 +00:00
|
|
|
ld [wInGameTradeReceiveMonSpecies],a
|
2014-05-22 22:13:20 +00:00
|
|
|
ld a,[hli]
|
|
|
|
push af
|
2015-02-07 10:43:08 +00:00
|
|
|
ld de,wInGameTradeMonNick
|
2014-05-22 22:13:20 +00:00
|
|
|
ld bc,$000b
|
|
|
|
call CopyData
|
|
|
|
pop af
|
|
|
|
ld l,a
|
|
|
|
ld h,$0
|
|
|
|
ld de,InGameTradeTextPointers ; $5d64
|
|
|
|
add hl,hl
|
|
|
|
add hl,de
|
|
|
|
ld a,[hli]
|
2015-02-07 10:43:08 +00:00
|
|
|
ld [wInGameTradeTextPointerTablePointer],a
|
2014-05-22 22:13:20 +00:00
|
|
|
ld a,[hl]
|
2015-02-07 10:43:08 +00:00
|
|
|
ld [wInGameTradeTextPointerTablePointer + 1],a
|
|
|
|
ld a,[wInGameTradeGiveMonSpecies]
|
|
|
|
ld de,wInGameTradeGiveMonName
|
|
|
|
call InGameTrade_GetMonName
|
|
|
|
ld a,[wInGameTradeReceiveMonSpecies]
|
|
|
|
ld de,wInGameTradeReceiveMonName
|
|
|
|
call InGameTrade_GetMonName
|
|
|
|
ld hl,wCompletedInGameTradeFlags
|
2014-05-22 22:13:20 +00:00
|
|
|
ld a,[wWhichTrade]
|
|
|
|
ld c,a
|
|
|
|
ld b,$2
|
2014-06-16 20:57:26 +00:00
|
|
|
predef FlagActionPredef
|
2014-05-22 22:13:20 +00:00
|
|
|
ld a,c
|
|
|
|
and a
|
|
|
|
ld a,$4
|
2015-02-07 10:43:08 +00:00
|
|
|
ld [wInGameTradeTextPointerTableIndex],a
|
|
|
|
jr nz,.printText
|
|
|
|
; if the trade hasn't been done yet
|
2014-05-22 22:13:20 +00:00
|
|
|
xor a
|
2015-02-07 10:43:08 +00:00
|
|
|
ld [wInGameTradeTextPointerTableIndex],a
|
|
|
|
call .printText
|
2014-05-22 22:13:20 +00:00
|
|
|
ld a,$1
|
2015-02-07 10:43:08 +00:00
|
|
|
ld [wInGameTradeTextPointerTableIndex],a
|
2014-05-22 22:13:20 +00:00
|
|
|
call YesNoChoice
|
2014-05-26 21:04:56 +00:00
|
|
|
ld a,[wCurrentMenuItem]
|
2014-05-22 22:13:20 +00:00
|
|
|
and a
|
2015-02-07 10:43:08 +00:00
|
|
|
jr nz,.printText
|
|
|
|
call InGameTrade_DoTrade
|
|
|
|
jr c,.printText
|
2014-05-22 22:13:20 +00:00
|
|
|
ld hl, TradedForText
|
|
|
|
call PrintText
|
2015-02-07 10:43:08 +00:00
|
|
|
.printText
|
|
|
|
ld hl,wInGameTradeTextPointerTableIndex
|
|
|
|
ld a,[hld] ; wInGameTradeTextPointerTableIndex
|
2014-05-22 22:13:20 +00:00
|
|
|
ld e,a
|
2015-02-07 10:43:08 +00:00
|
|
|
ld d,0
|
|
|
|
ld a,[hld] ; wInGameTradeTextPointerTablePointer + 1
|
|
|
|
ld l,[hl] ; wInGameTradeTextPointerTablePointer
|
2014-05-22 22:13:20 +00:00
|
|
|
ld h,a
|
|
|
|
add hl,de
|
|
|
|
add hl,de
|
|
|
|
ld a,[hli]
|
|
|
|
ld h,[hl]
|
|
|
|
ld l,a
|
|
|
|
jp PrintText
|
|
|
|
|
2015-02-07 10:43:08 +00:00
|
|
|
; copies name of species a to hl
|
|
|
|
InGameTrade_GetMonName: ; 71b6a (1c:5b6a)
|
2014-05-22 22:13:20 +00:00
|
|
|
push de
|
2014-05-26 21:04:56 +00:00
|
|
|
ld [wd11e],a
|
2014-05-22 22:13:20 +00:00
|
|
|
call GetMonName
|
2014-05-26 21:04:56 +00:00
|
|
|
ld hl,wcd6d
|
2014-05-22 22:13:20 +00:00
|
|
|
pop de
|
|
|
|
ld bc,$b
|
|
|
|
jp CopyData
|
|
|
|
|
|
|
|
INCLUDE "data/trades.asm"
|
|
|
|
|
2015-02-07 10:43:08 +00:00
|
|
|
InGameTrade_DoTrade: ; 71c07 (1c:5c07)
|
2014-05-22 22:13:20 +00:00
|
|
|
xor a
|
2014-05-26 21:04:56 +00:00
|
|
|
ld [wd07d],a
|
2014-05-22 22:13:20 +00:00
|
|
|
dec a
|
2014-09-13 07:50:56 +00:00
|
|
|
ld [wUpdateSpritesEnabled],a
|
2014-05-22 22:13:20 +00:00
|
|
|
call DisplayPartyMenu
|
|
|
|
push af
|
2015-02-07 10:43:08 +00:00
|
|
|
call InGameTrade_RestoreScreen
|
2014-05-22 22:13:20 +00:00
|
|
|
pop af
|
|
|
|
ld a,$1
|
2015-02-07 10:43:08 +00:00
|
|
|
jp c,.tradeFailed ; jump if the player didn't select a pokemon
|
|
|
|
ld a,[wInGameTradeGiveMonSpecies]
|
2014-05-22 22:13:20 +00:00
|
|
|
ld b,a
|
2014-05-26 21:04:56 +00:00
|
|
|
ld a,[wcf91]
|
2014-05-22 22:13:20 +00:00
|
|
|
cp b
|
|
|
|
ld a,$2
|
2015-02-07 10:43:08 +00:00
|
|
|
jr nz,.tradeFailed ; jump if the selected mon's species is not the required one
|
2014-05-22 22:13:20 +00:00
|
|
|
ld a,[wWhichPokemon]
|
2014-06-14 11:12:40 +00:00
|
|
|
ld hl,wPartyMon1Level
|
2014-05-22 22:13:20 +00:00
|
|
|
ld bc,$002c
|
|
|
|
call AddNTimes
|
|
|
|
ld a,[hl]
|
2014-05-26 21:04:56 +00:00
|
|
|
ld [W_CURENEMYLVL],a
|
2015-02-07 10:43:08 +00:00
|
|
|
ld hl,wCompletedInGameTradeFlags
|
2014-05-22 22:13:20 +00:00
|
|
|
ld a,[wWhichTrade]
|
|
|
|
ld c,a
|
|
|
|
ld b,$1
|
2014-06-16 20:57:26 +00:00
|
|
|
predef FlagActionPredef
|
2014-05-22 22:13:20 +00:00
|
|
|
ld hl, ConnectCableText
|
|
|
|
call PrintText
|
|
|
|
ld a,[wWhichPokemon]
|
|
|
|
push af
|
2014-05-26 21:04:56 +00:00
|
|
|
ld a,[W_CURENEMYLVL]
|
2014-05-22 22:13:20 +00:00
|
|
|
push af
|
|
|
|
call LoadHpBarAndStatusTilePatterns
|
2015-02-07 10:43:08 +00:00
|
|
|
call InGameTrade_PrepareTradeData
|
2015-03-14 22:25:21 +00:00
|
|
|
predef InternalClockTradeAnim
|
2014-05-22 22:13:20 +00:00
|
|
|
pop af
|
2014-05-26 21:04:56 +00:00
|
|
|
ld [W_CURENEMYLVL],a
|
2014-05-22 22:13:20 +00:00
|
|
|
pop af
|
|
|
|
ld [wWhichPokemon],a
|
2015-02-07 10:43:08 +00:00
|
|
|
ld a,[wInGameTradeReceiveMonSpecies]
|
2014-05-26 21:04:56 +00:00
|
|
|
ld [wcf91],a
|
2014-05-22 22:13:20 +00:00
|
|
|
xor a
|
2014-05-26 21:04:56 +00:00
|
|
|
ld [wcc49],a
|
|
|
|
ld [wcf95],a
|
2014-05-22 22:13:20 +00:00
|
|
|
call RemovePokemon
|
|
|
|
ld a,$80
|
2014-05-26 21:04:56 +00:00
|
|
|
ld [wcc49],a
|
2014-06-16 20:03:05 +00:00
|
|
|
call AddPartyMon
|
2015-02-07 10:43:08 +00:00
|
|
|
call InGameTrade_CopyDataToReceivedMon
|
2014-05-22 22:13:20 +00:00
|
|
|
callab EvolveTradeMon
|
|
|
|
call ClearScreen
|
2015-02-07 10:43:08 +00:00
|
|
|
call InGameTrade_RestoreScreen
|
2014-09-14 18:29:18 +00:00
|
|
|
callba RedrawMapView
|
2014-05-22 22:13:20 +00:00
|
|
|
and a
|
|
|
|
ld a,$3
|
2015-02-07 10:43:08 +00:00
|
|
|
jr .tradeSucceeded
|
|
|
|
.tradeFailed
|
2014-05-22 22:13:20 +00:00
|
|
|
scf
|
2015-02-07 10:43:08 +00:00
|
|
|
.tradeSucceeded
|
|
|
|
ld [wInGameTradeTextPointerTableIndex],a
|
2014-05-22 22:13:20 +00:00
|
|
|
ret
|
|
|
|
|
2015-02-07 10:43:08 +00:00
|
|
|
InGameTrade_RestoreScreen: ; 71ca2 (1c:5ca2)
|
2014-05-22 22:13:20 +00:00
|
|
|
call GBPalWhiteOutWithDelay3
|
2014-09-10 03:55:19 +00:00
|
|
|
call RestoreScreenTilesAndReloadTilePatterns
|
2014-05-22 22:13:20 +00:00
|
|
|
call ReloadTilesetTilePatterns
|
|
|
|
call LoadScreenTilesFromBuffer2
|
|
|
|
call Delay3
|
|
|
|
call LoadGBPal
|
2015-02-07 10:43:08 +00:00
|
|
|
ld c, 10
|
2014-05-22 22:13:20 +00:00
|
|
|
call DelayFrames
|
|
|
|
ld b, BANK(LoadWildData)
|
|
|
|
ld hl, LoadWildData
|
|
|
|
jp Bankswitch
|
|
|
|
|
2015-02-07 10:43:08 +00:00
|
|
|
InGameTrade_PrepareTradeData: ; 71cc1 (1c:5cc1)
|
|
|
|
ld hl, wTradedPlayerMonSpecies
|
|
|
|
ld a, [wInGameTradeGiveMonSpecies]
|
|
|
|
ld [hli], a ; wTradedPlayerMonSpecies
|
|
|
|
ld a, [wInGameTradeReceiveMonSpecies]
|
|
|
|
ld [hl], a ; wTradedEnemyMonSpecies
|
|
|
|
ld hl, wPartyMonOT
|
2014-05-22 22:13:20 +00:00
|
|
|
ld bc, $b
|
2015-02-07 10:43:08 +00:00
|
|
|
ld a, [wWhichPokemon]
|
2014-05-22 22:13:20 +00:00
|
|
|
call AddNTimes
|
2015-02-07 10:43:08 +00:00
|
|
|
ld de, wTradedPlayerMonOT
|
2014-05-22 22:13:20 +00:00
|
|
|
ld bc, $b
|
2015-02-07 10:43:08 +00:00
|
|
|
call InGameTrade_CopyData
|
|
|
|
ld hl, InGameTrade_TrainerString
|
2014-05-26 21:04:56 +00:00
|
|
|
ld de, wcd4e
|
2015-02-07 10:43:08 +00:00
|
|
|
call InGameTrade_CopyData
|
|
|
|
ld de, W_GRASSRATE
|
|
|
|
call InGameTrade_CopyData
|
|
|
|
ld hl, wPartyMon1OTID
|
|
|
|
ld bc, wPartyMon2 - wPartyMon1
|
|
|
|
ld a, [wWhichPokemon]
|
2014-05-22 22:13:20 +00:00
|
|
|
call AddNTimes
|
2015-02-07 10:43:08 +00:00
|
|
|
ld de, wTradedPlayerMonOTID
|
2014-05-22 22:13:20 +00:00
|
|
|
ld bc, $2
|
2015-02-07 10:43:08 +00:00
|
|
|
call InGameTrade_CopyData
|
2014-05-24 18:40:38 +00:00
|
|
|
call Random
|
|
|
|
ld hl, hRandomAdd
|
2015-02-07 10:43:08 +00:00
|
|
|
ld de, wTradedEnemyMonOTID
|
2014-05-22 22:13:20 +00:00
|
|
|
jp CopyData
|
|
|
|
|
2015-02-07 10:43:08 +00:00
|
|
|
InGameTrade_CopyData: ; 71d11 (1c:5d11)
|
2014-05-22 22:13:20 +00:00
|
|
|
push hl
|
|
|
|
push bc
|
|
|
|
call CopyData
|
|
|
|
pop bc
|
|
|
|
pop hl
|
|
|
|
ret
|
|
|
|
|
2015-02-07 10:43:08 +00:00
|
|
|
InGameTrade_CopyDataToReceivedMon: ; 71d19 (1c:5d19)
|
|
|
|
ld hl, wPartyMonNicks
|
2014-05-22 22:13:20 +00:00
|
|
|
ld bc, $b
|
2015-02-07 10:43:08 +00:00
|
|
|
call InGameTrade_GetReceivedMonPointer
|
|
|
|
ld hl, wInGameTradeMonNick
|
2014-05-22 22:13:20 +00:00
|
|
|
ld bc, $b
|
|
|
|
call CopyData
|
2015-02-07 10:43:08 +00:00
|
|
|
ld hl, wPartyMonOT
|
2014-05-22 22:13:20 +00:00
|
|
|
ld bc, $b
|
2015-02-07 10:43:08 +00:00
|
|
|
call InGameTrade_GetReceivedMonPointer
|
|
|
|
ld hl, InGameTrade_TrainerString
|
2014-05-22 22:13:20 +00:00
|
|
|
ld bc, $b
|
|
|
|
call CopyData
|
2015-02-07 10:43:08 +00:00
|
|
|
ld hl, wPartyMon1OTID
|
|
|
|
ld bc, wPartyMon2 - wPartyMon1
|
|
|
|
call InGameTrade_GetReceivedMonPointer
|
|
|
|
ld hl, wTradedEnemyMonOTID
|
2014-05-22 22:13:20 +00:00
|
|
|
ld bc, $2
|
|
|
|
jp CopyData
|
|
|
|
|
2015-02-07 10:43:08 +00:00
|
|
|
; 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: ; 71d4f (1c:5d4f)
|
|
|
|
ld a, [wPartyCount]
|
2014-05-22 22:13:20 +00:00
|
|
|
dec a
|
|
|
|
call AddNTimes
|
|
|
|
ld e, l
|
|
|
|
ld d, h
|
|
|
|
ret
|
|
|
|
|
2015-02-07 10:43:08 +00:00
|
|
|
InGameTrade_TrainerString: ; 71d59 (1c:5d59)
|
2014-05-22 22:13:20 +00:00
|
|
|
; "TRAINER@@@@@@@@@@"
|
|
|
|
db $5d, "@@@@@@@@@@"
|
|
|
|
|
|
|
|
InGameTradeTextPointers: ; 71d64 (1c:5d64)
|
|
|
|
dw TradeTextPointers1
|
|
|
|
dw TradeTextPointers2
|
|
|
|
dw TradeTextPointers3
|
|
|
|
|
|
|
|
TradeTextPointers1: ; 71d6a (1c:5d6a)
|
|
|
|
dw WannaTrade1Text
|
|
|
|
dw NoTrade1Text
|
|
|
|
dw WrongMon1Text
|
|
|
|
dw Thanks1Text
|
|
|
|
dw AfterTrade1Text
|
|
|
|
|
|
|
|
TradeTextPointers2: ; 71d74 (1c:5d74)
|
|
|
|
dw WannaTrade2Text
|
|
|
|
dw NoTrade2Text
|
|
|
|
dw WrongMon2Text
|
|
|
|
dw Thanks2Text
|
|
|
|
dw AfterTrade2Text
|
|
|
|
|
|
|
|
TradeTextPointers3: ; 71d7e (1c:5d7e)
|
|
|
|
dw WannaTrade3Text
|
|
|
|
dw NoTrade3Text
|
|
|
|
dw WrongMon3Text
|
|
|
|
dw Thanks3Text
|
|
|
|
dw AfterTrade3Text
|
|
|
|
|
|
|
|
ConnectCableText: ; 71d88 (1c:5d88)
|
|
|
|
TX_FAR _ConnectCableText
|
|
|
|
db "@"
|
|
|
|
|
|
|
|
TradedForText: ; 71d8d (1c:5d8d)
|
|
|
|
TX_FAR _TradedForText
|
|
|
|
db $11, $a, "@"
|
|
|
|
|
|
|
|
WannaTrade1Text: ; 71d94 (1c:5d94)
|
|
|
|
TX_FAR _WannaTrade1Text
|
|
|
|
db "@"
|
|
|
|
|
|
|
|
NoTrade1Text: ; 71d99 (1c:5d99)
|
|
|
|
TX_FAR _NoTrade1Text
|
|
|
|
db "@"
|
|
|
|
|
|
|
|
WrongMon1Text: ; 71d9e (1c:5d9e)
|
|
|
|
TX_FAR _WrongMon1Text
|
|
|
|
db "@"
|
|
|
|
|
|
|
|
Thanks1Text: ; 71da3 (1c:5da3)
|
|
|
|
TX_FAR _Thanks1Text
|
|
|
|
db "@"
|
|
|
|
|
|
|
|
AfterTrade1Text: ; 71da8 (1c:5da8)
|
|
|
|
TX_FAR _AfterTrade1Text
|
|
|
|
db "@"
|
|
|
|
|
|
|
|
WannaTrade2Text: ; 71dad (1c:5dad)
|
|
|
|
TX_FAR _WannaTrade2Text
|
|
|
|
db "@"
|
|
|
|
|
|
|
|
NoTrade2Text: ; 71db2 (1c:5db2)
|
|
|
|
TX_FAR _NoTrade2Text
|
|
|
|
db "@"
|
|
|
|
|
|
|
|
WrongMon2Text: ; 71db7 (1c:5db7)
|
|
|
|
TX_FAR _WrongMon2Text
|
|
|
|
db "@"
|
|
|
|
|
|
|
|
Thanks2Text: ; 71dbc (1c:5dbc)
|
|
|
|
TX_FAR _Thanks2Text
|
|
|
|
db "@"
|
|
|
|
|
|
|
|
AfterTrade2Text: ; 71dc1 (1c:5dc1)
|
|
|
|
TX_FAR _AfterTrade2Text
|
|
|
|
db "@"
|
|
|
|
|
|
|
|
WannaTrade3Text: ; 71dc6 (1c:5dc6)
|
|
|
|
TX_FAR _WannaTrade3Text
|
|
|
|
db "@"
|
|
|
|
|
|
|
|
NoTrade3Text: ; 71dcb (1c:5dcb)
|
|
|
|
TX_FAR _NoTrade3Text
|
|
|
|
db "@"
|
|
|
|
|
|
|
|
WrongMon3Text: ; 71dd0 (1c:5dd0)
|
|
|
|
TX_FAR _WrongMon3Text
|
|
|
|
db "@"
|
|
|
|
|
|
|
|
Thanks3Text: ; 71dd5 (1c:5dd5)
|
|
|
|
TX_FAR _Thanks3Text
|
|
|
|
db "@"
|
|
|
|
|
|
|
|
AfterTrade3Text: ; 71dda (1c:5dda)
|
|
|
|
TX_FAR _AfterTrade3Text
|
|
|
|
db "@"
|