jep-hack/engine/events/specials.asm
Llinos Evans a4044f0929 Naming mother restored!
The act of naming your mother was restored by adding a name substitution system to WRAM, thus allowing the Dude to occupy a slot naturally. I believe Red and Blue's names are unused too, but just to be safe, I left them alone. Using this means we can technically have battles that substitute names all the time, so this is really neat.

Reworked the first rival encounter scene to have him treat you like an idiot, blurt out what you name your mother, tease you, and piss you off. Arguably flows better than the original and makes more sense. Also, now the mother's name is placed in various spots.

Only concern really is seeing the default name in the phone contact. Feel free to change that if you want, but it's hard to place due to situations where the player leaves without talking to her, so take care!
2024-07-29 14:23:59 +01:00

445 lines
6.2 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@"
NameMom:
ld b, NAME_MOM
ld de, wMomsName
farcall _NamingScreen
ld hl, wMomsName
ld de, .DefaultName
call InitName
ret
.DefaultName:
db "MOM@"
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
CheckSweetHoneyTimer:
farcall _CheckSweetHoneyTimer
ld a, [wSweetHoneyTimer]
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
;FossilScientist:
; farcall FossilScientistGuy
; ret