Clean up braille_puzzles

This commit is contained in:
GriffinR 2021-10-30 11:59:14 -04:00
parent 875be8a8a8
commit 71605556ab
3 changed files with 57 additions and 54 deletions

View File

@ -12,18 +12,18 @@ SealedChamber_InnerRoom_EventScript_BrailleBackWall::
goto_if_eq SealedChamber_InnerRoom_EventScript_NoEffect goto_if_eq SealedChamber_InnerRoom_EventScript_NoEffect
fadeoutbgm 0 fadeoutbgm 0
playse SE_TRUCK_MOVE playse SE_TRUCK_MOVE
special DoSealedChamberShakingEffect1 special DoSealedChamberShakingEffect_Long
waitstate waitstate
delay 40 delay 40
special DoSealedChamberShakingEffect2 special DoSealedChamberShakingEffect_Short
waitstate waitstate
playse SE_DOOR playse SE_DOOR
delay 40 delay 40
special DoSealedChamberShakingEffect2 special DoSealedChamberShakingEffect_Short
waitstate waitstate
playse SE_DOOR playse SE_DOOR
delay 40 delay 40
special DoSealedChamberShakingEffect2 special DoSealedChamberShakingEffect_Short
waitstate waitstate
playse SE_DOOR playse SE_DOOR
delay 40 delay 40

View File

@ -315,7 +315,7 @@ gSpecials::
def_special IsStarterInParty def_special IsStarterInParty
def_special CopyCurSecretBaseOwnerName_StrVar1 def_special CopyCurSecretBaseOwnerName_StrVar1
def_special ScriptCheckFreePokemonStorageSpace def_special ScriptCheckFreePokemonStorageSpace
def_special DoSealedChamberShakingEffect1 def_special DoSealedChamberShakingEffect_Long
def_special ShowDeptStoreElevatorFloorSelect def_special ShowDeptStoreElevatorFloorSelect
def_special InteractWithShieldOrTVDecoration def_special InteractWithShieldOrTVDecoration
def_special IsPokerusInParty def_special IsPokerusInParty
@ -325,7 +325,7 @@ gSpecials::
def_special BattleSetup_StartLegendaryBattle def_special BattleSetup_StartLegendaryBattle
def_special StartRegiBattle def_special StartRegiBattle
def_special SetTrainerFacingDirection def_special SetTrainerFacingDirection
def_special DoSealedChamberShakingEffect2 def_special DoSealedChamberShakingEffect_Short
def_special FoundBlackGlasses def_special FoundBlackGlasses
def_special StartDroughtWeatherBlend def_special StartDroughtWeatherBlend
def_special DoDiveWarp def_special DoDiveWarp

View File

