Fix wild mons in double battles not having item

This commit is contained in:
DizzyEggg 2020-01-01 11:12:04 +01:00
parent d21449e19c
commit fcf5870062

View File

@ -6180,51 +6180,60 @@ static s32 GetWildMonTableIdInAlteringCave(u16 species)
void SetWildMonHeldItem(void) void SetWildMonHeldItem(void)
{ {
if (!(gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_TRAINER | BATTLE_TYPE_PYRAMID | BATTLE_TYPE_PIKE))) u16 rnd, species, var1, var2, i, count;
{ if (gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_TRAINER | BATTLE_TYPE_PYRAMID | BATTLE_TYPE_PIKE))
u16 rnd = Random() % 100; return;
u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, 0);
u16 var1 = 45; count = (WILD_DOUBLE_BATTLE) ? 2 : 1;
u16 var2 = 95;
if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG, 0) if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG, 0)
&& GetMonAbility(&gPlayerParty[0]) == ABILITY_COMPOUND_EYES) && GetMonAbility(&gPlayerParty[0]) == ABILITY_COMPOUND_EYES)
{ {
var1 = 20; var1 = 20;
var2 = 80; var2 = 80;
} }
else
{
var1 = 45;
var2 = 95;
}
for (i = 0; i < count; i++)
{
rnd = Random() % 100;
species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES, 0);
if (gMapHeader.mapLayoutId == LAYOUT_ALTERING_CAVE) if (gMapHeader.mapLayoutId == LAYOUT_ALTERING_CAVE)
{ {
s32 alteringCaveId = GetWildMonTableIdInAlteringCave(species); s32 alteringCaveId = GetWildMonTableIdInAlteringCave(species);
if (alteringCaveId != 0) if (alteringCaveId != 0)
{ {
if (rnd < var2) if (rnd < var2)
return; continue;
SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &sAlteringCaveWildMonHeldItems[alteringCaveId].item); SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &sAlteringCaveWildMonHeldItems[alteringCaveId].item);
} }
else else
{ {
if (rnd < var1) if (rnd < var1)
return; continue;
if (rnd < var2) if (rnd < var2)
SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item1); SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBaseStats[species].item1);
else else
SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item2); SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBaseStats[species].item2);
} }
} }
else else
{ {
if (gBaseStats[species].item1 == gBaseStats[species].item2 && gBaseStats[species].item1 != 0) if (gBaseStats[species].item1 == gBaseStats[species].item2 && gBaseStats[species].item1 != 0)
{ {
SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item1); SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBaseStats[species].item1);
} }
else else
{ {
if (rnd < var1) if (rnd < var1)
return; continue;
if (rnd < var2) if (rnd < var2)
SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item1); SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBaseStats[species].item1);
else else
SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item2); SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBaseStats[species].item2);
} }
} }
} }