Add regional trades, break trade limit

All over the place! S.S. Anne doesn't work properly though.

Thanks to Chatot4444 for bypassing the trade limit.
This commit is contained in:
Llinos Evans 2023-04-09 18:56:19 +01:00
parent 56793e1d11
commit 77fd55ea49
20 changed files with 265 additions and 42 deletions

View file

@ -22,14 +22,14 @@ DEF SLOTS_SOMEONESKEYS EQU $ff
const_def
const TRADE_FOR_TERRY
const TRADE_FOR_MARCEL
const TRADE_FOR_CHIKUCHIKU ; the glass
const TRADE_FOR_CHIKUCHIKU
const TRADE_FOR_SAILOR
const TRADE_FOR_DUX
const TRADE_FOR_MARC
const TRADE_FOR_LOLA
const TRADE_FOR_DORIS
const TRADE_FOR_CRINKLES
const TRADE_FOR_SPOT ; probably also glass
const TRADE_FOR_SPOT
const TRADE_WITH_SELF ; Celadon University
const TRADE_FOR_RATICATE_A ; LGPE Trade references - Viridian
const TRADE_FOR_GOLEM_A ; Pewter
@ -39,17 +39,17 @@ DEF SLOTS_SOMEONESKEYS EQU $ff
const TRADE_FOR_SANDSLASH_A ; Celadon
const TRADE_FOR_RAICHU_A ; Saffron
const TRADE_FOR_MAROWAK_A ; Fuschia
;const TRADE_FOR_MUK_A ; Cinnabar
const TRADE_FOR_MUK_A ; Cinnabar
const TRADE_FOR_EXEGGUTOR_A ; Indigo
;const TRADE_FOR_TAUROS_C ; S.S. Anne Trades begin here
;const TRADE_FOR_TAUROS_A
;const TRADE_FOR_TAUROS_B
const TRADE_FOR_TAUROS_C ; S.S. Anne Trades begin here
const TRADE_FOR_TAUROS_A
const TRADE_FOR_TAUROS_B
const TRADE_FOR_RAPIDASH_G
;const TRADE_FOR_SLOWBRO_G
;const TRADE_FOR_SLOWKING_G
;const TRADE_FOR_WEEZING_G
const TRADE_FOR_MR_RIME ; In the event of an overflow, break glass
const TRADE_FOR_PERRSERKER ; we could also put them in mt moon crater ig?
const TRADE_FOR_SLOWBRO_G
const TRADE_FOR_SLOWKING_G
const TRADE_FOR_WEEZING_G
const TRADE_FOR_MR_RIME
const TRADE_FOR_PERRSERKER
const TRADE_FOR_SIRFETCHD
DEF NUM_NPC_TRADES EQU const_value
@ -61,6 +61,9 @@ DEF NUM_NPC_TRADES EQU const_value
const TRADE_DIALOGSET_HAPPY
const TRADE_DIALOGSET_SELF
const TRADE_DIALOGSET_REGION ; consistency with LGPE
const TRADE_DIALOGSET_TAUROSC ; Fighting Tauros lovers
const TRADE_DIALOGSET_TAUROSA
const TRADE_DIALOGSET_TAUROSB
; badges
; wObtainedBadges and wBeatGymFlags bits

View file

