cut field effect is decompiled and documented
This commit is contained in:
@@ -87,7 +87,7 @@ void LockSelectedEventObject(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80984F4(void)
|
||||
void ScriptUnfreezeEventObjects(void)
|
||||
{
|
||||
u8 objectId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[objectId]);
|
||||
|
||||
443
src/fldeff_cut.c
443
src/fldeff_cut.c
@@ -1,4 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "fldeff_cut.h"
|
||||
#include "field_camera.h"
|
||||
#include "field_effect.h"
|
||||
#include "event_object_movement.h"
|
||||
@@ -18,6 +19,19 @@
|
||||
#include "constants/songs.h"
|
||||
#include "constants/abilities.h"
|
||||
|
||||
extern bool8 SetLastTalkedObjectInFrontOfPlayer(u8);
|
||||
extern u8 oei_task_add(void);
|
||||
extern void ScriptUnfreezeEventObjects(void);
|
||||
extern bool8 IsMewPlayingHideAndSeek(void);
|
||||
|
||||
extern struct MapPosition gPlayerFacingPosition;
|
||||
|
||||
extern const u8 Route103_EventScript_290705[];
|
||||
extern const u8 FarawayIsland_Interior_EventScript_267EDB[];
|
||||
|
||||
extern const u8 gFieldEffectPic_CutGrass[];
|
||||
extern const u16 gFieldEffectObjectPalette6[];
|
||||
|
||||
// tileset 0 as first
|
||||
#define METATILE_ID_GRASS 0x1
|
||||
#define METATILE_ID_POKE_GRASS 0xD
|
||||
@@ -31,7 +45,7 @@
|
||||
#define METATILE_ID_GRASS_TREE_LEFT 0x1CE
|
||||
#define METATILE_ID_GRASS_TREE_RIGHT 0x1CF
|
||||
|
||||
#define METATILE_ID_POKE_TALL_GRASS 0x15
|
||||
#define METATILE_ID_POKE_LONG_GRASS 0x15
|
||||
|
||||
// tileset 6 as second
|
||||
#define METATILE_ID_POKE_STEP_LAVA_GRASS 0x206
|
||||
@@ -44,53 +58,24 @@
|
||||
#define METATILE_ID_ASH 0x218
|
||||
|
||||
// tileset 8 as second
|
||||
#define METATILE_ID_POKE_TALL_GRASS_START 0x208
|
||||
#define METATILE_ID_POKE_LONG_GRASS_START 0x208
|
||||
|
||||
#define METATILE_ID_SECRET_BASE_LEFT_TALL_GRASS 0x279
|
||||
#define METATILE_ID_SECRET_BASE_CENTER_TALL_GRASS 0x27A
|
||||
#define METATILE_ID_SECRET_BASE_RIGHT_TALL_GRASS 0x27B
|
||||
#define METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS 0x279
|
||||
#define METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS 0x27A
|
||||
#define METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS 0x27B
|
||||
|
||||
#define METATILE_ID_SECRET_BASE_LEFT_POKE_TALL_GRASS 0x281
|
||||
#define METATILE_ID_SECRET_BASE_CENTER_POKE_TALL_GRASS 0x282
|
||||
#define METATILE_ID_SECRET_BASE_RIGHT_POKE_TALL_GRASS 0x283
|
||||
|
||||
extern bool8 SetLastTalkedObjectInFrontOfPlayer(u8);
|
||||
extern u8 oei_task_add(void);
|
||||
|
||||
extern struct MapPosition gPlayerFacingPosition;
|
||||
extern u8 *gCutGrassSpriteArrayPtr;
|
||||
|
||||
extern const u8 Route103_EventScript_290705[];
|
||||
extern const u8 gFieldEffectPic_CutGrass[];
|
||||
extern const u16 gFieldEffectObjectPalette6[];
|
||||
#define METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS 0x281
|
||||
#define METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS 0x282
|
||||
#define METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS 0x283
|
||||
|
||||
// cut 'square' defines
|
||||
#define CUT_NORMAL_SIDE 3
|
||||
#define CUT_NORMAL_AREA CUT_NORMAL_SIDE * CUT_NORMAL_SIDE
|
||||
/* P - player
|
||||
X - cut area
|
||||
|
||||
XXX
|
||||
XPX
|
||||
XXX
|
||||
*/
|
||||
|
||||
#define CUT_HYPER_SIDE 5
|
||||
#define CUT_HYPER_AREA CUT_HYPER_SIDE * CUT_HYPER_SIDE
|
||||
/* P - player
|
||||
X - cut area
|
||||
|
||||
XXXXX
|
||||
XXXXX
|
||||
XXPXX
|
||||
XXXXX
|
||||
XXXXX
|
||||
*/
|
||||
|
||||
IWRAM_DATA u8 gUnknown_03001100;
|
||||
IWRAM_DATA u8 gUnknown_03001101;
|
||||
IWRAM_DATA u8 gUnknown_03001102;
|
||||
IWRAM_DATA u32 fldeff_cut_unused_03001104;
|
||||
IWRAM_DATA bool8 gUnknown_03001108[CUT_HYPER_AREA];
|
||||
#define CUT_SPRITE_ARRAY_COUNT 8
|
||||
|
||||
struct HyperCutterUnk
|
||||
{
|
||||
@@ -99,7 +84,30 @@ struct HyperCutterUnk
|
||||
u8 unk2[2];
|
||||
};
|
||||
|
||||
const struct HyperCutterUnk gUnknown_0857C608[] =
|
||||
// this file's functions
|
||||
static void FieldCallback_CutTree(void);
|
||||
static void FieldCallback_CutGrass(void);
|
||||
static void StartCutTreeFieldEffect(void);
|
||||
static void StartCutGrassFieldEffect(void);
|
||||
static void SetCutGrassMetatile(s16, s16);
|
||||
static void SetCutGrassMetatiles(s16, s16);
|
||||
static void CutGrassSpriteCallback1(struct Sprite *);
|
||||
static void CutGrassSpriteCallback2(struct Sprite *);
|
||||
static void CutGrassSpriteCallbackEnd(struct Sprite *);
|
||||
static void HandleLongGrassOnHyper(u8, s16, s16);
|
||||
|
||||
// IWRAM variables
|
||||
static IWRAM_DATA u8 sCutSquareSide;
|
||||
static IWRAM_DATA u8 sTileCountFromPlayer_X;
|
||||
static IWRAM_DATA u8 sTileCountFromPlayer_Y;
|
||||
static IWRAM_DATA u32 sUnused;
|
||||
static IWRAM_DATA bool8 sHyperCutTiles[CUT_HYPER_AREA];
|
||||
|
||||
// EWRAM variables
|
||||
static EWRAM_DATA u8 *sCutGrassSpriteArrayPtr = NULL;
|
||||
|
||||
// const rom data
|
||||
static const struct HyperCutterUnk sHyperCutStruct[] =
|
||||
{
|
||||
{-2, -2, {1}},
|
||||
{-1, -2, {1}},
|
||||
@@ -119,7 +127,7 @@ const struct HyperCutterUnk gUnknown_0857C608[] =
|
||||
{2, 2, {9}},
|
||||
};
|
||||
|
||||
const struct OamData gOamData_CutGrass =
|
||||
static const struct OamData sOamData_CutGrass =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = 0,
|
||||
@@ -136,53 +144,43 @@ const struct OamData gOamData_CutGrass =
|
||||
.affineParam = 0,
|
||||
};
|
||||
|
||||
const union AnimCmd gSpriteAnim_CutGrass[] =
|
||||
static const union AnimCmd sSpriteAnim_CutGrass[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 30),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
const union AnimCmd *const gSpriteAnimTable_CutGrass[] =
|
||||
static const union AnimCmd *const sSpriteAnimTable_CutGrass[] =
|
||||
{
|
||||
gSpriteAnim_CutGrass,
|
||||
sSpriteAnim_CutGrass,
|
||||
};
|
||||
|
||||
const struct SpriteFrameImage gSpriteImageTable_CutGrass[] =
|
||||
static const struct SpriteFrameImage sSpriteImageTable_CutGrass[] =
|
||||
{
|
||||
{gFieldEffectPic_CutGrass, 0x20},
|
||||
};
|
||||
|
||||
const struct SpritePalette gFieldEffectObjectPaletteInfo6 = {gFieldEffectObjectPalette6, 0x1000};
|
||||
|
||||
void FieldCallback_CutTree(void);
|
||||
void FieldCallback_CutGrass(void);
|
||||
void StartCutTreeFieldEffect(void);
|
||||
void StartCutGrassFieldEffect(void);
|
||||
void SetCutGrassMetatile(s16, s16);
|
||||
void SetCutGrassMetatiles(s16, s16);
|
||||
void CutGrassSpriteCallback1(struct Sprite *);
|
||||
void CutGrassSpriteCallback2(struct Sprite *);
|
||||
void CutGrassSpriteCallbackEnd(struct Sprite *);
|
||||
void HandleTallGrassOnHyper(u8, s16, s16);
|
||||
|
||||
const struct SpriteTemplate gSpriteTemplate_CutGrass =
|
||||
static const struct SpriteTemplate sSpriteTemplate_CutGrass =
|
||||
{
|
||||
.tileTag = 0xFFFF,
|
||||
.paletteTag = 0x1000,
|
||||
.oam = &gOamData_CutGrass,
|
||||
.anims = gSpriteAnimTable_CutGrass,
|
||||
.images = gSpriteImageTable_CutGrass,
|
||||
.oam = &sOamData_CutGrass,
|
||||
.anims = sSpriteAnimTable_CutGrass,
|
||||
.images = sSpriteImageTable_CutGrass,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = CutGrassSpriteCallback1,
|
||||
};
|
||||
|
||||
// code
|
||||
bool8 SetUpFieldMove_Cut(void)
|
||||
{
|
||||
s16 x, y;
|
||||
u8 i, j;
|
||||
u8 tileBehavior;
|
||||
u8 userAbility;
|
||||
bool8 array[CUT_NORMAL_AREA];
|
||||
bool8 cutTiles[CUT_NORMAL_AREA];
|
||||
bool8 ret;
|
||||
|
||||
if (SetLastTalkedObjectInFrontOfPlayer(EVENT_OBJ_GFX_CUTTABLE_TREE) == TRUE)
|
||||
@@ -198,28 +196,28 @@ bool8 SetUpFieldMove_Cut(void)
|
||||
userAbility = GetMonAbility(&gPlayerParty[GetCursorSelectionMonId()]);
|
||||
if (userAbility == ABILITY_HYPER_CUTTER)
|
||||
{
|
||||
gUnknown_03001100 = 5;
|
||||
gUnknown_03001101 = 2;
|
||||
gUnknown_03001102 = 2;
|
||||
sCutSquareSide = CUT_HYPER_SIDE;
|
||||
sTileCountFromPlayer_X = 2;
|
||||
sTileCountFromPlayer_Y = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_03001100 = 3;
|
||||
gUnknown_03001101 = 1;
|
||||
gUnknown_03001102 = 1;
|
||||
sCutSquareSide = CUT_NORMAL_SIDE;
|
||||
sTileCountFromPlayer_X = 1;
|
||||
sTileCountFromPlayer_Y = 1;
|
||||
}
|
||||
|
||||
for (i = 0; i < CUT_NORMAL_AREA; i++)
|
||||
array[i] = FALSE;
|
||||
cutTiles[i] = FALSE;
|
||||
for (i = 0; i < CUT_HYPER_AREA; i++)
|
||||
gUnknown_03001108[i] = FALSE;
|
||||
sHyperCutTiles[i] = FALSE;
|
||||
|
||||
ret = FALSE;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
for (i = 0; i < CUT_NORMAL_SIDE; i++)
|
||||
{
|
||||
y = i - 1 + gPlayerFacingPosition.y;
|
||||
for (j = 0; j < 3; j++)
|
||||
for (j = 0; j < CUT_NORMAL_SIDE; j++)
|
||||
{
|
||||
x = j - 1 + gPlayerFacingPosition.x;
|
||||
if (MapGridGetZCoordAt(x, y) == gPlayerFacingPosition.height)
|
||||
@@ -229,23 +227,23 @@ bool8 SetUpFieldMove_Cut(void)
|
||||
|| MetatileBehavior_IsAshGrass(tileBehavior) == TRUE)
|
||||
{
|
||||
// Standing in front of grass.
|
||||
gUnknown_03001108[6 + (i * 5) + j] = TRUE;
|
||||
sHyperCutTiles[6 + (i * 5) + j] = TRUE;
|
||||
ret = TRUE;
|
||||
}
|
||||
if (MapGridIsImpassableAt(x, y) == TRUE)
|
||||
{
|
||||
array[i * 3 + j] = FALSE;
|
||||
cutTiles[i * 3 + j] = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
array[i * 3 + j] = TRUE;
|
||||
cutTiles[i * 3 + j] = TRUE;
|
||||
if (MetatileBehavior_IsCuttableGrass(tileBehavior) == TRUE)
|
||||
gUnknown_03001108[6 + (i * 5) + j] = TRUE;
|
||||
sHyperCutTiles[6 + (i * 5) + j] = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
array[i * 3 + j] = FALSE;
|
||||
cutTiles[i * 3 + j] = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -260,45 +258,45 @@ bool8 SetUpFieldMove_Cut(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
bool8 r7;
|
||||
bool8 tileCuttable;
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
x = gPlayerFacingPosition.x + gUnknown_0857C608[i].x;
|
||||
y = gPlayerFacingPosition.y + gUnknown_0857C608[i].y;
|
||||
r7 = TRUE;
|
||||
x = gPlayerFacingPosition.x + sHyperCutStruct[i].x;
|
||||
y = gPlayerFacingPosition.y + sHyperCutStruct[i].y;
|
||||
tileCuttable = TRUE;
|
||||
|
||||
j = 0;
|
||||
while (1)
|
||||
{
|
||||
if (gUnknown_0857C608[i].unk2[j] == 0)
|
||||
if (sHyperCutStruct[i].unk2[j] == 0)
|
||||
break;
|
||||
if (array[(u8)(gUnknown_0857C608[i].unk2[j] - 1)] == FALSE)
|
||||
if (cutTiles[(u8)(sHyperCutStruct[i].unk2[j] - 1)] == FALSE)
|
||||
{
|
||||
r7 = FALSE;
|
||||
tileCuttable = FALSE;
|
||||
break;
|
||||
}
|
||||
if (++j >= 2)
|
||||
break;
|
||||
}
|
||||
|
||||
if (r7 == TRUE)
|
||||
if (tileCuttable == TRUE)
|
||||
{
|
||||
if (MapGridGetZCoordAt(x, y) == gPlayerFacingPosition.height)
|
||||
{
|
||||
u8 r6 = ((gUnknown_0857C608[i].y * 5) + 12) + (gUnknown_0857C608[i].x);
|
||||
u8 tileArrayId = ((sHyperCutStruct[i].y * 5) + 12) + (sHyperCutStruct[i].x);
|
||||
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||
if (MetatileBehavior_IsPokeGrass(tileBehavior) == TRUE
|
||||
|| MetatileBehavior_IsAshGrass(tileBehavior) == TRUE)
|
||||
{
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = FieldCallback_CutGrass;
|
||||
gUnknown_03001108[r6] = r7;
|
||||
sHyperCutTiles[tileArrayId] = TRUE;
|
||||
ret = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (MetatileBehavior_IsCuttableGrass(tileBehavior) == TRUE)
|
||||
gUnknown_03001108[r6] = TRUE;
|
||||
sHyperCutTiles[tileArrayId] = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -315,7 +313,7 @@ bool8 SetUpFieldMove_Cut(void)
|
||||
}
|
||||
}
|
||||
|
||||
void FieldCallback_CutGrass(void)
|
||||
static void FieldCallback_CutGrass(void)
|
||||
{
|
||||
FieldEffectStart(FLDEFF_USE_CUT_ON_GRASS);
|
||||
gFieldEffectArguments[0] = GetCursorSelectionMonId();
|
||||
@@ -331,7 +329,7 @@ bool8 FldEff_UseCutOnGrass(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void FieldCallback_CutTree(void)
|
||||
static void FieldCallback_CutTree(void)
|
||||
{
|
||||
gFieldEffectArguments[0] = GetCursorSelectionMonId();
|
||||
ScriptContext1_SetupScript(Route103_EventScript_290705);
|
||||
@@ -347,7 +345,7 @@ bool8 FldEff_UseCutOnTree(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void StartCutGrassFieldEffect(void)
|
||||
static void StartCutGrassFieldEffect(void)
|
||||
{
|
||||
FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_GRASS);
|
||||
FieldEffectStart(FLDEFF_CUT_GRASS);
|
||||
@@ -359,9 +357,9 @@ bool8 FldEff_CutGrass(void)
|
||||
u8 tileBehavior;
|
||||
u8 i;
|
||||
|
||||
for (i = 0, PlaySE(SE_W015), PlayerGetDestCoords(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y); i < 25; i++)
|
||||
for (i = 0, PlaySE(SE_W015), PlayerGetDestCoords(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y); i < CUT_HYPER_AREA; i++)
|
||||
{
|
||||
if (gUnknown_03001108[i] == TRUE)
|
||||
if (sHyperCutTiles[i] == TRUE)
|
||||
{
|
||||
s8 xAdd = (i % 5) - 2;
|
||||
s8 yAdd = (i / 5) - 2;
|
||||
@@ -374,30 +372,30 @@ bool8 FldEff_CutGrass(void)
|
||||
}
|
||||
}
|
||||
|
||||
SetCutGrassMetatiles(gPlayerFacingPosition.x - gUnknown_03001101, gPlayerFacingPosition.y + (~gUnknown_03001102));
|
||||
SetCutGrassMetatiles(gPlayerFacingPosition.x - sTileCountFromPlayer_X, gPlayerFacingPosition.y - (1 + sTileCountFromPlayer_Y));
|
||||
DrawWholeMapView();
|
||||
gCutGrassSpriteArrayPtr = AllocZeroed(8);
|
||||
sCutGrassSpriteArrayPtr = AllocZeroed(CUT_SPRITE_ARRAY_COUNT);
|
||||
|
||||
// populate sprite ID array
|
||||
for (i = 0; i < 8; i++)
|
||||
for (i = 0; i < CUT_SPRITE_ARRAY_COUNT; i++)
|
||||
{
|
||||
gCutGrassSpriteArrayPtr[i] = CreateSprite(&gSpriteTemplate_CutGrass,
|
||||
sCutGrassSpriteArrayPtr[i] = CreateSprite(&sSpriteTemplate_CutGrass,
|
||||
gSprites[gPlayerAvatar.spriteId].oam.x + 8, gSprites[gPlayerAvatar.spriteId].oam.y + 20, 0);
|
||||
gSprites[gCutGrassSpriteArrayPtr[i]].data[2] = 32 * i;
|
||||
gSprites[sCutGrassSpriteArrayPtr[i]].data[2] = 32 * i;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// set map grid metatile depending on x, y
|
||||
void SetCutGrassMetatile(s16 x, s16 y)
|
||||
static void SetCutGrassMetatile(s16 x, s16 y)
|
||||
{
|
||||
s32 metatileId = MapGridGetMetatileIdAt(x, y);
|
||||
|
||||
switch (metatileId)
|
||||
{
|
||||
case METATILE_ID_POKE_TALL_GRASS_START:
|
||||
case METATILE_ID_POKE_TALL_GRASS:
|
||||
case METATILE_ID_POKE_LONG_GRASS_START:
|
||||
case METATILE_ID_POKE_LONG_GRASS:
|
||||
case METATILE_ID_POKE_GRASS:
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_ID_GRASS);
|
||||
break;
|
||||
@@ -407,14 +405,14 @@ void SetCutGrassMetatile(s16 x, s16 y)
|
||||
case METATILE_ID_POKE_GRASS_TREE_RIGHT:
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_ID_GRASS_TREE_RIGHT);
|
||||
break;
|
||||
case METATILE_ID_SECRET_BASE_LEFT_POKE_TALL_GRASS:
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_ID_SECRET_BASE_LEFT_TALL_GRASS);
|
||||
case METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS:
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS);
|
||||
break;
|
||||
case METATILE_ID_SECRET_BASE_CENTER_POKE_TALL_GRASS:
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_ID_SECRET_BASE_CENTER_TALL_GRASS);
|
||||
case METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS:
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS);
|
||||
break;
|
||||
case METATILE_ID_SECRET_BASE_RIGHT_POKE_TALL_GRASS:
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_ID_SECRET_BASE_RIGHT_TALL_GRASS);
|
||||
case METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS:
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS);
|
||||
break;
|
||||
case METATILE_ID_POKE_STEP_LAVA_GRASS:
|
||||
case METATILE_ID_POKE_LAVA_GRASS:
|
||||
@@ -432,92 +430,92 @@ void SetCutGrassMetatile(s16 x, s16 y)
|
||||
|
||||
enum
|
||||
{
|
||||
TALL_GRASS_NONE,
|
||||
TALL_GRASS_FIELD,
|
||||
TALL_GRASS_BASE_LEFT,
|
||||
TALL_GRASS_BASE_CENTER,
|
||||
TALL_GRASS_BASE_RIGHT
|
||||
LONG_GRASS_NONE,
|
||||
LONG_GRASS_FIELD,
|
||||
LONG_GRASS_BASE_LEFT,
|
||||
LONG_GRASS_BASE_CENTER,
|
||||
LONG_GRASS_BASE_RIGHT
|
||||
};
|
||||
|
||||
u8 GetTallGrassCaseAt(s16 x, s16 y)
|
||||
static u8 GetLongGrassCaseAt(s16 x, s16 y)
|
||||
{
|
||||
u16 metatileId = MapGridGetMetatileIdAt(x, y);
|
||||
|
||||
if (metatileId == METATILE_ID_GRASS)
|
||||
return TALL_GRASS_FIELD;
|
||||
else if (metatileId == METATILE_ID_SECRET_BASE_LEFT_TALL_GRASS)
|
||||
return TALL_GRASS_BASE_LEFT;
|
||||
else if (metatileId == METATILE_ID_SECRET_BASE_CENTER_TALL_GRASS)
|
||||
return TALL_GRASS_BASE_CENTER;
|
||||
else if (metatileId == METATILE_ID_SECRET_BASE_RIGHT_TALL_GRASS)
|
||||
return TALL_GRASS_BASE_RIGHT;
|
||||
return LONG_GRASS_FIELD;
|
||||
else if (metatileId == METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS)
|
||||
return LONG_GRASS_BASE_LEFT;
|
||||
else if (metatileId == METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS)
|
||||
return LONG_GRASS_BASE_CENTER;
|
||||
else if (metatileId == METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS)
|
||||
return LONG_GRASS_BASE_RIGHT;
|
||||
else
|
||||
return TALL_GRASS_NONE;
|
||||
return LONG_GRASS_NONE;
|
||||
}
|
||||
|
||||
void SetCutGrassMetatiles(s16 x, s16 y)
|
||||
static void SetCutGrassMetatiles(s16 x, s16 y)
|
||||
{
|
||||
s16 i;
|
||||
s16 lowerY = y + gUnknown_03001100;
|
||||
s16 lowerY = y + sCutSquareSide;
|
||||
|
||||
for (i = 0; i < gUnknown_03001100; i++)
|
||||
for (i = 0; i < sCutSquareSide; i++)
|
||||
{
|
||||
s16 currentX = x + i;
|
||||
if (MapGridGetMetatileIdAt(currentX, y) == METATILE_ID_POKE_TALL_GRASS)
|
||||
if (MapGridGetMetatileIdAt(currentX, y) == METATILE_ID_POKE_LONG_GRASS)
|
||||
{
|
||||
switch (GetTallGrassCaseAt(currentX, y + 1))
|
||||
switch (GetLongGrassCaseAt(currentX, y + 1))
|
||||
{
|
||||
case TALL_GRASS_FIELD:
|
||||
MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID_POKE_TALL_GRASS_START);
|
||||
case LONG_GRASS_FIELD:
|
||||
MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID_POKE_LONG_GRASS_START);
|
||||
break;
|
||||
case TALL_GRASS_BASE_LEFT:
|
||||
MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID_SECRET_BASE_LEFT_POKE_TALL_GRASS);
|
||||
case LONG_GRASS_BASE_LEFT:
|
||||
MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS);
|
||||
break;
|
||||
case TALL_GRASS_BASE_CENTER:
|
||||
MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID_SECRET_BASE_CENTER_POKE_TALL_GRASS);
|
||||
case LONG_GRASS_BASE_CENTER:
|
||||
MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS);
|
||||
break;
|
||||
case TALL_GRASS_BASE_RIGHT:
|
||||
MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID_SECRET_BASE_RIGHT_POKE_TALL_GRASS);
|
||||
case LONG_GRASS_BASE_RIGHT:
|
||||
MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (MapGridGetMetatileIdAt(currentX, lowerY) == METATILE_ID_GRASS)
|
||||
{
|
||||
if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID_POKE_TALL_GRASS_START)
|
||||
if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID_POKE_LONG_GRASS_START)
|
||||
MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID_GRASS);
|
||||
if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID_SECRET_BASE_LEFT_POKE_TALL_GRASS)
|
||||
MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID_SECRET_BASE_LEFT_TALL_GRASS);
|
||||
if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID_SECRET_BASE_CENTER_POKE_TALL_GRASS)
|
||||
MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID_SECRET_BASE_CENTER_TALL_GRASS);
|
||||
if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID_SECRET_BASE_RIGHT_POKE_TALL_GRASS)
|
||||
MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID_SECRET_BASE_RIGHT_TALL_GRASS);
|
||||
if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS)
|
||||
MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS);
|
||||
if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS)
|
||||
MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS);
|
||||
if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS)
|
||||
MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS);
|
||||
}
|
||||
}
|
||||
|
||||
if (gUnknown_03001100 == CUT_HYPER_SIDE)
|
||||
if (sCutSquareSide == CUT_HYPER_SIDE)
|
||||
{
|
||||
HandleTallGrassOnHyper(0, x, y);
|
||||
HandleTallGrassOnHyper(1, x, y);
|
||||
HandleLongGrassOnHyper(0, x, y);
|
||||
HandleLongGrassOnHyper(1, x, y);
|
||||
}
|
||||
}
|
||||
|
||||
void HandleTallGrassOnHyper(u8 caseId, s16 x, s16 y)
|
||||
static void HandleLongGrassOnHyper(u8 caseId, s16 x, s16 y)
|
||||
{
|
||||
s16 newX;
|
||||
bool8 arr[3];
|
||||
|
||||
if (caseId == 0)
|
||||
{
|
||||
arr[0] = gUnknown_03001108[5];
|
||||
arr[1] = gUnknown_03001108[10];
|
||||
arr[2] = gUnknown_03001108[15];
|
||||
arr[0] = sHyperCutTiles[5];
|
||||
arr[1] = sHyperCutTiles[10];
|
||||
arr[2] = sHyperCutTiles[15];
|
||||
newX = x;
|
||||
}
|
||||
else if (caseId == 1)
|
||||
{
|
||||
arr[0] = gUnknown_03001108[9];
|
||||
arr[1] = gUnknown_03001108[14];
|
||||
arr[2] = gUnknown_03001108[19];
|
||||
arr[0] = sHyperCutTiles[9];
|
||||
arr[1] = sHyperCutTiles[14];
|
||||
arr[2] = sHyperCutTiles[19];
|
||||
newX = x + 4;
|
||||
}
|
||||
else // invalid case
|
||||
@@ -527,69 +525,69 @@ void HandleTallGrassOnHyper(u8 caseId, s16 x, s16 y)
|
||||
|
||||
if (arr[0] == TRUE)
|
||||
{
|
||||
if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_POKE_TALL_GRASS_START)
|
||||
if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_POKE_LONG_GRASS_START)
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_GRASS);
|
||||
if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_SECRET_BASE_LEFT_POKE_TALL_GRASS)
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_LEFT_TALL_GRASS);
|
||||
if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_SECRET_BASE_CENTER_POKE_TALL_GRASS)
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_CENTER_TALL_GRASS);
|
||||
if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_SECRET_BASE_RIGHT_POKE_TALL_GRASS)
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_RIGHT_TALL_GRASS);
|
||||
if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS)
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS);
|
||||
if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS)
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS);
|
||||
if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS)
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS);
|
||||
}
|
||||
if (arr[1] == TRUE)
|
||||
{
|
||||
if (MapGridGetMetatileIdAt(newX, y + 2) == METATILE_ID_POKE_TALL_GRASS)
|
||||
if (MapGridGetMetatileIdAt(newX, y + 2) == METATILE_ID_POKE_LONG_GRASS)
|
||||
{
|
||||
switch (GetTallGrassCaseAt(newX, y + 3))
|
||||
switch (GetLongGrassCaseAt(newX, y + 3))
|
||||
{
|
||||
case TALL_GRASS_FIELD:
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_POKE_TALL_GRASS_START);
|
||||
case LONG_GRASS_FIELD:
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_POKE_LONG_GRASS_START);
|
||||
break;
|
||||
case TALL_GRASS_BASE_LEFT:
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_LEFT_POKE_TALL_GRASS);
|
||||
case LONG_GRASS_BASE_LEFT:
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS);
|
||||
break;
|
||||
case TALL_GRASS_BASE_CENTER:
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_CENTER_POKE_TALL_GRASS);
|
||||
case LONG_GRASS_BASE_CENTER:
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS);
|
||||
break;
|
||||
case TALL_GRASS_BASE_RIGHT:
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_RIGHT_POKE_TALL_GRASS);
|
||||
case LONG_GRASS_BASE_RIGHT:
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID_POKE_TALL_GRASS_START)
|
||||
if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID_POKE_LONG_GRASS_START)
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_GRASS);
|
||||
if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID_SECRET_BASE_LEFT_POKE_TALL_GRASS)
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_LEFT_TALL_GRASS);
|
||||
if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID_SECRET_BASE_CENTER_POKE_TALL_GRASS)
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_CENTER_TALL_GRASS);
|
||||
if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID_SECRET_BASE_RIGHT_POKE_TALL_GRASS)
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_RIGHT_TALL_GRASS);
|
||||
if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS)
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS);
|
||||
if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS)
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS);
|
||||
if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS)
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS);
|
||||
}
|
||||
if (arr[2] == TRUE)
|
||||
{
|
||||
if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_POKE_TALL_GRASS)
|
||||
if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_POKE_LONG_GRASS)
|
||||
{
|
||||
switch (GetTallGrassCaseAt(newX, y + 4))
|
||||
switch (GetLongGrassCaseAt(newX, y + 4))
|
||||
{
|
||||
case TALL_GRASS_FIELD:
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_POKE_TALL_GRASS_START);
|
||||
case LONG_GRASS_FIELD:
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_POKE_LONG_GRASS_START);
|
||||
break;
|
||||
case TALL_GRASS_BASE_LEFT:
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_LEFT_POKE_TALL_GRASS);
|
||||
case LONG_GRASS_BASE_LEFT:
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS);
|
||||
break;
|
||||
case TALL_GRASS_BASE_CENTER:
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_CENTER_POKE_TALL_GRASS);
|
||||
case LONG_GRASS_BASE_CENTER:
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS);
|
||||
break;
|
||||
case TALL_GRASS_BASE_RIGHT:
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_RIGHT_POKE_TALL_GRASS);
|
||||
case LONG_GRASS_BASE_RIGHT:
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CutGrassSpriteCallback1(struct Sprite *sprite)
|
||||
static void CutGrassSpriteCallback1(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = 8;
|
||||
sprite->data[1] = 0;
|
||||
@@ -597,7 +595,7 @@ void CutGrassSpriteCallback1(struct Sprite *sprite)
|
||||
sprite->callback = CutGrassSpriteCallback2;
|
||||
}
|
||||
|
||||
void CutGrassSpriteCallback2(struct Sprite *sprite)
|
||||
static void CutGrassSpriteCallback2(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.x = Sin(sprite->data[2], sprite->data[0]);
|
||||
sprite->pos2.y = Cos(sprite->data[2], sprite->data[0]);
|
||||
@@ -611,3 +609,76 @@ void CutGrassSpriteCallback2(struct Sprite *sprite)
|
||||
else
|
||||
sprite->callback = CutGrassSpriteCallbackEnd; // done rotating the grass, execute clean up function
|
||||
}
|
||||
|
||||
static void CutGrassSpriteCallbackEnd(struct Sprite *sprite)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
for (i = 1; i < CUT_SPRITE_ARRAY_COUNT; i++)
|
||||
DestroySprite(&gSprites[sCutGrassSpriteArrayPtr[i]]);
|
||||
|
||||
FieldEffectStop(&gSprites[sCutGrassSpriteArrayPtr[0]], FLDEFF_CUT_GRASS);
|
||||
FREE_AND_SET_NULL(sCutGrassSpriteArrayPtr);
|
||||
ScriptUnfreezeEventObjects();
|
||||
ScriptContext2_Disable();
|
||||
|
||||
if (IsMewPlayingHideAndSeek() == TRUE)
|
||||
ScriptContext1_SetupScript(FarawayIsland_Interior_EventScript_267EDB);
|
||||
}
|
||||
|
||||
void sub_80D423C(s16 x, s16 y)
|
||||
{
|
||||
u8 metatileBehavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||
if (MetatileBehavior_IsLongGrass_Duplicate(metatileBehavior))
|
||||
{
|
||||
switch (GetLongGrassCaseAt(x, y + 1))
|
||||
{
|
||||
case LONG_GRASS_FIELD:
|
||||
MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_POKE_LONG_GRASS_START);
|
||||
break;
|
||||
case LONG_GRASS_BASE_LEFT:
|
||||
MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS);
|
||||
break;
|
||||
case LONG_GRASS_BASE_CENTER:
|
||||
MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS);
|
||||
break;
|
||||
case LONG_GRASS_BASE_RIGHT:
|
||||
MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80D42B8(s16 x, s16 y)
|
||||
{
|
||||
if (MapGridGetMetatileIdAt(x, y) == METATILE_ID_GRASS)
|
||||
{
|
||||
u8 metatileBehavior = MapGridGetMetatileBehaviorAt(x, y + 1);
|
||||
if (MetatileBehavior_IsLongGrassSouthEdge(metatileBehavior))
|
||||
{
|
||||
s32 metatileId = MapGridGetMetatileIdAt(x, y + 1);
|
||||
switch (metatileId)
|
||||
{
|
||||
case METATILE_ID_POKE_LONG_GRASS_START:
|
||||
MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_GRASS);
|
||||
break;
|
||||
case METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS:
|
||||
MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS);
|
||||
break;
|
||||
case METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS:
|
||||
MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS);
|
||||
break;
|
||||
case METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS:
|
||||
MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void StartCutTreeFieldEffect(void)
|
||||
{
|
||||
PlaySE(SE_W015);
|
||||
FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_TREE);
|
||||
EnableBothScriptContexts();
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ extern void sub_81C5B14(u8 taskId);
|
||||
extern u8 gText_DadsAdvice[];
|
||||
extern u8 gText_CantDismountBike[];
|
||||
extern void sub_8197434(u8 a, u8 b);
|
||||
extern void sub_80984F4(void);
|
||||
extern void ScriptUnfreezeEventObjects(void);
|
||||
extern void ItemUseOutOfBattle_TMHM(u8 a);
|
||||
extern void ItemUseOutOfBattle_EvolutionStone(u8 b);
|
||||
extern void bag_menu_mail_related(void);
|
||||
@@ -197,7 +197,7 @@ void CleanUpAfterFailingToUseRegisteredKeyItemOnField(u8 taskId)
|
||||
{
|
||||
sub_8197434(0, 1);
|
||||
DestroyTask(taskId);
|
||||
sub_80984F4();
|
||||
ScriptUnfreezeEventObjects();
|
||||
ScriptContext2_Disable();
|
||||
}
|
||||
|
||||
@@ -252,7 +252,7 @@ void ItemUseOnFieldCB_Bike(u8 taskId)
|
||||
GetOnOffBike(2);
|
||||
else
|
||||
GetOnOffBike(4);
|
||||
sub_80984F4();
|
||||
ScriptUnfreezeEventObjects();
|
||||
ScriptContext2_Disable();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
@@ -358,7 +358,7 @@ void sub_80FD504(u8 taskId)
|
||||
void sub_80FD5CC(u8 taskId)
|
||||
{
|
||||
sub_8197434(0, 1);
|
||||
sub_80984F4();
|
||||
ScriptUnfreezeEventObjects();
|
||||
ScriptContext2_Disable();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ extern void sub_80C4DDC(void (*)(void));
|
||||
extern void sub_80C51C4(void (*)(void));
|
||||
extern void sub_80C4E74(u8, void (*)(void));
|
||||
extern void sub_81C4EFC(void);
|
||||
extern void sub_80984F4(void);
|
||||
extern void ScriptUnfreezeEventObjects(void);
|
||||
extern void sub_81A9EC8(void);
|
||||
extern void save_serialize_map(void);
|
||||
extern void sub_81A9E90(void);
|
||||
@@ -773,7 +773,7 @@ static bool8 StartMenuBattlePyramidRetireCallback(void)
|
||||
void sub_809FDD4(void) // Called from battle_frontier_2.s
|
||||
{
|
||||
sub_8197DF8(0, FALSE);
|
||||
sub_80984F4();
|
||||
ScriptUnfreezeEventObjects();
|
||||
CreateStartMenuTask(sub_809FA34);
|
||||
ScriptContext2_Enable();
|
||||
}
|
||||
@@ -815,7 +815,7 @@ static bool8 SaveCallback(void)
|
||||
case SAVE_SUCCESS:
|
||||
case SAVE_ERROR: // Close start menu
|
||||
sub_8197DF8(0, TRUE);
|
||||
sub_80984F4();
|
||||
ScriptUnfreezeEventObjects();
|
||||
ScriptContext2_Disable();
|
||||
sub_81A9EC8();
|
||||
return TRUE;
|
||||
@@ -852,7 +852,7 @@ static bool8 BattlePyramidRetireCallback(void)
|
||||
return FALSE;
|
||||
case SAVE_CANCELED: // Yes (Retire from battle pyramid)
|
||||
sub_8197DF8(0, TRUE);
|
||||
sub_80984F4();
|
||||
ScriptUnfreezeEventObjects();
|
||||
ScriptContext2_Disable();
|
||||
ScriptContext1_SetupScript(BattleFrontier_BattlePyramidEmptySquare_EventScript_252C88);
|
||||
return TRUE;
|
||||
@@ -1409,7 +1409,7 @@ static void HideStartMenuWindow(void)
|
||||
{
|
||||
sub_819746C(GetStartMenuWindowId(), TRUE);
|
||||
RemoveStartMenuWindow();
|
||||
sub_80984F4();
|
||||
ScriptUnfreezeEventObjects();
|
||||
ScriptContext2_Disable();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user