mirror of
https://github.com/thornAvery/jep-hack.git
synced 2025-09-16 10:13:24 +12:00

This adds the Trader NPC to the Lake of Rage and restores its "town" environment. The town is themed around evolution. The mart sells all the "normal" evolution stones, aiming to solve Johto's "stone problem" for Pokemon like Vulpix and Bellsprout. The Trader NPC actualises this, being at a point where most Pokemon are around Level 35-40, as is how we balanced it on Cinnabar Island in KEP. The text is mostly revolved around the Gyarados, but this could shift. The Gym isn't done - I don't have time to sort it at the moment - but I am thinking of making it a Pre-Gym. This doesn't make a lot of sense though, so maybe it should be changed to be the tower seen in an earlier build.
427 lines
6 KiB
NASM
427 lines
6 KiB
NASM
Special::
|
|
; Run script special de.
|
|
ld hl, SpecialsPointers
|
|
add hl, de
|
|
add hl, de
|
|
add hl, de
|
|
ld b, [hl]
|
|
inc hl
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld a, b
|
|
rst FarCall
|
|
ret
|
|
|
|
INCLUDE "data/events/special_pointers.asm"
|
|
|
|
UnusedDummySpecial:
|
|
ret
|
|
|
|
SetPlayerPalette:
|
|
ld a, [wScriptVar]
|
|
ld d, a
|
|
farcall _SetPlayerPalette
|
|
ret
|
|
|
|
GameCornerPrizeMonCheckDex:
|
|
ld a, [wScriptVar]
|
|
call CheckCaughtMon
|
|
ret nz
|
|
ld a, [wScriptVar]
|
|
call SetSeenAndCaughtMon
|
|
call FadeToMenu
|
|
ld a, [wScriptVar]
|
|
ld [wNamedObjectIndex], a
|
|
farcall NewPokedexEntry
|
|
call ExitAllMenus
|
|
ret
|
|
|
|
UnusedSetSeenMon:
|
|
ld a, [wScriptVar]
|
|
call SetSeenMon
|
|
ret
|
|
|
|
FindPartyMonAboveLevel:
|
|
ld a, [wScriptVar]
|
|
ld b, a
|
|
farcall _FindPartyMonAboveLevel
|
|
jr z, FoundNone
|
|
jr FoundOne
|
|
|
|
FindPartyMonAtLeastThatHappy:
|
|
ld a, [wScriptVar]
|
|
ld b, a
|
|
farcall _FindPartyMonAtLeastThatHappy
|
|
jr z, FoundNone
|
|
jr FoundOne
|
|
|
|
FindPartyMonThatSpecies:
|
|
ld a, [wScriptVar]
|
|
ld b, a
|
|
farcall _FindPartyMonThatSpecies
|
|
jr z, FoundNone
|
|
jr FoundOne
|
|
|
|
FindPartyMonThatSpeciesYourTrainerID:
|
|
ld a, [wScriptVar]
|
|
ld b, a
|
|
farcall _FindPartyMonThatSpeciesYourTrainerID
|
|
jr z, FoundNone
|
|
jr FoundOne
|
|
|
|
FoundOne:
|
|
ld a, TRUE
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
FoundNone:
|
|
xor a
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
NameRival:
|
|
ld b, NAME_RIVAL
|
|
ld de, wRivalName
|
|
farcall _NamingScreen
|
|
ld hl, wRivalName
|
|
ld de, .DefaultName
|
|
call InitName
|
|
ret
|
|
|
|
.DefaultName:
|
|
db "SILVER@"
|
|
|
|
NameRater:
|
|
farcall _NameRater
|
|
ret
|
|
|
|
OverworldTownMap:
|
|
call FadeToMenu
|
|
farcall _TownMap
|
|
call ExitAllMenus
|
|
ret
|
|
|
|
UnownPrinter:
|
|
call FadeToMenu
|
|
farcall _UnownPrinter
|
|
call ExitAllMenus
|
|
ret
|
|
|
|
DisplayLinkRecord:
|
|
call FadeToMenu
|
|
farcall _DisplayLinkRecord
|
|
call ExitAllMenus
|
|
ret
|
|
|
|
PlayersHousePC:
|
|
xor a
|
|
ld [wScriptVar], a
|
|
farcall _PlayersHousePC
|
|
ld a, c
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
CheckMysteryGift:
|
|
ld a, BANK(sMysteryGiftItem)
|
|
call OpenSRAM
|
|
ld a, [sMysteryGiftItem]
|
|
and a
|
|
jr z, .no
|
|
inc a
|
|
|
|
.no
|
|
ld [wScriptVar], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
GetMysteryGiftItem:
|
|
ld a, BANK(sMysteryGiftItem)
|
|
call OpenSRAM
|
|
ld a, [sMysteryGiftItem]
|
|
ld [wCurItem], a
|
|
ld a, 1
|
|
ld [wItemQuantityChange], a
|
|
ld hl, wNumItems
|
|
call ReceiveItem
|
|
jr nc, .no_room
|
|
xor a
|
|
ld [sMysteryGiftItem], a
|
|
call CloseSRAM
|
|
ld a, [wCurItem]
|
|
ld [wNamedObjectIndex], a
|
|
call GetItemName
|
|
ld hl, .ReceiveItemText
|
|
call PrintText
|
|
ld a, TRUE
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
.no_room
|
|
call CloseSRAM
|
|
xor a
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
.ReceiveItemText:
|
|
text_far _ReceiveItemText
|
|
text_end
|
|
|
|
BugContestJudging:
|
|
farcall _BugContestJudging
|
|
ld a, b
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
MapRadio:
|
|
ld a, [wScriptVar]
|
|
ld e, a
|
|
farcall PlayRadio
|
|
ret
|
|
|
|
UnownPuzzle:
|
|
call FadeToMenu
|
|
farcall _UnownPuzzle
|
|
ld a, [wSolvedUnownPuzzle]
|
|
ld [wScriptVar], a
|
|
call ExitAllMenus
|
|
ret
|
|
|
|
SlotMachine:
|
|
call CheckCoinsAndCoinCase
|
|
ret c
|
|
ld a, BANK(_SlotMachine)
|
|
ld hl, _SlotMachine
|
|
call StartGameCornerGame
|
|
ret
|
|
|
|
CardFlip:
|
|
call CheckCoinsAndCoinCase
|
|
ret c
|
|
ld a, BANK(_CardFlip)
|
|
ld hl, _CardFlip
|
|
call StartGameCornerGame
|
|
ret
|
|
|
|
UnusedMemoryGame:
|
|
call CheckCoinsAndCoinCase
|
|
ret c
|
|
ld a, BANK(_MemoryGame)
|
|
ld hl, _MemoryGame
|
|
call StartGameCornerGame
|
|
ret
|
|
|
|
StartGameCornerGame:
|
|
call FarQueueScript
|
|
call FadeToMenu
|
|
ld hl, wQueuedScriptBank
|
|
ld a, [hli]
|
|
push af
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
pop af
|
|
rst FarCall
|
|
call ExitAllMenus
|
|
ret
|
|
|
|
CheckCoinsAndCoinCase:
|
|
ld hl, wCoins
|
|
ld a, [hli]
|
|
or [hl]
|
|
jr z, .no_coins
|
|
ld a, COIN_CASE
|
|
ld [wCurItem], a
|
|
ld hl, wNumItems
|
|
call CheckItem
|
|
jr nc, .no_coin_case
|
|
and a
|
|
ret
|
|
|
|
.no_coins
|
|
ld hl, .NoCoinsText
|
|
jr .print
|
|
|
|
.no_coin_case
|
|
ld hl, .NoCoinCaseText
|
|
|
|
.print
|
|
call PrintText
|
|
scf
|
|
ret
|
|
|
|
.NoCoinsText:
|
|
text_far _NoCoinsText
|
|
text_end
|
|
|
|
.NoCoinCaseText:
|
|
text_far _NoCoinCaseText
|
|
text_end
|
|
|
|
ClearBGPalettesBufferScreen:
|
|
call ClearBGPalettes
|
|
call BufferScreen
|
|
ret
|
|
|
|
ScriptReturnCarry:
|
|
jr c, .carry
|
|
xor a
|
|
ld [wScriptVar], a
|
|
ret
|
|
.carry
|
|
ld a, 1
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
UnusedCheckUnusedTwoDayTimer:
|
|
farcall CheckUnusedTwoDayTimer
|
|
ld a, [wUnusedTwoDayTimer]
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
ActivateFishingSwarm:
|
|
ld a, [wScriptVar]
|
|
ld [wFishingSwarmFlag], a
|
|
ret
|
|
|
|
StoreSwarmMapIndices::
|
|
ld a, c
|
|
and a
|
|
jr nz, .yanma
|
|
; swarm dark cave violet entrance
|
|
ld a, d
|
|
ld [wDunsparceMapGroup], a
|
|
ld a, e
|
|
ld [wDunsparceMapNumber], a
|
|
ret
|
|
|
|
.yanma
|
|
ld a, d
|
|
ld [wYanmaMapGroup], a
|
|
ld a, e
|
|
ld [wYanmaMapNumber], a
|
|
ret
|
|
|
|
CheckPokerus:
|
|
; Check if a monster in your party has Pokerus
|
|
farcall _CheckPokerus
|
|
jp ScriptReturnCarry
|
|
|
|
ResetLuckyNumberShowFlag:
|
|
farcall RestartLuckyNumberCountdown
|
|
ld hl, wLuckyNumberShowFlag
|
|
res LUCKYNUMBERSHOW_GAME_OVER_F, [hl]
|
|
farcall LoadOrRegenerateLuckyIDNumber
|
|
ret
|
|
|
|
CheckLuckyNumberShowFlag:
|
|
farcall _CheckLuckyNumberShowFlag
|
|
jp ScriptReturnCarry
|
|
|
|
SnorlaxAwake:
|
|
; Check if the Poké Flute channel is playing, and if the player is standing
|
|
; next to Snorlax.
|
|
|
|
; outputs:
|
|
; wScriptVar is 1 if the conditions are met, otherwise 0.
|
|
|
|
; check background music
|
|
ld a, [wMapMusic]
|
|
cp MUSIC_POKE_FLUTE_CHANNEL
|
|
jr nz, .nope
|
|
|
|
ld a, [wXCoord]
|
|
ld b, a
|
|
ld a, [wYCoord]
|
|
ld c, a
|
|
|
|
ld hl, .ProximityCoords
|
|
.loop
|
|
ld a, [hli]
|
|
cp -1
|
|
jr z, .nope
|
|
cp b
|
|
jr nz, .nextcoord
|
|
ld a, [hli]
|
|
cp c
|
|
jr nz, .loop
|
|
|
|
ld a, TRUE
|
|
jr .done
|
|
|
|
.nextcoord
|
|
inc hl
|
|
jr .loop
|
|
|
|
.nope
|
|
xor a
|
|
.done
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
.ProximityCoords:
|
|
; x, y
|
|
db 33, 8 ; left
|
|
db 34, 10 ; below
|
|
db 35, 10 ; below
|
|
db 36, 8 ; right
|
|
db 36, 9 ; right
|
|
db -1
|
|
|
|
PlayCurMonCry:
|
|
ld a, [wCurPartySpecies]
|
|
jp PlayMonCry
|
|
|
|
GameboyCheck:
|
|
ldh a, [hCGB]
|
|
and a
|
|
jr nz, .cgb
|
|
ldh a, [hSGB]
|
|
and a
|
|
jr nz, .sgb
|
|
; gb
|
|
xor a ; GBCHECK_GB
|
|
jr .done
|
|
|
|
.sgb
|
|
ld a, GBCHECK_SGB
|
|
jr .done
|
|
|
|
.cgb
|
|
ld a, GBCHECK_CGB
|
|
.done
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
FadeOutMusic:
|
|
ld a, LOW(MUSIC_NONE)
|
|
ld [wMusicFadeID], a
|
|
ld a, HIGH(MUSIC_NONE)
|
|
ld [wMusicFadeID + 1], a
|
|
ld a, $2
|
|
ld [wMusicFade], a
|
|
ret
|
|
|
|
Diploma:
|
|
call FadeToMenu
|
|
farcall _Diploma
|
|
call ExitAllMenus
|
|
ret
|
|
|
|
PrintDiploma:
|
|
call FadeToMenu
|
|
farcall _PrintDiploma
|
|
call ExitAllMenus
|
|
ret
|
|
|
|
TrainerHouse:
|
|
ld a, BANK(sMysteryGiftTrainerHouseFlag)
|
|
call OpenSRAM
|
|
ld a, [sMysteryGiftTrainerHouseFlag]
|
|
ld [wScriptVar], a
|
|
jp CloseSRAM
|
|
|
|
; Tradeback NPC tutorial
|
|
TradebackNPC:
|
|
farcall TradebackGuy
|
|
ret |