Advertisement
CryZe

Wind Waker - Layer Logic

Oct 4th, 2014
1,309
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.51 KB | None | 0 0
  1. int determineLayer(int layerOverride)
  2. {
  3.     int layer = layerOverride;
  4.  
  5.     if (layerOverride < 0)
  6.     {
  7.         layer = 0;
  8.         int hour = calculateHour();
  9.         if (isEndlessNight() || (hour < 6 || hour >= 18))
  10.             layer = 1;
  11.        
  12.         if (stage == "sea") //Ocean
  13.         {
  14.             if (room == 44) //Outset
  15.             {
  16.                 if (readFlag(Flags.GossipStone))
  17.                     return layer | 4; //Outset after Forsaken Fortress 1
  18.                 if (readFlag(Flags.PiratesOnOutsetBeach))
  19.                     return layer | 2; //Pirates at the beach
  20.                 if (readFlag(Flags.RescuedTetra))
  21.                     return 9; //Tetra and Aryll at the top of Outset
  22.             }
  23.             else if (room == 11) //Windfall
  24.             {
  25.                 if (readFlag(Flags.AnimationSet2))
  26.                     return layer | 4; //After Forsaken Fortress 2
  27.                 if (isEndlessNight())
  28.                     return layer | 2; //Pirates at Windfall
  29.             }
  30.             else if (room == 1) //Forsaken Fortress
  31.             {
  32.                 if (readFlag(Flags.SpokeToKoRLAfterHyrule2))
  33.                     return 3; //Forsaken Fortress 3
  34.                 else
  35.                     return 1; //Forsaken Fortress 2
  36.             }
  37.         }
  38.         else if (stage == "A_mori")  //Forest of Fairies
  39.         {
  40.             if (readFlag(Flags.KoRLUnlocked))
  41.                 return layer | 2; //Moblins
  42.         }
  43.         else if (stage == "Asoko") //Pirate Ship
  44.         {
  45.             if (readFlag(Flags.GossipStone))
  46.                 return layer | 2; //Bombs Minigame
  47.         }
  48.         else if (stage == "Hyrule") //Hyrule
  49.         {
  50.             if (getTriforcePiecesCount() == 8)
  51.                 return layer | 4; //No Courtyard Cutscene
  52.             if (readFlag(Flags.DescendedDownToHyrule2))
  53.                 return layer | 2; //Courtyard Cutscene
  54.         }
  55.         else if (stage == "Hyroom") //Hyrule Interior
  56.         {
  57.             if (getTriforcePiecesCount() == 8 && !readFlag(Flags.MightyDarknutsDefeated))
  58.                 return layer | 4;
  59.             if (readFlag(Flags.DescendedDownToHyrule2))
  60.                 return layer | 2;
  61.             if (readFlag(Flags.Hyrule1ElectricalBarrierDeactivated))
  62.                 return layer | 6;
  63.         }
  64.         else if (stage == "kenroom") //Master Sword Room
  65.         {
  66.             if (readFlag(Flags.MightyDarknutsDefeated))
  67.                 return layer | 6; //Empty
  68.             if (getTriforcePiecesCount() == 8)
  69.                 return layer | 4; //Mighty Darknuts
  70.             if (readFlag(Flags.DescendedDownToHyrule2))
  71.                 return layer | 2; //Tetra to Zelda Transformation
  72.         }
  73.         else if (stage == "M2tower") //Helmaroc Tower
  74.         {
  75.             if (readFlag(Flags.AnimationSet2))
  76.                 return layer | 2; //Helmaroc Fight
  77.         }
  78.         else if (stage == "GanonK") //Puppet Ganon Room
  79.         {
  80.             if (readFlag(Flag.PuppetGanonFightIntro))
  81.                 return 8; //Puppet Ganon Fight
  82.         }
  83.         else if (stage == "GTower") //On Top of Ganon's Tower
  84.         {
  85.             if (readFlag(Flag.GanondorfFightIntro))
  86.                 return 8; //Ganondorf Fight
  87.         }
  88.     }
  89.  
  90.     return layer;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement