pokecrystal-board/engine/events/daycare.asm

725 lines
12 KiB
NASM
Raw Normal View History

; PrintDayCareText.TextTable indexes
2015-12-18 17:07:09 -08:00
const_def
const DAYCARETEXT_MAN_INTRO
const DAYCARETEXT_MAN_INTRO_EGG
const DAYCARETEXT_LADY_INTRO
const DAYCARETEXT_LADY_INTRO_EGG
const DAYCARETEXT_WHICH_ONE
const DAYCARETEXT_DEPOSIT
const DAYCARETEXT_CANT_BREED_EGG
const DAYCARETEXT_LAST_MON
const DAYCARETEXT_LAST_ALIVE_MON
const DAYCARETEXT_COME_BACK_LATER
const DAYCARETEXT_REMOVE_MAIL
const DAYCARETEXT_GENIUSES
const DAYCARETEXT_ASK_WITHDRAW
const DAYCARETEXT_WITHDRAW
const DAYCARETEXT_GOT_BACK
const DAYCARETEXT_TOO_SOON
const DAYCARETEXT_PARTY_FULL
const DAYCARETEXT_NOT_ENOUGH_MONEY
const DAYCARETEXT_OH_FINE
const DAYCARETEXT_COME_AGAIN
2015-12-18 17:07:09 -08:00
2018-06-24 07:09:41 -07:00
DayCareMan:
ld hl, wDayCareMan
2018-01-22 10:18:23 -08:00
bit DAYCAREMAN_HAS_MON_F, [hl]
2015-12-18 17:07:09 -08:00
jr nz, .AskWithdrawMon
ld hl, wDayCareMan
ld a, DAYCARETEXT_MAN_INTRO
2015-12-18 17:07:09 -08:00
call DayCareManIntroText
jr c, .cancel
call DayCareAskDepositPokemon
jr c, .print_text
2017-12-24 09:47:30 -08:00
farcall DepositMonWithDayCareMan
ld hl, wDayCareMan
2018-01-22 10:18:23 -08:00
set DAYCAREMAN_HAS_MON_F, [hl]
2015-12-18 17:07:09 -08:00
call DayCare_DepositPokemonText
call DayCare_InitBreeding
2015-11-16 18:46:36 -08:00
ret
.AskWithdrawMon:
2017-12-24 09:47:30 -08:00
farcall GetBreedMon1LevelGrowth
2015-11-16 18:46:36 -08:00
ld hl, wBreedMon1Nick
call GetPriceToRetrieveBreedmon
call DayCare_AskWithdrawBreedMon
2015-12-18 17:07:09 -08:00
jr c, .print_text
2018-02-14 02:51:47 -08:00
farcall RetrieveMonFromDayCareMan
call DayCare_GetBackMonForMoney
ld hl, wDayCareMan
2018-01-22 10:18:23 -08:00
res DAYCAREMAN_HAS_MON_F, [hl]
res DAYCAREMAN_MONS_COMPATIBLE_F, [hl]
2015-12-18 17:07:09 -08:00
jr .cancel
2015-11-16 18:46:36 -08:00
2015-12-18 17:07:09 -08:00
.print_text
call PrintDayCareText
2015-11-16 18:46:36 -08:00
2015-12-18 17:07:09 -08:00
.cancel
ld a, DAYCARETEXT_COME_AGAIN
2015-12-18 17:07:09 -08:00
call PrintDayCareText
2015-11-16 18:46:36 -08:00
ret
2018-06-24 07:09:41 -07:00
DayCareLady:
ld hl, wDayCareLady
2018-01-22 10:18:23 -08:00
bit DAYCARELADY_HAS_MON_F, [hl]
2015-12-18 17:07:09 -08:00
jr nz, .AskWithdrawMon
ld hl, wDayCareLady
ld a, DAYCARETEXT_LADY_INTRO
2015-12-18 17:07:09 -08:00
call DayCareLadyIntroText
jr c, .cancel
call DayCareAskDepositPokemon
jr c, .print_text
2017-12-24 09:47:30 -08:00
farcall DepositMonWithDayCareLady
ld hl, wDayCareLady
2018-01-22 10:18:23 -08:00
set DAYCARELADY_HAS_MON_F, [hl]
2015-12-18 17:07:09 -08:00
call DayCare_DepositPokemonText
call DayCare_InitBreeding
2015-11-16 18:46:36 -08:00
ret
.AskWithdrawMon:
2017-12-24 09:47:30 -08:00
farcall GetBreedMon2LevelGrowth
2015-11-16 18:46:36 -08:00
ld hl, wBreedMon2Nick
call GetPriceToRetrieveBreedmon
call DayCare_AskWithdrawBreedMon
2015-12-18 17:07:09 -08:00
jr c, .print_text
2018-02-14 02:51:47 -08:00
farcall RetrieveMonFromDayCareLady
call DayCare_GetBackMonForMoney
ld hl, wDayCareLady
2018-01-22 10:18:23 -08:00
res DAYCARELADY_HAS_MON_F, [hl]
ld hl, wDayCareMan
2018-01-22 10:18:23 -08:00
res DAYCAREMAN_MONS_COMPATIBLE_F, [hl]
2015-12-18 17:07:09 -08:00
jr .cancel
2015-11-16 18:46:36 -08:00
2015-12-18 17:07:09 -08:00
.print_text
call PrintDayCareText
2015-11-16 18:46:36 -08:00
2015-12-18 17:07:09 -08:00
.cancel
ld a, DAYCARETEXT_COME_AGAIN
2015-12-18 17:07:09 -08:00
call PrintDayCareText
2015-11-16 18:46:36 -08:00
ret
2018-06-24 07:09:41 -07:00
DayCareLadyIntroText:
2018-01-22 10:18:23 -08:00
bit DAYCARELADY_ACTIVE_F, [hl]
2015-12-18 17:07:09 -08:00
jr nz, .okay
2018-01-22 10:18:23 -08:00
set DAYCARELADY_ACTIVE_F, [hl]
2015-11-16 18:46:36 -08:00
inc a
2015-12-18 17:07:09 -08:00
.okay
call PrintDayCareText
2015-11-16 18:46:36 -08:00
call YesNoBox
ret
2018-06-24 07:09:41 -07:00
DayCareManIntroText:
2018-01-22 10:18:23 -08:00
set DAYCAREMAN_ACTIVE_F, [hl]
2015-12-18 17:07:09 -08:00
call PrintDayCareText
2015-11-16 18:46:36 -08:00
call YesNoBox
ret
2018-06-24 07:09:41 -07:00
DayCareAskDepositPokemon:
2018-01-23 14:39:09 -08:00
ld a, [wPartyCount]
2015-11-16 18:46:36 -08:00
cp 2
2015-12-18 17:07:09 -08:00
jr c, .OnlyOneMon
ld a, DAYCARETEXT_WHICH_ONE
2015-12-18 17:07:09 -08:00
call PrintDayCareText
ld b, PARTYMENUACTION_GIVE_MON
2017-12-24 09:47:30 -08:00
farcall SelectTradeOrDayCareMon
2015-12-18 17:07:09 -08:00
jr c, .Declined
2018-01-23 14:39:09 -08:00
ld a, [wCurPartySpecies]
2015-11-16 18:46:36 -08:00
cp EGG
2015-12-18 17:07:09 -08:00
jr z, .Egg
2017-12-24 09:47:30 -08:00
farcall CheckCurPartyMonFainted
2015-12-18 17:07:09 -08:00
jr c, .OutOfUsableMons
2018-01-23 14:39:09 -08:00
ld hl, wPartyMon1Item
2015-11-16 18:46:36 -08:00
ld bc, PARTYMON_STRUCT_LENGTH
2018-01-23 14:39:09 -08:00
ld a, [wCurPartyMon]
2015-11-16 18:46:36 -08:00
call AddNTimes
ld d, [hl]
2017-12-24 09:47:30 -08:00
farcall ItemIsMail
2015-12-18 17:07:09 -08:00
jr c, .HoldingMail
2018-01-23 14:39:09 -08:00
ld hl, wPartyMonNicknames
ld a, [wCurPartyMon]
2015-11-16 18:46:36 -08:00
call GetNick
and a
ret
.Declined:
ld a, DAYCARETEXT_OH_FINE
2015-11-16 18:46:36 -08:00
scf
ret
.Egg:
ld a, DAYCARETEXT_CANT_BREED_EGG
2015-11-16 18:46:36 -08:00
scf
ret
.OnlyOneMon:
ld a, DAYCARETEXT_LAST_MON
2015-11-16 18:46:36 -08:00
scf
ret
.OutOfUsableMons:
ld a, DAYCARETEXT_LAST_ALIVE_MON
2015-11-16 18:46:36 -08:00
scf
ret
.HoldingMail:
ld a, DAYCARETEXT_REMOVE_MAIL
2015-11-16 18:46:36 -08:00
scf
ret
.DaycareDummyText: ; unreferenced
text_far _DaycareDummyText
text_end
2015-11-16 18:46:36 -08:00
2018-06-24 07:09:41 -07:00
DayCare_DepositPokemonText:
ld a, DAYCARETEXT_DEPOSIT
2015-12-18 17:07:09 -08:00
call PrintDayCareText
2018-01-23 14:39:09 -08:00
ld a, [wCurPartySpecies]
call PlayMonCry
ld a, DAYCARETEXT_COME_BACK_LATER
2015-12-18 17:07:09 -08:00
call PrintDayCareText
2015-11-16 18:46:36 -08:00
ret
2018-06-24 07:09:41 -07:00
DayCare_AskWithdrawBreedMon:
2018-01-23 14:39:09 -08:00
ld a, [wStringBuffer2 + 1]
2015-11-16 18:46:36 -08:00
and a
jr nz, .grew_at_least_one_level
ld a, DAYCARETEXT_TOO_SOON
2015-12-18 17:07:09 -08:00
call PrintDayCareText
2015-11-16 18:46:36 -08:00
call YesNoBox
jr c, .refused
jr .check_money
2015-11-16 18:46:36 -08:00
.grew_at_least_one_level
ld a, DAYCARETEXT_GENIUSES
2015-12-18 17:07:09 -08:00
call PrintDayCareText
2015-11-16 18:46:36 -08:00
call YesNoBox
jr c, .refused
ld a, DAYCARETEXT_ASK_WITHDRAW
2015-12-18 17:07:09 -08:00
call PrintDayCareText
2015-11-16 18:46:36 -08:00
call YesNoBox
jr c, .refused
2015-11-16 18:46:36 -08:00
.check_money
2018-01-23 14:39:09 -08:00
ld de, wMoney
ld bc, wStringBuffer2 + 2
2017-12-24 09:47:30 -08:00
farcall CompareMoney
jr c, .not_enough_money
2018-01-23 14:39:09 -08:00
ld a, [wPartyCount]
cp PARTY_LENGTH
jr nc, .party_full
2015-11-16 18:46:36 -08:00
and a
ret
.refused
ld a, DAYCARETEXT_OH_FINE
2015-11-16 18:46:36 -08:00
scf
ret
.not_enough_money
ld a, DAYCARETEXT_NOT_ENOUGH_MONEY
2015-11-16 18:46:36 -08:00
scf
ret
.party_full
ld a, DAYCARETEXT_PARTY_FULL
2015-11-16 18:46:36 -08:00
scf
ret
2018-06-24 07:09:41 -07:00
DayCare_GetBackMonForMoney:
2018-01-23 14:39:09 -08:00
ld bc, wStringBuffer2 + 2
ld de, wMoney
2017-12-24 09:47:30 -08:00
farcall TakeMoney
ld a, DAYCARETEXT_WITHDRAW
2015-12-18 17:07:09 -08:00
call PrintDayCareText
2018-01-23 14:39:09 -08:00
ld a, [wCurPartySpecies]
call PlayMonCry
ld a, DAYCARETEXT_GOT_BACK
2015-12-18 17:07:09 -08:00
call PrintDayCareText
2015-11-16 18:46:36 -08:00
ret
2018-06-24 07:09:41 -07:00
GetPriceToRetrieveBreedmon:
2015-11-16 18:46:36 -08:00
ld a, b
2018-01-23 14:39:09 -08:00
ld [wStringBuffer2], a
2015-11-16 18:46:36 -08:00
ld a, d
2018-01-23 14:39:09 -08:00
ld [wStringBuffer2 + 1], a
ld de, wStringBuffer1
2015-11-16 18:46:36 -08:00
ld bc, NAME_LENGTH
call CopyBytes
ld hl, 0
ld bc, 100
2018-01-23 14:39:09 -08:00
ld a, [wStringBuffer2 + 1]
2015-11-16 18:46:36 -08:00
call AddNTimes
ld de, 100
2015-11-16 18:46:36 -08:00
add hl, de
xor a
2018-01-23 14:39:09 -08:00
ld [wStringBuffer2 + 2], a
2015-11-16 18:46:36 -08:00
ld a, h
2018-01-23 14:39:09 -08:00
ld [wStringBuffer2 + 3], a
2015-11-16 18:46:36 -08:00
ld a, l
2018-01-23 14:39:09 -08:00
ld [wStringBuffer2 + 4], a
2015-11-16 18:46:36 -08:00
ret
2018-06-24 07:09:41 -07:00
PrintDayCareText:
2015-11-16 18:46:36 -08:00
ld e, a
ld d, 0
ld hl, .TextTable
2015-11-16 18:46:36 -08:00
add hl, de
2015-12-26 18:59:03 -08:00
add hl, de
2015-11-16 18:46:36 -08:00
ld a, [hli]
ld h, [hl]
ld l, a
call PrintText
ret
2018-06-24 07:09:41 -07:00
.TextTable:
; entries correspond to DAYCARETEXT_* constants
dw .DayCareManIntroText ; 00
dw .DayCareManIntroEggText ; 01
dw .DayCareLadyIntroText ; 02
dw .DayCareLadyIntroEggText ; 03
dw .WhatShouldIRaiseText ; 04
dw .IllRaiseYourMonText ; 05
dw .CantAcceptEggText ; 06
dw .OnlyOneMonText ; 07
dw .LastHealthyMonText ; 08
dw .ComeBackLaterText ; 09
dw .RemoveMailText ; 0a
dw .AreWeGeniusesText ; 0b
dw .YourMonHasGrownText ; 0c
dw .PerfectHeresYourMonText ; 0d
dw .GotBackMonText ; 0e
dw .BackAlreadyText ; 0f
dw .HaveNoRoomText ; 10
dw .NotEnoughMoneyText ; 11
dw .OhFineThenText ; 12
dw .ComeAgainText ; 13
.DayCareManIntroText:
text_far _DayCareManIntroText
text_end
2015-11-16 18:46:36 -08:00
.DayCareManIntroEggText:
text_far _DayCareManIntroEggText
text_end
2015-11-16 18:46:36 -08:00
.DayCareLadyIntroText:
text_far _DayCareLadyIntroText
text_end
2015-11-16 18:46:36 -08:00
.DayCareLadyIntroEggText:
text_far _DayCareLadyIntroEggText
text_end
2015-11-16 18:46:36 -08:00
.WhatShouldIRaiseText:
text_far _WhatShouldIRaiseText
text_end
2015-11-16 18:46:36 -08:00
.OnlyOneMonText:
text_far _OnlyOneMonText
text_end
2015-11-16 18:46:36 -08:00
.CantAcceptEggText:
text_far _CantAcceptEggText
text_end
2015-11-16 18:46:36 -08:00
.RemoveMailText:
text_far _RemoveMailText
text_end
2015-11-16 18:46:36 -08:00
.LastHealthyMonText:
text_far _LastHealthyMonText
text_end
2015-11-16 18:46:36 -08:00
.IllRaiseYourMonText:
text_far _IllRaiseYourMonText
text_end
2015-11-16 18:46:36 -08:00
.ComeBackLaterText:
text_far _ComeBackLaterText
text_end
2015-11-16 18:46:36 -08:00
.AreWeGeniusesText:
text_far _AreWeGeniusesText
text_end
2015-11-16 18:46:36 -08:00
.YourMonHasGrownText:
text_far _YourMonHasGrownText
text_end
2015-11-16 18:46:36 -08:00
.PerfectHeresYourMonText:
text_far _PerfectHeresYourMonText
text_end
2015-11-16 18:46:36 -08:00
.GotBackMonText:
text_far _GotBackMonText
text_end
2015-11-16 18:46:36 -08:00
.BackAlreadyText:
text_far _BackAlreadyText
text_end
2015-11-16 18:46:36 -08:00
.HaveNoRoomText:
text_far _HaveNoRoomText
text_end
2015-11-16 18:46:36 -08:00
.NotEnoughMoneyText:
text_far _NotEnoughMoneyText
text_end
2015-11-16 18:46:36 -08:00
.OhFineThenText:
text_far _OhFineThenText
text_end
2015-11-16 18:46:36 -08:00
.ComeAgainText:
text_far _ComeAgainText
text_end
2015-11-16 18:46:36 -08:00
2018-06-24 07:09:41 -07:00
DayCareManOutside:
ld hl, wDayCareMan
2018-01-22 10:18:23 -08:00
bit DAYCAREMAN_HAS_EGG_F, [hl]
2015-12-18 17:07:09 -08:00
jr nz, .AskGiveEgg
ld hl, .NotYetText
2015-11-16 18:46:36 -08:00
call PrintText
ret
.NotYetText:
text_far _NotYetText
text_end
2015-11-16 18:46:36 -08:00
2018-06-24 07:09:41 -07:00
.AskGiveEgg:
ld hl, .FoundAnEggText
2015-11-16 18:46:36 -08:00
call PrintText
call YesNoBox
2015-12-18 17:07:09 -08:00
jr c, .Declined
2018-01-23 14:39:09 -08:00
ld a, [wPartyCount]
2015-11-16 18:46:36 -08:00
cp PARTY_LENGTH
2015-12-18 17:07:09 -08:00
jr nc, .PartyFull
call DayCare_GiveEgg
ld hl, wDayCareMan
2018-01-22 10:18:23 -08:00
res DAYCAREMAN_HAS_EGG_F, [hl]
2015-12-18 17:07:09 -08:00
call DayCare_InitBreeding
ld hl, .ReceivedEggText
2015-11-16 18:46:36 -08:00
call PrintText
ld de, SFX_GET_EGG
2015-11-16 18:46:36 -08:00
call PlaySFX
ld c, 120
call DelayFrames
ld hl, .TakeGoodCareOfEggText
2015-12-18 17:07:09 -08:00
jr .Load0
2015-11-16 18:46:36 -08:00
.Declined:
2015-12-18 17:07:09 -08:00
ld hl, .IllKeepItThanksText
2015-11-16 18:46:36 -08:00
.Load0:
2015-11-16 18:46:36 -08:00
call PrintText
2018-01-11 22:40:20 -08:00
xor a ; FALSE
2018-01-23 14:39:09 -08:00
ld [wScriptVar], a
2015-11-16 18:46:36 -08:00
ret
.PartyFull:
ld hl, .NoRoomForEggText
2015-11-16 18:46:36 -08:00
call PrintText
2018-01-11 22:40:20 -08:00
ld a, TRUE
2018-01-23 14:39:09 -08:00
ld [wScriptVar], a
2015-11-16 18:46:36 -08:00
ret
.FoundAnEggText:
text_far _FoundAnEggText
text_end
2015-11-16 18:46:36 -08:00
.ReceivedEggText:
text_far _ReceivedEggText
text_end
2015-11-16 18:46:36 -08:00
.TakeGoodCareOfEggText:
text_far _TakeGoodCareOfEggText
text_end
2015-11-16 18:46:36 -08:00
.IllKeepItThanksText:
text_far _IllKeepItThanksText
text_end
2015-11-16 18:46:36 -08:00
.NoRoomForEggText:
text_far _NoRoomForEggText
text_end
2015-11-16 18:46:36 -08:00
2018-06-24 07:09:41 -07:00
DayCare_GiveEgg:
2015-11-16 18:46:36 -08:00
ld a, [wEggMonLevel]
2018-01-23 14:39:09 -08:00
ld [wCurPartyLevel], a
ld hl, wPartyCount
2015-11-16 18:46:36 -08:00
ld a, [hl]
cp PARTY_LENGTH
2015-12-18 17:07:09 -08:00
jr nc, .PartyFull
2015-11-16 18:46:36 -08:00
inc a
ld [hl], a
2015-12-18 17:07:09 -08:00
2015-11-16 18:46:36 -08:00
ld c, a
ld b, 0
add hl, bc
ld a, EGG
ld [hli], a
ld a, [wEggMonSpecies]
2018-01-23 14:39:09 -08:00
ld [wCurSpecies], a
ld [wCurPartySpecies], a
2015-12-18 17:07:09 -08:00
ld a, -1
2015-11-16 18:46:36 -08:00
ld [hl], a
2015-12-18 17:07:09 -08:00
2018-01-23 14:39:09 -08:00
ld hl, wPartyMonNicknames
2018-01-20 09:25:55 -08:00
ld bc, MON_NAME_LENGTH
2015-12-18 17:07:09 -08:00
call DayCare_GetCurrentPartyMember
2015-11-16 18:46:36 -08:00
ld hl, wEggNick
call CopyBytes
2015-12-18 17:07:09 -08:00
2018-01-23 14:39:09 -08:00
ld hl, wPartyMonOT
2015-11-16 18:46:36 -08:00
ld bc, NAME_LENGTH
2015-12-18 17:07:09 -08:00
call DayCare_GetCurrentPartyMember
2015-11-16 18:46:36 -08:00
ld hl, wEggOT
call CopyBytes
2015-12-18 17:07:09 -08:00
2018-01-23 14:39:09 -08:00
ld hl, wPartyMon1
2015-11-16 18:46:36 -08:00
ld bc, PARTYMON_STRUCT_LENGTH
2015-12-18 17:07:09 -08:00
call DayCare_GetCurrentPartyMember
2015-11-16 18:46:36 -08:00
ld hl, wEggMon
2020-06-29 09:25:58 -07:00
ld bc, BOXMON_STRUCT_LENGTH
2015-11-16 18:46:36 -08:00
call CopyBytes
2015-12-18 17:07:09 -08:00
2015-11-16 18:46:36 -08:00
call GetBaseData
2018-01-23 14:39:09 -08:00
ld a, [wPartyCount]
2015-11-16 18:46:36 -08:00
dec a
2018-01-23 14:39:09 -08:00
ld hl, wPartyMon1
2015-11-16 18:46:36 -08:00
ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld b, h
ld c, l
ld hl, MON_ID + 1
add hl, bc
push hl
ld hl, MON_MAXHP
add hl, bc
ld d, h
ld e, l
pop hl
push bc
ld b, FALSE
predef CalcMonStats
2015-11-16 18:46:36 -08:00
pop bc
ld hl, MON_HP
add hl, bc
xor a
ld [hli], a
ld [hl], a
and a
ret
.PartyFull:
2015-11-16 18:46:36 -08:00
scf
ret
2018-06-24 07:09:41 -07:00
DayCare_GetCurrentPartyMember:
2018-01-23 14:39:09 -08:00
ld a, [wPartyCount]
2015-11-16 18:46:36 -08:00
dec a
call AddNTimes
ld d, h
ld e, l
ret
2018-06-24 07:09:41 -07:00
DayCare_InitBreeding:
ld a, [wDayCareLady]
2018-01-22 10:18:23 -08:00
bit DAYCARELADY_HAS_MON_F, a
2015-11-16 18:46:36 -08:00
ret z
ld a, [wDayCareMan]
2018-01-22 10:18:23 -08:00
bit DAYCAREMAN_HAS_MON_F, a
2015-11-16 18:46:36 -08:00
ret z
2017-12-24 09:47:30 -08:00
callfar CheckBreedmonCompatibility
ld a, [wBreedingCompatibility]
2015-11-16 18:46:36 -08:00
and a
ret z
inc a
ret z
ld hl, wDayCareMan
2018-01-22 10:18:23 -08:00
set DAYCAREMAN_MONS_COMPATIBLE_F, [hl]
2015-12-18 17:07:09 -08:00
.loop
2015-11-16 18:46:36 -08:00
call Random
cp 150
2015-12-18 17:07:09 -08:00
jr c, .loop
2015-11-16 18:46:36 -08:00
ld [wStepsToEgg], a
2015-12-18 17:07:09 -08:00
jp .UselessJump
2015-11-16 18:46:36 -08:00
2018-06-24 07:09:41 -07:00
.UselessJump:
2015-11-16 18:46:36 -08:00
xor a
ld hl, wEggMon
2020-06-29 09:25:58 -07:00
ld bc, BOXMON_STRUCT_LENGTH
2015-11-16 18:46:36 -08:00
call ByteFill
ld hl, wEggNick
2018-01-20 09:25:55 -08:00
ld bc, MON_NAME_LENGTH
2015-11-16 18:46:36 -08:00
call ByteFill
ld hl, wEggOT
ld bc, NAME_LENGTH
call ByteFill
ld a, [wBreedMon1DVs]
2018-01-23 14:39:09 -08:00
ld [wTempMonDVs], a
2015-11-16 18:46:36 -08:00
ld a, [wBreedMon1DVs + 1]
2018-01-23 14:39:09 -08:00
ld [wTempMonDVs + 1], a
2015-11-16 18:46:36 -08:00
ld a, [wBreedMon1Species]
2018-01-23 14:39:09 -08:00
ld [wCurPartySpecies], a
2015-11-16 18:46:36 -08:00
ld a, $3
2018-01-23 14:39:09 -08:00
ld [wMonType], a
2015-11-16 18:46:36 -08:00
ld a, [wBreedMon1Species]
cp DITTO
ld a, $1
2015-12-18 17:07:09 -08:00
jr z, .LoadWhichBreedmonIsTheMother
2015-11-16 18:46:36 -08:00
ld a, [wBreedMon2Species]
cp DITTO
ld a, $0
2015-12-18 17:07:09 -08:00
jr z, .LoadWhichBreedmonIsTheMother
farcall GetGender
2015-11-16 18:46:36 -08:00
ld a, $0
2015-12-18 17:07:09 -08:00
jr z, .LoadWhichBreedmonIsTheMother
2015-11-16 18:46:36 -08:00
inc a
.LoadWhichBreedmonIsTheMother:
2015-12-18 17:07:09 -08:00
ld [wBreedMotherOrNonDitto], a
2015-11-16 18:46:36 -08:00
and a
ld a, [wBreedMon1Species]
2015-12-18 17:07:09 -08:00
jr z, .GotMother
2015-11-16 18:46:36 -08:00
ld a, [wBreedMon2Species]
.GotMother:
2018-01-23 14:39:09 -08:00
ld [wCurPartySpecies], a
2017-12-24 09:47:30 -08:00
callfar GetPreEvolution
callfar GetPreEvolution
2015-11-16 18:46:36 -08:00
ld a, EGG_LEVEL
2018-01-23 14:39:09 -08:00
ld [wCurPartyLevel], a
2015-11-16 18:46:36 -08:00
2018-01-22 10:18:23 -08:00
; Nidoran♀ can give birth to either gender of Nidoran
2018-01-23 14:39:09 -08:00
ld a, [wCurPartySpecies]
2015-11-16 18:46:36 -08:00
cp NIDORAN_F
2015-12-18 17:07:09 -08:00
jr nz, .GotEggSpecies
2015-11-16 18:46:36 -08:00
call Random
2018-02-04 18:21:34 -08:00
cp 50 percent + 1
2015-11-16 18:46:36 -08:00
ld a, NIDORAN_F
2015-12-18 17:07:09 -08:00
jr c, .GotEggSpecies
2015-11-16 18:46:36 -08:00
ld a, NIDORAN_M
.GotEggSpecies:
2018-01-23 14:39:09 -08:00
ld [wCurPartySpecies], a
ld [wCurSpecies], a
2015-11-16 18:46:36 -08:00
ld [wEggMonSpecies], a
call GetBaseData
ld hl, wEggNick
2015-12-18 17:07:09 -08:00
ld de, .String_EGG
2015-11-16 18:46:36 -08:00
call CopyName2
2018-01-23 14:39:09 -08:00
ld hl, wPlayerName
2015-11-16 18:46:36 -08:00
ld de, wEggOT
ld bc, NAME_LENGTH
call CopyBytes
xor a
ld [wEggMonItem], a
ld de, wEggMonMoves
xor a
2018-01-23 14:39:09 -08:00
ld [wBuffer1], a
predef FillMoves
2017-12-24 09:47:30 -08:00
farcall InitEggMoves
2015-11-16 18:46:36 -08:00
ld hl, wEggMonID
2018-01-23 14:39:09 -08:00
ld a, [wPlayerID]
2015-11-16 18:46:36 -08:00
ld [hli], a
2018-01-23 14:39:09 -08:00
ld a, [wPlayerID + 1]
2015-11-16 18:46:36 -08:00
ld [hl], a
2018-01-23 14:39:09 -08:00
ld a, [wCurPartyLevel]
2015-11-16 18:46:36 -08:00
ld d, a
2017-12-24 09:47:30 -08:00
callfar CalcExpAtLevel
2015-11-16 18:46:36 -08:00
ld hl, wEggMonExp
ldh a, [hMultiplicand]
2015-11-16 18:46:36 -08:00
ld [hli], a
ldh a, [hMultiplicand + 1]
2015-11-16 18:46:36 -08:00
ld [hli], a
ldh a, [hMultiplicand + 2]
2015-11-16 18:46:36 -08:00
ld [hl], a
xor a
2015-12-18 17:07:09 -08:00
ld b, wEggMonDVs - wEggMonStatExp
2015-11-16 18:46:36 -08:00
ld hl, wEggMonStatExp
2015-12-18 17:07:09 -08:00
.loop2
2015-11-16 18:46:36 -08:00
ld [hli], a
dec b
2015-12-18 17:07:09 -08:00
jr nz, .loop2
2015-11-16 18:46:36 -08:00
ld hl, wEggMonDVs
call Random
ld [hli], a
2018-01-23 14:39:09 -08:00
ld [wTempMonDVs], a
2015-11-16 18:46:36 -08:00
call Random
ld [hld], a
2018-01-23 14:39:09 -08:00
ld [wTempMonDVs + 1], a
2015-11-16 18:46:36 -08:00
ld de, wBreedMon1DVs
ld a, [wBreedMon1Species]
cp DITTO
2015-12-18 17:07:09 -08:00
jr z, .GotDVs
2015-11-16 18:46:36 -08:00
ld de, wBreedMon2DVs
ld a, [wBreedMon2Species]
cp DITTO
2015-12-18 17:07:09 -08:00
jr z, .GotDVs
2016-05-11 14:16:03 -07:00
ld a, TEMPMON
2018-01-23 14:39:09 -08:00
ld [wMonType], a
2015-11-16 18:46:36 -08:00
push hl
farcall GetGender
2015-11-16 18:46:36 -08:00
pop hl
ld de, wBreedMon1DVs
ld bc, wBreedMon2DVs
2015-12-18 17:07:09 -08:00
jr c, .SkipDVs
jr z, .ParentCheck2
ld a, [wBreedMotherOrNonDitto]
2015-11-16 18:46:36 -08:00
and a
2015-12-18 17:07:09 -08:00
jr z, .GotDVs
2015-11-16 18:46:36 -08:00
ld d, b
ld e, c
2015-12-18 17:07:09 -08:00
jr .GotDVs
2015-11-16 18:46:36 -08:00
.ParentCheck2:
2015-12-18 17:07:09 -08:00
ld a, [wBreedMotherOrNonDitto]
2015-11-16 18:46:36 -08:00
and a
2015-12-18 17:07:09 -08:00
jr nz, .GotDVs
2015-11-16 18:46:36 -08:00
ld d, b
ld e, c
.GotDVs:
2015-11-16 18:46:36 -08:00
ld a, [de]
inc de
and $f
ld b, a
ld a, [hl]
and $f0
add b
ld [hli], a
ld a, [de]
and $7
ld b, a
ld a, [hl]
and $f8
add b
ld [hl], a
.SkipDVs:
2018-01-23 14:39:09 -08:00
ld hl, wStringBuffer1
2015-12-18 17:07:09 -08:00
ld de, wMonOrItemNameBuffer
2015-11-16 18:46:36 -08:00
ld bc, NAME_LENGTH
call CopyBytes
ld hl, wEggMonMoves
ld de, wEggMonPP
predef FillPP
2015-12-18 17:07:09 -08:00
ld hl, wMonOrItemNameBuffer
2018-01-23 14:39:09 -08:00
ld de, wStringBuffer1
2015-11-16 18:46:36 -08:00
ld bc, NAME_LENGTH
call CopyBytes
2018-01-23 14:39:09 -08:00
ld a, [wBaseEggSteps]
2015-11-16 18:46:36 -08:00
ld hl, wEggMonHappiness
ld [hli], a
xor a
ld [hli], a
2015-12-26 18:59:03 -08:00
ld [hli], a
2015-11-16 18:46:36 -08:00
ld [hl], a
2018-01-23 14:39:09 -08:00
ld a, [wCurPartyLevel]
2015-11-16 18:46:36 -08:00
ld [wEggMonLevel], a
ret
2018-06-24 07:09:41 -07:00
.String_EGG:
2015-11-16 18:46:36 -08:00
db "EGG@"