@ -21,15 +21,15 @@ TradeMons:
db SANDSLASH, SANDSLASH_A, TRADE_DIALOGSET_REGION, "SANDSLASH@@" ; Celadon
db RAICHU, RAICHU_A, TRADE_DIALOGSET_REGION, "RAICHU@@@@@" ; Saffron
db MAROWAK, MAROWAK_A, TRADE_DIALOGSET_REGION, "MAROWAK@@@@" ; Fuschia
;db MUK, MUK_A, TRADE_DIALOGSET_REGION, "MUK-A@@@@@@" ; Cinnabar
db MUK, MUK_A, TRADE_DIALOGSET_REGION, "MUK-A@@@@@@" ; Cinnabar
db EXEGGUTOR, EXEGGUTOR_A, TRADE_DIALOGSET_REGION, "EXEGGUTOR@@" ; Indigo
;db TAUROS, TAUROS_C, TRADE_DIALOGSET_REGION, "TAUROS@@@@@" ; S.S. Anne begins here
;db TAUROS, TAUROS_A, TRADE_DIALOGSET_REGION, "TAUROS@@@@@"
;db TAUROS, TAUROS_B, TRADE_DIALOGSET_REGION, "TAUROS@@@@@"
db TAUROS, TAUROS_P, TRADE_DIALOGSET_TAUROSC, "TAUROS@@@@@" ; S.S. Anne begins here
db TAUROS, TAUROS_PA, TRADE_DIALOGSET_TAUROSA, "TAUROS@@@@@"
db TAUROS, TAUROS_PB, TRADE_DIALOGSET_TAUROSB, "TAUROS@@@@@"
db RAPIDASH, RAPIDASH_G, TRADE_DIALOGSET_REGION, "RAPIDASH@@@"
;db SLOWBRO, SLOWBRO_G, TRADE_DIALOGSET_REGION, "SLOWBRO@@@@"
;db SLOWKING, SLOWKING_G, TRADE_DIALOGSET_REGION, "SLOWKING@@@"
;db WEEZING, WEEZING_G, TRADE_DIALOGSET_REGION, "WEEZING@@@@"
db SLOWBRO, SLOWBRO_G, TRADE_DIALOGSET_REGION, "SLOWBRO@@@@"
db SLOWKING, SLOWKING_G, TRADE_DIALOGSET_REGION, "SLOWKING@@@"
db WEEZING, WEEZING_G, TRADE_DIALOGSET_REGION, "WEEZING@@@@"
db MR_MIME, MR_RIME, TRADE_DIALOGSET_CASUAL, "MR.RIME@@@@"
db PERSIAN, PERRSERKER, TRADE_DIALOGSET_HAPPY, "PERRSERKER@"
db MADAAMU, SIRFETCHD, TRADE_DIALOGSET_HAPPY, "SIRFETCH'D@"

View file

@ -13,5 +13,6 @@ CinnabarPokecenter_Object:
object_event 2, 6, SPRITE_GENTLEMAN, STAY, NONE, 3 ; person
object_event 11, 2, SPRITE_LINK_RECEPTIONIST, STAY, DOWN, 4 ; person
object_event 9, 6, SPRITE_MIDDLE_AGED_MAN, STAY, DOWN, 5 ; spamton
object_event 8, 3, SPRITE_GAMEBOY_KID, STAY, DOWN, 6 ; Muk Trader
def_warps_to CINNABAR_POKECENTER

View file

@ -24,5 +24,6 @@ SSAnne1FRooms_Object:
object_event 12, 15, SPRITE_POKE_BALL, STAY, NONE, 10, TM_BODY_SLAM
object_event 21, 13, SPRITE_GENTLEMAN, WALK, LEFT_RIGHT, 11 ; person
object_event 0, 4, SPRITE_GAMEBOY_KID, STAY, DOWN, 12 ; Perrserker Trader
object_event 20, 14, SPRITE_GAMEBOY_KID, STAY, DOWN, 13 ; Weezing Trader
def_warps_to SS_ANNE_1F_ROOMS

View file

@ -32,5 +32,8 @@ SSAnne2FRooms_Object:
object_event 22, 12, SPRITE_BRUNETTE_GIRL, STAY, LEFT, 12 ; person
object_event 20, 12, SPRITE_BEAUTY, STAY, RIGHT, 13 ; person
object_event 0, 3, SPRITE_GAMEBOY_KID, STAY, DOWN, 14 ; Sirfetch'd Trader
object_event 0, 13, SPRITE_GAMEBOY_KID, STAY, DOWN, 12 ; Mr. Rime Trader
object_event 0, 13, SPRITE_GAMEBOY_KID, STAY, DOWN, 13 ; Rapidash Trader
def_warps_to SS_ANNE_2F_ROOMS

View file

@ -2,6 +2,7 @@ SSAnneB1F_Object:
db $c ; border block
def_warp_events
warp_event 3, 3, SS_ANNE_B1F_ROOMS, 11
warp_event 23, 3, SS_ANNE_B1F_ROOMS, 9
warp_event 19, 3, SS_ANNE_B1F_ROOMS, 7
warp_event 15, 3, SS_ANNE_B1F_ROOMS, 5

