diff options
author | YamaArashi <shadow962@live.com> | 2017-04-17 15:00:44 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2017-04-17 15:00:44 -0700 |
commit | 4b4597a27a91ea903ea38e3c619132ad03d69a0a (patch) | |
tree | 6ff61b3418b20b9683dd2c3951ee8f306798e1f2 /src | |
parent | e91684cbbf5c76a37497d260040f06c96116bd2c (diff) |
decompile fldeff_sweetscent.s
Diffstat (limited to 'src')
-rw-r--r-- | src/fldeff_sweetscent.c | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c new file mode 100644 index 000000000..a6f569942 --- /dev/null +++ b/src/fldeff_sweetscent.c @@ -0,0 +1,90 @@ +#include "global.h" +#include "asm.h" +#include "task.h" +#include "sound.h" +#include "wild_encounter.h" +#include "sprite.h" +#include "field_effect.h" +#include "palette.h" +#include "script.h" +#include "field_player_avatar.h" +#include "rom6.h" + +static void sub_812BFD4(void); +static void sub_812C01C(void); +static void sub_812C084(u8); +static void sub_812C118(u8); + +extern u32 gUnknown_0202FF84[]; + +extern u8 gLastFieldPokeMenuOpened; +extern void (*gUnknown_0300485C)(void); +extern void (*gUnknown_03005CE4)(void); + +extern u8 SweetScentNothingHereScript[]; + +bool8 SetUpFieldMove_SweetScent(void) +{ + gUnknown_0300485C = sub_808AB90; + gUnknown_03005CE4 = sub_812BFD4; + return TRUE; +} + +static void sub_812BFD4(void) +{ + FieldEffectStart(51); + gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; +} + +bool8 FldEff_SweetScent() +{ + u8 taskId = oei_task_add(); + + gTasks[taskId].data[8] = (u32)sub_812C01C >> 16; + gTasks[taskId].data[9] = (u32)sub_812C01C; + return FALSE; +} + +static void sub_812C01C(void) +{ + u8 taskId; + + PlaySE(0xEC); + BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 0, 8, 0x1F); + taskId = CreateTask(sub_812C084, 0); + gTasks[taskId].data[0] = 0; + FieldEffectActiveListRemove(51); +} + +static void sub_812C084(u8 taskId) +{ + if (!gPaletteFade.active) + { + if (gTasks[taskId].data[0] == 64) + { + gTasks[taskId].data[0] = 0; + if (SweetScentWildEncounter() == TRUE) + { + DestroyTask(taskId); + } + else + { + gTasks[taskId].func = sub_812C118; + BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 8, 0, 0x1F); + } + } + else + { + gTasks[taskId].data[0]++; + } + } +} + +static void sub_812C118(u8 taskId) +{ + if (!gPaletteFade.active) + { + ScriptContext1_SetupScript(SweetScentNothingHereScript); + DestroyTask(taskId); + } +} |