summaryrefslogtreecommitdiff
path: root/arm9/src
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/src')
-rw-r--r--arm9/src/scrcmd_amity_square.c200
1 files changed, 200 insertions, 0 deletions
diff --git a/arm9/src/scrcmd_amity_square.c b/arm9/src/scrcmd_amity_square.c
new file mode 100644
index 00000000..c957dec1
--- /dev/null
+++ b/arm9/src/scrcmd_amity_square.c
@@ -0,0 +1,200 @@
+#include "scrcmd.h"
+#include "constants/accessories.h"
+#include "constants/pokemon.h"
+#include "event_data.h"
+
+extern void FUN_0205F54C(struct ScriptState* state);
+extern u16 FUN_0205F55C(struct ScriptState* state);
+
+static const u16 sAmitySquarePossibleAccessoriesByPokemon[6][10] = {
+ { // Clefairy and Skitty
+ ACCESSORY_WHITE_FLUFF,
+ ACCESSORY_ORANGE_FLUFF,
+ ACCESSORY_WHITE_FEATHER,
+ ACCESSORY_MINI_PEBBLE,
+ ACCESSORY_SMALL_LEAF,
+ ACCESSORY_BLUE_SCALE,
+
+ ACCESSORY_WHITE_BEARD,
+ ACCESSORY_THIN_MUSHROOM,
+ ACCESSORY_BIG_SCALE,
+
+ ACCESSORY_STUMP
+ },
+
+ { // Torchic and Drifloon
+ ACCESSORY_PINK_FLUFF,
+ ACCESSORY_RED_FEATHER,
+ ACCESSORY_YELLOW_FEATHER,
+ ACCESSORY_BLACK_BEARD,
+ ACCESSORY_NARROW_SCALE,
+ ACCESSORY_WHITE_FLUFF,
+
+ ACCESSORY_WHITE_MOUSTACHE,
+ ACCESSORY_SHED_CLAW,
+ ACCESSORY_NARROW_LEAF,
+
+ ACCESSORY_PURPLE_SCALE
+ },
+
+ { // Psyduck and Pachirisu
+ ACCESSORY_SNAGGY_PEBBLE,
+ ACCESSORY_JAGGED_BOULDER,
+ ACCESSORY_BROWN_FLUFF,
+ ACCESSORY_MINI_PEBBLE,
+ ACCESSORY_BLACK_MOUSTACHE,
+ ACCESSORY_SHED_HORN,
+
+ ACCESSORY_NARROW_SCALE,
+ ACCESSORY_ROUND_PEBBLE,
+ ACCESSORY_GREEN_SCALE,
+
+ ACCESSORY_THICK_MUSHROOM
+ },
+
+ { // Jigglypuff and Shroomish
+ ACCESSORY_PINK_SCALE,
+ ACCESSORY_BLUE_FEATHER,
+ ACCESSORY_WHITE_FEATHER,
+ ACCESSORY_BLUE_SCALE,
+ ACCESSORY_THIN_MUSHROOM,
+ ACCESSORY_JAGGED_BOULDER,
+
+ ACCESSORY_WHITE_BEARD,
+ ACCESSORY_BLACK_BEARD,
+ ACCESSORY_BIG_LEAF,
+
+ ACCESSORY_ROUND_PEBBLE
+ },
+
+ { // Pikachu
+ ACCESSORY_ORANGE_FLUFF,
+ ACCESSORY_BROWN_FLUFF,
+ ACCESSORY_SMALL_LEAF,
+ ACCESSORY_RED_FEATHER,
+ ACCESSORY_YELLOW_FEATHER,
+ ACCESSORY_YELLOW_FLUFF,
+
+ ACCESSORY_GLITTER_BOULDER,
+ ACCESSORY_BIG_SCALE,
+ ACCESSORY_BLACK_MOUSTACHE,
+
+ ACCESSORY_PURPLE_SCALE
+ },
+
+ { // Buneary and Happiny
+ ACCESSORY_PINK_SCALE,
+ ACCESSORY_SHED_HORN,
+ ACCESSORY_PINK_FLUFF,
+ ACCESSORY_YELLOW_FEATHER,
+ ACCESSORY_SHED_CLAW,
+ ACCESSORY_BLACK_FLUFF,
+
+ ACCESSORY_SNAGGY_PEBBLE,
+ ACCESSORY_BIG_LEAF,
+ ACCESSORY_GREEN_SCALE,
+
+ ACCESSORY_BLACK_PEBBLE
+ },
+};
+
+THUMB_FUNC BOOL ScrCmd_ClearAmitySquareSteps(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ FUN_0205F54C(state);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_CheckAmitySquareSteps(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ *ret_ptr = FUN_0205F55C(state);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetAmitySquareAccessory(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 species = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 rand = (u16)(LCRandom() % 100);
+
+ u32 j;
+ if (rand < 15)
+ {
+ j = 0;
+ }
+ else if (rand < 30)
+ {
+ j = 1;
+ }
+ else if (rand < 45)
+ {
+ j = 2;
+ }
+ else if (rand < 60)
+ {
+ j = 3;
+ }
+ else if (rand < 70)
+ {
+ j = 4;
+ }
+ else if (rand < 80)
+ {
+ j = 5;
+ }
+ else if (rand < 88)
+ {
+ j = 6;
+ }
+ else if (rand < 93)
+ {
+ j = 7;
+ }
+ else if (rand < 98)
+ {
+ j = 8;
+ }
+ else
+ {
+ j = 9;
+ }
+
+ u32 i;
+ switch (species)
+ {
+ case SPECIES_CLEFAIRY:
+ case SPECIES_SKITTY:
+ i = 0;
+ break;
+ case SPECIES_TORCHIC:
+ case SPECIES_DRIFLOON:
+ i = 1;
+ break;
+ case SPECIES_PSYDUCK:
+ case SPECIES_PACHIRISU:
+ i = 2;
+ break;
+ case SPECIES_JIGGLYPUFF:
+ case SPECIES_SHROOMISH:
+ i = 3;
+ break;
+ case SPECIES_PIKACHU:
+ i = 4;
+ break;
+ case SPECIES_BUNEARY:
+ case SPECIES_HAPPINY:
+ i = 5;
+ break;
+ default:
+ i = 0;
+ break;
+ }
+
+ *ret_ptr = sAmitySquarePossibleAccessoriesByPokemon[i][j];
+ return FALSE;
+}