Merge branch '_RHH/master' into _RHH/upcoming

# Conflicts:
#	test/species.c
This commit is contained in:
Eduardo Quezada 2024-06-04 16:47:29 -04:00
commit dce10ab705
32 changed files with 316 additions and 131 deletions

37
.github/workflows/docs.yml vendored Normal file
View file

@ -0,0 +1,37 @@
name: Docs
on:
push:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
contents: write
pages: write
id-token: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install latest mdbook
run: |
tag=$(curl 'https://api.github.com/repos/rust-lang/mdbook/releases/latest' | jq -r '.tag_name')
url="https://github.com/rust-lang/mdbook/releases/download/${tag}/mdbook-${tag}-x86_64-unknown-linux-gnu.tar.gz"
mkdir mdbook
curl -sSL $url | tar -xz --directory=./mdbook
echo `pwd`/mdbook >> $GITHUB_PATH
- name: Build Book
run: |
cd docs
mdbook build
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: 'docs/book'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

View file

@ -215,9 +215,9 @@ Note that in msys2, Copy is Ctrl+Insert and Paste is Shift+Insert.
To install Python on msys2, simply run the following commands:
```bash
pacman -S mingw-w64-x86_64-python3
```
```bash
pacman -S mingw-w64-x86_64-python3
```
Python is now installed.
@ -592,7 +592,8 @@ Note that this is not necessary for a non-modern (agbcc) build since those are b
<details>
<summary><i>Deprecated; installing agbcc is optional since 1.7.0</i>.</summary>
2. Install agbcc into pokeemerald-expansion. The commands to run depend on certain conditions. **You should only follow one of the listed instructions**:
1. Install agbcc into pokeemerald-expansion. The commands to run depend on certain conditions. **You should only follow one of the listed instructions**:
- If agbcc has **not been built before** in the folder where you chose to store pokeemerald Expansion, run the following commands to build and install it into pokeemerald-expansion:
```bash
@ -621,18 +622,20 @@ Note that this is not necessary for a non-modern (agbcc) build since those are b
<details>
<summary><i>Note...</i></summary>
> If building agbcc or pokeemerald results in an error, try deleting the agbcc folder and re-installing agbcc as if it has not been built before.
> If building agbcc or pokeemerald results in an error, try deleting the agbcc folder and re-installing agbcc as if it has not been built before.
</details>
3. Once agbcc is installed, change directory back to the base directory where pokeemerald-expansion and agbcc are stored:
2. Once agbcc is installed, change directory back to the base directory where pokeemerald-expansion and agbcc are stored:
```bash
cd ..
```
4. To compile with agbcc:
```make agbcc```
3. To compile with agbcc:
```bash
make agbcc
```
</details>

View file

@ -86,10 +86,13 @@ ELF = $(ROM:.gba=.elf)
MAP = $(ROM:.gba=.map)
SYM = $(ROM:.gba=.sym)
TEST_OBJ_DIR_NAME_MODERN := build/modern-test
TEST_OBJ_DIR_NAME_AGBCC := build/test
ifeq ($(MODERN),0)
TEST_OBJ_DIR_NAME := build/test
TEST_OBJ_DIR_NAME := $(TEST_OBJ_DIR_NAME_AGBCC)
else
TEST_OBJ_DIR_NAME := build/modern-test
TEST_OBJ_DIR_NAME := $(TEST_OBJ_DIR_NAME_MODERN)
endif
TESTELF = $(ROM:.gba=-test.elf)
HEADLESSELF = $(ROM:.gba=-test-headless.elf)
@ -310,7 +313,9 @@ tidymodern:
tidycheck:
rm -f $(TESTELF) $(HEADLESSELF)
rm -rf $(TEST_OBJ_DIR_NAME)
rm -rf $(TEST_OBJ_DIR_NAME_MODERN)
rm -rf $(TEST_OBJ_DIR_NAME_AGBCC)
ifneq ($(MODERN),0)
$(C_BUILDDIR)/berry_crush.o: override CFLAGS += -Wno-address-of-packed-member

View file

@ -14,11 +14,11 @@ Based off RHH's pokeemerald-expansion v1.8.0 https://github.com/rh-hideout/pokee
## What features are included?
- ***IMPORTANT*❗❗ Read through these to learn what features you can toggle**:
- [Battle configurations](include/config/battle.h)
- [Pokémon configurations](include/config/pokemon.h)
- [Item configurations](include/config/item.h)
- [Overworld configurations](include/config/overworld.h)
- [Debug configurations](include/config/debug.h)
- [Battle configurations](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/config/battle.h)
- [Pokémon configurations](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/config/pokemon.h)
- [Item configurations](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/config/item.h)
- [Overworld configurations](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/config/overworld.h)
- [Debug configurations](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/config/debug.h)
- ***Upgraded battle engine.***
- Gen5+ damage calculation.
- 2v2 Wild battles support.
@ -62,7 +62,7 @@ Based off RHH's pokeemerald-expansion v1.8.0 https://github.com/rh-hideout/pokee
- Recalculating stats at the end of every battle.
- Level 100 Pokémon can earn EVs.
- Inverse battle support.
- TONS of other features listed [here](include/config/battle.h).
- TONS of other features listed [here](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/config/battle.h).
- ***Full Trainer customization***
- Nickname, EVs, IVs, moves, ability, ball, friendship, nature, gender, shininess.
- Custom tag battle support (teaming up an NPC in a double battle).
@ -94,7 +94,7 @@ Based off RHH's pokeemerald-expansion v1.8.0 https://github.com/rh-hideout/pokee
- All gender differences.
- Custom female icons for female Hippopotas Hippowdon, Pikachu and Wobbufett
- 3 Perfect IVs on Legendaries, Mythicals and Ultra Beasts.
- ***Customizable form change tables. Full list of methods [here](include/constants/form_change_types.h).***
- ***Customizable form change tables. Full list of methods [here](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/constants/form_change_types.h).***
- Item holding (eg. Giratina/Arceus)
- Item using (eg. Oricorio)
- Time of day option for Shaymin
@ -115,7 +115,7 @@ Based off RHH's pokeemerald-expansion v1.8.0 https://github.com/rh-hideout/pokee
- Egg Move Transfer, including Mirror Herb (configurable).
- Nature inheriting 100% of the time with Everstone (configurable)
- Gen6+ Ability inheriting (configurable).
- ***Items from newer Generations. Full list [here](include/constants/items.h).***
- ***Items from newer Generations. Full list [here](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/constants/items.h).***
- ***Gen 6+ Exp. Share*** (configurable)
- Berserk Gene
- Most battle items from Gen 4+

View file

@ -1819,6 +1819,7 @@ BattleScript_EffectHitSwitchTarget::
tryfaintmon BS_TARGET
jumpiffainted BS_TARGET, TRUE, BattleScript_MoveEnd
jumpifability BS_TARGET, ABILITY_SUCTION_CUPS, BattleScript_AbilityPreventsPhasingOut
jumpifability BS_TARGET, ABILITY_GUARD_DOG, BattleScript_MoveEnd
jumpifstatus3 BS_TARGET, STATUS3_ROOTED, BattleScript_PrintMonIsRooted
jumpiftargetdynamaxed BattleScript_HitSwitchTargetDynamaxed
tryhitswitchtarget BattleScript_MoveEnd
@ -2765,12 +2766,11 @@ BattleScript_EffectHealBlock::
BattleScript_EffectHitEscape::
call BattleScript_EffectHit_Ret
jumpifmovehadnoeffect BattleScript_MoveEnd
jumpifability BS_TARGET, ABILITY_GUARD_DOG, BattleScript_MoveEnd
tryfaintmon BS_TARGET
moveendto MOVEEND_ATTACKER_VISIBLE
moveendfrom MOVEEND_TARGET_VISIBLE
jumpifbattleend BattleScript_HitEscapeEnd
jumpifbyte CMP_NOT_EQUAL gBattleOutcome 0, BattleScript_HitEscapeEnd
jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_HitEscapeEnd
jumpifemergencyexited BS_TARGET, BattleScript_HitEscapeEnd
goto BattleScript_MoveSwitch
BattleScript_HitEscapeEnd:

1
docs/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
book

1
docs/CHANGELOG.md Normal file
View file

@ -0,0 +1 @@
{{#include ../CHANGELOG.md}}

1
docs/INSTALL.md Normal file
View file

@ -0,0 +1 @@
{{#include ../INSTALL.md}}

1
docs/README.md Normal file
View file

@ -0,0 +1 @@
{{#include ../README.md}}

52
docs/SUMMARY.md Normal file
View file

@ -0,0 +1,52 @@
# Summary
- [README](./README.md)
- [Installation](./INSTALL.md)
- [Setting up WSL1 (Legacy Portion)](./legacy_WSL1_INSTALL.md)
- [Changelog](./CHANGELOG.md)
- [1.8.x]()
- [Version 1.8.4](changelogs/1.8.x/1.8.4.md)
- [Version 1.8.3](changelogs/1.8.x/1.8.3.md)
- [Version 1.8.2](changelogs/1.8.x/1.8.2.md)
- [Version 1.8.1](changelogs/1.8.x/1.8.1.md)
- [Version 1.8.0](changelogs/1.8.x/1.8.0.md)
- [1.7.x]()
- [Version 1.7.4](changelogs/1.7.x/1.7.4.md)
- [Version 1.7.3](changelogs/1.7.x/1.7.3.md)
- [Version 1.7.2](changelogs/1.7.x/1.7.2.md)
- [Version 1.7.1](changelogs/1.7.x/1.7.1.md)
- [Version 1.7.0](changelogs/1.7.x/1.7.0.md)
- [1.6.x]()
- [Version 1.6.2](changelogs/1.6.x/1.6.2.md)
- [Version 1.6.1](changelogs/1.6.x/1.6.1.md)
- [Version 1.6.0](changelogs/1.6.x/1.6.0.md)
- [1.5.x]()
- [Version 1.5.3](changelogs/1.5.x/1.5.3.md)
- [Version 1.5.2](changelogs/1.5.x/1.5.2.md)
- [Version 1.5.1](changelogs/1.5.x/1.5.1.md)
- [Version 1.5.0](changelogs/1.5.x/1.5.0.md)
- [1.4.x]()
- [Version 1.4.3](changelogs/1.4.x/1.4.3.md)
- [Version 1.4.2](changelogs/1.4.x/1.4.2.md)
- [Version 1.4.1](changelogs/1.4.x/1.4.1.md)
- [Version 1.4.0](changelogs/1.4.x/1.4.0.md)
- [1.3.x]()
- [Version 1.3.0](changelogs/1.3.x/1.3.0.md)
- [1.2.x]()
- [Version 1.2.0](changelogs/1.2.x/1.2.0.md)
- [1.1.x]()
- [Version 1.1.1](changelogs/1.1.x/1.1.1.md)
- [Version 1.1.0](changelogs/1.1.x/1.1.0.md)
- [1.0.x]()
- [Version 1.0.0](changelogs/1.0.x/1.0.0.md)
- [Pre-1.0.x]()
- [Version 0.9.0](changelogs/0.9.x/0.9.0.md)

14
docs/book.toml Normal file
View file

@ -0,0 +1,14 @@
[book]
language = "en"
multilingual = false
src = "."
title = "pokeemerald-expansion"
[output.html]
git-repository-url = "https://github.com/rh-hideout/pokeemerald-expansion"
edit-url-template = "https://github.com/rh-hideout/pokeemerald-expansion/edit/master/docs/{path}"
site-url = "/pokeemerald-expansion/"
[preprocessor.fix_links]
command = "python3 fix_links.py"
after = [ "links" ]

51
docs/fix_links.py Normal file
View file

@ -0,0 +1,51 @@
# workarounds to avoid changing current directory structure
# autolink logic based on https://github.com/zopieux/py-gfm/blob/fd7b33ed138d240d24dfb659acff7d4ce3f43745/gfm/autolink.py
import json
import sys
import re
URL_RE = re.compile(
r"(```(?s:.)+?```|`.+?`|<.+?>)|"
r"\b((?:(?i:ftp|https?)://|(?i:www)\d{0,3}[.])(?:[^\s()<>]+|"
r"\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()"
r"<>]+\)))*\)|[^\s`!()\[\]{};:" + r"'" + r'".,<>?«»“”‘’*]))'
)
PROTOCOL_RE = re.compile(r"^(?i:ftp|https?)://")
ANCHOR_RE = re.compile(r"(\]\((?:[^)#]+\.md)?#)([^)]+\))")
def handle_url(m):
code = m.group(1)
if code:
return code
href = m.group(2)
if not PROTOCOL_RE.match(href):
href = "http://%s" % href
return f'<{href}>'
def handle_anchor(m):
page = m.group(1)
anchor = m.group(2)
return page + anchor.lower()
def proc_items(items):
for item in items:
if 'Chapter' in item:
s = item['Chapter']['content']
s = s.replace('](README.md)', '](./)')
s = s.replace('](/INSTALL.md', '](INSTALL.md')
s = s.replace('](docs/', '](')
s = URL_RE.sub(handle_url, s)
item['Chapter']['content'] = ANCHOR_RE.sub(handle_anchor, s)
proc_items(item['Chapter']['sub_items'])
if __name__ == '__main__':
if len(sys.argv) > 1:
if sys.argv[1] == "supports":
sys.exit(0)
context, book = json.load(sys.stdin)
proc_items(book['sections'])
print(json.dumps(book))