View file

@ -12,6 +12,8 @@ SSAnneB1FRooms_Object:
warp_event 3, 15, SS_ANNE_B1F, 2
warp_event 12, 15, SS_ANNE_B1F, 1
warp_event 13, 15, SS_ANNE_B1F, 1
warp_event 22, 15, SS_ANNE_B1F, 6
warp_event 23, 15, SS_ANNE_B1F, 6
def_bg_events
@ -27,6 +29,8 @@ SSAnneB1FRooms_Object:
object_event 20, 2, SPRITE_POKE_BALL, STAY, NONE, 9, ETHER
object_event 10, 2, SPRITE_POKE_BALL, STAY, NONE, 10, TM_REST
object_event 12, 11, SPRITE_POKE_BALL, STAY, NONE, 11, MAX_POTION
object_event 0, 13, SPRITE_GAMEBOY_KID, STAY, DOWN, 12 ; Mr. Rime Trader
object_event 23, 14, SPRITE_ROCKER, STAY, LEFT, 15 ; Tauros C Trader
object_event 20, 13, SPRITE_ROCKER, STAY, RIGHT, 16 ; Tauros A Trader
object_event 22, 11, SPRITE_ROCKER, STAY, DOWN, 17 ; Tauros B Trader
def_warps_to SS_ANNE_B1F_ROOMS

View file

@ -13,6 +13,7 @@ SSAnneBow_Object:
object_event 7, 11, SPRITE_COOLTRAINER_M, STAY, NONE, 3 ; person
object_event 4, 4, SPRITE_SAILOR, STAY, DOWN, 4, OPP_SAILOR, 1
object_event 10, 8, SPRITE_SAILOR, STAY, UP, 5, OPP_SAILOR, 2
object_event 10, 2, SPRITE_GAMEBOY_KID, STAY, DOWN, 6 ; Rapidash Trader
object_event 10, 2, SPRITE_GAMEBOY_KID, STAY, UP, 6 ; Slowbro Trader
object_event 9, 2, SPRITE_GAMEBOY_KID, STAY, UP, 7 ; Slowking Trader
def_warps_to SS_ANNE_BOW

View file

@ -188,6 +188,98 @@ _AfterTrade3Text::
line "doing great!"
done
_WannaTrade6Text::
text "No way! The"
line "Combat Breed is"
cont "way better!"
text "You agree, right?"
line "Trade me your"
cont "TAUROS!"
done
_WrongMon6Text::
text "What? That's not"
line "@"
text_ram wInGameTradeGiveMonName
text "!"
para "Come on, back"
line "me up here!"
done
_Thanks6Text::
text "I knew you would"
line "agree!"
done
_AfterTrade6Text::
text "Isn't the Combat"
line "Breed amazing?"
para "HI JUMP KICK is"
line "so worth it!"
done
_WannaTrade7Text::
text "It's obvious."
line "The Aqua Breed"
cont "is superior."
text "Surely you agree."
line "Trade me your"
cont "TAUROS!"
done
_WrongMon7Text::
text "Huh? That's not"
line "@"
text_ram wInGameTradeGiveMonName
text "!"
para "Time is of the"
line "essence! Bring"
cont "me one!"
done
_AfterTrade7Text::
text "Isn't the Aqua"
line "Breed perfect?"
para "TAUROS clearly"
line "works best with"
cont "HYDRO PUMP."
done
_WannaTrade8Text::
text "I can't believe"
line "we're arguing"
cont "this! The Blaze"
cont "Breed is king!"
text "Hey, you! Trade"
line "me your TAUROS!"
done
_WrongMon8Text::
text "What? That's not"
line "@"
text_ram wInGameTradeGiveMonName
text "!"
para "You pulling my"
line "leg?"
done
_AfterTrade8Text::
text "Hey! What do"
line "you think?"
para "FIRE SPIN helps"
line "TAUROS a lot,"
cont "huh?"
done
_NothingToCutText::
text "There isn't"
line "anything to CUT!"

View file

