pokered/scripts/Daycare.asm

271 lines
4.7 KiB
NASM
Raw Permalink Normal View History

Daycare_Script:
2014-05-18 18:19:10 +00:00
jp EnableAutoTextBoxDrawing
Daycare_TextPointers:
def_text_pointers
dw_const DaycareGentlemanText, TEXT_DAYCARE_GENTLEMAN
2014-05-18 18:19:10 +00:00
DaycareGentlemanText:
text_asm
2014-05-18 18:19:10 +00:00
call SaveScreenTilesToBuffer2
2015-08-31 02:38:41 +00:00
ld a, [wDayCareInUse]
2014-05-18 18:19:10 +00:00
and a
2015-07-19 03:49:52 +00:00
jp nz, .daycareInUse
ld hl, .IntroText
2014-05-18 18:19:10 +00:00
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem]
2014-05-18 18:19:10 +00:00
and a
ld hl, .ComeAgainText
2015-07-19 03:49:52 +00:00
jp nz, .done
ld a, [wPartyCount]
2014-05-18 18:19:10 +00:00
dec a
ld hl, .OnlyHaveOneMonText
2015-07-19 03:49:52 +00:00
jp z, .done
ld hl, .WhichMonText
2014-05-18 18:19:10 +00:00
call PrintText
xor a
2014-09-13 07:50:56 +00:00
ld [wUpdateSpritesEnabled], a
ld [wPartyMenuTypeOrMessageID], a
2014-08-09 05:39:13 +00:00
ld [wMenuItemToSwap], a
2014-05-18 18:19:10 +00:00
call DisplayPartyMenu
push af
call GBPalWhiteOutWithDelay3
call RestoreScreenTilesAndReloadTilePatterns
2014-05-18 18:19:10 +00:00
call LoadGBPal
pop af
ld hl, .AllRightThenText
2015-07-19 03:49:52 +00:00
jp c, .done
callfar KnowsHMMove
ld hl, .CantAcceptMonWithHMText
2015-07-19 03:49:52 +00:00
jp c, .done
2014-05-18 18:19:10 +00:00
xor a
2015-07-16 03:04:58 +00:00
ld [wPartyAndBillsPCSavedMenuItem], a
2014-05-18 18:19:10 +00:00
ld a, [wWhichPokemon]
ld hl, wPartyMonNicks
2014-05-18 18:19:10 +00:00
call GetPartyMonName
ld hl, .WillLookAfterMonText
2014-05-18 18:19:10 +00:00
call PrintText
ld a, 1
2015-08-31 02:38:41 +00:00
ld [wDayCareInUse], a
ld a, PARTY_TO_DAYCARE
ld [wMoveMonType], a
2015-07-13 06:00:48 +00:00
call MoveMon
2014-05-18 18:19:10 +00:00
xor a
ld [wRemoveMonFromBox], a
2014-05-18 18:19:10 +00:00
call RemovePokemon
ld a, [wCurPartySpecies]
2014-05-18 18:19:10 +00:00
call PlayCry
ld hl, .ComeSeeMeInAWhileText
2015-07-19 03:49:52 +00:00
jp .done
2014-05-18 18:19:10 +00:00
2015-07-19 03:49:52 +00:00
.daycareInUse
2014-05-18 18:19:10 +00:00
xor a
2015-08-31 02:38:41 +00:00
ld hl, wDayCareMonName
2014-05-18 18:19:10 +00:00
call GetPartyMonName
2015-07-16 03:04:58 +00:00
ld a, DAYCARE_DATA
ld [wMonDataLocation], a
2014-05-18 18:19:10 +00:00
call LoadMonData
callfar CalcLevelFromExperience
2014-05-18 18:19:10 +00:00
ld a, d
cp MAX_LEVEL
2015-07-19 03:49:52 +00:00
jr c, .skipCalcExp
ld d, MAX_LEVEL
callfar CalcExperience
ld hl, wDayCareMonExp
ldh a, [hExperience]
2014-05-18 18:19:10 +00:00
ld [hli], a
ldh a, [hExperience + 1]
2014-05-18 18:19:10 +00:00
ld [hli], a
ldh a, [hExperience + 2]
2014-05-18 18:19:10 +00:00
ld [hl], a
ld d, MAX_LEVEL
2014-05-18 18:19:10 +00:00
2015-07-19 03:49:52 +00:00
.skipCalcExp
2014-05-18 18:19:10 +00:00
xor a
2015-07-19 03:49:52 +00:00
ld [wDayCareNumLevelsGrown], a
ld hl, wDayCareMonBoxLevel
2014-05-18 18:19:10 +00:00
ld a, [hl]
2015-07-19 03:49:52 +00:00
ld [wDayCareStartLevel], a
2014-05-18 18:19:10 +00:00
cp d
ld [hl], d
ld hl, .MonNeedsMoreTimeText
2015-07-19 03:49:52 +00:00
jr z, .next
ld a, [wDayCareStartLevel]
2014-05-18 18:19:10 +00:00
ld b, a
ld a, d
sub b
2015-07-19 03:49:52 +00:00
ld [wDayCareNumLevelsGrown], a
ld hl, .MonHasGrownText
2014-05-18 18:19:10 +00:00
2015-07-19 03:49:52 +00:00
.next
2014-05-18 18:19:10 +00:00
call PrintText
ld a, [wPartyCount]
cp PARTY_LENGTH
ld hl, .NoRoomForMonText
2015-07-23 13:07:12 +00:00
jp z, .leaveMonInDayCare
ld de, wDayCareTotalCost
2014-05-18 18:19:10 +00:00
xor a
ld [de], a
inc de
ld [de], a
2015-07-23 13:07:12 +00:00
ld hl, wDayCarePerLevelCost
2014-05-18 18:19:10 +00:00
ld a, $1
ld [hli], a
ld [hl], $0
2015-07-19 03:49:52 +00:00
ld a, [wDayCareNumLevelsGrown]
2014-05-18 18:19:10 +00:00
inc a
ld b, a
2015-07-23 13:07:12 +00:00
ld c, 2
.calcPriceLoop
2014-05-18 18:19:10 +00:00
push hl
push de
push bc
predef AddBCDPredef
2014-05-18 18:19:10 +00:00
pop bc
pop de
pop hl
dec b
2015-07-23 13:07:12 +00:00
jr nz, .calcPriceLoop
ld hl, .OweMoneyText
2014-05-18 18:19:10 +00:00
call PrintText
2015-07-23 13:07:12 +00:00
ld a, MONEY_BOX
2015-02-07 10:43:08 +00:00
ld [wTextBoxID], a
2014-05-18 18:19:10 +00:00
call DisplayTextBoxID
call YesNoChoice
ld hl, .AllRightThenText
2014-05-18 18:19:10 +00:00
ld a, [wCurrentMenuItem]
and a
2015-07-23 13:07:12 +00:00
jp nz, .leaveMonInDayCare
ld hl, wDayCareTotalCost
ldh [hMoney], a
2014-05-18 18:19:10 +00:00
ld a, [hli]
ldh [hMoney + 1], a
2014-05-18 18:19:10 +00:00
ld a, [hl]
ldh [hMoney + 2], a
2014-05-18 18:19:10 +00:00
call HasEnoughMoney
2015-07-23 13:07:12 +00:00
jr nc, .enoughMoney
ld hl, .NotEnoughMoneyText
2015-07-23 13:07:12 +00:00
jp .leaveMonInDayCare
2014-05-18 18:19:10 +00:00
2015-07-23 13:07:12 +00:00
.enoughMoney
2014-05-18 18:19:10 +00:00
xor a
2015-08-31 02:38:41 +00:00
ld [wDayCareInUse], a
2015-07-19 03:49:52 +00:00
ld hl, wDayCareNumLevelsGrown
2014-05-18 18:19:10 +00:00
ld [hli], a
inc hl
ld de, wPlayerMoney + 2
2014-05-18 18:19:10 +00:00
ld c, $3
predef SubBCDPredef
2015-07-19 08:46:12 +00:00
ld a, SFX_PURCHASE
2014-05-18 18:19:10 +00:00
call PlaySoundWaitForCurrent
2015-07-13 06:00:48 +00:00
ld a, MONEY_BOX
2015-02-07 10:43:08 +00:00
ld [wTextBoxID], a
2014-05-18 18:19:10 +00:00
call DisplayTextBoxID
ld hl, .HeresYourMonText
2014-05-18 18:19:10 +00:00
call PrintText
ld a, DAYCARE_TO_PARTY
ld [wMoveMonType], a
2015-07-13 06:00:48 +00:00
call MoveMon
ld a, [wDayCareMonSpecies]
ld [wCurPartySpecies], a
ld a, [wPartyCount]
2014-05-18 18:19:10 +00:00
dec a
push af
ld bc, wPartyMon2 - wPartyMon1
2014-05-18 18:19:10 +00:00
push bc
ld hl, wPartyMon1Moves
2014-05-18 18:19:10 +00:00
call AddNTimes
ld d, h
ld e, l
ld a, 1
2015-07-19 03:49:52 +00:00
ld [wLearningMovesFromDayCare], a
predef WriteMonMoves
2014-05-18 18:19:10 +00:00
pop bc
pop af
2015-07-19 03:49:52 +00:00
; set mon's HP to max
ld hl, wPartyMon1HP
2014-05-18 18:19:10 +00:00
call AddNTimes
ld d, h
ld e, l
ld bc, wPartyMon1MaxHP - wPartyMon1HP
2014-05-18 18:19:10 +00:00
add hl, bc
ld a, [hli]
ld [de], a
inc de
ld a, [hl]
ld [de], a
2015-07-19 03:49:52 +00:00
ld a, [wCurPartySpecies]
2014-05-18 18:19:10 +00:00
call PlayCry
ld hl, .GotMonBackText
2015-07-19 03:49:52 +00:00
jr .done
2014-05-18 18:19:10 +00:00
2015-07-23 13:07:12 +00:00
.leaveMonInDayCare
2015-07-19 03:49:52 +00:00
ld a, [wDayCareStartLevel]
ld [wDayCareMonBoxLevel], a
2014-05-18 18:19:10 +00:00
2015-07-19 03:49:52 +00:00
.done
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
.IntroText:
text_far _DaycareGentlemanIntroText
text_end
2014-05-18 18:19:10 +00:00
.WhichMonText:
text_far _DaycareGentlemanWhichMonText
text_end
2014-05-18 18:19:10 +00:00
.WillLookAfterMonText:
text_far _DaycareGentlemanWillLookAfterMonText
text_end
2014-05-18 18:19:10 +00:00
.ComeSeeMeInAWhileText:
text_far _DaycareGentlemanComeSeeMeInAWhileText
text_end
2014-05-18 18:19:10 +00:00
.MonHasGrownText:
text_far _DaycareGentlemanMonHasGrownText
text_end
2014-05-18 18:19:10 +00:00
.OweMoneyText:
text_far _DaycareGentlemanOweMoneyText
text_end
2014-05-18 18:19:10 +00:00
.GotMonBackText:
text_far _DaycareGentlemanGotMonBackText
text_end
2014-05-18 18:19:10 +00:00
.MonNeedsMoreTimeText:
text_far _DaycareGentlemanMonNeedsMoreTimeText
text_end
2014-05-18 18:19:10 +00:00
.AllRightThenText:
text_far _DaycareGentlemanAllRightThenText
.ComeAgainText:
text_far _DaycareGentlemanComeAgainText
text_end
2014-05-18 18:19:10 +00:00
.NoRoomForMonText:
text_far _DaycareGentlemanNoRoomForMonText
text_end
2014-05-18 18:19:10 +00:00
.OnlyHaveOneMonText:
text_far _DaycareGentlemanOnlyHaveOneMonText
text_end
2014-05-18 18:19:10 +00:00
.CantAcceptMonWithHMText:
text_far _DaycareGentlemanCantAcceptMonWithHMText
text_end
2014-05-18 18:19:10 +00:00
.HeresYourMonText:
text_far _DaycareGentlemanHeresYourMonText
text_end
2014-05-18 18:19:10 +00:00
.NotEnoughMoneyText:
text_far _DaycareGentlemanNotEnoughMoneyText
text_end