View file

@ -38,4 +38,4 @@
source /etc/profile.d/devkit-env.sh
```
Proceed to [Choosing where to store pokeemerald (WSL1) of the current INSTALL.md](/INSTALL.md#choosing-where-to-store-pokeemerald-WSL1).
Proceed to [Choosing where to store pokeemerald (WSL1) of the current INSTALL.md](/INSTALL.md#choosing-where-to-store-pokeemerald-expansion-WSL1).

Binary file not shown.

Before

Width:  |  Height:  |  Size: 606 B

After

Width:  |  Height:  |  Size: 677 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1,023 B

View file

@ -1,18 +1,17 @@
JASC-PAL
0100
15
152 208 160
16 16 16
90 33 73
45 45 45
78 73 71
202 103 162
146 57 119
26 29 28
121 167 58
84 117 53
184 140 7
254 208 27
249 249 249
14
153 211 165
28 28 28
29 57 21
45 45 45
84 117 53
90 33 73
78 73 71
146 57 119
121 167 58
254 208 27
205 80 156
153 157 166
16 16 16
249 249 249

View file

@ -1,18 +1,17 @@
JASC-PAL
0100
15
152 208 160
16 16 16
90 33 73
140 49 12
207 71 17
202 103 162
146 57 119
26 29 28
121 167 58
84 117 53
184 140 7
254 208 27
249 249 249
14
153 211 165
122 50 46
29 57 21
188 99 61
84 117 53
90 33 73
254 153 96
146 57 119
121 167 58
254 208 27
205 80 156
153 157 166
16 16 16
249 249 249

Binary file not shown.

Before

Width:  |  Height:  |  Size: 404 B

After

Width:  |  Height:  |  Size: 648 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 564 B

After

Width:  |  Height:  |  Size: 579 B

View file

@ -1,19 +1,18 @@
JASC-PAL
0100
16
153 210 164
150 79 14
243 156 78
15
153 211 165
96 51 23
52 52 65
19 121 123
150 79 14
126 114 71
194 89 3
211 97 3
235 120 35
255 205 32
189 162 115
243 156 78
16 16 16
189 162 115
244 226 188
15 15 15
235 120 35
46 116 82
211 97 3
52 52 65
252 252 252
197 164 98
255 205 32

View file

@ -1,19 +1,18 @@
JASC-PAL
0100
16
153 210 164
220 58 50
255 155 172
96 51 23
139 83 58
194 89 3
228 167 137
244 226 188
15 15 15
255 119 147
46 116 82
237 82 82
15
153 211 165
101 29 39
52 52 65
252 252 252
221 177 74
19 121 123
165 46 63
173 124 103
214 79 87
242 112 116
255 205 32
197 164 98
251 142 158
16 16 16
222 194 165
252 235 186
252 252 252

Binary file not shown.

Before

Width:  |  Height:  |  Size: 572 B

After

Width:  |  Height:  |  Size: 556 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 756 B

After

Width:  |  Height:  |  Size: 640 B

View file

@ -1,18 +1,17 @@
JASC-PAL
0100
15
152 208 160
136 64 0
0 0 0
240 184 72
16 104 96
232 152 0
0 160 144
176 112 8
248 232 184
216 192 160
88 64 48
255 255 255
240 208 56
168 64 32
232 72 56
14
153 211 165
111 75 49
52 52 65
19 121 123
141 100 71
189 130 64
213 154 79
214 177 67
255 216 80
255 192 96
202 180 142
16 16 16
255 237 192
255 250 254

View file

@ -1,18 +1,17 @@
JASC-PAL
0100
15
152 208 160
136 64 0
0 0 0
245 158 128
16 104 96
242 112 116
0 186 182
214 79 87
248 232 184
216 192 160
88 64 48
255 255 255
240 208 56
168 64 32
232 72 56
14
153 211 165
132 66 101
52 52 65
19 121 123
173 124 103
192 105 142
217 138 162
214 177 67
255 216 80
251 164 179
222 194 165
16 16 16
255 237 192
255 250 254

View file

@ -1875,7 +1875,7 @@ s32 CalcCritChanceStageArgs(u32 battlerAtk, u32 battlerDef, u32 move, bool32 rec
critChance = -1;
}
else if (gStatuses3[battlerAtk] & STATUS3_LASER_FOCUS
|| gMovesInfo[gCurrentMove].alwaysCriticalHit
|| gMovesInfo[move].alwaysCriticalHit
|| (abilityAtk == ABILITY_MERCILESS && gBattleMons[battlerDef].status1 & STATUS1_PSN_ANY))
{
critChance = -2;
@ -1884,7 +1884,7 @@ s32 CalcCritChanceStageArgs(u32 battlerAtk, u32 battlerDef, u32 move, bool32 rec
{
critChance = 2 * ((gBattleMons[battlerAtk].status2 & STATUS2_FOCUS_ENERGY) != 0)
+ 1 * ((gBattleMons[battlerAtk].status2 & STATUS2_DRAGON_CHEER) != 0)
+ gMovesInfo[gCurrentMove].criticalHitStage
+ gMovesInfo[move].criticalHitStage
+ (holdEffectAtk == HOLD_EFFECT_SCOPE_LENS)
+ 2 * (holdEffectAtk == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[battlerAtk].species == SPECIES_CHANSEY)
+ 2 * BENEFITS_FROM_LEEK(battlerAtk, holdEffectAtk)
@ -3305,7 +3305,10 @@ void SetMoveEffect(bool32 primary, bool32 certain)
case MOVE_EFFECT_SP_DEF_MINUS_1:
case MOVE_EFFECT_ACC_MINUS_1:
case MOVE_EFFECT_EVS_MINUS_1:
flags = affectsUser;
if (affectsUser == MOVE_EFFECT_AFFECTS_USER)
flags = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN;
else
flags = 0;
if (mirrorArmorReflected)
flags |= (STAT_CHANGE_ALLOW_PTR * !affectsUser);
else
@ -3355,7 +3358,10 @@ void SetMoveEffect(bool32 primary, bool32 certain)
case MOVE_EFFECT_SP_DEF_MINUS_2:
case MOVE_EFFECT_ACC_MINUS_2:
case MOVE_EFFECT_EVS_MINUS_2:
flags = affectsUser;
if (affectsUser == MOVE_EFFECT_AFFECTS_USER)
flags = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN;
else
flags = 0;
if (mirrorArmorReflected && !affectsUser)
flags |= STAT_CHANGE_ALLOW_PTR;
if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(2) | STAT_BUFF_NEGATIVE,

View file

@ -906,7 +906,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] =
//.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
.backPic = gMonBackPic_Pawmi,
.backPicSize = MON_COORDS_SIZE(64, 64),
.backPicYOffset = 0,
.backPicYOffset = 7,
//.backAnimId = BACK_ANIM_NONE,
.palette = gMonPalette_Pawmi,
.shinyPalette = gMonShinyPalette_Pawmi,
@ -960,7 +960,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] =
//.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
.backPic = gMonBackPic_Pawmo,
.backPicSize = MON_COORDS_SIZE(64, 64),
.backPicYOffset = 4,
.backPicYOffset = 6,
//.backAnimId = BACK_ANIM_NONE,
.palette = gMonPalette_Pawmo,
.shinyPalette = gMonShinyPalette_Pawmo,
@ -6172,12 +6172,12 @@ const struct SpeciesInfo gSpeciesInfoGen9[] =
.trainerOffset = 0,
.frontPic = gMonFrontPic_Okidogi,
.frontPicSize = MON_COORDS_SIZE(64, 64),
.frontPicYOffset = 1,
.frontPicYOffset = 2,
.frontAnimFrames = sAnims_Okidogi,
//.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
.backPic = gMonBackPic_Okidogi,
.backPicSize = MON_COORDS_SIZE(64, 64),
.backPicYOffset = 16,
.backPicYOffset = 12,
//.backAnimId = BACK_ANIM_NONE,
.palette = gMonPalette_Okidogi,
.shinyPalette = gMonShinyPalette_Okidogi,

View file

@ -695,7 +695,7 @@ static void InheritPokeball(struct Pokemon *egg, struct BoxPokemon *father, stru
if (P_BALL_INHERITING >= GEN_7)
{
if (fatherSpecies == motherSpecies)
if (GET_BASE_SPECIES_ID(fatherSpecies) == GET_BASE_SPECIES_ID(motherSpecies))
inheritBall = (Random() % 2 == 0 ? motherBall : fatherBall);
else if (motherSpecies != SPECIES_DITTO)
inheritBall = motherBall;
@ -986,7 +986,8 @@ static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parent
{
u16 i;
u16 species[DAYCARE_MON_COUNT];
u16 eggSpecies;
u16 eggSpecies, parentSpecies;
bool8 hasMotherEverstone, hasFatherEverstone;
for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
@ -1003,7 +1004,18 @@ static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parent
}
}
eggSpecies = GetEggSpecies(species[parentSlots[0]]);
hasMotherEverstone = ItemId_GetHoldEffect(GetBoxMonData(&daycare->mons[0].mon, MON_DATA_HELD_ITEM)) == HOLD_EFFECT_PREVENT_EVOLVE;
hasFatherEverstone = ItemId_GetHoldEffect(GetBoxMonData(&daycare->mons[1].mon, MON_DATA_HELD_ITEM)) == HOLD_EFFECT_PREVENT_EVOLVE;
if (hasMotherEverstone)
parentSpecies = species[parentSlots[0]];
else if (hasFatherEverstone && GET_BASE_SPECIES_ID(GetEggSpecies(species[parentSlots[0]])) == GET_BASE_SPECIES_ID(GetEggSpecies(species[parentSlots[1]])))
parentSpecies = species[parentSlots[1]];
else
parentSpecies = GET_BASE_SPECIES_ID(GetEggSpecies(species[parentSlots[0]]));
eggSpecies = GetEggSpecies(parentSpecies);
if (eggSpecies == SPECIES_NIDORAN_F && daycare->offspringPersonality & EGG_GENDER_MALE)
eggSpecies = SPECIES_NIDORAN_M;
else if (eggSpecies == SPECIES_ILLUMISE && daycare->offspringPersonality & EGG_GENDER_MALE)

View file

@ -314,7 +314,7 @@ static void CreateHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
{
u16 species;
u32 personality, pokerus;
u8 i, friendship, language, gameMet, markings, isModernFatefulEncounter;
u8 i, friendship, language, gameMet, markings, isModernFatefulEncounter, ball;
u16 moves[MAX_MON_MOVES];
u32 ivs[NUM_STATS];
@ -334,6 +334,7 @@ static void CreateHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
markings = GetMonData(egg, MON_DATA_MARKINGS);
pokerus = GetMonData(egg, MON_DATA_POKERUS);
isModernFatefulEncounter = GetMonData(egg, MON_DATA_MODERN_FATEFUL_ENCOUNTER);
ball = GetMonData(egg, MON_DATA_POKEBALL);
CreateMon(temp, species, EGG_HATCH_LEVEL, USE_RANDOM_IVS, TRUE, personality, OT_ID_PLAYER_ID, 0);
@ -352,6 +353,7 @@ static void CreateHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
SetMonData(temp, MON_DATA_FRIENDSHIP, &friendship);
SetMonData(temp, MON_DATA_POKERUS, &pokerus);
SetMonData(temp, MON_DATA_MODERN_FATEFUL_ENCOUNTER, &isModernFatefulEncounter);
SetMonData(temp, MON_DATA_POKEBALL, &ball);
*egg = *temp;
}

View file

@ -1041,14 +1041,10 @@ static void ItemUseOnFieldCB_EscapeRope(u8 taskId)
{
Overworld_ResetStateAfterDigEscRope();
if (I_KEY_ESCAPE_ROPE < GEN_8)
{
RemoveUsedItem();
}
else
{
CopyItemName(gSpecialVar_ItemId, gStringVar2);
StringExpandPlaceholders(gStringVar4, gText_PlayerUsedVar2);
}
RemoveBagItem(gSpecialVar_ItemId, 1);
CopyItemName(gSpecialVar_ItemId, gStringVar2);
StringExpandPlaceholders(gStringVar4, gText_PlayerUsedVar2);
gTasks[taskId].data[0] = 0;
DisplayItemMessageOnField(taskId, gStringVar4, Task_UseDigEscapeRopeOnField);
}
@ -1422,7 +1418,9 @@ void Task_UseHoneyOnField(u8 taskId)
static void ItemUseOnFieldCB_Honey(u8 taskId)
{
Overworld_ResetStateAfterDigEscRope();
RemoveUsedItem();
RemoveBagItem(gSpecialVar_ItemId, 1);
CopyItemName(gSpecialVar_ItemId, gStringVar2);
StringExpandPlaceholders(gStringVar4, gText_PlayerUsedVar2);
gTasks[taskId].data[0] = 0;
DisplayItemMessageOnField(taskId, gStringVar4, Task_UseHoneyOnField);
}

View file

@ -7,6 +7,7 @@ TEST("Form species ID tables are shared between all forms")
u32 i;
u32 species = SPECIES_NONE;
const u16 *formSpeciesIdTable;
for (i = 0; i < NUM_SPECIES; i++)
{
if (gSpeciesInfo[i].formSpeciesIdTable)
@ -29,6 +30,7 @@ TEST("Form change tables contain only forms in the form species ID table")
u32 species = SPECIES_NONE;
const struct FormChange *formChangeTable;
const u16 *formSpeciesIdTable;
for (i = 0; i < NUM_SPECIES; i++)
{
if (gSpeciesInfo[i].formChangeTable)
@ -61,6 +63,7 @@ TEST("Form change targets have the appropriate species flags")
u32 i;
u32 species = SPECIES_NONE;
const struct FormChange *formChangeTable;
for (i = 0; i < NUM_SPECIES; i++)
{
if (gSpeciesInfo[i].formChangeTable)

View file

@ -670,7 +670,11 @@ static s32 MgbaVPrintf_(const char *fmt, va_list va)
/* Entry point for the Debugging and Control System. Handles illegal
* instructions, which are typically caused by branching to an invalid
* address. */
#if MODERN
__attribute__((naked, section(".dacs"), target("arm")))
#else
__attribute__((naked, section(".dacs")))
#endif
void DACSEntry(void)
{
asm(".arm\n\