diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-06-12 08:28:29 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-06-12 08:28:29 -0400 |
commit | e74f4cc8c7aa66618212c6e5b74f21f4bbe29b6e (patch) | |
tree | 872f9e06f731a06a0c962f37e105fa41c364668c /src | |
parent | 0ed7376e9ab879ce9a4628442540185d28dea537 (diff) |
FldEff_NPCFlyOut
Diffstat (limited to 'src')
-rwxr-xr-x | src/field_effect.c | 37 |
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); + } +} |