@ -22,11 +22,11 @@ SetIshiharaTeam:
IshiharaTeam:
db EXEGGUTOR_A, 90
db RAICHU, 90
db MEWTWO, 90
db PORYGON, 50
db TAUROS, 90
db SLOWKING, 90
db RAPIDASH, 50
IF DEF(_DEBUG)
db NINETALES, 50
db MUK, 50
ENDC
db -1 ; end

View file

@ -3,13 +3,9 @@ DoInGameTradeDialogue:
call SaveScreenTilesToBuffer2
ld hl, TradeMons
ld a, [wWhichTrade]
ld b, a
swap a
sub b
sub b
ld c, a
ld b, 0
add hl, bc
ld c, 3 + NAME_LENGTH ; new code from Chatot4444, this bypasses the 16-limit on in-game trades.
call AddNTimes ; Also from chatot4444
ld a, [hli]
ld [wInGameTradeGiveMonSpecies], a
ld a, [hli]
@ -277,6 +273,9 @@ InGameTradeTextPointers:
dw TradeTextPointers3
dw TradeTextPointers4
dw TradeTextPointers5
dw TradeTextPointers6 ; Combat Tauros
dw TradeTextPointers7 ; Aqua Tauros
dw TradeTextPointers8 ; Blaze Tauros
TradeTextPointers1:
dw WannaTrade1Text
@ -313,6 +312,27 @@ TradeTextPointers5:
dw Thanks1Text
dw AfterTrade1Text
TradeTextPointers6: ; Combat Tauros
dw WannaTrade6Text
dw NoTrade1Text
dw WrongMon6Text
dw Thanks6Text
dw AfterTrade6Text
TradeTextPointers7: ; Aqua Tauros
dw WannaTrade7Text
dw NoTrade1Text
dw WrongMon7Text
dw Thanks6Text
dw AfterTrade7Text
TradeTextPointers8: ; Aqua Tauros
dw WannaTrade8Text
dw NoTrade1Text
dw WrongMon8Text
dw Thanks6Text
dw AfterTrade8Text
ConnectCableText:
text_far _ConnectCableText
text_end
@ -401,4 +421,44 @@ WannaTrade5Text:
NoTrade5Text:
text_far _NoTrade5Text
text_end
text_end
WannaTrade6Text:
text_far _WannaTrade6Text
text_end
WrongMon6Text:
text_far _WrongMon6Text
text_end
Thanks6Text:
text_far _Thanks6Text
text_end
AfterTrade6Text:
text_far _AfterTrade6Text
text_end
WannaTrade7Text:
text_far _WannaTrade7Text
text_end
WrongMon7Text:
text_far _WrongMon7Text
text_end
AfterTrade7Text:
text_far _AfterTrade7Text
text_end
WannaTrade8Text:
text_far _WannaTrade8Text
text_end
WrongMon8Text:
text_far _WrongMon8Text
text_end
AfterTrade8Text:
text_far _AfterTrade8Text
text_end

View file

@ -106,7 +106,7 @@ ItemUsePtrTable:
dw ItemUseEvoStone ; BLK_AUGURITE
dw ItemUseEvoStone ; DUBIOUS_DISC
dw UnusableItem ; CITRINE_PASS
dw UnusableItem ; OLDSEACHART
dw UnusableItem ; OLD_SEA_MAP
dw ItemUseEvoStone ; UP_GRADE
dw UnusableItem ; FLOOR_B2F
dw UnusableItem ; FLOOR_B1F

View file

@ -320,11 +320,13 @@ INCLUDE "engine/battle/ghost_marowak_anim.asm"
INCLUDE "engine/battle/battle_transitions.asm"
INCLUDE "engine/items/town_map.asm"
INCLUDE "engine/gfx/mon_icons.asm"
INCLUDE "engine/events/in_game_trades.asm"
INCLUDE "engine/gfx/palettes.asm"
INCLUDE "engine/menus/save.asm"
INCLUDE "engine/overworld/field_moves.asm"
SECTION "In-Game Trade Zone", ROMX
INCLUDE "engine/events/in_game_trades.asm"
SECTION "Itemfinder 1", ROMX

View file

@ -1 +1 @@
4 
4 

View file

