diff options
Diffstat (limited to 'src/electric.c')
-rw-r--r-- | src/electric.c | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/src/electric.c b/src/electric.c index ed495fa59..771105365 100644 --- a/src/electric.c +++ b/src/electric.c @@ -6,7 +6,6 @@ #include "sound.h" extern void sub_810E2C8(struct Sprite *); -extern bool8 sub_810B614(struct Task *task, u8 taskId); extern void TranslateAnimSpriteToTargetMonLocation(struct Sprite *); static void sub_810A1A8(struct Sprite *); @@ -38,6 +37,8 @@ static void sub_810B1F0(struct Sprite *); static void sub_810B23C(struct Sprite *); static bool8 sub_810B430(struct Task *task, u8 taskId); static void sub_810B51C(struct Sprite *); +static bool8 sub_810B614(struct Task *task, u8 taskId); +static void sub_810B684(struct Sprite *sprite); const union AnimCmd gUnknown_085956A4[] = { @@ -1493,3 +1494,29 @@ void sub_810B55C(u8 taskId) break; } } + +bool8 sub_810B614(struct Task *task, u8 taskId) +{ + u8 spriteId = CreateSprite(&gUnknown_085956C0, task->data[13], task->data[14], task->data[12]); + + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].callback = sub_810B684; + gSprites[spriteId].data[6] = taskId; + gSprites[spriteId].data[7] = 10; + task->data[10]++; + } + if (task->data[14] >= task->data[15]) + return TRUE; + task->data[14] += 32; + return FALSE; +} + +static void sub_810B684(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + gTasks[sprite->data[6]].data[sprite->data[7]]--; + DestroySprite(sprite); + } +}
\ No newline at end of file |