pokered/scripts/daycarem.asm
2015-08-30 21:38:41 -05:00

269 lines
4.9 KiB
NASM
Executable file

DayCareMScript: ; 5624f (15:624f)
jp EnableAutoTextBoxDrawing
DayCareMTextPointers: ; 56252 (15:6252)
dw DayCareMText1
DayCareMText1: ; 56254 (15:6254)
TX_ASM
call SaveScreenTilesToBuffer2
ld a, [wDayCareInUse]
and a
jp nz, .daycareInUse
ld hl, DayCareIntroText
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem]
and a
ld hl, DayCareComeAgainText
jp nz, .done
ld a, [wPartyCount]
dec a
ld hl, DayCareOnlyHaveOneMonText
jp z, .done
ld hl, DayCareWhichMonText
call PrintText
xor a
ld [wUpdateSpritesEnabled], a
ld [wPartyMenuTypeOrMessageID], a
ld [wMenuItemToSwap], a
call DisplayPartyMenu
push af
call GBPalWhiteOutWithDelay3
call RestoreScreenTilesAndReloadTilePatterns
call LoadGBPal
pop af
ld hl, DayCareAllRightThenText
jp c, .done
callab KnowsHMMove
ld hl, DayCareCantAcceptMonWithHMText
jp c, .done
xor a
ld [wPartyAndBillsPCSavedMenuItem], a
ld a, [wWhichPokemon]
ld hl, wPartyMonNicks
call GetPartyMonName
ld hl, DayCareWillLookAfterMonText
call PrintText
ld a, 1
ld [wDayCareInUse], a
ld a, PARTY_TO_DAYCARE
ld [wMoveMonType], a
call MoveMon
xor a
ld [wRemoveMonFromBox], a
call RemovePokemon
ld a, [wcf91]
call PlayCry
ld hl, DayCareComeSeeMeInAWhileText
jp .done
.daycareInUse
xor a
ld hl, wDayCareMonName
call GetPartyMonName
ld a, DAYCARE_DATA
ld [wMonDataLocation], a
call LoadMonData
callab CalcLevelFromExperience
ld a, d
cp MAX_LEVEL
jr c, .skipCalcExp
ld d, MAX_LEVEL
callab CalcExperience
ld hl, wDayCareMonExp
ld a, [hExperience]
ld [hli], a
ld a, [hExperience + 1]
ld [hli], a
ld a, [hExperience + 2]
ld [hl], a
ld d, MAX_LEVEL
.skipCalcExp
xor a
ld [wDayCareNumLevelsGrown], a
ld hl, wDayCareMonBoxLevel
ld a, [hl]
ld [wDayCareStartLevel], a
cp d
ld [hl], d
ld hl, DayCareMonNeedsMoreTimeText
jr z, .next
ld a, [wDayCareStartLevel]
ld b, a
ld a, d
sub b
ld [wDayCareNumLevelsGrown], a
ld hl, DayCareMonHasGrownText
.next
call PrintText
ld a, [wPartyCount]
cp PARTY_LENGTH
ld hl, DayCareNoRoomForMonText
jp z, .leaveMonInDayCare
ld de, wDayCareTotalCost
xor a
ld [de], a
inc de
ld [de], a
ld hl, wDayCarePerLevelCost
ld a, $1
ld [hli], a
ld [hl], $0
ld a, [wDayCareNumLevelsGrown]
inc a
ld b, a
ld c, 2
.calcPriceLoop
push hl
push de
push bc
predef AddBCDPredef
pop bc
pop de
pop hl
dec b
jr nz, .calcPriceLoop
ld hl, DayCareOweMoneyText
call PrintText
ld a, MONEY_BOX
ld [wTextBoxID], a
call DisplayTextBoxID
call YesNoChoice
ld hl, DayCareAllRightThenText
ld a, [wCurrentMenuItem]
and a
jp nz, .leaveMonInDayCare
ld hl, wDayCareTotalCost
ld [hMoney], a
ld a, [hli]
ld [hMoney + 1], a
ld a, [hl]
ld [hMoney + 2], a
call HasEnoughMoney
jr nc, .enoughMoney
ld hl, DayCareNotEnoughMoneyText
jp .leaveMonInDayCare
.enoughMoney
xor a
ld [wDayCareInUse], a
ld hl, wDayCareNumLevelsGrown
ld [hli], a
inc hl
ld de, wPlayerMoney + 2
ld c, $3
predef SubBCDPredef
ld a, SFX_PURCHASE
call PlaySoundWaitForCurrent
ld a, MONEY_BOX
ld [wTextBoxID], a
call DisplayTextBoxID
ld hl, DayCareHeresYourMonText
call PrintText
ld a, DAYCARE_TO_PARTY
ld [wMoveMonType], a
call MoveMon
ld a, [wDayCareMonSpecies]
ld [wcf91], a
ld a, [wPartyCount]
dec a
push af
ld bc, wPartyMon2 - wPartyMon1
push bc
ld hl, wPartyMon1Moves
call AddNTimes
ld d, h
ld e, l
ld a, 1
ld [wLearningMovesFromDayCare], a
predef WriteMonMoves
pop bc
pop af
; set mon's HP to max
ld hl, wPartyMon1HP
call AddNTimes
ld d, h
ld e, l
ld bc, wPartyMon1MaxHP - wPartyMon1HP
add hl, bc
ld a, [hli]
ld [de], a
inc de
ld a, [hl]
ld [de], a
ld a, [wcf91]
call PlayCry
ld hl, DayCareGotMonBackText
jr .done
.leaveMonInDayCare
ld a, [wDayCareStartLevel]
ld [wDayCareMonBoxLevel], a
.done
call PrintText
jp TextScriptEnd
DayCareIntroText: ; 5640f (15:640f)
TX_FAR _DayCareIntroText
db "@"
DayCareWhichMonText: ; 56414 (15:6414)
TX_FAR _DayCareWhichMonText
db "@"
DayCareWillLookAfterMonText: ; 56419 (15:6419)
TX_FAR _DayCareWillLookAfterMonText
db "@"
DayCareComeSeeMeInAWhileText: ; 5641e (15:641e)
TX_FAR _DayCareComeSeeMeInAWhileText
db "@"
DayCareMonHasGrownText: ; 56423 (15:6423)
TX_FAR _DayCareMonHasGrownText
db "@"
DayCareOweMoneyText: ; 56428 (15:6428)
TX_FAR _DayCareOweMoneyText
db "@"
DayCareGotMonBackText: ; 5642d (15:642d)
TX_FAR _DayCareGotMonBackText
db "@"
DayCareMonNeedsMoreTimeText: ; 56432 (15:6432)
TX_FAR _DayCareMonNeedsMoreTimeText
db "@"
DayCareAllRightThenText: ; 56437 (15:6437)
TX_FAR _DayCareAllRightThenText
DayCareComeAgainText: ; 5643b (15:643b)
TX_FAR _DayCareComeAgainText
db "@"
DayCareNoRoomForMonText: ; 56440 (15:6440)
TX_FAR _DayCareNoRoomForMonText
db "@"
DayCareOnlyHaveOneMonText: ; 56445 (15:6445)
TX_FAR _DayCareOnlyHaveOneMonText
db "@"
DayCareCantAcceptMonWithHMText: ; 5644a (15:644a)
TX_FAR _DayCareCantAcceptMonWithHMText
db "@"
DayCareHeresYourMonText: ; 5644f (15:644f)
TX_FAR _DayCareHeresYourMonText
db "@"
DayCareNotEnoughMoneyText: ; 56454 (15:6454)
TX_FAR _DayCareNotEnoughMoneyText
db "@"