diff options
author | Akira Akashi <rubenru09@aol.com> | 2021-05-31 23:26:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-31 23:26:10 +0100 |
commit | b6ac07c654c6071067fc4b7c839c17fbe3f4b1ac (patch) | |
tree | 47e2e5f78263d849059a9079785fdbeba2ec9d32 /arm9/src/scrcmd_fossils.c | |
parent | 6855ddf1277b1ef0a746cdf5fe36c132e21f2d12 (diff) | |
parent | 5fb5906a0eb46382ba540660da560fad4400988b (diff) |
Merge branch 'master' into make_naix
Diffstat (limited to 'arm9/src/scrcmd_fossils.c')
-rw-r--r-- | arm9/src/scrcmd_fossils.c | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/arm9/src/scrcmd_fossils.c b/arm9/src/scrcmd_fossils.c new file mode 100644 index 00000000..e4177382 --- /dev/null +++ b/arm9/src/scrcmd_fossils.c @@ -0,0 +1,86 @@ +#include "scrcmd.h" +#include "bag.h" + +const u16 gFossilPokemonMap[7][2] = { + { ITEM_OLD_AMBER, SPECIES_AERODACTYL }, + { ITEM_HELIX_FOSSIL, SPECIES_OMANYTE }, + { ITEM_DOME_FOSSIL, SPECIES_KABUTO }, + { ITEM_ROOT_FOSSIL, SPECIES_LILEEP }, + { ITEM_CLAW_FOSSIL, SPECIES_ANORITH }, + { ITEM_ARMOR_FOSSIL, SPECIES_SHIELDON }, + { ITEM_SKULL_FOSSIL, SPECIES_CRANIDOS }, +}; + +THUMB_FUNC BOOL ScrCmd_CountFossils(struct ScriptContext * ctx) +{ + struct UnkSavStruct80 * sav_ptr = ctx->unk80; + + u16 *ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + u8 i; + u16 total; + for (i = 0, total = 0; i < 7; i++) + { + total += Bag_GetQuantity(Sav2_Bag_get(sav_ptr->saveBlock2), gFossilPokemonMap[i][0], 4); + } + + *ret_ptr = total; + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetFossilPokemon(struct ScriptContext * ctx) +{ + u16 *ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 fossilId = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr = 0; + + for (u16 i = 0; i < 7; i++) + { + if (gFossilPokemonMap[i][0] == fossilId) + { + *ret_ptr = gFossilPokemonMap[i][1]; + break; + } + } + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetFossilMinimumAmount(struct ScriptContext * ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + u16 * ret_ptr1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 * ret_ptr2 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 needed_amount = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr1 = 0; + *ret_ptr2 = 0; + + u8 i = 0; + u16 total = 0; + for (; i < 7; i++) + { + total += Bag_GetQuantity(Sav2_Bag_get(sav_ptr->saveBlock2), gFossilPokemonMap[i][0], 4); + if (total >= needed_amount) + { + *ret_ptr1 = gFossilPokemonMap[i][0]; + *ret_ptr2 = i; + break; + } + } + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01F2(struct ScriptContext * ctx) +{ +#pragma unused(ctx) + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01F3(struct ScriptContext * ctx) +{ +#pragma unused(ctx) + return FALSE; +} |