@ -13,16 +13,9 @@
#include "party_menu.h" #include "party_menu.h"
#include "fldeff.h" #include "fldeff.h"
// why do this, GF? EWRAM_DATA static bool8 sIsRegisteelPuzzle = 0;
enum
{
REGIROCK_PUZZLE,
REGISTEEL_PUZZLE
};
EWRAM_DATA static u8 sBraillePuzzleCallbackFlag = 0; static const u8 sRegicePathCoords[][2] =
static const u8 gRegicePathCoords[][2] =
{ {
{4, 21}, {4, 21},
{5, 21}, {5, 21},
@ -62,9 +55,9 @@ static const u8 gRegicePathCoords[][2] =
{4, 22}, {4, 22},
}; };
void SealedChamberShakingEffect(u8); static void Task_SealedChamberShakingEffect(u8);
void DoBrailleRegirockEffect(void); static void DoBrailleRegirockEffect(void);
void DoBrailleRegisteelEffect(void); static void DoBrailleRegisteelEffect(void);
bool8 ShouldDoBrailleDigEffect(void) bool8 ShouldDoBrailleDigEffect(void)
{ {
@ -116,43 +109,48 @@ void ShouldDoBrailleRegirockEffectOld(void)
{ {
} }
void DoSealedChamberShakingEffect1(void) #define tDelayCounter data[1]
{ #define tShakeCounter data[2]
u8 taskId = CreateTask(SealedChamberShakingEffect, 9); #define tVerticalPan data[4]
#define tDelay data[5]
#define tNumShakes data[6]
gTasks[taskId].data[1] = 0; void DoSealedChamberShakingEffect_Long(void)
gTasks[taskId].data[2] = 0; {
gTasks[taskId].data[4] = 2; u8 taskId = CreateTask(Task_SealedChamberShakingEffect, 9);
gTasks[taskId].data[5] = 5;
gTasks[taskId].data[6] = 50; gTasks[taskId].tDelayCounter = 0;
gTasks[taskId].tShakeCounter = 0;
gTasks[taskId].tVerticalPan = 2;
gTasks[taskId].tDelay = 5;
gTasks[taskId].tNumShakes = 50;
SetCameraPanningCallback(0); SetCameraPanningCallback(0);
} }
void DoSealedChamberShakingEffect2(void) void DoSealedChamberShakingEffect_Short(void)
{ {
u8 taskId = CreateTask(SealedChamberShakingEffect, 9); u8 taskId = CreateTask(Task_SealedChamberShakingEffect, 9);
gTasks[taskId].data[1] = 0; gTasks[taskId].tDelayCounter = 0;
gTasks[taskId].data[2] = 0; gTasks[taskId].tShakeCounter = 0;
gTasks[taskId].data[4] = 3; gTasks[taskId].tVerticalPan = 3;
gTasks[taskId].data[5] = 5; gTasks[taskId].tDelay = 5;
gTasks[taskId].data[6] = 2; gTasks[taskId].tNumShakes = 2;
SetCameraPanningCallback(0); SetCameraPanningCallback(0);
} }
void SealedChamberShakingEffect(u8 taskId) static void Task_SealedChamberShakingEffect(u8 taskId)
{ {
struct Task *task = &gTasks[taskId]; struct Task *task = &gTasks[taskId];
task->data[1]++; task->tDelayCounter++;
if (task->tDelayCounter % task->tDelay == 0)
if (!(task->data[1] % task->data[5]))
{ {
task->data[1] = 0; task->tDelayCounter = 0;
task->data[2]++; task->tShakeCounter++;
task->data[4] = -task->data[4]; task->tVerticalPan = -task->tVerticalPan;
SetCameraPanning(0, task->data[4]); SetCameraPanning(0, task->tVerticalPan);
if (task->data[2] == task->data[6]) if (task->tShakeCounter == task->tNumShakes)
{ {
DestroyTask(taskId); DestroyTask(taskId);
EnableBothScriptContexts(); EnableBothScriptContexts();
@ -161,7 +159,12 @@ void SealedChamberShakingEffect(u8 taskId)
} }
} }
// moved later in the function because it was rewritten. #undef tDelayCounter
#undef tShakeCounter
#undef tVerticalPan
#undef tDelay
#undef tNumShakes
bool8 ShouldDoBrailleRegirockEffect(void) bool8 ShouldDoBrailleRegirockEffect(void)
{ {
if (!FlagGet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED) if (!FlagGet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED)
@ -170,17 +173,17 @@ bool8 ShouldDoBrailleRegirockEffect(void)
{ {
if (gSaveBlock1Ptr->pos.x == 6 && gSaveBlock1Ptr->pos.y == 23) if (gSaveBlock1Ptr->pos.x == 6 && gSaveBlock1Ptr->pos.y == 23)
{ {
sBraillePuzzleCallbackFlag = REGIROCK_PUZZLE; sIsRegisteelPuzzle = FALSE;
return TRUE; return TRUE;
} }
else if (gSaveBlock1Ptr->pos.x == 5 && gSaveBlock1Ptr->pos.y == 23) else if (gSaveBlock1Ptr->pos.x == 5 && gSaveBlock1Ptr->pos.y == 23)
{ {
sBraillePuzzleCallbackFlag = REGIROCK_PUZZLE; sIsRegisteelPuzzle = FALSE;
return TRUE; return TRUE;
} }
else if (gSaveBlock1Ptr->pos.x == 7 && gSaveBlock1Ptr->pos.y == 23) else if (gSaveBlock1Ptr->pos.x == 7 && gSaveBlock1Ptr->pos.y == 23)
{ {
sBraillePuzzleCallbackFlag = REGIROCK_PUZZLE; sIsRegisteelPuzzle = FALSE;
return TRUE; return TRUE;
} }
} }
@ -200,7 +203,7 @@ void UseRegirockHm_Callback(void)
DoBrailleRegirockEffect(); DoBrailleRegirockEffect();
} }
void DoBrailleRegirockEffect(void) static void DoBrailleRegirockEffect(void)
{ {
MapGridSetMetatileIdAt(7 + MAP_OFFSET, 19 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_TopLeft); MapGridSetMetatileIdAt(7 + MAP_OFFSET, 19 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_TopLeft);
MapGridSetMetatileIdAt(8 + MAP_OFFSET, 19 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_TopMid); MapGridSetMetatileIdAt(8 + MAP_OFFSET, 19 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_TopMid);
@ -220,7 +223,7 @@ bool8 ShouldDoBrailleRegisteelEffect(void)
{ {
if (gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 25) if (gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 25)
{ {
sBraillePuzzleCallbackFlag = REGISTEEL_PUZZLE; sIsRegisteelPuzzle = TRUE;
return TRUE; return TRUE;
} }
} }
@ -239,7 +242,7 @@ void UseRegisteelHm_Callback(void)
DoBrailleRegisteelEffect(); DoBrailleRegisteelEffect();
} }
void DoBrailleRegisteelEffect(void) static void DoBrailleRegisteelEffect(void)
{ {
MapGridSetMetatileIdAt(7 + MAP_OFFSET, 19 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_TopLeft); MapGridSetMetatileIdAt(7 + MAP_OFFSET, 19 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_TopLeft);
MapGridSetMetatileIdAt(8 + MAP_OFFSET, 19 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_TopMid); MapGridSetMetatileIdAt(8 + MAP_OFFSET, 19 + MAP_OFFSET, METATILE_Cave_SealedChamberEntrance_TopMid);
@ -254,7 +257,7 @@ void DoBrailleRegisteelEffect(void)
} }
// theory: another commented out DoBrailleWait and Task_BrailleWait. // theory: another commented out DoBrailleWait and Task_BrailleWait.
void DoBrailleWait(void) static void DoBrailleWait(void)
{ {
} }
@ -263,7 +266,7 @@ bool8 FldEff_UsePuzzleEffect(void)
{ {
u8 taskId = CreateFieldMoveTask(); u8 taskId = CreateFieldMoveTask();
if (sBraillePuzzleCallbackFlag == REGISTEEL_PUZZLE) if (sIsRegisteelPuzzle == TRUE)
{ {
gTasks[taskId].data[8] = (u32)UseRegisteelHm_Callback >> 16; gTasks[taskId].data[8] = (u32)UseRegisteelHm_Callback >> 16;
gTasks[taskId].data[9] = (u32)UseRegisteelHm_Callback; gTasks[taskId].data[9] = (u32)UseRegisteelHm_Callback;
@ -290,10 +293,10 @@ bool8 ShouldDoBrailleRegicePuzzle(void)
if (FlagGet(FLAG_TEMP_3) == TRUE) if (FlagGet(FLAG_TEMP_3) == TRUE)
return FALSE; return FALSE;
for (i = 0; i < 36; i++) for (i = 0; i < ARRAY_COUNT(sRegicePathCoords); i++)
{ {
u8 xPos = gRegicePathCoords[i][0]; u8 xPos = sRegicePathCoords[i][0];
u8 yPos = gRegicePathCoords[i][1]; u8 yPos = sRegicePathCoords[i][1];
if (gSaveBlock1Ptr->pos.x == xPos && gSaveBlock1Ptr->pos.y == yPos) if (gSaveBlock1Ptr->pos.x == xPos && gSaveBlock1Ptr->pos.y == yPos)
{ {
u16 varValue; u16 varValue;