Skip to content

Instantly share code, notes, and snippets.

@CryZe
Last active December 30, 2019 16:40
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save CryZe/70db2d2f46bb8cf4c847 to your computer and use it in GitHub Desktop.
Save CryZe/70db2d2f46bb8cf4c847 to your computer and use it in GitHub Desktop.
int determineLayer(int layerOverride)
{
int layer = layerOverride;
if (layerOverride < 0)
{
layer = 0;
int hour = calculateHour();
if (isEndlessNight() || (hour < 6 || hour >= 18))
layer = 1;
if (stage == "sea") //Ocean
{
if (room == 44) //Outset
{
if (readFlag(Flags.GossipStone))
return layer | 4; //Outset after Forsaken Fortress 1
if (readFlag(Flags.PiratesOnOutsetBeach))
return layer | 2; //Pirates at the beach
if (readFlag(Flags.RescuedTetra))
return 9; //Tetra and Aryll at the top of Outset
}
else if (room == 11) //Windfall
{
if (readFlag(Flags.AnimationSet2))
return layer | 4; //After Forsaken Fortress 2
if (isEndlessNight())
return layer | 2; //Pirates at Windfall
}
else if (room == 1) //Forsaken Fortress
{
if (readFlag(Flags.SpokeToKoRLAfterHyrule2))
return 3; //Forsaken Fortress 3
else
return 1; //Forsaken Fortress 2
}
}
else if (stage == "A_mori") //Forest of Fairies
{
if (readFlag(Flags.KoRLUnlocked))
return layer | 2; //Moblins
}
else if (stage == "Asoko") //Pirate Ship
{
if (readFlag(Flags.GossipStone))
return layer | 2; //Bombs Minigame
}
else if (stage == "Hyrule") //Hyrule
{
if (getTriforcePiecesCount() == 8)
return layer | 4; //No Courtyard Cutscene
if (readFlag(Flags.DescendedDownToHyrule2))
return layer | 2; //Courtyard Cutscene
}
else if (stage == "Hyroom") //Hyrule Interior
{
if (getTriforcePiecesCount() == 8 && !readFlag(Flags.MightyDarknutsDefeated))
return layer | 4;
if (readFlag(Flags.DescendedDownToHyrule2))
return layer | 2;
if (readFlag(Flags.Hyrule1ElectricalBarrierDeactivated))
return layer | 6;
}
else if (stage == "kenroom") //Master Sword Room
{
if (readFlag(Flags.MightyDarknutsDefeated))
return layer | 6; //Empty
if (getTriforcePiecesCount() == 8)
return layer | 4; //Mighty Darknuts
if (readFlag(Flags.DescendedDownToHyrule2))
return layer | 2; //Tetra to Zelda Transformation
}
else if (stage == "M2tower") //Helmaroc Tower
{
if (readFlag(Flags.AnimationSet2))
return layer | 2; //Helmaroc Fight
}
else if (stage == "GanonK") //Puppet Ganon Room
{
if (readFlag(Flag.PuppetGanonFightIntro))
return 8; //Puppet Ganon Figt
}
else if (stage == "GTower") //On Top of Ganon's Tower
{
if (readFlag(Flag.GanondorfFightIntro))
return 8; //Ganondorf Fight
}
}
return layer;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment