summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-06-12 08:28:29 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-06-12 08:28:29 -0400
commite74f4cc8c7aa66618212c6e5b74f21f4bbe29b6e (patch)
tree872f9e06f731a06a0c962f37e105fa41c364668c /src
parent0ed7376e9ab879ce9a4628442540185d28dea537 (diff)
FldEff_NPCFlyOut
Diffstat (limited to 'src')
-rwxr-xr-xsrc/field_effect.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/field_effect.c b/src/field_effect.c
index c7a7d8d5b..eeb12300b 100755
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -2602,3 +2602,40 @@ void sub_8088AF4(struct Task *task)
DestroyTask(FindTaskIdByFunc(sub_8088954));
}
}
+
+void sub_8088BC4(struct Sprite *);
+
+u8 FldEff_NPCFlyOut(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+ spriteId = CreateSprite(gFieldEffectObjectTemplatePointers[26], 0x78, 0, 1);
+ sprite = &gSprites[spriteId];
+ sprite->oam.paletteNum = 0;
+ sprite->oam.priority = 1;
+ sprite->callback = sub_8088BC4;
+ sprite->data1 = gUnknown_0202FF84[0];
+ PlaySE(SE_W019);
+ return spriteId;
+}
+
+void sub_8088BC4(struct Sprite *sprite)
+{
+ struct Sprite *npcSprite;
+ sprite->pos2.x = Cos(sprite->data2, 0x8c);
+ sprite->pos2.y = Sin(sprite->data2, 0x48);
+ sprite->data2 = (sprite->data2 + 4) & 0xff;
+ if (sprite->data0)
+ {
+ npcSprite = &gSprites[sprite->data1];
+ npcSprite->coordOffsetEnabled = 0;
+ npcSprite->pos1.x = sprite->pos1.x + sprite->pos2.x;
+ npcSprite->pos1.y = sprite->pos1.y + sprite->pos2.y - 8;
+ npcSprite->pos2.x = 0;
+ npcSprite->pos2.y = 0;
+ }
+ if (sprite->data2 >= 0x80)
+ {
+ FieldEffectStop(sprite, FLDEFF_NPCFLY_OUT);
+ }
+}