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))
return;
count = (WILD_DOUBLE_BATTLE) ? 2 : 1;
if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG, 0)
&& GetMonAbility(&gPlayerParty[0]) == ABILITY_COMPOUND_EYES)
{ {
u16 rnd = Random() % 100; var1 = 20;
u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, 0); var2 = 80;
u16 var1 = 45; }
u16 var2 = 95; else
if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG, 0) {
&& GetMonAbility(&gPlayerParty[0]) == ABILITY_COMPOUND_EYES) var1 = 45;
{ var2 = 95;
var1 = 20; }
var2 = 80;
} 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);
} }
} }
} }