Fly field effect

This commit is contained in:
PikalaxALT
2020-02-27 16:35:06 -05:00
parent 701d4635b4
commit 9c03c850a2
5 changed files with 87 additions and 196 deletions
+84
View File
@@ -2,11 +2,15 @@
#include "gflib.h"
#include "data.h"
#include "decompress.h"
#include "event_object_movement.h"
#include "field_effect.h"
#include "field_effect_scripts.h"
#include "field_fadetransition.h"
#include "field_weather.h"
#include "overworld.h"
#include "party_menu.h"
#include "quest_log.h"
#include "script.h"
#include "task.h"
#include "trainer_pokemon_sprites.h"
#include "constants/songs.h"
@@ -982,3 +986,83 @@ void SpriteCB_HallOfFameMonitor(struct Sprite * sprite)
if (sprite->animEnded)
FieldEffectFreeGraphicsResources(sprite);
}
void FieldCallback_Fly(void);
void Task_FlyOut(u8 taskId);
void FieldCallback_FlyArrive(void);
void Task_FlyIn(u8 taskId);
void ReturnToFieldFromFlyMapSelect(void)
{
SetMainCallback2(CB2_ReturnToField);
gFieldCallback = FieldCallback_Fly;
}
void FieldCallback_Fly(void)
{
FadeInFromBlack();
CreateTask(Task_FlyOut, 0);
ScriptContext2_Enable();
FreezeObjectEvents();
gFieldCallback = NULL;
}
void Task_FlyOut(u8 taskId)
{
struct Task * task;
task = &gTasks[taskId];
if (task->data[0] == 0)
{
if (!IsWeatherNotFadingIn())
return;
gFieldEffectArguments[0] = GetCursorSelectionMonId();
if ((int)gFieldEffectArguments[0] >= PARTY_SIZE)
gFieldEffectArguments[0] = 0;
FieldEffectStart(FLDEFF_USE_FLY);
task->data[0]++;
}
if (!FieldEffectActiveListContains(FLDEFF_USE_FLY))
{
Overworld_ResetStateAfterFly();
WarpIntoMap();
SetMainCallback2(CB2_LoadMap);
gFieldCallback = FieldCallback_FlyArrive;
DestroyTask(taskId);
}
}
void FieldCallback_FlyArrive(void)
{
Overworld_PlaySpecialMapMusic();
FadeInFromBlack();
CreateTask(Task_FlyIn, 0);
gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE;
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
{
ObjectEventTurn(&gObjectEvents[gPlayerAvatar.objectEventId], DIR_WEST);
}
ScriptContext2_Enable();
FreezeObjectEvents();
gFieldCallback = NULL;
}
void Task_FlyIn(u8 taskId)
{
struct Task *task;
task = &gTasks[taskId];
if (task->data[0] == 0)
{
if (gPaletteFade.active)
{
return;
}
FieldEffectStart(FLDEFF_FLY_IN);
task->data[0]++;
}
if (!FieldEffectActiveListContains(FLDEFF_FLY_IN))
{
ScriptContext2_Disable();
UnfreezeObjectEvents();
DestroyTask(taskId);
}
}
+2 -9
View File
@@ -1,5 +1,5 @@
#include "global.h"
#include "malloc.h"
#include "gflib.h"
#include "battle.h"
#include "battle_anim.h"
#include "battle_controllers.h"
@@ -7,7 +7,6 @@
#include "battle_interface.h"
#include "battle_tower.h"
#include "berry_pouch.h"
#include "bg.h"
#include "data.h"
#include "decompress.h"
#include "easy_chat.h"
@@ -15,11 +14,10 @@
#include "evolution_scene.h"
#include "field_effect.h"
#include "field_player_avatar.h"
#include "field_screen_effect.h"
#include "field_fadetransition.h"
#include "field_weather.h"
#include "fieldmap.h"
#include "fldeff.h"
#include "gpu_regs.h"
#include "graphics.h"
#include "help_system.h"
#include "item.h"
@@ -36,7 +34,6 @@
#include "new_menu_helpers.h"
#include "metatile_behavior.h"
#include "overworld.h"
#include "palette.h"
#include "party_menu.h"
#include "player_pc.h"
#include "pokedex.h"
@@ -50,19 +47,15 @@
#include "reshow_battle_screen.h"
#include "scanline_effect.h"
#include "script.h"
#include "sound.h"
#include "sprite.h"
#include "start_menu.h"
#include "string_util.h"
#include "strings.h"
#include "task.h"
#include "teachy_tv.h"
#include "text.h"
#include "text_window.h"
#include "tm_case.h"
#include "trade.h"
#include "union_room.h"
#include "window.h"
#include "constants/battle.h"
#include "constants/easy_chat.h"
#include "constants/field_effects.h"