summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDizzyEggg <jajkodizzy@wp.pl>2017-11-14 20:23:25 +0100
committerDizzyEggg <jajkodizzy@wp.pl>2017-11-14 20:23:25 +0100
commita972de7bca29f890cc130d2029c29233de29c86e (patch)
treee1be8e87969f10e8757e446a85c4656fd5b561b7
parent72b57b342eaf6e4a3ea77fae8b40e4ab11c64ae2 (diff)
start working on daycare
-rw-r--r--asm/daycare.s1256
-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/trade.s4
-rw-r--r--data/daycare.s2
-rw-r--r--data/egg_moves.inc1306
-rw-r--r--data/specials.inc8
-rw-r--r--include/data/pokemon/egg_moves.h1315
-rw-r--r--include/daycare.h6
-rw-r--r--include/flags.h2
-rw-r--r--include/global.h47
-rw-r--r--include/mail.h6
-rw-r--r--include/pokemon.h6
-rw-r--r--include/pokemon_storage_system.h1
-rw-r--r--ld_script.txt2
-rwxr-xr-xsrc/braille_puzzles.c6
-rw-r--r--src/daycare.c524
-rwxr-xr-xsrc/pokemon_summary_screen.c17
32 files changed, 1994 insertions, 2650 deletions
diff --git a/asm/daycare.s b/asm/daycare.s
index 065911df8..cf2d6e3e8 100644
--- a/asm/daycare.s
+++ b/asm/daycare.s
@@ -5,1239 +5,11 @@
.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
+ thumb_func_start GetEggMoves
+GetEggMoves: @ 80703C8
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -1317,7 +89,7 @@ _08070456:
pop {r1}
bx r1
.pool
- thumb_func_end pokemon_get_eggmoves
+ thumb_func_end GetEggMoves
thumb_func_start daycare_build_child_moveset
daycare_build_child_moveset: @ 8070470
@@ -1410,7 +182,7 @@ _080704F2:
bls _080704F2
ldr r1, =gUnknown_02024A38
adds r0, r7, 0
- bl pokemon_get_eggmoves
+ bl GetEggMoves
lsls r0, 24
lsrs r0, 24
mov r8, r0
@@ -1815,7 +587,7 @@ _0807083E:
lsls r0, 1
add r0, sp
ldrh r0, [r0]
- bl sub_8070004
+ bl GetEggSpecies
lsls r0, 16
lsrs r4, r0, 16
cmp r4, 0x1D
@@ -1895,7 +667,7 @@ sub_80708C8: @ 80708C8
bl sub_8070A0C
mov r0, sp
adds r1, r6, 0
- bl sub_8070260
+ bl InheritIVs
ldrb r0, [r5, 0x1]
movs r2, 0x8C
adds r1, r0, 0
@@ -1927,7 +699,7 @@ _08070918:
mov r1, sp
movs r2, 0x64
bl memcpy
- bl party_compaction
+ bl CompactPartySlots
bl CalculatePlayerPartyCount
adds r0, r6, 0
bl sub_8070710
@@ -2163,7 +935,7 @@ _08070AEE:
bl __udivsi3
cmp r4, r0
bls _08070B34
- bl sub_80701E0
+ bl TriggerPendingDaycareEgg
_08070B34:
movs r0, 0x8E
lsls r0, 1
@@ -2309,7 +1081,7 @@ _08070C44:
thumb_func_start sub_8070C58
sub_8070C58: @ 8070C58
push {r4,r5,lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
movs r5, 0x64
@@ -2318,7 +1090,7 @@ sub_8070C58: @ 8070C58
adds r0, r4
ldr r1, =gStringVar1
bl GetBoxMonNick
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
muls r0, r5
@@ -2364,7 +1136,7 @@ _08070CD0:
ldr r0, [r4]
ldr r1, =0x00003030
adds r0, r1
- bl daycare_count_pokemon
+ bl CountPokemonInDaycare
lsls r0, 24
lsrs r0, 24
cmp r0, 0
@@ -2389,7 +1161,7 @@ sub_8070CF8: @ 8070CF8
ldr r0, [r0]
ldr r1, =0x00003030
adds r0, r1
- bl daycare_count_pokemon
+ bl CountPokemonInDaycare
lsls r0, 24
lsrs r0, 24
cmp r0, 0
@@ -2844,7 +1616,7 @@ _08071046:
adds r1, 0x88
adds r1, r2
ldr r1, [r1]
- bl sub_806FDEC
+ bl GetLevelAfterDaycareSteps
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -2981,7 +1753,7 @@ sub_8071148: @ 8071148
adds r4, 0x88
adds r4, r1
ldr r1, [r4]
- bl sub_806FDEC
+ bl GetLevelAfterDaycareSteps
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
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 63acc9982..c2e2b9e7e 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 e31bf22e2..db1445445 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 947517ed5..6fc839e2d 100644
--- a/asm/fldeff_strength.s
+++ b/asm/fldeff_strength.s
@@ -18,7 +18,7 @@ hm_prepare_rocksmash: @ 8145DC4
b _08145DF2
_08145DD8:
ldr r4, =gScriptResult
- 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 ea7b2653a..8414ef62e 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 da4bfbfd1..ba136f65c 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 280b658d4..dbefa954b 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 cd91ed3e1..dedfef985 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 a8365ba18..0d331e9a0 100755
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -3539,7 +3539,7 @@ _080C8E38:
b _080C8EA0
.pool
_080C8E4C:
- bl party_compaction
+ bl CompactPartySlots
bl sub_80CB950
ldr r0, =gUnknown_02039D08
ldr r1, [r0]
@@ -3699,7 +3699,7 @@ _080C8FA4:
ldrb r0, [r0]
cmp r0, 0
beq _080C8FD0
- bl party_compaction
+ bl CompactPartySlots
bl sub_80CB950
b _080C905C
.pool
@@ -4453,7 +4453,7 @@ sub_80C9670: @ 80C9670
b _080C96AE
.pool
_080C9688:
- bl party_compaction
+ bl CompactPartySlots
bl sub_80CB950
ldr r1, [r4]
ldrb r0, [r1]
@@ -6567,7 +6567,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
@@ -14193,8 +14193,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
@@ -14271,7 +14271,7 @@ _080CE992:
pop {r1}
bx r1
.pool
- thumb_func_end party_compaction
+ thumb_func_end CompactPartySlots
thumb_func_start sub_80CE9A8
sub_80CE9A8: @ 80CE9A8
@@ -21042,7 +21042,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 68719469f..066ba1206 100644
--- a/asm/rom6.s
+++ b/asm/rom6.s
@@ -263,7 +263,7 @@ sub_8135654: @ 8135654
cmp r0, 0
beq _0813568C
ldr r4, =gScriptResult
- 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, =gScriptResult
- 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/trade.s b/asm/trade.s
index 57253154e..235ef35b1 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -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/data/daycare.s b/data/daycare.s
index c249a668c..95ba024cb 100644
--- a/data/daycare.s
+++ b/data/daycare.s
@@ -7,8 +7,6 @@
-@ 832ADD8
- .include "data/egg_moves.inc"
.align 2
gUnknown_0832B6C0:: @ 832B6C0
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/specials.inc b/data/specials.inc
index 49f6b91a0..35491bb03 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -197,12 +197,12 @@ gSpecials:: @ 81DBA64
def_special sp0B8_daycare
def_special sp0B9_daycare_relationship_comment
def_special sub_8070C58
- def_special daycare_send_selected_pokemon
+ def_special StoreSelectedPokemonInDaycare
def_special sub_8071330
def_special sub_80712C0
- def_special sub_806FF30
- def_special sub_806FED8
- def_special sub_806FDC4
+ def_special GetNumLevelsGainedFromDaycare
+ def_special GetDaycareCost
+ def_special TakePokemonFromDaycare
def_special ScriptHatchMon
def_special EggHatch
def_special sub_8071614
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..b50daca09
--- /dev/null
+++ b/include/daycare.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_DAYCARE
+#define GUARD_DAYCARE
+
+
+
+#endif // GUARD_DAYCARE
diff --git a/include/flags.h b/include/flags.h
index 7d825feba..6b8e65c45 100644
--- a/include/flags.h
+++ b/include/flags.h
@@ -1,6 +1,8 @@
#ifndef GUARD_FLAGS_H
#define GUARD_FLAGS_H
+#define FLAG_PENDING_DAYCARE_EGG 0x86
+
#define TRAINER_FLAG_START 0x500
#define TRAINERS_FLAG_NO 0x356
#define CODE_FLAGS (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/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..c0b2841ca 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,8 @@ 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);
#include "sprite.h"
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index 49680793d..a1611479c 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -4,5 +4,6 @@
u8* GetBoxNamePtr(u8 boxNumber);
struct BoxPokemon *GetBoxedMonPtr(u8, u8);
void SetBoxMonNickFromAnyBox(u8, u8, u8 *);
+void CompactPartySlots(void);
#endif // GUARD_POKEMON_STORAGE_SYSTEM_H
diff --git a/ld_script.txt b/ld_script.txt
index 40f592e3a..38df1ac8c 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -77,6 +77,7 @@ SECTIONS {
src/rng.o(.text);
src/util.o(.text);
src/blend_palette.o(.text);
+ src/daycare.o(.text);
asm/daycare.o(.text);
src/egg_hatch.o(.text);
src/battle_interface.o(.text);
@@ -343,6 +344,7 @@ SECTIONS {
data/data2c.o(.rodata);
src/trig.o(.rodata);
src/util.o(.rodata);
+ src/daycare.o(.rodata);
data/daycare.o(.rodata);
src/egg_hatch.o(.rodata);
src/battle_gfx_sfx_util.o(.rodata);
diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c
index 9a6f0371c..bf419eee2 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..c7b9dba8b
--- /dev/null
+++ b/src/daycare.c
@@ -0,0 +1,524 @@
+#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"
+
+#define EGG_MOVES_ARRAY_COUNT 10
+
+extern u16 gMoveToLearn;
+
+extern u8 GetCursorSelectionMonId(void);
+
+// this file's functions
+static void ClearDaycareMonMisc(struct DaycareMiscMon *misc);
+
+#include "data/pokemon/egg_moves.h"
+
+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);
+}
+
+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);
+}
+
+u8 GetNumLevelsGainedFromSteps(struct DaycareMon *daycareMon)
+{
+ u8 levelBefore;
+ u8 levelAfter;
+
+ levelBefore = GetLevelFromBoxMonExp(&daycareMon->mon);
+ levelAfter = GetLevelAfterDaycareSteps(&daycareMon->mon, daycareMon->steps);
+ return levelAfter - levelBefore;
+}
+
+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.
+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, slot = -1, dittoCount;
+
+ // 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);
+}
+
+void TriggerPendingDaycareMaleEgg(void)
+{
+ _TriggerPendingDaycareMaleEgg(&gSaveBlock1Ptr->daycare);
+}
+
+// Removes the selected index from the given IV list and shifts the remaining
+// elements to the left.
+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];
+ }
+}
+
+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;
+ }
+ }
+}
+
+
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
+}