mirror of
https://github.com/thornAvery/jep-hack.git
synced 2026-02-07 16:45:24 +13:00
First Commit
Upload literally everything from the pokecrystal16 expand-move-ID branch
This commit is contained in:
commit
2f8a41f833
4618 changed files with 480386 additions and 0 deletions
753
engine/events/daycare.asm
Normal file
753
engine/events/daycare.asm
Normal file
|
|
@ -0,0 +1,753 @@
|
|||
; PrintDayCareText.TextTable indexes
|
||||
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
|
||||
|
||||
DayCareMan:
|
||||
ld hl, wDayCareMan
|
||||
bit DAYCAREMAN_HAS_MON_F, [hl]
|
||||
jr nz, .AskWithdrawMon
|
||||
ld hl, wDayCareMan
|
||||
ld a, DAYCARETEXT_MAN_INTRO
|
||||
call DayCareManIntroText
|
||||
jr c, .cancel
|
||||
call DayCareAskDepositPokemon
|
||||
jr c, .print_text
|
||||
farcall DepositMonWithDayCareMan
|
||||
ld hl, wDayCareMan
|
||||
set DAYCAREMAN_HAS_MON_F, [hl]
|
||||
call DayCare_DepositPokemonText
|
||||
call DayCare_InitBreeding
|
||||
ret
|
||||
|
||||
.AskWithdrawMon:
|
||||
farcall GetBreedMon1LevelGrowth
|
||||
ld hl, wBreedMon1Nickname
|
||||
call GetPriceToRetrieveBreedmon
|
||||
call DayCare_AskWithdrawBreedMon
|
||||
jr c, .print_text
|
||||
farcall RetrieveMonFromDayCareMan
|
||||
call DayCare_GetBackMonForMoney
|
||||
ld hl, wDayCareMan
|
||||
res DAYCAREMAN_HAS_MON_F, [hl]
|
||||
res DAYCAREMAN_MONS_COMPATIBLE_F, [hl]
|
||||
jr .cancel
|
||||
|
||||
.print_text
|
||||
call PrintDayCareText
|
||||
|
||||
.cancel
|
||||
ld a, DAYCARETEXT_COME_AGAIN
|
||||
call PrintDayCareText
|
||||
ret
|
||||
|
||||
DayCareLady:
|
||||
ld hl, wDayCareLady
|
||||
bit DAYCARELADY_HAS_MON_F, [hl]
|
||||
jr nz, .AskWithdrawMon
|
||||
ld hl, wDayCareLady
|
||||
ld a, DAYCARETEXT_LADY_INTRO
|
||||
call DayCareLadyIntroText
|
||||
jr c, .cancel
|
||||
call DayCareAskDepositPokemon
|
||||
jr c, .print_text
|
||||
farcall DepositMonWithDayCareLady
|
||||
ld hl, wDayCareLady
|
||||
set DAYCARELADY_HAS_MON_F, [hl]
|
||||
call DayCare_DepositPokemonText
|
||||
call DayCare_InitBreeding
|
||||
ret
|
||||
|
||||
.AskWithdrawMon:
|
||||
farcall GetBreedMon2LevelGrowth
|
||||
ld hl, wBreedMon2Nickname
|
||||
call GetPriceToRetrieveBreedmon
|
||||
call DayCare_AskWithdrawBreedMon
|
||||
jr c, .print_text
|
||||
farcall RetrieveMonFromDayCareLady
|
||||
call DayCare_GetBackMonForMoney
|
||||
ld hl, wDayCareLady
|
||||
res DAYCARELADY_HAS_MON_F, [hl]
|
||||
ld hl, wDayCareMan
|
||||
res DAYCAREMAN_MONS_COMPATIBLE_F, [hl]
|
||||
jr .cancel
|
||||
|
||||
.print_text
|
||||
call PrintDayCareText
|
||||
|
||||
.cancel
|
||||
ld a, DAYCARETEXT_COME_AGAIN
|
||||
call PrintDayCareText
|
||||
ret
|
||||
|
||||
DayCareLadyIntroText:
|
||||
bit DAYCARELADY_ACTIVE_F, [hl]
|
||||
jr nz, .okay
|
||||
set DAYCARELADY_ACTIVE_F, [hl]
|
||||
inc a
|
||||
.okay
|
||||
call PrintDayCareText
|
||||
call YesNoBox
|
||||
ret
|
||||
|
||||
DayCareManIntroText:
|
||||
set DAYCAREMAN_ACTIVE_F, [hl]
|
||||
call PrintDayCareText
|
||||
call YesNoBox
|
||||
ret
|
||||
|
||||
DayCareAskDepositPokemon:
|
||||
ld a, [wPartyCount]
|
||||
cp 2
|
||||
jr c, .OnlyOneMon
|
||||
ld a, DAYCARETEXT_WHICH_ONE
|
||||
call PrintDayCareText
|
||||
ld b, PARTYMENUACTION_GIVE_MON
|
||||
farcall SelectTradeOrDayCareMon
|
||||
jr c, .Declined
|
||||
ld a, [wCurPartySpecies]
|
||||
cp EGG
|
||||
jr z, .Egg
|
||||
farcall CheckCurPartyMonFainted
|
||||
jr c, .OutOfUsableMons
|
||||
ld hl, wPartyMon1Item
|
||||
ld bc, PARTYMON_STRUCT_LENGTH
|
||||
ld a, [wCurPartyMon]
|
||||
call AddNTimes
|
||||
ld d, [hl]
|
||||
farcall ItemIsMail
|
||||
jr c, .HoldingMail
|
||||
ld hl, wPartyMonNicknames
|
||||
ld a, [wCurPartyMon]
|
||||
call GetNickname
|
||||
and a
|
||||
ret
|
||||
|
||||
.Declined:
|
||||
ld a, DAYCARETEXT_OH_FINE
|
||||
scf
|
||||
ret
|
||||
|
||||
.Egg:
|
||||
ld a, DAYCARETEXT_CANT_BREED_EGG
|
||||
scf
|
||||
ret
|
||||
|
||||
.OnlyOneMon:
|
||||
ld a, DAYCARETEXT_LAST_MON
|
||||
scf
|
||||
ret
|
||||
|
||||
.OutOfUsableMons:
|
||||
ld a, DAYCARETEXT_LAST_ALIVE_MON
|
||||
scf
|
||||
ret
|
||||
|
||||
.HoldingMail:
|
||||
ld a, DAYCARETEXT_REMOVE_MAIL
|
||||
scf
|
||||
ret
|
||||
|
||||
.DaycareDummyText: ; unreferenced
|
||||
text_far _DaycareDummyText
|
||||
text_end
|
||||
|
||||
DayCare_DepositPokemonText:
|
||||
ld a, DAYCARETEXT_DEPOSIT
|
||||
call PrintDayCareText
|
||||
ld a, [wCurPartySpecies]
|
||||
call PlayMonCry
|
||||
ld a, DAYCARETEXT_COME_BACK_LATER
|
||||
call PrintDayCareText
|
||||
ret
|
||||
|
||||
DayCare_AskWithdrawBreedMon:
|
||||
ld a, [wStringBuffer2 + 1]
|
||||
and a
|
||||
jr nz, .grew_at_least_one_level
|
||||
ld a, DAYCARETEXT_TOO_SOON
|
||||
call PrintDayCareText
|
||||
call YesNoBox
|
||||
jr c, .refused
|
||||
jr .check_money
|
||||
|
||||
.grew_at_least_one_level
|
||||
ld a, DAYCARETEXT_GENIUSES
|
||||
call PrintDayCareText
|
||||
call YesNoBox
|
||||
jr c, .refused
|
||||
ld a, DAYCARETEXT_ASK_WITHDRAW
|
||||
call PrintDayCareText
|
||||
call YesNoBox
|
||||
jr c, .refused
|
||||
|
||||
.check_money
|
||||
ld de, wMoney
|
||||
ld bc, wStringBuffer2 + 2
|
||||
farcall CompareMoney
|
||||
jr c, .not_enough_money
|
||||
ld a, [wPartyCount]
|
||||
cp PARTY_LENGTH
|
||||
jr nc, .party_full
|
||||
and a
|
||||
ret
|
||||
|
||||
.refused
|
||||
ld a, DAYCARETEXT_OH_FINE
|
||||
scf
|
||||
ret
|
||||
|
||||
.not_enough_money
|
||||
ld a, DAYCARETEXT_NOT_ENOUGH_MONEY
|
||||
scf
|
||||
ret
|
||||
|
||||
.party_full
|
||||
ld a, DAYCARETEXT_PARTY_FULL
|
||||
scf
|
||||
ret
|
||||
|
||||
DayCare_GetBackMonForMoney:
|
||||
ld bc, wStringBuffer2 + 2
|
||||
ld de, wMoney
|
||||
farcall TakeMoney
|
||||
ld a, DAYCARETEXT_WITHDRAW
|
||||
call PrintDayCareText
|
||||
ld a, [wCurPartySpecies]
|
||||
call PlayMonCry
|
||||
ld a, DAYCARETEXT_GOT_BACK
|
||||
call PrintDayCareText
|
||||
ret
|
||||
|
||||
GetPriceToRetrieveBreedmon:
|
||||
ld a, b
|
||||
ld [wStringBuffer2], a
|
||||
ld a, d
|
||||
ld [wStringBuffer2 + 1], a
|
||||
ld de, wStringBuffer1
|
||||
ld bc, NAME_LENGTH
|
||||
call CopyBytes
|
||||
ld hl, 0
|
||||
ld bc, 100
|
||||
ld a, [wStringBuffer2 + 1]
|
||||
call AddNTimes
|
||||
ld de, 100
|
||||
add hl, de
|
||||
xor a
|
||||
ld [wStringBuffer2 + 2], a
|
||||
ld a, h
|
||||
ld [wStringBuffer2 + 3], a
|
||||
ld a, l
|
||||
ld [wStringBuffer2 + 4], a
|
||||
ret
|
||||
|
||||
PrintDayCareText:
|
||||
ld e, a
|
||||
ld d, 0
|
||||
ld hl, .TextTable
|
||||
add hl, de
|
||||
add hl, de
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
call PrintText
|
||||
ret
|
||||
|
||||
.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
|
||||
|
||||
.DayCareManIntroEggText:
|
||||
text_far _DayCareManIntroEggText
|
||||
text_end
|
||||
|
||||
.DayCareLadyIntroText:
|
||||
text_far _DayCareLadyIntroText
|
||||
text_end
|
||||
|
||||
.DayCareLadyIntroEggText:
|
||||
text_far _DayCareLadyIntroEggText
|
||||
text_end
|
||||
|
||||
.WhatShouldIRaiseText:
|
||||
text_far _WhatShouldIRaiseText
|
||||
text_end
|
||||
|
||||
.OnlyOneMonText:
|
||||
text_far _OnlyOneMonText
|
||||
text_end
|
||||
|
||||
.CantAcceptEggText:
|
||||
text_far _CantAcceptEggText
|
||||
text_end
|
||||
|
||||
.RemoveMailText:
|
||||
text_far _RemoveMailText
|
||||
text_end
|
||||
|
||||
.LastHealthyMonText:
|
||||
text_far _LastHealthyMonText
|
||||
text_end
|
||||
|
||||
.IllRaiseYourMonText:
|
||||
text_far _IllRaiseYourMonText
|
||||
text_end
|
||||
|
||||
.ComeBackLaterText:
|
||||
text_far _ComeBackLaterText
|
||||
text_end
|
||||
|
||||
.AreWeGeniusesText:
|
||||
text_far _AreWeGeniusesText
|
||||
text_end
|
||||
|
||||
.YourMonHasGrownText:
|
||||
text_far _YourMonHasGrownText
|
||||
text_end
|
||||
|
||||
.PerfectHeresYourMonText:
|
||||
text_far _PerfectHeresYourMonText
|
||||
text_end
|
||||
|
||||
.GotBackMonText:
|
||||
text_far _GotBackMonText
|
||||
text_end
|
||||
|
||||
.BackAlreadyText:
|
||||
text_far _BackAlreadyText
|
||||
text_end
|
||||
|
||||
.HaveNoRoomText:
|
||||
text_far _HaveNoRoomText
|
||||
text_end
|
||||
|
||||
.NotEnoughMoneyText:
|
||||
text_far _NotEnoughMoneyText
|
||||
text_end
|
||||
|
||||
.OhFineThenText:
|
||||
text_far _OhFineThenText
|
||||
text_end
|
||||
|
||||
.ComeAgainText:
|
||||
text_far _ComeAgainText
|
||||
text_end
|
||||
|
||||
DayCareManOutside:
|
||||
ld hl, wDayCareMan
|
||||
bit DAYCAREMAN_HAS_EGG_F, [hl]
|
||||
jr nz, .AskGiveEgg
|
||||
ld hl, .NotYetText
|
||||
call PrintText
|
||||
ret
|
||||
|
||||
.NotYetText:
|
||||
text_far _NotYetText
|
||||
text_end
|
||||
|
||||
.AskGiveEgg:
|
||||
ld hl, .FoundAnEggText
|
||||
call PrintText
|
||||
call YesNoBox
|
||||
jr c, .Declined
|
||||
ld a, [wPartyCount]
|
||||
cp PARTY_LENGTH
|
||||
jr nc, .PartyFull
|
||||
call DayCare_GiveEgg
|
||||
ld hl, wDayCareMan
|
||||
res DAYCAREMAN_HAS_EGG_F, [hl]
|
||||
call DayCare_InitBreeding
|
||||
ld hl, .ReceivedEggText
|
||||
call PrintText
|
||||
ld de, SFX_GET_EGG
|
||||
call PlaySFX
|
||||
ld c, 120
|
||||
call DelayFrames
|
||||
ld hl, .TakeGoodCareOfEggText
|
||||
jr .Load0
|
||||
|
||||
.Declined:
|
||||
ld hl, .IllKeepItThanksText
|
||||
|
||||
.Load0:
|
||||
call PrintText
|
||||
xor a ; FALSE
|
||||
ld [wScriptVar], a
|
||||
ret
|
||||
|
||||
.PartyFull:
|
||||
ld hl, .NoRoomForEggText
|
||||
call PrintText
|
||||
ld a, TRUE
|
||||
ld [wScriptVar], a
|
||||
ret
|
||||
|
||||
.FoundAnEggText:
|
||||
text_far _FoundAnEggText
|
||||
text_end
|
||||
|
||||
.ReceivedEggText:
|
||||
text_far _ReceivedEggText
|
||||
text_end
|
||||
|
||||
.TakeGoodCareOfEggText:
|
||||
text_far _TakeGoodCareOfEggText
|
||||
text_end
|
||||
|
||||
.IllKeepItThanksText:
|
||||
text_far _IllKeepItThanksText
|
||||
text_end
|
||||
|
||||
.NoRoomForEggText:
|
||||
text_far _NoRoomForEggText
|
||||
text_end
|
||||
|
||||
DayCare_GiveEgg:
|
||||
ld a, [wEggMonLevel]
|
||||
ld [wCurPartyLevel], a
|
||||
ld hl, wPartyCount
|
||||
ld a, [hl]
|
||||
cp PARTY_LENGTH
|
||||
jr nc, .PartyFull
|
||||
inc a
|
||||
ld [hl], a
|
||||
|
||||
ld c, a
|
||||
ld b, 0
|
||||
add hl, bc
|
||||
ld a, EGG
|
||||
ld [hli], a
|
||||
ld a, [wEggMonSpecies]
|
||||
ld [wCurSpecies], a
|
||||
ld [wCurPartySpecies], a
|
||||
ld a, -1
|
||||
ld [hl], a
|
||||
|
||||
ld hl, wPartyMonNicknames
|
||||
ld bc, MON_NAME_LENGTH
|
||||
call DayCare_GetCurrentPartyMember
|
||||
ld hl, wEggMonNickname
|
||||
call CopyBytes
|
||||
|
||||
ld hl, wPartyMonOTs
|
||||
ld bc, NAME_LENGTH
|
||||
call DayCare_GetCurrentPartyMember
|
||||
ld hl, wEggMonOT
|
||||
call CopyBytes
|
||||
|
||||
ld hl, wPartyMon1
|
||||
ld bc, PARTYMON_STRUCT_LENGTH
|
||||
call DayCare_GetCurrentPartyMember
|
||||
ld hl, wEggMon
|
||||
ld bc, BOXMON_STRUCT_LENGTH
|
||||
call CopyBytes
|
||||
|
||||
call GetBaseData
|
||||
ld a, [wPartyCount]
|
||||
dec a
|
||||
ld hl, wPartyMon1
|
||||
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
|
||||
pop bc
|
||||
ld hl, MON_HP
|
||||
add hl, bc
|
||||
xor a
|
||||
ld [hli], a
|
||||
ld [hl], a
|
||||
and a
|
||||
ret
|
||||
|
||||
.PartyFull:
|
||||
scf
|
||||
ret
|
||||
|
||||
DayCare_GetCurrentPartyMember:
|
||||
ld a, [wPartyCount]
|
||||
dec a
|
||||
call AddNTimes
|
||||
ld d, h
|
||||
ld e, l
|
||||
ret
|
||||
|
||||
DayCare_InitBreeding:
|
||||
ld a, [wDayCareLady]
|
||||
bit DAYCARELADY_HAS_MON_F, a
|
||||
ret z
|
||||
ld a, [wDayCareMan]
|
||||
bit DAYCAREMAN_HAS_MON_F, a
|
||||
ret z
|
||||
callfar CheckBreedmonCompatibility
|
||||
ld a, [wBreedingCompatibility]
|
||||
and a
|
||||
ret z
|
||||
inc a
|
||||
ret z
|
||||
ld hl, wDayCareMan
|
||||
set DAYCAREMAN_MONS_COMPATIBLE_F, [hl]
|
||||
.loop
|
||||
call Random
|
||||
cp 150
|
||||
jr c, .loop
|
||||
ld [wStepsToEgg], a
|
||||
jp .UselessJump
|
||||
|
||||
.UselessJump:
|
||||
xor a
|
||||
ld hl, wEggMon
|
||||
ld bc, BOXMON_STRUCT_LENGTH
|
||||
call ByteFill
|
||||
ld hl, wEggMonNickname
|
||||
ld bc, MON_NAME_LENGTH
|
||||
call ByteFill
|
||||
ld hl, wEggMonOT
|
||||
ld bc, NAME_LENGTH
|
||||
call ByteFill
|
||||
ld a, [wBreedMon1DVs]
|
||||
ld [wTempMonDVs], a
|
||||
ld a, [wBreedMon1DVs + 1]
|
||||
ld [wTempMonDVs + 1], a
|
||||
ld a, [wBreedMon1Species]
|
||||
ld [wCurPartySpecies], a
|
||||
ld a, TEMPMON
|
||||
ld [wMonType], a
|
||||
ld hl, DITTO
|
||||
call GetPokemonIDFromIndex
|
||||
ld c, a
|
||||
ld a, [wBreedMon1Species]
|
||||
cp c
|
||||
ld a, $1
|
||||
jr z, .LoadWhichBreedmonIsTheMother
|
||||
ld a, [wBreedMon2Species]
|
||||
cp c
|
||||
ld a, $0
|
||||
jr z, .LoadWhichBreedmonIsTheMother
|
||||
farcall GetGender
|
||||
ld a, $0
|
||||
jr z, .LoadWhichBreedmonIsTheMother
|
||||
inc a
|
||||
|
||||
.LoadWhichBreedmonIsTheMother:
|
||||
ld [wBreedMotherOrNonDitto], a
|
||||
and a
|
||||
ld a, [wBreedMon1Species]
|
||||
jr z, .GotMother
|
||||
ld a, [wBreedMon2Species]
|
||||
|
||||
.GotMother:
|
||||
ld [wCurPartySpecies], a
|
||||
callfar GetLowestEvolutionStage
|
||||
ld a, EGG_LEVEL
|
||||
ld [wCurPartyLevel], a
|
||||
call Daycare_CheckAlternateOffspring
|
||||
ld [wCurPartySpecies], a
|
||||
ld [wCurSpecies], a
|
||||
ld [wEggMonSpecies], a
|
||||
|
||||
call GetBaseData
|
||||
ld hl, wEggMonNickname
|
||||
ld de, .String_EGG
|
||||
call CopyName2
|
||||
ld hl, wPlayerName
|
||||
ld de, wEggMonOT
|
||||
ld bc, NAME_LENGTH
|
||||
call CopyBytes
|
||||
xor a
|
||||
ld [wEggMonItem], a
|
||||
ld de, wEggMonMoves
|
||||
xor a ; FALSE
|
||||
ld [wSkipMovesBeforeLevelUp], a
|
||||
predef FillMoves
|
||||
farcall InitEggMoves
|
||||
ld hl, wEggMonID
|
||||
ld a, [wPlayerID]
|
||||
ld [hli], a
|
||||
ld a, [wPlayerID + 1]
|
||||
ld [hl], a
|
||||
ld a, [wCurPartyLevel]
|
||||
ld d, a
|
||||
callfar CalcExpAtLevel
|
||||
ld hl, wEggMonExp
|
||||
ldh a, [hMultiplicand]
|
||||
ld [hli], a
|
||||
ldh a, [hMultiplicand + 1]
|
||||
ld [hli], a
|
||||
ldh a, [hMultiplicand + 2]
|
||||
ld [hl], a
|
||||
xor a
|
||||
ld b, wEggMonDVs - wEggMonStatExp
|
||||
ld hl, wEggMonStatExp
|
||||
.loop2
|
||||
ld [hli], a
|
||||
dec b
|
||||
jr nz, .loop2
|
||||
ld hl, DITTO
|
||||
call GetPokemonIDFromIndex
|
||||
ld b, a
|
||||
ld hl, wEggMonDVs
|
||||
call Random
|
||||
ld [hli], a
|
||||
ld [wTempMonDVs], a
|
||||
call Random
|
||||
ld [hld], a
|
||||
ld [wTempMonDVs + 1], a
|
||||
ld de, wBreedMon1DVs
|
||||
ld a, [wBreedMon1Species]
|
||||
cp b
|
||||
jr z, .GotDVs
|
||||
ld de, wBreedMon2DVs
|
||||
ld a, [wBreedMon2Species]
|
||||
cp b
|
||||
jr z, .GotDVs
|
||||
ld a, TEMPMON
|
||||
ld [wMonType], a
|
||||
push hl
|
||||
farcall GetGender
|
||||
pop hl
|
||||
ld de, wBreedMon1DVs
|
||||
ld bc, wBreedMon2DVs
|
||||
jr c, .SkipDVs
|
||||
jr z, .ParentCheck2
|
||||
ld a, [wBreedMotherOrNonDitto]
|
||||
and a
|
||||
jr z, .GotDVs
|
||||
ld d, b
|
||||
ld e, c
|
||||
jr .GotDVs
|
||||
|
||||
.ParentCheck2:
|
||||
ld a, [wBreedMotherOrNonDitto]
|
||||
and a
|
||||
jr nz, .GotDVs
|
||||
ld d, b
|
||||
ld e, c
|
||||
|
||||
.GotDVs:
|
||||
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:
|
||||
ld hl, wStringBuffer1
|
||||
ld de, wMonOrItemNameBuffer
|
||||
ld bc, NAME_LENGTH
|
||||
call CopyBytes
|
||||
ld hl, wEggMonMoves
|
||||
ld de, wEggMonPP
|
||||
predef FillPP
|
||||
ld hl, wMonOrItemNameBuffer
|
||||
ld de, wStringBuffer1
|
||||
ld bc, NAME_LENGTH
|
||||
call CopyBytes
|
||||
ld a, [wBaseEggSteps]
|
||||
ld hl, wEggMonHappiness
|
||||
ld [hli], a
|
||||
xor a
|
||||
ld [hli], a
|
||||
ld [hli], a
|
||||
ld [hl], a
|
||||
ld a, [wCurPartyLevel]
|
||||
ld [wEggMonLevel], a
|
||||
ret
|
||||
|
||||
.String_EGG:
|
||||
db "EGG@"
|
||||
|
||||
Daycare_CheckAlternateOffspring:
|
||||
; returns [wCurPartySpecies] in a, unless that species may give birth to an alternate species (e.g., gender variant)
|
||||
; if an alternate species is possible, it returns it 50% of the time
|
||||
call Random
|
||||
add a, a
|
||||
ld a, [wCurPartySpecies]
|
||||
ret nc
|
||||
push hl
|
||||
push de
|
||||
push bc
|
||||
call GetPokemonIndexFromID
|
||||
ld b, h
|
||||
ld c, l
|
||||
ld de, 4
|
||||
ld hl, .alternate_offspring_table
|
||||
call IsInWordArray
|
||||
pop bc
|
||||
pop de
|
||||
ld a, [wCurPartySpecies]
|
||||
jr nc, .done
|
||||
inc hl
|
||||
inc hl
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
call GetPokemonIDFromIndex
|
||||
.done
|
||||
pop hl
|
||||
ret
|
||||
|
||||
.alternate_offspring_table
|
||||
dw NIDORAN_F, NIDORAN_M
|
||||
dw -1
|
||||
Loading…
Add table
Add a link
Reference in a new issue