summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/daycare.s3193
-rw-r--r--asm/field_control_avatar.s2
-rw-r--r--asm/field_effect.s2
-rw-r--r--asm/fldeff_80F9BCC.s6
-rwxr-xr-xasm/fldeff_cut.s6
-rwxr-xr-xasm/fldeff_softboiled.s6
-rw-r--r--asm/fldeff_strength.s4
-rw-r--r--asm/fldeff_sweetscent.s2
-rw-r--r--asm/fldeff_teleport.s2
-rw-r--r--asm/link.s10
-rwxr-xr-xasm/mail_data.s28
-rw-r--r--asm/mystery_event_script.s4
-rwxr-xr-xasm/party_menu.s30
-rw-r--r--asm/player_pc.s2
-rw-r--r--asm/pokemon_1.s6
-rwxr-xr-xasm/pokemon_storage_system.s16
-rw-r--r--asm/record_mixing.s2
-rw-r--r--asm/rom6.s10
-rw-r--r--asm/script_pokemon_util_80F87D8.s2
-rw-r--r--asm/trade.s8
-rw-r--r--constants/flags.inc2
-rw-r--r--data/daycare.s24
-rw-r--r--data/egg_moves.inc1306
-rw-r--r--data/scripts/day_care.inc44
-rw-r--r--data/scripts/maps/Route117.inc2
-rw-r--r--data/specials.inc25
-rw-r--r--data/strings.s8
-rw-r--r--data/trade.s10
-rw-r--r--include/data/pokemon/egg_moves.h1315
-rw-r--r--include/daycare.h27
-rw-r--r--include/egg_hatch.h10
-rw-r--r--include/flags.h3
-rw-r--r--include/global.h47
-rw-r--r--include/items.h3
-rw-r--r--include/list_menu.h30
-rw-r--r--include/mail.h6
-rw-r--r--include/pokemon.h7
-rw-r--r--include/pokemon_storage_system.h1
-rw-r--r--ld_script.txt4
-rwxr-xr-xsrc/braille_puzzles.c6
-rw-r--r--src/daycare.c1318
-rw-r--r--src/decoration.c42
-rw-r--r--src/egg_hatch.c18
-rwxr-xr-xsrc/pokemon_summary_screen.c17
-rw-r--r--src/secret_base.c8
-rw-r--r--sym_ewram.txt18
46 files changed, 2906 insertions, 4736 deletions
diff --git a/asm/daycare.s b/asm/daycare.s
deleted file mode 100644
index a25f2a40c..000000000
--- a/asm/daycare.s
+++ /dev/null
@@ -1,3193 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start GetMonNick
-GetMonNick: @ 806FA2C
- push {r4,lr}
- sub sp, 0x14
- adds r4, r1, 0
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- adds r0, r4, 0
- mov r1, sp
- bl StringCopy10
- add sp, 0x14
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetMonNick
-
- thumb_func_start GetBoxMonNick
-GetBoxMonNick: @ 806FA4C
- push {r4,lr}
- sub sp, 0x14
- adds r4, r1, 0
- movs r1, 0x2
- mov r2, sp
- bl GetBoxMonData
- adds r0, r4, 0
- mov r1, sp
- bl StringCopy10
- add sp, 0x14
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetBoxMonNick
-
- thumb_func_start daycare_count_pokemon
-daycare_count_pokemon: @ 806FA6C
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r5, 0
- movs r4, 0
-_0806FA74:
- movs r0, 0x8C
- muls r0, r4
- adds r0, r6, r0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _0806FA8A
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_0806FA8A:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bls _0806FA74
- adds r0, r5, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end daycare_count_pokemon
-
- thumb_func_start sub_806FA9C
-sub_806FA9C: @ 806FA9C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r9, r0
- mov r10, r1
- movs r7, 0
- movs r5, 0
- mov r6, r10
- adds r6, 0x74
- movs r0, 0x1
- mov r8, r0
-_0806FAB6:
- movs r0, 0x8C
- muls r0, r5
- mov r1, r9
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _0806FAE4
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r4, 0
- movs r1, 0xC
- bl GetBoxMonData
- adds r1, r0, 0
- cmp r1, 0
- bne _0806FAE4
- lsls r0, r5, 1
- adds r0, r6, r0
- b _0806FAEA
-_0806FAE4:
- lsls r0, r5, 1
- adds r0, r6, r0
- mov r1, r8
-_0806FAEA:
- strh r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bls _0806FAB6
- mov r0, r10
- str r7, [r0, 0x70]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_806FA9C
-
- thumb_func_start daycare_empty_slot
-@ u8 daycare_empty_slot(struct daycare_mon *dayCareMons)
-daycare_empty_slot: @ 806FB08
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r4, 0
-_0806FB0E:
- movs r0, 0x8C
- muls r0, r4
- adds r0, r5, r0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- bne _0806FB24
- lsls r0, r4, 24
- asrs r0, 24
- b _0806FB32
-_0806FB24:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bls _0806FB0E
- movs r0, 0x1
- negs r0, r0
-_0806FB32:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end daycare_empty_slot
-
- thumb_func_start sub_806FB38
-@ void sub_806FB38(struct pokemon *mon, struct daycare_mon *dayCareMon)
-sub_806FB38: @ 806FB38
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- bl sub_80D43F0
- lsls r0, 24
- cmp r0, 0
- beq _0806FBBC
- adds r0, r5, 0
- adds r0, 0x74
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- adds r4, r5, 0
- adds r4, 0x7C
- adds r0, r6, 0
- adds r1, r4, 0
- bl GetMonNick
- adds r0, r4, 0
- bl StripExtCtrlCodes
- adds r4, 0xB
- ldrb r1, [r4]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- adds r0, r6, 0
- movs r1, 0x3
- bl GetMonData
- lsls r0, 4
- ldrb r2, [r4]
- movs r1, 0xF
- ands r1, r2
- orrs r1, r0
- strb r1, [r4]
- adds r0, r6, 0
- movs r1, 0x40
- bl GetMonData
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSaveBlock1Ptr
- ldr r1, [r1]
- lsls r2, r0, 3
- adds r2, r0
- lsls r2, 2
- adds r1, r2
- adds r0, r5, 0
- adds r0, 0x50
- ldr r2, =0x00002be0
- adds r1, r2
- ldm r1!, {r2-r4}
- stm r0!, {r2-r4}
- ldm r1!, {r2-r4}
- stm r0!, {r2-r4}
- ldm r1!, {r2-r4}
- stm r0!, {r2-r4}
- adds r0, r6, 0
- bl sub_80D4680
-_0806FBBC:
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x50
- bl memcpy
- adds r0, r5, 0
- bl BoxMonRestorePP
- adds r1, r5, 0
- adds r1, 0x88
- movs r0, 0
- str r0, [r1]
- adds r0, r6, 0
- bl ZeroMonData
- bl party_compaction
- bl CalculatePlayerPartyCount
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_806FB38
-
- thumb_func_start daycare_send
-@ void daycare_send(struct pokemon *mon, struct daycare_mon *dayCareMons)
-daycare_send: @ 806FBF4
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl daycare_empty_slot
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x8C
- muls r0, r1
- adds r4, r0
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_806FB38
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end daycare_send
-
- thumb_func_start daycare_send_selected_pokemon
-daycare_send_selected_pokemon: @ 806FC18
- push {lr}
- bl brm_get_pokemon_selection
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r1, =gSaveBlock1Ptr
- ldr r1, [r1]
- ldr r2, =0x00003030
- adds r1, r2
- bl daycare_send
- pop {r0}
- bx r0
- .pool
- thumb_func_end daycare_send_selected_pokemon
-
- thumb_func_start sub_806FC48
-sub_806FC48: @ 806FC48
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r5, 0
- adds r4, 0x8C
- adds r0, r4, 0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _0806FC9E
- adds r0, r5, 0
- movs r1, 0xB
- bl GetBoxMonData
- adds r6, r0, 0
- cmp r6, 0
- bne _0806FC9E
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x50
- bl memcpy
- adds r0, r4, 0
- bl ZeroBoxMonData
- adds r4, 0x50
- adds r0, r5, 0
- adds r0, 0x50
- adds r1, r4, 0
- movs r2, 0x38
- bl memcpy
- adds r2, r5, 0
- adds r2, 0x88
- movs r0, 0x8A
- lsls r0, 1
- adds r1, r5, r0
- ldr r0, [r1]
- str r0, [r2]
- str r6, [r1]
- adds r0, r4, 0
- bl sub_806FF80
-_0806FC9E:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_806FC48
-
- thumb_func_start sub_806FCA4
-sub_806FCA4: @ 806FCA4
- push {r4-r7,lr}
- adds r4, r0, 0
- movs r5, 0
- ldr r7, =0x0000ffff
-_0806FCAC:
- adds r0, r4, 0
- bl TryIncrementMonLevel
- lsls r0, 24
- cmp r0, 0
- beq _0806FCE8
- movs r6, 0x1
- adds r5, 0x1
- b _0806FCD4
- .pool
-_0806FCC4:
- movs r6, 0
- cmp r0, r7
- bne _0806FCD4
- ldr r0, =gMoveToLearn
- ldrh r1, [r0]
- adds r0, r4, 0
- bl DeleteFirstMoveAndGiveMoveToMon
-_0806FCD4:
- adds r0, r4, 0
- adds r1, r6, 0
- bl MonTryLearningNewMove
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _0806FCC4
- cmp r5, 0x63
- ble _0806FCAC
-_0806FCE8:
- adds r0, r4, 0
- bl CalculateMonStats
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_806FCA4
-
- thumb_func_start sub_806FCF8
-sub_806FCF8: @ 806FCF8
- push {r4-r7,lr}
- sub sp, 0x68
- adds r5, r0, 0
- ldr r1, =gStringVar1
- bl GetBoxMonNick
- adds r0, r5, 0
- movs r1, 0xB
- bl GetBoxMonData
- lsls r0, 16
- lsrs r7, r0, 16
- adds r0, r5, 0
- mov r1, sp
- bl sub_8069004
- mov r0, sp
- movs r1, 0x38
- bl GetMonData
- cmp r0, 0x64
- beq _0806FD46
- mov r0, sp
- movs r1, 0x19
- bl GetMonData
- adds r1, r5, 0
- adds r1, 0x88
- ldr r1, [r1]
- adds r0, r1
- str r0, [sp, 0x64]
- add r2, sp, 0x64
- mov r0, sp
- movs r1, 0x19
- bl SetMonData
- mov r0, sp
- bl sub_806FCA4
-_0806FD46:
- ldr r0, =gPlayerParty
- movs r1, 0xFA
- lsls r1, 1
- adds r6, r0, r1
- adds r0, r6, 0
- mov r1, sp
- movs r2, 0x64
- bl memcpy
- adds r0, r5, 0
- adds r0, 0x70
- ldrh r0, [r0]
- cmp r0, 0
- beq _0806FD74
- adds r4, r5, 0
- adds r4, 0x50
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80D460C
- adds r0, r4, 0
- bl sub_806FF80
-_0806FD74:
- adds r0, r5, 0
- bl ZeroBoxMonData
- adds r1, r5, 0
- adds r1, 0x88
- movs r0, 0
- str r0, [r1]
- bl party_compaction
- bl CalculatePlayerPartyCount
- adds r0, r7, 0
- add sp, 0x68
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_806FCF8
-
- thumb_func_start sub_806FD9C
-sub_806FD9C: @ 806FD9C
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x8C
- muls r0, r1
- adds r0, r5, r0
- bl sub_806FCF8
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl sub_806FC48
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_806FD9C
-
- thumb_func_start sub_806FDC4
-sub_806FDC4: @ 806FDC4
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003030
- adds r0, r1
- ldr r1, =gSpecialVar_0x8004
- ldrb r1, [r1]
- bl sub_806FD9C
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_806FDC4
-
- thumb_func_start sub_806FDEC
-sub_806FDEC: @ 806FDEC
- push {r4,r5,lr}
- sub sp, 0x54
- adds r4, r0, 0
- adds r5, r1, 0
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0x50
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x19
- bl GetBoxMonData
- adds r0, r5
- str r0, [sp, 0x50]
- add r2, sp, 0x50
- mov r0, sp
- movs r1, 0x19
- bl SetBoxMonData
- mov r0, sp
- bl GetLevelFromBoxMonExp
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x54
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_806FDEC
-
- thumb_func_start sub_806FE28
-sub_806FE28: @ 806FE28
- push {r4,r5,lr}
- adds r5, r0, 0
- bl GetLevelFromBoxMonExp
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- adds r0, 0x88
- ldr r1, [r0]
- adds r0, r5, 0
- bl sub_806FDEC
- lsls r0, 24
- lsrs r0, 24
- subs r0, r4
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_806FE28
-
- thumb_func_start sub_806FE54
-sub_806FE54: @ 806FE54
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_806FE28
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gStringVar2
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r1, =gStringVar1
- adds r0, r5, 0
- bl GetBoxMonNick
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_806FE54
-
- thumb_func_start sub_806FE88
-sub_806FE88: @ 806FE88
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_806FE28
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, =gStringVar1
- adds r0, r5, 0
- bl GetBoxMonNick
- movs r0, 0x64
- muls r4, r0
- adds r4, 0x64
- ldr r0, =gStringVar2
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_806FE88
-
- thumb_func_start sub_806FEC0
-sub_806FEC0: @ 806FEC0
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0x8C
- muls r1, r2
- adds r0, r1
- bl sub_806FE88
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_806FEC0
-
- thumb_func_start sub_806FED8
-sub_806FED8: @ 806FED8
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003030
- adds r0, r1
- ldr r1, =gSpecialVar_0x8004
- ldrb r1, [r1]
- bl sub_806FEC0
- ldr r1, =gSpecialVar_0x8005
- strh r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_806FED8
-
- thumb_func_start sub_806FF04
-sub_806FF04: @ 806FF04
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- ldr r1, =0x000030b8
- adds r3, r2, r1
- ldr r1, [r3]
- adds r1, r0
- str r1, [r3]
- ldr r1, =0x00003144
- adds r2, r1
- ldr r1, [r2]
- adds r1, r0
- str r1, [r2]
- bx lr
- .pool
- thumb_func_end sub_806FF04
-
- thumb_func_start sub_806FF30
-sub_806FF30: @ 806FF30
- push {r4-r6,lr}
- ldr r6, =gSaveBlock1Ptr
- ldr r5, =gSpecialVar_0x8004
- ldrh r0, [r5]
- movs r4, 0x8C
- adds r1, r0, 0
- muls r1, r4
- ldr r0, =0x00003030
- adds r1, r0
- ldr r0, [r6]
- adds r0, r1
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- bne _0806FF60
- movs r0, 0
- b _0806FF76
- .pool
-_0806FF60:
- ldrh r0, [r5]
- adds r1, r0, 0
- muls r1, r4
- ldr r0, =0x00003030
- adds r1, r0
- ldr r0, [r6]
- adds r0, r1
- bl sub_806FE54
- lsls r0, 24
- lsrs r0, 24
-_0806FF76:
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_806FF30
-
- thumb_func_start sub_806FF80
-sub_806FF80: @ 806FF80
- push {lr}
- movs r3, 0
- movs r2, 0x7
- adds r1, r0, 0
- adds r1, 0x2B
-_0806FF8A:
- strb r3, [r1]
- subs r1, 0x1
- subs r2, 0x1
- cmp r2, 0
- bge _0806FF8A
- adds r2, r0, 0
- adds r2, 0x2C
- movs r3, 0
- adds r1, r0, 0
- adds r1, 0x36
-_0806FF9E:
- strb r3, [r1]
- subs r1, 0x1
- cmp r1, r2
- bge _0806FF9E
- bl sub_80D439C
- pop {r0}
- bx r0
- thumb_func_end sub_806FF80
-
- thumb_func_start sub_806FFB0
-sub_806FFB0: @ 806FFB0
- push {r4,lr}
- adds r4, r0, 0
- bl ZeroBoxMonData
- adds r1, r4, 0
- adds r1, 0x88
- movs r0, 0
- str r0, [r1]
- adds r4, 0x50
- adds r0, r4, 0
- bl sub_806FF80
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_806FFB0
-
- thumb_func_start sub_806FFD0
-sub_806FFD0: @ 806FFD0
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r4, 0
- movs r6, 0x8C
-_0806FFD8:
- adds r0, r4, 0
- muls r0, r6
- adds r0, r5, r0
- bl sub_806FFB0
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bls _0806FFD8
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r5, r1
- movs r1, 0
- str r1, [r0]
- movs r2, 0x8E
- lsls r2, 1
- adds r0, r5, r2
- strb r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_806FFD0
-
- thumb_func_start sub_8070004
-sub_8070004: @ 8070004
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r2, r0, 16
- movs r0, 0
- mov r8, r0
- ldr r0, =gEvolutionTable
- mov r12, r0
-_08070016:
- movs r7, 0
- movs r6, 0x1
- movs r4, 0x80
- lsls r4, 9
- movs r5, 0x28
- mov r3, r12
- adds r3, 0x28
-_08070024:
- movs r1, 0
- ldrh r0, [r3, 0x4]
- cmp r0, r2
- bne _08070034
- lsrs r2, r4, 16
- b _08070060
- .pool
-_08070034:
- adds r1, 0x1
- cmp r1, 0x4
- bgt _0807004A
- lsls r0, r1, 3
- adds r0, r5
- add r0, r12
- ldrh r0, [r0, 0x4]
- cmp r0, r2
- bne _08070034
- lsrs r2, r4, 16
- movs r7, 0x1
-_0807004A:
- cmp r7, 0
- bne _08070060
- movs r0, 0x80
- lsls r0, 9
- adds r4, r0
- adds r5, 0x28
- adds r3, 0x28
- adds r6, 0x1
- ldr r0, =0x0000019b
- cmp r6, r0
- ble _08070024
-_08070060:
- movs r0, 0xCE
- lsls r0, 1
- cmp r6, r0
- beq _08070072
- movs r0, 0x1
- add r8, r0
- mov r0, r8
- cmp r0, 0x4
- ble _08070016
-_08070072:
- adds r0, r2, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8070004
-
- thumb_func_start sub_8070084
-sub_8070084: @ 8070084
- push {r4-r7,lr}
- sub sp, 0x8
- adds r6, r0, 0
- movs r7, 0x1
- negs r7, r7
- movs r4, 0
-_08070090:
- movs r0, 0x8C
- muls r0, r4
- adds r0, r6, r0
- bl GetBoxMonGender
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFE
- bne _080700A4
- adds r7, r4, 0
-_080700A4:
- adds r4, 0x1
- cmp r4, 0x1
- ble _08070090
- movs r5, 0
- movs r4, 0
-_080700AE:
- movs r0, 0x8C
- muls r0, r4
- adds r0, r6, r0
- movs r1, 0xB
- bl GetBoxMonData
- lsls r1, r4, 2
- add r1, sp
- str r0, [r1]
- cmp r0, 0x84
- bne _080700C8
- adds r5, 0x1
- adds r7, r4, 0
-_080700C8:
- adds r4, 0x1
- cmp r4, 0x1
- ble _080700AE
- cmp r5, 0x2
- bne _080700E2
- bl Random
- lsls r0, 16
- ldr r1, =0x7ffe0000
- movs r7, 0x1
- cmp r0, r1
- bls _080700E2
- movs r7, 0
-_080700E2:
- movs r0, 0x8C
- muls r0, r7
- adds r0, r6, r0
- movs r1, 0xC
- bl GetBoxMonData
- cmp r0, 0xC3
- bne _080700FE
- bl Random
- lsls r0, 16
- ldr r1, =0x7ffe0000
- cmp r0, r1
- bls _08070108
-_080700FE:
- movs r0, 0x1
- negs r0, r0
- b _0807010A
- .pool
-_08070108:
- adds r0, r7, 0
-_0807010A:
- add sp, 0x8
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8070084
-
- thumb_func_start sub_8070114
-sub_8070114: @ 8070114
- push {r4-r7,lr}
- adds r5, r0, 0
- movs r6, 0
- ldr r0, =gMain
- ldrh r0, [r0, 0x24]
- bl SeedRng2
- adds r0, r5, 0
- bl sub_8070084
- adds r1, r0, 0
- cmp r1, 0
- bge _08070160
- bl Random2
- adds r4, r0, 0
- bl Random
- movs r1, 0x8C
- lsls r1, 1
- adds r5, r1
- lsls r4, 16
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =0x0000fffe
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- adds r0, 0x1
- orrs r4, r0
- str r4, [r5]
- b _080701AC
- .pool
-_08070160:
- movs r0, 0x8C
- muls r0, r1
- adds r0, r5, r0
- movs r1, 0
- movs r2, 0
- bl GetBoxMonData
- bl GetNatureFromPersonality
- lsls r0, 24
- lsrs r7, r0, 24
-_08070176:
- bl Random2
- adds r4, r0, 0
- bl Random
- lsls r4, 16
- lsls r0, 16
- lsrs r0, 16
- orrs r4, r0
- adds r0, r4, 0
- bl GetNatureFromPersonality
- lsls r0, 24
- lsrs r0, 24
- cmp r7, r0
- bne _0807019A
- cmp r4, 0
- bne _080701A4
-_0807019A:
- adds r6, 0x1
- movs r0, 0x96
- lsls r0, 4
- cmp r6, r0
- ble _08070176
-_080701A4:
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r5, r1
- str r4, [r0]
-_080701AC:
- movs r0, 0x86
- bl FlagSet
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8070114
-
- thumb_func_start sub_80701B8
-sub_80701B8: @ 80701B8
- push {r4,lr}
- adds r4, r0, 0
- bl Random
- movs r1, 0x8C
- lsls r1, 1
- adds r4, r1
- movs r2, 0x80
- lsls r2, 8
- adds r1, r2, 0
- orrs r0, r1
- lsls r0, 16
- lsrs r0, 16
- str r0, [r4]
- movs r0, 0x86
- bl FlagSet
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80701B8
-
- thumb_func_start sub_80701E0
-sub_80701E0: @ 80701E0
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003030
- adds r0, r1
- bl sub_8070114
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80701E0
-
- thumb_func_start sub_80701FC
-sub_80701FC: @ 80701FC
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003030
- adds r0, r1
- bl sub_80701B8
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80701FC
-
- thumb_func_start sub_8070218
-sub_8070218: @ 8070218
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r1, r4, r1
- movs r0, 0xFF
- strb r0, [r1]
- movs r2, 0
-_0807022A:
- mov r1, sp
- adds r0, r1, r2
- adds r1, r4, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x5
- ble _0807022A
- movs r3, 0
- movs r2, 0
-_0807023E:
- mov r1, sp
- adds r0, r1, r2
- ldrb r1, [r0]
- adds r0, r1, 0
- cmp r0, 0xFF
- beq _08070250
- adds r0, r4, r3
- strb r1, [r0]
- adds r3, 0x1
-_08070250:
- adds r2, 0x1
- cmp r2, 0x5
- ble _0807023E
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8070218
-
- thumb_func_start sub_8070260
-sub_8070260: @ 8070260
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- mov r9, r0
- mov r8, r1
- movs r5, 0
- add r1, sp, 0x4
- add r7, sp, 0xC
- adds r2, r1, 0
-_08070276:
- adds r0, r2, r5
- strb r5, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _08070276
- movs r5, 0
- adds r6, r1, 0
-_08070288:
- bl Random
- mov r1, sp
- adds r4, r1, r5
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x6
- subs r1, r5
- bl __modsi3
- adds r0, r6, r0
- ldrb r0, [r0]
- strb r0, [r4]
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_8070218
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _08070288
- movs r5, 0
- movs r4, 0x1
-_080702B8:
- bl Random
- adds r1, r7, r5
- lsls r0, 16
- lsrs r0, 16
- ands r0, r4
- strb r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _080702B8
- movs r5, 0
-_080702D2:
- mov r1, sp
- adds r0, r1, r5
- ldrb r0, [r0]
- cmp r0, 0x5
- bhi _080703AE
- lsls r0, 2
- ldr r1, =_080702EC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080702EC:
- .4byte _08070304
- .4byte _08070322
- .4byte _0807033C
- .4byte _08070356
- .4byte _08070370
- .4byte _08070390
-_08070304:
- adds r0, r7, r5
- ldrb r1, [r0]
- movs r0, 0x8C
- muls r0, r1
- add r0, r8
- movs r1, 0x27
- bl GetBoxMonData
- add r2, sp, 0x10
- strb r0, [r2]
- mov r0, r9
- movs r1, 0x27
- bl SetMonData
- b _080703AE
-_08070322:
- add r4, sp, 0x10
- adds r0, r7, r5
- ldrb r1, [r0]
- movs r0, 0x8C
- muls r0, r1
- add r0, r8
- movs r1, 0x28
- bl GetBoxMonData
- strb r0, [r4]
- mov r0, r9
- movs r1, 0x28
- b _08070388
-_0807033C:
- add r4, sp, 0x10
- adds r0, r7, r5
- ldrb r1, [r0]
- movs r0, 0x8C
- muls r0, r1
- add r0, r8
- movs r1, 0x29
- bl GetBoxMonData
- strb r0, [r4]
- mov r0, r9
- movs r1, 0x29
- b _08070388
-_08070356:
- add r4, sp, 0x10
- adds r0, r7, r5
- ldrb r1, [r0]
- movs r0, 0x8C
- muls r0, r1
- add r0, r8
- movs r1, 0x2A
- bl GetBoxMonData
- strb r0, [r4]
- mov r0, r9
- movs r1, 0x2A
- b _08070388
-_08070370:
- add r4, sp, 0x10
- adds r0, r7, r5
- ldrb r1, [r0]
- movs r0, 0x8C
- muls r0, r1
- add r0, r8
- movs r1, 0x2B
- bl GetBoxMonData
- strb r0, [r4]
- mov r0, r9
- movs r1, 0x2B
-_08070388:
- adds r2, r4, 0
- bl SetMonData
- b _080703AE
-_08070390:
- add r4, sp, 0x10
- adds r0, r7, r5
- ldrb r1, [r0]
- movs r0, 0x8C
- muls r0, r1
- add r0, r8
- movs r1, 0x2C
- bl GetBoxMonData
- strb r0, [r4]
- mov r0, r9
- movs r1, 0x2C
- adds r2, r4, 0
- bl SetMonData
-_080703AE:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _080702D2
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8070260
-
- thumb_func_start pokemon_get_eggmoves
-pokemon_get_eggmoves: @ 80703C8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r1
- movs r6, 0
- movs r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0
- ldr r5, =gEggMoves
- ldrh r1, [r5]
- ldr r7, =0x00004e20
- adds r0, r3, r7
- cmp r1, r0
- bne _080703F8
- movs r4, 0x1
- b _0807041A
- .pool
-_080703F8:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r0, =0x00000471
- ldr r5, =gEggMoves
- cmp r2, r0
- bhi _0807041A
- lsls r0, r2, 1
- adds r0, r5
- ldrh r1, [r0]
- ldr r7, =0x00004e20
- adds r0, r3, r7
- cmp r1, r0
- bne _080703F8
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
-_0807041A:
- movs r2, 0
- lsls r0, r4, 1
- adds r0, r5
- ldrh r0, [r0]
- ldr r1, =0x00004e20
- cmp r0, r1
- bhi _08070456
- adds r7, r5, 0
- adds r3, r1, 0
-_0807042C:
- lsls r1, r2, 1
- add r1, r8
- adds r0, r4, r2
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x9
- bhi _08070456
- adds r0, r4, r2
- lsls r0, 1
- adds r0, r5
- ldrh r0, [r0]
- cmp r0, r3
- bls _0807042C
-_08070456:
- lsls r0, r6, 24
- lsrs r0, 24
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end pokemon_get_eggmoves
-
- thumb_func_start daycare_build_child_moveset
-daycare_build_child_moveset: @ 8070470
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- adds r7, r0, 0
- mov r10, r1
- mov r9, r2
- movs r0, 0
- str r0, [sp]
- movs r6, 0
- ldr r5, =gUnknown_02024A4C
- movs r2, 0
- ldr r4, =gUnknown_02024A28
- ldr r3, =gUnknown_02024A30
-_08070490:
- lsls r1, r6, 1
- adds r0, r1, r5
- strh r2, [r0]
- adds r0, r1, r4
- strh r2, [r0]
- adds r1, r3
- strh r2, [r1]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bls _08070490
- movs r6, 0
- ldr r2, =gUnknown_02024A38
- movs r1, 0
-_080704AE:
- lsls r0, r6, 1
- adds r0, r2
- strh r1, [r0]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x9
- bls _080704AE
- movs r6, 0
- ldr r2, =gUnknown_020249C4
- movs r1, 0
-_080704C4:
- lsls r0, r6, 1
- adds r0, r2
- strh r1, [r0]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x31
- bls _080704C4
- adds r0, r7, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gUnknown_020249C4
- bl GetLevelUpMovesBySpecies
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- movs r6, 0
- ldr r1, =gUnknown_02024A28
- mov r8, r1
-_080704F2:
- adds r5, r6, 0
- adds r5, 0xD
- mov r0, r10
- adds r1, r5, 0
- bl GetBoxMonData
- lsls r4, r6, 1
- mov r2, r8
- adds r1, r4, r2
- strh r0, [r1]
- mov r0, r9
- adds r1, r5, 0
- bl GetBoxMonData
- ldr r1, =gUnknown_02024A4C
- adds r4, r1
- strh r0, [r4]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bls _080704F2
- ldr r1, =gUnknown_02024A38
- adds r0, r7, 0
- bl pokemon_get_eggmoves
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r6, 0
-_0807052E:
- ldr r0, =gUnknown_02024A28
- lsls r1, r6, 1
- adds r2, r1, r0
- ldrh r1, [r2]
- mov r9, r0
- cmp r1, 0
- beq _080705A4
- movs r5, 0
- cmp r5, r8
- bcs _08070596
- adds r4, r2, 0
- ldr r2, =0x0000ffff
-_08070546:
- ldr r0, =gUnknown_02024A38
- lsls r1, r5, 1
- adds r1, r0
- ldrh r0, [r4]
- ldrh r1, [r1]
- cmp r0, r1
- bne _0807058C
- adds r1, r0, 0
- adds r0, r7, 0
- str r2, [sp, 0x8]
- bl GiveMoveToMon
- lsls r0, 16
- lsrs r0, 16
- ldr r2, [sp, 0x8]
- cmp r0, r2
- bne _08070596
- ldrh r1, [r4]
- adds r0, r7, 0
- bl DeleteFirstMoveAndGiveMoveToMon
- b _08070596
- .pool
-_0807058C:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, r8
- bcc _08070546
-_08070596:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r3, =gUnknown_02024A28
- mov r9, r3
- cmp r6, 0x3
- bls _0807052E
-_080705A4:
- movs r6, 0
-_080705A6:
- lsls r0, r6, 1
- mov r2, r9
- adds r1, r0, r2
- ldrh r1, [r1]
- adds r2, r0, 0
- adds r6, 0x1
- mov r8, r6
- cmp r1, 0
- beq _08070608
- movs r5, 0
- ldr r0, =gUnknown_02024A28
- adds r4, r2, r0
- ldr r6, =0x0000ffff
- mov r9, r0
-_080705C2:
- ldr r3, =0x00000121
- adds r0, r5, r3
- lsls r0, 16
- lsrs r0, 16
- bl ItemIdToBattleMoveId
- ldrh r1, [r4]
- lsls r0, 16
- lsrs r0, 16
- cmp r1, r0
- bne _080705FE
- lsls r1, r5, 24
- lsrs r1, 24
- adds r0, r7, 0
- bl CanMonLearnTMHM
- cmp r0, 0
- beq _080705FE
- ldrh r1, [r4]
- adds r0, r7, 0
- bl GiveMoveToMon
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bne _080705FE
- ldrh r1, [r4]
- adds r0, r7, 0
- bl DeleteFirstMoveAndGiveMoveToMon
-_080705FE:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x39
- bls _080705C2
-_08070608:
- mov r1, r8
- lsls r0, r1, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bls _080705A6
- movs r6, 0
- mov r2, r9
- ldrh r0, [r2]
- ldr r3, =gUnknown_02024A30
- mov r10, r3
- cmp r0, 0
- beq _08070672
- mov r4, r9
- ldr r0, =gUnknown_02024A4C
- mov r9, r0
- mov r12, r10
-_08070628:
- movs r5, 0
- lsls r2, r6, 1
- adds r6, 0x1
- mov r8, r6
- adds r3, r2, r4
-_08070632:
- lsls r0, r5, 1
- add r0, r9
- ldrh r2, [r3]
- adds r1, r2, 0
- ldrh r0, [r0]
- cmp r1, r0
- bne _08070654
- cmp r1, 0
- beq _08070654
- ldr r1, [sp]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp]
- lsls r1, 1
- add r1, r12
- strh r2, [r1]
-_08070654:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x3
- bls _08070632
- mov r1, r8
- lsls r0, r1, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bhi _08070672
- lsls r0, r6, 1
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, 0
- bne _08070628
-_08070672:
- movs r6, 0
- mov r2, r10
- ldrh r0, [r2]
- cmp r0, 0
- beq _080706FC
-_0807067C:
- movs r5, 0
- adds r3, r6, 0x1
- mov r8, r3
- ldr r0, [sp, 0x4]
- cmp r5, r0
- bcs _080706E4
- ldr r2, =0x0000ffff
-_0807068A:
- ldr r1, =gUnknown_020249C4
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- cmp r1, 0
- beq _080706D8
- lsls r0, r6, 1
- mov r3, r10
- adds r4, r0, r3
- ldrh r0, [r4]
- cmp r0, r1
- bne _080706D8
- adds r1, r0, 0
- adds r0, r7, 0
- str r2, [sp, 0x8]
- bl GiveMoveToMon
- lsls r0, 16
- lsrs r0, 16
- ldr r2, [sp, 0x8]
- cmp r0, r2
- bne _080706E4
- ldrh r1, [r4]
- adds r0, r7, 0
- bl DeleteFirstMoveAndGiveMoveToMon
- b _080706E4
- .pool
-_080706D8:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, [sp, 0x4]
- cmp r5, r0
- bcc _0807068A
-_080706E4:
- mov r1, r8
- lsls r0, r1, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bhi _080706FC
- ldr r0, =gUnknown_02024A30
- lsls r1, r6, 1
- adds r1, r0
- ldrh r1, [r1]
- mov r10, r0
- cmp r1, 0
- bne _0807067C
-_080706FC:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end daycare_build_child_moveset
-
- thumb_func_start sub_8070710
-sub_8070710: @ 8070710
- adds r2, r0, 0
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r2, r1
- movs r1, 0
- str r1, [r0]
- movs r3, 0x8E
- lsls r3, 1
- adds r0, r2, r3
- strb r1, [r0]
- bx lr
- thumb_func_end sub_8070710
-
- thumb_func_start sub_8070728
-sub_8070728: @ 8070728
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003030
- adds r0, r1
- bl sub_8070710
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8070728
-
- thumb_func_start incense_effects
-incense_effects: @ 8070744
- push {r4-r7,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrh r1, [r4]
- movs r7, 0xB4
- lsls r7, 1
- cmp r1, r7
- beq _0807075C
- movs r0, 0xAF
- lsls r0, 1
- cmp r1, r0
- bne _0807079E
-_0807075C:
- adds r0, r5, 0
- movs r1, 0xC
- bl GetBoxMonData
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r5, 0
- adds r0, 0x8C
- movs r1, 0xC
- bl GetBoxMonData
- lsls r0, 16
- lsrs r2, r0, 16
- ldrh r0, [r4]
- cmp r0, r7
- bne _08070788
- cmp r6, 0xDD
- beq _08070788
- cmp r2, 0xDD
- beq _08070788
- movs r0, 0xCA
- strh r0, [r4]
-_08070788:
- ldrh r1, [r4]
- movs r0, 0xAF
- lsls r0, 1
- cmp r1, r0
- bne _0807079E
- cmp r6, 0xDC
- beq _0807079E
- cmp r2, 0xDC
- beq _0807079E
- movs r0, 0xB7
- strh r0, [r4]
-_0807079E:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end incense_effects
-
- thumb_func_start sub_80707A4
-sub_80707A4: @ 80707A4
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- movs r1, 0xC
- bl GetBoxMonData
- adds r5, r0, 0
- adds r4, 0x8C
- adds r0, r4, 0
- movs r1, 0xC
- bl GetBoxMonData
- cmp r5, 0xCA
- beq _080707C6
- cmp r0, 0xCA
- bne _080707E2
-_080707C6:
- movs r4, 0xAC
- lsls r4, 1
- adds r0, r6, 0
- adds r1, r4, 0
- bl GiveMoveToMon
- lsls r0, 16
- ldr r1, =0xffff0000
- cmp r0, r1
- bne _080707E2
- adds r0, r6, 0
- adds r1, r4, 0
- bl DeleteFirstMoveAndGiveMoveToMon
-_080707E2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80707A4
-
- thumb_func_start sub_80707EC
-sub_80707EC: @ 80707EC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r7, r0, 0
- adds r6, r1, 0
- movs r4, 0
- movs r0, 0x1
- mov r8, r0
-_080707FE:
- movs r0, 0x8C
- muls r0, r4
- adds r5, r7, r0
- adds r0, r5, 0
- movs r1, 0xB
- bl GetBoxMonData
- lsls r1, r4, 1
- add r1, sp
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x84
- bne _08070826
- adds r0, r4, 0
- mov r1, r8
- eors r0, r1
- strb r0, [r6]
- strb r4, [r6, 0x1]
- b _0807083E
-_08070826:
- adds r0, r5, 0
- bl GetBoxMonGender
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFE
- bne _0807083E
- strb r4, [r6]
- adds r0, r4, 0
- mov r1, r8
- eors r0, r1
- strb r0, [r6, 0x1]
-_0807083E:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1
- bls _080707FE
- ldrb r0, [r6]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- bl sub_8070004
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1D
- bne _08070870
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r7, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _08070870
- movs r4, 0x20
-_08070870:
- ldr r0, =0x00000183
- cmp r4, r0
- bne _0807088C
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r7, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _0807088C
- movs r4, 0xC1
- lsls r4, 1
-_0807088C:
- ldrb r0, [r6, 0x1]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- cmp r0, 0x84
- bne _080708B4
- ldrb r1, [r6]
- movs r0, 0x8C
- muls r0, r1
- adds r0, r7, r0
- bl GetBoxMonGender
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFE
- beq _080708B4
- ldrb r1, [r6, 0x1]
- ldrb r0, [r6]
- strb r0, [r6, 0x1]
- strb r1, [r6]
-_080708B4:
- adds r0, r4, 0
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80707EC
-
- thumb_func_start sub_80708C8
-sub_80708C8: @ 80708C8
- push {r4-r6,lr}
- sub sp, 0x6C
- adds r6, r0, 0
- add r5, sp, 0x64
- adds r1, r5, 0
- bl sub_80707EC
- add r4, sp, 0x68
- strh r0, [r4]
- adds r0, r4, 0
- adds r1, r6, 0
- bl incense_effects
- ldrh r1, [r4]
- mov r0, sp
- adds r2, r6, 0
- bl sub_8070A0C
- mov r0, sp
- adds r1, r6, 0
- bl sub_8070260
- ldrb r0, [r5, 0x1]
- movs r2, 0x8C
- adds r1, r0, 0
- muls r1, r2
- adds r1, r6, r1
- ldrb r0, [r5]
- muls r2, r0
- adds r2, r6, r2
- mov r0, sp
- bl daycare_build_child_moveset
- ldrh r0, [r4]
- cmp r0, 0xAC
- bne _08070918
- mov r0, sp
- adds r1, r6, 0
- bl sub_80707A4
-_08070918:
- mov r2, sp
- adds r2, 0x6A
- movs r0, 0x1
- strb r0, [r2]
- mov r0, sp
- movs r1, 0x2D
- bl SetMonData
- ldr r0, =gPlayerParty
- movs r1, 0xFA
- lsls r1, 1
- adds r0, r1
- mov r1, sp
- movs r2, 0x64
- bl memcpy
- bl party_compaction
- bl CalculatePlayerPartyCount
- adds r0, r6, 0
- bl sub_8070710
- add sp, 0x6C
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80708C8
-
- thumb_func_start sub_8070954
-sub_8070954: @ 8070954
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x18
- adds r7, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r5, 16
- lsrs r5, 16
- lsls r6, 24
- lsrs r6, 24
- movs r4, 0
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- str r4, [sp, 0xC]
- adds r1, r5, 0
- movs r2, 0x5
- movs r3, 0x20
- bl CreateMon
- movs r0, 0x12
- add r0, sp
- mov r8, r0
- strb r4, [r0]
- movs r1, 0x4
- add r0, sp, 0x10
- strh r1, [r0]
- mov r4, sp
- adds r4, 0x13
- movs r0, 0x1
- mov r9, r0
- mov r0, r9
- strb r0, [r4]
- adds r0, r7, 0
- movs r1, 0x26
- add r2, sp, 0x10
- bl SetMonData
- ldr r2, =gEggName
- adds r0, r7, 0
- movs r1, 0x2
- bl SetMonData
- lsls r2, r5, 3
- subs r2, r5
- lsls r2, 2
- ldr r0, =gBaseStats + 0x11 @ egg cycles offset
- adds r2, r0
- adds r0, r7, 0
- movs r1, 0x20
- bl SetMonData
- adds r0, r7, 0
- movs r1, 0x24
- mov r2, r8
- bl SetMonData
- adds r0, r7, 0
- movs r1, 0x3
- adds r2, r4, 0
- bl SetMonData
- cmp r6, 0
- beq _080709E6
- add r2, sp, 0x14
- movs r0, 0xFD
- strb r0, [r2]
- adds r0, r7, 0
- movs r1, 0x23
- bl SetMonData
-_080709E6:
- mov r2, sp
- adds r2, 0x15
- mov r0, r9
- strb r0, [r2]
- adds r0, r7, 0
- movs r1, 0x2D
- bl SetMonData
- add sp, 0x18
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8070954
-
- thumb_func_start sub_8070A0C
-sub_8070A0C: @ 8070A0C
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x14
- adds r6, r0, 0
- adds r5, r1, 0
- lsls r5, 16
- lsrs r5, 16
- movs r0, 0x8C
- lsls r0, 1
- adds r2, r0
- ldr r0, [r2]
- movs r1, 0x1
- mov r8, r1
- str r1, [sp]
- str r0, [sp, 0x4]
- movs r4, 0
- str r4, [sp, 0x8]
- str r4, [sp, 0xC]
- adds r0, r6, 0
- adds r1, r5, 0
- movs r2, 0x5
- movs r3, 0x20
- bl CreateMon
- movs r0, 0x12
- add r0, sp
- mov r9, r0
- strb r4, [r0]
- movs r1, 0x4
- add r0, sp, 0x10
- strh r1, [r0]
- mov r4, sp
- adds r4, 0x13
- mov r1, r8
- strb r1, [r4]
- adds r0, r6, 0
- movs r1, 0x26
- add r2, sp, 0x10
- bl SetMonData
- ldr r2, =gEggName
- adds r0, r6, 0
- movs r1, 0x2
- bl SetMonData
- lsls r2, r5, 3
- subs r2, r5
- lsls r2, 2
- ldr r0, =gBaseStats + 0x11 @ egg cycles offset
- adds r2, r0
- adds r0, r6, 0
- movs r1, 0x20
- bl SetMonData
- adds r0, r6, 0
- movs r1, 0x24
- mov r2, r9
- bl SetMonData
- adds r0, r6, 0
- movs r1, 0x3
- adds r2, r4, 0
- bl SetMonData
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8070A0C
-
- thumb_func_start sp0B8_daycare
-sp0B8_daycare: @ 8070AA8
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003030
- adds r0, r1
- bl sub_80708C8
- pop {r0}
- bx r0
- .pool
- thumb_func_end sp0B8_daycare
-
- thumb_func_start sub_8070AC4
-sub_8070AC4: @ 8070AC4
- push {r4-r7,lr}
- sub sp, 0x4
- adds r6, r0, 0
- movs r7, 0
- movs r5, 0
-_08070ACE:
- movs r0, 0x8C
- adds r4, r5, 0
- muls r4, r0
- adds r0, r6, r4
- movs r1, 0x5
- bl GetBoxMonData
- cmp r0, 0
- beq _08070AEE
- adds r1, r6, 0
- adds r1, 0x88
- adds r1, r4
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- adds r7, 0x1
-_08070AEE:
- adds r5, 0x1
- cmp r5, 0x1
- bls _08070ACE
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r6, r1
- ldr r0, [r0]
- cmp r0, 0
- bne _08070B34
- cmp r7, 0x2
- bne _08070B34
- subs r1, 0x4
- adds r0, r6, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08070B34
- adds r0, r6, 0
- bl daycare_relationship_score
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- muls r0, r1
- ldr r1, =0x0000ffff
- bl __udivsi3
- cmp r4, r0
- bls _08070B34
- bl sub_80701E0
-_08070B34:
- movs r0, 0x8E
- lsls r0, 1
- adds r1, r6, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _08070BC0
- bl GetEggStepsToSubtract
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- ldr r0, =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r5, r0
- bcs _08070BC0
- ldr r4, =gPlayerParty
-_08070B5C:
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- beq _08070BB4
- adds r0, r4, 0
- movs r1, 0x4
- bl GetMonData
- cmp r0, 0
- bne _08070BB4
- adds r0, r4, 0
- movs r1, 0x20
- bl GetMonData
- adds r1, r0, 0
- str r1, [sp]
- cmp r0, 0
- beq _08070BA8
- cmp r0, r6
- bcc _08070B98
- subs r0, r6
- b _08070B9A
- .pool
-_08070B98:
- subs r0, r1, 0x1
-_08070B9A:
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0x20
- mov r2, sp
- bl SetMonData
- b _08070BB4
-_08070BA8:
- ldr r0, =gSpecialVar_0x8004
- strh r5, [r0]
- movs r0, 0x1
- b _08070BC2
- .pool
-_08070BB4:
- adds r4, 0x64
- adds r5, 0x1
- ldr r0, =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r5, r0
- bcc _08070B5C
-_08070BC0:
- movs r0, 0
-_08070BC2:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8070AC4
-
- thumb_func_start sub_8070BD0
-sub_8070BD0: @ 8070BD0
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003030
- adds r0, r1
- bl sub_8070AC4
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8070BD0
-
- thumb_func_start sub_8070BF0
-sub_8070BF0: @ 8070BF0
- push {lr}
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- beq _08070C00
- movs r0, 0x1
-_08070C00:
- pop {r1}
- bx r1
- thumb_func_end sub_8070BF0
-
- thumb_func_start sub_8070C04
-sub_8070C04: @ 8070C04
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _08070C2E
- ldr r1, =gStringVar1
- adds r0, r4, 0
- bl GetBoxMonNick
- adds r0, r4, 0
- movs r1, 0x7
- mov r2, sp
- bl GetBoxMonData
- ldr r0, =gStringVar3
- mov r1, sp
- bl StringCopy
-_08070C2E:
- adds r4, 0x8C
- adds r0, r4, 0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _08070C44
- ldr r1, =gStringVar2
- adds r0, r4, 0
- bl GetBoxMonNick
-_08070C44:
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8070C04
-
- thumb_func_start sub_8070C58
-sub_8070C58: @ 8070C58
- push {r4,r5,lr}
- bl brm_get_pokemon_selection
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0x64
- muls r0, r5
- ldr r4, =gPlayerParty
- adds r0, r4
- ldr r1, =gStringVar1
- bl GetBoxMonNick
- bl brm_get_pokemon_selection
- lsls r0, 24
- lsrs r0, 24
- muls r0, r5
- adds r0, r4
- movs r1, 0xB
- bl GetBoxMonData
- lsls r0, 16
- lsrs r0, 16
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8070C58
-
- thumb_func_start sp0B5_daycare
-sp0B5_daycare: @ 8070C94
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003030
- adds r0, r1
- bl sub_8070C04
- pop {r0}
- bx r0
- .pool
- thumb_func_end sp0B5_daycare
-
- thumb_func_start sp0B6_daycare
-sp0B6_daycare: @ 8070CB0
- push {r4,lr}
- ldr r4, =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r1, =0x00003030
- adds r0, r1
- bl sub_8070BF0
- lsls r0, 24
- cmp r0, 0
- beq _08070CD0
- movs r0, 0x1
- b _08070CF2
- .pool
-_08070CD0:
- ldr r0, [r4]
- ldr r1, =0x00003030
- adds r0, r1
- bl daycare_count_pokemon
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08070CEC
- movs r0, 0
- b _08070CF2
- .pool
-_08070CEC:
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
-_08070CF2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sp0B6_daycare
-
- thumb_func_start sub_8070CF8
-sub_8070CF8: @ 8070CF8
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003030
- adds r0, r1
- bl daycare_count_pokemon
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08070D10
- movs r0, 0
-_08070D10:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8070CF8
-
- thumb_func_start sub_8070D1C
-sub_8070D1C: @ 8070D1C
- push {r4-r6,lr}
- adds r5, r1, 0
- movs r4, 0
- adds r1, r0, 0
-_08070D24:
- movs r3, 0
- ldrh r0, [r1]
- adds r2, r5, 0
-_08070D2A:
- ldrh r6, [r2]
- cmp r0, r6
- bne _08070D34
- movs r0, 0x1
- b _08070D46
-_08070D34:
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x1
- ble _08070D2A
- adds r1, 0x2
- adds r4, 0x1
- cmp r4, 0x1
- ble _08070D24
- movs r0, 0
-_08070D46:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8070D1C
-
- thumb_func_start daycare_relationship_score
-daycare_relationship_score: @ 8070D4C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x30
- str r0, [sp, 0x1C]
- movs r7, 0
- mov r0, sp
- adds r0, 0x8
- str r0, [sp, 0x20]
- add r1, sp, 0xC
- mov r9, r1
- mov r2, sp
- adds r2, 0x14
- str r2, [sp, 0x24]
- subs r0, 0x6
- ldr r1, =gBaseStats
- mov r10, r1
- ldr r5, [sp, 0x20]
- mov r8, r0
- mov r6, sp
- str r2, [sp, 0x28]
- mov r2, r9
- str r2, [sp, 0x2C]
-_08070D7E:
- movs r0, 0x8C
- adds r4, r7, 0
- muls r4, r0
- ldr r0, [sp, 0x1C]
- adds r4, r0, r4
- adds r0, r4, 0
- movs r1, 0xB
- bl GetBoxMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0x1
- bl GetBoxMonData
- ldr r1, [sp, 0x2C]
- stm r1!, {r0}
- str r1, [sp, 0x2C]
- adds r0, r4, 0
- movs r1, 0
- bl GetBoxMonData
- adds r1, r0, 0
- ldrh r0, [r5]
- bl GetGenderFromSpeciesAndPersonality
- lsls r0, 24
- lsrs r0, 24
- ldr r2, [sp, 0x28]
- stm r2!, {r0}
- str r2, [sp, 0x28]
- ldrh r1, [r5]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r10
- ldrb r0, [r0, 0x14]
- strh r0, [r6]
- ldrh r1, [r5]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r10
- ldrb r0, [r0, 0x15]
- mov r1, r8
- strh r0, [r1]
- adds r5, 0x2
- movs r2, 0x4
- add r8, r2
- adds r6, 0x4
- adds r7, 0x1
- cmp r7, 0x1
- bls _08070D7E
- mov r0, sp
- ldrh r1, [r0]
- cmp r1, 0xF
- beq _08070DFC
- ldrh r0, [r0, 0x4]
- cmp r0, 0xF
- beq _08070DFC
- cmp r1, 0xD
- bne _08070E04
- cmp r0, 0xD
- bne _08070E08
-_08070DFC:
- movs r0, 0
- b _08070E5C
- .pool
-_08070E04:
- cmp r0, 0xD
- bne _08070E14
-_08070E08:
- ldr r1, [sp, 0xC]
- mov r2, r9
- ldr r0, [r2, 0x4]
- cmp r1, r0
- beq _08070E56
- b _08070E5A
-_08070E14:
- ldr r0, [sp, 0x14]
- ldr r2, [sp, 0x24]
- ldr r1, [r2, 0x4]
- cmp r0, r1
- beq _08070DFC
- cmp r0, 0xFF
- beq _08070DFC
- cmp r1, 0xFF
- beq _08070DFC
- add r1, sp, 0x4
- mov r0, sp
- bl sub_8070D1C
- lsls r0, 24
- cmp r0, 0
- beq _08070DFC
- ldr r0, [sp, 0x20]
- ldrh r1, [r0, 0x2]
- ldrh r0, [r0]
- cmp r0, r1
- bne _08070E4C
- ldr r1, [sp, 0xC]
- mov r2, r9
- ldr r0, [r2, 0x4]
- cmp r1, r0
- beq _08070E5A
- movs r0, 0x46
- b _08070E5C
-_08070E4C:
- ldr r1, [sp, 0xC]
- mov r2, r9
- ldr r0, [r2, 0x4]
- cmp r1, r0
- bne _08070E5A
-_08070E56:
- movs r0, 0x14
- b _08070E5C
-_08070E5A:
- movs r0, 0x32
-_08070E5C:
- add sp, 0x30
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end daycare_relationship_score
-
- thumb_func_start daycare_relationship_score_from_savegame
-daycare_relationship_score_from_savegame: @ 8070E6C
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003030
- adds r0, r1
- bl daycare_relationship_score
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end daycare_relationship_score_from_savegame
-
- thumb_func_start sp0B9_daycare_relationship_comment
-sp0B9_daycare_relationship_comment: @ 8070E8C
- push {lr}
- bl daycare_relationship_score_from_savegame
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- movs r1, 0
- cmp r0, 0
- bne _08070EA0
- movs r1, 0x3
-_08070EA0:
- cmp r0, 0x14
- bne _08070EA6
- movs r1, 0x2
-_08070EA6:
- cmp r0, 0x32
- bne _08070EAC
- movs r1, 0x1
-_08070EAC:
- cmp r2, 0x46
- bne _08070EB2
- movs r1, 0
-_08070EB2:
- ldr r0, =gStringVar4
- ldr r2, =gUnknown_0832B6F8
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- pop {r0}
- bx r0
- .pool
- thumb_func_end sp0B9_daycare_relationship_comment
-
- thumb_func_start sub_8070ECC
-sub_8070ECC: @ 8070ECC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- mov r2, sp
- mov r1, sp
- movs r0, 0
- strb r0, [r1, 0x1]
- strb r0, [r2]
- movs r3, 0
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _08070F10
-_08070EE8:
- adds r1, r4, r3
- ldrb r0, [r1]
- cmp r0, 0xB5
- bne _08070EF6
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
-_08070EF6:
- ldrb r0, [r1]
- cmp r0, 0xB6
- bne _08070F02
- ldrb r0, [r2, 0x1]
- adds r0, 0x1
- strb r0, [r2, 0x1]
-_08070F02:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r4, r3
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08070EE8
-_08070F10:
- cmp r5, 0
- bne _08070F24
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0
- beq _08070F24
- mov r0, sp
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _08070F38
-_08070F24:
- cmp r5, 0xFE
- bne _08070F3C
- mov r0, sp
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _08070F3C
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0
- bne _08070F3C
-_08070F38:
- movs r0, 0x1
- b _08070F3E
-_08070F3C:
- movs r0, 0
-_08070F3E:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8070ECC
-
- thumb_func_start sub_8070F48
-sub_8070F48: @ 8070F48
- push {r4,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0
- bne _08070F68
- movs r1, 0
- bl sub_8070ECC
- lsls r0, 24
- cmp r0, 0
- bne _08070F84
- ldr r1, =gUnknown_0832DAC7
- b _08070F86
- .pool
-_08070F68:
- cmp r1, 0xFE
- bne _08070F84
- adds r0, r4, 0
- movs r1, 0xFE
- bl sub_8070ECC
- lsls r0, 24
- cmp r0, 0
- bne _08070F84
- ldr r1, =gUnknown_0832DAC9
- b _08070F86
- .pool
-_08070F84:
- ldr r1, =gUnknown_0832DACB
-_08070F86:
- adds r0, r4, 0
- bl StringAppend
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8070F48
-
- thumb_func_start sub_8070F98
-sub_8070F98: @ 8070F98
- push {r4,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- bl GetBoxMonGender
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_8070F48
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8070F98
-
- thumb_func_start sub_8070FB4
-sub_8070FB4: @ 8070FB4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x28
- mov r8, r0
- adds r7, r1, 0
- movs r0, 0xFF
- strb r0, [r7]
- movs r6, 0
- add r0, sp, 0x14
- mov r9, r0
-_08070FCC:
- movs r0, 0x8C
- adds r4, r6, 0
- muls r4, r0
- add r4, r8
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 2
- mov r1, sp
- adds r5, r1, r0
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetBoxMonNick
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_8070F98
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x1
- bls _08070FCC
- adds r0, r7, 0
- mov r1, sp
- bl StringCopy
- ldr r4, =gText_NewLine2
- adds r0, r7, 0
- adds r1, r4, 0
- bl StringAppend
- adds r0, r7, 0
- mov r1, r9
- bl StringAppend
- adds r0, r7, 0
- adds r1, r4, 0
- bl StringAppend
- ldr r1, =gText_Exit4
- adds r0, r7, 0
- bl StringAppend
- add sp, 0x28
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8070FB4
-
- thumb_func_start sub_8071038
-sub_8071038: @ 8071038
- push {r4-r6,lr}
- sub sp, 0x14
- adds r6, r0, 0
- adds r4, r1, 0
- movs r0, 0xFF
- strb r0, [r4]
- movs r5, 0
-_08071046:
- adds r0, r4, 0
- ldr r1, =gText_Lv
- bl StringAppend
- movs r0, 0x8C
- adds r2, r5, 0
- muls r2, r0
- adds r0, r6, r2
- adds r1, r6, 0
- adds r1, 0x88
- adds r1, r2
- ldr r1, [r1]
- bl sub_806FDEC
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r0, sp
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r0, r4, 0
- mov r1, sp
- bl StringAppend
- adds r0, r4, 0
- ldr r1, =gText_NewLine2
- bl StringAppend
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bls _08071046
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8071038
-
- thumb_func_start sub_807109C
-sub_807109C: @ 807109C
- push {r4-r6,lr}
- sub sp, 0x10
- str r1, [sp]
- mov r1, sp
- movs r5, 0
- strb r0, [r1, 0x4]
- mov r0, sp
- movs r6, 0x1
- movs r4, 0x1
- strb r4, [r0, 0x5]
- strb r2, [r0, 0x6]
- strb r3, [r0, 0x7]
- strb r2, [r0, 0x8]
- strb r3, [r0, 0x9]
- mov r3, sp
- ldrb r1, [r3, 0xC]
- movs r2, 0x10
- negs r2, r2
- adds r0, r2, 0
- ands r0, r1
- strb r0, [r3, 0xC]
- ldr r3, =gTextFlags
- ldrb r1, [r3]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- mov r0, sp
- strb r5, [r0, 0xA]
- strb r4, [r0, 0xB]
- mov r3, sp
- ldrb r1, [r3, 0xC]
- movs r4, 0xF
- adds r0, r4, 0
- ands r0, r1
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r3, 0xC]
- mov r1, sp
- ldrb r0, [r1, 0xD]
- ands r2, r0
- orrs r2, r6
- strb r2, [r1, 0xD]
- ands r2, r4
- movs r0, 0x30
- orrs r2, r0
- strb r2, [r1, 0xD]
- mov r0, sp
- movs r1, 0xFF
- movs r2, 0
- bl AddTextPrinter
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_807109C
-
- thumb_func_start sub_8071110
-sub_8071110: @ 8071110
- push {r4-r6,lr}
- sub sp, 0x14
- adds r5, r0, 0
- adds r4, r1, 0
- adds r6, r3, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x8C
- muls r0, r2
- adds r5, r0
- adds r0, r5, 0
- mov r1, sp
- bl GetBoxMonNick
- mov r0, sp
- adds r1, r5, 0
- bl sub_8070F98
- adds r0, r4, 0
- mov r1, sp
- movs r2, 0x8
- adds r3, r6, 0
- bl sub_807109C
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8071110
-
- thumb_func_start sub_8071148
-sub_8071148: @ 8071148
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x14
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- mov r8, r3
- lsls r5, 24
- lsrs r5, 24
- ldr r1, =gText_Lv
- mov r0, sp
- bl StringCopy
- movs r0, 0x8C
- adds r1, r6, 0
- muls r1, r0
- adds r0, r4, r1
- adds r4, 0x88
- adds r4, r1
- ldr r1, [r4]
- bl sub_806FDEC
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- add r4, sp, 0xC
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- movs r0, 0x1
- mov r1, sp
- movs r2, 0x70
- bl GetStringRightAlignXOffset
- adds r2, r0, 0
- adds r0, r5, 0
- mov r1, sp
- mov r3, r8
- bl sub_807109C
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8071148
-
- thumb_func_start sub_80711B8
-sub_80711B8: @ 80711B8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r1, 0
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r2, 24
- lsrs r5, r2, 24
- cmp r6, 0x1
- bhi _080711F0
- ldr r0, =gSaveBlock1Ptr
- mov r8, r0
- ldr r0, [r0]
- ldr r4, =0x00003030
- adds r0, r4
- adds r1, r7, 0
- adds r2, r6, 0
- adds r3, r5, 0
- bl sub_8071110
- mov r1, r8
- ldr r0, [r1]
- adds r0, r4
- adds r1, r7, 0
- adds r2, r6, 0
- adds r3, r5, 0
- bl sub_8071148
-_080711F0:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80711B8
-
- thumb_func_start c3_080469FC
-c3_080469FC: @ 8071204
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrb r0, [r4, 0x8]
- bl ListMenuHandleInput
- adds r1, r0, 0
- ldr r0, =gMain
- ldrh r2, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _08071284
- cmp r1, 0x1
- bls _0807123C
- cmp r1, 0x5
- beq _08071248
- b _0807124E
- .pool
-_0807123C:
- ldr r0, =gSpecialVar_Result
- strh r1, [r0]
- b _0807124E
- .pool
-_08071248:
- ldr r1, =gSpecialVar_Result
- movs r0, 0x2
- strh r0, [r1]
-_0807124E:
- ldr r0, =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- ldrb r0, [r4, 0x8]
- movs r1, 0
- movs r2, 0
- bl sub_81AE6C8
- ldrb r0, [r4, 0xA]
- movs r1, 0x1
- bl sub_819746C
- ldrb r0, [r4, 0xA]
- bl RemoveWindow
- adds r0, r5, 0
- bl DestroyTask
- bl EnableBothScriptContexts
- b _080712B4
- .pool
-_08071284:
- movs r1, 0x2
- adds r0, r1, 0
- ands r0, r2
- cmp r0, 0
- beq _080712B4
- ldr r0, =gSpecialVar_Result
- strh r1, [r0]
- ldrb r0, [r4, 0x8]
- movs r1, 0
- movs r2, 0
- bl sub_81AE6C8
- ldrb r0, [r4, 0xA]
- movs r1, 0x1
- bl sub_819746C
- ldrb r0, [r4, 0xA]
- bl RemoveWindow
- adds r0, r5, 0
- bl DestroyTask
- bl EnableBothScriptContexts
-_080712B4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end c3_080469FC
-
- thumb_func_start sub_80712C0
-sub_80712C0: @ 80712C0
- push {r4,r5,lr}
- sub sp, 0x18
- ldr r0, =gUnknown_0832B6C0
- bl AddWindow
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0
- bl sub_81973FC
- mov r1, sp
- ldr r0, =gUnknown_0832B6E0
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- mov r0, sp
- strb r4, [r0, 0x10]
- movs r1, 0
- movs r2, 0
- bl ListMenuInit
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- adds r0, r4, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, =c3_080469FC
- movs r1, 0x3
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r5, [r1, 0x8]
- strh r4, [r1, 0xA]
- add sp, 0x18
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80712C0
-
- thumb_func_start sub_8071330
-sub_8071330: @ 8071330
- push {lr}
- bl sub_81B9328
- ldr r1, =gMain
- ldr r0, =c2_exit_to_overworld_2_switch
- str r0, [r1, 0x8]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8071330
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s
index 7ce989d94..b85c6de07 100644
--- a/asm/field_control_avatar.s
+++ b/asm/field_control_avatar.s
@@ -1390,7 +1390,7 @@ _0809CA04:
b _0809CB28
.pool
_0809CA48:
- bl sub_8070BD0
+ bl DoEggActions_CheckHatch
lsls r0, 24
cmp r0, 0
beq _0809CA64
diff --git a/asm/field_effect.s b/asm/field_effect.s
index 964bf8079..bfa563af1 100644
--- a/asm/field_effect.s
+++ b/asm/field_effect.s
@@ -1988,7 +1988,7 @@ task00_8084310: @ 80B6A24
lsls r0, 24
cmp r0, 0
beq _080B6A8A
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
diff --git a/asm/fldeff_80F9BCC.s b/asm/fldeff_80F9BCC.s
index 7ebf0bfa8..efdc114a2 100644
--- a/asm/fldeff_80F9BCC.s
+++ b/asm/fldeff_80F9BCC.s
@@ -642,7 +642,7 @@ _080FA0C4:
thumb_func_start sub_80FA0DC
sub_80FA0DC: @ 80FA0DC
push {lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
@@ -777,7 +777,7 @@ sub_80FA1D8: @ 80FA1D8
thumb_func_start sub_80FA1E8
sub_80FA1E8: @ 80FA1E8
push {lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
@@ -950,7 +950,7 @@ sub_80FA33C: @ 80FA33C
thumb_func_start sub_80FA34C
sub_80FA34C: @ 80FA34C
push {lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
diff --git a/asm/fldeff_cut.s b/asm/fldeff_cut.s
index 5e2a99d18..71137b705 100755
--- a/asm/fldeff_cut.s
+++ b/asm/fldeff_cut.s
@@ -32,7 +32,7 @@ _080D3754:
ldr r0, =gUnknown_0203AB40
adds r1, r0, 0x2
bl PlayerGetDestCoords
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -384,7 +384,7 @@ hm2_ruin_valley: @ 80D3A50
push {lr}
movs r0, 0x1
bl FieldEffectStart
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
@@ -420,7 +420,7 @@ sub_80D3A6C: @ 80D3A6C
thumb_func_start sub_80D3A9C
sub_80D3A9C: @ 80D3A9C
push {lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
diff --git a/asm/fldeff_softboiled.s b/asm/fldeff_softboiled.s
index 48d968d20..c3aa4f1ed 100755
--- a/asm/fldeff_softboiled.s
+++ b/asm/fldeff_softboiled.s
@@ -8,7 +8,7 @@
thumb_func_start hm_prepare_dive_probably
hm_prepare_dive_probably: @ 8161508
push {r4-r6,lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
movs r6, 0x64
@@ -20,7 +20,7 @@ hm_prepare_dive_probably: @ 8161508
adds r5, r0, 0
lsls r5, 16
lsrs r5, 16
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
muls r0, r6
@@ -59,7 +59,7 @@ sub_8161560: @ 8161560
strb r1, [r0, 0xB]
ldrb r1, [r0, 0x9]
strb r1, [r0, 0xA]
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
diff --git a/asm/fldeff_strength.s b/asm/fldeff_strength.s
index 3001ca259..53a088aa3 100644
--- a/asm/fldeff_strength.s
+++ b/asm/fldeff_strength.s
@@ -18,7 +18,7 @@ hm_prepare_rocksmash: @ 8145DC4
b _08145DF2
_08145DD8:
ldr r4, =gSpecialVar_Result
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
strh r0, [r4]
@@ -39,7 +39,7 @@ _08145DF2:
thumb_func_start sub_8145E0C
sub_8145E0C: @ 8145E0C
push {lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
diff --git a/asm/fldeff_sweetscent.s b/asm/fldeff_sweetscent.s
index 9510ca4a0..eea0df12f 100644
--- a/asm/fldeff_sweetscent.s
+++ b/asm/fldeff_sweetscent.s
@@ -23,7 +23,7 @@ hm2_sweet_scent: @ 8159F10
push {lr}
movs r0, 0x33
bl FieldEffectStart
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
diff --git a/asm/fldeff_teleport.s b/asm/fldeff_teleport.s
index d77e29dd2..17bab1496 100644
--- a/asm/fldeff_teleport.s
+++ b/asm/fldeff_teleport.s
@@ -38,7 +38,7 @@ hm_teleport_run_dp02scr: @ 817C8FC
bl sub_808469C
movs r0, 0x3F
bl FieldEffectStart
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
diff --git a/asm/link.s b/asm/link.s
index c1ab6c434..d2dc05630 100644
--- a/asm/link.s
+++ b/asm/link.s
@@ -21515,7 +21515,7 @@ _08014714:
movs r1, 0x5
movs r2, 0x1
bl sub_8014290
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
ldr r1, =c2_load_new_map
@@ -21536,7 +21536,7 @@ _0801474C:
movs r1, 0x5
movs r2, 0x1
bl sub_8014290
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
ldr r1, =c2_load_new_map
@@ -23406,7 +23406,7 @@ _080158E0:
ldrh r0, [r4]
cmp r0, 0
beq _080159A0
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r5, r0, 24
ldrh r0, [r4]
@@ -23434,7 +23434,7 @@ _08015900:
b _0801598E
.pool
_0801592C:
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
adds r1, r4, 0
@@ -23468,7 +23468,7 @@ _0801596C:
ldr r1, =gUnknown_02022C2C
movs r0, 0x44
strb r0, [r1]
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
adds r1, r4, 0
diff --git a/asm/mail_data.s b/asm/mail_data.s
index 94cb3e9e6..70fc856d1 100755
--- a/asm/mail_data.s
+++ b/asm/mail_data.s
@@ -18,7 +18,7 @@ _080D4372:
adds r1, r0
ldr r0, [r5]
adds r0, r1
- bl sub_80D439C
+ bl ClearMailStruct
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
@@ -30,8 +30,8 @@ _080D4372:
.pool
thumb_func_end ClearMailData
- thumb_func_start sub_80D439C
-sub_80D439C: @ 80D439C
+ thumb_func_start ClearMailStruct
+ClearMailStruct: @ 80D439C
push {r4-r6,lr}
adds r3, r0, 0
ldr r0, =0x0000ffff
@@ -76,10 +76,10 @@ _080D43D6:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80D439C
+ thumb_func_end ClearMailStruct
- thumb_func_start sub_80D43F0
-sub_80D43F0: @ 80D43F0
+ thumb_func_start MonHasMail
+MonHasMail: @ 80D43F0
push {r4,lr}
adds r4, r0, 0
movs r1, 0xC
@@ -103,7 +103,7 @@ _080D441A:
pop {r4}
pop {r1}
bx r1
- thumb_func_end sub_80D43F0
+ thumb_func_end MonHasMail
thumb_func_start sub_80D4420
sub_80D4420: @ 80D4420
@@ -349,8 +349,8 @@ _080D4606:
bx r1
thumb_func_end sub_80D45E8
- thumb_func_start sub_80D460C
-sub_80D460C: @ 80D460C
+ thumb_func_start GiveMailToMon2
+GiveMailToMon2: @ 80D460C
push {r4-r7,lr}
sub sp, 0x8
adds r6, r0, 0
@@ -401,7 +401,7 @@ _080D4672:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end sub_80D460C
+ thumb_func_end GiveMailToMon2
thumb_func_start sub_80D467C
sub_80D467C: @ 80D467C
@@ -409,12 +409,12 @@ sub_80D467C: @ 80D467C
bx lr
thumb_func_end sub_80D467C
- thumb_func_start sub_80D4680
-sub_80D4680: @ 80D4680
+ thumb_func_start TakeMailFromMon
+TakeMailFromMon: @ 80D4680
push {r4,lr}
sub sp, 0x8
adds r4, r0, 0
- bl sub_80D43F0
+ bl MonHasMail
lsls r0, 24
cmp r0, 0
beq _080D46D2
@@ -454,7 +454,7 @@ _080D46D2:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80D4680
+ thumb_func_end TakeMailFromMon
thumb_func_start sub_80D46E0
sub_80D46E0: @ 80D46E0
diff --git a/asm/mystery_event_script.s b/asm/mystery_event_script.s
index ce8591981..fbcc5f036 100644
--- a/asm/mystery_event_script.s
+++ b/asm/mystery_event_script.s
@@ -727,9 +727,9 @@ _08153D86:
beq _08153DA4
adds r0, r7, 0
mov r1, sp
- bl sub_80D460C
+ bl GiveMailToMon2
_08153DA4:
- bl party_compaction
+ bl CompactPartySlots
bl CalculatePlayerPartyCount
ldr r0, =gStringVar4
ldr r1, =gUnknown_08674BF0
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 0e6267b0d..018ee7b84 100755
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -2111,13 +2111,13 @@ _081B134C:
bx r0
thumb_func_end c3_0811FAB4
- thumb_func_start brm_get_pokemon_selection
-brm_get_pokemon_selection: @ 81B1354
+ thumb_func_start GetCursorSelectionMonId
+GetCursorSelectionMonId: @ 81B1354
ldr r0, =gUnknown_0203CEC8
ldrb r0, [r0, 0x9]
bx lr
.pool
- thumb_func_end brm_get_pokemon_selection
+ thumb_func_end GetCursorSelectionMonId
thumb_func_start sub_81B1360
sub_81B1360: @ 81B1360
@@ -8140,7 +8140,7 @@ sub_81B4578: @ 81B4578
cmp r7, 0
bne _081B45F8
adds r0, r5, 0
- bl sub_80D4680
+ bl TakeMailFromMon
ldr r4, =gUnknown_0203CEFC
adds r0, r5, 0
movs r1, 0xC
@@ -8925,7 +8925,7 @@ _081B4CBE:
ldrsb r0, [r1, r0]
muls r0, r7
adds r0, r6
- bl sub_80D4680
+ bl TakeMailFromMon
ldr r0, =gText_MailTakenFromPkmn
movs r1, 0
bl sub_81B1B5C
@@ -10134,7 +10134,7 @@ _081B57FE:
thumb_func_start hm_surf_run_dp02scr
hm_surf_run_dp02scr: @ 81B5804
push {lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
@@ -10238,7 +10238,7 @@ sub_81B58A8: @ 81B58A8
thumb_func_start hm2_waterfall
hm2_waterfall: @ 81B58D4
push {lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
@@ -10298,7 +10298,7 @@ _081B594E:
thumb_func_start sub_81B5958
sub_81B5958: @ 81B5958
push {lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
@@ -14938,7 +14938,7 @@ sub_81B81A8: @ 81B81A8
cmp r0, 0
bne _081B8208
adds r0, r5, 0
- bl sub_80D4680
+ bl TakeMailFromMon
ldr r4, =gUnknown_0203CEFC
adds r0, r5, 0
movs r1, 0xC
@@ -15281,9 +15281,9 @@ sub_81B8474: @ 81B8474
_081B84DC:
adds r0, r5, 0
adds r1, r4, 0
- bl sub_80D460C
+ bl GiveMailToMon2
adds r0, r4, 0
- bl sub_80D439C
+ bl ClearMailStruct
ldr r0, =gText_MailTransferredFromMailbox
movs r1, 0x1
bl sub_81B1B5C
@@ -15994,7 +15994,7 @@ sub_81B8A7C: @ 81B8A7C
push {r4-r7,lr}
mov r7, r8
push {r7}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r5, r0, 24
bl sub_81B1250
@@ -17113,7 +17113,7 @@ sub_81B9354: @ 81B9354
sub_81B9390: @ 81B9390
push {r4,lr}
ldr r4, =gSpecialVar_0x8004
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
strh r0, [r4]
@@ -17218,7 +17218,7 @@ _081B945C:
thumb_func_start sub_81B9470
sub_81B9470: @ 81B9470
push {lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r2, =gUnknown_02039F24
strb r0, [r2]
lsls r0, 24
@@ -17345,7 +17345,7 @@ _081B9574:
sub_81B9588: @ 81B9588
push {r4,r5,lr}
ldr r5, =gSpecialVar_0x8004
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
strh r0, [r5]
diff --git a/asm/player_pc.s b/asm/player_pc.s
index 592cc0fe0..2287d4123 100644
--- a/asm/player_pc.s
+++ b/asm/player_pc.s
@@ -1444,7 +1444,7 @@ _0816BA68:
adds r0, r6, 0
bl DisplayItemMessageOnField
adds r0, r5, 0
- bl sub_80D439C
+ bl ClearMailStruct
bl sub_816B54C
ldrb r0, [r4, 0x5]
subs r0, 0x1
diff --git a/asm/pokemon_1.s b/asm/pokemon_1.s
index ed97cd672..15b4af009 100644
--- a/asm/pokemon_1.s
+++ b/asm/pokemon_1.s
@@ -1310,8 +1310,8 @@ _08068FF4:
bx r0
thumb_func_end CalculateMonStats
- thumb_func_start sub_8069004
-sub_8069004: @ 8069004
+ thumb_func_start BoxMonToMon
+BoxMonToMon: @ 8069004
push {r4,lr}
sub sp, 0x4
adds r2, r0, 0
@@ -1346,7 +1346,7 @@ sub_8069004: @ 8069004
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_8069004
+ thumb_func_end BoxMonToMon
thumb_func_start GetLevelFromMonExp
GetLevelFromMonExp: @ 8069054
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index f7941335d..94245f93b 100755
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -3323,7 +3323,7 @@ _080C8E38:
b _080C8EA0
.pool
_080C8E4C:
- bl party_compaction
+ bl CompactPartySlots
bl sub_80CB950
ldr r0, =gUnknown_02039D08
ldr r1, [r0]
@@ -3483,7 +3483,7 @@ _080C8FA4:
ldrb r0, [r0]
cmp r0, 0
beq _080C8FD0
- bl party_compaction
+ bl CompactPartySlots
bl sub_80CB950
b _080C905C
.pool
@@ -4237,7 +4237,7 @@ sub_80C9670: @ 80C9670
b _080C96AE
.pool
_080C9688:
- bl party_compaction
+ bl CompactPartySlots
bl sub_80CB950
ldr r1, [r4]
ldrb r0, [r1]
@@ -6351,7 +6351,7 @@ _080CA94C:
movs r1, 0
strb r1, [r0]
bl sub_80CBB9C
- bl party_compaction
+ bl CompactPartySlots
movs r0, 0x2
str r0, [sp]
movs r1, 0
@@ -13977,8 +13977,8 @@ _080CE900:
.pool
thumb_func_end sub_80CE8E4
- thumb_func_start party_compaction
-party_compaction: @ 80CE90C
+ thumb_func_start CompactPartySlots
+CompactPartySlots: @ 80CE90C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -14055,7 +14055,7 @@ _080CE992:
pop {r1}
bx r1
.pool
- thumb_func_end party_compaction
+ thumb_func_end CompactPartySlots
thumb_func_start sub_80CE9A8
sub_80CE9A8: @ 80CE9A8
@@ -20826,7 +20826,7 @@ sub_80D2054: @ 80D2054
lsls r1, 4
adds r0, r1
adds r1, r5, 0
- bl sub_8069004
+ bl BoxMonToMon
_080D2088:
pop {r4,r5}
pop {r0}
diff --git a/asm/record_mixing.s b/asm/record_mixing.s
index 7e9ea30d1..35e0557ee 100644
--- a/asm/record_mixing.s
+++ b/asm/record_mixing.s
@@ -3607,7 +3607,7 @@ sub_80E89F8: @ 80E89F8
ldr r1, =0x00003030
adds r0, r1
adds r1, r5, 0
- bl sub_806FA9C
+ bl InitDaycareMailRecordMixing
ldr r0, =gUnknown_03001148
ldr r1, [r0]
adds r0, r6, 0
diff --git a/asm/rom6.s b/asm/rom6.s
index 15c7acb95..f07689a86 100644
--- a/asm/rom6.s
+++ b/asm/rom6.s
@@ -263,7 +263,7 @@ sub_8135654: @ 8135654
cmp r0, 0
beq _0813568C
ldr r4, =gSpecialVar_Result
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
strh r0, [r4]
@@ -302,7 +302,7 @@ _081356AC:
thumb_func_start sub_81356C4
sub_81356C4: @ 81356C4
push {lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
@@ -379,7 +379,7 @@ hm2_dig: @ 8135760
bl flagmods_08054D70
movs r0, 0x26
bl FieldEffectStart
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
@@ -3334,7 +3334,7 @@ sub_81370FC: @ 81370FC
cmp r0, 0
beq _08137134
ldr r4, =gSpecialVar_Result
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
strh r0, [r4]
@@ -3380,7 +3380,7 @@ hm2_flash: @ 8137178
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
diff --git a/asm/script_pokemon_util_80F87D8.s b/asm/script_pokemon_util_80F87D8.s
index 0e002d19a..3a3cf4269 100644
--- a/asm/script_pokemon_util_80F87D8.s
+++ b/asm/script_pokemon_util_80F87D8.s
@@ -1343,7 +1343,7 @@ ScriptGiveEgg: @ 80F92C8
lsrs r1, 16
mov r0, sp
movs r2, 0x1
- bl sub_8070954
+ bl CreateEgg
add r2, sp, 0x64
movs r0, 0x1
strb r0, [r2]
diff --git a/asm/trade.s b/asm/trade.s
index 57253154e..cbf980b74 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -5112,7 +5112,7 @@ _08079DDE:
_08079DF0:
add r0, sp, 0xC
movs r1, 0
- bl sub_8070ECC
+ bl NameHasGenderSymbol
lsls r0, 24
movs r2, 0x83
cmp r0, 0
@@ -5122,7 +5122,7 @@ _08079DF0:
_08079E04:
add r0, sp, 0xC
movs r1, 0xFE
- bl sub_8070ECC
+ bl NameHasGenderSymbol
lsls r0, 24
movs r2, 0x83
cmp r0, 0
@@ -7948,7 +7948,7 @@ sub_807B4D0: @ 807B4D0
adds r1, r2
ldr r0, [r0]
adds r0, r1
- bl sub_80D439C
+ bl ClearMailStruct
_0807B52A:
ldr r4, =gUnknown_020322A0
ldr r0, [r4]
@@ -7985,7 +7985,7 @@ _0807B566:
ldr r0, =gUnknown_020321C0
adds r1, r0
adds r0, r7, 0
- bl sub_80D460C
+ bl GiveMailToMon2
_0807B57C:
mov r0, r9
bl sub_807B464
diff --git a/constants/flags.inc b/constants/flags.inc
index 0b375f9d6..2e4b60d73 100644
--- a/constants/flags.inc
+++ b/constants/flags.inc
@@ -131,7 +131,7 @@
.equiv FLAG_0x083, 0x83
.equiv FLAG_0x084, 0x84
.equiv FLAG_0x085, 0x85
- .equiv FLAG_0x086, 0x86
+ .equiv FLAG_PENDING_DAYCARE_EGG, 0x86
.equiv FLAG_0x087, 0x87
.equiv FLAG_0x088, 0x88
.equiv FLAG_0x089, 0x89
diff --git a/data/daycare.s b/data/daycare.s
deleted file mode 100644
index c249a668c..000000000
--- a/data/daycare.s
+++ /dev/null
@@ -1,24 +0,0 @@
-@ the third big chunk of data
-
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-
-
-@ 832ADD8
- .include "data/egg_moves.inc"
-
- .align 2
-gUnknown_0832B6C0:: @ 832B6C0
- .incbin "baserom.gba", 0x32b6c0, 0x20
-
-gUnknown_0832B6E0:: @ 832B6E0
- .incbin "baserom.gba", 0x32b6e0, 0x18
-
-gUnknown_0832B6F8:: @ 832B6F8
- .incbin "baserom.gba", 0x32b6f8, 0x10
-
-gEggName:: @ 832B708
- .string "タマゴ$" @ "tamago" ("egg" in Japanese)
diff --git a/data/egg_moves.inc b/data/egg_moves.inc
deleted file mode 100644
index 607f2aada..000000000
--- a/data/egg_moves.inc
+++ /dev/null
@@ -1,1306 +0,0 @@
- .align 2
-gEggMoves:: @ 832ADD8
- egg_moves_begin SPECIES_BULBASAUR
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_SKULL_BASH
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_CHARM
- .2byte MOVE_PETAL_DANCE
- .2byte MOVE_MAGICAL_LEAF
- .2byte MOVE_GRASS_WHISTLE
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_CHARMANDER
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_BITE
- .2byte MOVE_OUTRAGE
- .2byte MOVE_BEAT_UP
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_DRAGON_DANCE
-
- egg_moves_begin SPECIES_SQUIRTLE
- .2byte MOVE_MIRROR_COAT
- .2byte MOVE_HAZE
- .2byte MOVE_MIST
- .2byte MOVE_FORESIGHT
- .2byte MOVE_FLAIL
- .2byte MOVE_REFRESH
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_YAWN
-
- egg_moves_begin SPECIES_PIDGEY
- .2byte MOVE_PURSUIT
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_FORESIGHT
- .2byte MOVE_STEEL_WING
- .2byte MOVE_AIR_CUTTER
-
- egg_moves_begin SPECIES_RATTATA
- .2byte MOVE_SCREECH
- .2byte MOVE_FLAME_WHEEL
- .2byte MOVE_FURY_SWIPES
- .2byte MOVE_BITE
- .2byte MOVE_COUNTER
- .2byte MOVE_REVERSAL
- .2byte MOVE_UPROAR
- .2byte MOVE_SWAGGER
-
- egg_moves_begin SPECIES_SPEAROW
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_FALSE_SWIPE
- .2byte MOVE_SCARY_FACE
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_TRI_ATTACK
- .2byte MOVE_ASTONISH
- .2byte MOVE_SKY_ATTACK
-
- egg_moves_begin SPECIES_EKANS
- .2byte MOVE_PURSUIT
- .2byte MOVE_SLAM
- .2byte MOVE_SPITE
- .2byte MOVE_BEAT_UP
- .2byte MOVE_POISON_FANG
-
- egg_moves_begin SPECIES_SANDSHREW
- .2byte MOVE_FLAIL
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_COUNTER
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_METAL_CLAW
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_CRUSH_CLAW
-
- egg_moves_begin SPECIES_NIDORAN_F
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_DISABLE
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_CHARM
- .2byte MOVE_COUNTER
- .2byte MOVE_BEAT_UP
-
- egg_moves_begin SPECIES_NIDORAN_M
- .2byte MOVE_COUNTER
- .2byte MOVE_DISABLE
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_AMNESIA
- .2byte MOVE_CONFUSION
- .2byte MOVE_BEAT_UP
-
- egg_moves_begin SPECIES_VULPIX
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_FLAIL
- .2byte MOVE_SPITE
- .2byte MOVE_DISABLE
- .2byte MOVE_HOWL
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_HEAT_WAVE
-
- egg_moves_begin SPECIES_ZUBAT
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_PURSUIT
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_GUST
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_ODDISH
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_RAZOR_LEAF
- .2byte MOVE_FLAIL
- .2byte MOVE_SYNTHESIS
- .2byte MOVE_CHARM
- .2byte MOVE_INGRAIN
-
- egg_moves_begin SPECIES_PARAS
- .2byte MOVE_FALSE_SWIPE
- .2byte MOVE_SCREECH
- .2byte MOVE_COUNTER
- .2byte MOVE_PSYBEAM
- .2byte MOVE_FLAIL
- .2byte MOVE_SWEET_SCENT
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_PURSUIT
-
- egg_moves_begin SPECIES_VENONAT
- .2byte MOVE_BATON_PASS
- .2byte MOVE_SCREECH
- .2byte MOVE_GIGA_DRAIN
- .2byte MOVE_SIGNAL_BEAM
-
- egg_moves_begin SPECIES_DIGLETT
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_SCREECH
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_PURSUIT
- .2byte MOVE_BEAT_UP
- .2byte MOVE_UPROAR
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_MEOWTH
- .2byte MOVE_SPITE
- .2byte MOVE_CHARM
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_AMNESIA
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_ASSIST
-
- egg_moves_begin SPECIES_PSYDUCK
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_PSYBEAM
- .2byte MOVE_FORESIGHT
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_PSYCHIC
- .2byte MOVE_CROSS_CHOP
- .2byte MOVE_REFRESH
-
- egg_moves_begin SPECIES_MANKEY
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_FORESIGHT
- .2byte MOVE_MEDITATE
- .2byte MOVE_COUNTER
- .2byte MOVE_REVERSAL
- .2byte MOVE_BEAT_UP
- .2byte MOVE_REVENGE
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_GROWLITHE
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_CRUNCH
- .2byte MOVE_THRASH
- .2byte MOVE_FIRE_SPIN
- .2byte MOVE_HOWL
- .2byte MOVE_HEAT_WAVE
-
- egg_moves_begin SPECIES_POLIWAG
- .2byte MOVE_MIST
- .2byte MOVE_SPLASH
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_HAZE
- .2byte MOVE_MIND_READER
- .2byte MOVE_WATER_SPORT
- .2byte MOVE_ICE_BALL
-
- egg_moves_begin SPECIES_ABRA
- .2byte MOVE_ENCORE
- .2byte MOVE_BARRIER
- .2byte MOVE_KNOCK_OFF
- .2byte MOVE_FIRE_PUNCH
- .2byte MOVE_THUNDER_PUNCH
- .2byte MOVE_ICE_PUNCH
-
- egg_moves_begin SPECIES_MACHOP
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_MEDITATE
- .2byte MOVE_ROLLING_KICK
- .2byte MOVE_ENCORE
- .2byte MOVE_SMELLING_SALT
- .2byte MOVE_COUNTER
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_BELLSPROUT
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_ENCORE
- .2byte MOVE_REFLECT
- .2byte MOVE_SYNTHESIS
- .2byte MOVE_LEECH_LIFE
- .2byte MOVE_INGRAIN
- .2byte MOVE_MAGICAL_LEAF
-
- egg_moves_begin SPECIES_TENTACOOL
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_MIRROR_COAT
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_HAZE
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_CONFUSE_RAY
-
- egg_moves_begin SPECIES_GEODUDE
- .2byte MOVE_MEGA_PUNCH
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_BLOCK
-
- egg_moves_begin SPECIES_PONYTA
- .2byte MOVE_FLAME_WHEEL
- .2byte MOVE_THRASH
- .2byte MOVE_DOUBLE_KICK
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_CHARM
- .2byte MOVE_DOUBLE_EDGE
-
- egg_moves_begin SPECIES_SLOWPOKE
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_STOMP
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_SNORE
-
- egg_moves_begin SPECIES_FARFETCH_D
- .2byte MOVE_STEEL_WING
- .2byte MOVE_FORESIGHT
- .2byte MOVE_MIRROR_MOVE
- .2byte MOVE_GUST
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_FLAIL
- .2byte MOVE_FEATHER_DANCE
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_DODUO
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_HAZE
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_FLAIL
- .2byte MOVE_ENDEAVOR
-
- egg_moves_begin SPECIES_SEEL
- .2byte MOVE_LICK
- .2byte MOVE_PERISH_SONG
- .2byte MOVE_DISABLE
- .2byte MOVE_HORN_DRILL
- .2byte MOVE_SLAM
- .2byte MOVE_ENCORE
- .2byte MOVE_FAKE_OUT
- .2byte MOVE_ICICLE_SPEAR
-
- egg_moves_begin SPECIES_GRIMER
- .2byte MOVE_HAZE
- .2byte MOVE_MEAN_LOOK
- .2byte MOVE_LICK
- .2byte MOVE_IMPRISON
- .2byte MOVE_CURSE
- .2byte MOVE_SHADOW_PUNCH
- .2byte MOVE_EXPLOSION
-
- egg_moves_begin SPECIES_SHELLDER
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_BARRIER
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_SCREECH
- .2byte MOVE_ICICLE_SPEAR
-
- egg_moves_begin SPECIES_GASTLY
- .2byte MOVE_PSYWAVE
- .2byte MOVE_PERISH_SONG
- .2byte MOVE_HAZE
- .2byte MOVE_ASTONISH
- .2byte MOVE_WILL_O_WISP
- .2byte MOVE_GRUDGE
- .2byte MOVE_EXPLOSION
-
- egg_moves_begin SPECIES_ONIX
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_FLAIL
- .2byte MOVE_EXPLOSION
- .2byte MOVE_BLOCK
-
- egg_moves_begin SPECIES_DROWZEE
- .2byte MOVE_BARRIER
- .2byte MOVE_ASSIST
- .2byte MOVE_ROLE_PLAY
- .2byte MOVE_FIRE_PUNCH
- .2byte MOVE_THUNDER_PUNCH
- .2byte MOVE_ICE_PUNCH
-
- egg_moves_begin SPECIES_KRABBY
- .2byte MOVE_DIG
- .2byte MOVE_HAZE
- .2byte MOVE_AMNESIA
- .2byte MOVE_FLAIL
- .2byte MOVE_SLAM
- .2byte MOVE_KNOCK_OFF
- .2byte MOVE_SWORDS_DANCE
-
- egg_moves_begin SPECIES_EXEGGCUTE
- .2byte MOVE_SYNTHESIS
- .2byte MOVE_MOONLIGHT
- .2byte MOVE_REFLECT
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_INGRAIN
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_CUBONE
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_SCREECH
- .2byte MOVE_SKULL_BASH
- .2byte MOVE_PERISH_SONG
- .2byte MOVE_SWORDS_DANCE
-
- egg_moves_begin SPECIES_LICKITUNG
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_MAGNITUDE
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_CURSE
- .2byte MOVE_SMELLING_SALT
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_SNORE
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_KOFFING
- .2byte MOVE_SCREECH
- .2byte MOVE_PSYWAVE
- .2byte MOVE_PSYBEAM
- .2byte MOVE_DESTINY_BOND
- .2byte MOVE_PAIN_SPLIT
- .2byte MOVE_WILL_O_WISP
-
- egg_moves_begin SPECIES_RHYHORN
- .2byte MOVE_CRUNCH
- .2byte MOVE_REVERSAL
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_COUNTER
- .2byte MOVE_MAGNITUDE
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_CURSE
- .2byte MOVE_CRUSH_CLAW
-
- egg_moves_begin SPECIES_CHANSEY
- .2byte MOVE_PRESENT
- .2byte MOVE_METRONOME
- .2byte MOVE_HEAL_BELL
- .2byte MOVE_AROMATHERAPY
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_TANGELA
- .2byte MOVE_FLAIL
- .2byte MOVE_CONFUSION
- .2byte MOVE_MEGA_DRAIN
- .2byte MOVE_REFLECT
- .2byte MOVE_AMNESIA
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_NATURE_POWER
-
- egg_moves_begin SPECIES_KANGASKHAN
- .2byte MOVE_STOMP
- .2byte MOVE_FORESIGHT
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_DISABLE
- .2byte MOVE_COUNTER
- .2byte MOVE_CRUSH_CLAW
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_HORSEA
- .2byte MOVE_FLAIL
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_OCTAZOOKA
- .2byte MOVE_DISABLE
- .2byte MOVE_SPLASH
- .2byte MOVE_DRAGON_RAGE
- .2byte MOVE_DRAGON_BREATH
-
- egg_moves_begin SPECIES_GOLDEEN
- .2byte MOVE_PSYBEAM
- .2byte MOVE_HAZE
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_MUD_SPORT
-
- egg_moves_begin SPECIES_MR_MIME
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_MIMIC
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_FAKE_OUT
- .2byte MOVE_TRICK
-
- egg_moves_begin SPECIES_SCYTHER
- .2byte MOVE_COUNTER
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_BATON_PASS
- .2byte MOVE_RAZOR_WIND
- .2byte MOVE_REVERSAL
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_ENDURE
- .2byte MOVE_SILVER_WIND
-
- egg_moves_begin SPECIES_PINSIR
- .2byte MOVE_FURY_ATTACK
- .2byte MOVE_FLAIL
- .2byte MOVE_FALSE_SWIPE
- .2byte MOVE_FAINT_ATTACK
-
- egg_moves_begin SPECIES_LAPRAS
- .2byte MOVE_FORESIGHT
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_TICKLE
- .2byte MOVE_REFRESH
- .2byte MOVE_DRAGON_DANCE
- .2byte MOVE_CURSE
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_HORN_DRILL
-
- egg_moves_begin SPECIES_EEVEE
- .2byte MOVE_CHARM
- .2byte MOVE_FLAIL
- .2byte MOVE_ENDURE
- .2byte MOVE_CURSE
- .2byte MOVE_TICKLE
- .2byte MOVE_WISH
-
- egg_moves_begin SPECIES_OMANYTE
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_SLAM
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_HAZE
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_SPIKES
-
- egg_moves_begin SPECIES_KABUTO
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_DIG
- .2byte MOVE_FLAIL
- .2byte MOVE_KNOCK_OFF
- .2byte MOVE_CONFUSE_RAY
-
- egg_moves_begin SPECIES_AERODACTYL
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_PURSUIT
- .2byte MOVE_FORESIGHT
- .2byte MOVE_STEEL_WING
- .2byte MOVE_DRAGON_BREATH
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_SNORLAX
- .2byte MOVE_LICK
- .2byte MOVE_CHARM
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_CURSE
- .2byte MOVE_FISSURE
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_DRATINI
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_MIST
- .2byte MOVE_HAZE
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_DRAGON_BREATH
- .2byte MOVE_DRAGON_DANCE
-
- egg_moves_begin SPECIES_CHIKORITA
- .2byte MOVE_VINE_WHIP
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_COUNTER
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_FLAIL
- .2byte MOVE_NATURE_POWER
- .2byte MOVE_INGRAIN
- .2byte MOVE_GRASS_WHISTLE
-
- egg_moves_begin SPECIES_CYNDAQUIL
- .2byte MOVE_FURY_SWIPES
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_REVERSAL
- .2byte MOVE_THRASH
- .2byte MOVE_FORESIGHT
- .2byte MOVE_COVET
- .2byte MOVE_HOWL
- .2byte MOVE_CRUSH_CLAW
-
- egg_moves_begin SPECIES_TOTODILE
- .2byte MOVE_CRUNCH
- .2byte MOVE_THRASH
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_WATER_SPORT
- .2byte MOVE_DRAGON_CLAW
-
- egg_moves_begin SPECIES_SENTRET
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_PURSUIT
- .2byte MOVE_SLASH
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_REVERSAL
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_TRICK
- .2byte MOVE_ASSIST
-
- egg_moves_begin SPECIES_HOOTHOOT
- .2byte MOVE_MIRROR_MOVE
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_WING_ATTACK
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_SKY_ATTACK
- .2byte MOVE_FEATHER_DANCE
-
- egg_moves_begin SPECIES_LEDYBA
- .2byte MOVE_PSYBEAM
- .2byte MOVE_BIDE
- .2byte MOVE_SILVER_WIND
-
- egg_moves_begin SPECIES_SPINARAK
- .2byte MOVE_PSYBEAM
- .2byte MOVE_DISABLE
- .2byte MOVE_SONIC_BOOM
- .2byte MOVE_BATON_PASS
- .2byte MOVE_PURSUIT
- .2byte MOVE_SIGNAL_BEAM
-
- egg_moves_begin SPECIES_CHINCHOU
- .2byte MOVE_FLAIL
- .2byte MOVE_SCREECH
- .2byte MOVE_AMNESIA
-
- egg_moves_begin SPECIES_PICHU
- .2byte MOVE_REVERSAL
- .2byte MOVE_BIDE
- .2byte MOVE_PRESENT
- .2byte MOVE_ENCORE
- .2byte MOVE_DOUBLE_SLAP
- .2byte MOVE_WISH
- .2byte MOVE_CHARGE
-
- egg_moves_begin SPECIES_CLEFFA
- .2byte MOVE_PRESENT
- .2byte MOVE_METRONOME
- .2byte MOVE_AMNESIA
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_SPLASH
- .2byte MOVE_MIMIC
- .2byte MOVE_WISH
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_IGGLYBUFF
- .2byte MOVE_PERISH_SONG
- .2byte MOVE_PRESENT
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_WISH
- .2byte MOVE_FAKE_TEARS
-
- egg_moves_begin SPECIES_TOGEPI
- .2byte MOVE_PRESENT
- .2byte MOVE_MIRROR_MOVE
- .2byte MOVE_PECK
- .2byte MOVE_FORESIGHT
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_PSYCH_UP
-
- egg_moves_begin SPECIES_NATU
- .2byte MOVE_HAZE
- .2byte MOVE_DRILL_PECK
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_STEEL_WING
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_FEATHER_DANCE
- .2byte MOVE_REFRESH
-
- egg_moves_begin SPECIES_MAREEP
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_SCREECH
- .2byte MOVE_REFLECT
- .2byte MOVE_ODOR_SLEUTH
- .2byte MOVE_CHARGE
-
- egg_moves_begin SPECIES_MARILL
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_PRESENT
- .2byte MOVE_AMNESIA
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_PERISH_SONG
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_SUDOWOODO
- .2byte MOVE_SELF_DESTRUCT
-
- egg_moves_begin SPECIES_HOPPIP
- .2byte MOVE_CONFUSION
- .2byte MOVE_ENCORE
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_REFLECT
- .2byte MOVE_AMNESIA
- .2byte MOVE_HELPING_HAND
- .2byte MOVE_PSYCH_UP
-
- egg_moves_begin SPECIES_AIPOM
- .2byte MOVE_COUNTER
- .2byte MOVE_SCREECH
- .2byte MOVE_PURSUIT
- .2byte MOVE_AGILITY
- .2byte MOVE_SPITE
- .2byte MOVE_SLAM
- .2byte MOVE_DOUBLE_SLAP
- .2byte MOVE_BEAT_UP
-
- egg_moves_begin SPECIES_SUNKERN
- .2byte MOVE_GRASS_WHISTLE
- .2byte MOVE_ENCORE
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_NATURE_POWER
- .2byte MOVE_CURSE
- .2byte MOVE_HELPING_HAND
-
- egg_moves_begin SPECIES_YANMA
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_REVERSAL
- .2byte MOVE_LEECH_LIFE
- .2byte MOVE_SIGNAL_BEAM
- .2byte MOVE_SILVER_WIND
-
- egg_moves_begin SPECIES_WOOPER
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_CURSE
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_STOCKPILE
- .2byte MOVE_SWALLOW
- .2byte MOVE_SPIT_UP
-
- egg_moves_begin SPECIES_MURKROW
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_DRILL_PECK
- .2byte MOVE_MIRROR_MOVE
- .2byte MOVE_WING_ATTACK
- .2byte MOVE_SKY_ATTACK
- .2byte MOVE_CONFUSE_RAY
- .2byte MOVE_FEATHER_DANCE
- .2byte MOVE_PERISH_SONG
-
- egg_moves_begin SPECIES_MISDREAVUS
- .2byte MOVE_SCREECH
- .2byte MOVE_DESTINY_BOND
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_IMPRISON
-
- egg_moves_begin SPECIES_GIRAFARIG
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_AMNESIA
- .2byte MOVE_FORESIGHT
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_BEAT_UP
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_WISH
- .2byte MOVE_MAGIC_COAT
-
- egg_moves_begin SPECIES_PINECO
- .2byte MOVE_REFLECT
- .2byte MOVE_PIN_MISSILE
- .2byte MOVE_FLAIL
- .2byte MOVE_SWIFT
- .2byte MOVE_COUNTER
- .2byte MOVE_SAND_TOMB
-
- egg_moves_begin SPECIES_DUNSPARCE
- .2byte MOVE_BIDE
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_BITE
- .2byte MOVE_HEADBUTT
- .2byte MOVE_ASTONISH
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_GLIGAR
- .2byte MOVE_METAL_CLAW
- .2byte MOVE_WING_ATTACK
- .2byte MOVE_RAZOR_WIND
- .2byte MOVE_COUNTER
- .2byte MOVE_SAND_TOMB
-
- egg_moves_begin SPECIES_SNUBBULL
- .2byte MOVE_METRONOME
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_REFLECT
- .2byte MOVE_PRESENT
- .2byte MOVE_CRUNCH
- .2byte MOVE_HEAL_BELL
- .2byte MOVE_SNORE
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_QWILFISH
- .2byte MOVE_FLAIL
- .2byte MOVE_HAZE
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_ASTONISH
-
- egg_moves_begin SPECIES_SHUCKLE
- .2byte MOVE_SWEET_SCENT
-
- egg_moves_begin SPECIES_HERACROSS
- .2byte MOVE_HARDEN
- .2byte MOVE_BIDE
- .2byte MOVE_FLAIL
- .2byte MOVE_FALSE_SWIPE
-
- egg_moves_begin SPECIES_SNEASEL
- .2byte MOVE_COUNTER
- .2byte MOVE_SPITE
- .2byte MOVE_FORESIGHT
- .2byte MOVE_REFLECT
- .2byte MOVE_BITE
- .2byte MOVE_CRUSH_CLAW
- .2byte MOVE_FAKE_OUT
-
- egg_moves_begin SPECIES_TEDDIURSA
- .2byte MOVE_CRUNCH
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_SEISMIC_TOSS
- .2byte MOVE_COUNTER
- .2byte MOVE_METAL_CLAW
- .2byte MOVE_FAKE_TEARS
- .2byte MOVE_YAWN
- .2byte MOVE_SLEEP_TALK
-
- egg_moves_begin SPECIES_SLUGMA
- .2byte MOVE_ACID_ARMOR
- .2byte MOVE_HEAT_WAVE
-
- egg_moves_begin SPECIES_SWINUB
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_BITE
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_MUD_SHOT
- .2byte MOVE_ICICLE_SPEAR
- .2byte MOVE_DOUBLE_EDGE
-
- egg_moves_begin SPECIES_CORSOLA
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_SCREECH
- .2byte MOVE_MIST
- .2byte MOVE_AMNESIA
- .2byte MOVE_BARRIER
- .2byte MOVE_INGRAIN
- .2byte MOVE_CONFUSE_RAY
- .2byte MOVE_ICICLE_SPEAR
-
- egg_moves_begin SPECIES_REMORAID
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_OCTAZOOKA
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_HAZE
- .2byte MOVE_SCREECH
- .2byte MOVE_THUNDER_WAVE
- .2byte MOVE_ROCK_BLAST
-
- egg_moves_begin SPECIES_DELIBIRD
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_SPLASH
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_ICE_BALL
-
- egg_moves_begin SPECIES_MANTINE
- .2byte MOVE_TWISTER
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_HAZE
- .2byte MOVE_SLAM
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_SKARMORY
- .2byte MOVE_DRILL_PECK
- .2byte MOVE_PURSUIT
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_SKY_ATTACK
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_HOUNDOUR
- .2byte MOVE_FIRE_SPIN
- .2byte MOVE_RAGE
- .2byte MOVE_PURSUIT
- .2byte MOVE_COUNTER
- .2byte MOVE_SPITE
- .2byte MOVE_REVERSAL
- .2byte MOVE_BEAT_UP
- .2byte MOVE_WILL_O_WISP
-
- egg_moves_begin SPECIES_PHANPY
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_SNORE
- .2byte MOVE_COUNTER
- .2byte MOVE_FISSURE
-
- egg_moves_begin SPECIES_STANTLER
- .2byte MOVE_SPITE
- .2byte MOVE_DISABLE
- .2byte MOVE_BITE
- .2byte MOVE_SWAGGER
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_EXTRASENSORY
-
- egg_moves_begin SPECIES_TYROGUE
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_HI_JUMP_KICK
- .2byte MOVE_MACH_PUNCH
- .2byte MOVE_MIND_READER
- .2byte MOVE_HELPING_HAND
-
- egg_moves_begin SPECIES_SMOOCHUM
- .2byte MOVE_MEDITATE
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_FAKE_OUT
- .2byte MOVE_WISH
- .2byte MOVE_ICE_PUNCH
-
- egg_moves_begin SPECIES_ELEKID
- .2byte MOVE_KARATE_CHOP
- .2byte MOVE_BARRIER
- .2byte MOVE_ROLLING_KICK
- .2byte MOVE_MEDITATE
- .2byte MOVE_CROSS_CHOP
- .2byte MOVE_FIRE_PUNCH
- .2byte MOVE_ICE_PUNCH
-
- egg_moves_begin SPECIES_MAGBY
- .2byte MOVE_KARATE_CHOP
- .2byte MOVE_MEGA_PUNCH
- .2byte MOVE_BARRIER
- .2byte MOVE_SCREECH
- .2byte MOVE_CROSS_CHOP
- .2byte MOVE_THUNDER_PUNCH
-
- egg_moves_begin SPECIES_MILTANK
- .2byte MOVE_PRESENT
- .2byte MOVE_REVERSAL
- .2byte MOVE_SEISMIC_TOSS
- .2byte MOVE_ENDURE
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_CURSE
- .2byte MOVE_HELPING_HAND
- .2byte MOVE_SLEEP_TALK
-
- egg_moves_begin SPECIES_LARVITAR
- .2byte MOVE_PURSUIT
- .2byte MOVE_STOMP
- .2byte MOVE_OUTRAGE
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_DRAGON_DANCE
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_TREECKO
- .2byte MOVE_CRUNCH
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_ENDEAVOR
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_DRAGON_BREATH
- .2byte MOVE_CRUSH_CLAW
-
- egg_moves_begin SPECIES_TORCHIC
- .2byte MOVE_COUNTER
- .2byte MOVE_REVERSAL
- .2byte MOVE_ENDURE
- .2byte MOVE_SWAGGER
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_MUDKIP
- .2byte MOVE_REFRESH
- .2byte MOVE_UPROAR
- .2byte MOVE_CURSE
- .2byte MOVE_STOMP
- .2byte MOVE_ICE_BALL
- .2byte MOVE_MIRROR_COAT
-
- egg_moves_begin SPECIES_POOCHYENA
- .2byte MOVE_ASTONISH
- .2byte MOVE_POISON_FANG
- .2byte MOVE_COVET
- .2byte MOVE_LEER
- .2byte MOVE_YAWN
-
- egg_moves_begin SPECIES_ZIGZAGOON
- .2byte MOVE_CHARM
- .2byte MOVE_PURSUIT
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_TICKLE
- .2byte MOVE_TRICK
-
- egg_moves_begin SPECIES_LOTAD
- .2byte MOVE_SYNTHESIS
- .2byte MOVE_RAZOR_LEAF
- .2byte MOVE_SWEET_SCENT
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_FLAIL
- .2byte MOVE_WATER_GUN
-
- egg_moves_begin SPECIES_SEEDOT
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_AMNESIA
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_RAZOR_WIND
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_FALSE_SWIPE
-
- egg_moves_begin SPECIES_NINCADA
- .2byte MOVE_ENDURE
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_GUST
- .2byte MOVE_SILVER_WIND
-
- egg_moves_begin SPECIES_TAILLOW
- .2byte MOVE_PURSUIT
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_REFRESH
- .2byte MOVE_MIRROR_MOVE
- .2byte MOVE_RAGE
- .2byte MOVE_SKY_ATTACK
-
- egg_moves_begin SPECIES_SHROOMISH
- .2byte MOVE_FAKE_TEARS
- .2byte MOVE_SWAGGER
- .2byte MOVE_CHARM
- .2byte MOVE_FALSE_SWIPE
- .2byte MOVE_HELPING_HAND
-
- egg_moves_begin SPECIES_SPINDA
- .2byte MOVE_ENCORE
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_ASSIST
- .2byte MOVE_DISABLE
- .2byte MOVE_BATON_PASS
- .2byte MOVE_WISH
- .2byte MOVE_TRICK
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_WINGULL
- .2byte MOVE_MIST
- .2byte MOVE_TWISTER
- .2byte MOVE_AGILITY
- .2byte MOVE_GUST
- .2byte MOVE_WATER_SPORT
-
- egg_moves_begin SPECIES_SURSKIT
- .2byte MOVE_FORESIGHT
- .2byte MOVE_MUD_SHOT
- .2byte MOVE_PSYBEAM
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_MIND_READER
-
- egg_moves_begin SPECIES_WAILMER
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_THRASH
- .2byte MOVE_SWAGGER
- .2byte MOVE_SNORE
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_CURSE
- .2byte MOVE_FISSURE
- .2byte MOVE_TICKLE
-
- egg_moves_begin SPECIES_SKITTY
- .2byte MOVE_HELPING_HAND
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_UPROAR
- .2byte MOVE_FAKE_TEARS
- .2byte MOVE_WISH
- .2byte MOVE_BATON_PASS
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_TICKLE
-
- egg_moves_begin SPECIES_KECLEON
- .2byte MOVE_DISABLE
- .2byte MOVE_MAGIC_COAT
- .2byte MOVE_TRICK
-
- egg_moves_begin SPECIES_NOSEPASS
- .2byte MOVE_MAGNITUDE
- .2byte MOVE_ROLLOUT
- .2byte MOVE_EXPLOSION
-
- egg_moves_begin SPECIES_TORKOAL
- .2byte MOVE_ERUPTION
- .2byte MOVE_ENDURE
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_YAWN
-
- egg_moves_begin SPECIES_SABLEYE
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_RECOVER
- .2byte MOVE_MOONLIGHT
-
- egg_moves_begin SPECIES_BARBOACH
- .2byte MOVE_THRASH
- .2byte MOVE_WHIRLPOOL
- .2byte MOVE_SPARK
-
- egg_moves_begin SPECIES_LUVDISC
- .2byte MOVE_SPLASH
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_WATER_SPORT
- .2byte MOVE_MUD_SPORT
-
- egg_moves_begin SPECIES_CORPHISH
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_ENDEAVOR
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_ANCIENT_POWER
-
- egg_moves_begin SPECIES_FEEBAS
- .2byte MOVE_MIRROR_COAT
- .2byte MOVE_DRAGON_BREATH
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_CONFUSE_RAY
-
- egg_moves_begin SPECIES_CARVANHA
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_THRASH
-
- egg_moves_begin SPECIES_TRAPINCH
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_GUST
-
- egg_moves_begin SPECIES_MAKUHITA
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_DETECT
- .2byte MOVE_FORESIGHT
- .2byte MOVE_HELPING_HAND
- .2byte MOVE_CROSS_CHOP
- .2byte MOVE_REVENGE
- .2byte MOVE_DYNAMIC_PUNCH
- .2byte MOVE_COUNTER
-
- egg_moves_begin SPECIES_ELECTRIKE
- .2byte MOVE_CRUNCH
- .2byte MOVE_HEADBUTT
- .2byte MOVE_UPROAR
- .2byte MOVE_CURSE
- .2byte MOVE_SWIFT
-
- egg_moves_begin SPECIES_NUMEL
- .2byte MOVE_HOWL
- .2byte MOVE_SCARY_FACE
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_ROLLOUT
- .2byte MOVE_DEFENSE_CURL
- .2byte MOVE_STOMP
-
- egg_moves_begin SPECIES_SPHEAL
- .2byte MOVE_WATER_SPORT
- .2byte MOVE_STOCKPILE
- .2byte MOVE_SWALLOW
- .2byte MOVE_SPIT_UP
- .2byte MOVE_YAWN
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_CURSE
- .2byte MOVE_FISSURE
-
- egg_moves_begin SPECIES_CACNEA
- .2byte MOVE_GRASS_WHISTLE
- .2byte MOVE_ACID
- .2byte MOVE_TEETER_DANCE
- .2byte MOVE_DYNAMIC_PUNCH
- .2byte MOVE_COUNTER
-
- egg_moves_begin SPECIES_SNORUNT
- .2byte MOVE_BLOCK
- .2byte MOVE_SPIKES
-
- egg_moves_begin SPECIES_AZURILL
- .2byte MOVE_ENCORE
- .2byte MOVE_SING
- .2byte MOVE_REFRESH
- .2byte MOVE_SLAM
- .2byte MOVE_TICKLE
-
- egg_moves_begin SPECIES_SPOINK
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_EXTRASENSORY
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_TRICK
-
- egg_moves_begin SPECIES_PLUSLE
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_WISH
-
- egg_moves_begin SPECIES_MINUN
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_WISH
-
- egg_moves_begin SPECIES_MAWILE
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_FALSE_SWIPE
- .2byte MOVE_POISON_FANG
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_TICKLE
-
- egg_moves_begin SPECIES_MEDITITE
- .2byte MOVE_FIRE_PUNCH
- .2byte MOVE_THUNDER_PUNCH
- .2byte MOVE_ICE_PUNCH
- .2byte MOVE_FORESIGHT
- .2byte MOVE_FAKE_OUT
- .2byte MOVE_BATON_PASS
- .2byte MOVE_DYNAMIC_PUNCH
-
- egg_moves_begin SPECIES_SWABLU
- .2byte MOVE_AGILITY
- .2byte MOVE_HAZE
- .2byte MOVE_PURSUIT
- .2byte MOVE_RAGE
-
- egg_moves_begin SPECIES_DUSKULL
- .2byte MOVE_IMPRISON
- .2byte MOVE_DESTINY_BOND
- .2byte MOVE_PAIN_SPLIT
- .2byte MOVE_GRUDGE
- .2byte MOVE_MEMENTO
- .2byte MOVE_FAINT_ATTACK
-
- egg_moves_begin SPECIES_ROSELIA
- .2byte MOVE_SPIKES
- .2byte MOVE_SYNTHESIS
- .2byte MOVE_PIN_MISSILE
- .2byte MOVE_COTTON_SPORE
-
- egg_moves_begin SPECIES_SLAKOTH
- .2byte MOVE_PURSUIT
- .2byte MOVE_SLASH
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_SNORE
- .2byte MOVE_CRUSH_CLAW
- .2byte MOVE_CURSE
- .2byte MOVE_SLEEP_TALK
-
- egg_moves_begin SPECIES_GULPIN
- .2byte MOVE_DREAM_EATER
- .2byte MOVE_ACID_ARMOR
- .2byte MOVE_SMOG
- .2byte MOVE_PAIN_SPLIT
-
- egg_moves_begin SPECIES_TROPIUS
- .2byte MOVE_HEADBUTT
- .2byte MOVE_SLAM
- .2byte MOVE_RAZOR_WIND
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_NATURE_POWER
-
- egg_moves_begin SPECIES_WHISMUR
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_SNORE
- .2byte MOVE_SWAGGER
- .2byte MOVE_EXTRASENSORY
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_CLAMPERL
- .2byte MOVE_REFRESH
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_BARRIER
- .2byte MOVE_CONFUSE_RAY
-
- egg_moves_begin SPECIES_ABSOL
- .2byte MOVE_BATON_PASS
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_MAGIC_COAT
- .2byte MOVE_CURSE
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_SHUPPET
- .2byte MOVE_DISABLE
- .2byte MOVE_DESTINY_BOND
- .2byte MOVE_FORESIGHT
- .2byte MOVE_ASTONISH
- .2byte MOVE_IMPRISON
-
- egg_moves_begin SPECIES_SEVIPER
- .2byte MOVE_STOCKPILE
- .2byte MOVE_SWALLOW
- .2byte MOVE_SPIT_UP
- .2byte MOVE_BODY_SLAM
-
- egg_moves_begin SPECIES_ZANGOOSE
- .2byte MOVE_FLAIL
- .2byte MOVE_DOUBLE_KICK
- .2byte MOVE_RAZOR_WIND
- .2byte MOVE_COUNTER
- .2byte MOVE_ROAR
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_RELICANTH
- .2byte MOVE_MAGNITUDE
- .2byte MOVE_SKULL_BASH
- .2byte MOVE_WATER_SPORT
- .2byte MOVE_AMNESIA
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_ARON
- .2byte MOVE_ENDEAVOR
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_STOMP
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_CASTFORM
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_PSYCH_UP
-
- egg_moves_begin SPECIES_VOLBEAT
- .2byte MOVE_BATON_PASS
- .2byte MOVE_SILVER_WIND
- .2byte MOVE_TRICK
-
- egg_moves_begin SPECIES_ILLUMISE
- .2byte MOVE_BATON_PASS
- .2byte MOVE_SILVER_WIND
- .2byte MOVE_GROWTH
-
- egg_moves_begin SPECIES_LILEEP
- .2byte MOVE_BARRIER
- .2byte MOVE_RECOVER
- .2byte MOVE_MIRROR_COAT
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_ANORITH
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_KNOCK_OFF
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_RALTS
- .2byte MOVE_DISABLE
- .2byte MOVE_WILL_O_WISP
- .2byte MOVE_MEAN_LOOK
- .2byte MOVE_MEMENTO
- .2byte MOVE_DESTINY_BOND
-
- egg_moves_begin SPECIES_BAGON
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_THRASH
- .2byte MOVE_DRAGON_RAGE
- .2byte MOVE_TWISTER
- .2byte MOVE_DRAGON_DANCE
-
- egg_moves_begin SPECIES_CHIMECHO
- .2byte MOVE_DISABLE
- .2byte MOVE_CURSE
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_DREAM_EATER
-
- .2byte -1
diff --git a/data/scripts/day_care.inc b/data/scripts/day_care.inc
index a7000460b..27e617128 100644
--- a/data/scripts/day_care.inc
+++ b/data/scripts/day_care.inc
@@ -1,8 +1,8 @@
Route117_EventScript_291C18:: @ 8291C18
lock
faceplayer
- special sp0B5_daycare
- specialvar VAR_RESULT, sp0B6_daycare
+ special GetDaycareMonNicknames
+ specialvar VAR_RESULT, GetDaycareState
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_EventScript_291C4D
compare_var_to_value VAR_RESULT, 2
@@ -21,8 +21,8 @@ Route117_EventScript_291C4D:: @ 8291C4D
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_EventScript_291C83
msgbox Route117_Text_292149, 4
- clearflag FLAG_0x086
- special sub_8070728
+ clearflag FLAG_PENDING_DAYCARE_EGG
+ special RejectEggFromDayCare
release
end
@@ -40,8 +40,8 @@ Route117_EventScript_291C9D:: @ 8291C9D
waitfanfare
waitbuttonpress
msgbox Route117_Text_2921CF, 4
- special sp0B8_daycare
- clearflag FLAG_0x086
+ special GiveEggFromDaycare
+ clearflag FLAG_PENDING_DAYCARE_EGG
release
end
@@ -56,7 +56,7 @@ Route117_EventScript_291CC8:: @ 8291CC8
return
Route117_EventScript_291CD1:: @ 8291CD1
- special sp0B5_daycare
+ special GetDaycareMonNicknames
msgbox Route117_Text_292114, 4
setvar VAR_0x8004, 0
call Route117_EventScript_291CB7
@@ -64,9 +64,9 @@ Route117_EventScript_291CD1:: @ 8291CD1
end
Route117_EventScript_291CE8:: @ 8291CE8
- special sp0B5_daycare
+ special GetDaycareMonNicknames
msgbox Route117_Text_292299, 4
- special sp0B9_daycare_relationship_comment
+ special SetDaycareCompatibilityString
special sub_8138AC0
waitmessage
waitbuttonpress
@@ -80,7 +80,7 @@ Route117_EventScript_291CE8:: @ 8291CE8
Route117_PokemonDayCare_EventScript_291D11:: @ 8291D11
lock
faceplayer
- specialvar VAR_RESULT, sp0B6_daycare
+ specialvar VAR_RESULT, GetDaycareState
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_PokemonDayCare_EventScript_291E0B
compare_var_to_value VAR_RESULT, 2
@@ -103,21 +103,21 @@ Route117_PokemonDayCare_EventScript_291D56:: @ 8291D56
goto_eq Route117_PokemonDayCare_EventScript_291E01
msgbox Route117_PokemonDayCare_Text_292349, 4
fadescreen 1
- special sub_8071330
+ special ChooseSendDaycareMon
waitstate
compare_var_to_value VAR_0x8004, 255
goto_eq Route117_PokemonDayCare_EventScript_291DCA
specialvar VAR_RESULT, CountPartyAliveNonEggMons_IgnoreVar0x8004Slot
compare_var_to_value VAR_RESULT, 0
goto_eq Route117_PokemonDayCare_EventScript_291DF7
- specialvar VAR_0x8005, sub_8070C58
+ specialvar VAR_0x8005, GetSelectedMonNickAndSpecies
waitse
playmoncry VAR_0x8005, 0
msgbox Route117_PokemonDayCare_Text_292370, 4
waitmoncry
- special daycare_send_selected_pokemon
+ special StoreSelectedPokemonInDaycare
incrementgamestat 47
- specialvar VAR_RESULT, sp0B6_daycare
+ specialvar VAR_RESULT, GetDaycareState
compare_var_to_value VAR_RESULT, 2
goto_eq Route117_PokemonDayCare_EventScript_291DD4
release
@@ -160,7 +160,7 @@ Route117_PokemonDayCare_EventScript_291E15:: @ 8291E15
return
Route117_PokemonDayCare_EventScript_291E1E:: @ 8291E1E
- specialvar VAR_RESULT, sub_806FF30
+ specialvar VAR_RESULT, GetNumLevelsGainedFromDaycare
compare_var_to_value VAR_RESULT, 0
call_if 5, Route117_PokemonDayCare_EventScript_291E15
return
@@ -182,11 +182,11 @@ Route117_PokemonDayCare_EventScript_291E6D:: @ 8291E6D
specialvar VAR_RESULT, CalculatePlayerPartyCount
compare_var_to_value VAR_RESULT, 6
goto_eq Route117_PokemonDayCare_EventScript_291F3D
- specialvar VAR_RESULT, sp0B6_daycare
+ specialvar VAR_RESULT, GetDaycareState
setvar VAR_0x8004, 0
compare_var_to_value VAR_RESULT, 2
goto_eq Route117_PokemonDayCare_EventScript_291EAC
- special sub_80712C0
+ special ShowDaycareLevelMenu
waitstate
copyvar VAR_0x8004, VAR_RESULT
compare_var_to_value VAR_RESULT, 2
@@ -195,7 +195,7 @@ Route117_PokemonDayCare_EventScript_291E6D:: @ 8291E6D
end
Route117_PokemonDayCare_EventScript_291EAC:: @ 8291EAC
- special sub_806FED8
+ special GetDaycareCost
msgbox Route117_PokemonDayCare_Text_292549, 5
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_PokemonDayCare_EventScript_291EC8
@@ -213,7 +213,7 @@ Route117_PokemonDayCare_EventScript_291EC8:: @ 8291EC8
Route117_PokemonDayCare_EventScript_291EE2:: @ 8291EE2
applymovement 1, Route117_PokemonDayCare_Movement_291F47
waitmovement 0
- specialvar VAR_RESULT, sub_806FDC4
+ specialvar VAR_RESULT, TakePokemonFromDaycare
special SubtractMoneyFromVar0x8005
playse SE_REGI
msgbox Route117_PokemonDayCare_Text_292575, 4
@@ -221,7 +221,7 @@ Route117_PokemonDayCare_EventScript_291EE2:: @ 8291EE2
playmoncry VAR_RESULT, 0
msgbox Route117_PokemonDayCare_Text_292593, 4
waitmoncry
- specialvar VAR_RESULT, sp0B6_daycare
+ specialvar VAR_RESULT, GetDaycareState
compare_var_to_value VAR_RESULT, 2
goto_eq Route117_PokemonDayCare_EventScript_291F24
goto Route117_PokemonDayCare_EventScript_291DCA
@@ -278,12 +278,12 @@ Route117_PokemonDayCare_EventScript_291F5C:: @ 8291F5C
end
Route117_PokemonDayCare_EventScript_291F95:: @ 8291F95
- special sub_80712C0
+ special ShowDaycareLevelMenu
waitstate
compare_var_to_value VAR_RESULT, 2
goto_eq Route117_PokemonDayCare_EventScript_291DCA
copyvar VAR_0x8004, VAR_RESULT
- specialvar VAR_RESULT, sub_806FDC4
+ specialvar VAR_RESULT, TakePokemonFromDaycare
msgbox Route117_PokemonDayCare_Text_292575, 4
msgbox Route117_PokemonDayCare_Text_292476, 4
release
diff --git a/data/scripts/maps/Route117.inc b/data/scripts/maps/Route117.inc
index 23551d372..01463516b 100644
--- a/data/scripts/maps/Route117.inc
+++ b/data/scripts/maps/Route117.inc
@@ -7,7 +7,7 @@ Route117_MapScript1_1F3983: @ 81F3983
end
Route117_EventScript_1F3989:: @ 81F3989
- checkflag FLAG_0x086
+ checkflag FLAG_PENDING_DAYCARE_EGG
goto_if 0, Route117_EventScript_1F3999
setobjectxyperm 3, 47, 6
diff --git a/data/specials.inc b/data/specials.inc
index d9cfcc6b0..51bb34dff 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -191,18 +191,18 @@ gSpecials:: @ 81DBA64
def_special GabbyAndTyGetLastBattleTrivia
def_special GabbyAndTySetScriptVarsToFieldObjectLocalIds
def_special sub_8138B80
- def_special sp0B5_daycare
- def_special sp0B6_daycare
- def_special sub_8070728
- def_special sp0B8_daycare
- def_special sp0B9_daycare_relationship_comment
- def_special sub_8070C58
- def_special daycare_send_selected_pokemon
- def_special sub_8071330
- def_special sub_80712C0
- def_special sub_806FF30
- def_special sub_806FED8
- def_special sub_806FDC4
+ def_special GetDaycareMonNicknames
+ def_special GetDaycareState
+ def_special RejectEggFromDayCare
+ def_special GiveEggFromDaycare
+ def_special SetDaycareCompatibilityString
+ def_special GetSelectedMonNickAndSpecies
+ def_special StoreSelectedPokemonInDaycare
+ def_special ChooseSendDaycareMon
+ def_special ShowDaycareLevelMenu
+ def_special GetNumLevelsGainedFromDaycare
+ def_special GetDaycareCost
+ def_special TakePokemonFromDaycare
def_special ScriptHatchMon
def_special EggHatch
def_special sub_8071614
@@ -534,4 +534,3 @@ gSpecials:: @ 81DBA64
def_special sub_813C5A0
def_special sub_8139C10
def_special sub_80B3BC4
-
diff --git a/data/strings.s b/data/strings.s
index ba32469bf..484c26d6e 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -5121,16 +5121,16 @@ gText_YouDontHaveThreeCoins:: @ 85EF734
gText_ReelTimeHelp:: @ 85EF750
.string "REEL TIME\nHere’s your chance to take\naim and nail marks!\nReel Time continues for the\nawarded number of spins.\nIt all ends on a Big Bonus.$"
-gUnknown_085EF7DA:: @ 85EF7DA
+gDaycareText_GetAlongVeryWell:: @ 85EF7DA
.string "The two seem to get along\nvery well.$"
-gUnknown_085EF7FF:: @ 85EF7FF
+gDaycareText_GetAlong:: @ 85EF7FF
.string "The two seem to get along.$"
-gUnknown_085EF81A:: @ 85EF81A
+gDaycareText_DontLikeOther:: @ 85EF81A
.string "The two don’t seem to like\neach other much.$"
-gUnknown_085EF846:: @ 85EF846
+gDaycareText_PlayOther:: @ 85EF846
.string "The two prefer to play with other\nPOKéMON than each other.$"
gText_NewLine2:: @ 85EF881
diff --git a/data/trade.s b/data/trade.s
index 601b597ed..3150269b0 100644
--- a/data/trade.s
+++ b/data/trade.s
@@ -19,13 +19,13 @@ gUnknown_0832D2BC:: @ 832D2BC
gUnknown_0832DABC:: @ 832DABC
.incbin "baserom.gba", 0x32dabc, 0xb
-gUnknown_0832DAC7:: @ 832DAC7
- .incbin "baserom.gba", 0x32dac7, 0x2
+gText_MaleSymbol4:: @ 832DAC7
+ .string "♂$"
-gUnknown_0832DAC9:: @ 832DAC9
- .incbin "baserom.gba", 0x32dac9, 0x2
+gText_FemaleSymbol4:: @ 832DAC9
+ .string "♀$"
-gUnknown_0832DACB:: @ 832DACB
+gText_GenderlessSymbol:: @ 832DACB
.incbin "baserom.gba", 0x32dacb, 0x7
gUnknown_0832DAD2:: @ 832DAD2
diff --git a/include/data/pokemon/egg_moves.h b/include/data/pokemon/egg_moves.h
new file mode 100644
index 000000000..3d74868b4
--- /dev/null
+++ b/include/data/pokemon/egg_moves.h
@@ -0,0 +1,1315 @@
+#ifndef POKEEMERALD_DAYCARE_H
+#define POKEEMERALD_DAYCARE_H
+
+#define EGG_MOVES_SPECIES_OFFSET 20000
+#define EGG_MOVES_TERMINATOR 0xFFFF
+#define egg_moves(species, moves...) (SPECIES_##species + EGG_MOVES_SPECIES_OFFSET), moves
+
+#endif // POKEEMERALD_DAYCARE_H
+
+const u16 gEggMoves[] = {
+ egg_moves(BULBASAUR,
+ MOVE_LIGHT_SCREEN,
+ MOVE_SKULL_BASH,
+ MOVE_SAFEGUARD,
+ MOVE_CHARM,
+ MOVE_PETAL_DANCE,
+ MOVE_MAGICAL_LEAF,
+ MOVE_GRASS_WHISTLE,
+ MOVE_CURSE),
+
+ egg_moves(CHARMANDER,
+ MOVE_BELLY_DRUM,
+ MOVE_ANCIENT_POWER,
+ MOVE_ROCK_SLIDE,
+ MOVE_BITE,
+ MOVE_OUTRAGE,
+ MOVE_BEAT_UP,
+ MOVE_SWORDS_DANCE,
+ MOVE_DRAGON_DANCE),
+
+ egg_moves(SQUIRTLE,
+ MOVE_MIRROR_COAT,
+ MOVE_HAZE,
+ MOVE_MIST,
+ MOVE_FORESIGHT,
+ MOVE_FLAIL,
+ MOVE_REFRESH,
+ MOVE_MUD_SPORT,
+ MOVE_YAWN),
+
+ egg_moves(PIDGEY,
+ MOVE_PURSUIT,
+ MOVE_FAINT_ATTACK,
+ MOVE_FORESIGHT,
+ MOVE_STEEL_WING,
+ MOVE_AIR_CUTTER),
+
+ egg_moves(RATTATA,
+ MOVE_SCREECH,
+ MOVE_FLAME_WHEEL,
+ MOVE_FURY_SWIPES,
+ MOVE_BITE,
+ MOVE_COUNTER,
+ MOVE_REVERSAL,
+ MOVE_UPROAR,
+ MOVE_SWAGGER),
+
+ egg_moves(SPEAROW,
+ MOVE_FAINT_ATTACK,
+ MOVE_FALSE_SWIPE,
+ MOVE_SCARY_FACE,
+ MOVE_QUICK_ATTACK,
+ MOVE_TRI_ATTACK,
+ MOVE_ASTONISH,
+ MOVE_SKY_ATTACK),
+
+ egg_moves(EKANS,
+ MOVE_PURSUIT,
+ MOVE_SLAM,
+ MOVE_SPITE,
+ MOVE_BEAT_UP,
+ MOVE_POISON_FANG),
+
+ egg_moves(SANDSHREW,
+ MOVE_FLAIL,
+ MOVE_SAFEGUARD,
+ MOVE_COUNTER,
+ MOVE_RAPID_SPIN,
+ MOVE_ROCK_SLIDE,
+ MOVE_METAL_CLAW,
+ MOVE_SWORDS_DANCE,
+ MOVE_CRUSH_CLAW),
+
+ egg_moves(NIDORAN_F,
+ MOVE_SUPERSONIC,
+ MOVE_DISABLE,
+ MOVE_TAKE_DOWN,
+ MOVE_FOCUS_ENERGY,
+ MOVE_CHARM,
+ MOVE_COUNTER,
+ MOVE_BEAT_UP),
+
+ egg_moves(NIDORAN_M,
+ MOVE_COUNTER,
+ MOVE_DISABLE,
+ MOVE_SUPERSONIC,
+ MOVE_TAKE_DOWN,
+ MOVE_AMNESIA,
+ MOVE_CONFUSION,
+ MOVE_BEAT_UP),
+
+ egg_moves(VULPIX,
+ MOVE_FAINT_ATTACK,
+ MOVE_HYPNOSIS,
+ MOVE_FLAIL,
+ MOVE_SPITE,
+ MOVE_DISABLE,
+ MOVE_HOWL,
+ MOVE_PSYCH_UP,
+ MOVE_HEAT_WAVE),
+
+ egg_moves(ZUBAT,
+ MOVE_QUICK_ATTACK,
+ MOVE_PURSUIT,
+ MOVE_FAINT_ATTACK,
+ MOVE_GUST,
+ MOVE_WHIRLWIND,
+ MOVE_CURSE),
+
+ egg_moves(ODDISH,
+ MOVE_SWORDS_DANCE,
+ MOVE_RAZOR_LEAF,
+ MOVE_FLAIL,
+ MOVE_SYNTHESIS,
+ MOVE_CHARM,
+ MOVE_INGRAIN),
+
+ egg_moves(PARAS,
+ MOVE_FALSE_SWIPE,
+ MOVE_SCREECH,
+ MOVE_COUNTER,
+ MOVE_PSYBEAM,
+ MOVE_FLAIL,
+ MOVE_SWEET_SCENT,
+ MOVE_LIGHT_SCREEN,
+ MOVE_PURSUIT),
+
+ egg_moves(VENONAT,
+ MOVE_BATON_PASS,
+ MOVE_SCREECH,
+ MOVE_GIGA_DRAIN,
+ MOVE_SIGNAL_BEAM),
+
+ egg_moves(DIGLETT,
+ MOVE_FAINT_ATTACK,
+ MOVE_SCREECH,
+ MOVE_ANCIENT_POWER,
+ MOVE_PURSUIT,
+ MOVE_BEAT_UP,
+ MOVE_UPROAR,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(MEOWTH,
+ MOVE_SPITE,
+ MOVE_CHARM,
+ MOVE_HYPNOSIS,
+ MOVE_AMNESIA,
+ MOVE_PSYCH_UP,
+ MOVE_ASSIST),
+
+ egg_moves(PSYDUCK,
+ MOVE_HYPNOSIS,
+ MOVE_PSYBEAM,
+ MOVE_FORESIGHT,
+ MOVE_LIGHT_SCREEN,
+ MOVE_FUTURE_SIGHT,
+ MOVE_PSYCHIC,
+ MOVE_CROSS_CHOP,
+ MOVE_REFRESH),
+
+ egg_moves(MANKEY,
+ MOVE_ROCK_SLIDE,
+ MOVE_FORESIGHT,
+ MOVE_MEDITATE,
+ MOVE_COUNTER,
+ MOVE_REVERSAL,
+ MOVE_BEAT_UP,
+ MOVE_REVENGE,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(GROWLITHE,
+ MOVE_BODY_SLAM,
+ MOVE_SAFEGUARD,
+ MOVE_CRUNCH,
+ MOVE_THRASH,
+ MOVE_FIRE_SPIN,
+ MOVE_HOWL,
+ MOVE_HEAT_WAVE),
+
+ egg_moves(POLIWAG,
+ MOVE_MIST,
+ MOVE_SPLASH,
+ MOVE_BUBBLE_BEAM,
+ MOVE_HAZE,
+ MOVE_MIND_READER,
+ MOVE_WATER_SPORT,
+ MOVE_ICE_BALL),
+
+ egg_moves(ABRA,
+ MOVE_ENCORE,
+ MOVE_BARRIER,
+ MOVE_KNOCK_OFF,
+ MOVE_FIRE_PUNCH,
+ MOVE_THUNDER_PUNCH,
+ MOVE_ICE_PUNCH),
+
+ egg_moves(MACHOP,
+ MOVE_LIGHT_SCREEN,
+ MOVE_MEDITATE,
+ MOVE_ROLLING_KICK,
+ MOVE_ENCORE,
+ MOVE_SMELLING_SALT,
+ MOVE_COUNTER,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(BELLSPROUT,
+ MOVE_SWORDS_DANCE,
+ MOVE_ENCORE,
+ MOVE_REFLECT,
+ MOVE_SYNTHESIS,
+ MOVE_LEECH_LIFE,
+ MOVE_INGRAIN,
+ MOVE_MAGICAL_LEAF),
+
+ egg_moves(TENTACOOL,
+ MOVE_AURORA_BEAM,
+ MOVE_MIRROR_COAT,
+ MOVE_RAPID_SPIN,
+ MOVE_HAZE,
+ MOVE_SAFEGUARD,
+ MOVE_CONFUSE_RAY),
+
+ egg_moves(GEODUDE,
+ MOVE_MEGA_PUNCH,
+ MOVE_ROCK_SLIDE,
+ MOVE_BLOCK),
+
+ egg_moves(PONYTA,
+ MOVE_FLAME_WHEEL,
+ MOVE_THRASH,
+ MOVE_DOUBLE_KICK,
+ MOVE_HYPNOSIS,
+ MOVE_CHARM,
+ MOVE_DOUBLE_EDGE),
+
+ egg_moves(SLOWPOKE,
+ MOVE_SAFEGUARD,
+ MOVE_BELLY_DRUM,
+ MOVE_FUTURE_SIGHT,
+ MOVE_STOMP,
+ MOVE_MUD_SPORT,
+ MOVE_SLEEP_TALK,
+ MOVE_SNORE),
+
+ egg_moves(FARFETCHD,
+ MOVE_STEEL_WING,
+ MOVE_FORESIGHT,
+ MOVE_MIRROR_MOVE,
+ MOVE_GUST,
+ MOVE_QUICK_ATTACK,
+ MOVE_FLAIL,
+ MOVE_FEATHER_DANCE,
+ MOVE_CURSE),
+
+ egg_moves(DODUO,
+ MOVE_QUICK_ATTACK,
+ MOVE_SUPERSONIC,
+ MOVE_HAZE,
+ MOVE_FAINT_ATTACK,
+ MOVE_FLAIL,
+ MOVE_ENDEAVOR),
+
+ egg_moves(SEEL,
+ MOVE_LICK,
+ MOVE_PERISH_SONG,
+ MOVE_DISABLE,
+ MOVE_HORN_DRILL,
+ MOVE_SLAM,
+ MOVE_ENCORE,
+ MOVE_FAKE_OUT,
+ MOVE_ICICLE_SPEAR),
+
+ egg_moves(GRIMER,
+ MOVE_HAZE,
+ MOVE_MEAN_LOOK,
+ MOVE_LICK,
+ MOVE_IMPRISON,
+ MOVE_CURSE,
+ MOVE_SHADOW_PUNCH,
+ MOVE_EXPLOSION),
+
+ egg_moves(SHELLDER,
+ MOVE_BUBBLE_BEAM,
+ MOVE_TAKE_DOWN,
+ MOVE_BARRIER,
+ MOVE_RAPID_SPIN,
+ MOVE_SCREECH,
+ MOVE_ICICLE_SPEAR),
+
+ egg_moves(GASTLY,
+ MOVE_PSYWAVE,
+ MOVE_PERISH_SONG,
+ MOVE_HAZE,
+ MOVE_ASTONISH,
+ MOVE_WILL_O_WISP,
+ MOVE_GRUDGE,
+ MOVE_EXPLOSION),
+
+ egg_moves(ONIX,
+ MOVE_ROCK_SLIDE,
+ MOVE_FLAIL,
+ MOVE_EXPLOSION,
+ MOVE_BLOCK),
+
+ egg_moves(DROWZEE,
+ MOVE_BARRIER,
+ MOVE_ASSIST,
+ MOVE_ROLE_PLAY,
+ MOVE_FIRE_PUNCH,
+ MOVE_THUNDER_PUNCH,
+ MOVE_ICE_PUNCH),
+
+ egg_moves(KRABBY,
+ MOVE_DIG,
+ MOVE_HAZE,
+ MOVE_AMNESIA,
+ MOVE_FLAIL,
+ MOVE_SLAM,
+ MOVE_KNOCK_OFF,
+ MOVE_SWORDS_DANCE),
+
+ egg_moves(EXEGGCUTE,
+ MOVE_SYNTHESIS,
+ MOVE_MOONLIGHT,
+ MOVE_REFLECT,
+ MOVE_ANCIENT_POWER,
+ MOVE_PSYCH_UP,
+ MOVE_INGRAIN,
+ MOVE_CURSE),
+
+ egg_moves(CUBONE,
+ MOVE_ROCK_SLIDE,
+ MOVE_ANCIENT_POWER,
+ MOVE_BELLY_DRUM,
+ MOVE_SCREECH,
+ MOVE_SKULL_BASH,
+ MOVE_PERISH_SONG,
+ MOVE_SWORDS_DANCE),
+
+ egg_moves(LICKITUNG,
+ MOVE_BELLY_DRUM,
+ MOVE_MAGNITUDE,
+ MOVE_BODY_SLAM,
+ MOVE_CURSE,
+ MOVE_SMELLING_SALT,
+ MOVE_SLEEP_TALK,
+ MOVE_SNORE,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(KOFFING,
+ MOVE_SCREECH,
+ MOVE_PSYWAVE,
+ MOVE_PSYBEAM,
+ MOVE_DESTINY_BOND,
+ MOVE_PAIN_SPLIT,
+ MOVE_WILL_O_WISP),
+
+ egg_moves(RHYHORN,
+ MOVE_CRUNCH,
+ MOVE_REVERSAL,
+ MOVE_ROCK_SLIDE,
+ MOVE_COUNTER,
+ MOVE_MAGNITUDE,
+ MOVE_SWORDS_DANCE,
+ MOVE_CURSE,
+ MOVE_CRUSH_CLAW),
+
+ egg_moves(CHANSEY,
+ MOVE_PRESENT,
+ MOVE_METRONOME,
+ MOVE_HEAL_BELL,
+ MOVE_AROMATHERAPY,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(TANGELA,
+ MOVE_FLAIL,
+ MOVE_CONFUSION,
+ MOVE_MEGA_DRAIN,
+ MOVE_REFLECT,
+ MOVE_AMNESIA,
+ MOVE_LEECH_SEED,
+ MOVE_NATURE_POWER),
+
+ egg_moves(KANGASKHAN,
+ MOVE_STOMP,
+ MOVE_FORESIGHT,
+ MOVE_FOCUS_ENERGY,
+ MOVE_SAFEGUARD,
+ MOVE_DISABLE,
+ MOVE_COUNTER,
+ MOVE_CRUSH_CLAW,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(HORSEA,
+ MOVE_FLAIL,
+ MOVE_AURORA_BEAM,
+ MOVE_OCTAZOOKA,
+ MOVE_DISABLE,
+ MOVE_SPLASH,
+ MOVE_DRAGON_RAGE,
+ MOVE_DRAGON_BREATH),
+
+ egg_moves(GOLDEEN,
+ MOVE_PSYBEAM,
+ MOVE_HAZE,
+ MOVE_HYDRO_PUMP,
+ MOVE_SLEEP_TALK,
+ MOVE_MUD_SPORT),
+
+ egg_moves(MR_MIME,
+ MOVE_FUTURE_SIGHT,
+ MOVE_HYPNOSIS,
+ MOVE_MIMIC,
+ MOVE_PSYCH_UP,
+ MOVE_FAKE_OUT,
+ MOVE_TRICK),
+
+ egg_moves(SCYTHER,
+ MOVE_COUNTER,
+ MOVE_SAFEGUARD,
+ MOVE_BATON_PASS,
+ MOVE_RAZOR_WIND,
+ MOVE_REVERSAL,
+ MOVE_LIGHT_SCREEN,
+ MOVE_ENDURE,
+ MOVE_SILVER_WIND),
+
+ egg_moves(PINSIR,
+ MOVE_FURY_ATTACK,
+ MOVE_FLAIL,
+ MOVE_FALSE_SWIPE,
+ MOVE_FAINT_ATTACK),
+
+ egg_moves(LAPRAS,
+ MOVE_FORESIGHT,
+ MOVE_SUBSTITUTE,
+ MOVE_TICKLE,
+ MOVE_REFRESH,
+ MOVE_DRAGON_DANCE,
+ MOVE_CURSE,
+ MOVE_SLEEP_TALK,
+ MOVE_HORN_DRILL),
+
+ egg_moves(EEVEE,
+ MOVE_CHARM,
+ MOVE_FLAIL,
+ MOVE_ENDURE,
+ MOVE_CURSE,
+ MOVE_TICKLE,
+ MOVE_WISH),
+
+ egg_moves(OMANYTE,
+ MOVE_BUBBLE_BEAM,
+ MOVE_AURORA_BEAM,
+ MOVE_SLAM,
+ MOVE_SUPERSONIC,
+ MOVE_HAZE,
+ MOVE_ROCK_SLIDE,
+ MOVE_SPIKES),
+
+ egg_moves(KABUTO,
+ MOVE_BUBBLE_BEAM,
+ MOVE_AURORA_BEAM,
+ MOVE_RAPID_SPIN,
+ MOVE_DIG,
+ MOVE_FLAIL,
+ MOVE_KNOCK_OFF,
+ MOVE_CONFUSE_RAY),
+
+ egg_moves(AERODACTYL,
+ MOVE_WHIRLWIND,
+ MOVE_PURSUIT,
+ MOVE_FORESIGHT,
+ MOVE_STEEL_WING,
+ MOVE_DRAGON_BREATH,
+ MOVE_CURSE),
+
+ egg_moves(SNORLAX,
+ MOVE_LICK,
+ MOVE_CHARM,
+ MOVE_DOUBLE_EDGE,
+ MOVE_CURSE,
+ MOVE_FISSURE,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(DRATINI,
+ MOVE_LIGHT_SCREEN,
+ MOVE_MIST,
+ MOVE_HAZE,
+ MOVE_SUPERSONIC,
+ MOVE_DRAGON_BREATH,
+ MOVE_DRAGON_DANCE),
+
+ egg_moves(CHIKORITA,
+ MOVE_VINE_WHIP,
+ MOVE_LEECH_SEED,
+ MOVE_COUNTER,
+ MOVE_ANCIENT_POWER,
+ MOVE_FLAIL,
+ MOVE_NATURE_POWER,
+ MOVE_INGRAIN,
+ MOVE_GRASS_WHISTLE),
+
+ egg_moves(CYNDAQUIL,
+ MOVE_FURY_SWIPES,
+ MOVE_QUICK_ATTACK,
+ MOVE_REVERSAL,
+ MOVE_THRASH,
+ MOVE_FORESIGHT,
+ MOVE_COVET,
+ MOVE_HOWL,
+ MOVE_CRUSH_CLAW),
+
+ egg_moves(TOTODILE,
+ MOVE_CRUNCH,
+ MOVE_THRASH,
+ MOVE_HYDRO_PUMP,
+ MOVE_ANCIENT_POWER,
+ MOVE_ROCK_SLIDE,
+ MOVE_MUD_SPORT,
+ MOVE_WATER_SPORT,
+ MOVE_DRAGON_CLAW),
+
+ egg_moves(SENTRET,
+ MOVE_DOUBLE_EDGE,
+ MOVE_PURSUIT,
+ MOVE_SLASH,
+ MOVE_FOCUS_ENERGY,
+ MOVE_REVERSAL,
+ MOVE_SUBSTITUTE,
+ MOVE_TRICK,
+ MOVE_ASSIST),
+
+ egg_moves(HOOTHOOT,
+ MOVE_MIRROR_MOVE,
+ MOVE_SUPERSONIC,
+ MOVE_FAINT_ATTACK,
+ MOVE_WING_ATTACK,
+ MOVE_WHIRLWIND,
+ MOVE_SKY_ATTACK,
+ MOVE_FEATHER_DANCE),
+
+ egg_moves(LEDYBA,
+ MOVE_PSYBEAM,
+ MOVE_BIDE,
+ MOVE_SILVER_WIND),
+
+ egg_moves(SPINARAK,
+ MOVE_PSYBEAM,
+ MOVE_DISABLE,
+ MOVE_SONIC_BOOM,
+ MOVE_BATON_PASS,
+ MOVE_PURSUIT,
+ MOVE_SIGNAL_BEAM),
+
+ egg_moves(CHINCHOU,
+ MOVE_FLAIL,
+ MOVE_SCREECH,
+ MOVE_AMNESIA),
+
+ egg_moves(PICHU,
+ MOVE_REVERSAL,
+ MOVE_BIDE,
+ MOVE_PRESENT,
+ MOVE_ENCORE,
+ MOVE_DOUBLE_SLAP,
+ MOVE_WISH,
+ MOVE_CHARGE),
+
+ egg_moves(CLEFFA,
+ MOVE_PRESENT,
+ MOVE_METRONOME,
+ MOVE_AMNESIA,
+ MOVE_BELLY_DRUM,
+ MOVE_SPLASH,
+ MOVE_MIMIC,
+ MOVE_WISH,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(IGGLYBUFF,
+ MOVE_PERISH_SONG,
+ MOVE_PRESENT,
+ MOVE_FAINT_ATTACK,
+ MOVE_WISH,
+ MOVE_FAKE_TEARS),
+
+ egg_moves(TOGEPI,
+ MOVE_PRESENT,
+ MOVE_MIRROR_MOVE,
+ MOVE_PECK,
+ MOVE_FORESIGHT,
+ MOVE_FUTURE_SIGHT,
+ MOVE_SUBSTITUTE,
+ MOVE_PSYCH_UP),
+
+ egg_moves(NATU,
+ MOVE_HAZE,
+ MOVE_DRILL_PECK,
+ MOVE_QUICK_ATTACK,
+ MOVE_FAINT_ATTACK,
+ MOVE_STEEL_WING,
+ MOVE_PSYCH_UP,
+ MOVE_FEATHER_DANCE,
+ MOVE_REFRESH),
+
+ egg_moves(MAREEP,
+ MOVE_TAKE_DOWN,
+ MOVE_BODY_SLAM,
+ MOVE_SAFEGUARD,
+ MOVE_SCREECH,
+ MOVE_REFLECT,
+ MOVE_ODOR_SLEUTH,
+ MOVE_CHARGE),
+
+ egg_moves(MARILL,
+ MOVE_LIGHT_SCREEN,
+ MOVE_PRESENT,
+ MOVE_AMNESIA,
+ MOVE_FUTURE_SIGHT,
+ MOVE_BELLY_DRUM,
+ MOVE_PERISH_SONG,
+ MOVE_SUPERSONIC,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(SUDOWOODO,
+ MOVE_SELF_DESTRUCT),
+
+ egg_moves(HOPPIP,
+ MOVE_CONFUSION,
+ MOVE_ENCORE,
+ MOVE_DOUBLE_EDGE,
+ MOVE_REFLECT,
+ MOVE_AMNESIA,
+ MOVE_HELPING_HAND,
+ MOVE_PSYCH_UP),
+
+ egg_moves(AIPOM,
+ MOVE_COUNTER,
+ MOVE_SCREECH,
+ MOVE_PURSUIT,
+ MOVE_AGILITY,
+ MOVE_SPITE,
+ MOVE_SLAM,
+ MOVE_DOUBLE_SLAP,
+ MOVE_BEAT_UP),
+
+ egg_moves(SUNKERN,
+ MOVE_GRASS_WHISTLE,
+ MOVE_ENCORE,
+ MOVE_LEECH_SEED,
+ MOVE_NATURE_POWER,
+ MOVE_CURSE,
+ MOVE_HELPING_HAND),
+
+ egg_moves(YANMA,
+ MOVE_WHIRLWIND,
+ MOVE_REVERSAL,
+ MOVE_LEECH_LIFE,
+ MOVE_SIGNAL_BEAM,
+ MOVE_SILVER_WIND),
+
+ egg_moves(WOOPER,
+ MOVE_BODY_SLAM,
+ MOVE_ANCIENT_POWER,
+ MOVE_SAFEGUARD,
+ MOVE_CURSE,
+ MOVE_MUD_SPORT,
+ MOVE_STOCKPILE,
+ MOVE_SWALLOW,
+ MOVE_SPIT_UP),
+
+ egg_moves(MURKROW,
+ MOVE_WHIRLWIND,
+ MOVE_DRILL_PECK,
+ MOVE_MIRROR_MOVE,
+ MOVE_WING_ATTACK,
+ MOVE_SKY_ATTACK,
+ MOVE_CONFUSE_RAY,
+ MOVE_FEATHER_DANCE,
+ MOVE_PERISH_SONG),
+
+ egg_moves(MISDREAVUS,
+ MOVE_SCREECH,
+ MOVE_DESTINY_BOND,
+ MOVE_PSYCH_UP,
+ MOVE_IMPRISON),
+
+ egg_moves(GIRAFARIG,
+ MOVE_TAKE_DOWN,
+ MOVE_AMNESIA,
+ MOVE_FORESIGHT,
+ MOVE_FUTURE_SIGHT,
+ MOVE_BEAT_UP,
+ MOVE_PSYCH_UP,
+ MOVE_WISH,
+ MOVE_MAGIC_COAT),
+
+ egg_moves(PINECO,
+ MOVE_REFLECT,
+ MOVE_PIN_MISSILE,
+ MOVE_FLAIL,
+ MOVE_SWIFT,
+ MOVE_COUNTER,
+ MOVE_SAND_TOMB),
+
+ egg_moves(DUNSPARCE,
+ MOVE_BIDE,
+ MOVE_ANCIENT_POWER,
+ MOVE_ROCK_SLIDE,
+ MOVE_BITE,
+ MOVE_HEADBUTT,
+ MOVE_ASTONISH,
+ MOVE_CURSE),
+
+ egg_moves(GLIGAR,
+ MOVE_METAL_CLAW,
+ MOVE_WING_ATTACK,
+ MOVE_RAZOR_WIND,
+ MOVE_COUNTER,
+ MOVE_SAND_TOMB),
+
+ egg_moves(SNUBBULL,
+ MOVE_METRONOME,
+ MOVE_FAINT_ATTACK,
+ MOVE_REFLECT,
+ MOVE_PRESENT,
+ MOVE_CRUNCH,
+ MOVE_HEAL_BELL,
+ MOVE_SNORE,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(QWILFISH,
+ MOVE_FLAIL,
+ MOVE_HAZE,
+ MOVE_BUBBLE_BEAM,
+ MOVE_SUPERSONIC,
+ MOVE_ASTONISH),
+
+ egg_moves(SHUCKLE,
+ MOVE_SWEET_SCENT),
+
+ egg_moves(HERACROSS,
+ MOVE_HARDEN,
+ MOVE_BIDE,
+ MOVE_FLAIL,
+ MOVE_FALSE_SWIPE),
+
+ egg_moves(SNEASEL,
+ MOVE_COUNTER,
+ MOVE_SPITE,
+ MOVE_FORESIGHT,
+ MOVE_REFLECT,
+ MOVE_BITE,
+ MOVE_CRUSH_CLAW,
+ MOVE_FAKE_OUT),
+
+ egg_moves(TEDDIURSA,
+ MOVE_CRUNCH,
+ MOVE_TAKE_DOWN,
+ MOVE_SEISMIC_TOSS,
+ MOVE_COUNTER,
+ MOVE_METAL_CLAW,
+ MOVE_FAKE_TEARS,
+ MOVE_YAWN,
+ MOVE_SLEEP_TALK),
+
+ egg_moves(SLUGMA,
+ MOVE_ACID_ARMOR,
+ MOVE_HEAT_WAVE),
+
+ egg_moves(SWINUB,
+ MOVE_TAKE_DOWN,
+ MOVE_BITE,
+ MOVE_BODY_SLAM,
+ MOVE_ROCK_SLIDE,
+ MOVE_ANCIENT_POWER,
+ MOVE_MUD_SHOT,
+ MOVE_ICICLE_SPEAR,
+ MOVE_DOUBLE_EDGE),
+
+ egg_moves(CORSOLA,
+ MOVE_ROCK_SLIDE,
+ MOVE_SCREECH,
+ MOVE_MIST,
+ MOVE_AMNESIA,
+ MOVE_BARRIER,
+ MOVE_INGRAIN,
+ MOVE_CONFUSE_RAY,
+ MOVE_ICICLE_SPEAR),
+
+ egg_moves(REMORAID,
+ MOVE_AURORA_BEAM,
+ MOVE_OCTAZOOKA,
+ MOVE_SUPERSONIC,
+ MOVE_HAZE,
+ MOVE_SCREECH,
+ MOVE_THUNDER_WAVE,
+ MOVE_ROCK_BLAST),
+
+ egg_moves(DELIBIRD,
+ MOVE_AURORA_BEAM,
+ MOVE_QUICK_ATTACK,
+ MOVE_FUTURE_SIGHT,
+ MOVE_SPLASH,
+ MOVE_RAPID_SPIN,
+ MOVE_ICE_BALL),
+
+ egg_moves(MANTINE,
+ MOVE_TWISTER,
+ MOVE_HYDRO_PUMP,
+ MOVE_HAZE,
+ MOVE_SLAM,
+ MOVE_MUD_SPORT,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(SKARMORY,
+ MOVE_DRILL_PECK,
+ MOVE_PURSUIT,
+ MOVE_WHIRLWIND,
+ MOVE_SKY_ATTACK,
+ MOVE_CURSE),
+
+ egg_moves(HOUNDOUR,
+ MOVE_FIRE_SPIN,
+ MOVE_RAGE,
+ MOVE_PURSUIT,
+ MOVE_COUNTER,
+ MOVE_SPITE,
+ MOVE_REVERSAL,
+ MOVE_BEAT_UP,
+ MOVE_WILL_O_WISP),
+
+ egg_moves(PHANPY,
+ MOVE_FOCUS_ENERGY,
+ MOVE_BODY_SLAM,
+ MOVE_ANCIENT_POWER,
+ MOVE_SNORE,
+ MOVE_COUNTER,
+ MOVE_FISSURE),
+
+ egg_moves(STANTLER,
+ MOVE_SPITE,
+ MOVE_DISABLE,
+ MOVE_BITE,
+ MOVE_SWAGGER,
+ MOVE_PSYCH_UP,
+ MOVE_EXTRASENSORY),
+
+ egg_moves(TYROGUE,
+ MOVE_RAPID_SPIN,
+ MOVE_HI_JUMP_KICK,
+ MOVE_MACH_PUNCH,
+ MOVE_MIND_READER,
+ MOVE_HELPING_HAND),
+
+ egg_moves(SMOOCHUM,
+ MOVE_MEDITATE,
+ MOVE_PSYCH_UP,
+ MOVE_FAKE_OUT,
+ MOVE_WISH,
+ MOVE_ICE_PUNCH),
+
+ egg_moves(ELEKID,
+ MOVE_KARATE_CHOP,
+ MOVE_BARRIER,
+ MOVE_ROLLING_KICK,
+ MOVE_MEDITATE,
+ MOVE_CROSS_CHOP,
+ MOVE_FIRE_PUNCH,
+ MOVE_ICE_PUNCH),
+
+ egg_moves(MAGBY,
+ MOVE_KARATE_CHOP,
+ MOVE_MEGA_PUNCH,
+ MOVE_BARRIER,
+ MOVE_SCREECH,
+ MOVE_CROSS_CHOP,
+ MOVE_THUNDER_PUNCH),
+
+ egg_moves(MILTANK,
+ MOVE_PRESENT,
+ MOVE_REVERSAL,
+ MOVE_SEISMIC_TOSS,
+ MOVE_ENDURE,
+ MOVE_PSYCH_UP,
+ MOVE_CURSE,
+ MOVE_HELPING_HAND,
+ MOVE_SLEEP_TALK),
+
+ egg_moves(LARVITAR,
+ MOVE_PURSUIT,
+ MOVE_STOMP,
+ MOVE_OUTRAGE,
+ MOVE_FOCUS_ENERGY,
+ MOVE_ANCIENT_POWER,
+ MOVE_DRAGON_DANCE,
+ MOVE_CURSE),
+
+ egg_moves(TREECKO,
+ MOVE_CRUNCH,
+ MOVE_MUD_SPORT,
+ MOVE_ENDEAVOR,
+ MOVE_LEECH_SEED,
+ MOVE_DRAGON_BREATH,
+ MOVE_CRUSH_CLAW),
+
+ egg_moves(TORCHIC,
+ MOVE_COUNTER,
+ MOVE_REVERSAL,
+ MOVE_ENDURE,
+ MOVE_SWAGGER,
+ MOVE_ROCK_SLIDE,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(MUDKIP,
+ MOVE_REFRESH,
+ MOVE_UPROAR,
+ MOVE_CURSE,
+ MOVE_STOMP,
+ MOVE_ICE_BALL,
+ MOVE_MIRROR_COAT),
+
+ egg_moves(POOCHYENA,
+ MOVE_ASTONISH,
+ MOVE_POISON_FANG,
+ MOVE_COVET,
+ MOVE_LEER,
+ MOVE_YAWN),
+
+ egg_moves(ZIGZAGOON,
+ MOVE_CHARM,
+ MOVE_PURSUIT,
+ MOVE_SUBSTITUTE,
+ MOVE_TICKLE,
+ MOVE_TRICK),
+
+ egg_moves(LOTAD,
+ MOVE_SYNTHESIS,
+ MOVE_RAZOR_LEAF,
+ MOVE_SWEET_SCENT,
+ MOVE_LEECH_SEED,
+ MOVE_FLAIL,
+ MOVE_WATER_GUN),
+
+ egg_moves(SEEDOT,
+ MOVE_LEECH_SEED,
+ MOVE_AMNESIA,
+ MOVE_QUICK_ATTACK,
+ MOVE_RAZOR_WIND,
+ MOVE_TAKE_DOWN,
+ MOVE_FALSE_SWIPE),
+
+ egg_moves(NINCADA,
+ MOVE_ENDURE,
+ MOVE_FAINT_ATTACK,
+ MOVE_GUST,
+ MOVE_SILVER_WIND),
+
+ egg_moves(TAILLOW,
+ MOVE_PURSUIT,
+ MOVE_SUPERSONIC,
+ MOVE_REFRESH,
+ MOVE_MIRROR_MOVE,
+ MOVE_RAGE,
+ MOVE_SKY_ATTACK),
+
+ egg_moves(SHROOMISH,
+ MOVE_FAKE_TEARS,
+ MOVE_SWAGGER,
+ MOVE_CHARM,
+ MOVE_FALSE_SWIPE,
+ MOVE_HELPING_HAND),
+
+ egg_moves(SPINDA,
+ MOVE_ENCORE,
+ MOVE_ROCK_SLIDE,
+ MOVE_ASSIST,
+ MOVE_DISABLE,
+ MOVE_BATON_PASS,
+ MOVE_WISH,
+ MOVE_TRICK,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(WINGULL,
+ MOVE_MIST,
+ MOVE_TWISTER,
+ MOVE_AGILITY,
+ MOVE_GUST,
+ MOVE_WATER_SPORT),
+
+ egg_moves(SURSKIT,
+ MOVE_FORESIGHT,
+ MOVE_MUD_SHOT,
+ MOVE_PSYBEAM,
+ MOVE_HYDRO_PUMP,
+ MOVE_MIND_READER),
+
+ egg_moves(WAILMER,
+ MOVE_DOUBLE_EDGE,
+ MOVE_THRASH,
+ MOVE_SWAGGER,
+ MOVE_SNORE,
+ MOVE_SLEEP_TALK,
+ MOVE_CURSE,
+ MOVE_FISSURE,
+ MOVE_TICKLE),
+
+ egg_moves(SKITTY,
+ MOVE_HELPING_HAND,
+ MOVE_PSYCH_UP,
+ MOVE_UPROAR,
+ MOVE_FAKE_TEARS,
+ MOVE_WISH,
+ MOVE_BATON_PASS,
+ MOVE_SUBSTITUTE,
+ MOVE_TICKLE),
+
+ egg_moves(KECLEON,
+ MOVE_DISABLE,
+ MOVE_MAGIC_COAT,
+ MOVE_TRICK),
+
+ egg_moves(NOSEPASS,
+ MOVE_MAGNITUDE,
+ MOVE_ROLLOUT,
+ MOVE_EXPLOSION),
+
+ egg_moves(TORKOAL,
+ MOVE_ERUPTION,
+ MOVE_ENDURE,
+ MOVE_SLEEP_TALK,
+ MOVE_YAWN),
+
+ egg_moves(SABLEYE,
+ MOVE_PSYCH_UP,
+ MOVE_RECOVER,
+ MOVE_MOONLIGHT),
+
+ egg_moves(BARBOACH,
+ MOVE_THRASH,
+ MOVE_WHIRLPOOL,
+ MOVE_SPARK),
+
+ egg_moves(LUVDISC,
+ MOVE_SPLASH,
+ MOVE_SUPERSONIC,
+ MOVE_WATER_SPORT,
+ MOVE_MUD_SPORT),
+
+ egg_moves(CORPHISH,
+ MOVE_MUD_SPORT,
+ MOVE_ENDEAVOR,
+ MOVE_BODY_SLAM,
+ MOVE_ANCIENT_POWER),
+
+ egg_moves(FEEBAS,
+ MOVE_MIRROR_COAT,
+ MOVE_DRAGON_BREATH,
+ MOVE_MUD_SPORT,
+ MOVE_HYPNOSIS,
+ MOVE_LIGHT_SCREEN,
+ MOVE_CONFUSE_RAY),
+
+ egg_moves(CARVANHA,
+ MOVE_HYDRO_PUMP,
+ MOVE_DOUBLE_EDGE,
+ MOVE_THRASH),
+
+ egg_moves(TRAPINCH,
+ MOVE_FOCUS_ENERGY,
+ MOVE_QUICK_ATTACK,
+ MOVE_GUST),
+
+ egg_moves(MAKUHITA,
+ MOVE_FAINT_ATTACK,
+ MOVE_DETECT,
+ MOVE_FORESIGHT,
+ MOVE_HELPING_HAND,
+ MOVE_CROSS_CHOP,
+ MOVE_REVENGE,
+ MOVE_DYNAMIC_PUNCH,
+ MOVE_COUNTER),
+
+ egg_moves(ELECTRIKE,
+ MOVE_CRUNCH,
+ MOVE_HEADBUTT,
+ MOVE_UPROAR,
+ MOVE_CURSE,
+ MOVE_SWIFT),
+
+ egg_moves(NUMEL,
+ MOVE_HOWL,
+ MOVE_SCARY_FACE,
+ MOVE_BODY_SLAM,
+ MOVE_ROLLOUT,
+ MOVE_DEFENSE_CURL,
+ MOVE_STOMP),
+
+ egg_moves(SPHEAL,
+ MOVE_WATER_SPORT,
+ MOVE_STOCKPILE,
+ MOVE_SWALLOW,
+ MOVE_SPIT_UP,
+ MOVE_YAWN,
+ MOVE_ROCK_SLIDE,
+ MOVE_CURSE,
+ MOVE_FISSURE),
+
+ egg_moves(CACNEA,
+ MOVE_GRASS_WHISTLE,
+ MOVE_ACID,
+ MOVE_TEETER_DANCE,
+ MOVE_DYNAMIC_PUNCH,
+ MOVE_COUNTER),
+
+ egg_moves(SNORUNT,
+ MOVE_BLOCK,
+ MOVE_SPIKES),
+
+ egg_moves(AZURILL,
+ MOVE_ENCORE,
+ MOVE_SING,
+ MOVE_REFRESH,
+ MOVE_SLAM,
+ MOVE_TICKLE),
+
+ egg_moves(SPOINK,
+ MOVE_FUTURE_SIGHT,
+ MOVE_EXTRASENSORY,
+ MOVE_SUBSTITUTE,
+ MOVE_TRICK),
+
+ egg_moves(PLUSLE,
+ MOVE_SUBSTITUTE,
+ MOVE_WISH),
+
+ egg_moves(MINUN,
+ MOVE_SUBSTITUTE,
+ MOVE_WISH),
+
+ egg_moves(MAWILE,
+ MOVE_SWORDS_DANCE,
+ MOVE_FALSE_SWIPE,
+ MOVE_POISON_FANG,
+ MOVE_PSYCH_UP,
+ MOVE_ANCIENT_POWER,
+ MOVE_TICKLE),
+
+ egg_moves(MEDITITE,
+ MOVE_FIRE_PUNCH,
+ MOVE_THUNDER_PUNCH,
+ MOVE_ICE_PUNCH,
+ MOVE_FORESIGHT,
+ MOVE_FAKE_OUT,
+ MOVE_BATON_PASS,
+ MOVE_DYNAMIC_PUNCH),
+
+ egg_moves(SWABLU,
+ MOVE_AGILITY,
+ MOVE_HAZE,
+ MOVE_PURSUIT,
+ MOVE_RAGE),
+
+ egg_moves(DUSKULL,
+ MOVE_IMPRISON,
+ MOVE_DESTINY_BOND,
+ MOVE_PAIN_SPLIT,
+ MOVE_GRUDGE,
+ MOVE_MEMENTO,
+ MOVE_FAINT_ATTACK),
+
+ egg_moves(ROSELIA,
+ MOVE_SPIKES,
+ MOVE_SYNTHESIS,
+ MOVE_PIN_MISSILE,
+ MOVE_COTTON_SPORE),
+
+ egg_moves(SLAKOTH,
+ MOVE_PURSUIT,
+ MOVE_SLASH,
+ MOVE_BODY_SLAM,
+ MOVE_SNORE,
+ MOVE_CRUSH_CLAW,
+ MOVE_CURSE,
+ MOVE_SLEEP_TALK),
+
+ egg_moves(GULPIN,
+ MOVE_DREAM_EATER,
+ MOVE_ACID_ARMOR,
+ MOVE_SMOG,
+ MOVE_PAIN_SPLIT),
+
+ egg_moves(TROPIUS,
+ MOVE_HEADBUTT,
+ MOVE_SLAM,
+ MOVE_RAZOR_WIND,
+ MOVE_LEECH_SEED,
+ MOVE_NATURE_POWER),
+
+ egg_moves(WHISMUR,
+ MOVE_TAKE_DOWN,
+ MOVE_SNORE,
+ MOVE_SWAGGER,
+ MOVE_EXTRASENSORY,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(CLAMPERL,
+ MOVE_REFRESH,
+ MOVE_MUD_SPORT,
+ MOVE_BODY_SLAM,
+ MOVE_SUPERSONIC,
+ MOVE_BARRIER,
+ MOVE_CONFUSE_RAY),
+
+ egg_moves(ABSOL,
+ MOVE_BATON_PASS,
+ MOVE_FAINT_ATTACK,
+ MOVE_DOUBLE_EDGE,
+ MOVE_MAGIC_COAT,
+ MOVE_CURSE,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(SHUPPET,
+ MOVE_DISABLE,
+ MOVE_DESTINY_BOND,
+ MOVE_FORESIGHT,
+ MOVE_ASTONISH,
+ MOVE_IMPRISON),
+
+ egg_moves(SEVIPER,
+ MOVE_STOCKPILE,
+ MOVE_SWALLOW,
+ MOVE_SPIT_UP,
+ MOVE_BODY_SLAM),
+
+ egg_moves(ZANGOOSE,
+ MOVE_FLAIL,
+ MOVE_DOUBLE_KICK,
+ MOVE_RAZOR_WIND,
+ MOVE_COUNTER,
+ MOVE_ROAR,
+ MOVE_CURSE),
+
+ egg_moves(RELICANTH,
+ MOVE_MAGNITUDE,
+ MOVE_SKULL_BASH,
+ MOVE_WATER_SPORT,
+ MOVE_AMNESIA,
+ MOVE_SLEEP_TALK,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(ARON,
+ MOVE_ENDEAVOR,
+ MOVE_BODY_SLAM,
+ MOVE_STOMP,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(CASTFORM,
+ MOVE_FUTURE_SIGHT,
+ MOVE_PSYCH_UP),
+
+ egg_moves(VOLBEAT,
+ MOVE_BATON_PASS,
+ MOVE_SILVER_WIND,
+ MOVE_TRICK),
+
+ egg_moves(ILLUMISE,
+ MOVE_BATON_PASS,
+ MOVE_SILVER_WIND,
+ MOVE_GROWTH),
+
+ egg_moves(LILEEP,
+ MOVE_BARRIER,
+ MOVE_RECOVER,
+ MOVE_MIRROR_COAT,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(ANORITH,
+ MOVE_RAPID_SPIN,
+ MOVE_KNOCK_OFF,
+ MOVE_SWORDS_DANCE,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(RALTS,
+ MOVE_DISABLE,
+ MOVE_WILL_O_WISP,
+ MOVE_MEAN_LOOK,
+ MOVE_MEMENTO,
+ MOVE_DESTINY_BOND),
+
+ egg_moves(BAGON,
+ MOVE_HYDRO_PUMP,
+ MOVE_THRASH,
+ MOVE_DRAGON_RAGE,
+ MOVE_TWISTER,
+ MOVE_DRAGON_DANCE),
+
+ egg_moves(CHIMECHO,
+ MOVE_DISABLE,
+ MOVE_CURSE,
+ MOVE_HYPNOSIS,
+ MOVE_DREAM_EATER),
+
+ EGG_MOVES_TERMINATOR
+};
diff --git a/include/daycare.h b/include/daycare.h
new file mode 100644
index 000000000..7db44e024
--- /dev/null
+++ b/include/daycare.h
@@ -0,0 +1,27 @@
+#ifndef GUARD_DAYCARE_H
+#define GUARD_DAYCARE_H
+
+#define EGG_HATCH_LEVEL 5
+
+u8 *GetMonNick(struct Pokemon *mon, u8 *dest);
+u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest);
+u8 CountPokemonInDaycare(struct DayCare *daycare);
+void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDayCareMail *daycareMail);
+void StoreSelectedPokemonInDaycare(void);
+u16 TakePokemonFromDaycare(void);
+void GetDaycareCost(void);
+u8 GetNumLevelsGainedFromDaycare(void);
+void TriggerPendingDaycareEgg(void);
+void RejectEggFromDayCare(void);
+void CreateEgg(struct Pokemon *mon, u16 species, bool8 setHotSpringsLocation);
+void GiveEggFromDaycare(void);
+bool8 DoEggActions_CheckHatch(void);
+u16 GetSelectedMonNickAndSpecies(void);
+void GetDaycareMonNicknames(void);
+u8 GetDaycareState(void);
+void SetDaycareCompatibilityString(void);
+bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio);
+void ShowDaycareLevelMenu(void);
+void ChooseSendDaycareMon(void);
+
+#endif // GUARD_DAYCARE_H
diff --git a/include/egg_hatch.h b/include/egg_hatch.h
new file mode 100644
index 000000000..862d33947
--- /dev/null
+++ b/include/egg_hatch.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_EGG_HATCH_H
+#define GUARD_EGG_HATCH_H
+
+void ScriptHatchMon(void);
+bool8 sub_8071614(void);
+void EggHatch(void);
+u8 GetEggStepsToSubtract(void);
+u16 sub_80722E0(void);
+
+#endif // GUARD_EGG_HATCH_H
diff --git a/include/flags.h b/include/flags.h
index 6dfae9ab2..a891cc13f 100644
--- a/include/flags.h
+++ b/include/flags.h
@@ -1,7 +1,10 @@
#ifndef GUARD_FLAGS_H
#define GUARD_FLAGS_H
+#define FLAG_PENDING_DAYCARE_EGG 0x86
+
#define FLAG_TRAINER_FLAG_START 0x500
+
#define TRAINERS_FLAG_NO 0x356
#define CODE_FLAGS (FLAG_TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860
diff --git a/include/global.h b/include/global.h
index 3421517d7..070f8c0d3 100644
--- a/include/global.h
+++ b/include/global.h
@@ -426,30 +426,52 @@ struct ContestWinner
u8 contestRank;
};
-struct DaycareMon
+struct DaycareMiscMon
{
- struct BoxPokemon mon;
struct MailStruct mail;
u8 OT_name[OT_NAME_LENGTH + 1];
- u8 monName[11];
- u8 language_maybe : 4;
- u8 unknown : 4;
- u32 stepsTaken;
+ u8 monName[POKEMON_NAME_LENGTH + 1];
+ u8 gameLanguage:4;
+ u8 monLanguage:4;
};
-struct DaycareData
+struct DaycareMon
+{
+ struct BoxPokemon mon;
+ struct DaycareMiscMon misc;
+ u32 steps;
+};
+
+#define DAYCARE_MON_COUNT 2
+
+struct DayCare
{
- struct DaycareMon mons[2];
+ struct DaycareMon mons[DAYCARE_MON_COUNT];
u32 offspringPersonality;
u8 stepCounter;
};
+struct DayCareMail
+{
+ /*0x00*/ struct MailStruct message;
+ /*0x24*/ u8 names[19];
+};
+
+struct RecordMixingDayCareMail
+{
+ struct DayCareMail mail[DAYCARE_MON_COUNT];
+ u32 numDaycareMons;
+ bool16 holdsItem[DAYCARE_MON_COUNT];
+};
+
#define MAP_OBJECTS_COUNT 16
#define BERRY_TREES_COUNT 128
#define FLAGS_COUNT 300
#define VARS_COUNT 256
+#define MAIL_COUNT 16
-enum {
+enum
+{
LILYCOVE_LADY_QUIZ,
LILYCOVE_LADY_FAVOUR,
LILYCOVE_LADY_CONTEST
@@ -579,15 +601,14 @@ struct SaveBlock1
/*0x2BB0*/ u16 unk2BB0[6];
/*0x2BBC*/ u16 unk2BBC[6];
/*0x2BC8*/ u16 unk2BC8[6];
- /*0x2BD4*/ u16 unk2BD4[3];
- /*0x2BE0*/ struct MailStruct mail[16];
+ /*0x2BD4*/ u16 unk2BD4[6];
+ /*0x2BE0*/ struct MailStruct mail[MAIL_COUNT];
/*0x2E20*/ u8 additionalPhrases[5]; // bitfield for 33 additional phrases in easy chat system
/*0x2E25*/ u8 unk2E25[3]; // possibly padding?
/*0x2E28*/ OldMan oldMan;
/*0x2e64*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff
- /*0x2e8c*/ u8 filler_2E8C[0x4];
/*0x2e90*/ struct ContestWinner contestWinners[13]; // 0 - 5 used in contest hall, 6 - 7 unused?, 8 - 12 museum
- /*0x3030*/ struct DaycareData daycare;
+ /*0x3030*/ struct DayCare daycare;
/*0x3150*/ struct LinkBattleRecord linkBattleRecords[5];
/*0x31A0*/ u8 unk_31A0;
/*0x31A1*/ u8 filler_31A1[7];
diff --git a/include/items.h b/include/items.h
index 69515f18e..1f6c288c5 100644
--- a/include/items.h
+++ b/include/items.h
@@ -386,4 +386,7 @@ enum
ITEM_OLD_SEA_MAP, // 0x178
};
+#define NUM_TECHNICAL_MACHINES 50
+#define NUM_HIDDEN_MACHINES 8
+
#endif // GUARD_ITEMS_H
diff --git a/include/list_menu.h b/include/list_menu.h
index 93005e482..0249b06af 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -5,31 +5,33 @@
// Exported RAM declarations
-struct ListMenuItem {
+struct ListMenuItem
+{
const u8 *unk_00;
s32 unk_04;
};
struct ListMenu;
-struct ListMenuTemplate {
- struct ListMenuItem *unk_00;
+struct ListMenuTemplate
+{
+ const struct ListMenuItem *items;
void (* unk_04)(u32, bool8, struct ListMenu *);
void (* unk_08)(u8, s32, u8);
- u16 unk_0c;
- u16 unk_0e;
+ u16 totalItems;
+ u16 maxShowed;
u8 unk_10;
u8 unk_11;
u8 unk_12;
- u8 unk_13;
- u32 unk_14_0:4;
- u32 unk_14_4:4;
- u32 unk_15_0:4;
- u32 unk_15_4:4;
- u32 unk_16_0:1;
- u32 unk_16_1:6;
- u32 unk_16_7:1;
- u32 unk_17_0:6;
+ u8 cursor_Y;
+ u32 upText_Y:4; // x1, x2, x4, x8 = xF
+ u32 cursorColor:4; // x10, x20, x40, x80 = xF0
+ u32 fillColor:4; // x100, x200, x400, x800 = xF00
+ u32 cursorShadowColor:4; // x1000, x2000, x4000, x8000 = xF000
+ u32 unk_16_0:1; // x10000
+ u32 spaceBetweenItems:6; // x20000, x40000, x80000, x100000, x200000, x400000 = x7E0000
+ u32 unk_16_7:1; // x800000
+ u32 unk_17_0:6; // x1000000, x2000000, x4000000, x8000000, x10000000, x20000000 = x3F000000
};
struct ListMenu {
diff --git a/include/mail.h b/include/mail.h
index 16ca1f676..1a29d73b5 100644
--- a/include/mail.h
+++ b/include/mail.h
@@ -16,4 +16,10 @@
|| itemId == ITEM_FAB_MAIL \
|| itemId == ITEM_RETRO_MAIL))
+
+bool8 MonHasMail(struct Pokemon *mon);
+void TakeMailFromMon(struct Pokemon *mon);
+u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail);
+void ClearMailStruct(struct MailStruct *mail);
+
#endif // GUARD_MAIL_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 69b9e71d5..1eb052f4e 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -509,9 +509,11 @@ struct Evolution
u16 targetSpecies;
};
+#define EVOS_PER_MON 5
+
struct EvolutionData
{
- struct Evolution evolutions[5];
+ struct Evolution evolutions[EVOS_PER_MON];
};
extern u8 gPlayerPartyCount;
@@ -648,6 +650,9 @@ u16 PlayerGenderToFrontTrainerPicId(u8 playerGender);
void sub_806A1C0(u16 arg0, u8 bankIdentity);
void sub_806A12C(u16 trainerSpriteId, u8 bankIdentity);
u8 GetSecretBaseTrainerPicIndex(void);
+bool8 TryIncrementMonLevel(struct Pokemon *mon);
+void BoxMonToMon(struct BoxPokemon *srcMon, struct Pokemon *dstMon);
+u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves);
#include "sprite.h"
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index 9115ab054..9fcfdba96 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -7,6 +7,7 @@
u8* GetBoxNamePtr(u8 boxNumber);
struct BoxPokemon *GetBoxedMonPtr(u8, u8);
void SetBoxMonNickFromAnyBox(u8, u8, u8 *);
+void CompactPartySlots(void);
u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request);
#endif // GUARD_POKEMON_STORAGE_SYSTEM_H
diff --git a/ld_script.txt b/ld_script.txt
index 2c958ea5a..c6ee53feb 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -77,7 +77,7 @@ SECTIONS {
src/rng.o(.text);
src/util.o(.text);
src/blend_palette.o(.text);
- asm/daycare.o(.text);
+ src/daycare.o(.text);
src/egg_hatch.o(.text);
src/battle_interface.o(.text);
asm/smokescreen.o(.text);
@@ -344,7 +344,7 @@ SECTIONS {
data/data2c.o(.rodata);
src/trig.o(.rodata);
src/util.o(.rodata);
- data/daycare.o(.rodata);
+ src/daycare.o(.rodata);
src/egg_hatch.o(.rodata);
src/battle_gfx_sfx_util.o(.rodata);
src/battle_interface.o(.rodata);
diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c
index c8055470a..85b2bc509 100755
--- a/src/braille_puzzles.c
+++ b/src/braille_puzzles.c
@@ -13,7 +13,7 @@ extern void DrawWholeMapView(); // field_camera
extern void SetCameraPanningCallback(void ( *callback)()); // field_camera
extern void InstallCameraPanAheadCallback(void);
extern void SetCameraPanning(s16 x, s16 y);
-extern u8 brm_get_pokemon_selection(void);
+extern u8 GetCursorSelectionMonId(void);
extern void FieldEffectActiveListRemove(u8 id); // field_effect
extern u8 oei_task_add(void);
@@ -220,7 +220,7 @@ bool8 ShouldDoBrailleStrengthEffect(void)
void sub_8179834(void)
{
- gFieldEffectArguments[0] = brm_get_pokemon_selection();
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
}
@@ -256,7 +256,7 @@ bool8 ShouldDoBrailleFlyEffect(void)
void sub_8179918(void)
{
- gFieldEffectArguments[0] = brm_get_pokemon_selection();
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
}
diff --git a/src/daycare.c b/src/daycare.c
new file mode 100644
index 000000000..8dd45863a
--- /dev/null
+++ b/src/daycare.c
@@ -0,0 +1,1318 @@
+#include "global.h"
+#include "pokemon.h"
+#include "daycare.h"
+#include "string_util.h"
+#include "species.h"
+#include "items.h"
+#include "mail.h"
+#include "pokemon_storage_system.h"
+#include "event_data.h"
+#include "rng.h"
+#include "main.h"
+#include "moves.h"
+#include "egg_hatch.h"
+#include "text.h"
+#include "menu.h"
+#include "international_string_util.h"
+#include "script.h"
+#include "task.h"
+#include "window.h"
+#include "list_menu.h"
+
+#define EGG_MOVES_ARRAY_COUNT 10
+#define EGG_LVL_UP_MOVES_ARRAY_COUNT 50
+
+extern u16 gMoveToLearn;
+
+// text
+extern const u8 gText_MaleSymbol4[];
+extern const u8 gText_FemaleSymbol4[];
+extern const u8 gText_GenderlessSymbol[];
+extern const u8 gText_NewLine2[];
+extern const u8 gText_Exit4[];
+extern const u8 gText_Lv[];
+extern const u8 gExpandedPlaceholder_Empty[];
+extern const u8 gText_Exit[];
+extern const u8 gDaycareText_GetAlongVeryWell[];
+extern const u8 gDaycareText_GetAlong[];
+extern const u8 gDaycareText_DontLikeOther[];
+extern const u8 gDaycareText_PlayOther[];
+
+extern u8 GetCursorSelectionMonId(void);
+extern u16 ItemIdToBattleMoveId(u16);
+extern s32 ListMenuHandleInput(u8);
+extern void sub_81AE6C8(u8, u16*, u16*);
+extern void sub_819746C(u8, bool8);
+extern void sub_81973FC(u8, bool8);
+extern void sub_81B9328(void);
+extern void sub_81AF078(u32, bool8, struct ListMenu *);
+extern void c2_exit_to_overworld_2_switch(void);
+
+// this file's functions
+static void ClearDaycareMonMisc(struct DaycareMiscMon *misc);
+static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *daycare);
+static u8 GetDaycareCompatibilityScore(struct DayCare *daycare);
+static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y);
+
+// RAM buffers used to assist with BuildEggMoveset()
+EWRAM_DATA static u16 sHatchedEggLevelUpMoves[EGG_LVL_UP_MOVES_ARRAY_COUNT] = {0};
+EWRAM_DATA static u16 sHatchedEggFatherMoves[4] = {0};
+EWRAM_DATA static u16 sHatchedEggFinalMoves[4] = {0};
+EWRAM_DATA static u16 sHatchedEggEggMoves[EGG_MOVES_ARRAY_COUNT] = {0};
+EWRAM_DATA static u16 sHatchedEggMotherMoves[4] = {0};
+
+#include "data/pokemon/egg_moves.h"
+
+static const struct WindowTemplate sDaycareLevelMenuWindowTemplate = {0, 0xF, 1, 0xE, 6, 0xF, 8};
+
+static const struct ListMenuItem sLevelMenuItems[] =
+{
+ {gExpandedPlaceholder_Empty, 0},
+ {gExpandedPlaceholder_Empty, 1},
+ {gText_Exit, 5}
+};
+
+static const struct ListMenuTemplate sDaycareListMenuLevelTemplate =
+{
+ .items = sLevelMenuItems,
+ .unk_04 = sub_81AF078,
+ .unk_08 = DaycarePrintMonInfo,
+ .totalItems = 3,
+ .maxShowed = 3,
+ .unk_10 = 0,
+ .unk_11 = 0,
+ .unk_12 = 8,
+ .cursor_Y = 0,
+ .upText_Y = 1,
+ .cursorColor = 2,
+ .fillColor = 1,
+ .cursorShadowColor = 3,
+ .unk_16_0 = TRUE,
+ .spaceBetweenItems = 0,
+ .unk_16_7 = FALSE,
+ .unk_17_0 = 1
+};
+
+static const u8 *const sCompatibilityMessages[] =
+{
+ gDaycareText_GetAlongVeryWell,
+ gDaycareText_GetAlong,
+ gDaycareText_DontLikeOther,
+ gDaycareText_PlayOther
+};
+
+static const u8 sJapaneseEggNickname[] = _("タマゴ"); // "tamago" ("egg" in Japanese)
+
+u8 *GetMonNick(struct Pokemon *mon, u8 *dest)
+{
+ u8 nickname[POKEMON_NAME_LENGTH * 2];
+
+ GetMonData(mon, MON_DATA_NICKNAME, nickname);
+ return StringCopy10(dest, nickname);
+}
+
+u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest)
+{
+ u8 nickname[POKEMON_NAME_LENGTH * 2];
+
+ GetBoxMonData(mon, MON_DATA_NICKNAME, nickname);
+ return StringCopy10(dest, nickname);
+}
+
+u8 CountPokemonInDaycare(struct DayCare *daycare)
+{
+ u8 i, count;
+ count = 0;
+
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
+ {
+ if (GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES) != 0)
+ count++;
+ }
+
+ return count;
+}
+
+void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDayCareMail *daycareMail)
+{
+ u8 i;
+ u8 numDaycareMons = 0;
+
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
+ {
+ if (GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ numDaycareMons++;
+ if (GetBoxMonData(&daycare->mons[i].mon, MON_DATA_HELD_ITEM) == ITEM_NONE)
+ {
+ daycareMail->holdsItem[i] = FALSE;
+ }
+ else
+ {
+ daycareMail->holdsItem[i] = TRUE;
+ }
+ }
+ else
+ {
+ daycareMail->holdsItem[i] = TRUE;
+ }
+ }
+
+ daycareMail->numDaycareMons = numDaycareMons;
+}
+
+static s8 Daycare_FindEmptySpot(struct DayCare *daycare)
+{
+ u8 i;
+
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
+ {
+ if (GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES) == 0)
+ return i;
+ }
+
+ return -1;
+}
+
+static void StorePokemonInDaycare(struct Pokemon *mon, struct DaycareMon *daycareMon)
+{
+ if (MonHasMail(mon))
+ {
+ u8 mailId;
+
+ StringCopy(daycareMon->misc.OT_name, gSaveBlock2Ptr->playerName);
+ GetMonNick(mon, daycareMon->misc.monName);
+ StripExtCtrlCodes(daycareMon->misc.monName);
+ daycareMon->misc.gameLanguage = LANGUAGE_ENGLISH;
+ daycareMon->misc.monLanguage = GetMonData(mon, MON_DATA_LANGUAGE);
+ mailId = GetMonData(mon, MON_DATA_MAIL);
+ daycareMon->misc.mail = gSaveBlock1Ptr->mail[mailId];
+ TakeMailFromMon(mon);
+ }
+
+ daycareMon->mon = mon->box;
+ BoxMonRestorePP(&daycareMon->mon);
+ daycareMon->steps = 0;
+ ZeroMonData(mon);
+ CompactPartySlots();
+ CalculatePlayerPartyCount();
+}
+
+static void StorePokemonInEmptyDaycareSlot(struct Pokemon *mon, struct DayCare *daycare)
+{
+ s8 slotId = Daycare_FindEmptySpot(daycare);
+ StorePokemonInDaycare(mon, &daycare->mons[slotId]);
+}
+
+void StoreSelectedPokemonInDaycare(void)
+{
+ u8 monId = GetCursorSelectionMonId();
+ StorePokemonInEmptyDaycareSlot(&gPlayerParty[monId], &gSaveBlock1Ptr->daycare);
+}
+
+// Shifts the second daycare pokemon slot into the first slot.
+static void ShiftDaycareSlots(struct DayCare *daycare)
+{
+ // This condition is only satisfied when the player takes out the first pokemon from the daycare.
+ if (GetBoxMonData(&daycare->mons[1].mon, MON_DATA_SPECIES) != 0
+ && GetBoxMonData(&daycare->mons[0].mon, MON_DATA_SPECIES) == 0)
+ {
+ daycare->mons[0].mon = daycare->mons[1].mon;
+ ZeroBoxMonData(&daycare->mons[1].mon);
+
+ daycare->mons[0].misc = daycare->mons[1].misc;
+ daycare->mons[0].steps = daycare->mons[1].steps;
+ daycare->mons[1].steps = 0;
+ ClearDaycareMonMisc(&daycare->mons[1].misc);
+ }
+}
+
+static void ApplyDaycareExperience(struct Pokemon *mon)
+{
+ s32 i;
+ bool8 firstMove;
+ u16 learnedMove;
+
+ for (i = 0; i < MAX_MON_LEVEL; i++)
+ {
+ // Add the mon's gained daycare experience level by level until it can't level up anymore.
+ if (TryIncrementMonLevel(mon))
+ {
+ // Teach the mon new moves it learned while in the daycare.
+ firstMove = TRUE;
+ while ((learnedMove = MonTryLearningNewMove(mon, firstMove)) != 0)
+ {
+ firstMove = FALSE;
+ if (learnedMove == 0xFFFF)
+ {
+ // Mon already knows 4 moves.
+ DeleteFirstMoveAndGiveMoveToMon(mon, gMoveToLearn);
+ }
+ }
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ // Re-calculate the mons stats at its new level.
+ CalculateMonStats(mon);
+}
+
+static u16 TakeSelectedPokemonFromDaycare(struct DaycareMon *daycareMon)
+{
+ u16 species;
+ u32 experience;
+ struct Pokemon pokemon;
+
+ GetBoxMonNick(&daycareMon->mon, gStringVar1);
+ species = GetBoxMonData(&daycareMon->mon, MON_DATA_SPECIES);
+ BoxMonToMon(&daycareMon->mon, &pokemon);
+
+ if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_MON_LEVEL)
+ {
+ experience = GetMonData(&pokemon, MON_DATA_EXP) + daycareMon->steps;
+ SetMonData(&pokemon, MON_DATA_EXP, &experience);
+ ApplyDaycareExperience(&pokemon);
+ }
+
+ gPlayerParty[PARTY_SIZE - 1] = pokemon;
+ if (daycareMon->misc.mail.itemId)
+ {
+ GiveMailToMon2(&gPlayerParty[PARTY_SIZE - 1], &daycareMon->misc.mail);
+ ClearDaycareMonMisc(&daycareMon->misc);
+ }
+
+ ZeroBoxMonData(&daycareMon->mon);
+ daycareMon->steps = 0;
+ CompactPartySlots();
+ CalculatePlayerPartyCount();
+ return species;
+}
+
+static u16 TakeSelectedPokemonMonFromDaycareShiftSlots(struct DayCare *daycare, u8 slotId)
+{
+ u16 species = TakeSelectedPokemonFromDaycare(&daycare->mons[slotId]);
+ ShiftDaycareSlots(daycare);
+ return species;
+}
+
+u16 TakePokemonFromDaycare(void)
+{
+ return TakeSelectedPokemonMonFromDaycareShiftSlots(&gSaveBlock1Ptr->daycare, gSpecialVar_0x8004);
+}
+
+static u8 GetLevelAfterDaycareSteps(struct BoxPokemon *mon, u32 steps)
+{
+ struct BoxPokemon tempMon = *mon;
+
+ u32 experience = GetBoxMonData(mon, MON_DATA_EXP) + steps;
+ SetBoxMonData(&tempMon, MON_DATA_EXP, &experience);
+ return GetLevelFromBoxMonExp(&tempMon);
+}
+
+static u8 GetNumLevelsGainedFromSteps(struct DaycareMon *daycareMon)
+{
+ u8 levelBefore;
+ u8 levelAfter;
+
+ levelBefore = GetLevelFromBoxMonExp(&daycareMon->mon);
+ levelAfter = GetLevelAfterDaycareSteps(&daycareMon->mon, daycareMon->steps);
+ return levelAfter - levelBefore;
+}
+
+static u8 GetNumLevelsGainedForDaycareMon(struct DaycareMon *daycareMon)
+{
+ u8 numLevelsGained = GetNumLevelsGainedFromSteps(daycareMon);
+ ConvertIntToDecimalStringN(gStringVar2, numLevelsGained, STR_CONV_MODE_LEFT_ALIGN, 2);
+ GetBoxMonNick(&daycareMon->mon, gStringVar1);
+ return numLevelsGained;
+}
+
+static u32 GetDaycareCostForSelectedMon(struct DaycareMon *daycareMon)
+{
+ u32 cost;
+
+ u8 numLevelsGained = GetNumLevelsGainedFromSteps(daycareMon);
+ GetBoxMonNick(&daycareMon->mon, gStringVar1);
+ cost = 100 + 100 * numLevelsGained;
+ ConvertIntToDecimalStringN(gStringVar2, cost, STR_CONV_MODE_LEFT_ALIGN, 5);
+ return cost;
+}
+
+static u16 GetDaycareCostForMon(struct DayCare *daycare, u8 slotId)
+{
+ return GetDaycareCostForSelectedMon(&daycare->mons[slotId]);
+}
+
+void GetDaycareCost(void)
+{
+ gSpecialVar_0x8005 = GetDaycareCostForMon(&gSaveBlock1Ptr->daycare, gSpecialVar_0x8004);
+}
+
+static void Debug_AddDaycareSteps(u16 numSteps)
+{
+ gSaveBlock1Ptr->daycare.mons[0].steps += numSteps;
+ gSaveBlock1Ptr->daycare.mons[1].steps += numSteps;
+}
+
+u8 GetNumLevelsGainedFromDaycare(void)
+{
+ if (GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[gSpecialVar_0x8004], MON_DATA_SPECIES) != 0)
+ return GetNumLevelsGainedForDaycareMon(&gSaveBlock1Ptr->daycare.mons[gSpecialVar_0x8004]);
+
+ return 0;
+}
+
+static void ClearDaycareMonMisc(struct DaycareMiscMon *misc)
+{
+ s32 i;
+
+ for (i = 0; i < OT_NAME_LENGTH + 1; i++)
+ misc->OT_name[i] = 0;
+ for (i = 0; i < POKEMON_NAME_LENGTH + 1; i++)
+ misc->monName[i] = 0;
+
+ ClearMailStruct(&misc->mail);
+}
+
+static void ClearDaycareMon(struct DaycareMon *daycareMon)
+{
+ ZeroBoxMonData(&daycareMon->mon);
+ daycareMon->steps = 0;
+ ClearDaycareMonMisc(&daycareMon->misc);
+}
+
+static void ClearAllDaycareData(struct DayCare *daycare)
+{
+ u8 i;
+
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
+ ClearDaycareMon(&daycare->mons[i]);
+
+ daycare->offspringPersonality = 0;
+ daycare->stepCounter = 0;
+}
+
+// Determines what the species of an Egg would be based on the given species.
+// It determines this by working backwards through the evolution chain of the
+// given species.
+static u16 GetEggSpecies(u16 species)
+{
+ int i, j, k;
+ bool8 found;
+
+ // Working backwards up to 5 times seems arbitrary, since the maximum number
+ // of times would only be 3 for 3-stage evolutions.
+ for (i = 0; i < EVOS_PER_MON; i++)
+ {
+ found = FALSE;
+ for (j = 1; j < NUM_SPECIES; j++)
+ {
+ for (k = 0; k < EVOS_PER_MON; k++)
+ {
+ if (gEvolutionTable[j].evolutions[k].targetSpecies == species)
+ {
+ species = j;
+ found = TRUE;
+ break;
+ }
+ }
+
+ if (found)
+ break;
+ }
+
+ if (j == NUM_SPECIES)
+ break;
+ }
+
+ return species;
+}
+
+static s32 GetSlotToInheritNature(struct DayCare *daycare)
+{
+ u32 species[DAYCARE_MON_COUNT];
+ s32 i;
+ s32 dittoCount;
+ s32 slot = -1;
+
+ // search for female gender
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
+ {
+ if (GetBoxMonGender(&daycare->mons[i].mon) == MON_FEMALE)
+ slot = i;
+ }
+
+ // search for ditto
+ for (dittoCount = 0, i = 0; i < DAYCARE_MON_COUNT; i++)
+ {
+ species[i] = GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES);
+ if (species[i] == SPECIES_DITTO)
+ dittoCount++, slot = i;
+ }
+
+ // coin flip on ...two Dittos
+ if (dittoCount == 2)
+ {
+ if (Random() >= USHRT_MAX / 2)
+ slot = 0;
+ else
+ slot = 1;
+ }
+
+ // nature inheritance only if holds everstone
+ if (GetBoxMonData(&daycare->mons[slot].mon, MON_DATA_HELD_ITEM) != ITEM_EVERSTONE
+ || Random() >= USHRT_MAX / 2)
+ {
+ return -1;
+ }
+
+ return slot;
+}
+
+static void _TriggerPendingDaycareEgg(struct DayCare *daycare)
+{
+ s32 natureSlot;
+ s32 natureTries = 0;
+
+ SeedRng2(gMain.vblankCounter2);
+ natureSlot = GetSlotToInheritNature(daycare);
+
+ if (natureSlot < 0)
+ {
+ daycare->offspringPersonality = (Random2() << 0x10) | ((Random() % 0xfffe) + 1);
+ }
+ else
+ {
+ u8 wantedNature = GetNatureFromPersonality(GetBoxMonData(&daycare->mons[natureSlot].mon, MON_DATA_PERSONALITY, NULL));
+ u32 personality;
+
+ do
+ {
+ personality = (Random2() << 0x10) | (Random());
+ if (wantedNature == GetNatureFromPersonality(personality) && personality != 0)
+ break; // we found a personality with the same nature
+
+ natureTries++;
+ } while (natureTries <= 2400);
+
+ daycare->offspringPersonality = personality;
+ }
+
+ FlagSet(FLAG_PENDING_DAYCARE_EGG);
+}
+
+static void _TriggerPendingDaycareMaleEgg(struct DayCare *daycare)
+{
+ daycare->offspringPersonality = (Random()) | (0x8000);
+ FlagSet(FLAG_PENDING_DAYCARE_EGG);
+}
+
+void TriggerPendingDaycareEgg(void)
+{
+ _TriggerPendingDaycareEgg(&gSaveBlock1Ptr->daycare);
+}
+
+static void TriggerPendingDaycareMaleEgg(void)
+{
+ _TriggerPendingDaycareMaleEgg(&gSaveBlock1Ptr->daycare);
+}
+
+// Removes the selected index from the given IV list and shifts the remaining
+// elements to the left.
+static void RemoveIVIndexFromList(u8 *ivs, u8 selectedIv)
+{
+ s32 i, j;
+ u8 temp[NUM_STATS];
+
+ ivs[selectedIv] = 0xff;
+ for (i = 0; i < NUM_STATS; i++)
+ {
+ temp[i] = ivs[i];
+ }
+
+ j = 0;
+ for (i = 0; i < NUM_STATS; i++)
+ {
+ if (temp[i] != 0xff)
+ ivs[j++] = temp[i];
+ }
+}
+
+static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare)
+{
+ u8 i;
+ u8 selectedIvs[3];
+ u8 availableIVs[NUM_STATS];
+ u8 whichParent[ARRAY_COUNT(selectedIvs)];
+ u8 iv;
+
+ // Initialize a list of IV indices.
+ for (i = 0; i < NUM_STATS; i++)
+ {
+ availableIVs[i] = i;
+ }
+
+ // Select the 3 IVs that will be inherited.
+ for (i = 0; i < ARRAY_COUNT(selectedIvs); i++)
+ {
+ // Randomly pick an IV from the available list.
+ selectedIvs[i] = availableIVs[Random() % (NUM_STATS - i)];
+
+ // Remove the selected IV index from the available IV indices.
+ RemoveIVIndexFromList(availableIVs, i);
+ }
+
+ // Determine which parent each of the selected IVs should inherit from.
+ for (i = 0; i < ARRAY_COUNT(selectedIvs); i++)
+ {
+ whichParent[i] = Random() % 2;
+ }
+
+ // Set each of inherited IVs on the egg mon.
+ for (i = 0; i < ARRAY_COUNT(selectedIvs); i++)
+ {
+ switch (selectedIvs[i])
+ {
+ case 0:
+ iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_HP_IV);
+ SetMonData(egg, MON_DATA_HP_IV, &iv);
+ break;
+ case 1:
+ iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_ATK_IV);
+ SetMonData(egg, MON_DATA_ATK_IV, &iv);
+ break;
+ case 2:
+ iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_DEF_IV);
+ SetMonData(egg, MON_DATA_DEF_IV, &iv);
+ break;
+ case 3:
+ iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_SPEED_IV);
+ SetMonData(egg, MON_DATA_SPEED_IV, &iv);
+ break;
+ case 4:
+ iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_SPATK_IV);
+ SetMonData(egg, MON_DATA_SPATK_IV, &iv);
+ break;
+ case 5:
+ iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_SPDEF_IV);
+ SetMonData(egg, MON_DATA_SPDEF_IV, &iv);
+ break;
+ }
+ }
+}
+
+// Counts the number of egg moves a pokemon learns and stores the moves in
+// the given array.
+static u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves)
+{
+ u16 eggMoveIdx;
+ u16 numEggMoves;
+ u16 species;
+ u16 i;
+
+ numEggMoves = 0;
+ eggMoveIdx = 0;
+ species = GetMonData(pokemon, MON_DATA_SPECIES);
+ for (i = 0; i < ARRAY_COUNT(gEggMoves) - 1; i++)
+ {
+ if (gEggMoves[i] == species + EGG_MOVES_SPECIES_OFFSET)
+ {
+ eggMoveIdx = i + 1;
+ break;
+ }
+ }
+
+ for (i = 0; i < EGG_MOVES_ARRAY_COUNT; i++)
+ {
+ if (gEggMoves[eggMoveIdx + i] > EGG_MOVES_SPECIES_OFFSET)
+ {
+ // TODO: the curly braces around this if statement are required for a matching build.
+ break;
+ }
+
+ eggMoves[i] = gEggMoves[eggMoveIdx + i];
+ numEggMoves++;
+ }
+
+ return numEggMoves;
+}
+
+static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxPokemon *mother)
+{
+ u16 numSharedParentMoves;
+ u32 numLevelUpMoves;
+ u16 numEggMoves;
+ u16 i, j;
+
+ numSharedParentMoves = 0;
+ for (i = 0; i < 4; i++)
+ {
+ sHatchedEggMotherMoves[i] = 0;
+ sHatchedEggFatherMoves[i] = 0;
+ sHatchedEggFinalMoves[i] = 0;
+ }
+ for (i = 0; i < EGG_MOVES_ARRAY_COUNT; i++)
+ sHatchedEggEggMoves[i] = 0;
+ for (i = 0; i < EGG_LVL_UP_MOVES_ARRAY_COUNT; i++)
+ sHatchedEggLevelUpMoves[i] = 0;
+
+ numLevelUpMoves = GetLevelUpMovesBySpecies(GetMonData(egg, MON_DATA_SPECIES), sHatchedEggLevelUpMoves);
+ for (i = 0; i < 4; i++)
+ {
+ sHatchedEggFatherMoves[i] = GetBoxMonData(father, MON_DATA_MOVE1 + i);
+ sHatchedEggMotherMoves[i] = GetBoxMonData(mother, MON_DATA_MOVE1 + i);
+ }
+
+ numEggMoves = GetEggMoves(egg, sHatchedEggEggMoves);
+
+ for (i = 0; i < 4; i++)
+ {
+ if (sHatchedEggFatherMoves[i] != MOVE_NONE)
+ {
+ for (j = 0; j < numEggMoves; j++)
+ {
+ if (sHatchedEggFatherMoves[i] == sHatchedEggEggMoves[j])
+ {
+ if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == 0xffff)
+ DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFatherMoves[i]);
+ break;
+ }
+ }
+ }
+ else
+ {
+ break;
+ }
+ }
+ for (i = 0; i < 4; i++)
+ {
+ if (sHatchedEggFatherMoves[i] != MOVE_NONE)
+ {
+ for (j = 0; j < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; j++)
+ {
+ if (sHatchedEggFatherMoves[i] == ItemIdToBattleMoveId(ITEM_TM01 + j) && CanMonLearnTMHM(egg, j))
+ {
+ if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == 0xffff)
+ DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFatherMoves[i]);
+ }
+ }
+ }
+ }
+ for (i = 0; i < 4; i++)
+ {
+ if (sHatchedEggFatherMoves[i] == MOVE_NONE)
+ break;
+ for (j = 0; j < 4; j++)
+ {
+ if (sHatchedEggFatherMoves[i] == sHatchedEggMotherMoves[j] && sHatchedEggFatherMoves[i] != MOVE_NONE)
+ sHatchedEggFinalMoves[numSharedParentMoves++] = sHatchedEggFatherMoves[i];
+ }
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ if (sHatchedEggFinalMoves[i] == MOVE_NONE)
+ break;
+ for (j = 0; j < numLevelUpMoves; j++)
+ {
+ if (sHatchedEggLevelUpMoves[j] != MOVE_NONE && sHatchedEggFinalMoves[i] == sHatchedEggLevelUpMoves[j])
+ {
+ if (GiveMoveToMon(egg, sHatchedEggFinalMoves[i]) == 0xffff)
+ DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFinalMoves[i]);
+ break;
+ }
+ }
+ }
+}
+
+static void RemoveEggFromDayCare(struct DayCare *daycare)
+{
+ daycare->offspringPersonality = 0;
+ daycare->stepCounter = 0;
+}
+
+void RejectEggFromDayCare(void)
+{
+ RemoveEggFromDayCare(&gSaveBlock1Ptr->daycare);
+}
+
+static void AlterEggSpeciesWithIncenseItem(u16 *species, struct DayCare *daycare)
+{
+ u16 motherItem, fatherItem;
+ if (*species == SPECIES_WYNAUT || *species == SPECIES_AZURILL)
+ {
+ motherItem = GetBoxMonData(&daycare->mons[0].mon, MON_DATA_HELD_ITEM);
+ fatherItem = GetBoxMonData(&daycare->mons[1].mon, MON_DATA_HELD_ITEM);
+ if (*species == SPECIES_WYNAUT && motherItem != ITEM_LAX_INCENSE && fatherItem != ITEM_LAX_INCENSE)
+ {
+ *species = SPECIES_WOBBUFFET;
+ }
+
+ if (*species == SPECIES_AZURILL && motherItem != ITEM_SEA_INCENSE && fatherItem != ITEM_SEA_INCENSE)
+ {
+ *species = SPECIES_MARILL;
+ }
+ }
+}
+
+static void GiveVoltTackleIfLightBall(struct Pokemon *mon, struct DayCare *daycare)
+{
+ u32 motherItem = GetBoxMonData(&daycare->mons[0].mon, MON_DATA_HELD_ITEM);
+ u32 fatherItem = GetBoxMonData(&daycare->mons[1].mon, MON_DATA_HELD_ITEM);
+
+ if (motherItem == ITEM_LIGHT_BALL || fatherItem == ITEM_LIGHT_BALL)
+ {
+ if (GiveMoveToMon(mon, MOVE_VOLT_TACKLE) == 0xFFFF)
+ DeleteFirstMoveAndGiveMoveToMon(mon, MOVE_VOLT_TACKLE);
+ }
+}
+
+static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parentSlots)
+{
+ u16 i;
+ u16 species[2];
+ u16 eggSpecies;
+
+ // Determine which of the daycare mons is the mother and father of the egg.
+ // The 0th index of the parentSlots array is considered the mother slot, and the
+ // 1st index is the father slot.
+ for (i = 0; i < 2; i++)
+ {
+ species[i] = GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES);
+ if (species[i] == SPECIES_DITTO)
+ {
+ parentSlots[0] = i ^ 1;
+ parentSlots[1] = i;
+ }
+ else if (GetBoxMonGender(&daycare->mons[i].mon) == MON_FEMALE)
+ {
+ parentSlots[0] = i;
+ parentSlots[1] = i ^ 1;
+ }
+ }
+
+ eggSpecies = GetEggSpecies(species[parentSlots[0]]);
+ if (eggSpecies == SPECIES_NIDORAN_F && daycare->offspringPersonality & 0x8000)
+ {
+ eggSpecies = SPECIES_NIDORAN_M;
+ }
+ if (eggSpecies == SPECIES_ILLUMISE && daycare->offspringPersonality & 0x8000)
+ {
+ eggSpecies = SPECIES_VOLBEAT;
+ }
+
+ // Make Ditto the "mother" slot if the other daycare mon is male.
+ if (species[parentSlots[1]] == SPECIES_DITTO && GetBoxMonGender(&daycare->mons[parentSlots[0]].mon) != MON_FEMALE)
+ {
+ u8 temp = parentSlots[1];
+ parentSlots[1] = parentSlots[0];
+ parentSlots[0] = temp;
+ }
+
+ return eggSpecies;
+}
+
+static void _GiveEggFromDaycare(struct DayCare *daycare) // give_egg
+{
+ struct Pokemon egg;
+ u16 species;
+ u8 parentSlots[2]; // 0th index is "mother" daycare slot, 1st is "father"
+ bool8 isEgg;
+
+ species = DetermineEggSpeciesAndParentSlots(daycare, parentSlots);
+ AlterEggSpeciesWithIncenseItem(&species, daycare);
+ SetInitialEggData(&egg, species, daycare);
+ InheritIVs(&egg, daycare);
+ BuildEggMoveset(&egg, &daycare->mons[parentSlots[1]].mon, &daycare->mons[parentSlots[0]].mon);
+
+ if (species == SPECIES_PICHU)
+ GiveVoltTackleIfLightBall(&egg, daycare);
+
+ isEgg = TRUE;
+ SetMonData(&egg, MON_DATA_IS_EGG, &isEgg);
+ gPlayerParty[PARTY_SIZE - 1] = egg;
+ CompactPartySlots();
+ CalculatePlayerPartyCount();
+ RemoveEggFromDayCare(daycare);
+}
+
+void CreateEgg(struct Pokemon *mon, u16 species, bool8 setHotSpringsLocation)
+{
+ u8 metLevel;
+ u16 ball;
+ u8 language;
+ u8 metLocation;
+ u8 isEgg;
+
+ CreateMon(mon, species, EGG_HATCH_LEVEL, 0x20, FALSE, 0, FALSE, 0);
+ metLevel = 0;
+ ball = ITEM_POKE_BALL;
+ language = LANGUAGE_JAPANESE;
+ SetMonData(mon, MON_DATA_POKEBALL, &ball);
+ SetMonData(mon, MON_DATA_NICKNAME, sJapaneseEggNickname);
+ SetMonData(mon, MON_DATA_FRIENDSHIP, &gBaseStats[species].eggCycles);
+ SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel);
+ SetMonData(mon, MON_DATA_LANGUAGE, &language);
+ if (setHotSpringsLocation)
+ {
+ metLocation = 253; // hot springs; see PokemonSummaryScreen_PrintEggTrainerMemo
+ SetMonData(mon, MON_DATA_MET_LOCATION, &metLocation);
+ }
+
+ isEgg = TRUE;
+ SetMonData(mon, MON_DATA_IS_EGG, &isEgg);
+}
+
+static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *daycare)
+{
+ u32 personality;
+ u16 ball;
+ u8 metLevel;
+ u8 language;
+
+ personality = daycare->offspringPersonality;
+ CreateMon(mon, species, EGG_HATCH_LEVEL, 0x20, TRUE, personality, FALSE, 0);
+ metLevel = 0;
+ ball = ITEM_POKE_BALL;
+ language = LANGUAGE_JAPANESE;
+ SetMonData(mon, MON_DATA_POKEBALL, &ball);
+ SetMonData(mon, MON_DATA_NICKNAME, sJapaneseEggNickname);
+ SetMonData(mon, MON_DATA_FRIENDSHIP, &gBaseStats[species].eggCycles);
+ SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel);
+ SetMonData(mon, MON_DATA_LANGUAGE, &language);
+}
+
+void GiveEggFromDaycare(void)
+{
+ _GiveEggFromDaycare(&gSaveBlock1Ptr->daycare);
+}
+
+static bool8 _DoEggActions_CheckHatch(struct DayCare *daycare)
+{
+ u32 i, validEggs = 0;
+
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
+ {
+ if (GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SANITY_BIT2))
+ daycare->mons[i].steps++, validEggs++;
+ }
+
+ // try to trigger poke sex
+ if (daycare->offspringPersonality == 0 && validEggs == 2 && (daycare->mons[1].steps & 0xFF) == 0xFF)
+ {
+ u8 loveScore = GetDaycareCompatibilityScore(daycare);
+ if (loveScore > (Random() * 100u) / USHRT_MAX)
+ TriggerPendingDaycareEgg();
+ }
+
+ if (++daycare->stepCounter == 255) // hatch an egg
+ {
+ u32 steps;
+ u8 toSub = GetEggStepsToSubtract();
+
+ for (i = 0; i < gPlayerPartyCount; i++)
+ {
+ if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ continue;
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SANITY_BIT1))
+ continue;
+
+ steps = GetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP);
+ if (steps != 0) // subtract needed steps
+ {
+ if (steps >= toSub)
+ steps -= toSub;
+ else
+ steps -= 1;
+
+ SetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP, &steps);
+ }
+ else // hatch the egg
+ {
+ gSpecialVar_0x8004 = i;
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE; // no hatching
+}
+
+bool8 DoEggActions_CheckHatch(void)
+{
+ return _DoEggActions_CheckHatch(&gSaveBlock1Ptr->daycare);
+}
+
+static bool8 IsEggPending(struct DayCare *daycare)
+{
+ return (daycare->offspringPersonality != 0);
+}
+
+// gStringVar1 = first mon's nickname
+// gStringVar2 = second mon's nickname
+// gStringVar3 = first mon trainer's name
+static void _GetDaycareMonNicknames(struct DayCare *daycare)
+{
+ u8 text[12];
+ if (GetBoxMonData(&daycare->mons[0].mon, MON_DATA_SPECIES) != 0)
+ {
+ GetBoxMonNick(&daycare->mons[0].mon, gStringVar1);
+ GetBoxMonData(&daycare->mons[0].mon, MON_DATA_OT_NAME, text);
+ StringCopy(gStringVar3, text);
+ }
+
+ if (GetBoxMonData(&daycare->mons[1].mon, MON_DATA_SPECIES) != 0)
+ {
+ GetBoxMonNick(&daycare->mons[1].mon, gStringVar2);
+ }
+}
+
+u16 GetSelectedMonNickAndSpecies(void)
+{
+ GetBoxMonNick(&gPlayerParty[GetCursorSelectionMonId()].box, gStringVar1);
+ return GetBoxMonData(&gPlayerParty[GetCursorSelectionMonId()].box, MON_DATA_SPECIES);
+}
+
+void GetDaycareMonNicknames(void)
+{
+ _GetDaycareMonNicknames(&gSaveBlock1Ptr->daycare);
+}
+
+u8 GetDaycareState(void)
+{
+ // The daycare can be in 4 possible states:
+ // 0: default state--no deposited mons, no egg
+ // 1: there is an egg waiting for the player to pick it up
+ // 2: there is a single pokemon in the daycare
+ // 3: there are two pokemon in the daycare, no egg
+
+ u8 numMons;
+ if (IsEggPending(&gSaveBlock1Ptr->daycare))
+ {
+ // There is an Egg waiting for the player.
+ return 1;
+ }
+
+ numMons = CountPokemonInDaycare(&gSaveBlock1Ptr->daycare);
+ if (numMons != 0)
+ {
+ return numMons + 1;
+ }
+
+ return 0;
+}
+
+static u8 GetDaycarePokemonCount(void)
+{
+ u8 ret = CountPokemonInDaycare(&gSaveBlock1Ptr->daycare);
+ if (ret)
+ return ret;
+
+ return 0;
+}
+
+static bool8 EggGroupsOverlap(u16 *eggGroups1, u16 *eggGroups2)
+{
+ // Determine if the two given egg group lists contain any of the
+ // same egg groups.
+ s32 i, j;
+
+ for (i = 0; i < 2; i++)
+ {
+ for (j = 0; j < 2; j++)
+ {
+ if (eggGroups1[i] == eggGroups2[j])
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static u8 GetDaycareCompatibilityScore(struct DayCare *daycare)
+{
+ u32 i;
+ u16 eggGroups[2][2];
+ u16 species[2];
+ u32 trainerIds[2];
+ u32 genders[2];
+
+ for (i = 0; i < 2; i++)
+ {
+ u32 personality;
+
+ species[i] = GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES);
+ trainerIds[i] = GetBoxMonData(&daycare->mons[i].mon, MON_DATA_OT_ID);
+ personality = GetBoxMonData(&daycare->mons[i].mon, MON_DATA_PERSONALITY);
+ genders[i] = GetGenderFromSpeciesAndPersonality(species[i], personality);
+ eggGroups[i][0] = gBaseStats[species[i]].eggGroup1;
+ eggGroups[i][1] = gBaseStats[species[i]].eggGroup2;
+ }
+
+ // check unbreedable egg group
+ if (eggGroups[0][0] == EGG_GROUP_UNDISCOVERED || eggGroups[1][0] == EGG_GROUP_UNDISCOVERED)
+ return 0;
+ // two Ditto can't breed
+ if (eggGroups[0][0] == EGG_GROUP_DITTO && eggGroups[1][0] == EGG_GROUP_DITTO)
+ return 0;
+
+ // now that we checked, one ditto can breed with any other mon
+ if (eggGroups[0][0] == EGG_GROUP_DITTO || eggGroups[1][0] == EGG_GROUP_DITTO)
+ {
+ if (trainerIds[0] == trainerIds[1]) // same trainer
+ return 20;
+
+ return 50; // different trainers, more chance of poke sex
+ }
+ else
+ {
+ if (genders[0] == genders[1]) // no homo
+ return 0;
+ if (genders[0] == MON_GENDERLESS || genders[1] == MON_GENDERLESS)
+ return 0;
+ if (!EggGroupsOverlap(eggGroups[0], eggGroups[1])) // not compatible with each other
+ return 0;
+
+ if (species[0] == species[1]) // same species
+ {
+ if (trainerIds[0] == trainerIds[1]) // same species and trainer
+ return 50;
+
+ return 70; // different trainers, same species
+ }
+ else
+ {
+ if (trainerIds[0] != trainerIds[1]) // different trainers, different species
+ return 50;
+
+ return 20; // different species, same trainer
+ }
+ }
+}
+
+static u8 GetDaycareCompatibilityScoreFromSave(void)
+{
+ return GetDaycareCompatibilityScore(&gSaveBlock1Ptr->daycare);
+}
+
+void SetDaycareCompatibilityString(void)
+{
+ u8 whichString;
+ u8 relationshipScore;
+
+ relationshipScore = GetDaycareCompatibilityScoreFromSave();
+ whichString = 0;
+ if (relationshipScore == 0)
+ whichString = 3;
+ if (relationshipScore == 20)
+ whichString = 2;
+ if (relationshipScore == 50)
+ whichString = 1;
+ if (relationshipScore == 70)
+ whichString = 0;
+
+ StringCopy(gStringVar4, sCompatibilityMessages[whichString]);
+}
+
+bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio)
+{
+ u8 i;
+ u8 symbolsCount[2]; // male, female
+ symbolsCount[0] = symbolsCount[1] = 0;
+
+ for (i = 0; name[i] != EOS; i++)
+ {
+ if (name[i] == CHAR_MALE)
+ symbolsCount[0]++;
+ if (name[i] == CHAR_FEMALE)
+ symbolsCount[1]++;
+ }
+
+ if (genderRatio == MON_MALE && symbolsCount[0] != 0 && symbolsCount[1] == 0)
+ return TRUE;
+ if (genderRatio == MON_FEMALE && symbolsCount[1] != 0 && symbolsCount[0] == 0)
+ return TRUE;
+
+ return FALSE;
+}
+
+static u8 *AppendGenderSymbol(u8 *name, u8 gender)
+{
+ if (gender == MON_MALE)
+ {
+ if (!NameHasGenderSymbol(name, MON_MALE))
+ return StringAppend(name, gText_MaleSymbol4);
+ }
+ else if (gender == MON_FEMALE)
+ {
+ if (!NameHasGenderSymbol(name, MON_FEMALE))
+ return StringAppend(name, gText_FemaleSymbol4);
+ }
+
+ return StringAppend(name, gText_GenderlessSymbol);
+}
+
+static u8 *AppendMonGenderSymbol(u8 *name, struct BoxPokemon *boxMon)
+{
+ return AppendGenderSymbol(name, GetBoxMonGender(boxMon));
+}
+
+static void GetDaycareLevelMenuText(struct DayCare *daycare, u8 *dest)
+{
+ u8 monNames[2][20];
+ u8 i;
+
+ *dest = EOS;
+ for (i = 0; i < 2; i++)
+ {
+ GetBoxMonNick(&daycare->mons[i].mon, monNames[i]);
+ AppendMonGenderSymbol(monNames[i], &daycare->mons[i].mon);
+ }
+
+ StringCopy(dest, monNames[0]);
+ StringAppend(dest, gText_NewLine2);
+ StringAppend(dest, monNames[1]);
+ StringAppend(dest, gText_NewLine2);
+ StringAppend(dest, gText_Exit4);
+}
+
+static void GetDaycareLevelMenuLevelText(struct DayCare *daycare, u8 *dest)
+{
+ u8 i;
+ u8 level;
+ u8 text[20];
+
+ *dest = EOS;
+ for (i = 0; i < 2; i++)
+ {
+ StringAppend(dest, gText_Lv);
+ level = GetLevelAfterDaycareSteps(&daycare->mons[i].mon, daycare->mons[i].steps);
+ ConvertIntToDecimalStringN(text, level, STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringAppend(dest, text);
+ StringAppend(dest, gText_NewLine2);
+ }
+}
+
+static void DaycareAddTextPrinter(u8 windowId, const u8 *text, u32 x, u32 y)
+{
+ struct TextSubPrinter printer;
+
+ printer.current_text_offset = text;
+ printer.windowId = windowId;
+ printer.fontId = 1;
+ printer.x = x;
+ printer.y = y;
+ printer.currentX = x;
+ printer.currentY = y;
+ printer.fontColor_l = 0;
+ gTextFlags.flag_1 = 0;
+ printer.letterSpacing = 0;
+ printer.lineSpacing = 1;
+ printer.fontColor_h = 2;
+ printer.bgColor = 1;
+ printer.shadowColor = 3;
+
+ AddTextPrinter(&printer, 0xFF, NULL);
+}
+
+static void DaycarePrintMonNick(struct DayCare *daycare, u8 windowId, u32 daycareSlotId, u32 y)
+{
+ u8 nick[POKEMON_NAME_LENGTH * 2];
+
+ GetBoxMonNick(&daycare->mons[daycareSlotId].mon, nick);
+ AppendMonGenderSymbol(nick, &daycare->mons[daycareSlotId].mon);
+ DaycareAddTextPrinter(windowId, nick, 8, y);
+}
+
+static void DaycarePrintMonLvl(struct DayCare *daycare, u8 windowId, u32 daycareSlotId, u32 y)
+{
+ u8 level;
+ u32 x;
+ u8 lvlText[12];
+ u8 intText[8];
+
+ StringCopy(lvlText, gText_Lv);
+ level = GetLevelAfterDaycareSteps(&daycare->mons[daycareSlotId].mon, daycare->mons[daycareSlotId].steps);
+ ConvertIntToDecimalStringN(intText, level, STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringAppend(lvlText, intText);
+ x = GetStringRightAlignXOffset(1, lvlText, 112);
+ DaycareAddTextPrinter(windowId, lvlText, x, y);
+}
+
+static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y)
+{
+ if (daycareSlotId < (unsigned) DAYCARE_MON_COUNT)
+ {
+ DaycarePrintMonNick(&gSaveBlock1Ptr->daycare, windowId, daycareSlotId, y);
+ DaycarePrintMonLvl(&gSaveBlock1Ptr->daycare, windowId, daycareSlotId, y);
+ }
+}
+
+#define tMenuListTaskId data[0]
+#define tWindowId data[1]
+
+static void Task_HandleDaycareLevelMenuInput(u8 taskId)
+{
+ u32 var = ListMenuHandleInput(gTasks[taskId].tMenuListTaskId);
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ switch (var)
+ {
+ case 0:
+ case 1:
+ gSpecialVar_Result = var;
+ break;
+ case 5:
+ gSpecialVar_Result = 2;
+ break;
+ }
+ sub_81AE6C8(gTasks[taskId].tMenuListTaskId, NULL, NULL);
+ sub_819746C(gTasks[taskId].tWindowId, TRUE);
+ RemoveWindow(gTasks[taskId].tWindowId);
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ gSpecialVar_Result = 2;
+ sub_81AE6C8(gTasks[taskId].tMenuListTaskId, NULL, NULL);
+ sub_819746C(gTasks[taskId].tWindowId, TRUE);
+ RemoveWindow(gTasks[taskId].tWindowId);
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ }
+}
+
+void ShowDaycareLevelMenu(void)
+{
+ struct ListMenuTemplate menuTemplate;
+ u8 windowId;
+ u8 listMenuTaskId;
+ u8 daycareMenuTaskId;
+
+ windowId = AddWindow(&sDaycareLevelMenuWindowTemplate);
+ sub_81973FC(windowId, FALSE);
+
+ menuTemplate = sDaycareListMenuLevelTemplate;
+ menuTemplate.unk_10 = windowId;
+ listMenuTaskId = ListMenuInit(&menuTemplate, 0, 0);
+
+ CopyWindowToVram(windowId, 3);
+
+ daycareMenuTaskId = CreateTask(Task_HandleDaycareLevelMenuInput, 3);
+ gTasks[daycareMenuTaskId].tMenuListTaskId = listMenuTaskId;
+ gTasks[daycareMenuTaskId].tWindowId = windowId;
+}
+
+#undef tMenuListTaskId
+#undef tWindowId
+
+void ChooseSendDaycareMon(void)
+{
+ sub_81B9328();
+ gMain.savedCallback = c2_exit_to_overworld_2_switch;
+}
diff --git a/src/decoration.c b/src/decoration.c
index f622662d3..adcdc583b 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -1,5 +1,3 @@
-
-// Includes
#include "global.h"
#include "decompress.h"
#include "malloc.h"
@@ -68,27 +66,27 @@ struct DecorRearrangementDataBuffer {
// Static RAM declarations
EWRAM_DATA u8 *gCurDecorInventoryItems = NULL;
-EWRAM_DATA u8 sSecretBasePCMenuCursorPos = 0;
-EWRAM_DATA u8 sCurDecorCatCount = 0;
-EWRAM_DATA u8 sSecretBaseItemsIndicesBuffer[16] = {};
-EWRAM_DATA u8 sPlayerRoomItemsIndicesBuffer[12] = {};
-EWRAM_DATA u16 sSecretBasePCSelectDecorLineNo = 0;
-EWRAM_DATA u16 sSecretBasePCSelectDecorPageNo = 0;
+EWRAM_DATA static u8 sSecretBasePCMenuCursorPos = 0;
+EWRAM_DATA static u8 sCurDecorCatCount = 0;
+EWRAM_DATA static u8 sSecretBaseItemsIndicesBuffer[16] = {};
+EWRAM_DATA static u8 sPlayerRoomItemsIndicesBuffer[12] = {};
+EWRAM_DATA static u16 sSecretBasePCSelectDecorLineNo = 0;
+EWRAM_DATA static u16 sSecretBasePCSelectDecorPageNo = 0;
EWRAM_DATA u8 gCurDecorationIndex = 0;
-EWRAM_DATA u8 sCurDecorationCategory = DECORCAT_DESK;
-EWRAM_DATA u32 filler_0203a174[2] = {};
+EWRAM_DATA static u8 sCurDecorationCategory = DECORCAT_DESK;
+EWRAM_DATA static u32 filler_0203a174[2] = {};
EWRAM_DATA struct DecorPCPointers gUnknown_0203A17C = {};
-EWRAM_DATA u8 sDecorMenuWindowIndices[4] = {};
+EWRAM_DATA static u8 sDecorMenuWindowIndices[4] = {};
EWRAM_DATA struct DecorPCBuffer *sDecorPCBuffer = NULL;
EWRAM_DATA struct PlaceDecorationGraphicsDataBuffer sPlaceDecorationGraphicsDataBuffer = {};
-EWRAM_DATA u16 sCurDecorMapX = 0;
-EWRAM_DATA u16 sCurDecorMapY = 0;
-EWRAM_DATA u8 sDecor_CameraSpriteObjectIdx1 = 0;
-EWRAM_DATA u8 sDecor_CameraSpriteObjectIdx2 = 0;
-EWRAM_DATA u8 sDecorationLastDirectionMoved = 0;
-EWRAM_DATA struct OamData sDecorSelectorOam = {};
-EWRAM_DATA struct DecorRearrangementDataBuffer sDecorRearrangementDataBuffer[16] = {};
-EWRAM_DATA u8 sCurDecorSelectedInRearrangement = 0;
+EWRAM_DATA static u16 sCurDecorMapX = 0;
+EWRAM_DATA static u16 sCurDecorMapY = 0;
+EWRAM_DATA static u8 sDecor_CameraSpriteObjectIdx1 = 0;
+EWRAM_DATA static u8 sDecor_CameraSpriteObjectIdx2 = 0;
+EWRAM_DATA static u8 sDecorationLastDirectionMoved = 0;
+EWRAM_DATA static struct OamData sDecorSelectorOam = {};
+EWRAM_DATA static struct DecorRearrangementDataBuffer sDecorRearrangementDataBuffer[16] = {};
+EWRAM_DATA static u8 sCurDecorSelectedInRearrangement = 0;
// Static ROM declarations
@@ -800,9 +798,9 @@ void sub_8127330(u8 taskId)
sDecorPCBuffer->items[i].unk_04 = -2;
gUnknown_03006310 = gUnknown_085A6BD0;
gUnknown_03006310.unk_10 = sDecorMenuWindowIndices[1];
- gUnknown_03006310.unk_0c = sDecorPCBuffer->unk_520;
- gUnknown_03006310.unk_00 = sDecorPCBuffer->items;
- gUnknown_03006310.unk_0e = sDecorPCBuffer->unk_521;
+ gUnknown_03006310.totalItems = sDecorPCBuffer->unk_520;
+ gUnknown_03006310.items = sDecorPCBuffer->items;
+ gUnknown_03006310.maxShowed = sDecorPCBuffer->unk_521;
}
void sub_8127454(u8 *dest, u16 decorId)
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 13c088883..a3f7c2ab0 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "pokemon.h"
+#include "egg_hatch.h"
#include "pokedex.h"
#include "items.h"
#include "script.h"
@@ -23,6 +24,7 @@
#include "m4a.h"
#include "window.h"
#include "abilities.h"
+#include "daycare.h"
#include "battle.h" // to get rid of later
struct EggHatchData
@@ -327,7 +329,7 @@ static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
pokerus = GetMonData(egg, MON_DATA_POKERUS);
obedience = GetMonData(egg, MON_DATA_OBEDIENCE);
- CreateMon(temp, species, 5, 32, TRUE, personality, 0, 0);
+ CreateMon(temp, species, EGG_HATCH_LEVEL, 32, TRUE, personality, 0, 0);
for (i = 0; i < 4; i++)
{
@@ -393,19 +395,19 @@ void ScriptHatchMon(void)
AddHatchedMonToParty(gSpecialVar_0x8004);
}
-static bool8 sub_807158C(struct DaycareData* daycare, u8 daycareId)
+static bool8 sub_807158C(struct DayCare *daycare, u8 daycareId)
{
u8 nick[0x20];
- struct DaycareMon* daycareMon = &daycare->mons[daycareId];
+ struct DaycareMon *daycareMon = &daycare->mons[daycareId];
GetBoxMonNick(&daycareMon->mon, nick);
- if (daycareMon->mail.itemId != 0
- && (StringCompareWithoutExtCtrlCodes(nick, daycareMon->monName) != 0
- || StringCompareWithoutExtCtrlCodes(gSaveBlock2Ptr->playerName, daycareMon->OT_name) != 0))
+ if (daycareMon->misc.mail.itemId != 0
+ && (StringCompareWithoutExtCtrlCodes(nick, daycareMon->misc.monName) != 0
+ || StringCompareWithoutExtCtrlCodes(gSaveBlock2Ptr->playerName, daycareMon->misc.OT_name) != 0))
{
StringCopy(gStringVar1, nick);
- TVShowConvertInternationalString(gStringVar2, daycareMon->OT_name, daycareMon->language_maybe);
- TVShowConvertInternationalString(gStringVar3, daycareMon->monName, daycareMon->unknown);
+ TVShowConvertInternationalString(gStringVar2, daycareMon->misc.OT_name, daycareMon->misc.gameLanguage);
+ TVShowConvertInternationalString(gStringVar3, daycareMon->misc.monName, daycareMon->misc.monLanguage);
return TRUE;
}
return FALSE;
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 838e91d90..d09cbc407 100755
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -97,7 +97,6 @@ extern u8 gUnknown_08D97D0C;
extern void reset_temp_tile_data_buffers();
extern void decompress_and_copy_tile_data_to_vram(u8 a, void* tiledata, u8 b, u8 c, u8 d);
extern u8 free_temp_tile_data_buffers_if_possible();
-extern void sub_8069004(struct BoxPokemon* a, void* b);
extern void sub_81C1E20(u8 taskId);
extern u8 *GetMonNickname(struct Pokemon *mon, u8 *dest);
extern u16 SpeciesToPokedexNum(u16 species);
@@ -667,7 +666,7 @@ void sub_81C0098(struct Pokemon *mon)
else
{
struct BoxPokemon *boxMon = gUnknown_0203CF1C->unk0->boxMon;
- sub_8069004(&boxMon[gUnknown_0203CF1C->unk40BE], mon);
+ BoxMonToMon(&boxMon[gUnknown_0203CF1C->unk40BE], mon);
}
}
@@ -1810,7 +1809,7 @@ void sub_81C171C(u8 taskId)
void sub_81C174C(u8 taskId)
{
s16* data = gTasks[taskId].data;
-
+
if (sub_81221EC() != 1)
{
if (gPaletteFade.active != 1)
@@ -1857,7 +1856,7 @@ void sub_81C174C(u8 taskId)
gUnknown_0203CF21 = 4;
gSpecialVar_0x8005 = 4;
sub_81C044C(taskId);
- }
+ }
}
}
}
@@ -1907,7 +1906,7 @@ void sub_81C1940(u8 taskId)
{
if (gUnknown_0203CF1C->unk40C0 != 2)
{
-
+
ClearWindowTilemap(19);
if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible)
ClearWindowTilemap(13);
@@ -2224,7 +2223,7 @@ void sub_81C1E20(u8 taskId)
{
if (gUnknown_0203CF1C->unk40C0 == 2)
PutWindowTilemap(14);
-
+
}
else
{
@@ -2277,7 +2276,7 @@ void sub_81C1F80(u8 taskId)
PutWindowTilemap(15);
sub_81C240C(data[2]);
}
- else
+ else
{
if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible)
{
@@ -3645,7 +3644,7 @@ void sub_81C3D54(u8 taskId)
{
s16 *data = gTasks[taskId].data;
s16 dataa = data[0] - 1;
-
+
switch (dataa)
{
case 0:
@@ -3676,4 +3675,4 @@ void sub_81C3D54(u8 taskId)
return;
}
data[0]++;
-} \ No newline at end of file
+}
diff --git a/src/secret_base.c b/src/secret_base.c
index 89e276e80..de2b7221a 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -1099,9 +1099,9 @@ void game_continue(u8 taskId)
}
gUnknown_03006310 = gUnknown_0858D07C;
gUnknown_03006310.unk_10 = data[6];
- gUnknown_03006310.unk_0c = data[0];
- gUnknown_03006310.unk_00 = gUnknown_0203A020->items;
- gUnknown_03006310.unk_0e = data[3];
+ gUnknown_03006310.totalItems = data[0];
+ gUnknown_03006310.items = gUnknown_0203A020->items;
+ gUnknown_03006310.maxShowed = data[3];
}
void sub_80E9DEC(u32 a0, bool8 flag, struct ListMenu *menu)
@@ -1866,7 +1866,7 @@ void sub_80EAF80(void *records, size_t recordSize, u8 linkIdx)
{
struct SecretBaseRecordMixer mixers[3];
u16 i;
-
+
if (FlagGet(0x60))
{
switch (GetLinkPlayerCount())
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 7f835af30..f037d9ace 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -544,23 +544,7 @@ gUnknown_020249B4: @ 20249B4
.space 0x8
.include "src/rng.o"
-
- .align 2
-gUnknown_020249C4: @ 20249C4
- .space 0x64
-
-gUnknown_02024A28: @ 2024A28
- .space 0x8
-
-gUnknown_02024A30: @ 2024A30
- .space 0x8
-
-gUnknown_02024A38: @ 2024A38
- .space 0x14
-
-gUnknown_02024A4C: @ 2024A4C
- .space 0x8
-
+ .include "src/daycare.o"
.include "src/load_save.o"
gUnknown_02031C58: @ 2031C58