diff options
author | yenatch <yenatch@gmail.com> | 2017-10-08 23:54:46 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-08 23:54:46 -0400 |
commit | b0d49dbbfbfcf39c2a9f88572437b6af77c8f709 (patch) | |
tree | be0dadd4cb3a6c36e27233836a6f104359d49949 /src/field/fldeff_sweetscent.c | |
parent | b21c159b08c57a948edb268ac9b9b5baf6b4332d (diff) | |
parent | 3776a9fb4f0531535b0b5879dab7b3b6bd231736 (diff) |
Merge branch 'master' into scaninc
Diffstat (limited to 'src/field/fldeff_sweetscent.c')
-rw-r--r-- | src/field/fldeff_sweetscent.c | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/src/field/fldeff_sweetscent.c b/src/field/fldeff_sweetscent.c new file mode 100644 index 000000000..b9dbf619d --- /dev/null +++ b/src/field/fldeff_sweetscent.c @@ -0,0 +1,88 @@ +#include "global.h" +#include "field_effect.h" +#include "field_player_avatar.h" +#include "palette.h" +#include "pokemon_menu.h" +#include "rom6.h" +#include "script.h" +#include "sound.h" +#include "sprite.h" +#include "task.h" +#include "wild_encounter.h" + +static void sub_812BFD4(void); +static void sub_812C01C(void); +static void sub_812C084(u8); +static void sub_812C118(u8); + +extern u8 gLastFieldPokeMenuOpened; +extern void (*gFieldCallback)(void); +extern void (*gUnknown_03005CE4)(void); + +extern u8 SweetScentNothingHereScript[]; + +bool8 SetUpFieldMove_SweetScent(void) +{ + gFieldCallback = FieldCallback_Teleport; + gUnknown_03005CE4 = sub_812BFD4; + return TRUE; +} + +static void sub_812BFD4(void) +{ + FieldEffectStart(FLDEFF_SWEET_SCENT); + gFieldEffectArguments[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(FLDEFF_SWEET_SCENT); +} + +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); + } +} |