Document berry yield

fix wording
This commit is contained in:
hondew 2020-05-02 11:46:12 -04:00
parent cb5b8da77b
commit 49184cd799
2 changed files with 15 additions and 3 deletions

View file

@ -1,6 +1,8 @@
#ifndef GUARD_BERRY_H
#define GUARD_BERRY_H
#define NUM_BERRY_STAGES 4
void ClearEnigmaBerries(void);
void SetEnigmaBerry(u8 *src);
bool32 IsEnigmaBerryValid(void);

View file

@ -1200,6 +1200,15 @@ static u8 GetNumStagesWateredByBerryTreeId(u8 id)
return BerryTreeGetNumStagesWatered(GetBerryTreeInfo(id));
}
// Berries can be watered at 4 stages of growth. This function is likely meant
// to divide the berry yield range equally into quartiles. If you watered the
// tree n times, your yield is a random number in the nth quartile.
//
// However, this function actually skews towards higher berry yields, because
// it rounds `extraYield` to the nearest whole number.
//
// See resulting yields: https://pastebin.com/RLGnP9Ng, and
// bug fix: https://pastebin.com/cDjnUWL0.
static u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water)
{
u32 randMin;
@ -1215,10 +1224,11 @@ static u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water)
randMax = (max - min) * (water);
rand = randMin + Random() % (randMax - randMin + 1);
if ((rand & 3) > 1)
extraYield = rand / 4 + 1;
// Round upwards
if ((rand % NUM_BERRY_STAGES) >= NUM_BERRY_STAGES / 2)
extraYield = rand / NUM_BERRY_STAGES + 1;
else
extraYield = rand / 4;
extraYield = rand / NUM_BERRY_STAGES;
return extraYield + min;
}
}