@ -8,6 +8,7 @@ CinnabarPokecenter_TextPointers:
dw CinnabarPokecenterText3
dw CinnabarTradeNurseText
dw PoryZSalesmanText
dw MukTrade
CinnabarHealNurseText:
script_pokecenter_nurse
@ -90,4 +91,11 @@ PoryZSalesmanText:
PoryZBagFull:
text_far _PoryZBagFull
text_end
text_end
MukTrade:
text_asm
ld a, TRADE_FOR_MUK_A
ld [wWhichTrade], a
predef DoInGameTradeDialogue
jp TextScriptEnd

View file

@ -25,6 +25,7 @@ SSAnne1FRooms_TextPointers:
dw PickUpItemText
dw SSAnne8Text11
dw PerrserkerTrade
dw WeezingTrade
SSAnne8TrainerHeaders:
def_trainers
@ -143,3 +144,10 @@ PerrserkerTrade:
ld [wWhichTrade], a
predef DoInGameTradeDialogue
jp TextScriptEnd
WeezingTrade:
text_asm
ld a, TRADE_FOR_WEEZING_G
ld [wWhichTrade], a
predef DoInGameTradeDialogue
jp TextScriptEnd

View file

@ -30,6 +30,8 @@ SSAnne2FRooms_TextPointers:
dw SSAnne9Text12
dw SSAnne9Text13
dw SirfetchdTrade
dw MrRimeTrade
dw RapidashTrade
SSAnne9TrainerHeaders:
def_trainers
@ -195,3 +197,17 @@ SirfetchdTrade:
ld [wWhichTrade], a
predef DoInGameTradeDialogue
jp TextScriptEnd
MrRimeTrade:
text_asm
ld a, TRADE_FOR_MR_RIME
ld [wWhichTrade], a
predef DoInGameTradeDialogue
jp TextScriptEnd
RapidashTrade:
text_asm
ld a, TRADE_FOR_RAPIDASH_G
ld [wWhichTrade], a
predef DoInGameTradeDialogue
jp TextScriptEnd

View file

@ -24,7 +24,9 @@ SSAnneB1FRooms_TextPointers:
dw PickUpItemText
dw PickUpItemText
dw PickUpItemText
dw MrRimeTrade
dw TaurosCTrade
dw TaurosATrade
dw TaurosBTrade
SSAnne10TrainerHeaders:
def_trainers
@ -161,9 +163,23 @@ SSAnne10Text7:
text_far _SSAnne10Text7
text_end
MrRimeTrade:
TaurosCTrade:
text_asm
ld a, TRADE_FOR_MR_RIME
ld a, TRADE_FOR_TAUROS_C
ld [wWhichTrade], a
predef DoInGameTradeDialogue
jp TextScriptEnd
TaurosATrade:
text_asm
ld a, TRADE_FOR_TAUROS_A
ld [wWhichTrade], a
predef DoInGameTradeDialogue
jp TextScriptEnd
TaurosBTrade:
text_asm
ld a, TRADE_FOR_TAUROS_B
ld [wWhichTrade], a
predef DoInGameTradeDialogue
jp TextScriptEnd

View file

@ -18,7 +18,8 @@ SSAnneBow_TextPointers:
dw SSAnne5Text3
dw SSAnne5Text4
dw SSAnne5Text5
dw RapidashTrade
dw SlowkingTrade
dw SlowbroTrade
SSAnne5TrainerHeaders:
def_trainers 4
@ -76,9 +77,16 @@ SSAnne5AfterBattleText2:
text_far _SSAnne5AfterBattleText2
text_end
RapidashTrade:
SlowbroTrade:
text_asm
ld a, TRADE_FOR_RAPIDASH_G
ld a, TRADE_FOR_SLOWBRO_G
ld [wWhichTrade], a
predef DoInGameTradeDialogue
jp TextScriptEnd
SlowkingTrade:
text_asm
ld a, TRADE_FOR_SLOWKING_G
ld [wWhichTrade], a
predef DoInGameTradeDialogue
jp TextScriptEnd

View file

@ -221,7 +221,6 @@ VermilionDock_EraseSSAnne:
VermilionDock_TextPointers:
dw VermilionDockText1
dw PickUpItemText
;dw VermilionDockText2
VermilionDockText1:
text_far _VermilionDockText1