diff options
author | scnorton <scnorton@biociphers.org> | 2017-08-30 10:06:55 -0400 |
---|---|---|
committer | scnorton <scnorton@biociphers.org> | 2017-08-30 10:06:55 -0400 |
commit | d5840cf101fb6fd3720c525003b891d50611b9b0 (patch) | |
tree | 4ce5098fcf0850897d84bd06c1835bc67623a68f /src | |
parent | c8ceacec344b229a56ec44bf1835345a7a7f5f54 (diff) |
InheritIVs
Diffstat (limited to 'src')
-rw-r--r-- | src/daycare.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/daycare.c b/src/daycare.c index 922d1fd45..641b8d68d 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -336,3 +336,51 @@ void sub_8041960(u8 *data, u8 idx) if (temp[i] != 0xff) data[j++] = temp[i]; } + +void InheritIVs(struct Pokemon *egg, struct DayCareData *dayCareData) +{ + u8 i; + u8 selectedIvs[3]; + u8 allIvs[6]; + u8 whichParent[3]; + u8 iv; + for (i = 0; i < 6; i ++) + allIvs[i] = i; + for (i = 0; i < 3; i ++) + { + selectedIvs[i] = allIvs[Random() % (6 - i)]; + sub_8041960(allIvs, selectedIvs[i]); + } + for (i = 0; i < 3; i ++) + whichParent[i] = Random() % 2; + for (i = 0; i < 3; i ++) + { + switch (selectedIvs[i]) + { + case 0: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_HP_IV); + SetMonData(egg, MON_DATA_HP_IV, &iv); + break; + case 1: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_ATK_IV); + SetMonData(egg, MON_DATA_ATK_IV, &iv); + break; + case 2: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_DEF_IV); + SetMonData(egg, MON_DATA_DEF_IV, &iv); + break; + case 3: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPD_IV); + SetMonData(egg, MON_DATA_SPD_IV, &iv); + break; + case 4: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPATK_IV); + SetMonData(egg, MON_DATA_SPATK_IV, &iv); + break; + case 5: + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPDEF_IV); + SetMonData(egg, MON_DATA_SPDEF_IV, &iv); + break; + } + } +} |