summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-05-21 14:33:21 -0400
committerscnorton <scnorton@biociphers.org>2017-05-24 16:14:48 -0400
commit29d718686112139d3fd6f5cc8341f354da9414fc (patch)
treeb53c610abd4e0835b108a9089274fff553ad1e0d /src
parent6bb35f495cfc8f31be4a09100d4eb46fd1d5cd68 (diff)
Berry tree field map object callback
Diffstat (limited to 'src')
-rw-r--r--src/field_map_obj.c111
-rw-r--r--src/field_player_avatar.c4
2 files changed, 112 insertions, 3 deletions
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index 7e75d0ac1..98bc73390 100644
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -4,6 +4,7 @@
#include "berry.h"
#include "event_data.h"
#include "field_player_avatar.h"
+#include "field_effect.h"
#include "palette.h"
#include "rom4.h"
#include "rng.h"
@@ -39,6 +40,7 @@ extern u8 (*const gUnknown_08375270[])(struct MapObject *mapObject, struct Sprit
extern u8 (*const gUnknown_08375284[])(struct MapObject *mapObject, struct Sprite *sprite);
extern u8 (*const gUnknown_083752A4[])(struct MapObject *mapObject, struct Sprite *sprite);
extern u8 (*const gUnknown_083752C4[])(struct MapObject *mapObject, struct Sprite *sprite);
+extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite);
struct PairedPalettes
{
@@ -2113,7 +2115,114 @@ u8 sub_805D2C0(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-void FieldObjectCB_BerryTree(struct Sprite *sprite);
+u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite);
+
+void FieldObjectCB_BerryTree(struct Sprite *sprite)
+{
+ struct MapObject *mapObject;
+ mapObject = &gMapObjects[sprite->data0];
+ if (!(sprite->data7 & 1))
+ {
+ get_berry_tree_graphics(mapObject, sprite);
+ sprite->data7 |= 1;
+ }
+ meta_step(mapObject, sprite, sub_805D314);
+}
+
+u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ return gUnknown_083752D0[sprite->data1](mapObject, sprite);
+}
+
+extern u32 gUnknown_0202FF84[];
+
+u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 berryTreeStage;
+ npc_reset(mapObject, sprite);
+ mapObject->mapobj_bit_13 = 1;
+ sprite->invisible = 1;
+ berryTreeStage = GetStageByBerryTreeId(mapObject->trainerRange_berryTreeId);
+ if (!berryTreeStage)
+ {
+ if (!(sprite->data7 & 4) && sprite->animNum == 4)
+ {
+ gUnknown_0202FF84[0] = mapObject->coords2.x;
+ gUnknown_0202FF84[1] = mapObject->coords2.y;
+ gUnknown_0202FF84[2] = sprite->subpriority - 1;
+ gUnknown_0202FF84[3] = sprite->oam.priority;
+ FieldEffectStart(0x17);
+ sprite->animNum = 0;
+ }
+ return 0;
+ }
+ mapObject->mapobj_bit_13 = 0;
+ sprite->invisible = 0;
+ berryTreeStage--;
+ if (sprite->animNum != berryTreeStage)
+ {
+ sprite->data1 = 2;
+ return 1;
+ }
+ get_berry_tree_graphics(mapObject, sprite);
+ FieldObjectSetRegularAnim(mapObject, sprite, 0x39);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805D3EC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sprite->data1 = 0;
+ return 1;
+ }
+ return 0;
+}
+
+u8 do_berry_tree_growth_sparkle_2(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ mapObject->mapobj_bit_1 = 1;
+ sprite->data1 = 3;
+ sprite->data2 = 0;
+ sprite->data7 |= 2;
+ gUnknown_0202FF84[0] = mapObject->coords2.x;
+ gUnknown_0202FF84[1] = mapObject->coords2.y;
+ gUnknown_0202FF84[2] = sprite->subpriority - 1;
+ gUnknown_0202FF84[3] = sprite->oam.priority;
+ FieldEffectStart(0x17);
+ return 1;
+}
+
+u8 sub_805D458(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sprite->data2++;
+ mapObject->mapobj_bit_13 = ((sprite->data2 & 0x2) >> 1);
+ sprite->animPaused = 1;
+ if (sprite->data2 > 64)
+ {
+ get_berry_tree_graphics(mapObject, sprite);
+ sprite->data1 = 4;
+ sprite->data2 = 0;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805D4A8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sprite->data2++;
+ mapObject->mapobj_bit_13 = ((sprite->data2 & 0x2) >> 1);
+ sprite->animPaused = 1;
+ if (sprite->data2 > 64)
+ {
+ sprite->data1 = 0;
+ sprite->data7 &= (-3);
+ return 1;
+ }
+ return 0;
+}
+
void sub_805D4F4(struct Sprite *sprite);
void sub_805D634(struct Sprite *sprite);
void sub_805D774(struct Sprite *sprite);
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index c1b892f15..3a280f58a 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -23,7 +23,7 @@
extern u32 gUnknown_0202FF84[];
//Functions
-static u32 sub_80587D8(void);
+static u8 sub_80587D8(void);
static bool8 sub_8058854(struct MapObject *, u8);
static void npc_clear_strange_bits(struct MapObject *a);
static void MovePlayerAvatarUsingKeypadInput(u8 a, u16 b, u16 c);
@@ -248,7 +248,7 @@ void sub_80587B4(struct Sprite *sprite)
meta_step(&gMapObjects[sprite->data0], sprite, sub_80587D8);
}
-static u32 sub_80587D8(void)
+static u8 sub_80587D8(void)
{
return 0;
}